From: Han-Wen Nienhuys Date: Mon, 10 Aug 1998 23:45:43 +0000 (+0200) Subject: release: 1.0.1 X-Git-Tag: release/1.0.1 X-Git-Url: https://git.donarmstrong.com/lilypond.git?a=commitdiff_plain;h=1cf3d59c1559fb9774c4c1c8cae155cfe54a927c;hp=1e95a0be01466d1c98644f7705c8e07e41cc645c;p=lilypond.git release: 1.0.1 --- diff --git a/.dstreamrc b/.dstreamrc deleted file mode 100644 index 253955b01d..0000000000 --- a/.dstreamrc +++ /dev/null @@ -1,123 +0,0 @@ -#This file controls which classes produce debugging output - -# class name silence? -Dstream 0 - -# yydebug -InitParser 1 -Parser 1 -InitDeclarations 1 -Declarations 1 -yyparse 1 -# FlexLexer debug -InitLexer 1 -Lexer 1 - -My_lily_lexer 1 - -walking 1 - -# flower lib -File_path 1 -Matrix 1 -Vector 1 - -# lily -Absolute_dynamic_req 1 -Atom 1 -Axis_group_administration 1 -Bar 1 -Beam 0 -Bow 1 -Bezier_bow 1 -Change_iterator 1 -Chord 1 -Chord_iterator 1 -Clef_item 1 -Col_configuration 1 -Col_hpositions 1 -Colinfo 1 -Colinfo 1 -Collision 1 -Column_rod 1 -Duration_identifier 1 -Engraver 1 -Engraver_group_engraver 1 -General_script_def 1 -Graphical_element 1 -Group_change_req 1 -Head_column 1 -Horizontal_align_item 1 -Idealspacing 1 -Identifier 1 -Ineq_constrained_qp 1 -Input_translator 1 -int_identifier 1 -Item 1 -Key_item 1 -Lookup 1 -Line_spacer 1 -Melodic_req 1 -Midi_def 1 -Midistrings 1 -Mixed_qp 1 -Music 1 -Music_iterator 1 -Music_output_def 1 -Note_column 1 -Note_head 1 -Note_performer 1 -Note_req 1 -Paper_column 1 -Paper_score 1 -Paper_def 1 -Performer 1 -Performer_group_performer 1 -Real_identifier 1 -Request 1 -Request_iterator 1 -Rest_collision 1 -Rest_collision_engraver 1 -Rest_req 1 -Rhythmic_head 1 -Rhythmic_req 1 -Scope 1 -Score 1 -Score_column 1 -Score_elem 1 -Score_engraver 1 -Score_performer 1 -Script_column 1 -Script_def 1 -Script_req 1 -Single_malt_grouping_item 1 -Slur 1 -Spacer_rod 1 -Spacing_problem 1 -Span_req 1 -Span_dynamic_req 1 -Spanner 1 -Spring_spacer 1 -Skip_req 1 -Staff 1 -Staff_commands 1 -Staff_symbol 1 -Stem 1 -Stem_info 0 -Stem_req 1 -Symtable 1 -Symtables 1 - -Text_def 1 -Text_req 1 -Time_description 1 -Translation_property 1 -Translator 1 -Translator_group 1 -Voice 1 -Voice_iterator 1 -Word_wrap 1 - -delete_identifiers 1 -parse_duration 1 -parse_pitchmod 1 diff --git a/ANNOUNCE b/ANNOUNCE deleted file mode 100644 index 3b3c6fb30f..0000000000 --- a/ANNOUNCE +++ /dev/null @@ -1,73 +0,0 @@ -Keywords: midi notation music typesetting gnu font -Subject: LilyPond 0.2 released - The GNU Project music typesetter - -GNU LilyPond - The GNU Project Music Typesetter - - -WHAT IS LilyPond? - -GNU LilyPond is the GNU Project Music typesetter: it reads a music -definition file and outputs formatted sheet music to a TeX file or -(mechanical) performances to MIDI files. - - -WHAT'S NEW SINCE VERSION 0.1? - -* LilyPond now includes a completely new music font: the Feta font. - We were quite disappointed with available music fonts, so we rolled - our own. We did our best to copy the best symbol designs available, - and we think that we've succeeded in doing so. We're proud of the - result, and we hope you agree, so go check it out! - -* More elegant output due to - - * better spacing - * better line breaking - * better font design - * PostScript output for variable symbols - -* Lots of bugfixes - -* More robust, flexible, tweakable design - -* Better MIDI importing - -* Easier to use due to better shell scripts and input format -enhancements - -* MusixTeX not needed anymore - - -WHAT CAN LILYPOND DO? - -ASCII script input (mudela), with identifiers (for music reuse), -customizable notenames. - -MIDI output lets you check if you have entered the correct notes. -MIDI to Mudela conversion through the mi2mu program. - -Font size selectable (from 26pt downto 11 pt) for each score. -Multiple staffs in one score. Each staff may have various different -meters. Multiple voices within one staff (up to four handled -graciously); beams optionally shared between voices. Multiple scores -within one input file. Each score is output to a different file. - -Beams, slurs, chords, super/subscripts (accents and text), general -n-plet (triplet, quadruplets, etc.), lyrics, transposition, dynamics -(both absolute and hairpin style), clef changes, meter changes, -cadenza-mode, key changes, repeat bars. - -Integration with LaTeX through Perl scripts. - - -MORE INFO - -Sources for this project are on - - ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe) - ftp://alpha.gnu.org/gnu/ (US) - -More detailed info and examples can be found on the webpage at - - http://www.stack.nl/~hanwen/lilypond/index.html - diff --git a/ANNOUNCE-0.1 b/ANNOUNCE-0.1 index 9f7d6e2e37..8ed22c92be 100644 --- a/ANNOUNCE-0.1 +++ b/ANNOUNCE-0.1 @@ -22,7 +22,7 @@ You can see some babyfood, diapers and pictures at http://www.stack.nl/~hanwen/lilypond/index.html -You can send your congratulations to Janneke (jan@digicash.com) and +You can send your congratulations to Janneke (janneke@gnu.org) and Wendy (hanwen@stack.nl) diff --git a/ANNOUNCEMENT b/ANNOUNCEMENT new file mode 100644 index 0000000000..33190c9cf2 --- /dev/null +++ b/ANNOUNCEMENT @@ -0,0 +1,102 @@ +Keywords: midi notation music typesetting gnu font engraving +Subject: GNU LilyPond 1.0 released - The Music Typesetter + +GNU LilyPond - The Music Typesetter + + +WHAT IS LilyPond? + +LilyPond is the GNU Project music typesetter. This program can print +beautiful sheet music from a music definition file. It can also play +performances to a MIDI file. + + +WHAT'S NEW SINCE VERSION 0.1? + +* LilyPond now includes a completely new music font: the Feta font. + We were quite disappointed with available music fonts, so we rolled + our own. We did our best to copy the best symbol designs available, + and we think that we've succeeded in doing so. We're proud of the + result, and we hope you agree, so go check it out! + +* More elegant output due to + + * more sophisticated beam/slur formatting + * better spacing + * better line breaking + * better font design + * PostScript output for variable symbols + +* Lots of bugfixes + +* More robust, flexible and tweakable design + +* Better MIDI file importing + +* Easier to use due to better shell scripts and input format +enhancements + +* MusixTeX is not needed anymore + +* Faster + + + +FEATURES + +* Multiple staffs, polyphonic music (more voices on one staff), +Polymetric music. + +* Support for full orchestral score: Hara_kiri systems (lines with +only rests are automatically skipped), multi-measure rests, bar +numbering, brackets at the left. + +* Optimal beam slopes, slur/notehead collision resolution, dashed +slurs. Formatting parameters are runtime tunable + +* Very beautiful symbols. Variable size symbols generated on the fly +as embedded postscript. + +* MIDI output + +* Optimal linebreaking, manual intervention possible. Linelength is +settable per line. + +* Readable yet very fast to type input language. With configurable +note names and identifiers. Comes with an emacs-mode + +* With lots of examples (among others a fragment of Van Beethoven's +Coriolan, J.S.Bach Cello Suite II, F. Schubert "Leise flehen meine +Lieder") + +* Runs on UNIX and Windows-32. + +* Easy generation of titling. + +* WWW browsable documentation. + +* Support for Urtext: separation of modern and original interpretation. + +* Polyphonic music (with automatic collision resolution) + +* Spacing and collision resolution of accidentals and syllables is +done automatically + +* Internationalisation support (Italian, Dutch) + +* Multiple font sizes within one piece + +* Integration with LaTeX and YODL + + +MORE INFO + +Sources for this project are on + + ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe) + ftp://ftp.gnu.org/pub/gnu/ + +More detailed info and examples can be found on the webpage at + + http://www.cs.uu.nl/~hanwen/lilypond/index.html + diff --git a/AUTHORS.txt b/AUTHORS.txt index 41e559eb68..ebf1db1135 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,132 +1,50 @@ - - -AUTHORS(1) LilyPond documentation AUTHORS(1) - - -NAME - AUTHORS - who did what on GNU LilyPond? - -DESCRIPTION - This file lists authors of GNU LilyPond, and what they - wrote. - -AUTHORS - o Han-Wen Nienhuys , - http://www.cs.ruu.nl/people/hanwen - Main author. - - o Jan Nieuwenhuizen , - http://www.digicash.com/~jan - Main author - -CONTRIBUTORS - o Mats Bengtsson , - parts of clef-reg.cc, clef-item.cc swedish notenames, - testing, general comments, duration logs/longa/brevis - etc - - o Jan Arne Fagertun , - TeX titling and lytodvi.sh - - o Shay Rojanski - Some mudela source. - - o Werner Lemberg , - misc bugfixes, some Beam and Stem code. - - o Donald Ervin Knuth, http://www.cs.stanford.edu/~? - mf/ital-*.mf (these were taken from the CM fonts) - - o Alexandre Oliva , - http://sunsite.unicamp.br/~oliva - testing - - o Anthony Fok , - debian package: debian/* - - o Franc,ois Pinard , - Documentation/Vocab*, internationalization stuff - - o Neil Jerram . - Documentation/Vocab* - - o David R. Linn , - Mailing list maintenance. - - Your name could be here! If you want to help, then take a - look at the SMALLISH PROJECTS section of in the file TODO. - Some do not involve coding C++ - - - - -6/Apr/98 LilyPond 0.1.65 1 - - - - - -AUTHORS(1) LilyPond documentation AUTHORS(1) - - - [And of course we sincerely thank J.S.Bach, F.Schubert, T. - Merula and W.A.Mozart for their beautiful music] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -6/Apr/98 LilyPond 0.1.65 2 - - +TITLE INFORMATION: AUTHORS - who did what on GNU LilyPond? + +Contents + +This file lists authors of GNU LilyPond, and what they wrote. +This list is alphabetically ordered. + +o Mats Bengtsson , + http://www.s3.kth.se/~matsb + clef stuff, key stuff, swedish notenames, testing, general + comments. +o Eric Bullinger , + accidental transposition. +o Jan Arne Fagertun , + TeX titling and lytodvi.sh +o Anthony Fok , + debian package: debian/* +o Neil Jerram . + Documentation/Vocab* +o Donald Ervin Knuth, http://www.cs-staff.stanford.edu/~knuth + mf/ital-*.mf (these were taken from the CM fonts) +o Werner Lemberg , + misc bugfixes, some Beam and Stem code. +o David R. Linn , + Mailing list maintenance. +o Han-Wen Nienhuys , + http://www.cs.uu.nl/~hanwen + + Main author. +o Jan Nieuwenhuizen , + http://www.digicash.com/~jan + + Main author +o Alexandre Oliva , + http://sunsite.unicamp.br/~oliva + testing +o Franc,ois Pinard , + Documentation/Vocab*, started internationalization stuff +o Jeffrey B. Reed , + Windows-NT support. +o Shay Rojanski + Some mudela source. + +Your name could be here! If you want to help, then take a look at the +SMALLISH PROJECTS section of in the file TODO. Some do not involve +coding C++ + +[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and +W.A.Mozart for their beautiful music] diff --git a/BUGS b/BUGS index f7da705fa8..36b24a234a 100644 --- a/BUGS +++ b/BUGS @@ -1,32 +1,40 @@ -input/abbrev.ly + +This documents serious bugs ******** -\score{ - \melodic{ - [c2 c] - } -} -lilypond: ../flower/include/varray.hh:141: struct Rhythmic_grouping *& Array::elem(int) const: Assertion `i >=0&&i::operator -(class Cursor) const: Assertion `c.ok()' failed. -Aborted (core dumped) +results in + lilypond: ../flower/include/varray.hh:141: struct Rhythmic_grouping *& Array::elem(int) const: Assertion `i >=0&&i::operator -(class Cursor) const: Assertion `c.ok()' failed. + Aborted (core dumped) + + +[Linux libg++ 2.7] LilyPond occasionally crashes while parsing the initialisation files. This is a very obscure bug, and usually entering the commandline @@ -49,11 +57,9 @@ Typical stacktrace: Includable_lexer::new_input (this=0x8209a00, s={strh_ = { : +This behaviour has been observed with machines that have old libg++ +versions (LinuxPPC feb '98, RedHat 4.x). -I get bitten by this every once in a while, and I am very interested -in hints what might be wrong. This problem has only been identified -with libc-5.3 and libc-5.4 platforms, so you might try upgrading to -6.0, ie. GNU libc-2. [Linux Intel] diff --git a/DEDICATION b/DEDICATION index 895b59cc0c..b6a224e0b3 100644 --- a/DEDICATION +++ b/DEDICATION @@ -5,10 +5,10 @@ met through music. - Those deserving special mention (in no particular order): + Those deserving special mentioning (in no particular order): Esther, Marijke, Heike, Inge, Judith, Hannah, Auke, Ilse, Evelyn, -Maartje, Suzanne, Ilse (gee, again?), Bonne and last (but certainly -not least) Janneke! +Maartje, Suzanne, Ilse (gee, again?) and last (but certainly not +least) Janneke! HWN @@ -21,7 +21,7 @@ Eva, Roos, Judith, Tim, and, of course, Wendy! Of course, our other friends in the `Eindhovens Jongeren Ensemble' -(http://www.cs.ruu.nl/~hanwen/eje.html) cannot go unmentioned either. +(http://www.cs.uu.nl/~hanwen/eje.html) cannot go unmentioned either. --- * --- diff --git a/Documentation/AUTHORS.pod b/Documentation/AUTHORS.pod deleted file mode 100644 index 538b9c1852..0000000000 --- a/Documentation/AUTHORS.pod +++ /dev/null @@ -1,75 +0,0 @@ -=head1 NAME - -AUTHORS - who did what on GNU LilyPond? - -=head1 DESCRIPTION - -This file lists authors of GNU LilyPond, and what they wrote. - -=head1 AUTHORS - -=over 4 - -=item * Han-Wen Nienhuys , http://www.cs.ruu.nl/people/hanwen - -Main author. - -=item * Jan Nieuwenhuizen , http://www.digicash.com/~jan - -Main author - -=back - -=head1 CONTRIBUTORS - -=over 4 - -=item * Mats Bengtsson , - -parts of clef-reg.cc, clef-item.cc swedish notenames, testing, general -comments, duration logs/longa/brevis etc - -=item * Jan Arne Fagertun , - -TeX titling and lytodvi.sh - -=item * Shay Rojanski - -Some mudela source. - -=item * Werner Lemberg , - -misc bugfixes, some Beam and Stem code. - -=item * Donald Ervin Knuth, http://www.cs.stanford.edu/~? - -mf/ital-*.mf (these were taken from the CM fonts) - -=item * Alexandre Oliva , http://sunsite.unicamp.br/~oliva - -testing - -=item * Anthony Fok , - -debian package: debian/* - -=item * Franc,ois Pinard , - -Documentation/Vocab*, internationalization stuff - -=item * Neil Jerram . - -Documentation/Vocab* - -=item * David R. Linn , - -Mailing list maintenance. - -=back - -Your name could be here! If you want to help, then take a look at the -SMALLISH PROJECTS section of in the file F. Some do not involve -coding C++ - -[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and -W.A.Mozart for their beautiful music] diff --git a/Documentation/BLURB.in b/Documentation/BLURB.in new file mode 100644 index 0000000000..68ca4dc05e --- /dev/null +++ b/Documentation/BLURB.in @@ -0,0 +1,6 @@ +LilyPond is the GNU Project music typesetter. This program can print +beautiful sheet music from a music definition file. It can also play +mechanical performances to a MIDI file. Features include multiple +staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas, +beams, slurs, triplets, formatting scores, part extraction. It includes +a nice font of musical symbols. diff --git a/Documentation/COPERTINA.in b/Documentation/COPERTINA.in new file mode 100644 index 0000000000..664aec837e --- /dev/null +++ b/Documentation/COPERTINA.in @@ -0,0 +1,7 @@ +LilyPond è il tipografo musicale del progetto GNU. Questo programma è +fatto per stampare belle partiture da un documento definito per musica. +Può anche suonare le prestazioni meccaniche ad un documento MIDI. Le +caratteristiche includono i personali multipli, tester, chiavi, suoni, +lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti, +segni di formattazione, estrazione delle parte. È compresa una seria +completa di caratteri musicali. diff --git a/Documentation/COPERTINA.yo b/Documentation/COPERTINA.yo new file mode 100644 index 0000000000..b4e0e0acef --- /dev/null +++ b/Documentation/COPERTINA.yo @@ -0,0 +1,9 @@ +COMMENT(silly... DEFINEMACRO(pic)(1)(url(ARG1)(ARG1.gif))) +DEFINEMACRO(pic)(1)(verbinclude(ARG1.in)) + +nsect(LilyPond è il tipografo musicale del progetto GNU. ) + +includefile(COPERTINA.in) +nl() +pic(schermo) + diff --git a/Documentation/CodingStyle.pod b/Documentation/CodingStyle.pod deleted file mode 100644 index 0f57d3e1b3..0000000000 --- a/Documentation/CodingStyle.pod +++ /dev/null @@ -1,484 +0,0 @@ -=head1 NAME - -CodingStyle - standards while programming for GNU LilyPond - -=head1 DESCRIPTION - -We use these standards while doing programming for GNU LilyPond. If -you do some hacking, we appreciate it if you would follow this rules, -but if you don't, we still like you. - -Functions and methods do not return errorcodes, but use assert for -checking status. - -=head2 Quote: - -A program should be light and agile, its subroutines -connected like a string of pearls. The spirit and intent of -the program should be retained throughout. There should be -neither too little nor too much, neither needless loops nor -useless variables, neither lack of structure nor overwhelming -rigidity. - -A program should follow the 'Law of Least -Astonishment'. What is this law? It is simply that the -program should always respond to the user in the way that -astonishes him least. - -A program, no matter how complex, should act as a -single unit. The program should be directed by the logic -within rather than by outward appearances. - -If the program fails in these requirements, it will be -in a state of disorder and confusion. The only way to correct -this is to rewrite the program. - --- Geoffrey James, "The Tao of Programming" - - -=head2 LANGUAGES - -C++, /bin/sh and python are preferred. Perl is not. - -=head2 FILES - -Definitions of classes that are only accessed via pointers -(*) or references (&) shall not be included as include files. - -filenames - - ".hh" Include files - ".cc" Implementation files - ".icc" Inline definition files - ".tcc" non inline Template defs - -in emacs: - - (setq auto-mode-alist - (append '(("\\.make$" . makefile-mode) - ("\\.cc$" . c++-mode) - ("\\.icc$" . c++-mode) - ("\\.tcc$" . c++-mode) - ("\\.hh$" . c++-mode) - ("\\.pod$" . text-mode) - ) - auto-mode-alist)) - - -The class Class_name_abbreviation is coded in F - - -=head2 INDENTATION - -in emacs: - - - (add-hook 'c++-mode-hook - '(lambda() (c-set-style "gnu") - ) - ) - -If you like using font-lock, you can also add this to your F<.emacs>: - - (setq font-lock-maximum-decoration t) - (setq c++-font-lock-keywords-3 - (append - c++-font-lock-keywords-3 - '(("\\b\\([a-zA-Z_]+_\\)\\b" 1 font-lock-variable-name-face) - ("\\b\\([A-Z]+[a-z_]+\\)\\b" 1 font-lock-type-face)) - )) - -=head2 CLASSES and TYPES: - - This_is_a_class - AClass_name (for Abbreviation_class_name) - -=head2 MEMBERS - - Class::member() - Type Class::member_type_ - Type Class::member_type() - -the C is a Hungarian notation postfix for C. See below - -=head2 MACROS - -Macros should be written completely in uppercase - -The code should not be compilable if proper macro declarations are not -included. - -Don't laugh. It took us a whole evening/night to figure out one of -these bugs. - -=head2 BROKEN CODE - -Broken code (hardwired dependencies, hardwired constants, slow -algorithms and obvious limitations) should be marked as such: -either with a verbose TODO, or with a short "ugh" comment. - -=head2 COMMENTS - -The source is commented in the DOC++ style. Check out doc++ at -http://www.zib.de/Visual/software/doc++/index.html - - /* - C style comments for multiline comments. - They come before the thing to document. - [...] - */ - - - /** - short description. - Long class documentation. - (Hungarian postfix) - - TODO Fix boring_member() - */ - class Class { - /** - short description. - long description - */ - - Data data_member_; - - - /** - short memo. long doco of member() - @param description of arguments - @return Rettype - */ - Rettype member(Argtype); - - /// memo only - boring_member() { - data_member_ = 121; // ugh - } - }; - - - -Unfortunately most of the code isn't really documented that good. - - -=head2 MEMBERS (2) - -Standard methods: - - ///check that *this satisfies its invariants, abort if not. - void OK() const - - /// print *this (and substructures) to debugging log - void print() const - - /** - protected member. Usually invoked by non-virtual XXXX() - */ - virtual do_XXXX() - - /**add some data to *this. - Presence of these methods usually imply that it is not feasible to this - via a constructor - */ - add (..) - - /// replace some data of *this - set (..) - -=head2 Constructor - -Every class should have a default constructor. - -Don't use non-default constructors if this can be avoided: - - Foo f(1) - -is less readable than - - Foo f; - f.x = 1 - -or - Foo f(Foo_convert::int_to_foo (1)) - - - -=head1 HUNGARIAN NOTATION NAMING CONVENTION - -Proposed is a naming convention derived from the so-called I. - -=head2 Hungarian - -The Hungarian Notation was conceived by or at least got its name from, -the hungarian programmer Charles Simonyi. It is a naming convention -with the aim to make code more readable (for fellow programmers), and -more accessible for programmers that are new to a project. - -The essence of the Hungarian Notation is that every identifier has a -part which identifies its type (for functions this is the result -type). This is particularly useful in object oriented programming, -where a particular object implies a specific interface (a set of -member functions, perhaps some redefined operators), and for -accounting heap allocated memory pointers and links. - -=head2 Advantages - -Another fun quote from Microsoft Secrets: - - - The Hungarian naming convention gives developers the ability - to read other people's code relatively easily, with a minmum - number of comments in the source code. Jon De Vann estimated - that only about 1 percent of all lines in the Excel product - code consist of comments, but the code is still very - understandable due to the use of Hungarian: "if you look at - our source code, you also notice very few comments. Hungarian - gives us the ability to go in and read code..." - -Wow! If you use Hungarian you don't have to document your software! -Just think of the hours I have wasted documenting while this "silver bullet" -existed. I feel so stupid and ashamed! [Didn't MMM-Brooks say `There is -no silver bullet?' --HWN] - - -=head2 Disadvantages - -=over 5 - -=item * - -more keystrokes (disk space!) - -=item * - -it looks silly C - -=item * - -it looks like code from micro suckers - -=item * - -(which) might scare away some (otherwise good?) -progammers, or make you a paria in the free -software community - -=item * - -it has ambiguities - -=item * - -not very useful if not used consistently - -=item * - -usefullness in I (but how many classes is very large?) -remains an issue. - -=back - - - -=head2 Proposal - -=over 5 - -=item * - -learn about cut and paste / use emacs or vi -or lean to type using ten fingers - -=item * - -Use emacs dabbrev-expand, with dabbrev-case-fold-search set to nil. - -=item * - -use no, or pick less silly, abbrvs. - -=item * - -use non-ambiguous postfixes C - -=item * - -There is no need for Hungarian if the scope of the variable is small, -ie. local variables, arguments in function definitions (not -declarations). - -=back - -Macros, Cs and Cs are all uppercase, -with the parts of the names separated by underscores. - -=head2 Types - -=over 5 - -=item C - - -unsigned char. (The postfix _by is ambiguous) - -=item C - - -bool - -=item C - -bit - -=item C - -char - -=item C - -float - -=item C - -signed integer - -=item C - -string class - -=item C - -Zero terminated c string - -=item C - -unsigned integer - -=back - -=head2 User defined types - - - /** Slur blah. blah. - (slur) - */ - class Slur {}; - Slur* slur_p = new Slur; - -=head2 Modifiers - -The following types modify the meaning of the prefix. -These are preceded by the prefixes: - -=over 5 - -=item C - -array - -=item C - -user built array. - -=item C - -const. Note that the proper order is C i.s.o. C - -=item C - -A const pointer. This would be equivalent to C<_c_l>, but since any -"const" pointer has to be a link (you can't delete a const pointer), -it is superfluous. - -=item C - -temporary pointer to object (link) - -=item C

- -pointer to newed object - -=item C - -reference - -=back - -=over 5 - -=head2 Adjective - -Adjectives such as global and static should be spelled out in full. -They come before the noun that they refer to, just as in normal english. - -foo_global_i: a global variable of type int commonly called "foo". - -static class members do not need the static_ prefix in the name (the -Class::var notation usually makes it clear that it is static) - -=item C - -Variable loop: an integer - -=item C - -Temporary variable: an unsigned integer - -=item C - -Variable test: a character - -=item C - -Variable first_name: a String class object - -=item C - -Variable last_name: a C array - -=item C - -Variable foo: an C that you must delete - -=item C - -Variable bar: an C that you must not delete - -=back - -Generally default arguments are taboo, except for nil pointers. - -The naming convention can be quite conveniently memorised, by -expressing the type in english, and abbreviating it - - static Array foo - -C can be described as "the static int-pointer user-array", so you get - - foo_static_l_arr - - - - -=head1 MISCELLANEOUS - -For some tasks, some scripts are supplied, notably creating patches, a -mirror of the website, generating the header to put over cc and hh -files, doing a release. - -Use them. - -The following generic identifications are used: - - up == 1 - left == -1 - right == 1 - down == -1 - -Intervals are pictured lying on a horizontal numberline (Interval[-1] -is the minimum). The 2D plane has +x on the right, +y pointing up. - - diff --git a/Documentation/CodingStyle.yo b/Documentation/CodingStyle.yo new file mode 100644 index 0000000000..fb74fdfc2e --- /dev/null +++ b/Documentation/CodingStyle.yo @@ -0,0 +1,423 @@ +report(CodingStyle - standards while programming for GNU +LilyPond)(Han-Wen Nienhuys and Jan Nieuwenhuizen)()() + +nsect(DESCRIPTION) + +We use these standards while doing programming for GNU LilyPond. If +you do some hacking, we appreciate it if you would follow this rules, +but if you don't, we still like you. + +Functions and methods do not return errorcodes, but use assert for +checking status. + +quote( + +A program should be light and agile, its subroutines +connected like a string of pearls. The spirit and intent of +the program should be retained throughout. There should be +neither too little nor too much, neither needless loops nor +useless variables, neither lack of structure nor overwhelming +rigidity. + +A program should follow the 'Law of Least +Astonishment'. What is this law? It is simply that the +program should always respond to the user in the way that +astonishes him least. + +A program, no matter how complex, should act as a +single unit. The program should be directed by the logic +within rather than by outward appearances. + +If the program fails in these requirements, it will be +in a state of disorder and confusion. The only way to correct +this is to rewrite the program. + +-- Geoffrey James, "The Tao of Programming" +) + + +nsubsect(LANGUAGES) + +C++, /bin/sh and python are preferred. Perl is not. + +nsubsect(FILES) + +Definitions of classes that are only accessed via pointers +(*) or references (&) shall not be included as include files. + +filenames + +verb( + ".hh" Include files + ".cc" Implementation files + ".icc" Inline definition files + ".tcc" non inline Template defs +) + +in emacs: + +verb( + (setq auto-mode-alist + (append '(("\\.make$" . makefile-mode) + ("\\.cc$" . c++-mode) + ("\\.icc$" . c++-mode) + ("\\.tcc$" . c++-mode) + ("\\.hh$" . c++-mode) + ("\\.pod$" . text-mode) + ) + auto-mode-alist)) +) + + +The class Class_name_abbreviation is coded in file(class-name-abbr.*) + + +nsubsect(INDENTATION) + +in emacs: + +verb( + (add-hook 'c++-mode-hook + '(lambda() (c-set-style "gnu") + ) + ) +) + +If you like using font-lock, you can also add this to your file(.emacs): + +verb( + (setq font-lock-maximum-decoration t) + (setq c++-font-lock-keywords-3 + (append + c++-font-lock-keywords-3 + '(("\\b\\([a-zA-Z_]+_\\)\\b" 1 font-lock-variable-name-face) + ("\\b\\([A-Z]+[a-z_]+\\)\\b" 1 font-lock-type-face)) + )) +) + +nsubsect(CLASSES and TYPES:) + +verb( + This_is_a_class + AClass_name (for Abbreviation_class_name) +) + +nsubsect(MEMBERS) + +verb( + Class::member() + Type Class::member_type_ + Type Class::member_type() +) + +the code(type) is a Hungarian notation postfix for code(Type). See below + +nsubsect(MACROS) + +Macros should be written completely in uppercase + +The code should not be compilable if proper macro declarations are not +included. + +Don't laugh. It took us a whole evening/night to figure out one of +these bugs, because we had a macro that looked like +code(DECLARE_VIRTUAL_FUNCTIONS()). + +nsubsect(BROKEN CODE) + +Broken code (hardwired dependencies, hardwired constants, slow +algorithms and obvious limitations) should be marked as such: either +with a verbose TODO, or with a short "ugh" comment. + +nsubsect(COMMENTS) + +The source is commented in the DOC++ style. Check out doc++ at +lurl(http://www.zib.de/Visual/software/doc++/index.html) + +verb( + /* + C style comments for multiline comments. + They come before the thing to document. + [...] + */ + + + /** + short description. + Long class documentation. + (Hungarian postfix) + + TODO Fix boring_member() + */ + class Class { + /** + short description. + long description + */ + + Data data_member_; + + + /** + short memo. long doco of member() + @param description of arguments + @return Rettype + */ + Rettype member(Argtype); + + /// memo only + boring_member() { + data_member_ = 121; // ugh + } + }; +) + + +Unfortunately most of the code isn't really documented that good. + + +nsubsect(MEMBERS (2)) + +Standard methods: + +verb( + ///check that *this satisfies its invariants, abort if not. + void OK() const + + /// print *this (and substructures) to debugging log + void print() const + + /** + protected member. Usually invoked by non-virtual XXXX() + */ + virtual do_XXXX() + + /**add some data to *this. + Presence of these methods usually imply that it is not feasible to this + via a constructor + */ + add (..) + + /// replace some data of *this + set (..) +) + +nsubsect(Constructor) + +Every class should have a default constructor. + +Don't use non-default constructors if this can be avoided: + +verb( + Foo f(1) +) + +is less readable than + +verb( + Foo f; + f.x = 1 +) + +or + +verb( + Foo f(Foo_convert::int_to_foo (1)) +) + +nsect(HUNGARIAN NOTATION NAMING CONVENTION) + +Proposed is a naming convention derived from the so-called +em(Hungarian Notation). + +nsubsect(Hungarian) + +The Hungarian Notation was conceived by or at least got its name from, +the hungarian programmer Charles Simonyi. It is a naming convention +with the aim to make code more readable (for fellow programmers), and +more accessible for programmers that are new to a project. + +The essence of the Hungarian Notation is that every identifier has a +part which identifies its type (for functions this is the result +type). This is particularly useful in object oriented programming, +where a particular object implies a specific interface (a set of +member functions, perhaps some redefined operators), and for +accounting heap allocated memory pointers and links. + +nsubsect(Advantages) + +Another fun quote from Microsoft Secrets: + +quote( + The Hungarian naming convention gives developers the ability + to read other people's code relatively easily, with a minmum + number of comments in the source code. Jon De Vann estimated + that only about 1 percent of all lines in the Excel product + code consist of comments, but the code is still very + understandable due to the use of Hungarian: "if you look at + our source code, you also notice very few comments. Hungarian + gives us the ability to go in and read code..." +) + +Wow! If you use Hungarian you don't have to document your software! +Just think of the hours I have wasted documenting while this "silver bullet" +existed. I feel so stupid and ashamed! (Didn't MMM-Brooks say `There is +no silver bullet?' --HWN) + + +nsubsect(Disadvantages) + +itemize( +it()more keystrokes (disk space!) +it()it looks silly code(get_slu_p()) +it()it looks like code from micro suckers +it()(which) might scare away some (otherwise good?) + progammers, or make you a paria in the free + software community +it()it has ambiguities +it()not very useful if not used consistently +it()usefullness in em(very large) (but how many classes is very large?) + remains an issue. +) + +nsubsect(Proposal) + +itemize( +it()learn about cut and paste / use emacs or vi + or lean to type using ten fingers +it()Use emacs dabbrev-expand, with dabbrev-case-fold-search set to nil. +it()use no, or pick less silly, abbrvs. +it()use non-ambiguous postfixes code(identifier_name_type_modifier[_modifier]) +it()There is no need for Hungarian if the scope of the variable is small, + ie. local variables, arguments in function definitions (not + declarations). +) + +Macros, code(enum)s and code(const)s are all uppercase, +with the parts of the names separated by underscores. + +nsubsect(Types) + +description( +dit(code(byte)) + unsigned char. (The postfix _by is ambiguous) +dit(code(b)) + bool +dit(code(bi)) + bit +dit(code(ch)) + char +dit(code(f)) + float +dit(code(i)) + signed integer +dit(code(str)) + string class +dit(code(sz)) + Zero terminated c string +dit(code(u)) + unsigned integer +) + +nsubsect(User defined types) + +verb( + /** Slur blah. blah. + (slur) + */ + class Slur {}; + Slur* slur_p = new Slur; +) + +nsubsect(Modifiers) + +The following types modify the meaning of the prefix. +These are preceded by the prefixes: + +description( +dit(code(a)) + array +dit(code(array)) + user built array. +dit(code(c)) + const. Note that the proper order is code(Type const) + i.s.o. code(const Type) +dit(code(C)) + A const pointer. This would be equivalent to code(_c_l), but since any + "const" pointer has to be a link (you can't delete a const pointer), + it is superfluous. +dit(code(l)) + temporary pointer to object (link) +dit(code(p)) + pointer to newed object +dit(code(r)) + reference +) + +nsubsect(Adjective) + +Adjectives such as global and static should be spelled out in full. +They come before the noun that they refer to, just as in normal english. + +verb( +foo_global_i: a global variable of type int commonly called "foo". +) + +static class members do not need the static_ prefix in the name (the +Class::var notation usually makes it clear that it is static) + +description( +dit(code(loop_i)) + Variable loop: an integer +dit(code(u)) + Temporary variable: an unsigned integer +dit(code(test_ch)) + Variable test: a character +dit(code(first_name_str)) + Variable first_name: a String class object +dit(code(last_name_ch_a)) + Variable last_name: a code(char) array +dit(code(foo_i_p)) + Variable foo: an code(Int*) that you must delete +dit(code(bar_i_l)) + Variable bar: an code(Int*) that you must not delete +) + +Generally default arguments are taboo, except for nil pointers. + +The naming convention can be quite conveniently memorised, by +expressing the type in english, and abbreviating it + +verb( + static Array foo +) + +code(foo) can be described as "the static int-pointer user-array", so you get + +verb( + foo_static_l_arr +) + + + +nsect(MISCELLANEOUS) + +For some tasks, some scripts are supplied, notably creating patches, a +mirror of the website, generating the header to put over cc and hh +files, doing a release. + +Use them. + +The following generic identifications are used: + +verb( + up == 1 + left == -1 + right == 1 + down == -1 +) + +Intervals are pictured lying on a horizontal numberline (Interval[-1] +is the minimum). The 2D plane has +x on the right, +y pointing up. + + diff --git a/Documentation/FLAPTEKST.in b/Documentation/FLAPTEKST.in new file mode 100644 index 0000000000..90ee5e5d21 --- /dev/null +++ b/Documentation/FLAPTEKST.in @@ -0,0 +1,7 @@ +LilyPond is de muziekzetter van het GNU Project. Dit programma drukt +prachtige bladmuziek volgens een muzikaal definitie bestand. Ook kan +het een mechanische uitvoering afspelen naar een MIDI bestand. +Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten, +sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa, +balken, boogjes, triolen, partituren, en uittreksels voor individuele +partijen. Een fraaie set muziektekens is inbegrepen. diff --git a/Documentation/FLAPTEKST.yo b/Documentation/FLAPTEKST.yo new file mode 100644 index 0000000000..4513c045e3 --- /dev/null +++ b/Documentation/FLAPTEKST.yo @@ -0,0 +1,9 @@ +COMMENT(silly...DEFINEMACRO(pic)(1)(url(ARG1)(ARG1.gif))) +DEFINEMACRO(pic)(1)(verbinclude(ARG1.in)) + +nsect(LilyPond -- De Muziek Zetter van het GNU Project) + +includefile(FLAPTEKST.in) +nl() +pic(scherm) + diff --git a/Documentation/INSTALL.pod b/Documentation/INSTALL.pod deleted file mode 100644 index 741db8d433..0000000000 --- a/Documentation/INSTALL.pod +++ /dev/null @@ -1,341 +0,0 @@ -=head1 NAME - -INSTALL - installing GNU LilyPond - -=head1 DESCRIPTION - -This page documents installation and compilation of GNU LilyPond - -=head1 ABSTRACT - -You do something which looks remotely like - - configure - make - make install - -The detailed instructions follow here. - -=head1 PREREQUISITES - -For compilation you need. - -=over 5 - -=item * - -A GNU system: GNU LilyPond is known to run on these GNU systems: Linux -(PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and Solaris. - -If you have the Cygnus WINDOWS32 port of the GNU utils, it will even -work in Windows NT/95, but we don't promise to support it. - -=item * - -GNU C++ version 2.7 or newer (yes, 2.8 is fine). - -=item * - -Python - -=back - -=head1 RUNNING - -GNU LilyPond does use a lot of resources. For operation you need the following: - -=over 5 - -=item * - -TeX - -=item * - -A PostScript printer and/or viewer (such as Ghostscript) is strongly -recommended. Xdvi will show all embedded PostScript too if you have -Ghostscript installed. - -=back - -=head1 RECOMMENDED - -Although not strictly necessary, these are recommended to have. - -=over 5 - -=item * - -GNU make. - -=item * - -Flex (version 2.5.4 or newer). - -=item * - -Bison (version 1.25 or newer). - -=item * - -Perl-5. Most documentation was created with the perl's Plain Old -Documentation. (I use 5.003) - -=item * - -Python. Although perl is nice, python is better. We will shift -towards python for build scripts - -=item * - -GNU find - -=item * - -A fast computer (a full page of music typically takes 1 minute on my -486/133, using the B<--enable-checking> compile. It's lot slower than -most MusiXTeX preprocessors) - -=back - -=head1 WEBSITE - -If you want to auto-generate Lily's website, you'll need some additional -conversion tools. - -=over 5 - -=item * - -xpmtoppm (from the Portable Bitmap Utilities) (included within the -RedHat package libgr-progs). - -=item * - -Bib2html (http://pertsserver.cs.uiuc.edu/~hull/bib2html.) -Which, in turn depends on Man2htlm (http://askdonald.ask.uni-karlsruhe.de/ -hppd/hpux/Networking/WWW/Man2html-1.05) for proper installation (ugh). -TeTeX users, don't forget to rerun texhash. - -=back - -=head1 CONFIGURING and COMPILING - -to install GNU LilyPond, simply type: - - configure - make - make install - -This will install the following files: - - /usr/local/man/man1/mi2mu.1 - /usr/local/man/man1/convert-mudela.1 - /usr/local/man/man1/mudela-book.1 - /usr/local/man/man1/lilypond.1 - /usr/local/lib/libflower.{so,a} - /usr/local/bin/lilypond - /usr/local/bin/mi2mu - /usr/local/share/lilypond/* - /usr/lib/texmf/texmf/tex/lilypond/* - -The TeX include directory is detected dynamically, but it can be -adjusted with B<--enable-tex-prefix> and B<--enable-tex-dir>. The -above assumes that you are root and have the GNU development tools, -and your make is GNU make. If this is not the case, you can adjust -your environment variables to your taste: - - export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR" - configure - -C are the preprocessor flags. - -the configure script is Cygnus configure, and it will accept -B<--help>. If you are not root, you will probably have to make it with - - configure --prefix=/home/me_myself_and_I/ - -In this case, you will have to set MFINPUTS, and TEXINPUTS accordingly. - -If you want to install GNU LilyPond in F, and your TeX has -no default hooks for local stuff (mine is broken too), you can do: - - configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf - -Since GNU LilyPond currently is beta, you are advised to also use - - --enable-debugging - --enable-checking - -other options include: - -=over 4 - -=item B<--enable-shared> - -Make a shared library (gnu/linux, solaris (?) only ) - -=item B<--enable-printing> - -Enable debugging print routines (lilypond B<-d> option) - -=item B<--enable-optimise> - -Set maximum optimisation: compile with B<-O2> - -=item B<--enable-profiling> - -Compile with support for profiling - -=item B<--enable-tex-prefix> - -Set the directory where TeX and Metafont live - -=item B<--enable-tex-dir> - -Set then directory TeX input is in (detected as a subdir of -tex-prefix). This should be a directory that is reachable both for -tex and latex. On my system the best choice would be -F. - -=item B<--enable-mf-dir> - -Set the directory mf input is in (idem). On my system the best -choice would be F. - -=item B<--enable-config> - -Output to different configuration files. Needed for multi-platform -builds - - -=back - -All options are documented in the F help -The option B<--enable-optimise> is recommended for Real Life usage. - -If you do - - make all - -everything will be compiled, but nothing will be installed. The -resulting binaries can be found in the subdirectories F (which -contain all files generated during compilation). - -=head1 CONFIGURING FOR MULTIPLE PLATFORMS - -If you want to compile LilyPond with different configuration settings, -then, you can use the B<--enable-config> option. Example: suppose I -want to build with and without profiling. Then I'd use the -following for the normal build, - - configure --prefix=~ --disable-optimise --enable-checking - make - make install - -and for the profiling version, I specify a different configuration. - - configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking - make configuration=optprof - make configuration=optprof install - - -=head1 INSTALLING - -If you have done a successful C, then a simple - - make install - -should do the trick. - -If you are doing an upgrade, please remember to remove obsolete .pk -and .tfm files of the fonts. A script has been provided to do the -work, see F. - -=head1 CAVEATS - -=over 5 - -=item * - -The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You -should turn off this flag for this file. - -=item * - -Perl5.003 and Perl5.004 use different syntax for pod2html. - -=back - -=head1 EXAMPLE - -This is what I type in my xterm: - - lilypond someinput.ly - tex someinput.tex - xdvi someinput& - -This is what the output looks like over here: - - GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0 - Parsing ... [/home/hw/share/lilypond/init// - <..etc..> - init//performer.ly]]][input/kortjakje.ly] - Creating elements ...[8][16][24][25] - Preprocessing elements... - Calculating column positions ... [14][25] - Postprocessing elements... - TeX output to someinput.tex ... - Creating MIDI elements ...MIDI output to someinput.midi ... - - - hw:~/musix/spacer$ xdvi someinput& - [1] 855 - -Check out the input files, some of them have comments -Please refer to the man page for more information. - -=head1 REDHAT LINUX - -RedHat Linux users can compile an RPM. A spec file is in -F. You should install a gif file called -F along with the sources. You can generate this gif -file by typing - - make gifs - -in the directory F. - - - -=head1 DEBIAN GNU/LINUX - -A Debian package is also available; contact Anthony Fok -. The build scripts are in the subdirectory debian/ - - -=head1 WINDOWS NT/95 - -So, you're stuck with Windows, eh? Well, don't worry, you just -need (to get) Cygnus' windows32 port of gnu development stuff; -have a look at http://www.cygnus.com/gnu-win32. - -To make GNU LilyPond under, brr, aargh, shudder... windows32, well, -simply type: - - bash configure - make - -B If you rely on broken DOS/Windows tools such as pkzip/WinZIP -to unpack the distribution, make sure the B source tree -is unpacked correctly, in particular the empty out directories -(F, F et. al.) - -=head1 AUTHORS - -Han-Wen Nienhuys - -Jan Nieuwenhuizen - - -Have fun! diff --git a/Documentation/MANIFESTO.pod b/Documentation/MANIFESTO.pod deleted file mode 100644 index 58847a4d84..0000000000 --- a/Documentation/MANIFESTO.pod +++ /dev/null @@ -1,172 +0,0 @@ -=head1 NAME - -MANIFESTO -- Rationale behind the GNU LilyPond project - -=head1 DESCRIPTION - - -GNU LilyPond was written with some considerations in mind: - - -=over 4 - -=item * - -Describing a well-defined language for defining music. We call -this language (rather arrogantly) The Musical Definition Language -(mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a -TeX file. - -=item * - -Providing an easy-to-use interface for typesetting music in -its broadest sense. This interface should be intuitive from a musical -point of view. By broadest sense we mean: it is designed for music -printed left to right in staffs, using notes to designate rythm and -pitch. - -=item * - -Generating high-quality output. Ideally it should be of a professional -quality. We'd like to render Herbert Chlapiks words, "Fine music -setting is not possible without a knowledgeable printer," untrue. - -=item * - -Making a system which is fully tweakable. It should be possible to -typeset a book on how not to typeset music. - -=back - -=head1 LILYPOND - - -Further considerations while doing the programming - -=over 4 - -=item * - -GNU LilyPond uses TeX for its output. This is not a key issue: in a -future version, GNU LilyPond might bypass TeX, but at the moment TeX -is convenient for producing output. - -=item * - -GNU LilyPond does not display notes directly, nor will it be rehacked -to be used interactively. GNU LilyPond writes output to a file. It -will not be extended to play music, or to recognize music. - -[As an aside, I am contemplating to create a library for rendering -music, which is "X-capable", so that others can create interactive tools] - -=item * - -GNU LilyPond is intended to run on Unix platforms, but it should -be portable to any platform which can run TeX and the GNU tools - -=item * - -GNU LilyPond is free. Commercial windows packages for setting music are -abundant. Free musicprinting software is scarce. For more thoughts on -this, please consult the F documentation. - -=item * - -GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit -broken systems. - -=back - -=head1 MUDELA - -The design of Mudela has been (perfect past tense, hopefully) an -ongoing process, the most important criteria being: - -=over 4 - -=item * - -define the (musical) message of the composer as unambiguously as possible. - -This means that, given a piece Mudela, it should be possible for a -program to play a reasonable interpretation of the piece. - -It also means that, given a piece of Mudela, it should be possible for a -program to print a score of the piece. - -=item * - -be intuitive, and easily readable (compared to, say, Musi*TeX input, -or MIDI :-), - -=item * - -be easily writable in ASCII with a simple texteditor - -=back - -Other considerations were (and will be): - -=over 4 - -=item * - -be able to edit the layout without danger of changing the original -music (Urtext), - -=item * - -allow for adding different interpretations, again, -without danger of changing the original, - -=item * - -easy to create a conductor's score, -as well as the scores for all individual instruments, - -=item * - -provide simple musical manipulations, such as S<(i) extracting> a -slice of music from a previously defined piece, S<(ii) extracting> -only the rhythm from a piece of music, S<(iii) transposing>, etc., - -=item * - -easy to comprehend to both programmers and others. - -=back - -One of the things that (might) be here would be: feasible to use in a -graphic editor. We don't have experience with these beasts, so we -don't know how to do this. Comments appreciated. - -Musical pieces could be - -=over 4 - -=item * - -Orchestral scores, (eg Mahler) - -=item * - -piano pieces (eg. Schubert, Rachmaninov), - -=item * - -pop songs (lyrics and chords), - -=item * - -Gregorian chants, - -=item * - -Bach multivoice organ pieces, - -=item * - -Short excerpts to be used in musicological publications. - -=back diff --git a/Documentation/MANIFESTO.yo b/Documentation/MANIFESTO.yo new file mode 100644 index 0000000000..0bb3533763 --- /dev/null +++ b/Documentation/MANIFESTO.yo @@ -0,0 +1,97 @@ + +article(MANIFESTO -- Rationale behind the GNU LilyPond project)(HWN +and JCN)() + +sect(Goals for LilyPond) + + +GNU LilyPond was written with some considerations in mind: + + +itemize( +it() Describing a well-defined language for defining music. We call + this language (rather arrogantly) The Musical Definition Language + (mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a + TeX file. +it() Providing an easy-to-use interface for typesetting music in + its broadest sense. This interface should be intuitive from a musical + point of view. By broadest sense we mean: it is designed for music + printed left to right in staffs, using notes to designate rythm and + pitch. +it()Generating high-quality output. Ideally it should be of a professional + quality. We'd like to render Herbert Chlapiks words, "Fine music + setting is not possible without a knowledgeable printer," untrue. +it()Making a system which is fully tweakable. It should be possible to + typeset a book on how not to typeset music. +) + +sect(Development constraints) + + +Further considerations while doing the programming + +itemize( +it()GNU LilyPond uses TeX for its output. This is not a key issue: in a + future version, GNU LilyPond might bypass TeX, but at the moment TeX + is convenient for producing output. +it()GNU LilyPond does not display notes directly, nor will it be rehacked + to be used interactively. GNU LilyPond writes output to a file. It + will not be extended to play music, or to recognize music. + [As an aside, I am contemplating to create a library for rendering + music, which is "X-capable", so that others can create interactive tools] +it()GNU LilyPond is intended to run on Unix platforms, but it should + be portable to any platform which can run TeX and the GNU tools +it()GNU LilyPond is free. Commercial windows packages for setting music are + abundant. Free musicprinting software is scarce. For more thoughts on + this, please consult the file(gnu-music) documentation. +it()GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit + broken systems. +) + +sect(Goals for mudela) + +The design of Mudela has been (perfect past tense, hopefully) an +ongoing process, the most important criteria being: + +itemize( +it()define the (musical) message of the composer as unambiguously as possible. + This means that, given a piece Mudela, it should be possible for a + program to play a reasonable interpretation of the piece. + + It also means that, given a piece of Mudela, it should be possible for a + program to print a score of the piece. +it()be intuitive, and easily readable (compared to, say, Musi*TeX input, + or MIDI :-), +it()be easily writable in ASCII with a simple texteditor +) + +Other considerations were (and will be): + +itemize( +it()be able to edit the layout without danger of changing the original + music (Urtext), +it()allow for adding different interpretations, again, + without danger of changing the original, +it()easy to create a conductor's score, + as well as the scores for all individual instruments, +it()provide simple musical manipulations, such as em(i) extracting a + slice of music from a previously defined piece, em(ii) extracting + only the rhythm from a piece of music, em(iii) transposing, etc., +it()easy to comprehend to both programmers and others. +) + +One of the things that (might) be here would be: feasible to use in a +graphic editor. We don't have experience with these beasts, so we +don't know how to do this. Comments appreciated. + +Musical pieces could be + +itemize( +it()Orchestral scores, (eg Mahler) +it()piano pieces (eg. Schubert, Rachmaninov), +it()pop songs (lyrics and chords), +it()Gregorian chants, +it()Bach multivoice organ pieces, +it()Short excerpts to be used in musicological publications. +) + diff --git a/Documentation/Makefile b/Documentation/Makefile index e8fe751ce9..5b2a1f6023 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -1,67 +1,23 @@ # Documentation/Makefile -# subdir level: -# depth = .. -# -# identify module: -# NAME = Documentation -SUBDIRS=man tex +SUBDIRS=man tex pictures topdocs -# - -# generic variables: -# -include ./$(depth)/make/Variables.make -include ./$(depth)/make/Version.make -include ./$(depth)/make/Files.make -include ./$(depth)/make/Docrules.make -# - - -# -DATAFILES = $(wildcard *.data) -TEXTFILES = $(OUTPODFILES:.pod=$(DOTTEXT)) -GROFFFILES = $(OUTPODFILES:.pod=.1) -HTMLFILES = $(OUTPODFILES:.pod=.html) $(datafiles) +include $(depth)/make/Stepmake.make default: do-doc -# -# list of distribution files: -# -XPMS=$(wildcard *.xpm) -giffiles = $(addprefix $(outdir)/,$(XPMS:.xpm=.gif)) - -gifs: $(giffiles) - -datafiles = $(addprefix $(outdir)/,$(DATAFILES:.data=.html)) - -EXTRA_DISTFILES = $(XPMS) vocabulary.data vocabulary-forms.el automake.urgh\ - gnu-music-history - -# don't do DVI files. They can only be made if lily is installed -do-doc: $(TEXTFILES) - -readme-topfiles: - cd $(depth); for i in $(README_TOPFILES); do \ - ln -f $$i Documentation/$(outdir)/$$i$(DOTTEXT); done - -README_TOPFILES=NEWS DEDICATION TODO ANNOUNCE-0.1 -README_TXTFILES=$(addprefix $(outdir)/,$(addsuffix $(DOTTEXT), $(README_TOPFILES))) +README_TOP_FILES=NEWS DEDICATION TODO ANNOUNCE-0.1 -local-WWW: $(HTMLFILES) readme-topfiles $(README_TXTFILES) $(giffiles) +EXTRA_DIST_FILES = gnu-music-history TODO -# generic targets and rules: -# -include $(depth)/make/Targets.make -include $(depth)/make/Rules.make +BLURBS=BLURB COPERTINA FLAPTEKST +# INFO_FILES = $(outdir)/$(package).info -# ugh -check-doc-deps: do-doc - @echo # hi +OUTTEXINFO_FILES = $(outdir)/topinfo.texinfo $(outdir)/mutopia.texinfo -doc: do-doc +texinfo: $(OUTTEXINFO_FILES) +include $(stepdir)/Documentation.shared.make diff --git a/Documentation/PATCHES.pod b/Documentation/PATCHES.pod deleted file mode 100644 index 723bd87573..0000000000 --- a/Documentation/PATCHES.pod +++ /dev/null @@ -1,138 +0,0 @@ -=head1 NAME - -PATCHES - track and distribute your code changes - -=head1 DESCRIPTION - -This page documents how to distribute your changes to GNU LilyPond - -=head1 ABSTRACT - -Distributing a change normally goes like this: - -=over 5 - -=item * - -make your fix/add your code - -=item * - -Add changes to NEWS, and add yourself to Documentation/AUTHORS.pod - -=item * - -generate a patch, - -=item * - -e-mail your patch to one of the mailing lists -gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org - - -=back - -=head1 GENERATING A PATCH - -In F, set TOPLEVEL_MY_PATCH_LEVEL: - - VERSION: - ... - TOPLEVEL_MY_PATCH_LEVEL = jcn1 - -In F, enter a summary of changes: - - NEWS: - pl 0.1.48.jcn1 - - added PATCHES.pod - -Then, from the top of Lily's source tree, type - - make-patch - -which leaves your patch as F<./patch-0.1.48.jcn1>. - -If you didn't configure Lily using --srcdir, you can do: - - release - - tar-ball: ../patches/patch-0.1.48.jcn1.gz - patch: ../patches/patch-0.1.48.jcn1.gz - updeet: ../test/updeet - -=head1 PREREQUISITES - -For creating a patch you need - -=over 5 - -=item * - -All items mentioned in F. You're not going to send a patch -that you haven't even built, right? - -=item * - -GNU Diff - -=item * - -Python (version 1.4 or newer). -You can of course make a patch by hand, which would go something like: - - make distclean - cd .. - diff -urN lilypond-0.1.48 lilypond-0.1.48.jcn1 > patch-0.1.48.jcn1 - -but there are handy python scripts available. If you're doing development, -you'll need Python for other LilyPond scripts anyway. - -=item * - -The Lily directory structure, which looks like: - - lilypond-0.1.48/ - patches/ - releases/ - test/ - -=back - -=head1 APPLYING PATCHES - -If you're following LilyPond development regularly, you probably want to -download just the patch for each subsequent release. -After downloading the patch (into the patches directory, of course), simply -apply it: - - gzip -dc ../patches/patch-0.1.49.gz | patch -p1 -E - -and don't forget to make automatically generated files: - - autoconf 1) - configure - -=head1 SYNCHRONISE - -If you're not very quick with sending your patch, there's a good chance -that an new release of LilyPond comes available. In such a case (and -sometimes for other unkown reasons :-), the maintainer will probably ask -you to make a new patch against the latest release. -Your best bet is to download the latest release, and apply your patch -against this new source tree: - - cd lilypond-0.1.49 - gzip -dc ../patches/patch-0.1.48.jcn1.gz | patch -p1 -E - autoconf 1) - configure - -Then, make a patch as shown above. - -1) patches don't include automatically generated files, i.e. F - and files generated by F. - -=head1 MAINTAINER - -Han-Wen Nienhuys - -Just keep on sending those patches! diff --git a/Documentation/README-W32.yo b/Documentation/README-W32.yo new file mode 100644 index 0000000000..1523309d65 --- /dev/null +++ b/Documentation/README-W32.yo @@ -0,0 +1,753 @@ +article(LilyPond on W32) + (Jan Nieuwenhuizen and Jeffrey Reed) + () + +No, there's no reason to be concered, Lily should work in +Windows-NT(/95/98?) too. The setup may not be easy or smooth. This +document will help you getting started. + +sect(DISCLAIMER) + +If you have the Cygnus gnu-windows32 port of the GNU utils, LilyPond +will work in Windows-NT (/95/98?). + +We still recommend you use Unix. In particular, use GNU/Linux: We've +been there, and we've seen it happen several times. It is bf(much) +easier and quicker to install RedHat Linux and LilyPond than to +obtain, compile and install all the necessary tools to compile and run +LilyPond on Windows. + +``Ok, thanks for the suggestions. I can't run Linux or I don't want +to run Unix. What can I expect?'' + +itemize( +it()LilyPond development is moving quite fast, and all developers use Unix. + Newly added features may require some attention to get them to work. +it()LilyPond depends on a number of other packages that usually are + available on Unix boxes, but are not installed by default on Windows. +) + +subsect(INSTALL) + +Like Yodl, LilyPond will now install/extract in a unix-like tree: +verb( + usr/[local/]bin/ + usr/[local/]share/lilypond/* +) +etc. + +Both Yodl and Lily run in a the unix-like Cygnus gnu-windows environment; +hopefully Cygnus will adopt the file(/usr/[local/]) tree too. + +nl() +If you really don't want usr/ in your root directory, but rather scatter +your programs and packages all over your harddisk, do something like: +verb( + md lilypond + cd lilypond + unzip ../lilypond-0.1.77.exe.zip +) +and add file(lilypond/usr/bin) to your file(PATH) and +file(lilypond/usr/share/lilypond) to your file(LILYINCLUDE). + + +subsect(BUILDING LILYPOND) + +If you've received a binary release of LilyPond (file(.exe.zip)), +you may skip the following sections. + +subsect(GOOD NEWS) + +It can be done! Occasionally, the Cygnus b19.1 cross compiler and +utilities under GNU/Linux are used to make the binary file(.exe.zip) +releases (some makefile hacking was needed to build this stuff). Jeffrey +Reed tries to keep-up with LilyPond development, and is doing quite well. + +subsect(UNPACKING) + +I have heard of such tools that think they're probably much smarter than the +packager and thus decide for themselves that they don't need to unpack certain +files (e.g., empty directories such as bin/out). + +To unpack the lilypond sources, you should do something like: verb( + tar zxf releases/lilypond-x.y.z.tar.gz +) + +subsect(ABOUT UNIX) + +If you're familiar with the GNU/Cygnus development package, you may skip +this. + +Don't forget to set +verb( + /start/settings/control-panel/system/environment/system-variables: + GCC_EXEC_PREFIX=/Cygnus/b19/H-i386-cygwin32/lib/gcc-lib/ + MAKE_MODE=UNIX +) +You want to run bash, while building Lily: +verb( + c:\bash + bash-2.01$ +) +The install instructions mention something like: +verb( + configure + make + make install +) + +Now for a small UNIX lesson: The current working directory (cwd) is +by default not in your PATH, like it is under DOS (for security reasons). +Check this by looking at the output of: +verb( + echo $PATH +) +The cwd looks like code('::') or code(':.'). If it's not there, you may +add the cwd to your path: +verb( + PATH=$PATH:. +) +or you must use './' when issuing a command in th cwd, try: +verb( + ./configure + make +) + +sect(LILYPOND Windows-NT Support -- by Jeffrey Reed) + +My point of reference comes from 15 odd years working with a variety +of tt(UNIX) platforms. I am relatively new to Windows-NT and, even +though I am a card carrying tt(UNIX) bigot, I am excited about the +NT OS. My goals for lilypond are to give back to the Free Software +Foundation a little of what they have given me over the years and to +contribute to the lilypond project by supporting a Windows-NT port. I +hope that someday we can distribute and run lilypond on the NT OS in a +much more native fashion. + +itemize( +it()link(Building lilypond on tt(Windows-NT))(build) +it()link(Maintaining lilypond on tt(Windows-NT))(maintain) +it()link(Running lilypond on tt(Windows-NT))(run) +) + + +subsect(Building lilypond on Windows-NT) label(build) +Currently as stated above lilypond is primarily a tt(UNIX) thing. +The Windows-NT port is based on the tt(UNIX) environment provided by +url(Cygnus)(http://www.cygnus.com). Therefore the first step is to +download and install the Cygnus development kit: + +subsubsect(Cygnus Development Kit) +lurl(http://www.cygnus.com/misc/gnu-win32/) + + +Please follow the documentation Cygnus has on there web site for +downloading and installing. The important part is that you down load +the entire development kit. I believe it is file(cdk.exe). The +installation will ask you where you want to install it. I will refer +to Cygnus installation directory as file(/gnuwin32/b19). There should be a +file(README) file that contains installation instructions. After the +installation is complete you should have a em(Cygnus) shortcut in your +em(Program) section of your em(Start Menu). This shortcut is your +door to the tt(UNIX) world and I will refer to the resulting window +as a file(bash) shell. + +The shortcut points to file(/gnuwin32/b19/cygnus.bat). The following +is my file(cygnus.bat) file. + +verb( +@ECHO OFF +rem default environment + +rem GNU cygnus installation + +SET CYGREL=B19.1 +SET MAKE_MODE=unix +SET LOCAL_ROOT=d:\gnuwin32 +SET LOCAL_FS=d:/gnuwin32 +SET LOCAL_DIR=/gnuwin32 +SET CYGROOT=%LOCAL_ROOT%\b19 +SET CYGFS=%LOCAL_FS%/b19 +SET GCC_EXEC_PREFIX=%CYGROOT%\H-i386-cygwin32\lib\gcc-lib\ +SET TCL_LIBRARY=%CYGROOT%\share\tcl8.0\ +SET GDBTK_LIBRARY=%CYGFS%/share/gdbtcl + +rem This was not in the original but is needed by lots of packages +SET BISON_SIMPLE=%CYGFS%/share/bison.simple + +rem I place the cygnus stuff in front of /WINNT +SET PATH=d:\bin;%CYGROOT%\H-i386-cygwin32\bin;%PATH% +SET MANPATH=%LOCAL_ROOT%\man;%LOCAL_ROOT%\b19\man;%LOCAL_ROOT%\b19\cdk-man\man;%LOCAL_ROOT%\a2ps-4.10\man +SET INFOPATH=%LOCAL_FS%/b19/cdk-man/info;%LOCAL_FS%/b19/info;%LOCAL_DIR%/info +SET PATH=%PATH%;%LOCAL_ROOT%\bin + + +rem General tools not included with Cygnus Development Kit + + +rem CVS + +SET PATH=%PATH%;%LOCAL_ROOT%\cvs-1.9.28\bin +SET INFOPATH=%INFOPATH%;%LOCAL_FS%/cvs-1.9.28/info +SET MANPATH=%MANPATH%;%LOCAL_ROOT%\cvs-1.9.28\man + +rem EMACS + +SET PATH=%PATH%;%LOCAL_ROOT%\emacs-19.34\bin +SET INFOPATH=%INFOPATH%;%LOCAL_FS%/emacs-19.34/info + +rem VIM + +SET VIM=%LOCAL_ROOT%\vim-4.6\doc +SET PATH=%PATH%;%LOCAL_ROOT%\vim-4.6 + +rem TeX + +SET PATH=%PATH%;%LOCAL_ROOT%\texmf\miktex\bin + +rem a2ps + +SET PATH=%PATH%;%LOCAL_ROOT%\a2ps-4.10\bin +SET INFOPATH=%INFOPATH%;%LOCAL_FS%/a2ps-4.10/info +SET MANPATH=%MANPATH%;%LOCAL_ROOT%\a2ps-4.10\man + +rem python + +SET PATH=%PATH%;\Program Files\Python + +rem perl + +SET PATH=%PATH%;\qub + +rem yodl + +SET PATH=%PATH%;%LOCAL_ROOT%\yodl-1.30.0.pre10\bin +set MANPATH=%MANPATH%;%LOCAL_ROOT%\yodl-1.30.0.pre10\man + +uname -sv +bash -login +) + +Please look over this carefully. Be careful with the forward and +backward slash notations. The paths specified were done for good +reasons. Maybe someday we will all be using code(UNC). Note the +tt(BISON) entry and the tt(PATH) ordering in particular. Also note +that the generic file(cygnus.bat) you will be looking at does not +include alot of the packages listed. We will be installing some of +these. + +There is also some discussion of how you want to em(mount) the Cygnus +development kit. em(mount) is a tt(UNIX) term that refers to the +mechanism used to provide a disk resource to the filesystem. Cygnus +supplies a mechinism for em(mounting) a filesystem as a tt(DOS) like +resource or a tt(UNIX) like resource. Among other things this +attempts to deal with the text file carriage return line feed on +tt(DOS) versus the line feed on tt(UNIX) and the issue that tt(DOS) +has two file types, text and binary. Where tt(UNIX) deals with a +single streams type. I have used the default out of the box +configuration with no problems. We will however later discuss +mounting a directory as a binary resource ref(binary). + +The installation also suggests that you create a directory file(/bin) +and copy file(/gnuwin32/b19/H-i386-cygwin32/bin/sh.exe) to file(/bin). +The file(sh.exe) shell provided by Cygnus is a descendant of the +file(ash) shell and I have found that some of the tt(GNU) products +configure/installations work better with the file(bash) shell. So +this is my recommendation for post installation steps. From a +file(bash) shell: + +itemize( +it()code(cd /) +it()code(mkdir bin) +it()code(cd /bin) +it()code(cp /gnuwin32/b19/H-i386-cygwin32/bin/bash.exe sh.exe) +it()code(cd /) +it()code(mkdir /tmp) +it()code(chmod a+rwx tmp) +it()code(mkdir /etc) +it()code(cd /etc) +it()code(mkpasswd -l > passwd) +it()code(mkgroup -l > group) +) + +subsubsect(Ecgs Compiler, assembler, and linker) +lurl(http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs.html) + + +Cygnus recommends using the ecgs compiler. I do too. Follow the +instructions from the above site to install ecgs compiler/linker and +the gas assembler. We have attempted to compile lilypond with the +Cygnus default compiler/linker with poor results. So for lilypond +anyway this step is a requirement. + +I took the following steps to download and install the ecgs suite. +Keep in mind that it is better to follow the instructions from the +indicated website. + +itemize( +it()download +url(egcs-1.0.2-cygb19.tar.gz)(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/cygwin32/b19-releases/egcs-1.0.2-cygb19.tar.gz) +to /tmp +it()download +url(gas-980303-cygb19.tar.gz)(ftp://ftp.xraylith.wisc.edu/pub/khan/gnu-win32/cygwin32/b19-releases/gas-980303-cygb19.tar.gz) +to /tmp +it() read +url(INSTALL)(http://www.xraylith.wisc.edu/~khan/software/gnu-win32/egcs-cygb19-install.html) +) + +In a bash shell +itemize( +it() cd $CYGFS/include +it() mv g++ g++-b19 +it() cd $CYGFS +it() tar zxf /tmp/gas-980303-cygb19.tar.gz +it() tar zxf /tmp/egcs-1.0.2-cygb19.tar.gz +) + +You now have a compiler, assembler, linker combination capable of +compiling lilypond. + +subsubsect(bf(GNU)'s Internationalization Package) +lurl(http://www.gnu.org/order/ftp.html) + +Considering the origin of the major contributors of lilypond, this is a +must. However before we actually do a bf(GNU) build we have to +discuss some caveats of the Windows-NT OS in particular the naming of +executable files. tt(Windows-NT) uses a .exe extension where tt(UNIX) +does not use an extension. This causes a problem during the +installation portion of a bf(GNU) build. The following script can be +used to help alleviate this problem. + +verb( +#!/bin/sh + +realinstall=/gnuwin32/b19/H-i386-cygwin32/bin/install.exe +args='' +while [ $# -ne 0 ] +do + case $1 in + -*CHAR(41) args="$args $1" + ;; + + *CHAR(41) if [ -f $1.exe ]; then + args="$args $1.exe" + else + args="$args $1" + fi + ;; + esac + shift +done + +$realinstall $args +) + +I place this in script file(~/bin). Having said that here is how one +might build the em(gettext) package. + +itemize( +it() download the package from one of the ftp sites. +it() From a bash shell, cd ~/usr/src. +it() tar zxf gettext-0.10.tar.gz +it() cd gettext-0.10 +it() ./configure --prefix=$CYGFS/H-i386-cygwin32 +it() make +it() make install +) + +subsubsect(bf(GNU)'s roff package) +lurl(http://www.gnu.org/order/ftp.html) + +Following the instructions for em(gettext) package to download, build, +and install the em(groff) package. + +subsubsect(Python Programing Language) +lurl(http://www.python.org) + +Python is the scripting language of choice for a lilypond build. +There is a native tt(Windows-NT) self extracting binary distribution +available. I recommend installing Python in a directory that does +bf(not) have spaces. And then place it in the bash shell path by +editing $CYGFS/cygnus.bat. + +subsubsect(Perl Programing Language) +lurl(http://www.cpan.org) + +I believe perl is used in some legacy scripts to date. There is a +native tt(Windows-NT) self extracting binary distribution available. +I recommend installing Perl in a directory that does bf(not) have +spaces. And then place it in the bash shell path by editing +$CYGFS/cygnus.bat. + +subsubsect(Yodl Document Language) +lurl(http://www.digicash.com/~jan/yodl/) + +Yodl for documentation in Lilypond. It is currently being updated by +Jan Nieuwenhuizen. The development methodology of em(Yodl) as well as +em(LilyPond) relies on a the following directory structure: + +label(dirstr) +verb( +$HOME/usr/src/ + |-releases/ + |-patches/ + |-test/ +) + +description( + +dit(releases/) Downloaded and generated releases live here. For +example file(yodl-1.30.0.pre12.tar.gz) and +file(lilypond-0.1.81.tar.gz). + +dit(patches/) Downloaded and generated patches live here. For +example file(yodl-1.30.0.pre12.diff.gz) and +file(lilypond-0.1.81.diff.gz). + +dit(test/) This directory is used to generate releases and patches. + +) + +I strongly recommend using this file structure to build em(yodl) and +em(lilypond). + +itemize( +it() download the package from +lurl(http://www.digicash.com/~jan/yodl/) to +file($HOME/usr/src/releases). +it() From a bash shell, cd file($HOME/usr/src). +it() tar zxf releases/yodl-em().tar.gz +it() cd yodl-em() +it() ./configure --prefix=/gnuwin32/yodl-em() --srcdir=. +Since em(yodl) is under development I choose to install it in a +version rooted directory. This allows me to test newly released +versions without losing a known working version. +it() make +it() make install +it() place it in the bash shell path by editing $CYGFS/cygnus.bat. +For example: +verb(\ +rem yodl + +SET PATH=%PATH%;%LOCAL_ROOT%\yodl-1.30.0.pre12\bin + +) +) + +subsubsubsect(Yodl build CAVEAT) + +em(yodl) uses the em(stepmake) package for it's build methodology. +The build of em(stepmake) documentation will fail due to the fact +that em(yodl) is not yet installed. This is normal and shouldn't be a +problem. + +subsubsect(Lilypond) label(lilybuild) +itemize( +it() download the package from +lurl(http://www.cs.uu.nl/people/hanwen/lilypond/) to +file($HOME/usr/src/releases). +it() From a bash shell, cd file($HOME/usr/src). +it() tar zxf releases/lilypond-em().tar.gz +it() cd lilypond-em() +it() ./configure --prefix=/gnuwin32/lilypond-em() \ nl() + --srcdir=. \ nl() + --enable-tex-prefix=/gnuwin32/lilypond-em()/texmf \ nl() + --enable-tex-dir=/gnuwin32/lilypond-em()/texmf/tex \ nl() + --enable-mf-dir=/gnuwin32/lilypond-em()/texmf/mf nl() +Since em(lilypond) is under development I choose to install it in a +version rooted directory. This allows me to test newly released +versions without losing a known working version. +it() make +it() make install +it() place it in the bash shell path by editing $CYGFS/cygnus.bat. +For example: +verb(\ +rem lilypond + +SET PATH=%PATH%;%LOCAL_ROOT%\lilypond-0.1.80\bin + +) +) + +subsect(Maintaining lilypond on Windows-NT) label(maintain) + +If you have built em(lilypond) on tt(Windows-NT) using the directory +structure described link(previously)(dirstr) and the process described +in section ref(lilybuild), then you are ready to maintain +em(lilypond). It can not be that easy!? Well, there is one caveat. +Currently to use the file(stepmake/bin/release.py) and +file(stepmake/bin/package-diff.py) scripts you need to obtain/build a +version of em(python) that was built with bf(Cygnus) development kit. +The process I used is as follows: + +itemize( +it() obtain python source from lurl(http://www.python.org) +it() tar zxf /tmp/python-em().tar.gz +it() cd python-em() +it() configure --prefix=/gnuwin32/python-em() +it() edit toplevel file(Makefile) code(EXE) macro so it reads code(EXE=.exe) +it() make +it() make install +it() place it in the bash shell path by editing $CYGFS/cygnus.bat. +For example: +verb(\ +rem python + +SET PATH=%PATH%;%LOCAL_ROOT%\python-1.5.1\bin + +) +) + +I choose to build em(lilypond) with the standard tt(Windows-NT) +em(python) and use the bf(Cygnus) version for using the release +scripts. This way I can make sure the tt(Windows-NT) em(python) +version is able to build em(lilypond). Currently there are several +issues with the release scripts. Using code(os.link) and +code(os.system(set -x;...)) are to name a few. + +To generate a new release and patch you must use the directory +structure described link(previously)(dirstr). And follow the +instructions found in file(PATCH.txt). Editing +file(Documentation/AUTHORS.yo), file(VERSION), and file(NEWS) is also +required. When my edits are complete and tested I: + +itemize( +it() Edit file(config.make) and change em(python) path to the +bf(Cygnus) version: code(PYTHON=/gnuwin32/Python-1.5.1/bin/python). +it() make release +) + +The new release is placed in file(releases) directory and the patch is +placed in the file(patches) directory. I email the new patch to +email(gnu-music-discuss@gnu.org). More than one patch a day can be +generated by: + +itemize( +it() cd $HOME/usr/src +it() tar zxf releases/lilypond-em().em() +it() use your normal configure +it() make edits +it() Change file(VERSION) to increment em() +it() Change file(NEWS) +it() make release +) + +subsect(Running lilypond on Windows-NT) label(run) + +label(binary) + +Jeffrey B. Reed email(daboys@bga.com) + + +sect(RUNNING LILYPOND -- by Dominique Cretel) + +enumerate( +eit() First, I have download tha 0.1.64 version of Lilypond music software. + +eit() Then I extract it in a temp directory, and I move the directory +"lilypond-0.1.64" to the root directory of my D drive. + +eit() I go to the D:\Lilypond-0.1.64\tex directory to modify the +lilyponddefs.tex file (lines 75 and 84), and comment all +cmbx15 ans cmbx14, and replace them by cmbx12. + +eit() build a command file like this: +Note: I use MiKTeX to process the tex file generated. + +verb( +---begin ly2dvi.bat +echo off +set ver=0.1.64 +set path=%path%;d:\lilypond-%ver%\bin +lilypond -I d:\lilypond-%ver%\init %1 +rem *** pause + +set path=c:\texmf\miktex\bin;%path% +set TEXINPUTS=%TEXINPUTS%;d:\lilypond-%ver%\tex +set MFINPUTS=%MFINPUTS%;d:\lilypond-%ver%\mf +tex %1.tex +rem *** pause + +dvips %1.dvi +rem *** pause + +set path=%path%;d:\gstools\gsview +gsview32 %1.ps +---end ly2dvi.bat +) + +eit() execute lilypond by doing: +verb( +ly2ps silly +) +) + +Note: +nl() +You'll better have to put the SET commands lines in a separate command +file to avoid consumming each time environnment ressources. + +Bye,nl() +Dominique Cretel email(dominique.cretel@cfwb.be) + + +sect(PROBLEMS AND ANWSWERS) + +subsect(CONFIGURE AND INSTALL) +This is all to confusing. I have: +enumerate( +eit() downloaded file(/tmp/lilypond-0.1.78.tar.gz) +eit() verb( + cd ~/usr/src +) +eit() verb( + tar zxf /tmp/lilypond-0.1.78.tar.gz +) +eit() verb( + ./configure --prefix=/users/jeff/lilypond-0.1.78 \\\ + + --enable-tex-prefix=/users/jeff/lilypond-0.1.78/texmf \\\ + + --enable-tex-dir=/users/jeff/lilypond-0.1.78/texmf/tex \\\ + + --enable-mf-dir=/users/jeff/lilypond-0.1.78/texmf/mf +) +eit() verb( + make +) +eit() verb( + make install +) +) + +I did have a problem with lilypond.info. And I will look into this +further. After mending lilypond.info issue, it compiled and install +with no problems. + +I have 64 Meg of physical memory and 64 Meg of swap. Actually I need +to increase the swap space. If a memory problem is occuring it most +likely is during the link process of lilypond. There is a boat load +of objects to link. + +Jan the mount -b stuff is confussing to me. I have the entire system +mounted _without_ -b and only use -b on certain paths for programs +that create binary files that do not use O_BINARY open option. By the +way the midi file open is one of these cases, I need to look into +that. I have had no problems with this methodology. + + +subsect(DRIVE D:) + +The windows multiroot filesystem is an utterly broken concept. Please +do everything on one (urg) drive, C:. + +verb( +> configure +> creating cache ./config.cache +> [..] +> creating config.make +> creating config.hh +> cd: lstat /d failed +) + +Ok, this looks like another stupid windows problem. +You're working on 'drive D:', right? + +I can think of some solutions, but i don't know if they work; +i just had to do some work in windows some time ago. If you +have problems with this, please ask email(gnu-win32@cygnus.com). +I'll start with the simplest: +itemize( + it() do everything on drive C:, or + it() explicitely mount drive d:, work from there: + verb( + mkdir -p /mnt/d + mount d: /mnt/d + cd /mnt/d/lilypond-x.y.z/ + ) + it() make d:/ the root of cygnus, in cmd.exe/command.exe do: + verb( + umount / + mount d: / + ) +) + + +subsect(INSTALLING TOOLS) + +> - First I have installed Python (for win32) "Pyth151.exe" and "Configure +nl() +> don't find it. I had to put it in the path for configure find it? +nl() + +Yes, of course. It should be possible to have different versions of tools +installed (e.g. perl 4 and perl 5). The best way to tell people (or tools +like configure) which one to use is to put it in the path? + +Another small unix lesson: Where under dos each program installs itself +into a nice directory +verb( + c:\DosProgram\* +) +under unix, installation is handled centrally. Executables go in +file(/usr/bin) (or file(/usr/local/bin)), and are always in your path. + +subsect(VIRTUAL MEMORY) + +verb( +> 4. make -C lily don't work. I get an error (see below). I get several +> object files in the ./lily/out directory (34 files: 17 *.dep, 16 *.o, +> and 1 *.hh): +> [...] +> include/engraver-group.hh:35: virtual memory exhausted +> make: *** [out/bar-grav.o] Error 1 +> bash-2.01$ + +) + +Ok, so everything works now, there's only some error with one of the +source files. Lets see which one (and now the cc's now why they're +reading this :-) + +It looks like you've run out of memory. You should compile without +optimisation, gcc/egcs need a lot of memory for optimising. +Reconfigure without optimisation: +verb( + configure --disable-optimise +) +or edit file(config.make): +verb( + ## USER_CXXFLAGS = -g # -O no optimise! + USER_CXXFLAGS = -g +) + +There are some other things to look at: how much RAM do you have +(please say something > 8Mb :-)? Although it might be an egcs bug, +you should have a look at the size of your swap file. +For an US version of windows, you should find it here: +verb( + /start/settings/control-panel/system/performance/virtual-memory +) +you see, amongst others, these entries: +verb( + paging file size for selected drive: + + space-available: xx + initial-size: xx + maximum-size: xx + + total paging file size for all drives + + currently allocated: xx +) +Try to set: +verb( + initial-size: 64 + maximum-size: 128 +) +Make sure that: +itemize( +it() maximum-size >= 128 Mb +it() urrently-allocated + space-available >= 128 Mb +) + diff --git a/Documentation/TODO b/Documentation/TODO new file mode 100644 index 0000000000..060d0c342a --- /dev/null +++ b/Documentation/TODO @@ -0,0 +1,10 @@ +# Documentation/TODO + + * write toplevel info file + + * yodl2texinfo: automatic nodes and menus? + + * get rid of pod manpage layout legacy + + + diff --git a/Documentation/automake.urgh b/Documentation/automake.urgh deleted file mode 100644 index 4d811d14e3..0000000000 --- a/Documentation/automake.urgh +++ /dev/null @@ -1,97 +0,0 @@ - -WHAT'S WRONG WITH AUTOMAKE? - - -We have tried to use automake and found it to be inadequate for our -needs for several reasons. On the surface the shortcomings to -automake may seem bugs or "not-yet-completed" features. However, make -itself is broken, and any tool built on top of make is broken as well. - - -IRRITATIONS - -We'll start with the superficial irritations first: - - - there is no intrinsic support for wildcarding; Adding -support for wildcarding adds yet another layer to a top-heavy system. - -This may sound silly, but for a fast moving project, with 500 -sourcefiles, one does not want to administer a list of filenames by -hand: files are created, deleted and moved very often, and wildcarding -prevents that distributions miss files. - - - - Automake tries to cater for every taste of make. But anyone -who does more than the trivial (configure; make install) has to -install automake and GNU make anyway. Automake's universal make -support is good for tools that have to be highly portable, but you -have pay in ease of use and speed. - - - Automake is very much targeted at standard GNU packages that -are written in C (or C++) and come with info-pages. If you want to add -dependencies from TeX or METAFONT files you are out of luck. Ditto if -you have weird file types (.pod), weird programming languages, etc. - - - Dependency handling is unreliable in our experience. On -several occasions we had unexplainable errors, that went away after -doing a make distclean, and recompile. - - - It is slower, much slower than a tailor made solution. On -JCNs machine this is a diffence of 800% (17 minutes in stead of 2) for -every distribution made; this constitutes 45 minutes of irritation on -a hacking-night. - - - For a large project, a specialised Makefile system costs -relatively little extra effort. The extra effort pays itself back in speed -and control. - - - The Makefiles, Makefile.ins, and extensions constitute a -huge amount of state. We found it hard to reproduce bugs in automake -(Strictly spoken they aren't bugs, as we haven't diagnosed because we -couldn't reproduce them.) - - -FUNDAMENTAL PROBLEMS - -Many of the fundamental problems can be traced back to flaws in make: - - - make is not standardised. The only decent implementation is -GNU make, and GNU make is not widespread enough to require GNU make for -compiling GNU tools. - - - make does not have enough meta-ness: one cannot manipulate -dependencies and rules in make: they cannot be put in variables, -mapped at lists, etc. - -(In our tailor made system, we worked around this non-feature by using -generic include files as a stopgap function call.) - - - VPATH is a broken concept: programs should not think on -their own; thinking is the programmer's job. make should do exactly -as it is told, and make should enable easy formulation of these -commands commands. - -automake is tries to solve these problems by building on top of this -broken tool: an extra layer of complexity is added, with -self-modifying Makefiles, and different Makefile versions for -maintainer and user. - - -CONCLUSIONS - -We could be called "cheap" for complaining about the above points, -while not even filing decent bugreports. The reality is that we -ourselves are busy and that we don't find it amusing to hunt for and -fix bugs in a fix (automake) for a broken tool (make). - -It should also be emphasised that we still think that automake is a -good tool: it is excellent for small projects, and reasonable for big -projects that are fully "standard." However, for LilyPond, with its -many sourcefiles and many different filetypes we found it unwieldy. - -We hope that some day a better replacement for make comes along, so -that the gruesomeness of make and friends may die in oblivion. (*) - -(*) I personally would like to enter a Makefile as functional program, -whose execution caches function results on the disk as files. But I -shan't bother you further with my vaporware thoughts.. diff --git a/Documentation/disclaimer-w32.yo b/Documentation/disclaimer-w32.yo new file mode 100644 index 0000000000..b4873225a9 --- /dev/null +++ b/Documentation/disclaimer-w32.yo @@ -0,0 +1,9 @@ +If you have the Cygnus gnu-windows32 port of the GNU utils, LilyPond +will work in Windows-NT (/95/98?). + +We still recommend you use Unix. In particular, use GNU/Linux: We've +been there, and we've seen it happen several times. It is em(much) +easier and quicker to install RedHat Linux and LilyPond than to +obtain, compile and install all the necessary tools to compile and run +LilyPond on Windows. + diff --git a/Documentation/faq.pod b/Documentation/faq.pod deleted file mode 100644 index 93edc38a3c..0000000000 --- a/Documentation/faq.pod +++ /dev/null @@ -1,454 +0,0 @@ -=head1 NAME - -FAQ - GNU LilyPond FAQs - -=head1 DESCRIPTION - -Q: HELP! I'm stuck! - -A: Please read this document carefully. If you are still at loss, -send your questions to the B, and not to authors -directly. - -Note: relative paths are meant to be relative to the source directory - - -=head2 Installing - -Q: Wow, the webpages look really neat, but if I install the .exe file -on my windows 3.11 machine, it doesn't work. - -A: The DOS port is done with the cygnus W32 port of the GNU utils. It -does I work with windows 3.x; you need NT or w95 (this is not a -recommendation, btw. We recommend you use Unix, in particular, use -GNU/Linux) - -Q: I get all kinds of errors while compiling F - -A: LilyPond uses features of bison version 1.25. Please confirm that -you are using a version 1.25 or better, that is B bison -B<1.25>. Don't forget to do "make clean" after installing it. Don't -forget to remove the stale F as well. - -If the problem persists, then please mail me. - -Q: I upgraded by applying a patch, and now my configure/build breaks. - -A: Patches don't include automatically generated files, i.e. F - and files generated by F. Regenerate them yourself: - - autoconf - configure - -You might need to create some extra "out" directories. Do this -with - - make outdirs - -Q: Some of your neat scripts fail, what directories do you use: - -A: [This only applies if you don't do C, and develop out -of the source directory] I have a directory which contains all music -related stuff, - - ~/something/ - -which contains: - - lilypond/ # the directory as unpacked from the tarball - releases/ # directory for .tar.gz releases - patches/ # directory for patches between different releases - test/ # create tarballs and do diffs from this directory - -~/something/lilypond/bin is in the PATH, and contains symlinks to the -compiled executables. For some of the scripts to work, you have to set - - LILYPOND_SOURCEDIR=/home/myself/something/lilypond - -in the environment. - -If you don't use patches, you'd probably want to symlink - - lilypond -> lilypond-x.y.z - -=head2 Language: mudela - -Q: Why can't you type C<#c> in stead of C ? - -A: We think that C<#c> looks as if you are entering the symbols to -print (which you are not; remember, you're entering the musical -content in Mudela) - -We're not sure on leaving out this feature. If you think this is a -good idea, please let us know. - - -Q: Why do I have to type the accidentals to the note if I specified them? - -A: Take this example - - cis cis - -Independently of how it was written and what the current key was, you -would say that you are playing and reading "two C-sharp" notes. We -have tried to make the language somewhat context-free. Of course -sheet music is not context-free. Unfortunately, sheet music is also 2 -dimensional, and ASCII is not. - -Technically it would be feasible to have the Interpreting phase do -tricky things to add (or leave out) the accidentals, but we think that -it is impractical: it hampers the readability and portability of your -source, since you need LilyPond to fill in the details and actually -make sense of it. - - -Q: What is C anyway - -A: C is the dutch naming for C-sharp. The notes are named -a, b,.., g. The suffix -is means sharp, and -es flat. This system is -common in a number of languages (such as swedish, dutch, german.) -Certain other languages (such as English, French and Italian) just add -the word for "sharp" to the notename. - -We chose the Dutch system, because we're dutch. You are free to chose -whatever names you like; they are user definable. - -Q: I can type - - - -to make a few chords, but why do I have to type - - - < { a~ e } { c ~ g } > - -instead of - - - -to generate ties between the chords? - -A: When you type - - - -this is shorthand for - - < { a } { c } > < { e } { g } > - -Ties have to be confined to `voices', and the a and the e are in -different {} blocks, so they are in different voices. You should view -the desired construct as a "generalised chord" (two voices stacked -vertically). It might help you visualise this by using the following -formatting: - - < { a ~ e } - { c ~ g } - > - -Q: and where do the beams come into this picture? - -A: Beams are voice-wide, and may be entered in any part of the -voicegroup: - - < { [a ~ e] } { c ~ g } > - < { [a ~ e } { c ~ g] } > - < { [a ~ e] } { [c ~ g] } > - -These all give the same result. - -Q: Why are [] around the notes, and () inbetween? - -A: [] designate beams, a note can only be in one beam at the same -time. () is a slur, which connects notes. You need to be able to -specify - - a()a()a - - -Q: I want to insert some TeX commands - -A: You shouldn't: it's against LilyPond philosophy to have typesetting -commands in the mudela source. Moreover, this would be difficult. The -manner in which Request (the basic building blocks of mudela) are -translated into printable items is complex: it is not always possible -to associate one Request with one Item or Spanner. - -As a further notice, we want to move away from TeX (and perhaps -output PostScript or render to an X window too), so using TeX will -make sources non-portable at some time. - -=head2 Do you support ... - -Q: Do you support pop songs (chords, single staff, lyrics)? - -A: Yes, see the F example. - -Q: Do you support guitar chord diagrams? - -A: No, not yet. We ourselves don't play guitar, and don't know the -fine points of this notation. We would welcome anyone who could give -this a try. - -Q: Do you support TAB notation? - -A: No. The same as for the previous question goes, but TAB is a lot -more work than diagrams (TAB needs modification of Parser, Lexer, -Staff, Notehead, Stem code and all the code that creates these graphic -elements.) - -Q: Do you support multiple staff-sizes? - -A: Yes and no. At this time you can choose between 11, 13, 16, 19, -20, 23 and 20 pt staff-size. The sizes can't be changed per staff -(yet). Look at F for an example. - - -=head2 How do I .... - -Q: How do I change the TeX layout? - -A: See F, it has some comments. - -Q: How do I place lyrics under I of the staves in a score, as in -choral music. I can work out how to put lyrics for each line all under -the top line, or at the bottom but not between! - -A: You change the order lyrics and staves. You have to name all -staves (lyric and melodic), otherwise they will end up in the same -staff/lyricline - - - \score { - < \melodic \type Staff = "treble" \trebleMelody - \lyric \type Lyrics = "tlyrics" \trebtext - \type Staff = "bass" \melodic \bassMelody - \lyric \type Lyrics = "blyrics" \basstext - > - \paper { } - } - - -Q: How do I put more than one marking on a note. - -A: You can stack them - - c4^"a"^"b" - -or use spacing-notes to put markings at different horizontal positions - - < c1 - { s4\ff s4^"text" s4-\marcato s4 } - > - - -Q: How do I get bar numbers? - -A: See F. You have to uncomment some entries. To -do this `portably' you should redefine some engravers in your own -source files. Check out F. - -=head2 Development - -Q: Could you implement feature XXXX? It is really easy, just extend -the syntax to allow YYYY! - -A: If it is reasonable, I'll add XXXX to the TODO list. In general -finding a cute syntax (such as YYYY) isn't very hard. The complicated -issue how to adapt the internals to do XXXX. The parser is really a -simple front end to the complicated internals. - -Q: Can I join in on LilyPond development? How do I do this? - -A: LilyPond development is open for anyone who wants to join. We try -to use a Bazaar style development model for LilyPond, see -http://locke.ccil.org/~esr/writings/cathedral.html. This means: -frequent releases, everyone can send in a patch or do suggestions and -all development discussions are public. - -To be precise, discussions take place on the gnu-music-discuss mailing -list, which is open for subscription to everyone. - - -Q: I want to implement XXXX! Should I do this? - -A: There might be better ways of doing XXXX, so it's a good thing to -ask about this before you start hacking. If you want to keep in touch -with current developments, you should subscribe to the mailing list -(see the "links" section of the documentation). - - -Q: I want to implement XXXX! How should I do this? - -A: Your best bet of getting me to include code, is to present it as a -"fait accompli", ie., to send me a patch. - - -Q: I made some code, how do I get you to include it? - -A: Send in a patch: - - diff -urN old-file new-file > patch - -or - - diff -urN old-directory/ new-directory/ > patch - -Alternatively, you can use F. Don't forget to put -your name and e-mail address in the F file. - -Q: How do I learn the C++ code? - -A: The entry point is in C. Good luck. :-) - -Seriously, read, reread and reread internals and CodingStyle, and -just start anywhere. - -Anywhere? Well, most of the comment doco are in the header files, so -your best bet would be C. Some of the most -important data-structures are to be found in: - - - *request.hh - - engraver.hh - - performer.hh - - translator.hh - - score-elem.hh - - music.hh - - music-list.hh - - music-iterator.hh - - item.hh - - spanner.hh - - -Q: Why GPL? - -A: Yes. - - -Q: Your make system does not adhere to GNU coding standards, could you -please fix it? - -A: No. We have evaluated the standard GNU combination for compiling -programs (autoconf, automake, libtool) and found to be inadequate in -several respects. More detailed argumentation is included with -LilyPond (see F) - - -Q: Why do I need g++ >= 2.7? - -A: By using g++, GNU LilyPond is portable to all platforms which support -g++ (there are quite a few). Not having to support other compilers -saves us a I of trouble. - - -=head2 Running - - -Q: There are lots of warning messages for the printing, all -beginning with: - - dvilj4l: warning: Invalid keyword or value in \special - - -A: You should use dvips and ghostscript to print it: the slurs and -beams are PS C<\special> commands - - -Q: My symbols are all messed up after I upgraded, I get the wrong -symbols and dvi-checksum errors! - -A: We obviously mucked with the fonts in the upgrade. Remove I -previous fonts, including the F<.pk> and F<.tfm> fonts in -F. A script automating this has been included, see -F - - -Q: I don't get midi-output, even if I use B<-M>! - -A: Your \score should include a \midi block, eg. - - \score { - \melodic { c4 c g g } - \paper {} - \midi { - \output "myfile.mid"; - \tempo 4=70; - } - } - -The B<-M> option was added to LilyPond because processing the \paper -block is so slow. - -Q: A lot of musical stuff doesn't make it to the MIDI file (dynamics, -articulation, etc). - -A: The MIDI output was originally put in as a proof that MIDI could be -done, and as a method of proof"reading" the input. The MIDI support -is by no means finished. Patches appreciated. - -Q: I get - - can't load library 'libflower.so' - -A: You are using the dynamically compiled Flower library. Please set -LD_LIBRARY_PATH to a directory containing F - -=head2 DOZE - -Q: I downloaded the W95 port, and it doesn't match the website! - -A: The website is usually made from the latest snapshots. The W95 -binaries are only made every once in a while. They can lag several -versions behind the latest version. - -Q: I want a DOS/NT/W95 port. - -A.0: Reconsider. Try Linux. It's fun! - -A.1: Currently (0.0.27), GNU LilyPond (and flowerLib) compiles, -links and runs on Windows-nt, using Cygnus' gnu port (release b17.1). -I (JCN) only had to make a minor workaround for missing library calls. -Have a look at http://www.cygnus.com/gnu-win32. To make GNU LilyPond -type C. (I am not promising to maintain this platform, it is just -that when forced into doze, i'm sometimes too lazy to reboot.) - -A.2: I haven't had time to find a Linux GCC crosscompiler (I g++ -and libg++, mind you) to DOS/Windows (in rpm, please :-) - -A.3: If you are knowledgeable enough to make w32 compiles from time to -time, please do so! We want to keep away from w32 as far as possible. - -Q: I just love to blindly run the (sometimes bit stale) .exe's you distribute. -Why do i need cygwin.dll? - -A: It's all in this cut-n-paste: - -Minimalist GNU-Win32 Readme -version 0.1.3 -March 20, 1997 -Colin Peters - -[...] - -0.3 Fixes and Improvements - -[...] -In the "coming soon" category I have a version of the GNU Standard C++ -library ported to Mingw32. This means you can use iostreams, complex -numbers and all those neat STL (Standard Template Library) things -without needing the Cygwin DLL. I hope to put this port up for -downloading soon (along with the source of course). - -[...] - -3.2 C++ Support - -To add C++ Support to the above the following extra files are required: - -In C:\cygnus\H-i386-cygwin32\lib\gcc-lib\i386-cygwin32\cygnus-2.7.2- -961023: - cc1plus.exe - -Note that this does not include support for the standard C++ libraries -(only the C run time libraries) or for iostreams. That support is still -only available with the Cygwin32 API. - diff --git a/Documentation/faq.yo b/Documentation/faq.yo new file mode 100644 index 0000000000..968fbb6b3f --- /dev/null +++ b/Documentation/faq.yo @@ -0,0 +1,398 @@ +article(FAQ - GNU LilyPond FAQs)()()() + +DEFINEMACRO(question)(1)(subsect(ARG1)) + +sect(Miscellaneous) + +question(HELP! I'm stuck!) + +Please read this document carefully. If you are still at loss, +send your questions to the bf(mailing list), and not to authors +directly. + +Note: relative paths are meant to be relative to the source directory + +sect(Installing) + +question(Wow, the webpages look really neat, but if I install the .exe +file on my DOS/windows 3.11 machine, it doesn't work.) + +The DOS port is done with the cygnus gnu/windows32 port of the GNU utils. +It does em(not) work with windows 3.x; you need Windows-NT (95/98?). This +is not a recommendation, however. We recommend you use Unix, in +particular, use GNU/Linux. For further information see file(README-W32). + +question(I get all kinds of errors while compiling file(parser.cc)) + +LilyPond uses features of bison version 1.25. Please confirm that +you are using a version 1.25 or better, that is bf(GNU) bison +bf(1.25). Don't forget to do "make clean" after installing it. Don't +forget to remove the stale file(bison.simple) as well. + +If the problem persists, then please send a bug report to the mailing list. + +question(I upgraded by applying a patch, and now my configure/build breaks.) + +Patches don't include automatically generated files, i.e. +file(configure) and files generated by file(configure). Regenerate them +yourself: +verb( + autoconf + configure +) +You might need to create some extra "out" directories. Do this with +verb( + make outdirs +) +question(Some of your neat scripts fail, what directories do you use:) + +[This only applies if you don't do code(make install), and develop out +of the source directory] + +I have a directory which contains all our development projects +verb( + ~/usr/ +) + +which looks like file(/usr/) +verb( + bin/ + share + lib/ + share/ + src/ + + etc.... +) + +The directory file(~/usr/src/) contains something like +includefile(../stepmake/Documentation/layout.yo) +) + +~/usr/src/bin is in the PATH, and contains symlinks to the +compiled executables. + +question(Is there an emacs mode?) + +Yes. It is included with the source archive as mudela-mode.el. If +you have an rpm it is in /usr/doc/lilypond-X/. You have to install it +yourself. + +sect(Language: mudela) + +question(Why can't you type code(#c) in stead of code(cis) ?) + +We think that code(#c) looks as if you are entering the symbols to +print (which you are not; remember, you're entering the musical +content in Mudela) + + +question(Why do I have to type the accidentals to the note if I specified them?) + +Take this example +verb( + cis cis +) +Independently of how it was written and what the current key was, you +would say that you are playing and reading "two C-sharp" notes. We +have tried to make the language somewhat context-free. Of course +sheet music is not context-free. Unfortunately, sheet music is also 2 +dimensional, and ASCII is not. + +Technically it would be feasible to have the Interpreting phase do +tricky things to add (or leave out) the accidentals, but we think that +it is impractical: it hampers the readability and portability of your +source, since you need LilyPond to fill in the details and actually +make sense of it. + + +question(What is code(cis) anyway) + +code(cis) is the dutch naming for C-sharp. The notes are named +a, b,.., g. The suffix -is means sharp, and -es flat. This system is +common in a number of languages (such as swedish, dutch, german.) +Certain other languages (such as English, French and Italian) just add +the word for "sharp" to the notename. + +We chose the Dutch system, because we're dutch. You are free to chose +whatever names you like; they are user definable. + + +question(Why are [] around the notes, and () inbetween?) + +[] designate beams, a note can only be in one beam at the same +time. () is a slur, which connects notes. You need to be able to +specify +verb( + a()a()a +) + +question(I want to insert some TeX commands.) + +You shouldn't: it's against LilyPond philosophy to have typesetting +commands in the mudela source. Moreover, this would be difficult. +LilyPond uses TeX like a glorified output engine: the output consists +of (x,y) positions and symbols. You can only sensibly do TeX stuff in +the symbol string. You can access the symbol string easily for some +symbols (notably lyrics and code(^"text") commands). + + +sect(Do you support ...) + +question(Do you support pop songs (chords, single staff, lyrics)?) + +Yes, see the file(twinkle-pop) example. + + +question(Do you support guitar chord diagrams?) + +No, not yet. We ourselves don't play guitar, and don't know the +fine points of this notation. We would welcome anyone who could give +this a try. + +question(Do you support TAB notation?) + +No. The same as for the previous question goes, but TAB is a lot +more work than diagrams (TAB needs modification of Parser, Lexer, +Staff, Notehead, Stem code and all the code that creates these graphic +elements.) + +question(Do you support multiple staff-sizes?) + +Yes and no. At this time you can choose between 11, 13, 16, 19, +20, 23 and 20 pt staff-size. The sizes can't be changed per staff +(yet). Look at file(standchen.ly) for an example. + + +sect(How do I ....) + +question(How do I change the TeX layout?) + +See file(lilyponddefs.tex), it has some comments. Or use file(ly2dvi). + +question(How do I place lyrics under em(each) of the staves in a +score, as choral music. I can work out how to put lyrics for each line +all under the top line, or at the bottom but not between!) + +You change the order lyrics and staves. You have to name all +staves (lyric and melodic), otherwise they will end up in the same +staff/lyricline +verb( + \score { + < \melodic \type Staff = "treble" \trebleMelody + \lyric \type Lyrics = "tlyrics" \trebtext + \type Staff = "bass" \melodic \bassMelody + \lyric \type Lyrics = "blyrics" \basstext + > + \paper { } + } +) + +question(How do I put more than one marking on a note.) + +You can stack them +verb( + c4^"a"^"b" +) +or use spacing-notes to put markings at different horizontal positions +verb( + < c1 + { s4\ff s4^"text" s4-\marcato s4 } + > +) +This also works for crescendi, eg, +verb( + < c1 + { s4\< s2 \! s4 } + > +) + + +question(How do I get bar numbers?) + +See file(init/engraver.ly). You have to uncomment some entries. To +do this `portably' you should redefine some engravers in your own +source files. Check out file(init/rhythm.ly). + + +sect(Development) + +question(Could you implement feature XXXX? It is really easy, just extend +the syntax to allow YYYY!) + +If it is reasonable, I'll add XXXX to the TODO list. In general +finding a cute syntax (such as YYYY) isn't very hard. The complicated +issue how to adapt the internals to do XXXX. The parser is really a +simple front end to the complicated internals. + + +question(Can I join in on LilyPond development? How do I do this?) + +LilyPond development is open for anyone who wants to join. We try +to use a Bazaar style development model for LilyPond, see +lurl(http://locke.ccil.org/~esr/writings/cathedral.html.) This means: +frequent releases, everyone can send in a patch or do suggestions and +all development discussions are public. + +To be precise, discussions take place on the gnu-music-discuss mailing +list, which is open for subscription to everyone. + + +question(I want to implement XXXX! Should I do this?) + +There might be better ways of doing XXXX, so it's a good thing to +ask about this before you start hacking. If you want to keep in touch +with current developments, you should subscribe to the mailing list +(see the "links" section of the documentation). + + +question(Is there a GUI frontend? Should I start building one?) + +LilyPond currently has no graphical interface. The authors seriously +doubt if a simple-minded approach (dragging and dropping notes) is any +easier or quicker to use than mudela. But for composing a graphical +environment probably is indispensable. + +In any case email(Derek Wyatt)(wyatt@?.edu) is working on embryonal GTK +based editor. There also a GUI package RoseGarden that could be +extended to output mudela. + + +question(I want to implement XXXX! How should I do this?) + +Your best bet of getting me to include code, is to present it as a +"fait accompli", i.e., to send me a patch. + + +question(I made some code, how do I get you to include it?) + +Send in a patch: +verb( + diff -urN old-file new-file > patch +) +or +verb( + diff -urN old-directory/ new-directory/ > patch +) +Alternatively, you can use issue the command +verb( + make diff +) + +Don't forget to put your name and e-mail address +in the file(AUTHORS.pod) file, or you won't get credits :-] + + +question(How do I learn the C++ code?) + +The entry point is in code(main()). Good luck. :-) + +Seriously, read, reread and reread internals and CodingStyle, and +just start anywhere. + +Anywhere? Well, most of the comment doco are in the header files, so +your best bet would be code(less lily/include/*.hh). Some of the most +important data-structures are to be found in: +verb( + - *request.hh + - engraver.hh + - performer.hh + - translator.hh + - score-elem.hh + - music.hh + - music-list.hh + - music-iterator.hh + - item.hh + - spanner.hh +) + +question(Why GPL?) + +Yes. + + +question(Your make system does not adhere to GNU coding standards, could you +please fix it?) + +No. We have evaluated the standard GNU combination for compiling +programs (autoconf, automake, libtool) and found to be inadequate in +several respects. More detailed argumentation is included with +LilyPond's generic make package code(StepMake) +(see file(stepmake-x.x.x/Documentation/automake.urgh)) + +LilyPond already compiles into a different directory ((the different +directory is called out/, there is one in every source directory). +make distclean essentially reduces to file(rm -f out/*) in every directory + + +question(gdb crashes when I debug!) + +Upgrade to 4.17. + +question(Why do I need g++ >= 2.7?) + +By using g++, GNU LilyPond is portable to all platforms which support +g++ (there are quite a few). Not having to support other compilers +saves us a em(lot) of trouble. + + +sect(Running) + + +question(I use dvilj4, and there are lots of warning messages for the +printing) + +You should use dvips and ghostscript to print the code(dvi) output: +the slurs and beams are PS code(\special) commands. + + +question(My symbols are all messed up after I upgraded, I get the +wrong symbols and dvi-checksum errors!) + +We obviously mucked with the fonts in the upgrade. Remove em(all) +previous fonts, including the file(.pk) and file(.tfm) fonts in +file(/var/lib/texmf). A script automating this has been included, see +file(buildscripts/clean-fonts.sh). + + +question(The beams and slurs are gone if use the XDvi magnifying glass!?) + +The beams and slurs are done in PostScript. XDvi doesn't show +PostScript in the magnifying glass. Complain to the XDvi maintainers. + + +question(I don't get midi-output, even if I use bf(-M)!) + +Your \score should include a \midi block, eg. +verb( + \score { + \melodic { c4 c g g } + \paper {} + \midi { + \output "myfile.mid"; + \tempo 4=70; + } + } +) +The bf(-M) option was added to LilyPond because processing the \paper +block is so slow. + +question(A lot of musical stuff doesn't make it to the MIDI file, eg. +dynamics, articulation, etc.) + +The MIDI output was originally put in as a proof that MIDI could be +done, and as a method of proof"reading" the input. The MIDI support +is by no means finished. Patches appreciated. + +sect(Windows32) + +question(I downloaded the windows32 port, and it doesn't match the website!) + +The website is usually made from the latest snapshots. Binary releases, +in particular the windows32 binaries, are only made every once in a while. +They may lag several versions behind the latest version. + +question(But i want a native DOS/Windows-NT/95 port) + +Reconsider. Try Linux. It's fun! + diff --git a/Documentation/gnu-music.pod b/Documentation/gnu-music.pod deleted file mode 100644 index 97656daf6e..0000000000 --- a/Documentation/gnu-music.pod +++ /dev/null @@ -1,176 +0,0 @@ -=head1 NAME - -GNU Music project - manifesto - -=head1 DESCRIPTION - -Random ranting about the GNU Music project. - -=head1 GOAL - -Provide musicians with free software for - -=over 4 - -=item * - -composing - -=item * - -engraving - -=item * - -playing - -=item * - -sequencing - -=item * - -interchanging music - -=item * - -arranging - -=item * - -performing - -=item * - -Metacomposing - -=back - -These systems should encourage laymen to take up composing, in the -same way that GNU tools have created a whole new generation of -programmers. - -The public deserves free tools for composing and printing. - - -=head1 REQUIREMENTS - -Emacs and TeX serve as useful examples of what programs by the GMP -should be. - -=over 4 - -=item high-quality - -(cf TeX), from engraving point of view - -=item high-quality - -(cf Emacs) from software point of view: like all GNU software, it -should have no limits, be fast, etc. - -=item tweakable - -Printed music has a lot of styles, and special symbols. It may be -unfeasible to provide and maintain lots of code that is hardwired -into the system. The tools should be extensible/programmable like -Emacs and TeX - -=item easy to use. - -That is, for technical users (that can read a manual). The learning -curve should be as flat as possible but not at the expense of comfort -of use and power. - -=back - -=head1 COMPONENTS - -=over 4 - -=item A set of music fonts - -In development, the Feta font. - -=item A typesetting engine - -In development, included in LilyPond. -A system with rules on how to set properties of items to be printed -(up/down directions, breaking, dimensions, etc) -It should be suited to interactive typesetting (so, incremental -algorithms are needed) - -=item A display engine - -which can display clear notewriting in (say) an X-window - -Ideally the system should cooperate with the typesetting engine - -=item An ASCII language - -In development, LilyPond has a language. -Having an ASCII format which enables urtext, and easy sharing (via -mail and news forums) encourages cooperation and exchange of music. - -=item A printing engine - -In development, included in LilyPond. - -=item An input system - -The natural way to enter composed music is singing or playing it. The -GMP should have module which can take keyboard input or microphone -input and convert it to computer data. (microphone input would be -difficult) - -=item sequencing - -(have no clue about this) - -=item A scanning system - -Having a system which can produce mudela from printed scores, greatly -simplifies creating a collection of music - -=item A music-understanding system - -(difficult) A system to generate accompaniments, figured bass, -automatic accompaniment, etc. - -=item A performing system - -A system which can play credible performances of abstract music -representations. LilyPond has a bare bones system, but it cannot -(yet) be described as "credible". - -=back - -=head1 PROGRAMS - -=over 4 - -=item * - -A noninteractive typesetter, suited for batch jobs, and typesetting -existing music. This would couple the ASCII language, the printing -engine and the typesetting engine - -LilyPond is currently representing this section. - -=item * - -A GUI for composing. This would combine the display engine, the input -system and the typesetting engine. - -=item * - -Libraries for reading and writing various audio/music/notation -formats. - -=back - -Find sponsors. This project will take a long time, and in its infant -stages, having a hard and small core which does a lot of work, is more -efficient than lots of people doing small subprojects. Finanicial -support would be desirable. - diff --git a/Documentation/gnu-music.yo b/Documentation/gnu-music.yo new file mode 100644 index 0000000000..5e57da7854 --- /dev/null +++ b/Documentation/gnu-music.yo @@ -0,0 +1,108 @@ +article(GNU Music project - manifesto)(Han-Wen Nienhuys and Jan Nieuwenhuizen)() + +sect(Goal) + +Provide musicians with free software for + +itemize( +it()composing +it()engraving +it()playing +it()sequencing +it()interchanging music +it()arranging +it()performing +it()Metacomposing +) + +These systems should encourage laymen to take up composing, in the +same way that GNU tools have created a whole new generation of +programmers. + +The public deserves free tools for composing and printing. + + +sect(Requirements) + +Emacs and TeX() serve as useful examples of what programs by the GMP +should be. + +description( +dit(high-quality) + The software should be of high-quality from the application view. +For example, the notation should be high-quality from an engraving +point of view, like TeX() + +dit(high-quality) The software should be of high-quality point of + view, like all GNU software, it should have no limits, be fast, + etc. + +dit(tweakable) + Printed music has a lot of styles, and special symbols. It may be + unfeasible to provide and maintain lots of code that is hardwired + into the system. The tools should be extensible/programmable like + Emacs and TeX. + +dit(easy to use.) + That is, for technical users (that can read a manual). The learning + curve should be as flat as possible but not at the expense of comfort + of use and power. +) + +sect(Components) + +description( +dit(A set of music fonts) + In development, the Feta font. +dit(A typesetting engine) + In development, included in LilyPond. + A system with rules on how to set properties of items to be printed + (up/down directions, breaking, dimensions, etc) + It should be suited to interactive typesetting (so, incremental + algorithms are needed) +dit(A display engine) + which can display clear notewriting in (say) an X-window + Ideally the system should cooperate with the typesetting engine +dit(An ASCII language) + In development, LilyPond has a language. + Having an ASCII format which enables urtext, and easy sharing (via + mail and news forums) encourages cooperation and exchange of music. +dit(A printing engine) + In development, included in LilyPond. +dit(An input system) + The natural way to enter composed music is singing or playing it. The + GMP should have module which can take keyboard input or microphone + input and convert it to computer data. (microphone input would be + difficult) +dit(sequencing) + (have no clue about this) +dit(A scanning system) + Having a system which can produce mudela from printed scores, greatly + simplifies creating a collection of music +dit(A music-understanding system) + (difficult) A system to generate accompaniments, figured bass, + automatic accompaniment, etc. +dit(A performing system) + A system which can play credible performances of abstract music + representations. LilyPond has a bare bones system, but it cannot + (yet) be described as "credible". +) + +sect(Programs) + +itemize( +it()A noninteractive typesetter, suited for batch jobs, and typesetting + existing music. This would couple the ASCII language, the printing + engine and the typesetting engine + LilyPond is currently representing this section. +it()A GUI for composing. This would combine the display engine, the input + system and the typesetting engine. +it()Libraries for reading and writing various audio/music/notation + formats. +) + +Find sponsors. This project will take a long time, and in its infant +stages, having a hard and small core which does a lot of work, is more +efficient than lots of people doing small subprojects. Finanicial +support would be desirable. + diff --git a/Documentation/index.pod b/Documentation/index.pod deleted file mode 100644 index 0d3cc364e5..0000000000 --- a/Documentation/index.pod +++ /dev/null @@ -1,187 +0,0 @@ -=head1 NAME - -The Documentation of LilyPond -- the GNU Project music typesetter - -=head1 DESCRIPTION - -Note: These pages are created from the latest B -of LilyPond. You can look at the bottom if you want to know which -version this was. - - -=head2 Documentation: Introduction - -=over 4 - -=item * - -The announcement of 0.1 - - - -=item * - -DEDICATION - - -=item * - -FAQs - - -=item * - -The installation instructions. - - -=back - -=head2 Why: Background Information - -=over 4 - -=item * - -Design criteria - - -=item * - -The GNU Music project - - -=item * - -Mutopia -- Music To the People - - -=item * - -The lilypond logo (Big, format: .gif) - - -=item * - -The lilypond logo (medium size, format: .gif) - - - -=back - -=head2 Documentation: manuals - - -=over 4 - -=item * - -TeX documents about LilyPond - - -=item * - -Manual pages - - -=item * - -Musical vocabulary. - - -=back - -=head2 The program - -=over 5 - -=item * - -The TODO list. - - -=item * - -The Change log - - -=item * - -internal structures. - - -=item * - -The coding standards of the lilypond project. - - -=item * - -AUTHORS - - -=back - -=head2 Links - -=over 5 - -=item * - -Papers, books and online-resources on music typesetting - - -=item * - -Other packages for printing music. - - -=item * - -B LilyPond and other interesting links - - - - -=back - - diff --git a/Documentation/index.yo b/Documentation/index.yo new file mode 100644 index 0000000000..b9066871c0 --- /dev/null +++ b/Documentation/index.yo @@ -0,0 +1,66 @@ +DEFINEMACRO(tops)(0)(../topdocs/DOEXPAND(outdir)) +DEFINEMACRO(pics)(0)(../pictures/DOEXPAND(outdir)) + +nsect(NAME) + +The Documentation of LilyPond -- the GNU Project music typesetter + +nsect(DESCRIPTION) + +Note: These pages are created from the latest bf(development snapshots) +of LilyPond. You can look at the bottom if you want to know which +version this was. + + +nsubsect(Documentation: Introduction) + +itemize( +it()url(The announcement of 0.1)(ANNOUNCE-0.1.html) +it()url(DEDICATION)(DEDICATION.html) +it()url(FAQs)(faq.html) +it()url(The README)(DOEXPAND(tops)/README.html) +it()url(The installation instructions)(DOEXPAND(tops)/INSTALL.html) +it()url(But i'm using Windows, am i concerned now?)(README-W32.html) +) + +nsubsect(Why: Background Information) + +itemize( +it() url(Design criteria)(MANIFESTO.html) +it()url(The GNU Music project)(gnu-music.html) +it()url(Mutopia -- Music To the People)(mutopia.html) +it()url(The lilypond + logo (Big, format: .gif))(DOEXPAND(pics)/lelieblond.gif) +it()url(The lilypond + logo (medium size, format: .gif))(DOEXPAND(pics)/lelie_logo.gif) +) + +nsubsect(Documentation: manuals) + + +itemize( +it()url(Mudela)(../tex/DOEXPAND(outdir)/mudela.html) +it()url(TeX documents about LilyPond)(../tex/DOEXPAND(outdir)/index.html) +it()url(Manual pages)(../man/DOEXPAND(outdir)/index.html) +it()url(Musical vocabulary)(../tex/DOEXPAND(outdir)/vocabulary.html) +) + +nsubsect(The program) + +itemize( +it()url(The TODO list)(TODO.html) +it()url(The Change log)(NEWS.html) +it()url(About internal structures)(internals.html) +it()url(The coding standards of the lilypond project)(CodingStyle.html) +it()url(The Authors)(DOEXPAND(tops)/AUTHORS.html) +it()url(Sending and applying Patches)(DOEXPAND(tops)/PATCHES.html) +) + +nsubsect(Links) + +itemize( +it()url(Papers, books and online-resources on music typesetting) +(../tex/DOEXPAND(outdir)/index.html) +it()url(Other packages for printing music)(../tex/DOEXPAND(outdir)/index.html) +it()url(bf(download) LilyPond and other interesting links)(links.html) +) diff --git a/Documentation/internals.pod b/Documentation/internals.pod deleted file mode 100644 index c3653bc51d..0000000000 --- a/Documentation/internals.pod +++ /dev/null @@ -1,319 +0,0 @@ -=head1 NAME - -LilyPond internals - doco to the internals of GNU LilyPond - -=head1 DESCRIPTION - -This page documents some aspects of the internals of GNU LilyPond. Some of -this stuff comes from e-mail I wrote, some from e-mail others wrote, -some are large comments taken away from the headers. This is why this -page may be a little incoherent. - -You should use doc++ to take a peek at the sources. - -This should become a Hacking-HOWTO. If you find any confusing stuff -here, let me know. I am a hacker, and don't spend enough time doccing -what I write. (Most stuff here which refers to the code is slightly outdated) - -If you finally have mastered some internal piece of lily, your -explanation could be added here. - -=head1 OVERVIEW - -GNU LilyPond is a "multi-pass" system. The different passes have been -created so that they do not depend on each other. In a later stage -some parts may be moved into libraries, or seperate programs, or they -might be integrated in larger systems. - -=over 4 - -=item Parsing: - -No difficult algorithms. The .ly file is read, and converted to a list -of C, which each contain C and paper/midi-definitions. - -=item Creating elements - -The music is walked column by column. The iterators which do the -walking report the Request to Translators which use this information -to create elements, either MIDI or "visual" elements. The translators -form a hierarchy; the ones for paper output are Engravers, for MIDI -Performers). - -The translators swallow requests, create elements, broadcast them to -other translators on higher or same level in the hierarchy: - -The stem of a voice A is broadcast to the staff which contains A, but -not to the noteheads of A, and not to the stems, beams and noteheads -of a different voice (say B) or a different staff. The stem and -noteheads of A are coupled, because the the Notehead_engraver -broadcasts its heads, and the Stem catches these. - -The engraver which agrees to handle a request decides whether to to -honor the request, ignore it, or merge it with other requests. Merging -of requests is preferably done with other requests done by members of -the same voicegroups (beams, brackets, stems). In this way you can put -the voices of 2 instruments in a conductor's score so they make chords -(the Stem_reqs of both instruments will be merged). - -=item Prebreaking - -Breakable stuff (eg. clefs and bars) are copied into pre and postbreaks. - -=item Preprocessing - -Some dependencies are resolved, such as the direction of stems, beams, -and "horizontal" placement issues (the order of clefs, keys etc, -placement of chords in multi-voice music), - -=item Break calculation: - -The lines and horizontal positions of the columns are determined. - -=item Breaking - -Through some magical interactions with Line_of_score and Super_elem -(check out the source) the "lines" are produced. - -All other spanners can figure across which lines they are spread. If -applicable, they break themselves into pieces. After this, each piece -(or, if there are no pieces, the original spanner itself) throws out -any dependencies which are in the wrong line. - -=item Postprocesing: - -Some items and all spanners need computation after the PCol positions -are determined. Examples: slurs, vertical positions of staffs. - -=item Output paper - -=back - -=head1 INTERNALS - -This chapter deals with the internals of Mudela. - -=head2 Requests - -As you can see, most information is stored in the form of a request. -In music typesetting, the user might want to cram a lot more symbols -on the paper than actually fits. To reflect this idea (the user asks -more than we can do), the container for this data is called Request. - -In a lot of other formats this would be called an 'Event' - -=over 4 - -=item C - -Checks during music processing if start of this voice element -coincides with the start of a measure. Handy to check if you left out -some voice elts. - -=item C - -LilyPond has to decide if the ball should be hanging left or -right. This influences the horizontal dimensions of a column, and this -is why request processing should be done before horizontal spacing. - -Other voices' frivolities may cause the need for accidentals, so this -is also for the to decide. The engraver can decide on positioning based on -ottava commands and the appropriate clef. - -=item C - -Typeset a rest. - -=item C - -This type of request typically results in the creation of a C - -=item C - -Start/stop a beam. - -Engraver has to combine this request with the stem_request, since the -number of flags that a stem wants to carry will determine the -number of beams. - -=item C - -Each dynamic is bound to one note (a crescendo spanning multiple -notes is thought to be made of two "dynamics": a start and a stop). -Dynamic changes can occur in a smaller time than the length of its -note, therefore fore each C request carries a time, measured -from the start of its note. - -=head2 Voice groups - -Voice group is a (time-dependent) collection of voices which share -some characteristics (slurs, stems) at some time. - -=head1 Request_engraver - -In the previous section the idea of Request has been explained, but -this only solves one half of the problem. The other half is -deciding which requests should be honored, which should merged with -other requests, and which should be ignored. Consider this (pseudo)input - - < % chord - \music { [c() c] } - \music { [e() e] } - > - -Both the c and e are part of a chord (they are in the same -Voice_group), so they should share the beams, and the two [ ] pairs -should be merged. The slurs OTOH are specific for each voice, so they -should not be shared. - -The judge in this "allocation" problem a set of broker. It uses the -C to do most of the work. For each request -C queries so-called Cs if they want -to accept a request eg, the C will accept -Cs, and turn down Cs. If the Music_iterator -cannot find a engraver that wants the request, it is junked (with a -warning message). - -After all requests have been either assigned, or junked, the Engraver -will process the requests (which usually means creating an C or -C). If a C creates something, it tells -If all requests have been processed, then each Engraver is notified -of any created Score_element, via a broadcasting system. - -=head2 example: - - c4 - -produces: - - note_request (duration 1/4) - stem_request (duration 1/4) - -note_request will be taken by a C, stem_request -will be taken by a C. C creates -a C, C creates a C. Both announce -this to the Staff_engraver. Staff_engraver will tell -C about the C, which will add the -C to the C it just created. - -To decide on merging, several engravers have been grouped. Please -check F. - - -=head1 ITEMS and SPANNERS - -The symbols that are printed, are generated by items and spanners -(staff-elements). An item has one horizontal position, whereas a -spanner spans several columns. - -=head1 DEPENDENCIES - -In music symbols depend on each other: the stems of a beam should -point in the same direction as the beam itself, so the stems of a beam -depend on the beam. In the same way do scripts depend on the direction -of the stem. To reflect this, LilyPond has the notion of dependency. -It works in the same fashion that C uses to build programs: before -a stem is calculated, its dependencies (the beam) should be -calculated. Before a slur is calculated, its dependencies (stems, noteheads) -should be calculated. - -=head1 BREAKING - -So what is this PREBREAK and POSTBREAK stuff? - -Let's take text as an example. In German some compound -words change their spelling if they are broken: "backen" becomes -"bak-ken". TeX has a mechanism to deal with this, you would define -the spelling of "backen" in TeX in this way - - \discretionary{bak-}{ken}{backen} - -These 3 arguments are called "prebreak", "postbreak" and "nobreak" -text. - -The same problem exists when typesetting music. If a line of music is -broken, the next line usually gets a clef. So in TeX terms, the clef -is a postbreak. The same thing happens with meter signs: Normally the -meter follows the bar. If a line is broken at that bar, the bar along -with the meter stays on the "last" line, but the next line also gets a -meter sign after the clef. Using the previous notation, - - \discretionary{bar meter}{clef meter}{ bar meter } - -In GNU Lilypond, we have the same concepts (and the same -terminology). Each (nonrhythmic) symbol is typeset in a nonrhythmic column -At a breakpoint, multiple symbols are printed; symbols to be printed -if the line is not broken, symbols to appear on the previous line, and -on the next line if it is broken. - -=head1 SPACING - - -Some terminology: I call a vertical group of symbols (notes) which -start at the same time a "column". Each line of a score has notes in -it, grouped in columns. The difference in starting time between those -columns makes it possible to determine ideal distances between those -columns. - -Example: - - time -----> - - cols: col1 col2 col3 col4 - - - voice1 1 1 - - voice2 2 2 2 2 - - - (1 is a whole note, 2 a half note.) - - time_difference (col1 , col2) = 0.5 wholes, - time_difference (col1 , col3) = 1 wholes, - time_difference (col2 , col3) = 0.5 wholes, - etc. - -these differences are translated into ideal distances - - distance (col1,col2) = 10 pt - distance (col1,col3) = 14.1 pt - distance (col2,col3) = 10 pt - etc. - -as you can see, these distance are conflicting. So instead of -satisfying all those ideals simultaneously, a compromise is sought. - -This is Columbus' egg: GNU LilyPond attaches "springs" to each -column-pair. each spring has an equilibrium-position which is equal to -the above mentioned distance, so - -spring (col1, col2) and spring (col2,col3) try to push column 1 -and 3 away (to a distance of 20pt) from each other, whereas the spring -between col 1 and col 3 tries to pull those two together (to a -distance of 14.1 pt). The net result of this pushing and pulling is an -equilibrium situation (the pushing cancels the pulling), which can be -calculated as the solution of Quadratic program: it is the solution -with minimum potential energy, for you physicists out there. - -This algorithm for doing one line, gives a "badness" parameter for -each line (the potential energy). Now one can use TeX's algorithm for -making paragraphs (using this new version of "badness"): one should -try to minimise the overall badness of a paragraph. GNU LilyPond also -uses the concept of pre- and post-breaks. - -(actually, it is a bit more complicated: each column also has a -minimum distance to other columns, to prevent symbols from running -into symbols of other columns.) - - -=head1 SPACING 2 - - -This of course does not solve the problem of generating the -springs. This is an area that needs a lot of work, and the optimal -solution to find is not of a mathematical nature. - -Gourlay's solution is used. - - diff --git a/Documentation/internals.yo b/Documentation/internals.yo new file mode 100644 index 0000000000..4cb8d0aae3 --- /dev/null +++ b/Documentation/internals.yo @@ -0,0 +1,288 @@ +article(LilyPond internals)(Han-Wen Nienhuys)() + +This documents some aspects of the internals of GNU LilyPond. Some of +this stuff comes from e-mail I wrote, some from e-mail others wrote, +some are large comments taken away from the headers. This page may be +a little incoherent. Unfortunately, it is also quite outdated. A +more thorough and understandable document is in the works. + +You should use code(doc++) to take a peek at the sources. + + +sect(OVERVIEW) + +GNU LilyPond is a "multi-pass" system. The different passes have been +created so that they do not depend on each other. In a later stage +some parts may be moved into libraries, or seperate programs, or they +might be integrated in larger systems. + +description( + +dit(Parsing:) + +No difficult algorithms. The .ly file is read, and converted to a list +of code(Scores), which each contain code(Music) and paper/midi-definitions. + +dit(Interpreting music) + +The music is walked column by column. The iterators which do the +walking report the Request to Translators which use this information +to create elements, either MIDI or "visual" elements. The translators +form a hierarchy; the ones for paper output are Engravers, for MIDI +Performers. + +The translators swallow requests, create elements, broadcast them to +other translators on higher or same level in the hierarchy: + +The stem of a voice A is broadcast to the staff which contains A, but +not to the noteheads of A, and not to the stems, beams and noteheads +of a different voice (say B) or a different staff. The stem and +noteheads of A are coupled, because the the Notehead_engraver +broadcasts its heads, and the Stem catches these. + +The engraver which agrees to handle a request decides whether to to +honor the request, ignore it, or merge it with other requests. Merging +of requests is preferably done with other requests done by members of +the same voicegroups (beams, brackets, stems). In this way you can put +the voices of 2 instruments in a conductor's score so they make chords +(the Stem_reqs of both instruments will be merged). + +dit(Prebreaking) + +Breakable stuff (eg. clefs and bars) are copied into pre and +postbreaks. + +dit(Preprocessing) + +Some dependencies are resolved, such as the direction of stems, beams, +and "horizontal" placement issues (the order of clefs, keys etc, +placement of chords in multi-voice music), + +dit(Break calculation:) + +The lines and horizontal positions of the columns are determined. + +dit(Breaking) + +Through some magical interactions with Line_of_score and Super_elem +(check out the source) the "lines" are produced. + +All other spanners can figure across which lines they are spread. If +applicable, they break themselves into pieces. After this, each piece +(or, if there are no pieces, the original spanner itself) throws out +any dependencies which are in the wrong line. + +dit(Postprocesing:) + +Some items and all spanners need computation after the Paper_column +positions are determined. Examples: slurs, vertical positions of +staffs. + +dit(Output paper) + +) + +sect(mudela) + +Most information is stored in the form of a request. In music +typesetting, the user might want to cram a lot more symbols on the +paper than actually fits. To reflect this idea (the user asks more +than we can do), the container for this data is called Request. + +In a lot of other formats this would be called an 'Event' + +description( +dit(code(Barcheck_req)) + Checks during music processing if start of this voice element + coincides with the start of a measure. Handy to check if you left out + some voice elts. +dit(code(Note_req)) + LilyPond has to decide if the ball should be hanging left or + right. This influences the horizontal dimensions of a column, and this + is why request processing should be done before horizontal spacing. + Other voices' frivolities may cause the need for accidentals, so this + is also for the to decide. The engraver can decide on positioning based on + ottava commands and the appropriate clef. +dit(code(Rest_req)) + Typeset a rest. +dit(code(Span_req)) + This type of request typically results in the creation of a code(Spanner) +dit(code(Beam_req)) + Start/stop a beam. + Engraver has to combine this request with the stem_request, since the + number of flags that a stem wants to carry will determine the + number of beams. +dit(code(Dynamic)) + Each dynamic is bound to one note (a crescendo spanning multiple + notes is thought to be made of two "dynamics": a start and a stop). + Dynamic changes can occur in a smaller time than the length of its + note, therefore fore each code(Dynamic) request carries a time, measured + from the start of its note. +) + +sect(Request_engraver) + +In the previous section the idea of Request has been explained, but +this only solves one half of the problem. The other half is deciding +which requests should be honored, which should merged with other +requests, and which should be ignored. Consider this input + +verb( + \type Staff < % chord + { \meter 2/4; [c8 c8] } + {\meter 2/4; [e8 e8] } + > +) + +Both the cs and es are part of a staff (they are in the same +Voice_group), so they should share meters, but the two [ ] pairs +should be merged. + +The judge in this "allocation" problem a set of brokers: the requests +are transmitted to so-called engravers which respond if they want to +accept a request eg, the code(Notehead_engraver) will accept +code(Note_req)s, and turn down code(Slur_req)s. If the Music_iterator +cannot find a engraver that wants the request, it is junked (with a +warning message). + +After all requests have been either assigned, or junked, the Engraver +will process the requests (which usually means creating an code(Item) +or code(Spanner)). If a code(Request_engraver) creates something, it +tells the enclosing context. If all items/spanners have been created, +then each Engraver is notified of any created Score_element, via a +broadcasting system. + +nsubsect(example:) + +verb( + c4 +) + +produces: + +verb( + Note_request (duration 1/4) + Stem_request (duration 1/4) +) + +Note_request will be taken by a code(Notehead_engraver), stem_request +will be taken by a code(Stem_beam_engraver). code(Notehead_engraver) +creates a code(Notehead), code(Stem_beam_engraver) creates a +code(Stem). Both announce this to the Staff_engraver. Staff_engraver +will tell code(Stem_beam_engraver) about the code(Notehead), which +will add the code(Notehead) to the code(Stem) it just created. + +To decide on merging, several engravers have been grouped. Please +check file(init/engraver.ly). + + +sect(ITEMS and SPANNERS) + +The symbols that are printed, are generated by items and spanners +(staff-elements). An item has one horizontal position, whereas a +spanner spans several columns. + +sect(DEPENDENCIES) + +In music symbols depend on each other: the stems of a beam should +point in the same direction as the beam itself, so the stems of a beam +depend on the beam. In the same way do scripts depend on the direction +of the stem. To reflect this, LilyPond has the notion of dependency. +It works in the same fashion that code(make) uses to build programs: +before a stem is calculated, its dependencies (the beam) should be +calculated. Before a slur is calculated, its dependencies (stems, +noteheads) should be calculated. + +sect(BREAKING) + +So what is this PREBREAK and POSTBREAK stuff? + +Let's take text as an example. In German some compound +words change their spelling if they are broken: "backen" becomes +"bak-ken". TeX has a mechanism to deal with this, you would define +the spelling of "backen" in TeX in this way + + \discretionary{bak-}{ken}{backen} + +These 3 arguments are called "prebreak", "postbreak" and "nobreak" +text. + +The same problem exists when typesetting music. If a line of music is +broken, the next line usually gets a clef. So in TeX terms, the clef +is a postbreak. The same thing happens with meter signs: Normally the +meter follows the bar. If a line is broken at that bar, the bar along +with the meter stays on the "last" line, but the next line also gets a +meter sign after the clef. Using the previous notation, + + \discretionary{bar meter}{clef meter}{ bar meter } + +In GNU Lilypond, we have the same concepts (and the same +terminology). Each (nonrhythmic) symbol is typeset in a nonrhythmic column +At a breakpoint, multiple symbols are printed; symbols to be printed +if the line is not broken, symbols to appear on the previous line, and +on the next line if it is broken. + +sect(SPACING) + + +Some terminology: I call a vertical group of symbols (notes) which +start at the same time a "column". Each line of a score has notes in +it, grouped in columns. The difference in starting time between those +columns makes it possible to determine ideal distances between those +columns. + +Example: + +verb( + time -----> + + cols: col1 col2 col3 col4 + + + voice1 1 1 + + voice2 2 2 2 2 + + + (1 is a whole note, 2 a half note.) + + time_difference (col1 , col2) = 0.5 wholes, + time_difference (col1 , col3) = 1 wholes, + time_difference (col2 , col3) = 0.5 wholes, + etc. +) + +these differences are translated into ideal distances + +verb( + distance (col1,col2) = 10 pt + distance (col1,col3) = 14.1 pt + distance (col2,col3) = 10 pt + etc. +) + +as you can see, these distance are conflicting. So instead of +satisfying all those ideals simultaneously, a compromise is sought. + +This is Columbus' egg: GNU LilyPond attaches "springs" to each +column-pair. each spring has an equilibrium-position which is equal to +the above mentioned distance, so + +spring (col1, col2) and spring (col2,col3) try to push column 1 +and 3 away (to a distance of 20pt) from each other, whereas the spring +between col 1 and col 3 tries to pull those two together (to a +distance of 14.1 pt). The net result of this pushing and pulling is an +equilibrium situation (the pushing cancels the pulling), which can be +calculated as the solution of Quadratic program: it is the solution +with minimum potential energy, for you physicists out there. + +This algorithm for doing one line, gives a "badness" parameter for +each line (the potential energy). Now one can use TeX's algorithm for +making paragraphs (using this new version of "badness"): one should +try to minimise the overall badness of a paragraph. GNU LilyPond also +uses the concept of pre- and post-breaks. + +(actually, it is a bit more complicated: each column also has a +minimum distance to other columns, to prevent symbols from running +into symbols of other columns.) + diff --git a/Documentation/language.pod b/Documentation/language.pod deleted file mode 100644 index 0757778d80..0000000000 --- a/Documentation/language.pod +++ /dev/null @@ -1,135 +0,0 @@ -=head1 NAME - -language.pod -- state of the art mudela-vapourware. - -=head1 DESCRIPTION - -[this document is slowly merged into the mudela doco, as the -implementation progresses. If you want to see our previous musings, -take out an old version of lilypond] - -=head1 REQUIREMENTS - -=head1 CONCRETE PROPOSALS - - -=head1 Decisions (Sat 1997-3-15, dommelpijpje no21) - - \extract{ \from 2:3*4 \to 5 oboe } - -=head1 THOUGHTS - -=head2 Typing - -It is difficult to make mistakes with typing now because you have to -tell LilyPond what it is dealing with - - staff { identifier } - -versus - - staff { music { identifier } } - -I'm not sure on dropping this, I'm afraid it will make the language -less legible. Technically, dropping it is not very difficult (it will -introduce slight parser-source bloat) - -What if the staff is extended to have some more blocks, all of which -can be declared? Like the score now: - - score { - a_staff_id - a_midi_id - a_paper_id - a_command_id - } - -This will only be readable if the Mudela-user rigidly uses hungarian, -which he/she won't. - -Of course \key should take a \notename. In fact, I think we should -program the note intervals (which are now hardcoded for midi purposes) -To allow adaptation to other scales. - -As simple fix, we might do key declarations: - - \keybes= \key { bes es } - - \key{\keybes} - - - -=head2 Requests - -I want to give the user some access to the internals. Technically, -engravers/performers will happily typeset voices which mix lyrics and -notes, which combine stem requests and lyricreqs. I want to have a - - \request { melodic name = 5, acc = -10 - rhythmic ball=4 dots 2, lyric = "foobar" } - -type of syntax. This is the most flexible input format possible, since -any valid LilyPond input can be made. This strongly implies tying -mudela to LilyPond. That I don't mind, but it hampers -portability. Suppose some commercial systems want to read mudela too. - -=head2 Command placement: - - -=head2 Volta - -uhh? - -=head2 Filtering - -This is a idea of mine: we could filter some request types from -voices, - -eg: - - \mel1 = \music { c-. d-. e-. f-. \meter {2*4} g-. a-. b.- c-. } - - \m1 = \filter { "script_req" \mel1 } - \m2 = \filter { "command_req" \mel1 } - \m3 = \filter { "melodic_req" \mel1 } - \m3 = \filter { ("rhythmic_req") && (!"lyric_req") && - ("stem_req" || "beam_req") \mel1 } - % syntax needs change. Clash with () slur? - - \mel2 = \music { c c g g a a g2 } - - \combined = \merge { \m1, \mel2 } - -This means m1 contains the scripts, of \mel, \m2 only the meter -command surrounded by (essentially) some skips, and \m3 the notes -without scripts or meters. This could be a solution to the "command in -music vs. command with skip". - -Combined with merging of requests, this would be a powerful tool. In -this example \combined is a combination of melody mel2 and the accents -of \mel1. - -This idea is for advanced users, but it would come in handy in urtext -editions: - - include "mozart-horn.ly" - - \m1 = \merge { \urmozart + \dennisbrain_interpretation } - \m2 = \merge { \urmozart + \barrytuckwell_interpretation } - - -=head2 Proposed operators: - -Just ideas: - - || && ! filter syntax - -=head2 Quoting - -Difficult. Hmm... - - \oboe = \music { ........................ } - - \oboefragment = \extract { \from 5*2 \to 6*2 \music { \oboe } } - - diff --git a/Documentation/lelie_icon.xpm b/Documentation/lelie_icon.xpm deleted file mode 100644 index 0ad7f75dc1..0000000000 --- a/Documentation/lelie_icon.xpm +++ /dev/null @@ -1,141 +0,0 @@ -/* XPM */ -static char *noname[] = { -/* width height ncolors chars_per_pixel */ -"50 71 63 2", -/* colors */ -"`` c #666664", -"`a c #F2F2F4", -"`b c #5E5E5C", -"`c c #EAEAEC", -"`d c #565654", -"`e c #E2E2E4", -"`f c #4E4E4C", -"`g c #DADADC", -"`h c #464644", -"`i c #D2D2D4", -"`j c #3E3E3C", -"`k c #CACACC", -"`l c #363634", -"`m c #C2C2C4", -"`n c #2E2E2C", -"`o c #BABABC", -"`p c #262624", -"`q c #B2B2B4", -"`r c #1E1E1C", -"`s c #AAAAAC", -"`t c #161614", -"`u c #A2A2A4", -"`v c #0E0E0C", -"`w c #9A9A9C", -"`x c #060604", -"`y c #929294", -"`z c #8A8A8C", -"a` c #828284", -"aa c #7A7A7C", -"ab c #727274", -"ac c #6A6A6C", -"ad c #626264", -"ae c #5A5A5C", -"af c #525254", -"ag c #4A4A4C", -"ah c #424244", -"ai c #3A3A3C", -"aj c #323234", -"ak c #2A2A2C", -"al c #FEFEFC", -"am c #222224", -"an c #F6F6F4", -"ao c #1A1A1C", -"ap c #EEEEEC", -"aq c #121214", -"ar c #E6E6E4", -"as c #0A0A0C", -"at c #DEDEDC", -"au c #D6D6D4", -"av c #CECECC", -"aw c #C6C6C4", -"ax c #BEBEBC", -"ay c #B6B6B4", -"az c #AEAEAC", -"b` c #A6A6A4", -"ba c #9E9E9C", -"bb c #969694", -"bc c #8E8E8C", -"bd c #868684", -"be c #7E7E7C", -"bf c #767674", -"bg c #6E6E6C", -"bh c #FAFAFC", -/* pixels */ -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalbhbhalalbhalalbhalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalbhbhalalbhalalalalalalalalalalalalalalalalalal`o`ya``s`wbhalalalalalalalalalalalalalalalalalal", -"bhalalalalalbhalalalalalalalalalalalalalalalalalal`a`malalalap`obb`malalalalal`cax`galalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalbcalbhalalalalalax`ialalal`gauav`u`ealalalalalalal", -"alalalalalalalbhalalalalalalalalalalalalalalalalawar`ialalalalalalalaxapalalbaacat`i`oalalalalalalal", -"alalbhalalalalbhalalalalalalalalalalalalalalalalazal`sbhalalalalalalalayalbh`eba`iapavalalalalalalal", -"albhalbhalalalalalalalalalalalalalalalalalalalal`oatalb``aalalalalalal`oanazazanbhayalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalanawal`salalbaalalalalalalalazaa`cav`oalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalapawalalaranal`i`qalalalalalalbeayazbcbcalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalal`g`oapalalalalal`yalalalalal`gbbabbhapalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalal`sanalalalalalbdalalalalalbc`obbalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalapaaanalalalalal`qatan`ealax`sbbazalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalal`kab`oalalalalalau`uaw`salbb`ua`bcalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalayalalalalalalan`ea`axax`oba`oazaxaralalalalalalalalalalal", -"alalalalalalalalalalapbhalalalalalalalalalaybhalalalalan`s`sazav`gaz`qbdalalazalalalalalalalalalalal", -"alalalalalalalalalalax`u`aalalalalalalalalaraw`o`c`c`aaxaw`g`kav`sayb`ayalal`m`calalalalalalalalalal", -"alalalalalalalalalalal`c`sbhalalalalalalalalalal`c`jb`albh`yavapazay`w`ialalalay`aalalalalalalalalal", -"alalalalalalalalalalalalar`qbhalalalalalalalalalal`v`sav`abcaubbaw`u`salalalalalayapalalalalalalalal", -"alalalalalalalalalalalalal`i`kalalalalalalalalalal`l`way`uau`cazazazbc`q`ialalalal`galalalalalalalal", -"alalalalalalalalalalalalalalaw`galalalalalalan`i`m`hbe`q`oap`w`m`uax`ialax`salalalalalalalalalalalal", -"alalalalalalalalalalalalalalal`oatalalalbh`kbaadagad```oav`i`mb`ba`ualalal`i`oalalalalalalalalalalal", -"alalalalalalalalalalalalalalalanaz`aalanaz`nag`ian`w`k`iar`waw`o`o`ialalalalau`ialalalalalalalalalal", -"alalalalalalalalalalalalalalalalapba`c`zakac`aalau`calapaz`gbabb`qbhalalalalal`ualalalalalalalalalal", -"alalalalalalalalalalalalalalalalal`ibdambd`c`aalalalal`a`yax`kb``u`aalalalalal`e`kalalalalalalalalal", -"alalalalalalalalalalalalalalalalarbcajbf`q`kalalalalal`w`c`sbc`k`e`kalalalalalal`salalalalalalalalal", -"alalalalalalalalalalalalalalalalawaoaibbaw`kalalalalapbaaw`gb`baalaualalalalalal`salalalalalalalalal", -"alalalalalalalalalalalalalalal`cbgaq`y`q`o`ialalalal`wbh`sba`g`oalaralalalalalal`ualalalalalalalalal", -"alalalalalalalbhbhalalalalalalar`v`lbfazap`qapalal`gaz`k`e`y`u`galbhalalalalalalb`alalalalalalalalal", -"alalalalalalalalalalalalalalalbb`x`l`qayalap`u`aala`al`u`q`ebebhalbhalalalalalalb`alalalalalalalalal", -"alalalalalalalalalalalalalalal`gao`hayazalalapb``kax`iaubeaybaalalalalalalalalalbaalalalalalalalalal", -"alalalalalalalalalalalalalalalalbdahba`galalalatbcalbb`maxbeatalalalalalalalalalbaalalalalalalalalal", -"alalalalalalalalalalalalalalalalau`jb``calbhalal`k`oaw`zapbfalalalalanalalalalal`salalalalalalalalal", -"alalalalalalalalalalalalalalalal`aad`malalbbalalal`o`kbb`y`ialalalal`walalalalal`qalalalalalalalalal", -"alalalalalalalalalalalalalalalalalbebaalapbfalalalbhbb`c`dalalalalalagalalalalap`oalalalalalalalalal", -"alalalalalalalalalalalalalalalalalbb`ialalajalalalalap`w`walalalalaxaaalalalal`qalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalazalalalbf`aalalalalbaayanalalalbg`ealalalbh`qalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalaxalalalbebhalalal`c`s`saxalalal``alalalalaybhalalalalalalalalalal", -"alalalalalalalalalalalalalalalalal`oalalal`ealalalalbb`eaw`uawalalawalbhalataualalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalanalalalalalalalal`wb`alayb``malalal`sal`oalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalal`galalalal`q`g`wauaraz`yalalaxapalbhalalalalalalalalalalalal", -"alalalalbhalalalalbhalalalalbhbhalalbhal`salalalal`waw`kay`kapb`al`k`galalalbhbhbhbhbhalalalalalalal", -"albhbhalbhalalalalbhalalalalalbhalalal`i`malalbhar`sbdal`q`oalalal`walalbhalalalalalbhalalalalalalal", -"bhalalalalalalalalalalalbhalalal`ialalanavalalalbcalbbat`g`qalbhar`qalalalalalalalalalbhbhbhbhbhbhal", -"alalalalbhbhbhalalbhbhalalalal`mbealbhalawalalalbd`iat`oaratalal`yalbhalalalalalalalalalalalalalbhal", -"alalbhalalalalbhalalalalbhbhal`najalal`aarbhal`s`eazalazazalal`cb`alalalbhbhbhbhbhalalalalalalalalal", -"bhalbhalalalalbhalalalalalalbbas`naralalalalal`yalazarauayalalbaa`albhalalalalalbhalalalalalalalbhal", -"alalalalalalalalalalbhalal`aaq`r`hbdalalalalaraz`m`aazan`mal`ebd`jalalalalalalalalbhbhbhbhbhbhalalal", -"alalbhbhbhalalbhbhalalalalaa`vah`d`d`calbhalbaal`qal`o`obhalbhbd`ray`i`gbhalalalalalalalalalbhalbhal", -"bhalalalalbhalalalalbhalal`v`t`lah```ualalalbaan`q`cavaxalalatbeai`hauaw`waz`kav`ialalalalalalalalal", -"bhalalalalbhalalalalal`aap`x`tahafbb`ybdalavat`sbh`sal`qalal`c`qafam`faab`axauav`i`s`oaualalbhalbhal", -"alalalalalalalanaxax`s`q`gasao`pbebabb`ubd`walb`al`oavapalalbhaybeagaq`n`sauaw`i`iapat`kayauapalalal", -"bhbhbhalalav`kazarauayay`sad`r`facae`mazaubgb``sbh`m`oalalalalavbbaeai`j`oav`g`oatau`c`g`a`eb`azanal", -"alalalat`o`e`mavayavauarawayaq`lbf`yb``e`zap`yawbd`qayalalalap`ibcad`j`jbb`i`gapal`cal`iatau`gar`o`c", -"alal`eavalbh`g`g`g`ialanaral`b`vabbd`u`ibd`e`ual`o`ea`bbbdbcb`arb````la``uap`i`cavapalarav`catav`c`q", -"al`eavar`aanar`gavatayavaranatasae`wbcawax`iaval`calalalalalalaybcaf`hbb`garan`g`c`g`i`eatauatau`oap", -"al`s`a`carau`capanal`gapanbhal`s`ragbc`e`k`walalalalalalal`cap`oa`bfbgarauauan`g`i`e`c`c`a`g`cauatal", -"al`e`qay`s`i`eanarau`matau`cauau`s`ta`bd`sawalbhalalbhalapatav`s`f`baxalanat`aananan`eawat`max`aalal", -"bhalbhawavbh`aavar`e`gawawau`k`i`c`i`h`d`y`ealalbhalalalalapauaxb`avan`carbhan`gau`aan`iax`ebhalalal", -"alalalalan`uawawal`g`e`e`oatavat`q`ganbb`babbhalalap`ubbb`bb`z`u`gaparbhbhalanaw`iavax`cbhalalalbhal", -"albhalbhalalbhanax`oaw`m`i`m`m`kbhalalalap`obaavalbhan`aan`aalalalalapaxawaw`oapanbhalalalalalalbhal", -"alalalalalalalalalalananbhanbhalalalalalalalan`gb``qawavaxau`m`o`o`s`eananalalalalalalalalalalalalal", -"alalalalalalbhbhbhalalalalalalalalbhalbhalalalalalalbhbhanbhalalalalalalalalalalalalalalalbhalalalal", -"albhalalalbhalalalalalalalalbhbhbhalalalbhalbhalalalalalalalbhalalalalalalalalalbhalalalbhalalalbhal", -"alalbhbhalalalalalbhalbhalalalalalalalalbhalalbhalalalalbhalalalbhalalbhbhbhalalbhbhbhalalbhalalbhal", -"albhalalalalalalbhalbhalbhalalalalbhalalalalbhalalalalalalalalbhalbhalalalalbhalalal`aalalalbhalalal", -"alalalalbhbhbhalalalalalalalalbhalbhalalalalalbhbhbhbhalalbhalalalbhalalalalalap`qbb`salalalalalbhal", -"alalalbhalalalalalalalalbhbhbhalalalbhalbhalalalalalalalbhalalalalalalalalalalae`uav`calalalbhalalal", -"bhbhalalalalalbhalbhalalalalalalalalbhalalbhalalalalbhalalalbhalalbhbhbhalalalalalaralalalalbhalbhal" -}; diff --git a/Documentation/lelie_logo.xpm b/Documentation/lelie_logo.xpm deleted file mode 100644 index 96be267b71..0000000000 --- a/Documentation/lelie_logo.xpm +++ /dev/null @@ -1,214 +0,0 @@ -/* XPM */ -static char *noname[] = { -/* width height ncolors chars_per_pixel */ -"100 143 64 2", -/* colors */ -"`` c #666664", -"`a c #F2F2F4", -"`b c #5E5E5C", -"`c c #EAEAEC", -"`d c #565654", -"`e c #E2E2E4", -"`f c #4E4E4C", -"`g c #DADADC", -"`h c #464644", -"`i c #D2D2D4", -"`j c #3E3E3C", -"`k c #CACACC", -"`l c #363634", -"`m c #C2C2C4", -"`n c #2E2E2C", -"`o c #BABABC", -"`p c #262624", -"`q c #B2B2B4", -"`r c #1E1E1C", -"`s c #AAAAAC", -"`t c #161614", -"`u c #A2A2A4", -"`v c #0E0E0C", -"`w c #9A9A9C", -"`x c #060604", -"`y c #929294", -"`z c #8A8A8C", -"a` c #828284", -"aa c #7A7A7C", -"ab c #727274", -"ac c #6A6A6C", -"ad c #626264", -"ae c #5A5A5C", -"af c #525254", -"ag c #4A4A4C", -"ah c #424244", -"ai c #3A3A3C", -"aj c #323234", -"ak c #2A2A2C", -"al c #FEFEFC", -"am c #222224", -"an c #F6F6F4", -"ao c #1A1A1C", -"ap c #EEEEEC", -"aq c #121214", -"ar c #E6E6E4", -"as c #0A0A0C", -"at c #DEDEDC", -"au c #020204", -"av c #D6D6D4", -"aw c #CECECC", -"ax c #C6C6C4", -"ay c #BEBEBC", -"az c #B6B6B4", -"b` c #AEAEAC", -"ba c #A6A6A4", -"bb c #9E9E9C", -"bc c #969694", -"bd c #8E8E8C", -"be c #868684", -"bf c #7E7E7C", -"bg c #767674", -"bh c #6E6E6C", -"bi c #FAFAFC", -/* pixels */ -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalbialalalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalbialalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalbialalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbaag`xahauauaf`d`tafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaealalalalalalalal`oaeaabealalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ib`alalalalalalalalalalalaw`xaoalalalalalalalalalalalal`qaaaa`zalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbdalalalalalalalalalalalalalal`eau`ealalalalalalalalalabalalalal`xalalalalalalalalalalalalalalalal", -"albialalalalbialalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbaaualalalapalalalalalalalalalalalalbfalalalalalalalalaaalal`halalabbcalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`o`e`qalalalalalalalalalalalalalalalalal`lalalalalalalalabalau`ual`walbfalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaaalal`dalalalalalalalalalalalalalalalal`qaxalalalalalalauau`salatb`al``alalalalalalalalalalalalalalal", -"alalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafalalalbhalalalalalalalalalalalalalalalalal`falalalalalal`oaj`y`ob`alalbfalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`balalalal`nalalalalalalalalalalalalalalalal`o`ialalalalalal`abb`ialal`g`qalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalala`alalalalal`falalalalalalalalalalalalalalalal`falalal`o`haiavalalalalbhalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`bal`m`ialalalaiapalalalalalalalalalalalalalalbeanalal`valalalalalal`balalalalalalalalalalalalalalalalal", -"alalbibialalbialalalalalalalbialalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalal`walalalbealalalal`jalalalalalalalalalalalalalalal``alakalalalalalba`ualalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbb`kalal`ubealalalalal`halalalalalalalalalalalalalalbhalauaxal`eaz`o`ualalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalav`yalalalalalbeatalalalalajapalalalalalalalalalalalalalbfag`dalaxakbfaiaualalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`gbcalalalalalalalalalalalalalaualalalalalalalalalalalalalaxac`yalbbalapbhaoalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafalalalalalalalalalalalalalalaualalalalalalalalalalalalal`t`q`u`j`aalal`salalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal``b`axalalalalalalalalalalal`ubaalalalalalalalalalalalbb`w`iacbhalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`cacawalalalalalalalalalalalat`ralalalalalalalalalalalau`maradalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaladalalalalalalalalalalalalalar`jalalalalalalalalalalahalaz`yasalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`eaualalalalalalalalalalalalalal`valalalalalalalalalalamazala`aualalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`talalalalalalalalalalalanalba`ualalalal`oalalalakal`sa`bdanaxalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`h`taqa`alalalalalalalalalalala`alafalalbcal`halalal`dbaalaeajalasalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`i`ma``falalalalalalalalalalalalaw`halalbdal`balalaoalac`z`z`kal`palalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`salalalalalalalalalalalalalal`qalaqalal`dalbhalarbgaaalab`halalajalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`jalalalalalalalalalalalalalalalalaualal`yala`al`ral```qapafalalbbaxalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalabalalalalalalalalalalalalalal`zbfazaoalal`war`gayawbgalaebdalalalal`jalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalbialalalalalalalalalalalalalalalalalalalal``alalalalalalalalalalalalal```oaeala`alatawazal`nalacalaxahalalalalbfalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalal`jar`s`ealalalalalalalalalalalalalalalalalalalaaayalalalalalalalalalalbg`u`caz`cabalbcalala`anaaal`nalbealalalalal`halalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalbb`wadapalalalalalalalalalalalalalalalalalalalaybdababawalalalalalbhal`zat`c`abcal`zalalajal`dalae``alalalalalal`y`galalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalala``yalalalalalalalalalalalalalalalalalalalalalalal`g`q`vaxazaaalalal`aaladal`m`aal``an`g`gaeal`falalalalalalal`halalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalbe`yalalalalalalalalalalalalalalalalalalalalalalalalauaeazazalalalal`aaqalaaalalaial`dalahataxalalalalalalalalabalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalal`y`yalalalalalalalalalalalalalalalalalalalalalalal`rasbe`malalalal`dazaraval`jalal`zbaal`dalalalalalalalalalanagalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalal`a`wbaalalalalalalalalalalalalalalalalalalalalalalauau`qazbhbialalaualbdalal`ralajalaialabalalalalalalalalalalanabalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalaxbcaxalalalalalalalalalalalalalalalalalalalalalakak`kbhaaalal`dan`oalal`halalbcavaybfbfalalalalalalalalalalalanakalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalay`uaralalalalalalalalalalalalalalalalalalalalacasbdb``dalal`fal`oal`a`jalaial`nalaj`aadbh`malalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalal`wb`alalalalalalalalalalalalalalalalalalalawbeau```wbbalaual`ualal`nalalacalbealafalalal`dakalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalbdbaalalalalalalalalalalalalalalal`gbc`galbaaubf`bazay`g`ibial`gadalaialaial`ladalalalalalau`aalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`y`walalalalalalalalalalalalatayalayauau`bau`s`qakazal`salal`talal``al`valauapalalalalalalaualalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalapbbb`alalalalalalalalalal`waladauauaubebiauakahaxalbdalal`w`salaialbhalbgahalalalalalalalal`palalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalavbcawalalalalalalal`safabauauaa`yalalalauauawalbealatalamalalabalakalauaealalalalalalalalalafalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalb`bb`calalalalalb`axauau`raa`calalalalaibial`walaparab`ealafal`w`i`gauaealalalalalalalalal`i`ualalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`wbbalalal`e`ibcau```d`s`a`aalal`ua`alalbibial`ual`ralalahalaualau`ualalalalalalalalalalalakalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`zaeal`ial`tau`vah`lalalalalavayalalalalalayal`jalal`hal`eaaalauatalalalalalalalalalalalar`balalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbe`walauau`b`fal`calalalalalalalalalalalalalajalalahalaual`fbbb`alalalalalalalalalalalalaealalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`may`xaubh`s`zalal`ialalalalalalalalalalalaualal`halalaialauaoal`aalalalalalalalalalalalana`alalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbabiau`caqajaaawaladalalalalalalalalalalal`zabalalahal`talarag`yalbhalalalalalalalalalalalalakalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaxalauauasalaj`wayap`ialalalalalalalalalalalaualalaealalaualaq`ya`albealalalalalalalalalalalaladalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ybdau`f`v`yaw`a`i`y`aalalalalalalalalalalbe`salalafalaebialau`zalalaaalalalalalalalalalalalal`o`qalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ialau`r`raj`hawbdalbgalalalalalalalalalalalaualalaaalal`valafah`ialbib`alalalalalalalalalalalalal`balalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalb`agauauahbb`jalbc`ualalalalalalalalalalaladaralal`nalbe`salaualalalbhalalalalalalalalalalalalalal`nalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalbialalalalalalalalalalalalalal`ialauauauazbbabalar`u`walalalalalalalalalalaoalalacbialaual`g`l`calalbfalalalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalax``auaoa`aeazbd`g`sapbdayalalalalalalalal`palalalafalayadal`taxanalarar`malalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalbibialalalalalalalalalalalalalal`cauauaiao`nb``g`zalal`i`y`calalalalalalav`jalalbdanalaualalauae`aalalal`zalalalalalalalalalalalalal`falalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`g`qauau`laj`uafat``alalalbda`alalalalalalasalalalajalal`lalbcau`salalalalbcalalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalbibialalalalalalalalalalalalalb``jauao`j`pb`apax`ialalalalbdbfalalalalbaadalalbdaval`lalalauaxalalalalbealalalalalalalalalalalalalal`falalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbd`uauau`fagbgbi```ealalalalalbda`alalalaualalalajalalaualalaoacalalalalbialalalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalbialalalalalalalalalalalalalal`gauau`h`dbdawbfaxalalalalalal`z`yal`s`zalalb``kal`p`ialai`tbialalalalalalalalalalalalalalalalalalal`jalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalapauaubgaa`a`ualalalalalalal`abcaraualalal`ralalaualal`v`kalalalalalalalalalalalalalalalalalalalal`ralalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`eaoau`z`d`m`qalalalalalalalalb`baa`alal`w`qal`zbealar`vbcalalalalalalalalalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalatbgau`zabbiaralalalalalalalalal`s`walalasalalaualalah`w`aalalalalalalalalalalalalalalalalalalalal`falalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalavauadaoalazalalalalalalalalalal`zbbat`yal`c`jalalauayalalalalalalalalalalalalalalalalalalalalal`balalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`s`uau`sawalalalalavalalalalalalalbcaialalaualalabab`galalalalalalalalavalalalalalalalalalalalalacalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalayaualbaalalalalaualalalalalalalbibc`malaualal`t`qalalalalalalalalalaualalalalalalalalalalal`o`kalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaraqaealalalalalaualalalalalalalal`e`s`n`oal`oahbialalalalalalalalalau`ealalalalalalalalalalakalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`k`nakalalalalazaualalalalalalalalal`wbcalalaq`dalalalalalalalalalalau`balalalalalalalalalalaealalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaq`falalalalalauawalalalalalalalalalabbaalauaralalalalalalalalalalauaxalalalalalalalalalbhbialalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`p`ualalalalalauaualalalalalalalalalalacabajanalalalalalalalalala`aualalalalalalalalalaladalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafalalalalalal`qaualalalalalalalalalalalab`yalalalalalalalalalalauasalalalalalalalalal`ca`alalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalagalalalalalalalau`aalalalalalalalalalav`b`o`walalalalalalalal`caualalalalalalalalalalahalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalala`alalalalalalalau`malalalalalalalalalaoalbi`z`salalalalalalalazaualalalalalalalalal`i`oalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalabalalalalalalalaualalalalalalalalalalajal`obf`o`kalalalalalalb`aualalalalalalalalal`jalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`s`galalalalalalalaualalalalalalalalalbhavaladalbbay`aalalalalalalaualalalalalalalalbdaralalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaealalalalalalalalalalalalalalalalalalaualaladalal`t`ualalalalalal`zalalalalalalal`ebaalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ualalalalalalalalalalalalalalalalal`eadalafanalbbal`uaaalalalalalalalalalaralalalaealalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaialalahalal`bal`gbfbgalalalalalalalat`palal`dalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ralaladalalacal`balbcaxalalalalalal``alalbi`malalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ealalalalalalalalalac`kal`lalal`savalafal`ybbalalalalalaealalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`halalalalalalalalal`xalal`ralalbhalalaealbfa`alalalalacalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbcaralalalalalalalal`gbgal`qbealalafalbdalalbbaealalalb``ualalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`palalalalalalalalalaoalalaualal`iaxal``alalalalalalal`ralalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`yalb`alalalalalalalalaoalalaualaladalal``alalalalalal`k`zalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`zalaaalalalalalalaladaralbd`qalaladalaw`kalalalalalal`talalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`eavalalalalalalalaualalaualalavbbalaealalalalalalal`nalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaualalalalalalal`walalalalalalal`g`balalacalalbhalalbhalalalalalalbhalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalazaualalalalalalalbealalalalalalal`valalazayalalacalanb`alalalalalal`valalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalauauapalalalalalal`walalalalalalalasalalafalal`a`ualabalalalalalalal`ralalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaeauauabalalalalalavayalalalalalal`f`galalafalal`dalal`dalalalalalalal``alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalauauaoaualalalalalalalalalalalalalaualala`bialal`falal`balalalalala``o`yalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalaqauau``aualalalalalalalalalalalal`g`balalafalalal`walbbapalalalalatajbhbaalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalal`aau`nauajai``alalalalalalalalalalalaoalalal`balal``alal`falalalalalalad`nbbalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalauau`x`t`ladaualalalalalalalalalalalaoalal`zalalalafalalbhalalalarayba`t`tbfalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalb`auauaqbham```zaaalalalalalalalalalab`galal`falalalabalawaxalalalalararabau`nalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalauauaqaubhau`ybhaibialalalalalalalal`ralal`aaaalalbealal``alalalalalal`mbdau`jbcalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalal`sauam`vaoa`aea``tabbbalalalalalalalal`balalaealalalaealalbhalalalalal`cbgamaiau`tat`zaaacav`aalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalauauau`xas`f`jaoae`saa`oalalalalalal`lalalalafalalalaaalalbealalalal`iatbbbf`hamao`halav`qat`nbhac`o`y`salalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalauauauaf`p`dadagbh`l`e`falalalalalal`lalalavbcalalbcanalaaalalalalalal`m`u`b```lau`sazal`ualalazbhalapalab`zac`salalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalauaqau`p`xajbgas`o`ualbe`ralalalalaxb`alalafalalalahalaladalalalalalalalazb`aeaoajauagadbdbaahan`c`q`wapalalalbc`dbe`oalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalal`o`salauaqau`p`yafbg```bawacajbh`nalalal`jalalal`nalalal`dalal``alalalalalal`sav`ob`ai`lau`v`vak`ja`awbeat`e`e`s`u`a`a`garbeab`u`yalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalarbc`s`baeb`a`alauauau`pauau`dbfaa`u`y`m`ibaaualalaealal`q`oalalb`aralaz`ealalalalalalal`o`zb`be`d`fasauauafbcalalayafavbbalb``salalalal`e`wabbh`ealalalalalalalalal", -"alalalalalalalalalalalalalalal`i`z`nbh`g`k`oavapalalajauau`f`dakacavay`sbaa``dapbg`daqalalal`nalalal`dalal`balalalalalalalalalbbbfagbcas`fau`xbha``z`ualalalavalalalat`eatawawalalal`kaabbalalalalalalal", -"alalalalalalalalalalalalalbb`y`gal`a`mavaaaxalbeaaay`qauam`jaoaa`jagakaqbb`g`iacalalauaga`al`balalal`balal`balalalalalalalalal`z`sbhbh`j``akauae```aalalalaraz`q`oat`eal`g`aalaralalatalav`tbgalalalalal", -"alalalalalalalalalalavai`u`i``ayalalalarav`ka``o`yayalau`xasam`zag`mazabap`mbaal`may`ybi`kau`balal`gawal`c`salalalalalalalalat`ibaaz```bakakau`uaxalb`abbb`oazayalarb``sbibiazazal`kaval`gav`eakatalalal", -"alalalalalalalalaz`fayalbf`ealbebe`salal`oaxbi`eaxaab`bgau`jam`dbc`sae`wad`m`gayal`talalal`jalaiabbfalalbfalalalalalalalalanayar`o`yaa`lahaeauaf`q`t`savax`malalalalalalalalanaxapat`ebbbial`calat`balal", -"alalalalalalaladatalalalalb`arapalbdae`oalalalatalalanbiauau`l`vahag`y`iaw`zalalawajal`gawadalalalauaua``dalalalalalalalal`q`gaw``aaazajaiakau`ubealalalalal`g`calalar`ealal`cb`an`ual`g`say`aalay`e`wal", -"alalalalalal``analalalal`c`k`m`m`k`g`malalalalalalalalalazauasau`hbdb`a`bdbdalawbca`baal``alalalarayal`aauaj`bauauamajas`t`waw`cab`ubf`nbhamaualau`e`eatazazarar`m`u`ealalalalal`may`qalalav`u`iawaladal", -"alalalalbibgalalalalal`a`oalanalalavax`galalal`iawayalalalauauao`zaa`bbhalbhadalasal`gal`palalaladalal`aalalalalalalalalalalalan`marabbgaiauaiarazalalalal`gatalalaxavalalalal`s`ialalan`qalalaz`cal`dal", -"alalalal`dalanazalaralalanalalayavaval`sa`adbf`ialalalalal`sauam`nbb`gacbfacal`wajalalal``alalal`malalalalalalalalalalalalalbaav`k`wauacasbf`iajalalalalapal`a`zavalal`abc`oaralalal`qavalat`obi`ub`atal", -"alalalbhalalalar`calal`gatavaxaxax`maralalalalalatazatalalalauau`n``bc`sbc`qa`alal`calajalalalalalalalalalalalalalalalalalalaybfahacagbcaiac``al`mbbbbapalalanalal`ebcavalalalb``w`mal`i`walaw`c`cbbalal", -"alalal`fal`ialal`mavayaralawatalalalalal`c`ialalalalalalalalalauauahafak`q`q`aal`ualalaqalalalalalalalalalalalalalalalalalalal`obcaxbebh`nbc`qalalalalalal`gb`axalalalalalba`malalalaralal`galar`walalal", -"alalalaealal`kavalalar`k`aanapalalapalalarazaw`capal`aalalalalalauamaubdaf```qbibgal`ebealalalalalalalalalalalalalalal`u`o`c`oab`b`f`zac`u``alalaz`sbb`qalalalalbc`wbaanalbialalal`a`o`m`ealba`oalalalal", -"alalalbbaaap`yaeaja``ial`oalaranalalal`m`yawan`m`u`kalapalaw`ualalauao`rbcaxaual`u`k`jalalalalalalalalalalalalalal`oaxalalaz`wae`fafagag`nalalalalalalalal`c`ealalalalalalalalaw`obialb`biaeapalalalalal", -"alalalalalagalalal`a`o`q`ialalal`abc`zalalba`mal`ealazalbdbiaxaralal`vauahabak`kaz`zalalalalalalalalalalalalalalalalalb`azawalavaj``az`palalalalalal`e`sapapalalalal`ealaw`s`y`walay`o`ubcalalalalalalal", -"alalalalalalbbbdalalalalalalal`uawalalalalawayaxaxb`alazavaz`g`kavalal`kauag`paz`ya`alalalalalalalalalalalalalalalalalaw`mb`ab`zala``balalalalalalalalalalalal`o`uaz`galalananal`q`w`ualalalalalalalalal", -"alalalalalalalanaa`ualalalav`zalalat`g`oaz`e`o`eav`k`c`oax`eazaral`ial`m`m`tau`bahap`yapalalalalalalalalalalalalalalalalalalalalaeavalalalavaxav`qawalalal`g`qapalalalalalalava``ualalalalalalalalalalal", -"alalalalalalalalalbiad`nayalalalalalb`awaz`eat`qalay`i`galaxalal`saybfanalalbdauac`s`q`valalalalalalalal`iat`eay`earbfbg`pau`vaaal`oawal`karalalalalalalalatalalalalalbcbha`axalalalalalalalalalalalalal", -"alalalalalalalalalalalal`iaabfbcalalalalalalalalacazbiav`u`m`g`ua``kalalalalalal`faubeac`calalalalalal`uaf`baf`hahaca``ialalalbi`ianalalalalalalalalalalalalataibb`u`wanalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalbiaca`aa`yalalalalalalanalalbcbhavalalalalalalalalalap`b`oarb`alalalalalalalalalalalal`calalalalbialalalalalalalalalalb`bga`acavalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalat`wabbhbgb``qaabebfalalalalalalalalalalalalalalapbc`l`pbialalalalalalalalalalalalalalalalalalalalal`s``a`bf`zalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalala`ahadbh`db`bcbiatalalalal`ubcaf`wacbe`fae`uanalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`g`gabbgababav`ialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaxalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafaealalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`oal`z`l`wbhafalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalauagbeaqal`mb`alalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaf`mbialalaaalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbaalalalalalalalalalalalalalalalal", -"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbialalalalalalalalalalalalalalalal" -}; diff --git a/Documentation/lelieblond.xpm b/Documentation/lelieblond.xpm deleted file mode 100644 index b63f794a3c..0000000000 --- a/Documentation/lelieblond.xpm +++ /dev/null @@ -1,845 +0,0 @@ -/* XPM */ -static char *noname[] = { -/* width height ncolors chars_per_pixel */ -"582 836 2 1", -/* colors */ -"` c #000", -"a c #FFF", -/* pixels */ -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaa``````````````aaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````````````````````aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````aaaaa``````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa`````aaaaaaaaaaaaaa``aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``````aaaaaaaaaaaaaa`aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```````aaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa```````aaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a```````````aaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a`a```aaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````a`a```aaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a``a```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a``````aaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a``aaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``a````aaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``a`a`aaaa``aaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa`aaaaa``aaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaa```a`aaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a``aaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa````aa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```aaa``aaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaa```aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa````aa```aaaaaaaaaaaaa``````aaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```aaa``aaaaaaaaaaaa```aaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```aaa```aaaaaaaaaaa``aaaaaaaaaaaaa```aa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa```aaa``aaaaaaaaaaa``aaaaaaaaaaaaa```a``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa```aaaaaaaaaaa`aaaaaaaaaaaaaa``a`a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa```aaaaaaaaaaa`````````````a````a`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```aaaa``aaaaaaaaaaa````````````````aa``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaa```aaaaaaaaaaa`aaaaaaaaaa`````a`aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa``aaaaaaaaaaa``aaaaaaaaaaaaa`aaaa`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaa``aaaaaaaaaaaa`aaaaaaaaaaaaa``aaa`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaa```aaa``aaaaaa`aaaaaaaaaaaaaa`aaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaa```aaaa``aaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaa``aaaa```aaaaa`aaaaaaaaaaaaaaa```aa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaa```aa````aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaa```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaa``aaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaa```aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaa``aaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaa``aaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa`aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa`aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaaa``aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa```aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaa`aaaaaa``aaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa```aaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaaa``aaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa```aaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa```aaaa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa``aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa````aaaaaa``aaaaaa``aaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa````aaaaaa``aaaaaa``aaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaa```aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaaa```aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`````aaa``aa`aaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaa```aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a`````a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaaa``aaaa```aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````a``````````aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaa````aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`````a`aa``a``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaa```aaaaaa``aaaa```aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa````a```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaaa```aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa````````aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaaa````aaaaaa```aaaaaa``aaaa```aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa`````aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaaa```aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaa```aaaaaa```aaa````aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaa``aaaaaaa``aaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaa```aaaaaa```aaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaa``aaaaaaa``aaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaa```aaaaaaa```aaaaaa```aaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaa```aaaaaaa``aaaaaaa``aaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaa```aaaaaaa```aaaaaa```aaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa`a````aaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaa```aaaaaaa```aaaaaa``aaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa````aaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaa```aaaaaaa```aaaaaa```aaaaa```aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```aaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaa```aaaaaaa``aaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa```aaaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaa````aaaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaaaa```aaaaaaa``aaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaa`````aaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a```aaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaa``aaaaaaaa``aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa```aaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa```aaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaa```aaaaaaaa``aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaa```aaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaa``aaaaaaaa```aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaa``aaaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa`aaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaa``aaaaaaaa```aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa```aaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaa``aaaaaaaaa``aaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa```aaaa```aaaaa``aaaaaaaaaaaa``aaaaaaaaa`aaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```aaaa```aaaaaaa``aaaaaaaaaaaa``aaaaaaaaa`aaaaaaaa``aaaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaa```aaaa```aaaaaaaaa``aaaaaaaaaaaa`aaaaaaaaa``aaaaaaa```aaaaaaaa```aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaa``aaaa```aaaaaaaaaaa`aaaaaaaaaaaaa`aaaaaaaaa`aaaaaaa```aaaaaaaaa``aaaaaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaa``aaaaaaaa```aa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaa```aaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaaaa```aaaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaa```aaaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaa``aaaaaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```aaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaa`aaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaa```aaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaa```aaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaa```aaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a`aaaaaaaaaaaaa`aaaa`a``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaa``aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa`aaaa````aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaa``aaa```a`aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaa```aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a````aaaa``aaaa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a`a`a``aaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a`aa``aaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a``a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`````a```aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`````aa``aaaa``aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa``a``a`a``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```````aa```aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a```aa```aaa``aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a````````aaa``aaaaa``aa`aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a````a```aaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a``a`a`aaaa``aa`aaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````a`a``a`aaaa``aa`aaa`aaaaaaaaaaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`a`````aaa`a``aaa`aa````aaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaa``aaaaa`a``a`a``aaaaaaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaa`aa```aaa`a`aa`aa`aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aa``aa``a```aa`aa`aaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa```a`a`aa`a``aaaa``a`aaaaaaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a`a`aaa`aa``aaaa``a`aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`````aaaa```aaa``aa`aaaaaaaaaaaaaaaa````aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaa```aaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa````aaa```aaa``aa``aaaaaaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaa`a`aa`aa``aaa`aaaa`aaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaa```aaaaaaaa```aa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aa``aa`a``aaaa`a`aa`aaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaa```aaaaaaaa``aaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa```a``a``a`aaa```a``aaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaa``aaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaa``aa`aaa```aa`aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaa```aaaaaaaa``aa`aaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```a`aa```a`aaa``aaa`aaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaa``a`aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a``a``aa`aaa``aaa`a``aaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaa```aaaaaaaa````aaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa````aaa`````aaa`a``aaaaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a``aaaaa``aaaaa```aaaaaaaaaa````aaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaa```aaaaaaaa```aaa`aaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```````aa``aa`aaa``aaaaaaaaaaa````aaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaa``aaa`aaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``````aa`aaa``aaaaa`aaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa```````aaa``aa`aaa``aaaaa``aaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa```aa`aaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa`````a```````a`a```aaaa``aaaaaa````aaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaa`a```aa````aa``a```aaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaa`a````````aaaa``aa`aa``aaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaa``a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaa`a```````aa```a`a``aaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaa```````aa`````a``a``aaaaa`aaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa```aaaaaaaa````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa`````````a`aaa``aaa``aaaa`a``aaa``aaaaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaa``a`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaa``````aa```a`````aa`a```aaa```aaaa```aaaaaaaaa`aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa```aaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``````aa``a```aa```aaa``aaaaa```aaaa```aaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa`````````aaaa```````aa`a```aaaa``aaaa````aaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa```aaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa````````aa`````aa```````aa``aa`a```aaa`````aaaaaaaaaa`aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa```a`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa`````````aa````````a```a``a````aaa``aaaa`````aaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaa````aaaaaaa```a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa```````````a```````aa```a`a```aa``a`a`aa``aa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa`````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa`````````````````a`````aa``````aaaa``aa````a```aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaa````aaaaaaa```a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`````````````````a```aaa``aa````````a`a`````aa```aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa```aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaa```````````a``````aa``a```aaa`````aaa```a`a```aa```aaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa`````````````````a```aaaaa```aaa```````a``a```aaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaa```aaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``````````````````a``aa``aaaa``aaaa``````a````aa`a``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaa``````````a``aa```````aaaaa`a`aaaaaa`````a`````aaa```aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa```a``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaa``````````````aa``````aaa`aaa``aaaaaaaa``````a``a``a```aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaa```a``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaa```````````a``a``````aaaaaaa``aaaaaaaaaa````````a`a````aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaa`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaa`````````````a`a``a```aaaaaaa`aaaaaaaaaaaaa``aa`````````aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaa`````````a````a```aa``aa`aaaaa`aaaaaaaaaaaaaa`````a``````aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaa````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa```````````a``a``aaa```aaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaa``aaaaaaaaaaa`aaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa````aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa`````````aa``````aaaaa``aa`aaaaaaaaaaaaaaaaaaaaaa````a`````aaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaa```aa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``````````````a````aa``aaa``aaaaaaaaaaaaaaaaaaaaaaa``a`a``aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaa```a``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa`````````aa``````aaaa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaa```a``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``````````a``aa``aaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaa```a`a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa`````a```a`````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaa`````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``````````````a``aaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa`aaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa````aaaaaaaa```a`a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````````````````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaa```aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa````````````aa``a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaa````aaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````a```a``aaa``aa``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaa```a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````````aa```````````aaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaa```a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa``````a`````a``a````a``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaa````aaaaaaaa`````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````a```a``aa``aaaa``aaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaa`````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaa``aaaaaa```````a````aa`aa``a`a``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaa````aaaaaaaa````aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```aaaaaaaaaaaaaaaaa``aaaaaa````a``a````````a``a````aaaaaaaa`aaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa`````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaa``aaaaaa```````a````a`a```aa`````a`aaaaa`aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaa````aaaaaaaa`````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaa``aaaaaa````a````````a``a````a```aa`aaaaa`aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaa``aaaaaa`````a``a`````aa```a`````aa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaaa```aaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaa``aaaaaa`````````a````a```aa``a``aa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa```aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```aaaaaaa``aaaaaa````a````a```a`a```a`aa`aa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaa```aa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaaaaa``aaaaa``````````aaa`a```aa``a``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa````a`aa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaaa``aaaaaa````````````````````````aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaa```a`aa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aa`aaaaaaa`````````a`a``a```a`aa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaaa````aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```aaaaaaa`````````````a``aa``aa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaa````aa`aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaa````````````a````aaa`a``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa````aaaaaaaaa```aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaa`````````a`a`a````a`a`aaa`aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaa````a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaa`````````a`a````aaa`a`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaa```a`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a```````````aa`a`aaaaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaaa````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa`````````````a```````````````a`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaa````aa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaa```````````a`````aaa`aaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaaa```aa`a`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaaa`````````aaaa``aaa`aaa`aaaa`aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaa````a`a`a``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaa``````a```a`````````````aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaaa`````a`a``aa``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa```aaa```a`````````````aa`aaaa``aaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa```aa`a``aa``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``a``aaa````a```a`aaa``aa``aaa``aaaaaaaa``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aaaaaaaaaaa````aaaaaaaaaa``aaaa``aa`aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa````a`aaaa``````a``a``aaa``aaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa```aaa``aa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa````````aaaa``a`a``a`a`a```aaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aaaaaaaaaaa````aaaaaaaaaa```aa``aa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``````````aaaa`````````````aaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa````a``aa``aa`aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````````a``aaaa``aaa`aaa``aaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaa```a``aa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```````````a``aaaa`aa`a`````aaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa``````aa`aa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``````a`````a``aaaa`aa````````````aa`aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaa`````aa`aa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa`````````````a``aaaa``aaa``aaaa`aaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa````aaaaaaaaaa```aaa`aa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``````a```````a```aaaa``aa`aaaa`aaaaa`a`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa````aa`aa``a``aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa````````a``````````aaaa`````aaa`aaaa`a`aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa````aaaaaaaaaa```aa`aa`aa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``````````````a```a``aaaa``aaaa`aaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaaa```a`aa`aa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa`````````aa````````aa``aaa``aaa``aaaaa``aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaa```a`aa`aa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````a``````aa`````aa```aaaa`aa`aaaaa``aaaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaaa```aaa`aa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``````aa``a`````aa`````a`aaaa``a`aaaaa`aaaa`aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaa````aa`aa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````````a````a```````aaa`aaaa``aaaaaaaaaaa`a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaaa```a``aa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````````````aaa`a``aa`a`a``aaaa``aaaaaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaa````a`aa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````a`a`````````a```````aa``aaaa``aaaaaaaaaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaaa```a`aa``aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````````a````aa`````aa`aa`a`a``aaaa``aaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```aaa``aa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa`````````````````a``````a``a`aa`aaaaa`aaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaa````aa``aa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````````aa````a````a`a``aaa`aaaa``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```aa``a``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```````a``a````````a``a````a`aaaa``aaaa``aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaa````a``aa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````a```aa`````aa`aa`aa`aaaaa``aaaa``aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```a``aa`aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````````````````````````````a``aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```a`aa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````a``a`````a``````aa`aa`a`a`aaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````a````````aaaa`aaa`aa`a`aaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```aaa`aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````````a`a````aaa`aa`aaa``aaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaaa````aa`aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa````````a`a```````aaa`````a``a```aaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```aa`aaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````````````a`aaa`aa`aa`a`a`aaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa````aaaaaaaaaaa```a`aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````````````aa````a`aa`aa`a`aaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````aa````````a`aaaa````aaaaa``aaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````````````aa`aaa`aaaaaa``aaa`aaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa````````````````a`````aaa`````````aa`aaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaa````aaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````````````aa``````aaaaa```aa`aaaaaaaa``aa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````````a`a````aaaa```aaaa``aaa`aaaaaaaa`aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa````aa`aa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````````````a`aa`aa```aa````aaa``aaa`aaaaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa```aa`aa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````a````````aa`a`a```a`aaaa`aa`aaaaaa`aaaa`aaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa```aaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`````````````a``````a`a`aaa`aaaaa`````aaa``aaa``aaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaa```a`aaa`aaaaaaaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````aa```````a```````a`````aaa`aaa`aaa`aaaa`aaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa````aaa`aaa`aaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````a`a````a`a````aa`a`aaa``aaa`aaa`aaaa`aaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaaa```aaa`aaa`aaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````````````a`a````a`````a`aaa`aaaa`aaa`aaa`aaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa````aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````a````a`````a```aa`aaa``aaaa`aaa``aaa`aaa`aaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa```aa`aa``a`aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa```````````aa``````a```````````aa`aaa``aaa`aa``aaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaa```a`aa``a``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`````````````````````````aa`a`aaa`aaaa`aaaa`aa`aaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa```a``a`aa``aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````a`````````a`a````aaa```aaa`aaaa`aaaa`aa`aaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaaa`````a`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````a`aa````a`a````a``aaaa`aaaa`aaaa`a``aaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa````aa`aa`a``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````````````a```````````````````````a`aaa``a`aaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa```aa`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```````````````````a`aa`aaa```aaa``aaaa`aaa``a`aaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa```a`a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````````````a`````a`a`aaaa`aaaa``aaa``aaa``a`aaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa```a`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````a```a``````a````a`aaaa`aaaa`aaaa`aaaa`aa`aaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaa```a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```````````a``a````a`a```````````````aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa``````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa```````````````a```````````aaa`aaa``a`aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaa```a``a`aaa``aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````````````aa`aa```````aa``aaa`aaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa```a`a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````````````````a`a`````aa`aaa``aaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaa````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````````````a````a`a`aa```a`aaa``aaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````````````````a`````a`a``aaa```aa`aaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa```a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````````````a``a``````a`a``````aaaa`aaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```````````````aa``````````aa``aaaa`aaa``aaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaa````aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````````````````````aa`aaaaaaaaa``aaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaa`aa```aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````a```````a`aa``a`aaa`aa`a`aaaaa`aaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```````````````````aa```````````a`aaaaa`aaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa```aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````a`````````````a`aa`a```aa`a```````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```````````a`````aa``a`a`a`aa`aaaaaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa```a`aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa```````````````a``a``a`a```aaaaaaaaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa``````a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````````a`````aa``a`a````````````a`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa````aa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`````````````````a`````a```aaa`aaaaaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa````````````````a``a`a``aaaa`aaaaaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa````a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````````aa`a``a``aaaa`a`aaaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa```a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa````````a`````aa`a``a``aaaaaaaaaaa`aaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa````aaaaaaaaaaaaaa``a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````a```a`a``a``aaaaa`aaaaa`aaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa`````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````a``aa``a``````````````aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````a````````a`aaa``aaaa`aaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaa````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaaa```a`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`````````a````a`aaa``aaaa`aaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaa```a`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````````````a``aa``aaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaaa````aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`a```````````a``a``a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`````````````a``a``a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`````a``````aa`a``a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``a```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaa```aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````````a````````````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa````aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`a`````````aa`a`a```aa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaa```a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a````a`aa```a`a`aaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa````````a```aaa`aa`a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaa````aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````a`a`aaa`aa`a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````````a``aa`aa`a`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`````````a`aa`aa`a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`````````a`a````````aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a``````````aa`aa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaa```aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``a`aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``````a`a`a`aa`aa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa````aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa````````a``aaa`aa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`````a`````````a`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````a``aaa`aa``aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a`aa`aa```a``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`````a`a``a```a``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa`````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`a````aa`a```aa`aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a``````````a``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a``````aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``a``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`a```aa`aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa````aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a``aa`aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a``aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a``````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`````aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaa````aaaaaaaaaaaaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`a`a```aa`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaa````aaaaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaa``aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa```````aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaa````aaaaaaaaaaaaaaa```a`aaa``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa````a`aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaa```aaaaaaaaaaaaaaa```a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a`a``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaa````aaaaaaaaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`a```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaa````aaaaaaaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa````a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaa```aaaaaaaaaaaaaaa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aa````aaaaaaaaaaaaaa````aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aa```aaaaaaaaaaaaaaa```aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````aaaaaaaaaaaaaaa```a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa````a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```aaaaaaaaaaaaaaa```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa```aaaaaaaaaaaaaaa````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaa```aa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaa```a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaa`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaa`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaaaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaa```aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaa``a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaa`````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aa```a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa`````aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``a``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaaa`aaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaa````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``a``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a````a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a`````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````aa```a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````a```a`aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`a`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a`a`a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``a``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a```a``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`a`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``````aa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`a```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````a`````a`a`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a```a````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````a````a``a`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a`a``````````a`a```a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````a````a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aa`````````````aa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a```````````a`````````a````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````aa`aa```aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``a````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````a`a`````````a`a```aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a````````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````a``````a``````````aaa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa````a```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````a```a````````a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````aa``a`a``aa``aaa``a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa```a`aa``````a``a``````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````aa````aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa``aa`````````````````````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````aa```````aa``aaa``a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```a````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````a`````a`````````````a`a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a```````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````aa``a``aa``aa`a`aaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`aa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````aa``aa``````a`aa``aaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`a`a``````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a``````````a``aa```a````aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa```a`a````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````aa``aa````````aa``aaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````a``````a`````a````aa``a`a```aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`````a```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````````a`a`a``aa```aaa`aaa```aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``a```a````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````a````a``````````````````a`````aaa``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa````````````a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````````aaa``aaa```````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa``a``a```````a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````a`aaa``````a``a`a`a`a```aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaa`aa`````````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````a```a`aaa``a``````a``aa``aa`aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa``a```````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a````a````````````````a```aa````````aa`aa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aa`aaa`aa``````````````a``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a`````a``aaa``aaa`aaaa``````````a`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```````a```aa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a`````````a````````a`````````a`a``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aa``a`a`````````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````````a``a```aaa`a`a`a`a```aa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a````aa``a`a`a```````aa``````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````a`a``a`````a`a`a`aa`a```aaa```aa```aaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`a```aa```a`````````a````aaa``a````a```````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````````````````````````aa`a``aa`a`a`aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```````````a````````````aaaaaaaaaaaa`a`aaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a````a``a`aa``aa``a````aa`a```a``a`aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa`````````aaa``````a`aa```a`aa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaa`````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a`````````````````````````````````````aa``a``aaa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaa`aaa`aa````aa``````````aaa```````````````aa`aaaaa``a`aaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````aa````````aaa`aaa``aa``a``a``aaa``a`aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```aaa````aa````````````aa``aaaaaaaaaaaa`a``````aaaaa`a`a`aaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```a``````````````````````````aa`````a```aa``aaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a`a`aa``a```````aa`````aaaaaaaaaaaaa`aaaaaaaaa````aaaaaa``aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````a``````a`a`a`aaa```aaa``````a``a```aa`aa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`aa`````aa`aa````````aa`a```aaaaaaaaaa`aaaaaaaaa``aaaa`````aaaaa``aaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a````````a```aa`````a`aa`aa```a``aaa``aaa``aa`a``aaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaa``````````````aaaaa```aaaaaaaaa````aaaaaaaa``aaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````a``````````````````a````````aa``a``a``aaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa````a``a``````````````````aaaaa``aaaaaaaaaaaa`a`aaaaaaaaaaaa`a`aaaaaaa``aaaaaaaaaaaa`aaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````````````a``a````a````a``aaa```aaaa``aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````aaaa`aaa````a```````aaa``aaaaaaaaaaaaaaaaaa`a``aaaaaaa``````aaaaaaaaaaaaaaaaaaaa`aaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a```a``a``a````````````aaa``aa``````````aa`aaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``a````a``aa``a`````a`````aaa``aa`````````aaaaaaaaaa`aaa``aaaaaaaa`a``aaaaaaaaaaaaaaaa``aaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a``aa`````a```aaa```aa`aa`a````aa```a`a```aaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`aaa`````a``a`a```````aa``aa``aaaaaaaaa``````aaaaaaaaaaaa````a`aaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````a``a``a``aa`aaa````aa```aa``aaaaa``aaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa`a`a```````````````a``a````aaaaaaaaaaaaaa`a``aaaaaaaaaaa`````aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a````````````````````````````````````````aa`aaaaa```aaa``aaaaaa`a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa````aa`a`a``a```````a````aa`aa``````aaaa`aaaaaaa```a```aa``aaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aa``a````aa`aa```aaaa``a```````aaaa```aaaa`aaaaaa``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`a`````````````a`a`a``````a``aa``````a```aaaa```````aaaaaaaa``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``````a``````a`````````````````````a```aa`````a`a`````aaa``aaaaa``aaa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````a``````a`````aaaa````aaaa``````aa````aaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a`````````a````````a```aa``````a`a```aaaa`a``aa``aaaaa``aaa``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa`aaa``a````````````````````aaaa```````````aaaaa```aaaaaaaaaaaaa````aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````a``aaa``aaa`a```aaa``a`aaa``aaaaa`aaaa``a```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`aa```a`a`a``````````a```aaaa``````aaaaaaaaa``aaaa`aaaaaaaaaaaa````aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a```a````````````````a```a```aa`aa``aaaaa``aaa``a```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaa``a``a``````a`````aa`````aaaaaaaaaa`aaaa```aaaaa`````aaaaaaaaaaaa````aaaa``aaaaaaaaaaaaaaa``aa``aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````a``aa`a`aa```aa``a``aa```````aa``aaaaa``aaa``a``aaa````a``aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaa`aa``````a````aa`a``a`````aa``````aaaaaaaa```aaa``aaaa``aaaa`````aaaaaaaaaaaa```aaaaa`aaaaaaaaaaaaaaaaaaaa```````aaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````a`aa`aa```aa````aaa`aaa``a``aaaaa``aaaa`a``aaa`````a````aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``````````````````````````````````````a```a``````````````aa````aaa```aaaaaa````aaaaaaaaaaaaa``aaaaaa``aaaaa```aaaaaaaaaaaaaa``a`aaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``````````````a`````a``````aaa`aaa`aa``aaaa``aaaa``a``aa````aaa``a```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaa``a`````aa``aa`````````````````````a````aa``aaaa`aaa`a`aaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaa```aaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````````a```a``a`a`````````aaa`a``aaa```aaaaa````aa``a``aaa`aaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````````````````a```a``a```````````aa``aaaaaaaaa``aa`aaaaaaaaa```aaaaaaaaa`aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaa``````````a`````````````a```a`````aaa```````````a```aa`a``a`aa``a```aa``aaaa`a```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```aa``a``````````````````a```````aa```aaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaa```````````````````````aa`````````aaaaaa`a````aaa```aa`aa``aaa``aa``aaa`aaaa```a````aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaa`a`a```````````````a``````````````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaa``````````````````````````a```````````aa`aaaaaaa``aa`a``aaa``aa``aaaa`aaaa``aaaa`````aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``````````aa`a`a````a``a`a````````````aa``a`aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa````aaaaa````````````````a````a````````````aaa`````aaa``aaa`a``aaa`aaa``aaa``aaa``aaa`aaa`````aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a`````a``a````````````````a`a`````aa``aaaaaa`aaaaaaa`aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa``````aaaaaaa````````````````````````````````a`````aaaaa```aaa```aaa``aa``aaaa`aaaa``aaaaaaa```````aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``aaaaa``aaaa``````a`a``a`a```````a`a`a`````aa``aaaaaaaaaa`aaaa````aaaaa````aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaa`````````aaaaaaaaaa`````````````````aaa``````aaa`````````````````aa```aa``aa``aaaa``aaa``aaaa``aa`aaaa````aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaa`aaaa`a`a`a`a````````````````````````aa``aaaaaaaaaaaaaaaaaaa````aaaaaa```aaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaa````````````````````````````````a``aaa`````aaaa``aa`aaaa``aaa```aaa``aaaa``a``aaa``a`````aaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaa```aaa`a`a`a``````````````````````````aa``aa``aaaaaaaaaaaaaaaaaaa````aaaaa````aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaa``````a`a``a```````````aa``aa`````````````aa``a``aaaa``aaaa``aaa``aaaaa`aa``aaa``aaaa````aaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aa``a`aa``a``a``````aa```````````````````aa``aaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaa`aaaaa````````````````````a`aaa```aa`aa`aaaaa`aaa``aa`aaa``aaaa```aaa``aaaa``a``aaaa`aaaaa```````aaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaa`aa````aa`aa```````````````aa```a`a````aa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa``````aaaaaaaaaaaaaaa```````aaaaaaaaaaa````````````````aaa`````````````````````aa``aaa`aa``aaaa``aaa``aaaaa``a``aaa``aaaaa``a``````aaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````aa`a````````a`a``````aa```aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaa``````aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa````````````````````````a````````aaa`aaaaa`aaaa```aaaaa``aaa``aaaa`````aaaa`aaaaaa`aa``aaa````a```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaa``aa``a`````````````````````````a``aa```aa```aaaaaaaa``aaaaaaaaaaaaaaaaaaa````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaa```````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa```````````````a````a````````aa`````aaaaa`aaaaa``aaaa```aa``aaaaa````aaaa``aaaaa``a``aaaaaa``````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaa``aa`a`a``aa`a````a`a```````````````aaa``aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa````aaaaaaaaaaaaaaaaaa`aaaa````aaaaaaaaaaaaaaaaaaaaaaaa``````a```````````aa`aa``a``````````````aaaa```aaa``a`a``aaaaa````aaaa``aaaaaa``a``aaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`aa`````aaa`a`aa`a````a`a```````````````aaa``aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa````aaaaaaaaaaaaaaaaaaa``aaaaaa`````````````````````````aaa``a``a```````````a`aa``a`a`aaaaaa```aaaa```aaaaa``aa``aaaaaaaaaa``````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``a`a````a`aa`aa```a`aa`a`````a`````````aaa``aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`aaaaaaaaaaaaaaaaaaaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaa``````aaaaaaaaaaaa`````````````a`````````````aaaa``aaaa`aa````a`````a```aaa`a```aaaaa``aaaaaa``aa`aaaaaaaaaaa`````````aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a``aaa`a``````a```````````````a`````````aaa```aaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa`aaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaa`a````aaa``````````````a````a````````````aa```a```a`a```a`a````aa````aaaaa``aaaaaa``aa``aaaaaaaaaaa`````aa`````aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````````````````````````aaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaa`aaaaaaaaa``a``aaaaaaaaaaa````````````a````a````aa``a``a````````a``aaaa`````a``a```aaaaa``aaaaaaa``aa``aaaaaaaaaaa``a``aaaa``````aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aa``aaaaa``a``a`a`````````````````aaa```aa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`````````````aa```a`````a``aaa`a`````a``a`aa```aaaa````aaaaa``aaaaaaa``aaa`aaaaaaaaaaaa``a```aaaaaa``````aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`a`aa`a`aa``a`a`a`aa``a`````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```a```aa`aaaaa```````````````a`aaaaa`````````````````aa`a`a``````a``a`aa```aaaa```aa``a```aaaa``aaaaaaaa`aaa``aaaaaaaaaaaa``aa```aaaaaaaa`````aaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaa``````a``a``aa````a``````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaa```````````a```````aaa```a`a```a`aa`aa`````aaaaaaa``aaa``aaaaaaaa``aaa``aaaaaaaaaaa``aaaa``aaaaaaaaaa``````aaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aa`aaa```a`````````````````````````aaaa``aaaaaaaaaa``````aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa````aaaaaaaaaaaaaa``````aaa``aa```````````````````````a`aaa``aa````aaaa``a``aaaa```a```aaaaaaa``aaaa``aaaaaaaaaaa``aaaa```aaaaaa``aaaa``````aa``aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaa``aaaaa`a```a````````````````aaaa``aaaaaaaaaaaaaaaa```````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaa```aaaaaaa`aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa`a`a`aaaaaa````aaa```````````aa````````````aa`aa`a``a`a```aaa``aa``aa``aaaaaaaaa``aaaa`aaaaaaaaaaaa``aaaaa``aaaaaa``aaaaaaa````````aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaa```````a````````aa``````````a`aaaa``aaaaaaaaaaaaaaaaaaaaaaa```````a``aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaa`aa`a```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaa````aaaaaaaa`````````````a``````````````````aaaa``aaaa``a``aa```aaaaaaa``aaaa``aaaaaaaaaaa``aaaaaa```aaaaa`aaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaa`aaaaaa``aa```a````````a`````a`aa```````a`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaa``````````a`aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaa``````````````aa```aa````a`a````aa```aaaaa```aaa`a`a`aaaa``aaaaa``aaaaaaaaaa``aaaaaaaa```aaa``aaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````a`aaa`aa`````````````````a`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaa````aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```````````aaaaaaaaaa`aaaaaa``````````````````a`````aaa``a``````aaaaa``aaa`aa`a`aa``aaaaa``aaaaaaaaaaa``aaaaaaaaa``aaa`aaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaa```aa````a``aa```a`a```````````a`aaaa``aaaaa````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a`aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````a``````aa```a`a`aa`a````a``aa``aaa`aa``aaaa````aaaaaaaaaa``aaaaaaaaaa```a``aaaaaaaaaaaaaaaaa``aaa`````aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa`aaaaaa```aaa`a```aa`aa```````a`````````aaaa``aaa````aaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa``````````a`````a``a```a``a```aaaaaa````a``aaaaa````aaaa```aaaaaaaaaa``aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaa```aaaaa`````aaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa`aaaa`aa`aa`aaa````````a`aa````````````aaaa``aaa`````````aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa````aaaa``````````````a``````aa`````a`aaaaa``aaa```aaaa```aa`a``a`aaaaaaaaaa``aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaa``````aaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aa``aa``aa`a``````````````````a``````````aaaa``aaaaaa``aaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa`````````a```a`aaaaaaaaaaaaa``````aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaa``````````a```a```a```a``a`````aa`aaaa```aaaa```aaa``a``aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa````aaaaaaaaaa``````aaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````aaa```a``````````````aaaa``aa``````aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa``aaaaaaaaaa```````````a`````a``````a`a`aa```aaa``a`aa``aa`aa```aaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaa``````aaa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``a`aa````````aaa```a`````````aaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaa```aaaaaaaaa````````````````````a````a`a`a``aa```aaa```aaaa`a``a`aaaaaaaa``aaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaa`a```aa`aa`a`````````a`````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaa```aaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````a`a``a``aa`a``a``aaaaa``aaaa`aaaaaa``aaaaaaaaaaaaaaa``a```aaaaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a`aa``a`aa``aa````````````````````````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a`a```a````````aaaa```aaa``aaaaa``aaaaa``aaa``aaaaaaaaaaaaaaaa`aaa``aaaaaaaaaaaaaaa``aaa```aaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````aaaa`````````a```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``````````````a````a```````````a````a``aaa`a`aaaa`a`aa``aaaaaaaaaaaaaaaa`aaa```aaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaa``aaaaa``aaaa````aaa```a`````````aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``````````````````aa````a`aa`a`````aa``a``aa`aaaa`aa``a`aaaaaaaaaaaaaa``aaaa```aaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaa`````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`aaaa``aaaaa```aaa`aa`````````````````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa`aa``a```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````````a```a```````a```aaa``aaaa`aa`aaa`aaaa`a```a`aaaaaaaaaaaaa``aaaa```aaaaaaaaaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaa`a`aaa`aa````````````````````````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a`````a``````````aaaa``a`aaa`aaaaa`aa`a`aaaaaaaaaaaa`aaaaaa```aaaaaaaaaaa`aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaa`aa`aaa`a``a```````aa``a`aa`aa```````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a```aa```a````a``a`aaa``aaa`aaaa``aaaaaaaaaaa`aaaaaa```aaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaa``aaaa`a`a````````a``a````````````````````aaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a`````a`aa`aa``aaa```a`aaa`aaa```aaaa`aaaaaaaaa``aaaaaaa```aaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa```a````````````````````````````aaaaaa`````````````````a``````````````````````````````aa`````aa``a`````a````````aaaaa```aaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``````a````a````aaa````aa`aa`aa`a``a``aaaa``aaaaaaa`aaaaaaaaa```a``aaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaa````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaa`aaaa`aaaaaa``a``aa`aa`aaaa`````a``````aaaa```aaaaaa`a`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a`````````````aa`aaa``aaa``aa`aa```aa``aa`a`a`aaaaa```aaaaaaa```aa`a``a``aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaa`a````a``a```````````````aaaaa```aaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaa``aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a`````aaa``aaaa`aa`a``aaaa``aa`a`aa``aaaa`aaaaaaaa```aa`aa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaa``aaaaa```a``````````aa```a`````aaaaa```a```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa`````````````````a`a``a``````aaaa`aa``a`a`aa``aa`a`aaa``aa`aaaaaaaaa``aaaaa`aa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`aaaa`aa```````aa`a``aa``````aa````aaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa````````````a`````a`a``aaaa````a`a``aa`a`aaa`aa`a`aaaaa``aaaaaaaaa```aaaa`aaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaa`aaaa`aa````aaa````aa`````a``aaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``````a`````````````aa```aa`aaaa````aa`a`aaa`aa`a`aa`aa```aaaaaaaa```aa``aaaaaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaaa`aa``aaa`````a``aa`````````aaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa````````````a`````a`aaaa`aa`aaa``aa`aa``aaaa`aa`a`aa```aa``aaaaaa```aa`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`aaaa````aaaa```````````````````aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a```````aaa`aa```aaa`a`aaaaa`aa```aa``aaaaa`aaaaa`````aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaa```````a``aa```````a`a````aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a````aa`aa````````````aa`a`aaaaa`aaa``a``aaaaaaa``aaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaa``aa`aaaa``aa``aaa`````````````aa`aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a`aa`aaa``aaa``````````aa`aaaa```a`aaaaaaaa`a```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````aaaa``````a``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`aaaaaaa`aaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a`````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a`a`aa`aaaaa`aaa`aa`a`aa`aaa```aa`aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa`aaa`a``a```a`aa``````````aa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaa``aaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`aaaaaaa```````````````a``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a`a`````````aaaaaa`aaa`aa`a`aa`aaa``aaa`aaaaaaaa````aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa`aa`````a`aaaaa```````a````a``aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````aa``a````a``````````````a`aa`a``a`aaa`aaaaaaa`a`````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``a``aa`a`a```aaaa```````aa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```a``````aaaaaaa`aaaaaa`a`aa```aa``aa`aaaaa``aa``aaa`aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaa`aaaaaa``aa`a`````a`````````aaaaa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```a```a``aa`aaa`aaaa`a`a`aa```aa``aa`aaaa``aaa``aaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaa`aaaaaa````````````aa```a```aaaa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`a``a`aa``aaaaaaaaaaaaaaaaaaaaaaaa`a``````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```````````a````a``aa```aaa`aaaa`a`a`a``a`aa``aa`aaa`aaaaaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````aa`aaaa`````aa``a`aa```aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa````````a```a``````````aa``aaaa`a`a``a`a`aaa`aa`aa`aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa``aaaaa``aaaaaa`aa``aa``a`a````aaa````aaaa````aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aa``aa``aa``````aaa`a`a`aa`a`aa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaa``aaaaa``aaaaaa```````aaa`aa`````a```aaaa```aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````a``aaa`aa```````````aaaa`a`aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaa``aaaa````aa`aaaaa`````aaa``aaaa```aaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aa`aaa`a`aaaa````aa`aaaaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaa`a`a`aa``````aa`a``aaa````aaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a````````aa`aaaaaaa`aa`aa``aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````a`````````````aa``a`a``aaa```aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a````````````a`a`a`aa`a``aa`aa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``a`aaaa`aaaaa```aa`aaaaa``a```aaa```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aa`````aaa`aa`a```a`aa`a`aa``aa`aaaaaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaa`aaaaaa`aa``aaa`aa``a``````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````a`a```````aa`a```a`aa`a`aa``aa`aaaaaaaa`aaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaa````aaaaa```````a`a``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a```````a``a```````````a`aa`a`aaa`aa`aaa`aaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa```````````````aa```a`````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```a`````aaa`a```a`aa`a`aaa`aa`aaa`aaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaa``aaaaaa`aaa`````aa```aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaa``aaaaaaaaa````aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````aa`a```a````aa`aa`aaaaa`aa`aaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaa``aaaa``aa```````aaaaa````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````aa``````aa`aaaaa`aaaaaaaa`aa`aaaa`aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaa`aa``````aaaa``aaa``````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aa``````a`aa`aa`a`````aa``a`aaaaa`aa`aaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaa`aa`````aaaa``aaaaa````aaa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aa````a```````aa`aa````aa``a``aaaa`aaaaaaa`aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa``````a```aaaaa`aaaaa``````````a``aaaa```aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a`aa``aaa`a`````aa`a`aa``aa`aaaa`aaa`aaa`aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaa`aaa``````````````````````aaaa```aaaa```aaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a```````aa`a`a``````a`aa``aa`aaaaaaaa`a`a`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaa`aa`aaaa`aaa`a``````aaaa``aaaa``aaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aa`a```````aaa``aaa```aa``aa``aaaaaaa`aa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa``aa``aa```````aaaaa``aaaa`````aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```a`aa`aa``aa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``````````aa``a``````a`aa`a`aaa``a```aa``aaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaa`aaaa````aaaaa``aaaa``aaa`````aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``````````````a``a`a``aa```aaa``a`a`aa``aaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa````aaaaa`aaaaaa```aaaaa```aaa````a``aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa```aaaaaaaaaaaaaa````````aaa`````a`a``aa```aaa``a`a`aaa`aaa`aaa`a``aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa````aa``aaaaaa`a````aaa````aa````aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa````````````````````aa`a``aa``aa``aaa`aaa`aaa`aaa`aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaa`````````````````````a````a```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaa```aaa````````````````````````a```aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``````aa``aa````a``aa`aa`aa``aa``aaaaaaa`aaa`aaaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaa``````aa`aaa````````````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa`aaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa```````a```a`a````aa`aa`aa``aa`aaaaaaaa`aaa`aaaa`a`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa`aa`````````aaaaaa```aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`````````````aa``````a`aa``aa`a`aa``aa`aaa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa````aaa``aaaaaaaa``aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa```````aaa``aa````````````a`a`aaa`aaa`aa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa`a``````````````aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``````````````aa``a``a```a``aaaa`aaa`aa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa`aaaaa`aaaa```aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaa```aaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa````````aa```aa`a``aa``````aaa`aaa``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa`aaaaa`aa```aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaa`aaaaaaaaaaa``aaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaa```a````aa````aa``aa``aa```aa`aaa``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaa````````````aaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaa``aaaaaaaaaa``aaaaaaaaa``aaaaa`aaaaaaa``aaaaaaaaaaaaaa```a```````````aaa``aa`aaaa``aa``aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````aa```aaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa```aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaa``aaaaaaaa``aaaaa``aaaaaaa``aaaaaaaaaaaaaaaa`````````aaa```````aa`a`aa``aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaa````aa`aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaaa`aaaaaaaaa`aaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaaaaaa````````aaa```a```````aaa`aa``aa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaa```a````a`aa`````a`a`aaa`aaa``a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa``aaaaaa`aaaaaaaa`aaaaaaaaaaaaaaa`aaaaaaaa```a```````a````aa`a`aa`aaa``a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaa````a`````aa`````a`aa``aa``aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaa````aa````a``aa`a`aaa`aa``aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaa`aaaaaaa`aaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaa```````````a```aa``aaa`aaa`aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaa`aaaaaaaaa`aaaaaaaaaaaaaaa`aaaaaaaaaaaa```aaa`````a``````````````aa`aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa`aaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaa```aaaaaaa```````````a`aaa``aa``a``aaa`aaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaa```aaaaaaaaaa``aaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaa``````a``````````aa``a`aaaa``aa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaa```aaaa`aaaaaaaa`````aaa```aa```a``a`aaaa``aa`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaaaaaaa``````aa`aaa`aa``a``aaaa`aa`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaa`````````aaaaaa``aa`aaaa`aa``a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa````aaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aa``````````aaaa`a`aaaa``aa`a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aaa``aa`a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````aaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a```aaa`a`aaaa``aa`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```````````````````````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa```a`a`aaaaa`aa``a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaaaaaaaaa``aaaaa`aaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaa`aa`aaa`a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaaaaa``aaaaa``aaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````aa``aa`a`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aa``````aa`a`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaa`aaaaa``aaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aa`aaa`aaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaa`aaaa``aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a`aaa`aaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaa`aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aa``aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a````aaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa`aaa`aaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`aaa`aaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa`aaaa`aaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa`aaaa``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaa`aaaa``aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa``aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````aaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa``aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`a```````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa``aaaa`aaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa``aa``aaa``aaa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aa`aaaa``aaa``aa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa```aa``aa`aaaa``a```aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aa``aaaa``aa``aa``aaaa```a`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```a`aaaaaa`aa``aa``aaaaaaa``aaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```a`aaaaaa`aa``aa``aaaaaaa``aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aa`a``aaa`aa```a``aaaaaaa`aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aa`a``aaa`aa`a``a`aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa`a```a``aa`aa```aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``aa`aa```a`a``aa`aaa``aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa`aa```a````aa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aa``aa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", -"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" -}; diff --git a/Documentation/links.pod b/Documentation/links.pod deleted file mode 100644 index ebc316f933..0000000000 --- a/Documentation/links.pod +++ /dev/null @@ -1,164 +0,0 @@ -=head1 NAME - -links - Links to other related websites - -=head1 DESCRIPTION - -This page contains links to organisations and ftp-sites, which may be -of interest to LilyPond users. - -=head2 WWW - -=over 4 - -=item http://www.gnu.org/ - -LilyPond is part of the GNU Project started by the Free Software -Foundation to create a system of free software for the world-community - -=item http://www.zib.de/Visual/software/doc++/index.html - -The documentation system for C++ sources, which is used for the -LilyPond sources. - -=item http://www.iat.unc.edu/technology/music/music.html - -An enormous collection of music related URLs - -=item http://www.ram.org/ramblings/philosophy/fmp.html - -Musings on free music, plus hints how to record your own (free) music. - -=back - -=head2 Ftp - -We will upload major releases to the following sites: - -=over 4 - -=item ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert - -The GNU/Linux FTP site - -=item ftp://ftp.dante.de/tex-archive/support/lilypond - -An ftp site which is in CTAN. - -=item ftp://ftp.redhat.com/pub/contrib/ - -The FTP site of RedHat Software. - - -=back - -At this moment we have about one development-patchlevel per week. -These development releases will also be at - -=over 4 - -=item ftp://pcnov095.win.tue.nl/pub/lilypond/development - -=item ftp://sca.uwaterloo.ca/pub/lilypond - -=item [your mirror here] - -=back - -=head2 News - -The following newsgroups all contain material relevant to LilyPond - -=over 4 - -=item news://comp.music.research - -=item news://rec.music.compose - -=item news://gnu.announce - -=item news://comp.os.linux.announce - -=back - -=head2 Mailing lists - -For programs which are part of the GNU music project, the following -mailing list have been setup: - -=over 4 - -=item info-gnu-music@gnu.org - -A moderated list for information on the GNU Music project, to -subscribe: send mail with subject "subscribe" to -info-gnu-music-request@gnu.org. - -As this list is moderated, normal people should ask to drl@gnu.org or -hanwen@cs.ruu.nl to forward announces instead of sending it to -info-gnu-music@gnu.org - -=item help-gnu-music@gnu.org - -For help with programs from the GNU music project. To subscribe: send -mail with subject "subscribe" to -help-gnu-music-request@gnu.org - -=item bug-gnu-music@gnu.org - -If you have bugreports, you should send them to this list. If you want -to read all bugreports, you should subscribe to this list. To -subscribe: send mail with subject "subscribe" to -bug-gnu-music-request@gnu.org - -=item gnu-music-discuss@gnu.org, - -For discussions concerning the GNU Music project, to subscribe: send -mail with subject "subscribe" to -gnu-music-discuss-request@gnu.org - -This list is archived at -http://www.jab.org/mail/gnu-music-discuss@gnu.org - -=back - -Announces of new versions will be sent to info-gnu-music and -gnu-music-discuss. - - -=head2 Backlinks - -=over 4 - -=item http://www.ssc.com/linux/ - -The Number One Free Operating System Kernel: Linux - -=item http://www.bright.net/~dlphilp/linux_soundapps.html - -Dave Philips' Linux sound applications page - -=item http://www.home.fh-karlsruhe.de/~rost0001/web/musik/musik.html - -Stochastic composing using LilyPond - -=item http://www.medieval.org/emfaq/scores/software.html - -More software for (early) music. - -=item http://www.emry.net/webwatcher/ - -The Linux webwatcher: this site logs changes in important Linux sites. - -=item http://www.pbm.com/~lindahl/ravenscroft/modern - -Transcriptions of the music of Thomas Ravenscroft, partly using -LilyPond - -=item http://www.redhat.com/ - -RedHat Software Inc. develops and markets a GNU/Linux distribution (of -which we are avid users) - - -=back diff --git a/Documentation/links.yo b/Documentation/links.yo new file mode 100644 index 0000000000..acabea0e7b --- /dev/null +++ b/Documentation/links.yo @@ -0,0 +1,135 @@ + +article(links - Links to other related websites)(HWN and JCN)() + +sect(DESCRIPTION) + +This page contains links to organisations and ftp-sites, which may be +of interest to LilyPond users. + +sect(WWW) + +nsubsect(LilyPond) + +description( +dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site. +dit(lurl(http://www.digicash.com/~jan/lilypond/))Jan's site. +dit(lurl(http://sca.uwaterloo.ca/lilypond/))The canadian mirror +(thanks, Eric!) +) + +subsect(Other) + +description( +dit(lurl(http://www.gnu.org/)) + LilyPond is part of the GNU Project started by the Free Software + Foundation to create a system of free software for the world-community +dit(lurl(http://www.zib.de/Visual/software/doc++/index.html)) + The documentation system for C++ sources, which is used for the + LilyPond sources. +dit(lurl(http://www.digicash.com/~jan/yodl/index.html)) + LilyPond documentation is in Yodl. You'll need a recent + development version from + lurl(ftp://pcnov095.win.tue.nl/pub/yodl/development). +dit(lurl(http://www.iat.unc.edu/technology/music/music.html)) + An enormous collection of music related URLs +dit(lurl(http://www.ram.org/ramblings/philosophy/fmp.html)) + Musings on free music, plus hints how to record your own (free) music. +) + +sect(Ftp) + +We will upload major releases to the following sites: + +description( +dit(lurl(ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert)) + The GNU/Linux FTP site + +dit(lurl(ftp://ftp.dante.de/tex-archive/support/lilypond)) + An ftp site which is in CTAN. CTAN is a worldwide network of + sites full of TeX() stuff. + +dit(lurl(ftp://ftp.redhat.com/pub/contrib/)) + The FTP site of RedHat Software. +) + +At this moment we have about one development-patchlevel per week. +These development releases will also be at + +itemize( +it()lurl(ftp://pcnov095.win.tue.nl/pub/lilypond/development) + +it()lurl(ftp://sca.uwaterloo.ca/pub/lilypond) + +it()[your mirror here] +) + +sect(News) + +The following newsgroups all contain material relevant to LilyPond +itemize( + +it()lurl(news://comp.music.research) + +it()lurl(news://rec.music.compose) + +it()lurl(news://gnu.announce) + +it()lurl(news://comp.os.linux.announce) +) + +sect(Mailing lists) + +For programs which are part of the GNU music project, the following +mailing list have been setup: + +description( +dit(info-gnu-music@gnu.org) + A moderated list for information on the GNU Music project, to + subscribe: send mail with subject "subscribe" to + info-gnu-music-request@gnu.org. + + As this list is moderated, normal people should ask to + nemail(David R. Linn)(drl@gnu.org) or + nemail(Han-Wen)(hanwen@cs.uu.nl) to forward announces instead of + sending it to info-gnu-music@gnu.org + +dit(help-gnu-music@gnu.org) + For help with programs from the GNU music project. To subscribe: send + mail with subject "subscribe" to + email(help-gnu-music-request@gnu.org) +dit(bug-gnu-music@gnu.org) + If you have bugreports, you should send them to this list. If you want + to read all bugreports, you should subscribe to this list. To + subscribe: send mail with subject "subscribe" to + email(bug-gnu-music-request@gnu.org) +dit(gnu-music-discuss@gnu.org,) + For discussions concerning the GNU Music project, to subscribe: send + mail with subject "subscribe" to + email(gnu-music-discuss-request@gnu.org) + This list is archived at + lurl(http://www.jab.org/mail/gnu-music-discuss@gnu.org) +) + +Announces of new versions will be sent to info-gnu-music and +gnu-music-discuss. + +sect(Backlinks) + +description( +dit(lurl(http://www.ssc.com/linux/)) + The Number One Free Operating System Kernel: Linux +dit(lurl(http://www.bright.net/~dlphilp/linux_soundapps.html)) + Dave Philips' Linux sound applications page +dit(lurl(http://www.home.fh-karlsruhe.de/~rost0001/web/musik/musik.html)) + Stochastic composing using LilyPond +dit(lurl(http://www.medieval.org/emfaq/scores/software.html)) + More software for (early) music. +dit(lurl(http://www.emry.net/webwatcher/)) + The Linux webwatcher: this site logs changes in important Linux sites. +dit(lurl(http://www.pbm.com/~lindahl/ravenscroft/modern)) + Transcriptions of the music of Thomas Ravenscroft, partly using + LilyPond +dit(lurl(http://www.redhat.com/)) + RedHat Software Inc. develops and markets a GNU/Linux distribution (of + which we are avid users) +) diff --git a/Documentation/literature.pod b/Documentation/literature.pod deleted file mode 100644 index 37fb180df3..0000000000 --- a/Documentation/literature.pod +++ /dev/null @@ -1,325 +0,0 @@ -=head1 NAME - -Literature -- reading on music engraving, typesetting, etc. - -=head1 DESCRIPTION - -A list of resources on music printing/writing and engraving. Please -note that don't have access to most material. - -[Personal comments appear in brackets. What I (HWN) know, I've -commented myself. They are just my personal comments, not to be taken -too seriously] - -=head2 Music engraving: references - -Helene Wanske. ``Musiknotation --- Von der Syntax des Notenstichs zum -EDV-gesteuerten Notensatz'', Schott-Verlag, Mainz 1988. ISBN -3-7957-2886-x. - -[I. A very thorough overview of engraving practices of various -craftsmen. It includes detailed specs of characters, dimensions etc. -II. a thorough overview of a anonymous (by now antiquated) automated -system. EDV Means e(lektronischen) D(aten)v(erarbeitung), electronic -data processing HWN] - -Maxwell Weaner and Walter Boelke. ``Standard Music Notation Practice'', -revised edition by Arnold Broido and Daniel Dorff. Music Publisher's -Association of the United States Inc., 1993. - -Ted Ross. ``Teach yourself the art of music engraving and processing'' -(3rd edition). Hansen House, Miami Beach, FLorida. - -[This is about engraving, i.e. professional typesetting. It contains -directions on good typesetting, but the sections on reproduction -technicalities, how to use pens and history are interesting. -Especially the section on Music Typewriters is amusing HWN] - -Gardner Read. ``Modern Rhythmic Notation.'' Indiana University Press, -1978. - -[Sound (boring) review of the various hairy rhythmic notations used by -avant-garde composers HWN] - -Gardner Read. ``Music Notation: a Manual of Modern Practice'' (2nd -edition). Taplinger Publishing, New York. (Out of print) - -[This is as close to the ``standard'' reference work for music -notation issues as one is likely to get. MB] - -Karl Hader. ``Aus der Werkstatt eines Notenstechers'' Waldheim--Eberle -Verlag, Vienna 1948 - -[Hader was the chief-engraver of the Waldheim-Eberle music publishers. -This book contains the most important rules on engraving (according to -[Chlapik])] - -MPA. Standard music notation specifications for computer programming. -December 1996 - -[Pamphlet explaining some fine points in music font design HWN] - -D. Roush. ``Music Formatting Guidelines,'' Technical Report -OSU-CISRC-3/88-TR10, Department of Computer and Information Science, -The Ohio State University, 1988. - -[Rules on formatting music formulated for use in computers. Mainly -distilled from [Ross] HWN] - - -=head2 Notation with computers - -Donald Byrd. ``Music Notation by Computer''. Dissertation Indiana -University, 1985. - -Donald Byrd. ``A System for Music Printing by Computer.'' Computers -and the Humanities, 8 (1974), 161-72. - -Leland Smith. ``Editing and Printing Music by Computer.'' Journal of -Music Theory, 17 (1973), 292-309. - -[If I remember correctly, this was concerned more with an input -language than with the typography. SP.] - -David A Gomberg. ``A Computer-Oriented System for Music Printing.'' -Dissertation Washington University. 1975. - -Walter B Hewlett. and Eleanor Selfridge-Field. ``Directory of Computer -Assisted Research in Musicology''. Menlo Park, CA: Center for Computer -Assisted Research in the Humanities. - -[Annual editions since 1985, many containing surveys of music -typesetting technology. SP] - -David A. Gomberg; ``A Computer-oriented System for Music Printing.'' -Computers and the Humanities, Vol.11, pp 63-80. - -John S. Gourlay. ``Spacing a Line of Music,'' Technical Report -OSU-CISRC-10/87-TR35, Department of Computer and Information Science, -The Ohio State University, 1987. - -[Algorithm for generating spacing in one line of (polyphonic) music, -tailored for use with MusiCopy. LilyPond uses a variant of it (as of -pl 76) HWN] - -Allen Parish, Wael A. Hegazy, John S. Gourlay, Dean K. Roush and -F. Javier Sola. ``MusiCopy: An automated Music Formatting System''. -Technical Report OSU-CISRC-10/87-TR29, Department of Computer and -Information Science, The Ohio State University, 1987. - -[A brief overview of MusiCopy HWN] - -John S. Gourlay, A. Parrish, D. Roush, F. Sola, Y. Tien. ``Computer -Formatting of Music,'' Technical Report OSU-CISRC-2/87-TR3, Department -of Computer and Information Science, The Ohio State University, 1987. - -[This paper discusses the development of algorithms for the formatting -of musical scores (from abstract). It also appeared at PROTEXT III, -Ireland 1986] - -Wael A. Hegazy. ``On the Implementation of the MusiCopy Language -Processor,'' Technical Report OSU-CISRC-10/87-TR34, Department of -Computer and Information Science, The Ohio State University, 1987. - -[Describes the "parser" which converts MusiCopy MDL to MusiCopy -Simultaneities & columns HWN] - -Wael A. Hegazy and John S. Gourlay. ``Optimal line breaking in -music''. Technical Report OSU-CISRC-8/87-TR33, Department of Computer -and Information Science, The Ohio State University, 1987 - -[This generalizes TeX's breaking algorithm to music. It also appeared in -Document Manipulation and Typography, J.C. van Vliet (ed) 1988. HWN] - -Dean K. Roush. ``Using MusiCopy''. Technical Report -OSU-CISRC-18/87-TR31, Department of Computer and Information Science, -The Ohio State University, 1987 - -[User manual of MusiCopy. Includes an impressive example piece. HWN.] - -A. Parrish and John S. Gourlay. ``Computer Formatting of Musical -Simultaneities,'' Technical Report OSU-CISRC-10/87-TR28, Department of -Computer and Information Science, The Ohio State University, 1987. - -[Placement of balls, stems, dots which occur at the same moment -("Simultaneity") HWN] - -F. Sola. ``Computer Design of Musical Slurs, Ties and Phrase Marks,'' -Technical Report OSU-CISRC-10/87-TR32, Department of Computer and -Information Science, The Ohio State University, 1987. - -[Overview of a procedure for generating slurs HWN] - -F. Sola and D. Roush. ``Design of Musical Beams,'' Technical Report -OSU-CISRC-10/87-TR30, Department of Computer and Information Science, -The Ohio State University, 1987. - -[Calculating beam slopes HWN] - -John. S. Gourlay. ``A language for music printing'', Communications -of the ACM, Vol. 29(5), 388--401, 1986. - -[This paper describes the MusiCopy musicsetting system and an input -language to go with it. HWN] - -Dorothea Blostein and Lippold Haken. ``The Lime Music Editor: A Diagram -Editor Involving Complex Translations'', Software Practice and -Experience, Vol. 24, No. 3, March 1994, pp. 289-306. - -[A description of various conversions, decisions and issues relating -to this interactive editor HWN] - -Lippold Haken and Dorothea Blostein. ``The Tilia Music Representation: -Extensibility, Abstraction, and Notation Contexts for the Lime Music -Editor'', Computer Music Journal, Vol. 17, No. 3, 1993, pp. 43-58 - -[A description of Lime internals (which resemble older (before -0.0.68pre) LilyPond data structures somewhat) HWN] - -Lippold Haken and Dorothea Blostein. ``A New Algorithm for Horizontal -Spacing of Printed Music'', International Computer Music Conference, -Banff, Sept. 1995, pp. 118-119. - -[This describes an algorithm which uses springs between adjacent -columns. This algorithm is a "subclass" of the LilyPond algorithm. HWN] - -Dorothea Blostein and Lippold Haken. ``Justification of Printed Music'', -Communications of the ACM, VolJ34, No. 3, March 1991, pp. 88-99. - -[This paper provides a shallow overview of the algorithm used in LIME -for spacing individual lines. HWN] - -Gary M. Rader. ``Creating Printed Music Automatically''. Computer Vol -29(6), June 1996, pp 61--69. - -[Describes a system called MusicEase, and explains that it uses -"constraints" (which go unexplained) to automatically position various -elements. HWN] - -Stephen Dowland Page. ``Computer Tools for Music Information -Retrieval''. Dissertation University of Oxford, 1988. - -[Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, -or to the British Library, instead. SP] - -Ren\'e Roelofs. ``Een Geautomatiseerd Systeem voor het Afdrukken van -Muziek'' afstudeerscriptie Bestuurlijke informatica, no 45327, Erasmus -universiteit Rotterdam, 1991. (``An automated system for printing -music'' Master's Thesis Managerial Computer Science.) - -[This dutch thesis describes a simplistic (monophonic) typesetting system, -and focuses on the breaking algorithm, which is taken from Hegazy & -Gourlay HWN] - -Miguel Filgueiras and Jos\'e Paulo Leal. ``Representation and -manipulation of music documents in SceX''. Electronic Publishing, -vol. 6 (4), 507--518, 1993. - -Eric Foxley, ``Music --- A language for typesetting music scores''. -Software --- Practice and Experience, Vol. 17(8), 485--502, 1987. - -[A paper on a TROFF preprocessor to typeset music. The output shown is -not very sophisticated, and contains some typographical atrocities HWN] - -Miguel Filgueiras. ``Implementing a Symbolic Music Processing -System''. LIACC, Universidade do Porto, 1996; submitted. - -Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, -Universidade do Porto, forthcoming. - -=head2 Engraving: further reading - -Tom Gerou and Linda Lusk. ``Essential Dictionary of Music Notation'' -Alfred Publishing, Van Nuys CA, 1996. ISBN 0-88284-768-6. - -[A concise, alphabetically ordered list of typesetting and music -(notation) issues with a rather simplistic attitude but in most -cases "good-enough" answers JCN] - -Herbert Chlapik. ``Die Praxis des Notengraphikers''. Doblinger, 1987. -ISBN 3-9000 035-96-2. - -[An clearly written book for the casually interested reader. It shows -some of the conventions and difficulties in printing music HWN] - -The University of Colorado Music Engraving page. -http://obenamots.cc.colorado.edu/Musicpress/engraving.html - -[Webpages about engraving (designed with finale users in mind) (sic) HWN] - -Richard Rastall. ``The Notation of Western Music: an -Introduction''. J. M. Dent & Sons London, 1983 - -[Interesting account of the evolution and origin of common notation -starting from neumes, and ending with modern innovations HWN] - -Anthony Donato. Preparing Music Manuscript. Englewood Cliffs: -Prentice-Hall, 1963. - -Donemus. ``Uitgeven van muziek''. Donemus Amsterdam, 1900 - -George Heussenstamm. ``The Norton Manual of Music Notation''. New York: -Norton, 1987. - -Erdhard Karkoshka. ``Notation in New Music. Trans. Ruth -Koenig''. Praeger Publishers, New York, 1972. (Out of print) - -C. Roemer, ``The Art of Music Copying''. Roerick music co., Sherman Oaks -(CA), 1973. - -Glen Rosecrans. ``Music Notation Primer''. New York: Passantino, 1979. - -Kurt Stone. ``Music Notation in the Twentieth Century''. New York: Norton, -1980. (Out of print) - - - -=head2 Other stuff - - -Peter S. Langston. ``Unix music tools at Bellcore''. Software --- -Practice and Experience, Vol. 20(S1), S1/47--S1/61, 1990. - -[This paper deals with some command-line tools for music editing and -playback. It doesn't mention notation issues, but does come with the -grand idea (not) of using music to monitor complex systems. Imagine -your nuclear plant supervisor to use AC/DC for checking the reactor HWN] - - -=head2 File formats - -Howard Wright , ``how to read and write tab: a -guide to tab notation''. -http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html - -[FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN] - -Cindy Grande, ``NIFF6a Notation Interchange File Format''. Grande -Software Inc., 1995. http://www.jtauber.com/music/encoding/niff/ - -[Specs for NIFF, a comprehensive but binary (yuk) format for notation HWN] - -SMDL, Standard Musical Description Language, -ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf. ISO/IEC DIS 10743. - -[An ISO defined SGML language. A much more thorough treatment of music -definition than Mudela (but not suited for manual entry). It deals -with notation and perfomance issues by (basically) saying "You can -embed a MIDI or NIFF file" (sic) HWN] - -MPDL, - -HMSL, Hierarchical Music Structured Language, - -DARMS, - -enigma, - -=head1 AUTHORS - -References and comments contributed by Han-Wen Nienhuys (HWN), Miguel -Filgueiras, Mark Basinski (MB), Dorothea Blostein, Stephen Page (SP), -Jan Nieuwenhuizen (JCN), Peter Kerr. - -This should really be redone in BibTeX - diff --git a/Documentation/man/Makefile b/Documentation/man/Makefile index 1dc4f661ec..a3157a3eb9 100644 --- a/Documentation/man/Makefile +++ b/Documentation/man/Makefile @@ -1,19 +1,28 @@ +# Documentation/man/Makefile depth = ../.. -include $(depth)/make/Include.make -include $(depth)/make/Docrules.make +include $(depth)/make/Stepmake.make + +include $(stepdir)/Documentation.vars.make +include $(stepdir)/Documentation_rules.make + SECTION=1 -MANTXT = $(addprefix $(outdir)/, $(addsuffix $(DOTTEXT),$(basename $(PODFILES) .pod))) -MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION),$(basename $(PODFILES) .pod))) +MANTXT = $(addprefix $(outdir)/, $(addsuffix .txt,$(basename $(TEXINFO_FILES) .texinfo))) +MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION),$(basename $(YO_FILES) .yo))) + +OUTTEXINFO_FILES= $(addprefix $(outdir)/, $(addsuffix .texinfo,$(basename $(YO_FILES) .yo))) default: $(MANTXT) $(MANGROFF) +texinfo: $(OUTTEXINFO_FILES) INSTALLATION_OUT_FILES=$(MANGROFF) INSTALLATION_OUT_DIR=$(mandir)/man$(SECTION) -include $(depth)/make/Install_outfiles.make +include $(stepdir)/Install_outfiles.make -local-WWW: $(OUTPODFILES:.pod=.html) - ls-latex --title 'Manual pages for LilyPond' $(PODFILES) > $(outdir)/index.html +local-WWW: $(MANGROFF:.1=.html) + $(PYTHON) $(step-bindir)/ls-latex.py --package=$(topdir) --title 'Manual pages for LilyPond' $(YO_FILES) \ + | sed "s!$(outdir)/!!g" > $(outdir)/index.html + $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) $(outdir)/index.html diff --git a/Documentation/man/convert-mudela.pod b/Documentation/man/convert-mudela.pod deleted file mode 100644 index 8ba3d04e5f..0000000000 --- a/Documentation/man/convert-mudela.pod +++ /dev/null @@ -1,49 +0,0 @@ -=head1 NAME - -convert-mudela - convert mudela to newer versions - -=head1 SYNOPSIS - - convert-mudela [options] [files] - -=head1 DESCRIPTION - -convert-mudela sequentially applies different mudela-conversions to -upgrade a Mudela input file from FROM_PATCHLEVEL to TO_PATCHLEVEL. -If no files are given, the standard input and output are used - -=head1 OPTIONS - -=over 4 - -=item B<--output> - -The output file to write - -=item B<--edit> - -Do an inline edit of the input file. override B<--output> - -=item B<--show-rules> - -shows all known conversions. - -=item B<--from>=FROM_PATCHLEVEL - -Set the level to convert from. If this is not set, convert-mudela will -guess this, on the basis of C<\version> strings in the file - -=item B<--to>=TO_PATCHLEVEL - -Set the goal version of the conversion. It defaults to the latest -available version. - -=back - -=head1 BUGS - -Not all language changes are handled. Multiple output options won't work - -=head1 AUTHOR - -Han-Wen Nienhuys diff --git a/Documentation/man/convert-mudela.yo b/Documentation/man/convert-mudela.yo new file mode 100644 index 0000000000..a9640b80f6 --- /dev/null +++ b/Documentation/man/convert-mudela.yo @@ -0,0 +1,67 @@ + +mailto(janneke@gnu.org) +COMMENT(ugh, should be automated) +COMMENT(urg + (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)()) +) +manpage(convert-mudela) + (1) + (1998) + (The LilyPond package) + (convert-mudela) + +metalC(Automatically generated by yodl(1) from convert-mudela.yo.) + +node(Programs)(convert-mudela)(Invoking convert-mudela)(Programs) +manpagename(convert-mudela)(convert-mudela to newer versions) + +convert-mudela sequentially applies different mudela-conversions to +upgrade a Mudela input file. + +menu( +mit(Invoking convert-mudela)( Command options supported by file(convert-mudela)) +mit(Bugs convert-mudela)( Bugs) +mit(Author convert-mudela)( Author) +) + +manpagedescription() + +Upgrade a Mudela input file from FROM_PATCHLEVEL to TO_PATCHLEVEL. +If no files are given, the standard input and output are used. + +node(convert-mudela)(Invoking convert-mudela)(Bugs convert-mudela)(convert-mudela) +manpagesynopsis() + + convert-mudela [options] [files] + +manpageoptions() +description( +dit(--output) + The output file to write +dit(--edit) + Do an inline edit of the input file. override @samp{--output} +dit(--show-rules) + shows all known conversions, and exit +dit(--from=FROM_PATCHLEVEL) + Set the level to convert from. If this is not set, convert-mudela will + guess this, on the basis of code(\version) strings in the file +dit(--to=TO_PATCHLEVEL) + Set the goal version of the conversion. It defaults to the latest + available version. +) + +node(Invoking convert-mudela)(Bugs convert-mudela)(Author convert-mudela)(convert-mudela) +manpagesection(BUGS) + +Not all language changes are handled. Multiple output options won't +work. + +convert-mudela is written in python, so you have install +url(python)(http://www.python.org). + + +node(Bugs convert-mudela)(Author convert-mudela)(LilyPond)(convert-mudela) +manpageauthor() + +nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), lurl(http://www.cs.uu.nl/people/hanwen) + diff --git a/Documentation/man/lilypond.pod b/Documentation/man/lilypond.pod deleted file mode 100644 index 9ba489dc1c..0000000000 --- a/Documentation/man/lilypond.pod +++ /dev/null @@ -1,329 +0,0 @@ -=head1 NAME - -lilypond - the GNU music typesetter - -=head1 SYNOPSIS - - lilypond [options] [inputfiles] - -=head1 DESCRIPTION - -LilyPond is the GNU Project music typesetter. The program generates -visual or auditive output from a music definition file: it can typeset -formatted sheet music to a TeX file and play (mechanical) performances -to a MIDI file. - -=head1 OPTIONS - -=over 5 - -=item B<-I,--include>=F, - -add F to the search path for input files. - -=item B<-M,--midi> - -This disables TeX output. If you have a \midi definition, it will do -the midi output only. - -=item B<-d,--dependencies> - -Also output rules to be included in Makefile. - -=item B<-D,--debug>, - -Turn debugging info on. GNU LilyPond reads the file F<.dstreamrc>, -which lists what functions and classes may produce copious debugging -output. - -=item B<-t,--test>, - -Switch on any experimental features. Not for general public use. - -=item B<-w,--warranty>, - -Show the warranty with which GNU LilyPond comes. (It comes with B!) - -=item B<-o,--output=>F, - -Set the default output file to F. - -=item B<-h,--help>, - -Show a summary of usage. - -=item B<-i,--init=>F, - -Set init file to F (default: F). - -=item B<--include, -I>=F, - -Add F to the search path for input files. - -=item B<--ignore-version, -V>, - -Make incompatible mudela version non-fatal. - -=item B<--find-quarts, -Q>, - -Warn about melodic intervals larger than a fourth. Useful for -converting absolute octave mode stuff to relative octaves. - - -=back - -=head1 FEATURES - -This is an overview of the features that GNU LilyPond supports. For -details on how to use them, you should consult mudela(5). - -=over 5 - -=item * - -ASCII script input, with identifiers (for music reuse), -customizable notenames, customisable fontset. - -=item * - -MIDI output lets you check if you have entered the correct notes. - -=item * - -MIDI to Mudela conversion through the mi2mu program. - -=item * - -Multiple staffs in one score. Each staff can have different meters. - -=item * - -Beams, slurs, ties, chords, super/subscripts (accents and text) -triplets, general n-plet (triplet, quadruplets, etc.), lyrics, -transposition dynamics (both absolute and hairpin style). - -=item * - -Multiple voices within one staff; beams optionally shared -between voices. Up to four voices is handled cleanly. - -=item * - -Multiple scores within one input file. Each score is output to -a different file. - -=item * - -Clef changes, meter changes, cadenza-mode, key changes, repeat bars. - -=back - -=head1 DISCLAIMER AND COPYING POLICY - -GNU LilyPond is copyright 1996-1998 by its authors. GNU LilyPond is -distributed under the terms of the GNU General Public License. GNU LilyPond -is provided without any warranty what so ever. -GNU LilyPond may be freely distributed. For further information consult -the GNU General Public License, from the file F. - -=head1 AUTHORS - -Please consult the documentation file AUTHORS for more detailed -information, and small contributions. - -=over 4 - -=item * - -Han-Wen Nienhuys , http://www.cs.ruu.nl/people/hanwen - -=item * - -Jan Nieuwenhuizen , http://www.digicash.com/~jan. - -=back - - -=head1 PROBLEMS - - -There is an extensive list of todoes and bugs. See F. If you -have a problem you should try to find out - -=over 4 - -=item * - -If the bug has been fixed in a newer release. - -=item * - -If the bug has been found earlier, consult F and F. - -=back - -If you have found a bug, then you should send a bugreport. - -=over 4 - -=item * -Send a copy of the input which causes the error. - -=item * -Send a description of the platform you use. - -=item * -Send a description of the LilyPond version you use (with -compile/configure options please). - -=item * -Send a description of the bug itself. - -=item * -Send it to bug-gnu-music@gnu.org (you don't have to subscribe -to this mailinglist). - -=back - -It does help if you can find out where the bug comes from: if GNU -LilyPond bombs out, then please recompile using with debugging info -turned on, and send gdb stacktrace of the crash. It also helps if you -can print the values of the objects. So if your trace is - - received SIGSEGV - (gdb) backtrace 12 - #0 Interval::operator+= (this=0x11fffec60..) - at ../flower/interval.hh:50 - #1 0x12005195c in Item::width (this=0x14008a680) at src/item.cc:39 - #2 0x12008fdbc in itemlist_width (its=0x11fffed58 .. - : - : - -Than it would help if you send a dump of the Interval and the Item -(use: C or use LilyPond C methods). - - -=head1 FILES - -=over 5 - -=item F - -The initialisation file with symbol tables etc. It -includes files from the directory F. - -=back - -=head1 ENVIRONMENT - -B an (one) additional directory for finding lilypond data. - -=head1 BUGS - -Lots of them. See F and F - -=head1 SEE ALSO - -=over 4 - -=item internals - -On technical details of LilyPond - -=item mudela-man - -On the input format. This is a LilyPond-enhanced LaTeX document. - -=item MANIFESTO - -Goals of the GNU LilyPond project. - -=item FAQ - -The GNU LilyPond FAQ list - -=item http://www.cs.ruu.nl/people/hanwen/lilypond/index.html - -GNU LilyPond has her own webpage. This webpage contains the MIDI, GIF -and PS files for some standard music files. It also has the complete -LilyPond documentation - -=back - -GNU LilyPond is -updated very frequently, the latest version is always available at: -ftp://pcnov095.win.tue.nl/pub/lilypond and -ftp://alpha.gnu.org/gnu/lilypond/ - - -For programs which are part of the GNU music project, the following -mailing list have been setup: - - -=over 4 - -=item info-gnu-music@gnu.org - -For information on the GNU Music project, to subscribe: send mail with -subject "subscribe" to info-gnu-music-request@gnu.org - -=item help-gnu-music@gnu.org - -For help with programs from the GNU music project. To subscribe: send -mail with subject "subscribe" to -help-gnu-music-request@gnu.org - -=item bug-gnu-music@gnu.org - -If you have bugreports, you should send them to this list. If you want -to read all bugreports, you should subscribe to this list. To -subscribe: send mail with subject "subscribe" to -bug-gnu-music-request@gnu.org - -=item gnu-music-discuss@gnu.org, - -For discussions concerning the GNU Music project, to subscribe: send -mail with subject "subscribe" to -gnu-music-discuss-request@gnu.org, - - -=back - -Announces of new versions will be sent to info-gnu-music and -gnu-music-discuss. - -=head1 REMARKS - -GNU LilyPond has no connection with the music package Rosegarden, other -than the names being similar :-) - -=head1 HISTORY - -(for a detailed changelog, see F) - -GNU LilyPond's roots lie in MPP, a preprocessor to the rather arcane -MusiXTeX macro package for TeX. A friend of mine, Jan Nieuwenhuizen -wrote the first 44 versions (0.01 to 0.44), then his program caught my -attention, and I was slowly sucked in to the interesting problem of -easily producing beautifully printed music. I contributed some -code. We soon realised that MPP's design was too fundamentally broken -to be repaired, so it was decided to rewrite MPP. We debated a lot about -the requirements to an inputformat (fall 1995). I sat down and started -with a parser-first, bottom-up rewrite called mpp95 (which totally -failed, obviously). - -After long and hard thinking, I came up with an algorithm for the -horizontal spacing of multiple staffs (april 1996) I coded it (and did -not test it). After starting with this fundamental piece, I slowly -added the stages which come before spacing, and after. A half year -later, I had a first working version, (october 1996). I announced -Patchlevel 0.0.7 (or 8) to the mutex list after asking some technical -details on spacing; it was downloaded approximately 4 times. Then I -got the hang of it, and in the subsequent two months, I coded until it -had doubled in size (pl 23). - -Most the other history is described in the NEWS file. The first large -scale release (0.1) was done after approximately 78 patchlevels on -August 1, 1997. - diff --git a/Documentation/man/lilypond.yo b/Documentation/man/lilypond.yo new file mode 100644 index 0000000000..c027f6c6f5 --- /dev/null +++ b/Documentation/man/lilypond.yo @@ -0,0 +1,251 @@ +COMMENT(i don't get this) +mailto(janneke@gnu.org) +COMMENT( + (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)()) +) +manpage(LilyPond) + (1) + (1998) + (The LilyPond package) + (The GNU Project Music Typesetter) + +metalC(Automatically generated by yodl(1) from lilypond.yo.) + +manpagename(LilyPond)(the GNU Music Typesetter) +cindex(LilyPond) + +COMMENT(nodes and menus by hand, for now) +node(Author convert-mudela)(LilyPond)(Invoking LilyPond)(Programs) +menu( +mit(Invoking LilyPond)( Command options supported by file(LilyPond)) +mit(Disclaimer LilyPond)( Disclaimer) +mit(Features LilyPond)( Features) +mit(Problems LilyPond)( Problems) +mit(Files LilyPond)( Files) +mit(Environment LilyPond)( Environment) +mit(Bugs LilyPond)( Bugs) +mit(See Also LilyPond)( See Also) +mit(Remarks LilyPond)( Remarks) +mit(History LilyPond)( History) +mit(Author LilyPond)( Author) +) + +node(LilyPond)(Invoking LilyPond)(Features LilyPond)(LilyPond) + +manpagesynopsis() + bf(lilypond) [OPTION]... [MUDELA-FILE]... + +manpagedescription() + +verbinclude(../BLURB.in) + +manpageoptions() +description( +dit(-I,--include=FILE) + add file(FILE) to the search path for input files. +dit(-M,--midi) + This disables TeX output. If you have a \midi definition, it will do the + midi output only. +dit(-d,--dependencies) + Also output rules to be included in Makefile. +dit(-D,--debug) + Turn debugging info on. GNU LilyPond reads the file file(.dstreamrc), + which lists what functions and classes may produce copious debugging + output. +dit(-t,--test) + Switch on any experimental features. Not for general public use. +dit(-w,--warranty) + Show the warranty with which GNU LilyPond comes. (It comes with + bf(NO WARRANTY)!) +dit(-o,--output=FILE) + Set the default output file to file(FILE). +dit(-h,--help) + Show a summary of usage. +dit(-i,--init=FILE) + Set init file to file(FILE) (default: file(init.ly)). +dit(--include, -I=DIRECTORY) + Add file(DIRECTORY) to the search path for input files. +dit(--ignore-version, -V) + Make incompatible mudela version non-fatal. +dit(--find-fourths, -Q) + Warn about melodic intervals larger than a fourth. Useful for + converting absolute octave mode stuff to relative octaves. +) + +node(Invoking LilyPond)(Features LilyPond)(Disclaimer LilyPond)(LilyPond) +manpagesection(FEATURES) + +This is an overview of the features that GNU LilyPond supports. For +details on how to use them, you should consult the Mudela tutorial, +which is included with the package. + + +itemize( +it()ASCII script input, with identifiers (for music reuse), + customizable notenames, customisable fontset. +it()MIDI output lets you check if you have entered the correct notes. +it()MIDI to Mudela conversion through the mi2mu program. +it()Multiple staffs in one score. Each staff can have different meters. +it()Beams, slurs, ties, chords, super/subscripts (accents and text) + triplets, general n-plet (triplet, quadruplets, etc.), lyrics, + transposition dynamics (both absolute and hairpin style). +it()Multiple voices within one staff; beams optionally shared + between voices. Up to four voices is handled cleanly. +it()Multiple scores within one input file. Each score is output to + a different file. +it()Clef changes, meter changes, cadenza-mode, key changes, repeat bars. +) + +node(Features LilyPond)(Disclaimer LilyPond)(Problems LilyPond)(LilyPond) +manpagesection(DISCLAIMER) + +GNU LilyPond is copyright 1996-1998 by its authors. GNU LilyPond is +distributed under the terms of the GNU General Public License. GNU LilyPond +is provided without any warranty what so ever. +GNU LilyPond may be freely distributed. For further information consult +the GNU General Public License, from the file file(COPYING). + +node(Disclaimer LilyPond)(Problems LilyPond)(Files LilyPond)(LilyPond) +manpagesection(PROBLEMS) + +There is an extensive list of todoes and bugs. See file(TODO). If you +have a problem you should try to find out + +itemize( +it()If the bug has been fixed in a newer release. +it()If the bug has been found earlier, consult file(TODO) and file(BUGS). +) + +If you have found a bug, then you should send a bugreport. + +itemize( +it()Send a copy of the input which causes the error. +it()Send a description of the platform you use. +it()Send a description of the LilyPond version you use + (with compile/configure options please). +it()Send a description of the bug itself. +it()Send it to email(bug-gnu-music@gnu.org) (you don't have to subscribe + to this mailinglist). +) + +node(Problems LilyPond)(Files LilyPond)(Environment LilyPond)(LilyPond) +manpagefiles() +description( +dit(file(init.ly)) + The initialisation file with symbol tables etc. It + includes files from the directory file(init/). +) + +node(Files LilyPond)(Environment LilyPond)(Bugs LilyPond)(LilyPond) +manspagesection(environment) + +description( +dit(LILYINCLUDE) + additional directories for finding lilypond data. The + format is like the format of file(PATH). +dit(LANG) + selects the language for the warning messages of LilyPond. +) + +node(Environment LilyPond)(Bugs LilyPond)(See Also LilyPond)(LilyPond) +manpagebugs() + +Lots of them. See file(TODO) and file(BUGS) + +node(Bugs LilyPond)(See Also LilyPond)(Remarks LilyPond)(LilyPond) +manpageseealso() + +description( +dit(internals) + On technical details of LilyPond +dit(mudela-man) + On the input format. This is a LilyPond-enhanced LaTeX document. +dit(MANIFESTO) + Goals of the GNU LilyPond project. +dit(FAQ) + The GNU LilyPond FAQ list +dit(GNU url(LilyPond)(http://www.cs.uu.nl/people/hanwen/lilypond/index.html)) + has her own webpage. This webpage contains the MIDI, GIF and PS files for + some standard music files. It also has the complete LilyPond documentation +) + +GNU LilyPond is +updated very frequently, the latest version is always available at: +lurl(ftp://pcnov095.win.tue.nl/pub/lilypond). This FTP site is mirrored +at a number of sites; consult the project web pages for information +about mirrors. + +For programs which are part of the GNU music project, the following +mailing list have been setup: + +description( +dit(email(info-gnu-music@gnu.org)) + For information on the GNU Music project, to subscribe: send mail with + subject "subscribe" to email(info-gnu-music-request@gnu.org) +dit(email(help-gnu-music@gnu.org)) + For help with programs from the GNU music project. To subscribe: send + mail with subject "subscribe" to email(help-gnu-music-request@gnu.org) +dit(email(bug-gnu-music@gnu.org)) + If you have bugreports, you should send them to this list. If you want + to read all bugreports, you should subscribe to this list. To + subscribe: send mail with subject "subscribe" to + email(bug-gnu-music-request@gnu.org) +dit(email(gnu-music-discuss@gnu.org)) + For discussions concerning the GNU Music project, to subscribe: send + mail with subject "subscribe" to + email(gnu-music-discuss-request@gnu.org) +) + +Announces of new versions will be sent to info-gnu-music and +gnu-music-discuss. + +node(See Also LilyPond)(Remarks LilyPond)(History LilyPond)(LilyPond) +manpagesection(REMARKS) + +GNU LilyPond has no connection with the music package Rosegarden, other +than the names being similar (:-) + +node(Remarks LilyPond)(History LilyPond)(Author LilyPond)(LilyPond) +manpagesection(HISTORY) +cindex(History) + +(for a detailed changelog, see file(NEWS)) + +GNU LilyPond's roots lie in MPP, a preprocessor to the rather arcane +MusiXTeX macro package for TeX. A friend of mine, Jan Nieuwenhuizen +wrote the first 44 versions (0.01 to 0.44), then his program caught my +attention, and I was slowly sucked in to the interesting problem of +easily producing beautifully printed music. I contributed some +code. We soon realised that MPP's design was too fundamentally broken +to be repaired, so it was decided to rewrite MPP. We debated a lot about +the requirements to an inputformat (fall 1995). I sat down and started +with a parser-first, bottom-up rewrite called mpp95 (which totally +failed, obviously). + +After long and hard thinking, I came up with an algorithm for the +horizontal spacing of multiple staffs (april 1996) I coded it (and did +not test it). After starting with this fundamental piece, I slowly +added the stages which come before spacing, and after. A half year +later, I had a first working version, (october 1996). I announced +Patchlevel 0.0.7 (or 8) to the mutex list after asking some technical +details on spacing; it was downloaded approximately 4 times. Then I +got the hang of it, and in the subsequent two months, I coded until it +had doubled in size (pl 23). + +Most the other history is described in the NEWS file. The first large +scale release (0.1) was done after approximately 78 patchlevels on +August 1, 1997. + +node(History LilyPond)(Author LilyPond)(Ly2dvi)(LilyPond) +manpageauthor() +cindex(Author) + +Please consult the documentation file file(AUTHORS.txt) for more detailed +information, and small contributions. + +itemize( +it()nemail(Han-wen Nienhuys)(hanwen@cs.uu.nl) + lurl(http://www.cs.uu.nl/people/hanwen) +it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org) + lurl(http://www.digicash.com/~jan) +) diff --git a/Documentation/man/ly2dvi.pod b/Documentation/man/ly2dvi.pod deleted file mode 100644 index 0fcbfb90fd..0000000000 --- a/Documentation/man/ly2dvi.pod +++ /dev/null @@ -1,263 +0,0 @@ -=head1 NAME - -ly2dvi - convert mudela to DVI - -=head1 SYNOPSIS - - ly2dvi [options] inputfile[.ly] [....] - -=head1 DESCRIPTION - -ly2dvi is a shell script which creates input file for LaTeX, -based on information from the output files from lilypond. -The script handles multiple files. If a mudela file name is -specified lilypond is run to make an output (TeX) file. - -One or more LaTeX files are created, based on information found -in the output (TeX) files, and latex is finally run to create -one or more DVI files. - -=head1 OPTIONS - -=over 5 - -=item B<-D,--debug> - -Set debug mode. There are two levels - in level one some debug -info is written, in level two the command C is run, which -echoes every command in the ly2dvi script. - -=item B<-F,--headers=> - -Name of additional LaTeX headers file. This is included in the -tex file at the end of the headers, last line before \begin{document} - -=item B<-H,--Heigth=> - -Set paper heigth (points). Used together with width and LaTeX name of -papersize in case of papersize unknown to ly2dvi. - -=item B<-F,--headers=> - -Name of additional LaTeX headers file. This is included in the -tex file at the end of the headers, last line before \begin{document} - -=item B<-K,--keeplilypond> - -Keep LilyPond output after the run. - -=item B<-L,--landscape> - -Set landscape orientation - portrait is the default. -(C<-L> produces C<\usepackage[landscape]{article}>) - -=item B<-N,--nonumber> - -Switch off page numbering. - -=item B<-O,--orientation=> - -Set orientation landscape - obsolete, use C<-L> instead. - -=item B<-W,--Width=> - -Set paper width (points). Used together with heigth and LaTeX name of -papersize in case of papersize unknown to ly2dvi. - -=item B<-d,--dependencies> - -Tell lilypond to make dependencies file. - -=item B<-h,--help> - -Print help. - -=item B<-k,--keeply2dvi> - -Keep the LaTeX file after the run. - -=item B<-l,--language=> - -Specify LaTeX language. -(C<-l norsk> produces C<\usepackage[norsk]{babel}>). - -=item B<-o,--output=> - -Set output directory. - -=item B<-p,--papersize=> - -Specify papersize. -(C<-p a4> produces C<\usepackage[a4paper]{article}>) - -=item B<-s,--separate> - -Normally all output files are included into one LaTeX file. -With this switch all files are run separately, to produce one -DVI file for each. - -=back - -=head1 FEATURES - -ly2dvi responds to several parameters specified in the mudela -file. They are overridden by corresponding command line options. - -=over 5 - -=item B - -Specify LaTeX language - -=item B - -Specify additional LaTeX headers file - -=item B - -Set orientation. - -=item B - -Specify the width (pt, mm or cm) of the printed lines. - -=item B - -Specify name of papersize. - -=back - -=head1 ENVIRONMENT - -=over 5 - -=item B - -Additional directories for input files. - -=item B - -Temporary directory name. Default is /tmp - -=back - -=head1 FILES - -F is inspected for definitions used to extract -additional text definitions from the mudela file. In the current -version the following are defined: - -=over 5 - -=item B - -The title of the music. Centered on top of the first page. - -=item B<subtitle> - -Subtitle, centered below the title. - -=item B<composer> - -Name of the composer, rightflushed below the subtitle. - -=item B<arranger> - -Name of the arranger, rightflushed below the composer. - -=item B<instrument> - -Name of the instrument, leftflushed at same level as the composer. - -=back - -F</usr/local/share/lilyrc /etc/lilyrc $HOME/.lilyrc ./.lilyrc> -are files to set up default running conditions/variables, Bourne shell -syntax. All files are parsed, in the shown sequence. The variables are -overridden by variables in the mudela file, and by command line options. -In the current version the following are allowed: - -=over 5 - -=item B<LANGUAGE=> - -Specify LaTeX language. - -=item B<LATEXHF=> - -Specify additional LaTeX headers file - -=item B<LILYINCLUDE=> - -Additional directories for input files. - -=item B<ORIENTATION=> - -Set orientation - portrait is the default. - -=item B<OUTPUTDIR=> - -Set output directory. - -=item B<PAPERSIZE=> - -Specify name of papersize. - -=item B<PHEIGTH=> - -Specify paperheight (points - an inch is 72.27, a cm is 28.453 points). - -=item B<TMP=> - -Temporary directory name. - -=item B<PWIDTH=> - -Specify paperwidth (points - an inch is 72.27, a cm is 28.453 points). - -=back - -=head1 SEE ALSO - -lilypond(1), tex(1), latex(1) - -=head1 AUTHOR - -Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>, -http://www.termo.unit.no/mtf/people/janaf/ - -=head1 BUGS - -If you have found a bug, you should send a bugreport. - -=over 4 - -=item * -Send a copy of the input which causes the error. - -=item * -Send a description of the platform you use. - -=item * -Send a description of the LilyPond and ly2dvi version you use. - -=item * -Send a description of the bug itself. - -=item * -Send it to bug-gnu-music@gnu.org (you don't have to subscribe -to this mailinglist). - -=back - -=head1 REMARKS - -Many papersizes are now supported. Information on other sizes -(LaTeX names, horizontal and vertical sizes) should be mailed to -the author or to the mailing list. - -Supported papersizes are: - -a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, archA, archB, archC, archD, -archE, b0, b1, b2, b3, b4, b5, flsa, flse, halfletter, ledger, legal, -letter, note diff --git a/Documentation/man/ly2dvi.yo b/Documentation/man/ly2dvi.yo new file mode 100644 index 0000000000..d0a0c6dd28 --- /dev/null +++ b/Documentation/man/ly2dvi.yo @@ -0,0 +1,199 @@ +mailto(janneke@gnu.org) +manpage(LilyPond) + (1) + (1998) + (The LilyPond package) + (Ly2dvi) + +metalC(Automatically generated by yodl(1) from ly2dvi.yo.) + +node(Author LilyPond)(Ly2dvi)(Invoking Ly2dvi)(Programs) +manpagename(Ly2dvi)(convert mudela to DVI) + +menu( +mit(Invoking Ly2dvi)( Command options supported by file(Ly2dvi)) +mit(Features Ly2dvi)( Features) +mit(Environment Ly2dvi)( Environment) +mit(Files Ly2dvi)( Files) +mit(See Also Ly2dvi)( See Also) +mit(Bugs Ly2dvi)( Bugs) +mit(Remarks Ly2dvi)( Remarks) +mit(Author Ly2dvi)( Author) +) + +manpagedescription() +ly2dvi is a shell script which creates input file for LaTeX, +based on information from the output files from lilypond. +The script handles multiple files. If a mudela file name is +specified lilypond is run to make an output (TeX) file. + +One or more LaTeX files are created, based on information found +in the output (TeX) files, and latex is finally run to create +one or more DVI files. + +node(Ly2dvi)(Invoking Ly2dvi)(Features Ly2dvi)(Ly2dvi) +manpagesynopsis() + + ly2dvi [options] inputfile[.ly] [....] + +manpageoptions() + +description( +dit(-D,--debug) + Set debug mode. There are two levels - in level one some debug + info is written, in level two the command bf(set -x) is run, which + echoes every command in the ly2dvi script. +dit(-F,--headers=) + Name of additional LaTeX headers file. This is included in the + tex file at the end of the headers, last line before code(\begin{document}) +dit(-H,--Heigth=) + Set paper heigth (points). Used together with width and LaTeX name of + papersize in case of papersize unknown to ly2dvi. +dit(-F,--headers=) + Name of additional LaTeX headers file. This is included in the + tex file at the end of the headers, last line before code(\begin{document}) +dit(-K,--keeplilypond) + Keep LilyPond output after the run. +dit(-L,--landscape) + Set landscape orientation - portrait is the default. + (bf(-L) produces code(\usepackage[landscape]{article})) +dit(-N,--nonumber) + Switch off page numbering. +dit(-O,--orientation=) + Set orientation landscape - obsolete, use bf(-L) instead. +dit(-W,--Width=) + Set paper width (points). Used together with heigth and LaTeX name of + papersize in case of papersize unknown to ly2dvi. +dit(-d,--dependencies) + Tell lilypond to make dependencies file. +dit(-h,--help) + Print help. +dit(-k,--keeply2dvi) + Keep the LaTeX file after the run. +dit(-l,--language=) + Specify LaTeX language. + (bf(-l norsk) produces code(\usepackage[norsk]{babel})). +dit(-o,--output=) + Set output directory. +dit(-p,--papersize=) + Specify papersize. + (bf(-p a4) produces code(\usepackage[a4paper]{article})) +dit(-s,--separate) + Normally all output files are included into one LaTeX file. + With this switch all files are run separately, to produce one + DVI file for each. +) + +node(Invoking Ly2dvi)(Features Ly2dvi)(Environment Ly2dvi)(Ly2dvi) +manpagesection(Features) + +ly2dvi responds to several parameters specified in the mudela +file. They are overridden by corresponding command line options. + +description( +dit(language="";) + Specify LaTeX language +dit(latexheaders="";) + Specify additional LaTeX headers file +dit(orientation="";) + Set orientation. +dit(paperlinewidth="";) + Specify the width (pt, mm or cm) of the printed lines. +dit(papersize="";) + Specify name of papersize. +) + +node(Features Ly2dvi)(Environment Ly2dvi)(Files Ly2dvi)(Ly2dvi) +manpagesection(Environment) + +description( +dit(LILYINCLUDE) + Additional directories for input files. +dit(TMP) + Temporary directory name. Default is /tmp +) + +node(Environment Ly2dvi)(Files Ly2dvi)(See Also Ly2dvi)(Ly2dvi) +manpagesection(Files) + +file(titledefs.tex) is inspected for definitions used to extract +additional text definitions from the mudela file. In the current +version the following are defined: + +description( +dit(title) + The title of the music. Centered on top of the first page. +dit(subtitle) + Subtitle, centered below the title. +dit(composer) + Name of the composer, rightflushed below the subtitle. +dit(arranger) + Name of the arranger, rightflushed below the composer. +dit(instrument) + Name of the instrument, leftflushed at same level as the composer. +) + +file(/usr/local/share/lilyrc /etc/lilyrc $HOME/.lilyrc ./.lilyrc) +are files to set up default running conditions/variables, Bourne shell +syntax. All files are parsed, in the shown sequence. The variables are +overridden by variables in the mudela file, and by command line options. +In the current version the following are allowed: + +description( +dit(LANGUAGE=) + Specify LaTeX language. +dit(LATEXHF=) + Specify additional LaTeX headers file +dit(LILYINCLUDE=) + Additional directories for input files. +dit(ORIENTATION=) + Set orientation - portrait is the default. +dit(OUTPUTDIR=) + Set output directory. +dit(PAPERSIZE=) + Specify name of papersize. +dit(PHEIGTH=) + Specify paperheight (points - an inch is 72.27, a cm is 28.453 points). +dit(TMP=) + Temporary directory name. +dit(PWIDTH=) + Specify paperwidth (points - an inch is 72.27, a cm is 28.453 points). +) + +node(Files Ly2dvi)(See Also Ly2dvi)(Bugs Ly2dvi)(Ly2dvi) +manpagesection(See Also) + +lilypond(1), tex(1), latex(1) + +node(See Also Ly2dvi)(Bugs Ly2dvi)(Remarks Ly2dvi)(Ly2dvi) +manpagesection(Bugs) + +If you have found a bug, you should send a bugreport. + +itemize( +it()Send a copy of the input which causes the error. +it()Send a description of the platform you use. +it()Send a description of the LilyPond and ly2dvi version you use. +it()Send a description of the bug itself. +it()Send it to email(bug-gnu-music@gnu.org) (you don't have to subscribe + to this mailinglist). +) + +node(Bugs Ly2dvi)(Remarks Ly2dvi)(Author Ly2dvi)(Ly2dvi) +manpagesection(Remarks) + +Many papersizes are now supported. Information on other sizes +(LaTeX names, horizontal and vertical sizes) should be mailed to +the author or to the mailing list. + +Supported papersizes are: + +a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, archA, archB, archC, archD, +archE, b0, b1, b2, b3, b4, b5, flsa, flse, halfletter, ledger, legal, +letter, note + +node(Remarks Ly2dvi)(Author Ly2dvi)(Mi2mu)(Ly2dvi) +manpageauthor() + +nemail(Jan Arne Fagertun)(Jan.A.Fagertun@energy.sintef.no), lurl(http://www.termo.unit.no/mtf/people/janaf/) + diff --git a/Documentation/man/mi2mu.pod b/Documentation/man/mi2mu.pod deleted file mode 100644 index 6ee3e13a16..0000000000 --- a/Documentation/man/mi2mu.pod +++ /dev/null @@ -1,120 +0,0 @@ -=head1 NAME - -mi2mu - convert MIDI to mudela(5) - -=head1 SYNOPSIS - - mi2mu [options] midi-file - -=head1 DESCRIPTION - -Mi2mu translates a MIDI input file to Mudela (GNU LilyPond source -format). Mi2mu is part of the GNU LilyPond music typesetting package. - -=head1 OPTIONS - -=over 4 - -=item B<-b, --no-quantify>, - -Write exact durations, e.g.: `a4*385/384'. - -=item B<-d, --debug>, - -Print lots of debugging stuff. - -=item B<-h, --help>, - -Show a summary of usage. - -=item B<-I, --include>=F<DIR>, - -Add DIR to search path. - -=item B<-k, --key>=ACC[:MINOR], - -Set default key. ACC > 0 sets number of sharps; ACC < 0 sets number -of flats. A minor key is indicated by ":1". - -=item B<-n, --no-silly>, - -Assume no plets or double dots, assume smallest (reciprocal) duration 16. - -=item B<-o, --output>=F<FILE>, - -Set FILE as default output. - -=item B<-p, --no-plets>, - -Assume no plets. - -=item B<-q, --quiet>, - -Be quiet. - -=item B<-s, --smallest=N>, - -Assume no shorter (reciprocal) durations than N. - -=item B<-v, --verbose>, - -Be verbose. - -=item B<-w, --warranty>, - -Show the warranty with which mi2mu comes. (It comes with B<NO WARRANTY>!) - -=item B<-x, --no-double-dots>, - -Assume no double dotted notes. - -=back - -=head1 FEATURES - -This is an overview of the features that Mi2mu supports. - -=over 4 - -=item * - -[todo] - -=back - -=head1 -DISCLAIMER & COPYING POLICY - -Mi2mu is copyright 1996, 1997 by its authors. Mi2mu is distributed -as part of GNU LilyPond, under the terms of the GNU General Public -License. Mi2mu is provided without any warranty what so ever. -Mi2mu may be freely distributed. For further information consult -the GNU General Public License, from the file F<COPYING>. - -=head1 AUTHORS - -Please consult the documentation file AUTHORS for more detailed -information, and small contributions. - -=over 4 - -=item * - -Jan Nieuwenhuizen <jan@digicash.com>, http://www.digicash.com/~jan. - -=back - -=head1 SEE ALSO - -=over 4 - -=item lilypond(1) - -The GNU LilyPond music typesetter. - -=item mudela-man - -On the input format. This is a LilyPond-enhanced LaTeX document. - -=back - diff --git a/Documentation/man/mi2mu.yo b/Documentation/man/mi2mu.yo new file mode 100644 index 0000000000..85decf245a --- /dev/null +++ b/Documentation/man/mi2mu.yo @@ -0,0 +1,90 @@ + +mailto(janneke@gnu.org) +COMMENT( + (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)()) +) +manpage(LilyPond) + (1) + (1998) + (Mi2mu) + (The LilyPond package) + +metalC(Automatically generated by yodl(1) from mi2mu.yo.) + +node(Author Ly2dvi)(Mi2mu)(Invoking Mi2mu)(Programs) + +manpagename(Mi2mu)(convert MIDI to bf(mudela)(5)) + +menu( +mit(Invoking Mi2mu)( Command options supported by file(Mi2mu)) +mit(Disclaimer Mi2mu)( Disclaimer) +mit(Author Mi2mu)( Author) +) + +manpagedescription() +Mi2mu translates a MIDI input file to Mudela (GNU LilyPond source +format). Mi2mu is part of the GNU LilyPond music typesetting package. + +node(Mi2mu)(Invoking Mi2mu)(Disclaimer Mi2mu)(Mi2mu) +manpagessynopsis() + + mi2mu [options] midi-file + +manpageoptions() + +description( +dit(-b, --no-quantify,) + Write exact durations, e.g.: `a4*385/384'. +dit(-D, --debug,) + Print lots of debugging stuff. +dit(-h, --help,) + Show a summary of usage. +dit(-I, --include=file(DIR),) + Add DIR to search path. +dit(-k, --key=ACC[:MINOR],) + Set default key. ACC > 0 sets number of sharps; ACC < 0 sets number + of flats. A minor key is indicated by ":1". +dit(-n, --no-silly,) + Assume no plets or double dots, assume smallest (reciprocal) duration 16. +dit(-o, --output=file(FILE),) + Set file(FILE) as default output. +dit(-p, --no-plets,) + Assume no plets. +dit(-q, --quiet,) + Be quiet. +dit(-s, --smallest=N,) + Assume no shorter (reciprocal) durations than N. +dit(-v, --verbose,) + Be verbose. +dit(-w, --warranty,) + Show the warranty with which mi2mu comes. (It comes with bf(NO WARRANTY)!) +dit(-x, --no-double-dots,) + Assume no double dotted notes. +) + +node(Invoking Mi2mu)(Disclaimer Mi2mu)(Author Mi2mu)(Mi2mu) +manpagesection(DISCLAIMER) + +Mi2mu is copyright 1996, 1997 by its authors. Mi2mu is distributed +as part of GNU LilyPond, under the terms of the GNU General Public +License. Mi2mu is provided without any warranty what so ever. +Mi2mu may be freely distributed. For further information consult +the GNU General Public License, from the file file(COPYING). + +manpageseealso() + +description( +dit(bf(lilypond)(1)) + The GNU LilyPond music typesetter. +dit(mudela-man) + On the input format. This is a LilyPond-enhanced LaTeX document. +) + +node(Disclaimer Mi2mu)(Author Mi2mu)(mudela-book)(Mi2mu) +manpageauthor() + +Please consult the documentation file file(AUTHORS) for more detailed +information, and small contributions. + +nemail(Jan Nieuwenhuizen)(janneke@gnu.org), lurl(http://www.digicash.com/~jan) + diff --git a/Documentation/man/mudela-book.pod b/Documentation/man/mudela-book.pod deleted file mode 100644 index f44c60b354..0000000000 --- a/Documentation/man/mudela-book.pod +++ /dev/null @@ -1,58 +0,0 @@ -=head1 NAME - -mudela-book - integrate LaTeX and mudela - -=head1 SYNOPSIS - - mudela-book [options] [file] - -=head1 DESCRIPTION - -If no file is given, input is taken from the standard input - -mudela-book runs LilyPond on fragments of mudela in your source file, -and produces a LaTeXable document, with formatted music. - - \begin{mudela} - CONTENTS - \end{mudela} - -runs LilyPond on CONTENTS, and puts the result back, surrounded by -\preexample and \postexample commands. The \begin takes the -following options: - -=over 4 - -=item fragment - -mudela-book adds some redtape. You -can substitute voice-contents for CONTENTS in this case. - -=item verbatim - -CONTENTS is copied into the TeX source enclosed in a verbatim block. - -=back - -=head1 OPTIONS - -=over 4 - -=item B<--outname> - -The name of TeX file to output. If none is given, the output is -printed on stdout. - -=item B<--outdir> - -The directory to output lilypond output and input to - -=back - -=head1 BUGS - -Doesn't handle incorrect input sanely. - -=head1 AUTHOR - -Han-Wen Nienhuys <hanwen@gnu.org> diff --git a/Documentation/man/mudela-book.yo b/Documentation/man/mudela-book.yo new file mode 100644 index 0000000000..4f1907558d --- /dev/null +++ b/Documentation/man/mudela-book.yo @@ -0,0 +1,75 @@ + +mailto(janneke@gnu.org) +COMMENT( + (PIPETHROUGH(echo -n `date '+%d/%b/%y'|tr '[a-z]' '[A-Z]'`)()) +) +manpage(LilyPond) + (1) + (1998) + (The LilyPond package) + (mudela-book) + +metalC(Automatically generated by yodl(1) from mudela-book.yo.) + +node(Author Mi2mu)(mudela-book)(Invoking mudela-book)(Programs) + +manpagename(mudela-book)(integrate LaTeX and mudela) + +menu( +mit(Invoking mudela-book)(Command options supported by file(mudela-book)) +mit(Bugs mudela-book)(Bugs) +mit(Author mudela-book)(Author) +) + +manpagedescription() file(mudela-book) is a script that helps +integrating mudela and LaTeX(). mudela-book runs LilyPond on +fragments of mudela in your source file, and includes the results into +document that can be processed with LaTeX(). The result is a text +document with formatted music integrated. + + +If the file contains the ``block'' + +verb( + \begin{mudela} + CONTENTS + \end{mudela} +) + +then LilyPond is run on CONTENTS. mudela-book puts the result back, +surrounded by code(\preMudelaExample) and code(\postMudelaExample) +commands. The code(\begin) takes the following options: + +description( +dit(fragment) + mudela-book adds some redtape. You + can substitute voice-contents for CONTENTS in this case. +dit(verbatim) + CONTENTS is copied into the TeX source enclosed in a verbatim block. +) + +node(mudela-book)(Invoking mudela-book)(Bugs mudela-book)(mudela-book) +manpagesection(Synopsis) + +description( +dit(--outname) + The name of LaTeX() file to output. If this option is not given, +the output name derived from the input name. The extension file(.doc) +is stripped, and code(.mudtex) appended. +dit(--outdir) + The directory to output lilypond output and input to. +dit(--help) + print a short help message +) + +node(Invoking mudela-book)(Bugs mudela-book)(Author mudela-book)(mudela-book) +manpagebugs() + +Doesn't handle incorrect input sanely. mudela-book is written in +python, so you have install url(python)(http://www.python.org). + +node(Bugs mudela-book)(Author mudela-book)(Mutopia)(mudela-book) +manpageauthor() + +nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), lurl(http://www.cs.uu.nl/people/hanwen) + diff --git a/Documentation/man/out/dummy.dep b/Documentation/man/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Documentation/mutopia.pod b/Documentation/mutopia.pod deleted file mode 100644 index 57c0f30002..0000000000 --- a/Documentation/mutopia.pod +++ /dev/null @@ -1,67 +0,0 @@ -=head1 NAME - -Mutopia project - manifesto - -=head1 DESCRIPTION - -Random ranting about the Mutopia project, aka "Music To the People." - -This is the ultimate goal which I want to accomplish using LilyPond -and mudela. - -=head1 WHY - -Music publishers make lots of money out of selling sheet music which -is in the public domain (the composers died a long time ago). It is -usually prohibited to xerox the sheet music. Publishers have two -arguments to justify this policy: the high prices are there to -guarantee diversity (keeping lots of it in stock is expensive), and to -encourage new work being composed. - -This is bad. Storing a Mudela file takes almost no space at all, and -if sheet music could be had for free, then it would be much easier -obtain less famous music. These composers have died long ago, and not -having their music available only discourages people from -experimenting with it. You deserve to get public domain music for -free (zero cents) - -=head1 WHAT - -For literature, the project Gutenberg has an archive of public domain -literary works. For music, this does not exist yet. - -We also need an archive of public domain sheet music; this is what we -call The Mutopia Project. - - -=head1 STATUS - -This project is still in its infancy: we have very little amount of -music available. The music is partly downloadable from the website. -All of it is included in the source archive of LilyPond. - -=over 4 - -=item * - -J.S. Bach, Das Wohltemperierte Clavier I: C major Prelude & Fugue, C -minor fugue. Solo cello suites: suite II. Six small preludes: some -preludes. - -=item * - -W. A. Mozart, Horn concerto 3, solo part + cadenza. - -=item * - -F. Schubert, St\"andchen (Serenade) "Leise flehen meine Lieder" - -=item * - -Tarquinio Merula, La Gallina a 2 violini - -=item * - -Paul Lacome d'Estalenx, La Feria, Los Toros (oboe 1) - -=back diff --git a/Documentation/mutopia.yo b/Documentation/mutopia.yo new file mode 100644 index 0000000000..28e1bf4c58 --- /dev/null +++ b/Documentation/mutopia.yo @@ -0,0 +1,48 @@ +node(Author mudela-book)(Mutopia)(Concept Index)(Top) + +article(Mutopia project - manifesto)(HWN and JCN)() + +This is some random ranting about the Mutopia project, aka "Music To +the People," the ultimate goal which I want to accomplish using +LilyPond and mudela. + +sect(Why) + +Music publishers make lots of money out of selling sheet music which +is in the public domain (the composers died a long time ago). It is +usually prohibited to xerox the sheet music. Publishers have two +arguments to justify this policy: the high prices are there to +guarantee diversity (keeping lots of it in stock is expensive), and to +encourage new work being composed. + +This is bad. Storing a Mudela file takes almost no space at all, and +if sheet music could be had for free, then it would be much easier +obtain less famous music. These composers have died long ago, and not +having their music available only discourages people from +experimenting with it. You deserve to get public domain music for +free (zero cents) + +sect(What ) + +For literature, the project Gutenberg has an archive of public domain +literary works. For music, this does not exist yet. + +We also need an archive of public domain sheet music; this is what we +call The Mutopia Project. + + +sect(Status) + +This project is still in its infancy: we have very little amount of +music available. The music is partly downloadable from the website. +All of it is included in the source archive of LilyPond. + +itemize( +it()J.S. Bach, Das Wohltemperierte Clavier I: C major Prelude & Fugue, C + minor fugue. Solo cello suites: suite II. Six small preludes: some + preludes. +it()W. A. Mozart, Horn concerto 3, solo part + cadenza. +it()F. Schubert, St\"andchen (Serenade) "Leise flehen meine Lieder" +it()Tarquinio Merula, La Gallina a 2 violini +it()Paul Lacome d'Estalenx, La Feria, Los Toros (oboe 1) +) diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod deleted file mode 100644 index 5d5d5872cd..0000000000 --- a/Documentation/other-packages.pod +++ /dev/null @@ -1,215 +0,0 @@ -=head1 NAME - -Other-packages -- related packages - -=head1 DESCRIPTION - -A (not-at-all complete) overview of other music-typesetting/notation -packages. Feel free to add info (and mail it to me). - -=head2 Free packages (with source) - -=over 4 - -=item Rosegarden, http://www.bath.ac.uk/~masjpf/rose.html. - -A Notation editor/Sequencer for X. Also outputs musictex. - -=item Common Notation, -http://www-ccrma.stanford.edu/CCRMA/Software/cmn/cmn.html - -A versatile lisp package. Part of the Common Music system. Input is in -Lisp. It needs the Adobe Sonata or Finale Petrucci font. - -=item Vivace, http://www.calband.berkeley.edu/~gmeeker/vivace - -A amateurish notation program for TclTk and X. - -=item MPP - -A preprocessor to MusixTeX by Jan Nieuwenhuizen and Han-Wen Nienhuys. -It is outdated by its successor, LilyPond. MPP is still available via -the CTAN archive. - -=item LilyPond, http://www.cs.ruu.nl/people/hanwen/lilypond/index.html - -Added for completeness. You are currently reading her documentation. - -=item Music, http://www.cs.nott.ac.uk/Department/Staff/ef/printing.html - -A TROFF preprocessor by Eric Foxley. - -=item PMX, http://www.gmd.de/Misc/Music/ - -A Preprocessor for MusiXTeX by Don Simons. - -=item M-Tx, - -A Preprocessor to PMX by Dirk Laurie. - -=item Musictex, http://www.gmd.de/Misc/Music/ - -MusicTeX is a macro package for TeX to typeset polyphonic or -instrumental music. It was originally written by Daniel Taupin. - -It includes a full-featured (but slightly unsightly) set of fonts. - -=item MusiXTeX, http://www.gmd.de/Misc/Music/ - -A rewrite of MusicTeX, originally by Ross Mitchell and Andreas Egler. -After quarrels, MusiXTeX has been split into two branches: - -=item MusiXTeX, http://www.gmd.de/Misc/Music/ - -Daniel Taupin's now maintains the branch that still carries -the name MusiXTeX. - -=item OpusTeX, http://www.inf.ethz.ch/personal/acherman/misc.html - -Andreas Egler's branch is now called OpusTeX. - -=item ABC2MTeX, http://www.gre.ac.uk/~c.walshaw/abc - -A preprocessor to MusixTeX by Chris Walshaw for transcribing folk and -traditional music. - -=item SceX http://www.ncc.up.pt/~mig/SceX.html - -A preprocessor to MusixTeX by Miguel Filgueiras. Source in prolog -available on request. (?) - -=item MUTEX, http://www.gmd.de/Misc/Music/ - -A TeX macro package for typesetting single-staff music by Angelika -Schofer & Andrea Steinbach. With some fonts. - -=back - -=head2 Free (zero cents) - -=over 4 - -=item Calliope, http://www.cl.cam.ac.uk/users/wfc/ - -A NeXT package by William F. Clocksin. Requires the Adobe Sonata font. - -=back - -=head2 Proprietary - -=over 4 - -=item Scribe, http://adu1.adu.lattrobe.edu.au/Music/Scribe.html - -A formatter for medieval scores. - -=item Mup, http://www.arkkra.com/ - -A program which creates PS from a script input. Although it comes with -C source code, it is shareware. - -=item MusicEase, http://mesa.colorado.edu/~grader/musicez.html - -Described in Computer vol 29(6). Shareware - -=item LIME, http://datura.cerl.uiuc.edu/ - -Notation editor for W95 and Mac - -=item Sibelius, http://www.acorn.co.uk/developers/sibelius/Home - -Notation editor on Acorn machines. Their developers call it ``best -notation program available''. In any case, they are good at bragging. - -=item [``EDV-Notensatz''] - -URW's music-engraving system described by [Wanske]. (Although URW -used ~DM 1.000.000 while developing this, it didn't buy them a cute -name.) - -=item Logic, http://www.emagic.com/ - -=item Finale - -=item Score, http://www.ymusic.com/Score - -Werner Lemberg <sx0005@sx2.hrz.uni-dortmund.de> writes: I consider -SCORE as the best program for typesetting classical music. [..] the -price is quite high (about US$ 1000) [..] It has a graphical -interface but to get all out of the program you have to learn a 400 -page manual almost by heart because you'll change most features by -inputting parameters (up to 20 for some items) on a command -line. Expect three months to master SCORE :-) - - -=item Personal Composer - -=item Mozart, http://www.mozart.co.uk/ - -A shareware windows package - -=item Capella - -=item Encore - -=item Musicator - -=item Noteworthy, http://www.ntworthy.com - -Shareware. - -=item WolfGang, http://www.unige.ch/lettres/armus/music/wolfgang.html - -=item Amadeus, Jerker.Elsgard@abc.se - -Jerker Elsgard <Jerker.Elsgard@abc.se> writes: professional and -expensive (DM 4000,--) engraving. Designed as a batch program (like -LilyPond). It is aimed at publishers. Its history is more than -fifteen years and Amadeus has been running under different Unix -clones. It uses MIDI-keyboard input - -=back - -=head2 Unknown - -=over 4 - -=item MusE, [no WWW address known] - -A-R Music Engraving, by A-R Editions, Inc. Professional engraving on -Sun boxen. - -=item MusiCopy, [no WWW address] - -A project at Ohio State university, which was discontinued in 1987. -The technical reports that have resulted from MusiCopy can still be -obtained by writing to OSU department of Computer Science. - - -=item Berlioz, http://www.?.fr/ - -Dominique Montel (a professional music typesetter) is now working -together with computer scientists on his own software for music -publishing, called "Berlioz". - -=back - -=head2 Other stuff - -=over 4 - -=item Sonata, http://www.adobe.com/type/browser/F/F_SONA.html - -The music font by Adobe. - -=item Haskore, http://haskell.systemsz.cs.yale.edu/haskore/onlinetutorial/index.html - -A programming system for music, based on Haskell, a functional -programming language. It outputs MIDI, CSound, NeXTStep MusicKit and -CMN. - - - -=back - - diff --git a/Documentation/out/dummy.dep b/Documentation/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Documentation/pictures/Makefile b/Documentation/pictures/Makefile new file mode 100644 index 0000000000..e1c41866c5 --- /dev/null +++ b/Documentation/pictures/Makefile @@ -0,0 +1,15 @@ +depth = ../.. + +include $(depth)/make/Stepmake.make +include $(stepdir)/Documentation_rules.make + +XPM_FILES=$(wildcard *.xpm) +OUTGIF_FILES = $(addprefix $(outdir)/,$(XPM_FILES:.xpm=.gif)) + +EXTRA_DIST_FILES= $(XPM_FILES) +gifs: $(OUTGIF_FILES) + +local-WWW: $(OUTGIF_FILES) + +icon: $(outdir)/lelie_icon.gif + cp $< $(depth)/$(outdir)/$(package)-icon.gif diff --git a/Documentation/pictures/lelie_icon.xpm b/Documentation/pictures/lelie_icon.xpm new file mode 100644 index 0000000000..0ad7f75dc1 --- /dev/null +++ b/Documentation/pictures/lelie_icon.xpm @@ -0,0 +1,141 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"50 71 63 2", +/* colors */ +"`` c #666664", +"`a c #F2F2F4", +"`b c #5E5E5C", +"`c c #EAEAEC", +"`d c #565654", +"`e c #E2E2E4", +"`f c #4E4E4C", +"`g c #DADADC", +"`h c #464644", +"`i c #D2D2D4", +"`j c #3E3E3C", +"`k c #CACACC", +"`l c #363634", +"`m c #C2C2C4", +"`n c #2E2E2C", +"`o c #BABABC", +"`p c #262624", +"`q c #B2B2B4", +"`r c #1E1E1C", +"`s c #AAAAAC", +"`t c #161614", +"`u c #A2A2A4", +"`v c #0E0E0C", +"`w c #9A9A9C", +"`x c #060604", +"`y c #929294", +"`z c #8A8A8C", +"a` c #828284", +"aa c #7A7A7C", +"ab c #727274", +"ac c #6A6A6C", +"ad c #626264", +"ae c #5A5A5C", +"af c #525254", +"ag c #4A4A4C", +"ah c #424244", +"ai c #3A3A3C", +"aj c #323234", +"ak c #2A2A2C", +"al c #FEFEFC", +"am c #222224", +"an c #F6F6F4", +"ao c #1A1A1C", +"ap c #EEEEEC", +"aq c #121214", +"ar c #E6E6E4", +"as c #0A0A0C", +"at c #DEDEDC", +"au c #D6D6D4", +"av c #CECECC", +"aw c #C6C6C4", +"ax c #BEBEBC", +"ay c #B6B6B4", +"az c #AEAEAC", +"b` c #A6A6A4", +"ba c #9E9E9C", +"bb c #969694", +"bc c #8E8E8C", +"bd c #868684", +"be c #7E7E7C", +"bf c #767674", +"bg c #6E6E6C", +"bh c #FAFAFC", +/* pixels */ +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalbhbhalalbhalalbhalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalbhbhalalbhalalalalalalalalalalalalalalalalalal`o`ya``s`wbhalalalalalalalalalalalalalalalalalal", +"bhalalalalalbhalalalalalalalalalalalalalalalalalal`a`malalalap`obb`malalalalal`cax`galalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalbcalbhalalalalalax`ialalal`gauav`u`ealalalalalalal", +"alalalalalalalbhalalalalalalalalalalalalalalalalawar`ialalalalalalalaxapalalbaacat`i`oalalalalalalal", +"alalbhalalalalbhalalalalalalalalalalalalalalalalazal`sbhalalalalalalalayalbh`eba`iapavalalalalalalal", +"albhalbhalalalalalalalalalalalalalalalalalalalal`oatalb``aalalalalalal`oanazazanbhayalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalanawal`salalbaalalalalalalalazaa`cav`oalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalapawalalaranal`i`qalalalalalalbeayazbcbcalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalal`g`oapalalalalal`yalalalalal`gbbabbhapalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalal`sanalalalalalbdalalalalalbc`obbalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalapaaanalalalalal`qatan`ealax`sbbazalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalal`kab`oalalalalalau`uaw`salbb`ua`bcalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalayalalalalalalan`ea`axax`oba`oazaxaralalalalalalalalalalal", +"alalalalalalalalalalapbhalalalalalalalalalaybhalalalalan`s`sazav`gaz`qbdalalazalalalalalalalalalalal", +"alalalalalalalalalalax`u`aalalalalalalalalaraw`o`c`c`aaxaw`g`kav`sayb`ayalal`m`calalalalalalalalalal", +"alalalalalalalalalalal`c`sbhalalalalalalalalalal`c`jb`albh`yavapazay`w`ialalalay`aalalalalalalalalal", +"alalalalalalalalalalalalar`qbhalalalalalalalalalal`v`sav`abcaubbaw`u`salalalalalayapalalalalalalalal", +"alalalalalalalalalalalalal`i`kalalalalalalalalalal`l`way`uau`cazazazbc`q`ialalalal`galalalalalalalal", +"alalalalalalalalalalalalalalaw`galalalalalalan`i`m`hbe`q`oap`w`m`uax`ialax`salalalalalalalalalalalal", +"alalalalalalalalalalalalalalal`oatalalalbh`kbaadagad```oav`i`mb`ba`ualalal`i`oalalalalalalalalalalal", +"alalalalalalalalalalalalalalalanaz`aalanaz`nag`ian`w`k`iar`waw`o`o`ialalalalau`ialalalalalalalalalal", +"alalalalalalalalalalalalalalalalapba`c`zakac`aalau`calapaz`gbabb`qbhalalalalal`ualalalalalalalalalal", +"alalalalalalalalalalalalalalalalal`ibdambd`c`aalalalal`a`yax`kb``u`aalalalalal`e`kalalalalalalalalal", +"alalalalalalalalalalalalalalalalarbcajbf`q`kalalalalal`w`c`sbc`k`e`kalalalalalal`salalalalalalalalal", +"alalalalalalalalalalalalalalalalawaoaibbaw`kalalalalapbaaw`gb`baalaualalalalalal`salalalalalalalalal", +"alalalalalalalalalalalalalalal`cbgaq`y`q`o`ialalalal`wbh`sba`g`oalaralalalalalal`ualalalalalalalalal", +"alalalalalalalbhbhalalalalalalar`v`lbfazap`qapalal`gaz`k`e`y`u`galbhalalalalalalb`alalalalalalalalal", +"alalalalalalalalalalalalalalalbb`x`l`qayalap`u`aala`al`u`q`ebebhalbhalalalalalalb`alalalalalalalalal", +"alalalalalalalalalalalalalalal`gao`hayazalalapb``kax`iaubeaybaalalalalalalalalalbaalalalalalalalalal", +"alalalalalalalalalalalalalalalalbdahba`galalalatbcalbb`maxbeatalalalalalalalalalbaalalalalalalalalal", +"alalalalalalalalalalalalalalalalau`jb``calbhalal`k`oaw`zapbfalalalalanalalalalal`salalalalalalalalal", +"alalalalalalalalalalalalalalalal`aad`malalbbalalal`o`kbb`y`ialalalal`walalalalal`qalalalalalalalalal", +"alalalalalalalalalalalalalalalalalbebaalapbfalalalbhbb`c`dalalalalalagalalalalap`oalalalalalalalalal", +"alalalalalalalalalalalalalalalalalbb`ialalajalalalalap`w`walalalalaxaaalalalal`qalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalazalalalbf`aalalalalbaayanalalalbg`ealalalbh`qalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalaxalalalbebhalalal`c`s`saxalalal``alalalalaybhalalalalalalalalalal", +"alalalalalalalalalalalalalalalalal`oalalal`ealalalalbb`eaw`uawalalawalbhalataualalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalanalalalalalalalal`wb`alayb``malalal`sal`oalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalal`galalalal`q`g`wauaraz`yalalaxapalbhalalalalalalalalalalalal", +"alalalalbhalalalalbhalalalalbhbhalalbhal`salalalal`waw`kay`kapb`al`k`galalalbhbhbhbhbhalalalalalalal", +"albhbhalbhalalalalbhalalalalalbhalalal`i`malalbhar`sbdal`q`oalalal`walalbhalalalalalbhalalalalalalal", +"bhalalalalalalalalalalalbhalalal`ialalanavalalalbcalbbat`g`qalbhar`qalalalalalalalalalbhbhbhbhbhbhal", +"alalalalbhbhbhalalbhbhalalalal`mbealbhalawalalalbd`iat`oaratalal`yalbhalalalalalalalalalalalalalbhal", +"alalbhalalalalbhalalalalbhbhal`najalal`aarbhal`s`eazalazazalal`cb`alalalbhbhbhbhbhalalalalalalalalal", +"bhalbhalalalalbhalalalalalalbbas`naralalalalal`yalazarauayalalbaa`albhalalalalalbhalalalalalalalbhal", +"alalalalalalalalalalbhalal`aaq`r`hbdalalalalaraz`m`aazan`mal`ebd`jalalalalalalalalbhbhbhbhbhbhalalal", +"alalbhbhbhalalbhbhalalalalaa`vah`d`d`calbhalbaal`qal`o`obhalbhbd`ray`i`gbhalalalalalalalalalbhalbhal", +"bhalalalalbhalalalalbhalal`v`t`lah```ualalalbaan`q`cavaxalalatbeai`hauaw`waz`kav`ialalalalalalalalal", +"bhalalalalbhalalalalal`aap`x`tahafbb`ybdalavat`sbh`sal`qalal`c`qafam`faab`axauav`i`s`oaualalbhalbhal", +"alalalalalalalanaxax`s`q`gasao`pbebabb`ubd`walb`al`oavapalalbhaybeagaq`n`sauaw`i`iapat`kayauapalalal", +"bhbhbhalalav`kazarauayay`sad`r`facae`mazaubgb``sbh`m`oalalalalavbbaeai`j`oav`g`oatau`c`g`a`eb`azanal", +"alalalat`o`e`mavayavauarawayaq`lbf`yb``e`zap`yawbd`qayalalalap`ibcad`j`jbb`i`gapal`cal`iatau`gar`o`c", +"alal`eavalbh`g`g`g`ialanaral`b`vabbd`u`ibd`e`ual`o`ea`bbbdbcb`arb````la``uap`i`cavapalarav`catav`c`q", +"al`eavar`aanar`gavatayavaranatasae`wbcawax`iaval`calalalalalalaybcaf`hbb`garan`g`c`g`i`eatauatau`oap", +"al`s`a`carau`capanal`gapanbhal`s`ragbc`e`k`walalalalalalal`cap`oa`bfbgarauauan`g`i`e`c`c`a`g`cauatal", +"al`e`qay`s`i`eanarau`matau`cauau`s`ta`bd`sawalbhalalbhalapatav`s`f`baxalanat`aananan`eawat`max`aalal", +"bhalbhawavbh`aavar`e`gawawau`k`i`c`i`h`d`y`ealalbhalalalalapauaxb`avan`carbhan`gau`aan`iax`ebhalalal", +"alalalalan`uawawal`g`e`e`oatavat`q`ganbb`babbhalalap`ubbb`bb`z`u`gaparbhbhalanaw`iavax`cbhalalalbhal", +"albhalbhalalbhanax`oaw`m`i`m`m`kbhalalalap`obaavalbhan`aan`aalalalalapaxawaw`oapanbhalalalalalalbhal", +"alalalalalalalalalalananbhanbhalalalalalalalan`gb``qawavaxau`m`o`o`s`eananalalalalalalalalalalalalal", +"alalalalalalbhbhbhalalalalalalalalbhalbhalalalalalalbhbhanbhalalalalalalalalalalalalalalalbhalalalal", +"albhalalalbhalalalalalalalalbhbhbhalalalbhalbhalalalalalalalbhalalalalalalalalalbhalalalbhalalalbhal", +"alalbhbhalalalalalbhalbhalalalalalalalalbhalalbhalalalalbhalalalbhalalbhbhbhalalbhbhbhalalbhalalbhal", +"albhalalalalalalbhalbhalbhalalalalbhalalalalbhalalalalalalalalbhalbhalalalalbhalalal`aalalalbhalalal", +"alalalalbhbhbhalalalalalalalalbhalbhalalalalalbhbhbhbhalalbhalalalbhalalalalalap`qbb`salalalalalbhal", +"alalalbhalalalalalalalalbhbhbhalalalbhalbhalalalalalalalbhalalalalalalalalalalae`uav`calalalbhalalal", +"bhbhalalalalalbhalbhalalalalalalalalbhalalbhalalalalbhalalalbhalalbhbhbhalalalalalaralalalalbhalbhal" +}; diff --git a/Documentation/pictures/lelie_logo.xpm b/Documentation/pictures/lelie_logo.xpm new file mode 100644 index 0000000000..96be267b71 --- /dev/null +++ b/Documentation/pictures/lelie_logo.xpm @@ -0,0 +1,214 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"100 143 64 2", +/* colors */ +"`` c #666664", +"`a c #F2F2F4", +"`b c #5E5E5C", +"`c c #EAEAEC", +"`d c #565654", +"`e c #E2E2E4", +"`f c #4E4E4C", +"`g c #DADADC", +"`h c #464644", +"`i c #D2D2D4", +"`j c #3E3E3C", +"`k c #CACACC", +"`l c #363634", +"`m c #C2C2C4", +"`n c #2E2E2C", +"`o c #BABABC", +"`p c #262624", +"`q c #B2B2B4", +"`r c #1E1E1C", +"`s c #AAAAAC", +"`t c #161614", +"`u c #A2A2A4", +"`v c #0E0E0C", +"`w c #9A9A9C", +"`x c #060604", +"`y c #929294", +"`z c #8A8A8C", +"a` c #828284", +"aa c #7A7A7C", +"ab c #727274", +"ac c #6A6A6C", +"ad c #626264", +"ae c #5A5A5C", +"af c #525254", +"ag c #4A4A4C", +"ah c #424244", +"ai c #3A3A3C", +"aj c #323234", +"ak c #2A2A2C", +"al c #FEFEFC", +"am c #222224", +"an c #F6F6F4", +"ao c #1A1A1C", +"ap c #EEEEEC", +"aq c #121214", +"ar c #E6E6E4", +"as c #0A0A0C", +"at c #DEDEDC", +"au c #020204", +"av c #D6D6D4", +"aw c #CECECC", +"ax c #C6C6C4", +"ay c #BEBEBC", +"az c #B6B6B4", +"b` c #AEAEAC", +"ba c #A6A6A4", +"bb c #9E9E9C", +"bc c #969694", +"bd c #8E8E8C", +"be c #868684", +"bf c #7E7E7C", +"bg c #767674", +"bh c #6E6E6C", +"bi c #FAFAFC", +/* pixels */ +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalbialalalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalbialalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalbialalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbaag`xahauauaf`d`tafalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaealalalalalalalal`oaeaabealalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ib`alalalalalalalalalalalaw`xaoalalalalalalalalalalalal`qaaaa`zalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbdalalalalalalalalalalalalalal`eau`ealalalalalalalalalabalalalal`xalalalalalalalalalalalalalalalal", +"albialalalalbialalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbaaualalalapalalalalalalalalalalalalbfalalalalalalalalaaalal`halalabbcalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`o`e`qalalalalalalalalalalalalalalalalal`lalalalalalalalabalau`ual`walbfalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaaalal`dalalalalalalalalalalalalalalalal`qaxalalalalalalauau`salatb`al``alalalalalalalalalalalalalalal", +"alalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafalalalbhalalalalalalalalalalalalalalalalal`falalalalalal`oaj`y`ob`alalbfalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`balalalal`nalalalalalalalalalalalalalalalal`o`ialalalalalal`abb`ialal`g`qalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalala`alalalalal`falalalalalalalalalalalalalalalal`falalal`o`haiavalalalalbhalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`bal`m`ialalalaiapalalalalalalalalalalalalalalbeanalal`valalalalalal`balalalalalalalalalalalalalalalalal", +"alalbibialalbialalalalalalalbialalbialalalalalalalalalalalalalalalalalalalalalalalalalalalalal`walalalbealalalal`jalalalalalalalalalalalalalalal``alakalalalalalba`ualalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbb`kalal`ubealalalalal`halalalalalalalalalalalalalalbhalauaxal`eaz`o`ualalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalav`yalalalalalbeatalalalalajapalalalalalalalalalalalalalbfag`dalaxakbfaiaualalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`gbcalalalalalalalalalalalalalaualalalalalalalalalalalalalaxac`yalbbalapbhaoalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafalalalalalalalalalalalalalalaualalalalalalalalalalalalal`t`q`u`j`aalal`salalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal``b`axalalalalalalalalalalal`ubaalalalalalalalalalalalbb`w`iacbhalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`cacawalalalalalalalalalalalat`ralalalalalalalalalalalau`maradalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaladalalalalalalalalalalalalalar`jalalalalalalalalalalahalaz`yasalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`eaualalalalalalalalalalalalalal`valalalalalalalalalalamazala`aualalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`talalalalalalalalalalalanalba`ualalalal`oalalalakal`sa`bdanaxalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`h`taqa`alalalalalalalalalalala`alafalalbcal`halalal`dbaalaeajalasalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`i`ma``falalalalalalalalalalalalaw`halalbdal`balalaoalac`z`z`kal`palalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`salalalalalalalalalalalalalal`qalaqalal`dalbhalarbgaaalab`halalajalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`jalalalalalalalalalalalalalalalalaualal`yala`al`ral```qapafalalbbaxalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalabalalalalalalalalalalalalalal`zbfazaoalal`war`gayawbgalaebdalalalal`jalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalbialalalalalalalalalalalalalalalalalalalal``alalalalalalalalalalalalal```oaeala`alatawazal`nalacalaxahalalalalbfalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalal`jar`s`ealalalalalalalalalalalalalalalalalalalaaayalalalalalalalalalalbg`u`caz`cabalbcalala`anaaal`nalbealalalalal`halalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalbb`wadapalalalalalalalalalalalalalalalalalalalaybdababawalalalalalbhal`zat`c`abcal`zalalajal`dalae``alalalalalal`y`galalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalala``yalalalalalalalalalalalalalalalalalalalalalalal`g`q`vaxazaaalalal`aaladal`m`aal``an`g`gaeal`falalalalalalal`halalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalbe`yalalalalalalalalalalalalalalalalalalalalalalalalauaeazazalalalal`aaqalaaalalaial`dalahataxalalalalalalalalabalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalal`y`yalalalalalalalalalalalalalalalalalalalalalalal`rasbe`malalalal`dazaraval`jalal`zbaal`dalalalalalalalalalanagalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalal`a`wbaalalalalalalalalalalalalalalalalalalalalalalauau`qazbhbialalaualbdalal`ralajalaialabalalalalalalalalalalanabalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalaxbcaxalalalalalalalalalalalalalalalalalalalalalakak`kbhaaalal`dan`oalal`halalbcavaybfbfalalalalalalalalalalalanakalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalay`uaralalalalalalalalalalalalalalalalalalalalacasbdb``dalal`fal`oal`a`jalaial`nalaj`aadbh`malalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalal`wb`alalalalalalalalalalalalalalalalalalalawbeau```wbbalaual`ualal`nalalacalbealafalalal`dakalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalbdbaalalalalalalalalalalalalalalal`gbc`galbaaubf`bazay`g`ibial`gadalaialaial`ladalalalalalau`aalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`y`walalalalalalalalalalalalatayalayauau`bau`s`qakazal`salal`talal``al`valauapalalalalalalaualalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalapbbb`alalalalalalalalalal`waladauauaubebiauakahaxalbdalal`w`salaialbhalbgahalalalalalalalal`palalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalavbcawalalalalalalal`safabauauaa`yalalalauauawalbealatalamalalabalakalauaealalalalalalalalalafalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalb`bb`calalalalalb`axauau`raa`calalalalaibial`walaparab`ealafal`w`i`gauaealalalalalalalalal`i`ualalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`wbbalalal`e`ibcau```d`s`a`aalal`ua`alalbibial`ual`ralalahalaualau`ualalalalalalalalalalalakalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`zaeal`ial`tau`vah`lalalalalavayalalalalalayal`jalal`hal`eaaalauatalalalalalalalalalalalar`balalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbe`walauau`b`fal`calalalalalalalalalalalalalajalalahalaual`fbbb`alalalalalalalalalalalalaealalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`may`xaubh`s`zalal`ialalalalalalalalalalalaualal`halalaialauaoal`aalalalalalalalalalalalana`alalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbabiau`caqajaaawaladalalalalalalalalalalal`zabalalahal`talarag`yalbhalalalalalalalalalalalalakalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaxalauauasalaj`wayap`ialalalalalalalalalalalaualalaealalaualaq`ya`albealalalalalalalalalalalaladalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ybdau`f`v`yaw`a`i`y`aalalalalalalalalalalbe`salalafalaebialau`zalalaaalalalalalalalalalalalal`o`qalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ialau`r`raj`hawbdalbgalalalalalalalalalalalaualalaaalal`valafah`ialbib`alalalalalalalalalalalalal`balalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalb`agauauahbb`jalbc`ualalalalalalalalalalaladaralal`nalbe`salaualalalbhalalalalalalalalalalalalalal`nalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalbialalalalalalalalalalalalalal`ialauauauazbbabalar`u`walalalalalalalalalalaoalalacbialaual`g`l`calalbfalalalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalax``auaoa`aeazbd`g`sapbdayalalalalalalalal`palalalafalayadal`taxanalarar`malalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalbibialalalalalalalalalalalalalal`cauauaiao`nb``g`zalal`i`y`calalalalalalav`jalalbdanalaualalauae`aalalal`zalalalalalalalalalalalalal`falalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`g`qauau`laj`uafat``alalalbda`alalalalalalasalalalajalal`lalbcau`salalalalbcalalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalbibialalalalalalalalalalalalalb``jauao`j`pb`apax`ialalalalbdbfalalalalbaadalalbdaval`lalalauaxalalalalbealalalalalalalalalalalalalal`falalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbd`uauau`fagbgbi```ealalalalalbda`alalalaualalalajalalaualalaoacalalalalbialalalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalbialalalalalalalalalalalalalal`gauau`h`dbdawbfaxalalalalalal`z`yal`s`zalalb``kal`p`ialai`tbialalalalalalalalalalalalalalalalalalal`jalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalapauaubgaa`a`ualalalalalalal`abcaraualalal`ralalaualal`v`kalalalalalalalalalalalalalalalalalalalal`ralalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`eaoau`z`d`m`qalalalalalalalalb`baa`alal`w`qal`zbealar`vbcalalalalalalalalalalalalalalalalalalalalafalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalatbgau`zabbiaralalalalalalalalal`s`walalasalalaualalah`w`aalalalalalalalalalalalalalalalalalalalal`falalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalavauadaoalazalalalalalalalalalal`zbbat`yal`c`jalalauayalalalalalalalalalalalalalalalalalalalalal`balalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`s`uau`sawalalalalavalalalalalalalbcaialalaualalabab`galalalalalalalalavalalalalalalalalalalalalacalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalayaualbaalalalalaualalalalalalalbibc`malaualal`t`qalalalalalalalalalaualalalalalalalalalalal`o`kalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaraqaealalalalalaualalalalalalalal`e`s`n`oal`oahbialalalalalalalalalau`ealalalalalalalalalalakalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`k`nakalalalalazaualalalalalalalalal`wbcalalaq`dalalalalalalalalalalau`balalalalalalalalalalaealalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaq`falalalalalauawalalalalalalalalalabbaalauaralalalalalalalalalalauaxalalalalalalalalalbhbialalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`p`ualalalalalauaualalalalalalalalalalacabajanalalalalalalalalala`aualalalalalalalalalaladalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafalalalalalal`qaualalalalalalalalalalalab`yalalalalalalalalalalauasalalalalalalalalal`ca`alalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalagalalalalalalalau`aalalalalalalalalalav`b`o`walalalalalalalal`caualalalalalalalalalalahalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalala`alalalalalalalau`malalalalalalalalalaoalbi`z`salalalalalalalazaualalalalalalalalal`i`oalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalabalalalalalalalaualalalalalalalalalalajal`obf`o`kalalalalalalb`aualalalalalalalalal`jalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`s`galalalalalalalaualalalalalalalalalbhavaladalbbay`aalalalalalalaualalalalalalalalbdaralalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaealalalalalalalalalalalalalalalalalalaualaladalal`t`ualalalalalal`zalalalalalalal`ebaalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ualalalalalalalalalalalalalalalalal`eadalafanalbbal`uaaalalalalalalalalalaralalalaealalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaialalahalal`bal`gbfbgalalalalalalalat`palal`dalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ralaladalalacal`balbcaxalalalalalal``alalbi`malalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`ealalalalalalalalalac`kal`lalal`savalafal`ybbalalalalalaealalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`halalalalalalalalal`xalal`ralalbhalalaealbfa`alalalalacalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbcaralalalalalalalal`gbgal`qbealalafalbdalalbbaealalalb``ualalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`palalalalalalalalalaoalalaualal`iaxal``alalalalalalal`ralalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`yalb`alalalalalalalalaoalalaualaladalal``alalalalalal`k`zalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`zalaaalalalalalalaladaralbd`qalaladalaw`kalalalalalal`talalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`eavalalalalalalalaualalaualalavbbalaealalalalalalal`nalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaualalalalalalal`walalalalalalal`g`balalacalalbhalalbhalalalalalalbhalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalazaualalalalalalalbealalalalalalal`valalazayalalacalanb`alalalalalal`valalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalauauapalalalalalal`walalalalalalalasalalafalal`a`ualabalalalalalalal`ralalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaeauauabalalalalalavayalalalalalal`f`galalafalal`dalal`dalalalalalalal``alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalauauaoaualalalalalalalalalalalalalaualala`bialal`falal`balalalalala``o`yalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalaqauau``aualalalalalalalalalalalal`g`balalafalalal`walbbapalalalalatajbhbaalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalal`aau`nauajai``alalalalalalalalalalalaoalalal`balal``alal`falalalalalalad`nbbalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalauau`x`t`ladaualalalalalalalalalalalaoalal`zalalalafalalbhalalalarayba`t`tbfalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalb`auauaqbham```zaaalalalalalalalalalab`galal`falalalabalawaxalalalalararabau`nalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalauauaqaubhau`ybhaibialalalalalalalal`ralal`aaaalalbealal``alalalalalal`mbdau`jbcalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalal`sauam`vaoa`aea``tabbbalalalalalalalal`balalaealalalaealalbhalalalalal`cbgamaiau`tat`zaaacav`aalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalauauau`xas`f`jaoae`saa`oalalalalalal`lalalalafalalalaaalalbealalalal`iatbbbf`hamao`halav`qat`nbhac`o`y`salalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalauauauaf`p`dadagbh`l`e`falalalalalal`lalalavbcalalbcanalaaalalalalalal`m`u`b```lau`sazal`ualalazbhalapalab`zac`salalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalauaqau`p`xajbgas`o`ualbe`ralalalalaxb`alalafalalalahalaladalalalalalalalazb`aeaoajauagadbdbaahan`c`q`wapalalalbc`dbe`oalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalal`o`salauaqau`p`yafbg```bawacajbh`nalalal`jalalal`nalalal`dalal``alalalalalal`sav`ob`ai`lau`v`vak`ja`awbeat`e`e`s`u`a`a`garbeab`u`yalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalarbc`s`baeb`a`alauauau`pauau`dbfaa`u`y`m`ibaaualalaealal`q`oalalb`aralaz`ealalalalalalal`o`zb`be`d`fasauauafbcalalayafavbbalb``salalalal`e`wabbh`ealalalalalalalalal", +"alalalalalalalalalalalalalalal`i`z`nbh`g`k`oavapalalajauau`f`dakacavay`sbaa``dapbg`daqalalal`nalalal`dalal`balalalalalalalalalbbbfagbcas`fau`xbha``z`ualalalavalalalat`eatawawalalal`kaabbalalalalalalal", +"alalalalalalalalalalalalalbb`y`gal`a`mavaaaxalbeaaay`qauam`jaoaa`jagakaqbb`g`iacalalauaga`al`balalal`balal`balalalalalalalalal`z`sbhbh`j``akauae```aalalalaraz`q`oat`eal`g`aalaralalatalav`tbgalalalalal", +"alalalalalalalalalalavai`u`i``ayalalalarav`ka``o`yayalau`xasam`zag`mazabap`mbaal`may`ybi`kau`balal`gawal`c`salalalalalalalalat`ibaaz```bakakau`uaxalb`abbb`oazayalarb``sbibiazazal`kaval`gav`eakatalalal", +"alalalalalalalalaz`fayalbf`ealbebe`salal`oaxbi`eaxaab`bgau`jam`dbc`sae`wad`m`gayal`talalal`jalaiabbfalalbfalalalalalalalalanayar`o`yaa`lahaeauaf`q`t`savax`malalalalalalalalanaxapat`ebbbial`calat`balal", +"alalalalalalaladatalalalalb`arapalbdae`oalalalatalalanbiauau`l`vahag`y`iaw`zalalawajal`gawadalalalauaua``dalalalalalalalal`q`gaw``aaazajaiakau`ubealalalalal`g`calalar`ealal`cb`an`ual`g`say`aalay`e`wal", +"alalalalalal``analalalal`c`k`m`m`k`g`malalalalalalalalalazauasau`hbdb`a`bdbdalawbca`baal``alalalarayal`aauaj`bauauamajas`t`waw`cab`ubf`nbhamaualau`e`eatazazarar`m`u`ealalalalal`may`qalalav`u`iawaladal", +"alalalalbibgalalalalal`a`oalanalalavax`galalal`iawayalalalauauao`zaa`bbhalbhadalasal`gal`palalaladalal`aalalalalalalalalalalalan`marabbgaiauaiarazalalalal`gatalalaxavalalalal`s`ialalan`qalalaz`cal`dal", +"alalalal`dalanazalaralalanalalayavaval`sa`adbf`ialalalalal`sauam`nbb`gacbfacal`wajalalal``alalal`malalalalalalalalalalalalalbaav`k`wauacasbf`iajalalalalapal`a`zavalal`abc`oaralalal`qavalat`obi`ub`atal", +"alalalbhalalalar`calal`gatavaxaxax`maralalalalalatazatalalalauau`n``bc`sbc`qa`alal`calajalalalalalalalalalalalalalalalalalalaybfahacagbcaiac``al`mbbbbapalalanalal`ebcavalalalb``w`mal`i`walaw`c`cbbalal", +"alalal`fal`ialal`mavayaralawatalalalalal`c`ialalalalalalalalalauauahafak`q`q`aal`ualalaqalalalalalalalalalalalalalalalalalalal`obcaxbebh`nbc`qalalalalalal`gb`axalalalalalba`malalalaralal`galar`walalal", +"alalalaealal`kavalalar`k`aanapalalapalalarazaw`capal`aalalalalalauamaubdaf```qbibgal`ebealalalalalalalalalalalalalalal`u`o`c`oab`b`f`zac`u``alalaz`sbb`qalalalalbc`wbaanalbialalal`a`o`m`ealba`oalalalal", +"alalalbbaaap`yaeaja``ial`oalaranalalal`m`yawan`m`u`kalapalaw`ualalauao`rbcaxaual`u`k`jalalalalalalalalalalalalalal`oaxalalaz`wae`fafagag`nalalalalalalalal`c`ealalalalalalalalaw`obialb`biaeapalalalalal", +"alalalalalagalalal`a`o`q`ialalal`abc`zalalba`mal`ealazalbdbiaxaralal`vauahabak`kaz`zalalalalalalalalalalalalalalalalalb`azawalavaj``az`palalalalalal`e`sapapalalalal`ealaw`s`y`walay`o`ubcalalalalalalal", +"alalalalalalbbbdalalalalalalal`uawalalalalawayaxaxb`alazavaz`g`kavalal`kauag`paz`ya`alalalalalalalalalalalalalalalalalaw`mb`ab`zala``balalalalalalalalalalalal`o`uaz`galalananal`q`w`ualalalalalalalalal", +"alalalalalalalanaa`ualalalav`zalalat`g`oaz`e`o`eav`k`c`oax`eazaral`ial`m`m`tau`bahap`yapalalalalalalalalalalalalalalalalalalalalaeavalalalavaxav`qawalalal`g`qapalalalalalalava``ualalalalalalalalalalal", +"alalalalalalalalalbiad`nayalalalalalb`awaz`eat`qalay`i`galaxalal`saybfanalalbdauac`s`q`valalalalalalalal`iat`eay`earbfbg`pau`vaaal`oawal`karalalalalalalalatalalalalalbcbha`axalalalalalalalalalalalalal", +"alalalalalalalalalalalal`iaabfbcalalalalalalalalacazbiav`u`m`g`ua``kalalalalalal`faubeac`calalalalalal`uaf`baf`hahaca``ialalalbi`ianalalalalalalalalalalalalataibb`u`wanalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalbiaca`aa`yalalalalalalanalalbcbhavalalalalalalalalalap`b`oarb`alalalalalalalalalalalal`calalalalbialalalalalalalalalalb`bga`acavalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalat`wabbhbgb``qaabebfalalalalalalalalalalalalalalapbc`l`pbialalalalalalalalalalalalalalalalalalalalal`s``a`bf`zalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalala`ahadbh`db`bcbiatalalalal`ubcaf`wacbe`fae`uanalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`g`gabbgababav`ialalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaxalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalafaealalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalal`oal`z`l`wbhafalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalauagbeaqal`mb`alalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalaf`mbialalaaalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbaalalalalalalalalalalalalalalalal", +"alalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalalbialalalalalalalalalalalalalalalal" +}; diff --git a/Documentation/pictures/lelieblond.xpm b/Documentation/pictures/lelieblond.xpm new file mode 100644 index 0000000000..b63f794a3c --- /dev/null +++ b/Documentation/pictures/lelieblond.xpm @@ -0,0 +1,845 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"582 836 2 1", +/* colors */ +"` c #000", +"a c #FFF", +/* pixels */ +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaa``````````````aaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````````````````````aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````aaaaa``````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa`````aaaaaaaaaaaaaa``aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``````aaaaaaaaaaaaaa`aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```````aaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa```````aaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a```````````aaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a`a```aaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````a`a```aaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a``a```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a``````aaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a``aaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``a````aaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``a`a`aaaa``aaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa`aaaaa``aaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaa```a`aaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a``aaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa````aa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```aaa``aaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaa```aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa````aa```aaaaaaaaaaaaa``````aaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```aaa``aaaaaaaaaaaa```aaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```aaa```aaaaaaaaaaa``aaaaaaaaaaaaa```aa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa```aaa``aaaaaaaaaaa``aaaaaaaaaaaaa```a``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa```aaaaaaaaaaa`aaaaaaaaaaaaaa``a`a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa```aaaaaaaaaaa`````````````a````a`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```aaaa``aaaaaaaaaaa````````````````aa``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaa```aaaaaaaaaaa`aaaaaaaaaa`````a`aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa``aaaaaaaaaaa``aaaaaaaaaaaaa`aaaa`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaa``aaaaaaaaaaaa`aaaaaaaaaaaaa``aaa`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaa```aaa``aaaaaa`aaaaaaaaaaaaaa`aaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaa```aaaa``aaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaa``aaaa```aaaaa`aaaaaaaaaaaaaaa```aa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaa```aa````aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaa```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaa``aaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaa```aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaa``aaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaa``aaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa`aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa`aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaa```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaaa``aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa```aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaa`aaaaaa``aaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa```aaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaaa``aaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa```aaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaa```aaaa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa``aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa````aaaaaa``aaaaaa``aaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa````aaaaaa``aaaaaa``aaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaa```aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaa```aaaa```aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`````aaa``aa`aaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaa```aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a`````a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaaa``aaaa```aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````a``````````aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaa````aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`````a`aa``a``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaa```aaaaaa``aaaa```aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa````a```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaaa```aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa````````aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaaa````aaaaaa```aaaaaa``aaaa```aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa`````aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaa``aaaaaa```aaaa```aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaa```aaaaaa```aaa````aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaa``aaaaaaa``aaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaa```aaaaaa```aaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaa``aaaaaaa``aaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaa```aaaaaaa```aaaaaa```aaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaa```aaaaaaa``aaaaaaa``aaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaa```aaaaaaa```aaaaaa```aaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa`a````aaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaa```aaaaaaa```aaaaaa``aaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa````aaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaa```aaaaaaa```aaaaaa```aaaaa```aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```aaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaa```aaaaaaa``aaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa```aaaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaa````aaaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaaaa```aaaaaaa``aaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaa`````aaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a```aaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaa``aaaaaaaa``aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa```aaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa```aaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaa```aaaaaaaa``aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaa```aaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaa``aaaaaaaa```aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaa``aaaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa`aaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaa``aaaaaaaa```aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa```aaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaa``aaaaaaaaa``aaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa```aaaa```aaaaa``aaaaaaaaaaaa``aaaaaaaaa`aaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```aaaa```aaaaaaa``aaaaaaaaaaaa``aaaaaaaaa`aaaaaaaa``aaaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaa```aaaa```aaaaaaaaa``aaaaaaaaaaaa`aaaaaaaaa``aaaaaaa```aaaaaaaa```aaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaa``aaaa```aaaaaaaaaaa`aaaaaaaaaaaaa`aaaaaaaaa`aaaaaaa```aaaaaaaaa``aaaaaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaa``aaaaaaaa```aa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaa```aaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaaaaa```aaaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaa```aaaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaa``aaaaaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```aaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaa`aaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaa```aaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaa```aaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaa```aaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a`aaaaaaaaaaaaa`aaaa`a``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaa``aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa`aaaa````aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaa``aaa```a`aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaa```aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaa```aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a````aaaa``aaaa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a`a`a``aaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a`aa``aaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a``a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`````a```aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`````aa``aaaa``aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa``a``a`a``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```````aa```aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a```aa```aaa``aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a````````aaa``aaaaa``aa`aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a````a```aaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a``a`a`aaaa``aa`aaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa```aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````a`a``a`aaaa``aa`aaa`aaaaaaaaaaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`a`````aaa`a``aaa`aa````aaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaa``aaaaa`a``a`a``aaaaaaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaa`aa```aaa`a`aa`aa`aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aa``aa``a```aa`aa`aaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa```a`a`aa`a``aaaa``a`aaaaaaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a`a`aaa`aa``aaaa``a`aaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`````aaaa```aaa``aa`aaaaaaaaaaaaaaaa````aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaa```aaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa````aaa```aaa``aa``aaaaaaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaa`a`aa`aa``aaa`aaaa`aaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaa```aaaaaaaa```aa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aa``aa`a``aaaa`a`aa`aaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaa```aaaaaaaa``aaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa```a``a``a`aaa```a``aaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaa``aaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaa``aa`aaa```aa`aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaa```aaaaaaaa``aa`aaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```a`aa```a`aaa``aaa`aaaaaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaa``a`aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a``a``aa`aaa``aaa`a``aaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaa```aaaaaaaa````aaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa````aaa`````aaa`a``aaaaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a``aaaaa``aaaaa```aaaaaaaaaa````aaaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaa```aaaaaaaa```aaa`aaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```````aa``aa`aaa``aaaaaaaaaaa````aaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaa``aaa`aaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``````aa`aaa``aaaaa`aaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa```````aaa``aa`aaa``aaaaa``aaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa```aa`aaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa`````a```````a`a```aaaa``aaaaaa````aaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaa`a```aa````aa``a```aaa``aaaaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaa`a````````aaaa``aa`aa``aaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaa``a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaa`a```````aa```a`a``aaaaaaaaa```aaaaaaaaa`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaa```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaa```````aa`````a``a``aaaaa`aaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa```aaaaaaaa````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa`````````a`aaa``aaa``aaaa`a``aaa``aaaaaaaaaa`aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaa``a`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaa``````aa```a`````aa`a```aaa```aaaa```aaaaaaaaa`aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa```aaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``````aa``a```aa```aaa``aaaaa```aaaa```aaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa`````````aaaa```````aa`a```aaaa``aaaa````aaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaa```aaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa````````aa`````aa```````aa``aa`a```aaa`````aaaaaaaaaa`aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa```a`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa`````````aa````````a```a``a````aaa``aaaa`````aaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaa````aaaaaaa```a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa```````````a```````aa```a`a```aa``a`a`aa``aa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa`````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa`````````````````a`````aa``````aaaa``aa````a```aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaa````aaaaaaa```a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`````````````````a```aaa``aa````````a`a`````aa```aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa```aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaa```````````a``````aa``a```aaa`````aaa```a`a```aa```aaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa`````````````````a```aaaaa```aaa```````a``a```aaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaa```aaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``````````````````a``aa``aaaa``aaaa``````a````aa`a``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaa``````````a``aa```````aaaaa`a`aaaaaa`````a`````aaa```aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa```a``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaa``````````````aa``````aaa`aaa``aaaaaaaa``````a``a``a```aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaa```a``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaa```````````a``a``````aaaaaaa``aaaaaaaaaa````````a`a````aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaa`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaa`````````````a`a``a```aaaaaaa`aaaaaaaaaaaaa``aa`````````aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaa`````````a````a```aa``aa`aaaaa`aaaaaaaaaaaaaa`````a``````aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaa````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa```````````a``a``aaa```aaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaa``aaaaaaaaaaa`aaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaa````aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa`````````aa``````aaaaa``aa`aaaaaaaaaaaaaaaaaaaaaa````a`````aaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaa```aa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``````````````a````aa``aaa``aaaaaaaaaaaaaaaaaaaaaaa``a`a``aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaa```a``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa`````````aa``````aaaa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaa```a``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``````````a``aa``aaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaa```a`a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa`````a```a`````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaa`````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``````````````a``aaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa`aaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa````aaaaaaaa```a`a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````````````````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaa```aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa````````````aa``a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaa````aaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````a```a``aaa``aa``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaa```a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````````aa```````````aaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaa```a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa``````a`````a``a````a``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaa````aaaaaaaa`````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````a```a``aa``aaaa``aaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaa`````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaa``aaaaaa```````a````aa`aa``a`a``aaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaa````aaaaaaaa````aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```aaaaaaaaaaaaaaaaa``aaaaaa````a``a````````a``a````aaaaaaaa`aaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa`````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaa``aaaaaa```````a````a`a```aa`````a`aaaaa`aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaa````aaaaaaaa`````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaa``aaaaaa````a````````a``a````a```aa`aaaaa`aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaa``aaaaaa`````a``a`````aa```a`````aa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaaa```aaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaa``aaaaaa`````````a````a```aa``a``aa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa```aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```aaaaaaa``aaaaaa````a````a```a`a```a`aa`aa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaa```aa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaaaaa``aaaaa``````````aaa`a```aa``a``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa````a`aa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaaa``aaaaaa````````````````````````aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaa```a`aa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aa`aaaaaaa`````````a`a``a```a`aa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaaa````aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```aaaaaaa`````````````a``aa``aa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaa````aa`aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaa````````````a````aaa`a``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaa````aaaaaaaaa```aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaa`````````a`a`a````a`a`aaa`aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaa````a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaa`````````a`a````aaa`a`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaa```a`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a```````````aa`a`aaaaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaaa````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa`````````````a```````````````a`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaa````aa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaa```````````a`````aaa`aaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaaa```aa`a`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aaaa`````````aaaa``aaa`aaa`aaaa`aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaa````a`a`a``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaa``````a```a`````````````aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aaaaaaaaaaa```aaaaaaaaaa`````a`a``aa``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa```aaa```a`````````````aa`aaaa``aaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa```aa`a``aa``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``a``aaa````a```a`aaa``aa``aaa``aaaaaaaa``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aaaaaaaaaaa````aaaaaaaaaa``aaaa``aa`aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa````a`aaaa``````a``a``aaa``aaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa```aaa``aa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa````````aaaa``a`a``a`a`a```aaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aaaaaaaaaaa````aaaaaaaaaa```aa``aa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``````````aaaa`````````````aaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa````a``aa``aa`aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````````a``aaaa``aaa`aaa``aaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaa```a``aa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```````````a``aaaa`aa`a`````aaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa``````aa`aa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``````a`````a``aaaa`aa````````````aa`aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaa`````aa`aa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa`````````````a``aaaa``aaa``aaaa`aaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa````aaaaaaaaaa```aaa`aa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``````a```````a```aaaa``aa`aaaa`aaaaa`a`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa````aa`aa``a``aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa````````a``````````aaaa`````aaa`aaaa`a`aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaa````aaaaaaaaaa```aa`aa`aa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``````````````a```a``aaaa``aaaa`aaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaaa```a`aa`aa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa`````````aa````````aa``aaa``aaa``aaaaa``aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaa```a`aa`aa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````a``````aa`````aa```aaaa`aa`aaaaa``aaaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaaa```aaa`aa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``````aa``a`````aa`````a`aaaa``a`aaaaa`aaaa`aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaa````aa`aa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````````a````a```````aaa`aaaa``aaaaaaaaaaa`a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaaa```a``aa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````````````aaa`a``aa`a`a``aaaa``aaaaaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaa````a`aa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````a`a`````````a```````aa``aaaa``aaaaaaaaaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaaa```a`aa``aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````````a````aa`````aa`aa`a`a``aaaa``aaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```aaa``aa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa`````````````````a``````a``a`aa`aaaaa`aaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaa````aa``aa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````````aa````a````a`a``aaa`aaaa``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```aa``a``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```````a``a````````a``a````a`aaaa``aaaa``aaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaa````a``aa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````a```aa`````aa`aa`aa`aaaaa``aaaa``aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```a``aa`aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````````````````````````````a``aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```a`aa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````a``a`````a``````aa`aa`a`a`aaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````a````````aaaa`aaa`aa`a`aaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```aaa`aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````````a`a````aaa`aa`aaa``aaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaaaaaaa````aa`aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa````````a`a```````aaa`````a``a```aaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa```aa`aaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````````````a`aaa`aa`aa`a`a`aaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa````aaaaaaaaaaa```a`aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````````````aa````a`aa`aa`a`aaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````aa````````a`aaaa````aaaaa``aaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````````````aa`aaa`aaaaaa``aaa`aaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa````````````````a`````aaa`````````aa`aaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaa````aaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````````````aa``````aaaaa```aa`aaaaaaaa``aa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa```aaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````````a`a````aaaa```aaaa``aaa`aaaaaaaa`aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaa````aa`aa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````````````a`aa`aa```aa````aaa``aaa`aaaaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa```aa`aa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````a````````aa`a`a```a`aaaa`aa`aaaaaa`aaaa`aaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa```aaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`````````````a``````a`a`aaa`aaaaa`````aaa``aaa``aaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaa```a`aaa`aaaaaaaaaaaaaaaaaa`aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````aa```````a```````a`````aaa`aaa`aaa`aaaa`aaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa````aaa`aaa`aaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````a`a````a`a````aa`a`aaa``aaa`aaa`aaaa`aaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaaa```aaa`aaa`aaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````````````a`a````a`````a`aaa`aaaa`aaa`aaa`aaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaa````aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````a````a`````a```aa`aaa``aaaa`aaa``aaa`aaa`aaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa```aa`aa``a`aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa```````````aa``````a```````````aa`aaa``aaa`aa``aaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaa```a`aa``a``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`````````````````````````aa`a`aaa`aaaa`aaaa`aa`aaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa```a``a`aa``aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````a`````````a`a````aaa```aaa`aaaa`aaaa`aa`aaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa````aaaaaaaaaaaa`````a`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````a`aa````a`a````a``aaaa`aaaa`aaaa`a``aaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa````aa`aa`a``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````````````a```````````````````````a`aaa``a`aaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa```aa`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```````````````````a`aa`aaa```aaa``aaaa`aaa``a`aaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa```a`a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````````````a`````a`a`aaaa`aaaa``aaa``aaa``a`aaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaa```a`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````a```a``````a````a`aaaa`aaaa`aaaa`aaaa`aa`aaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaa```a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```````````a``a````a`a```````````````aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa``````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa```````````````a```````````aaa`aaa``a`aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaa```a``a`aaa``aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````````````aa`aa```````aa``aaa`aaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa```a`a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````````````````a`a`````aa`aaa``aaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaa````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````````````a````a`a`aa```a`aaa``aaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa````a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````````````````a`````a`a``aaa```aa`aaaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa```a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````````````a``a``````a`a``````aaaa`aaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa```````````````aa``````````aa``aaaa`aaa``aaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaa````aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```````````````````````````aa`aaaaaaaaa``aaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaa`aa```aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````````a```````a`aa``a`aaa`aa`a`aaaaa`aaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```````````````````aa```````````a`aaaaa`aaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa```aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````a`````````````a`aa`a```aa`a```````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```````````a`````aa``a`a`a`aa`aaaaaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa```a`aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa```````````````a``a``a`a```aaaaaaaaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaa``````a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``````````a`````aa``a`a````````````a`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa````aa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`````````````````a`````a```aaa`aaaaaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa````````````````a``a`a``aaaa`aaaaaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa````a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````````aa`a``a``aaaa`a`aaaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa```a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa````````a`````aa`a``a``aaaaaaaaaaa`aaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa````aaaaaaaaaaaaaa``a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````````a```a`a``a``aaaaa`aaaaa`aaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaa`````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``````a``aa``a``````````````aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````a````````a`aaa``aaaa`aaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaa````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaaa```a`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`````````a````a`aaa``aaaa`aaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaa```a`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````````````a``aa``aaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaaa````aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`a```````````a``a``a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`````````````a``a``a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`````a``````aa`a``a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``a```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaa```aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````````a````````````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa````aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`a`````````aa`a`a```aa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaa```a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a````a`aa```a`a`aaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa````````a```aaa`aa`a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaa````aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``````a`a`aaa`aa`a`aaaa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````````a``aa`aa`a`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`````````a`aa`aa`a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`````````a`a````````aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a``````````aa`aa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaa```aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``a`aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``````a`a`a`aa`aa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa````aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa````````a``aaa`aa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`````a`````````a`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``````a``aaa`aa``aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a`aa`aa```a``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`````a`a``a```a``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa`````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`a````aa`a```aa`aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a``````````a``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa```aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a``````aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``a``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa```aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`a```aa`aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa````aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa``aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a``aa`aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a``aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a``````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`````aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaa````aaaaaaaaaaaaaaa```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`a`a```aa`aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaa````aaaaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa```````aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaa``aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa```````aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaa````aaaaaaaaaaaaaaa```a`aaa``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa````a`aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaa```aaaaaaaaaaaaaaa```a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``a`a``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaa````aaaaaaaaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`a```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaa````aaaaaaaaaaaaaa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa````a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaa```aaaaaaaaaaaaaaa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aa````aaaaaaaaaaaaaa````aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aa```aaaaaaaaaaaaaaa```aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````aaaaaaaaaaaaaaa```a`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa````a``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa```aaaaaaaaaaaaaaa```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa```aaaaaaaaaaaaaaa````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaa```aa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaa```a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaa`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaaaaaaa`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaaaaaaaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaaaa````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaa```aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaa``a``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaa`````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aa```a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa```aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa`````aa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa``a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``a``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaaa`aaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaa````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``a``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaa``aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a````a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a`````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````aa```a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``a`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````a```a`aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`a`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a`a`a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``a``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a```a``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````a``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`a`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``````aa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`a```a`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````a`````a`a`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a```a````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````a````a``a`````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a`a``````````a`a```a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````a````a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aa`````````````aa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a```````````a`````````a````aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````aa`aa```aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``a````aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````a`a`````````a`a```aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a````````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````a``````a``````````aaa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa````a```aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````a```a````````a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````aa``a`a``aa``aaa``a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa```a`aa``````a``a``````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````aa````aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa``aa`````````````````````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````aa```````aa``aaa``a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```a````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````a`````a`````````````a`a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a```````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````aa``a``aa``aa`a`aaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``a`aa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````aa``aa``````a`aa``aaa``aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`a`a``````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a``````````a``aa```a````aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa```a`a````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````aa``aa````````aa``aaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````a``````a`````a````aa``a`a```aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`````a```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````````a`a`a``aa```aaa`aaa```aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``a```a````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````a````a``````````````````a`````aaa``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa````````````a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````````aaa``aaa```````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa``a``a```````a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````a`aaa``````a``a`a`a`a```aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaa`aa`````````aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````a```a`aaa``a``````a``aa``aa`aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa``a```````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a````a````````````````a```aa````````aa`aa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aa`aaa`aa``````````````a``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a`````a``aaa``aaa`aaaa``````````a`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```````a```aa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a`````````a````````a`````````a`a``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aa``a`a`````````aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````````a``a```aaa`a`a`a`a```aa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a````aa``a`a`a```````aa``````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````a`a``a`````a`a`a`aa`a```aaa```aa```aaa```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`a```aa```a`````````a````aaa``a````a```````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````````````````````````aa`a``aa`a`a`aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```````````a````````````aaaaaaaaaaaa`a`aaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a````a``a`aa``aa``a````aa`a```a``a`aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa`````````aaa``````a`aa```a`aa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaa`````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a`````````````````````````````````````aa``a``aaa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaa`aaa`aa````aa``````````aaa```````````````aa`aaaaa``a`aaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````aa````````aaa`aaa``aa``a``a``aaa``a`aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```aaa````aa````````````aa``aaaaaaaaaaaa`a``````aaaaa`a`a`aaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```a``````````````````````````aa`````a```aa``aaaaa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa````a`a`aa``a```````aa`````aaaaaaaaaaaaa`aaaaaaaaa````aaaaaa``aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````a``````a`a`a`aaa```aaa``````a``a```aa`aa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`aa`````aa`aa````````aa`a```aaaaaaaaaa`aaaaaaaaa``aaaa`````aaaaa``aaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a````````a```aa`````a`aa`aa```a``aaa``aaa``aa`a``aaaa``a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaa``````````````aaaaa```aaaaaaaaa````aaaaaaaa``aaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````a``````````````````a````````aa``a``a``aaa``aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa````a``a``````````````````aaaaa``aaaaaaaaaaaa`a`aaaaaaaaaaaa`a`aaaaaaa``aaaaaaaaaaaa`aaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````````````a``a````a````a``aaa```aaaa``aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````aaaa`aaa````a```````aaa``aaaaaaaaaaaaaaaaaa`a``aaaaaaa``````aaaaaaaaaaaaaaaaaaaa`aaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a```a``a``a````````````aaa``aa``````````aa`aaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``a````a``aa``a`````a`````aaa``aa`````````aaaaaaaaaa`aaa``aaaaaaaa`a``aaaaaaaaaaaaaaaa``aaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a``aa`````a```aaa```aa`aa`a````aa```a`a```aaaaa```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`aaa`````a``a`a```````aa``aa``aaaaaaaaa``````aaaaaaaaaaaa````a`aaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````a``a``a``aa`aaa````aa```aa``aaaaa``aaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa`a`a```````````````a``a````aaaaaaaaaaaaaa`a``aaaaaaaaaaa`````aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a````````````````````````````````````````aa`aaaaa```aaa``aaaaaa`a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa````aa`a`a``a```````a````aa`aa``````aaaa`aaaaaaa```a```aa``aaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aa``a````aa`aa```aaaa``a```````aaaa```aaaa`aaaaaa``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`a`````````````a`a`a``````a``aa``````a```aaaa```````aaaaaaaa``aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``````a``````a`````````````````````a```aa`````a`a`````aaa``aaaaa``aaa``a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````a``````a`````aaaa````aaaa``````aa````aaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a`````````a````````a```aa``````a`a```aaaa`a``aa``aaaaa``aaa``aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa`aaa``a````````````````````aaaa```````````aaaaa```aaaaaaaaaaaaa````aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````a``aaa``aaa`a```aaa``a`aaa``aaaaa`aaaa``a```aa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`aa```a`a`a``````````a```aaaa``````aaaaaaaaa``aaaa`aaaaaaaaaaaa````aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a```a````````````````a```a```aa`aa``aaaaa``aaa``a```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaa``a``a``````a`````aa`````aaaaaaaaaa`aaaa```aaaaa`````aaaaaaaaaaaa````aaaa``aaaaaaaaaaaaaaa``aa``aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````a``aa`a`aa```aa``a``aa```````aa``aaaaa``aaa``a``aaa````a``aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaa`aa``````a````aa`a``a`````aa``````aaaaaaaa```aaa``aaaa``aaaa`````aaaaaaaaaaaa```aaaaa`aaaaaaaaaaaaaaaaaaaa```````aaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````````a`aa`aa```aa````aaa`aaa``a``aaaaa``aaaa`a``aaa`````a````aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``````````````````````````````````````a```a``````````````aa````aaa```aaaaaa````aaaaaaaaaaaaa``aaaaaa``aaaaa```aaaaaaaaaaaaaa``a`aaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``````````````a`````a``````aaa`aaa`aa``aaaa``aaaa``a``aa````aaa``a```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaa``a`````aa``aa`````````````````````a````aa``aaaa`aaa`a`aaaaaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaa```aaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````````a```a``a`a`````````aaa`a``aaa```aaaaa````aa``a``aaa`aaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````````````````a```a``a```````````aa``aaaaaaaaa``aa`aaaaaaaaa```aaaaaaaaa`aa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaa``````````a`````````````a```a`````aaa```````````a```aa`a``a`aa``a```aa``aaaa`a```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa```aa``a``````````````````a```````aa```aaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaa`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaa```````````````````````aa`````````aaaaaa`a````aaa```aa`aa``aaa``aa``aaa`aaaa```a````aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaa`a`a```````````````a``````````````aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaa``````````````````````````a```````````aa`aaaaaaa``aa`a``aaa``aa``aaaa`aaaa``aaaa`````aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``````````aa`a`a````a``a`a````````````aa``a`aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa````aaaaa````````````````a````a````````````aaa`````aaa``aaa`a``aaa`aaa``aaa``aaa``aaa`aaa`````aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a`````a``a````````````````a`a`````aa``aaaaaa`aaaaaaa`aaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa``````aaaaaaa````````````````````````````````a`````aaaaa```aaa```aaa``aa``aaaa`aaaa``aaaaaaa```````aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``aaaaa``aaaa``````a`a``a`a```````a`a`a`````aa``aaaaaaaaaa`aaaa````aaaaa````aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaa`````````aaaaaaaaaa`````````````````aaa``````aaa`````````````````aa```aa``aa``aaaa``aaa``aaaa``aa`aaaa````aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaa`aaaa`a`a`a`a````````````````````````aa``aaaaaaaaaaaaaaaaaaa````aaaaaa```aaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaa````````````````````````````````a``aaa`````aaaa``aa`aaaa``aaa```aaa``aaaa``a``aaa``a`````aaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaa```aaa`a`a`a``````````````````````````aa``aa``aaaaaaaaaaaaaaaaaaa````aaaaa````aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaa``````a`a``a```````````aa``aa`````````````aa``a``aaaa``aaaa``aaa``aaaaa`aa``aaa``aaaa````aaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aa``a`aa``a``a``````aa```````````````````aa``aaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaa`aaaaa````````````````````a`aaa```aa`aa`aaaaa`aaa``aa`aaa``aaaa```aaa``aaaa``a``aaaa`aaaaa```````aaaaa``aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaa`aa````aa`aa```````````````aa```a`a````aa```aaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa``````aaaaaaaaaaaaaaa```````aaaaaaaaaaa````````````````aaa`````````````````````aa``aaa`aa``aaaa``aaa``aaaaa``a``aaa``aaaaa``a``````aaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````aa`a````````a`a``````aa```aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaa``````aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa````````````````````````a````````aaa`aaaaa`aaaa```aaaaa``aaa``aaaa`````aaaa`aaaaaa`aa``aaa````a```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa``aaaa``aa``a`````````````````````````a``aa```aa```aaaaaaaa``aaaaaaaaaaaaaaaaaaa````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaa```````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa```````````````a````a````````aa`````aaaaa`aaaaa``aaaa```aa``aaaaa````aaaa``aaaaa``a``aaaaaa``````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaa``aa`a`a``aa`a````a`a```````````````aaa``aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaa````aaaaaaaaaaaaaaaaaa`aaaa````aaaaaaaaaaaaaaaaaaaaaaaa``````a```````````aa`aa``a``````````````aaaa```aaa``a`a``aaaaa````aaaa``aaaaaa``a``aaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`aa`````aaa`a`aa`a````a`a```````````````aaa``aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa````aaaaaaaaaaaaaaaaaaa``aaaaaa`````````````````````````aaa``a``a```````````a`aa``a`a`aaaaaa```aaaa```aaaaa``aa``aaaaaaaaaa``````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``a`a````a`aa`aa```a`aa`a`````a`````````aaa``aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`aaaaaaaaaaaaaaaaaaaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaa``````aaaaaaaaaaaa`````````````a`````````````aaaa``aaaa`aa````a`````a```aaa`a```aaaaa``aaaaaa``aa`aaaaaaaaaaa`````````aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a``aaa`a``````a```````````````a`````````aaa```aaaaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa`aaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaa`a````aaa``````````````a````a````````````aa```a```a`a```a`a````aa````aaaaa``aaaaaa``aa``aaaaaaaaaaa`````aa`````aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````````````````````````aaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaa`aaaaaaaaa``a``aaaaaaaaaaa````````````a````a````aa``a``a````````a``aaaa`````a``a```aaaaa``aaaaaaa``aa``aaaaaaaaaaa``a``aaaa``````aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aa``aaaaa``a``a`a`````````````````aaa```aa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`````````````aa```a`````a``aaa`a`````a``a`aa```aaaa````aaaaa``aaaaaaa``aaa`aaaaaaaaaaaa``a```aaaaaa``````aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa`a`aa`a`aa``a`a`a`aa``a`````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```a```aa`aaaaa```````````````a`aaaaa`````````````````aa`a`a``````a``a`aa```aaaa```aa``a```aaaa``aaaaaaaa`aaa``aaaaaaaaaaaa``aa```aaaaaaaa`````aaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaa``````a``a``aa````a``````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaa```````````a```````aaa```a`a```a`aa`aa`````aaaaaaa``aaa``aaaaaaaa``aaa``aaaaaaaaaaa``aaaa``aaaaaaaaaa``````aaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aa`aaa```a`````````````````````````aaaa``aaaaaaaaaa``````aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa````aaaaaaaaaaaaaa``````aaa``aa```````````````````````a`aaa``aa````aaaa``a``aaaa```a```aaaaaaa``aaaa``aaaaaaaaaaa``aaaa```aaaaaa``aaaa``````aa``aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaa``aaaaa`a```a````````````````aaaa``aaaaaaaaaaaaaaaa```````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaa```aaaaaaa`aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaa`a`a`aaaaaa````aaa```````````aa````````````aa`aa`a``a`a```aaa``aa``aa``aaaaaaaaa``aaaa`aaaaaaaaaaaa``aaaaa``aaaaaa``aaaaaaa````````aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaa```````a````````aa``````````a`aaaa``aaaaaaaaaaaaaaaaaaaaaaa```````a``aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaa``aaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaa`aa`a```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaa````aaaaaaaa`````````````a``````````````````aaaa``aaaa``a``aa```aaaaaaa``aaaa``aaaaaaaaaaa``aaaaaa```aaaaa`aaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaa`aaaaaa``aa```a````````a`````a`aa```````a`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaa``````````a`aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaa``````````````aa```aa````a`a````aa```aaaaa```aaa`a`a`aaaa``aaaaa``aaaaaaaaaa``aaaaaaaa```aaa``aaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````a`aaa`aa`````````````````a`aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaa````aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa```````````aaaaaaaaaa`aaaaaa``````````````````a`````aaa``a``````aaaaa``aaa`aa`a`aa``aaaaa``aaaaaaaaaaa``aaaaaaaaa``aaa`aaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaa```aa````a``aa```a`a```````````a`aaaa``aaaaa````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a`aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````a``````aa```a`a`aa`a````a``aa``aaa`aa``aaaa````aaaaaaaaaa``aaaaaaaaaa```a``aaaaaaaaaaaaaaaaa``aaa`````aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa`aaaaaa```aaa`a```aa`aa```````a`````````aaaa``aaa````aaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa``````````a`````a``a```a``a```aaaaaa````a``aaaaa````aaaa```aaaaaaaaaa``aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaa```aaaaa`````aaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa`aaaa`aa`aa`aaa````````a`aa````````````aaaa``aaa`````````aaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa````aaaa``````````````a``````aa`````a`aaaaa``aaa```aaaa```aa`a``a`aaaaaaaaaa``aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa```aaaaaaa``````aaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aa``aa``aa`a``````````````````a``````````aaaa``aaaaaa``aaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa`aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaa`````````a```a`aaaaaaaaaaaaa``````aaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaa``````````a```a```a```a``a`````aa`aaaa```aaaa```aaa``a``aaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa````aaaaaaaaaa``````aaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````aaa```a``````````````aaaa``aa``````aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa``aaaaaaaaaa```````````a`````a``````a`a`aa```aaa``a`aa``aa`aa```aaaaaaaaaa``aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaa``````aaa`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``a`aa````````aaa```a`````````aaaa``aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa```aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaa```aaaaaaaaa````````````````````a````a`a`a``aa```aaa```aaaa`a``a`aaaaaaaa``aaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaa`a```aa`aa`a`````````a`````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaa```aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````a`a``a``aa`a``a``aaaaa``aaaa`aaaaaa``aaaaaaaaaaaaaaa``a```aaaaaaaaaaaaaaa``aaa``aaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a`aa``a`aa``aa````````````````````````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a`a```a````````aaaa```aaa``aaaaa``aaaaa``aaa``aaaaaaaaaaaaaaaa`aaa``aaaaaaaaaaaaaaa``aaa```aaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````aaaa`````````a```aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``````````````a````a```````````a````a``aaa`a`aaaa`a`aa``aaaaaaaaaaaaaaaa`aaa```aaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa``aaaa``aaaaa``aaaa````aaa```a`````````aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``````````````````aa````a`aa`a`````aa``a``aa`aaaa`aa``a`aaaaaaaaaaaaaa``aaaa```aaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaa`````````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaa`aaaa``aaaaa```aaa`aa`````````````````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aa`aa``a```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```````````a```a```````a```aaa``aaaa`aa`aaa`aaaa`a```a`aaaaaaaaaaaaa``aaaa```aaaaaaaaaaaa``aaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaa`a`aaa`aa````````````````````````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a`````a``````````aaaa``a`aaa`aaaaa`aa`a`aaaaaaaaaaaa`aaaaaa```aaaaaaaaaaa`aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaa`aa`aaa`a``a```````aa``a`aa`aa```````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````a```aa```a````a``a`aaa``aaa`aaaa``aaaaaaaaaaa`aaaaaa```aaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaa``aaaa`a`a````````a``a````````````````````aaaa```aaaaaaaaaaaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a`````a`aa`aa``aaa```a`aaa`aaa```aaaa`aaaaaaaaa``aaaaaaa```aaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa```a````````````````````````````aaaaaa`````````````````a``````````````````````````````aa`````aa``a`````a````````aaaaa```aaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa``aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````a``````a````a````aaa````aa`aa`aa`a``a``aaaa``aaaaaaa`aaaaaaaaa```a``aaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaa````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaa`aaaa`aaaaaa``a``aa`aa`aaaa`````a``````aaaa```aaaaaa`a`aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a`````````````aa`aaa``aaa``aa`aa```aa``aa`a`a`aaaaa```aaaaaaa```aa`a``a``aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaaaa`a````a``a```````````````aaaaa```aaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaa``aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a`````aaa``aaaa`aa`a``aaaa``aa`a`aa``aaaa`aaaaaaaa```aa`aa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaa``aaaaa```a``````````aa```a`````aaaaa```a```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaa`````````````````a`a``a``````aaaa`aa``a`a`aa``aa`a`aaa``aa`aaaaaaaaa``aaaaa`aa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`aaaa`aa```````aa`a``aa``````aa````aaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa````````````a`````a`a``aaaa````a`a``aa`a`aaa`aa`a`aaaaa``aaaaaaaaa```aaaa`aaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaa`aaaa`aa````aaa````aa`````a``aaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a```aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``````a`````````````aa```aa`aaaa````aa`a`aaa`aa`a`aa`aa```aaaaaaaa```aa``aaaaaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaaa`aa``aaa`````a``aa`````````aaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa````````````a`````a`aaaa`aa`aaa``aa`aa``aaaa`aa`a`aa```aa``aaaaaa```aa`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa`aaaa````aaaa```````````````````aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````a```````aaa`aa```aaa`a`aaaaa`aa```aa``aaaaa`aaaaa`````aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aaaa```````a``aa```````a`a````aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a````aa`aa````````````aa`a`aaaaa`aaa``a``aaaaaaa``aaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaa``aa`aaaa``aa``aaa`````````````aa`aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````a`aa`aaa``aaa``````````aa`aaaa```a`aaaaaaaa`a```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````aaaa``````a``aaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa`aaaaaaa`aaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a`````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````a`a`aa`aaaaa`aaa`aa`a`aa`aaa```aa`aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa`aaa`a``a```a`aa``````````aa```aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaa``aaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a`aaaaaaa```````````````a``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a`a`````````aaaaaa`aaa`aa`a`aa`aaa``aaa`aaaaaaaa````aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa`aa`````a`aaaaa```````a````a``aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````aa``a````a``````````````a`aa`a``a`aaa`aaaaaaa`a`````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``a``aa`a`a```aaaa```````aa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```a``````aaaaaaa`aaaaaa`a`aa```aa``aa`aaaaa``aa``aaa`aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaa`aaaaaa``aa`a`````a`````````aaaaa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```a```a``aa`aaa`aaaa`a`a`aa```aa``aa`aaaa``aaa``aaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaa`aaaaaa````````````aa```a```aaaa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa`a``a`aa``aaaaaaaaaaaaaaaaaaaaaaaa`a``````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```````````a````a``aa```aaa`aaaa`a`a`a``a`aa``aa`aaa`aaaaaaaaaaaa`aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````aa`aaaa`````aa``a`aa```aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa````````a```a``````````aa``aaaa`a`a``a`a`aaa`aa`aa`aaaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa``aaaaa``aaaaaa`aa``aa``a`a````aaa````aaaa````aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aa``aa``aa``````aaa`a`a`aa`a`aa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaa``aaaaa``aaaaaa```````aaa`aa`````a```aaaa```aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````a``aaa`aa```````````aaaa`a`aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaa``aaaa````aa`aaaaa`````aaa``aaaa```aaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aa`aaa`a`aaaa````aa`aaaaa`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaa`a`a`aa``````aa`a``aaa````aaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````a````````aa`aaaaaaa`aa`aa``aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`````a`````````````aa``a`a``aaa```aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a````````````a`a`a`aa`a``aa`aa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``a`aaaa`aaaaa```aa`aaaaa``a```aaa```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aa`````aaa`aa`a```a`aa`a`aa``aa`aaaaaaaaaaaa`aaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaa`aaaaaa`aa``aaa`aa``a``````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````a`a```````aa`a```a`aa`a`aa``aa`aaaaaaaa`aaa`aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaa````aaaaa```````a`a``aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a```````a``a```````````a`aa`a`aaa`aa`aaa`aaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa```````````````aa```a`````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a```a`````aaa`a```a`aa`a`aaa`aa`aaa`aaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa`aaaaa``aaaaaa`aaa`````aa```aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaa``aaaaaaaaa````aaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````aa`a```a````aa`aa`aaaaa`aa`aaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaa``aaaa``aa```````aaaaa````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa`aaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````aa``````aa`aaaaa`aaaaaaaa`aa`aaaa`aaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaa`aa``````aaaa``aaa``````aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aa``````a`aa`aa`a`````aa``a`aaaaa`aa`aaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaa`aa`````aaaa``aaaaa````aaa``aaaa```aaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aa````a```````aa`aa````aa``a``aaaa`aaaaaaa`aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaa``````a```aaaaa`aaaaa``````````a``aaaa```aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````a`aa``aaa`a`````aa`a`aa``aa`aaaa`aaa`aaa`aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaa`aaa``````````````````````aaaa```aaaa```aaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````a```````aa`a`a``````a`aa``aa`aaaaaaaa`a`a`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaa`aa`aaaa`aaa`a``````aaaa``aaaa``aaaa````aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aa`a```````aaa``aaa```aa``aa``aaaaaaa`aa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaa``aa``aa```````aaaaa``aaaa`````aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```a`aa`aa``aa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa```aaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaa``````````aa``a``````a`aa`a`aaa``a```aa``aaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaa`aaaa````aaaaa``aaaa``aaa`````aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``````````````a``a`a``aa```aaa``a`a`aa``aaaaaa```aaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa````aaaaa`aaaaaa```aaaaa```aaa````a``aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a`aaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``aaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaa```aaaaaaaaaaaaaa````````aaa`````a`a``aa```aaa``a`a`aaa`aaa`aaa`a``aaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa````aa``aaaaaa`a````aaa````aa````aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa``aaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaa````````````````````aa`a``aa``aa``aaa`aaa`aaa`aaa`aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaa`````````````````````a````a```aaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaa```aaa````````````````````````a```aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaa``````aa``aa````a``aa`aa`aa``aa``aaaaaaa`aaa`aaaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`aaaa``````aa`aaa````````````aaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa`aaaa``aaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa```````a```a`a````aa`aa`aa``aa`aaaaaaaa`aaa`aaaa`a`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa`aa`````````aaaaaa```aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`````````````aa``````a`aa``aa`a`aa``aa`aaa`aaaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa````aaa``aaaaaaaa``aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaa``aaaaaaaaaaa``aaaaaaaaaaaaaaaa```````aaa``aa````````````a`a`aaa`aaa`aa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa`a``````````````aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaa``aaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaaaaaaa``````````````aa``a``a```a``aaaa`aaa`aa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaa`aaaaa`aaaa```aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa```aaaaaaaaaa```aaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaa````````aa```aa`a``aa``````aaa`aaa``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaa`aaaaa`aa```aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaa``aaaaaaaa`aaaaaaaaaaa``aaaaaaaa``aaaaa``aaaaaaaaaaaaaaaaaaa```a````aa````aa``aa``aa```aa`aaa``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaa````````````aaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaa``aaaaaaaaaa``aaaaaaaaa``aaaaa`aaaaaaa``aaaaaaaaaaaaaa```a```````````aaa``aa`aaaa``aa``aa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````aa```aaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa```aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaa``aaaaaaaaaa``aaaaaaaa``aaaaa``aaaaaaa``aaaaaaaaaaaaaaaa`````````aaa```````aa`a`aa``aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaa````aa`aaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaa``aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaa``aaaaaaaaaaa`aaaaaaaaa`aaaaaaa`aaaaaaa`aaaaaaaaaaaaaaaaaaaa````````aaa```a```````aaa`aa``aa``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaa``aaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaa``aaaaaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaa```a````a`aa`````a`a`aaa`aaa``a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa``aaaaaa`aaaaaaaa`aaaaaaaaaaaaaaa`aaaaaaaa```a```````a````aa`a`aa`aaa``a``aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaa``aaaaaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaa````a`````aa`````a`aa``aa``aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````````````aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaa``aaaaaa``aaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaa````aa````a``aa`a`aaa`aa``aa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaa``aaaaaaaaaaaa``aaaaaaaaa`aaaaaaa`aaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaaaa```````````a```aa``aaa`aaa`aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaaa``aaaaaaa`aaaaaaaaa`aaaaaaaaaaaaaaa`aaaaaaaaaaaa```aaa`````a``````````````aa`aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaaaaa`aaaaaaa``aaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaa```aaaaaaa```````````a`aaa``aa``a``aaa`aaa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaa```aaaaaaaaaa``aaaaaaa`aaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaaa``aaaaaaaaaa``````a``````````aa``a`aaaa``aa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaa``aaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaa```aaaa`aaaaaaaa`````aaa```aa```a``a`aaaa``aa`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaa``aaaaaaa`aaaaaaaaaa``aaaaaaaaaaaaaaa`aaaaaaaaaa```aaaaaaaaaaaaaaaa``````aa`aaa`aa``a``aaaa`aa`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaa`````````aaaaaa``aa`aaaa`aa``a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa````aaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaaa`aaaaaaaaaaaaaaa``aaaaaaaaa``aaaaaaaaaaaaaaaaaaaa`aa``````````aaaa`a`aaaa``aa`a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaa```aaaaaaaaaaaaaaaa``aaaaaaaa`aaaaaaaaaaaa`aaaaaaaaaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aaa``aa`a````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````aaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaa`aaaaaaaaaaaa``aaaaaaaaaaaaaa``aaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaa`````a```aaa`a`aaaa``aa`aa`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa```````````````````````aaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaa``aaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa```a`a`aaaaa`aa``a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa``aaaaaaaaaaaaa``aaaaa`aaaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaa`aa`aaa`a`a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaa``aaaaaaaaaaaaa``aaaaa``aaaaaa``aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````aa``aa`a`a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaa``aaaaaaaaaaaaaa``aaaaaaaaaaa```aaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aa``````aa`a`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaa``aaaaa`aaaaa``aaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aa`aaa`aaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaa``aaaaa`aaaa``aaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````a`aaa`aaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaa``aaaaaaaaaa`aaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aa``aa``aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`a````aaa`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa`aaa`aaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a`aaa`aaa`aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa`aaaa`aaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaaa`aaaa``aa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aaa`aaaa``aa`aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaaa``aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````aaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa``aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````aaa`aaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````a`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````````````````aaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaa`a```````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a````a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaa`aaa```a``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaa`aaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaa``aaaa`aaaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```aaa``aa``aaa``aaa``aa```aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaa``aa`aaaa``aaa``aa`````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaa```aa``aa`aaaa``a```aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aa``aaaa``aa``aa``aaaa```a`aaa`aaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```a`aaaaaa`aa``aa``aaaaaaa``aaa``aa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a```a`aaaaaa`aa``aa``aaaaaaa``aaa`aa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aa`a``aaa`aa```a``aaaaaaa`aaaa````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aa`a``aaa`aa`a``a`aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa````aa`a```a``aa`aa```aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaa``aa`aa```a`a``aa`aaa``aaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``````aa`aa```a````aa`aaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aa``aa``aa``aaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``a``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa```a``aaaaaaaaaaaaaaaaaaaaaaa``aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa``aa`aaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", +"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" +}; diff --git a/Documentation/pictures/screenshot.xpm b/Documentation/pictures/screenshot.xpm new file mode 100644 index 0000000000..c30a2831de --- /dev/null +++ b/Documentation/pictures/screenshot.xpm @@ -0,0 +1,537 @@ +/* XPM */ +static char *noname[] = { +/* width height ncolors chars_per_pixel */ +"509 524 6 1", +/* colors */ +" c #000000", +". c #FFF0F0", +"X c #6354C3", +"o c #F5DEB3", +"O c #473C8B", +"+ c #231E45", +/* pixels */ +"XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXX+", +"XXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXX++", +"XXOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOO++", +"XXOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOO++", +"XXOO++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++XOO++", +"XXOO+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXX+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoooOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOoOOOoooOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXXXXXXXXX+OO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOoOOoOOOoOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoooooOOOoOooOOOoooOOOOooooOoOOoooOoOoOOoOOoOOOoOOoOooOOOOOOOOOOOooooOOOOoooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+XOOXXXXXXXXX+OO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOooOOOOoOOOoOOoOOOoOoOoOOoOooOooOoOoOOOoOOooOOoOOOOOOOOOoOOOoOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOXXX+OOOOO+XOO++", +"XXOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOoOOOoOOoOOOoOoOoOOoOoOOoOOoOoOOOoOOoOOOoOOOOOOOOOoOOOoOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOXOO+OOOOO+XOO++", +"XXOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOoooooOOoOOOoOoOoOooOoOOoOOoOoOOOoOOoOOOoOOOOOOOOOoOOOoOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOXOO+OOOOO+XOO++", +"XXOO+XOO++++++++++OO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOoOOOOOOoOOOoOoOOoOOooOOoOOoOoOOOoOOoOOOoOOOOOOOOOoOOOoOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOO++++OOOOO+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOoOOOoOOoOOooOOoOOOOOoOOoOOoOoOOooOOoOOOoOOOooOOOOoOOooOOOoOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOoOOOOOOoOOOOOOoooOOOOooOoOOOoooOOoOOoOOoOOooOoOOooooOOOOooOOOOOooOoOOOOoooOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOXOOOOOOOO+OO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOO++++++++++OO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOOOOOOOOOOOOOO+XOO++", +"XXOO+X+++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X+++++++++++++++X+++++++++++++++XOO++", +"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++", +"XXXX+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XXXX+", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . ..... . . ... .................. ............ . .... . ......... ................ .......... .......... ............................... ............................... ...... .......................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. .. . . . . .. . . .................. ........... .... .. .......... .... ......... ......... ..... ..... ............................... ........ ............ ......... ....... .......................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... . .. . . . . . . . . .................. ........... . .... ... .......... .............. . ........... ........... ............................... ........ ...................... ....... .......................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . . ... . . . ... . . ...... . .. ... . ................. ... ... ... ... ... . . ........... .... ..... ... ... . ... .. . ... ....... .. ... .. ... . .. .. .... .... ................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . . . ... . . . . .... ...... . . . ... . ... ............... .... .. .. .. .... .. .. . .......... ..... ..... ... ... . ... . ... . .. . ... ........ .... ... ... ... .. . . ..... ... ... ...............................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . . . . . . . . ...... . . . ... . ... .............. ..... .. .. .... .. .. . ......... ..... ..... ... ... . ... . ... . ... . ... ........ .... . . ... ... ... . ...... ... ...............................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . ..... . . . . . . ...... . . . ... . ... .............. ..... .. ...... .... .. ...... . ......... ..... ..... ... .. . ... . ... . ... . ... ........ .... . . ... ... ... . . ..... ... ...................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . . . . . . . . . . ...... . . . .. . ... ............. ...... .. .. .. .... .. .. .......... ..... ..... .... . . .. ... . ... . ... ........ .. . . . ... ... ... . .. .... ... ... ...............................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....... . ... ... . ... ..... ... ...... ... .. . . .............. ..... .. .. .. .. ... .......... ... ... ...... . ...... .. ... .. ......... ... . ... .. ... . ... .. ... ................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . ...................................................................................................... ... . .....................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ....................................................................................................... .. .....................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... .. ... . ... ....... ............ ......... .................. ......... ........... ......... .. ...... . .. ........................... ........... ............. ........... ............ ..... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... . .. . ... ....... ....... ..... ......... ... ................. ........ . ......... ............. . ... ..... . ....... ........................... ....... ... ............ .......... ............ ..... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..... .. . ... ....... ............. ......... ... ................. ....... ... ....... . ............ .. ... .... .. ....... ........................... ........... ........... . ......... . ........... .... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..... . . . ... ....... ...... ..... ... ... . ... .. .. . ... ....... ... ......... ............ .. ... .... .. ....... .... .. ... .. .. . .. ...... ... .......... ........... .......... . ... . ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..... . . . ... ....... ....... ..... ... ... . .. ... . .. . ... ....... ... ......... ........... .... .... ... .... ... ... . ... . ... . .. . ....... ... ... ......... ........... .......... . ... . ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. .. . .. . ... ....... ....... ..... ... ... . ..... ... . ... . ... ....... ... ......... ........... ... ... .. .... ....... ... ... . . . . . ..... ....... ... ... ......... ........... ......... .. .. .. ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... . .. . ... ....... ....... ..... ... .. . ..... ... . ... . ... ....... ... ......... .......... .... ... .. .... ....... ... ... . . . . ..... ..... ....... ... ... ......... ........... ......... . ...........................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... . ... . ... ....... ....... ..... .... . . ..... ... . ... . ... ........ . .... ..... ..... .... .... ... . ..... ....... ... ... . . . . ... . ..... ....... ... ... ......... ..... ..... ..... ...... ..... .... .......................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... .. ... .. ........ .. ... ...... . ...... .. ... .. ......... .... .. .. ... ..... .. ..... ...... ... ... . ... .. ..... .. .. ........ .. .. .. ..... ..... ... ......................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............................................ ... ....................................... ........... ......................................................................................... ........... ................. .......................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............................................. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ......................................................... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ................................ .......... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ...XOO++", +"XXOO+.............. .. ... ..................... .................................. ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ... ........... .... ............ .......... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ...XOO++", +"XXOO+.............. .. ... ........................................................ ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ..................... ............ .......... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ....XOO++", +"XXOO+.............. .. ... .. .. . ... ... ... . ... ..................... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... ... . ... ... .......... ... ... .. ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ....XOO++", +"XXOO+.............. .. ...... . .. . ... ... ... .. . ... .................... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ..... ... .. ... .... ............ ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .....XOO++", +"XXOO+.............. .. ...... . ...... ..... ... ... . ... .................... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ...... ... ... ... .... ............ ... ... .. ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ......XOO++", +"XXOO+.............. .. ..... ... . ........ .... ... ... . ... .................... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... ...... ... ... ... .... ............ ... .. .. ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ......XOO++", +"XXOO+.............. .. ..... ... . ..... ... ... ... ... .. ... ..... ..... .... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ....... ... ... ... .... .. ... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . .......XOO++", +"XXOO+.............. .. ...... . ...... ... .. ... ..... .. ... ... ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... .. ... .. .... ... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . .......XOO++", +"XXOO+.............. ...................................... ... ... ..... ..... ............................................................................................................................................. ... . ..................................................................................... ......... ... ........................................................................................................................................... ... . ...............................XOO++", +"XXOO+.............. ....................................... ............................................................................................................................................................... .. ................................................................................................ ............................................................................................................................................. .. ...............................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .............................. ..... .............. .......................................................... .......... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ..... ............................................ .......... ... ...... . ........................... ... .................. ..... .....................XOO++", +"XXOO+.............. .... ........... .... ........ ..... ............... ...................... ...... ............................. .......... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ..... ........................... ................. ............ ... ........ . ........................... .. .. ................. ..... .....................XOO++", +"XXOO+.............. ..................... ....... ...... ............... ...................... .................................... .......... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ...... ............................................. ............ ... ....... .. .......................... ... .................... .... ......................XOO++", +"XXOO+.............. ... ... . ... ... ..... ... .. ... .... .... .. . ... .. ... .... .. . ... .......... ... ... .. ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... . ... . . ... .. . ... .... .......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ....XOO++", +"XXOO+.............. .... ... .. ... .... ...... ... ... . ... . ... ... ....... . .. ..... .. ...... ... ... . .. . ... ......... ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . ... . .. ..... . . . ... ... ... ......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ...XOO++", +"XXOO+.............. .... ... ... ... .... ..... .... ... . . ....... .... . ...... .. ...... ... ... . ... .. ........... ... ... .. ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ... . ... .. . . . ... ... ............. ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... .......XOO++", +"XXOO+.............. .... ... ... ... .... ..... .... ... . ..... ....... ... ... . ..... ... .. ...... ... ... . ... .... .......... ... .. .. ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . .. . ... . ... . . . ... ... ............. ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. .......XOO++", +"XXOO+.............. .... ... ... ... .... .. . ..... ... . ... . ... ... ... ... . ..... ... .. .. ... ... ... . ... . ... ... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... .. . . ... . ... . . . ... ... ... ... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . .......XOO++", +"XXOO+.............. ... .. ... .. .... .. ...... .. ... ... ... . ...... ... ... ... .. ... .. ... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... ..... . ... .. . ... .. ... ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. .......XOO++", +"XXOO+.............. .......................................................................................................... ......... ... ........................................................................................................................................... ... . ................................................................. ... ................................. ......... ... ...................................................................................................XOO++", +"XXOO+.............. ..................................................................................................................... ............................................................................................................................................. .. .................................................................. ............................................. ....................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ...... ....................... .. .......... ............................... ..... ............................. ................. .............. ................... .............. .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ............................................ .......... ... ...... . .......XOO++", +"XXOO+.............. ...... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ................. ............... ................... ............... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ..................... .......... ............ ............ ... ........ . .......XOO++", +"XXOO+.............. ..... ....................... .... ........... ............................... .... ..................... ....... .................. ............... ................... ............... ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ................................. ............ ............ ... ....... .. .......XOO++", +"XXOO+.............. ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. . ... ... .. .. . .... .... .. . ... .. .......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... ... .. . ... ... .. .......... ... ... .... ... ....... .. . ....XOO++", +"XXOO+.............. .... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... .. . ... . ... . ... . .. ... ....... . .. . ... . ... ......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . ... . .. ... ... ... .. ............ ... ... .... ... ...... ... .. ...XOO++", +"XXOO+.............. ... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . . ... . . ....... .... . ... . ... .. ........... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... ... ..... ....... ... ... .. ............ ... ... .... ... ..... .... ... ...XOO++", +"XXOO+.............. ... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ..... ... . ..... ....... ... ... . ... . ... .... .......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... ....... .. ..... ....... ... ... .. ............ ... .. .... ... ..... .... ... ...XOO++", +"XXOO+.............. .. ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... . ... . ... . ... . ....... ... ... . ... . ... . ... ... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... . ... . ....... ... ... .. ... ..... .... . .... ... .... ..... ... ...XOO++", +"XXOO+.............. .. ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ... .. ... .. .. ...... ... . ... .. .. ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... ... .. ...... .. ....... ... ... ...... .. ... .. ..... ... ...XOO++", +"XXOO+.............. .................................................. ... . ......................................................................................................................... ......... ... ................................................................................................................................................. ... . ................................................................................... ............. ......... ... ...........................XOO++", +"XXOO+.............. ................................................... .. .................................................................................................................................... ................................................................................................................................................... .. ................................................................................... ........................ ............................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ........................ ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ................................ .... .......... .......... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ............. ...... ...........XOO++", +"XXOO+.............. ........................ .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ............................... ... .. . .......... .......... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ .. .......... ....... ...........XOO++", +"XXOO+.............. ....................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ................................ ... . ... ......... .......... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ... .......... ....... ...........XOO++", +"XXOO+.............. ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. ... .. . ...... . ... ......... ... ... .. ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. .... .... ....XOO++", +"XXOO+.............. .. ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... ..... . ... . ... . .. .... .. ... ......... ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... .... ........ . ... ... ... ... ...XOO++", +"XXOO+.............. .. ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... .. . ... . . ....... ... ... ......... ... ... .. ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... ..... . ... ... ... ...XOO++", +"XXOO+.............. .. ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ... . ... . ..... ...... .... ... ......... ... .. .. ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... .... ... . ... ... ... .......XOO++", +"XXOO+.............. .. ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ... . .. ... . ..... ...... . .... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ...... .. . ... . ... ... ... ... ...XOO++", +"XXOO+.............. ... .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ...... . ...... .. ..... ... .... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ....... ... . ... ... ....XOO++", +"XXOO+.............. .......................................................................................................................... ... . ........................................................... ........... ............................... ......... ... ........................................................................................................................................... ... . ...........................................................................................XOO++", +"XXOO+.............. ........................................................................................................................... .. ........................................................... ........... .......................................... ............................................................................................................................................. .. ...........................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... .... .......... .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ............. ...... ........... ... ........ .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ...XOO++", +"XXOO+.............. .. ... .. . .......... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ .. .......... ....... .......... ....... ......... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ...XOO++", +"XXOO+.............. .. ... . ... ......... ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ... .......... ....... ......... . ...... .......... ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ....XOO++", +"XXOO+.............. ...... . ... ......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. .... .... .... ..... ........... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ....XOO++", +"XXOO+.............. ..... .. ... ......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... .... ........ . ... ... ... ... ... .... .......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .....XOO++", +"XXOO+.............. .... ... ... ......... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... ..... . ... ... ... ... ....... ......... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ......XOO++", +"XXOO+.............. ... .... ... ......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... .... ... . ... ... ... ....... ....... ......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ......XOO++", +"XXOO+.............. .. ...... . .... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ...... .. . ... . ... ... ... ... ... ... ... ... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . .......XOO++", +"XXOO+.............. .. ... .... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ....... ... . ... ... .. .. ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . .......XOO++", +"XXOO+.............. ................ ......... ... ................................................................................................................................................. ... . ....................................................................................................... ......... ... ................................................................................................................................................. ... . ...............................XOO++", +"XXOO+.............. ........................... ................................................................................................................................................... .. .................................................................................................................. ................................................................................................................................................... .. ...............................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .............................. ............. ...... ........... .... ......... .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ............................................ .......... ...... . ........................... ... .................. ..... ....................... ....................... .. .....XOO++", +"XXOO+.............. .... ........... .... ........ .. .......... ....... .......... ... ... ......... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ............................................. .......... ........ . ........................... .. .. ................. ..... ....................... ....................... ... .....XOO++", +"XXOO+.............. ..................... ....... ... .......... ....... ......... . ... ............. ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... .............................................. .......... ....... .. .......................... ... .................... .... ....................... ....................... .... .....XOO++", +"XXOO+.............. ... ... . ... ... ..... .. ... .. .... .... .... ... ............. ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. . ... .. . ... .......... ... ... .. ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .....XOO++", +"XXOO+.............. .... ... .. ... .... ...... .... ........ . ... ... ... ... ... ... .......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... ..... . .. ..... . . . . ... ......... ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... .....XOO++", +"XXOO+.............. .... ... ... ... .... ..... ..... ..... . ... ... ... ... ... ... ......... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... .. . ...... . . . .. ........... ... ... .. ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... .....XOO++", +"XXOO+.............. .... ... ... ... .... ..... ..... .... ... . ... ... ... ....... ... ... ......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ... . ..... ... . . . .... .......... ... .. .. ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... .....XOO++", +"XXOO+.............. .... ... ... ... .... .. . ...... .. . ... . ... ... ... ... ... ... ... ... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ... . ..... ... . . . . ... ... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... .....XOO++", +"XXOO+.............. ... .. ... .. .... .. ....... ... . ... ... .. .. ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ...... . ...... . ... .. ... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ....XOO++", +"XXOO+.............. ............................................................................ ......... ... ................................................................................................................................................. ... . ........................................................... ..................................... ......... ... .................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................... ................................................................................................................................................... .. ........................................................... ................................................ ..................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ......... ............................... ..... ............................. .......... ......... .......... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ...................................... .......... ... ...... . ........................... ... .................. ..... ....................... ...............XOO++", +"XXOO+.............. .... ..... ............................... ..... ... ........... .... ........ .......... .......... ............ ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ....................................... ............ ... ........ . ........................... .. .. ................. ..... ....................... ...............XOO++", +"XXOO+.............. .......... ............................... .... ..................... ....... .......... .......... ............ ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ........................................ ............ ... ....... .. .......................... ... .................... .... ....................... ................XOO++", +"XXOO+.............. ... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... ... . .......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. ... .. . .......... ... ... .... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ....XOO++", +"XXOO+.............. .... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ....... .. . .......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... ..... . ... . ... . .. ......... ... ... .... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. ...XOO++", +"XXOO+.............. .... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... ..... . .. .......... ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... .. . ... . . ............. ... ... .... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... .......XOO++", +"XXOO+.............. .... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ......... ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ... . ... . ..... ............. ... .. .... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. .......XOO++", +"XXOO+.............. .... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... .... .... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ... . .. ... . ....... ..... .... . .... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . .......XOO++", +"XXOO+.............. ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... .... ... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ...... . ...... .. ...... ... ...... .. ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. .......XOO++", +"XXOO+.............. .............. ... . ......................................................................... ......... ... ................................................................................................................................................. ... . ........................................................... ........... ................... ......... ... .....................................................................................................................XOO++", +"XXOO+.............. ............... .. .................................................................................... ................................................................................................................................................... .. ........................................................... ........... .............................. ......................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............ .. .......... ............................... ..... ............................. ........................................................ .......... ... ... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. ................. .............. .......... ...... . ........................... ... ..........XOO++", +"XXOO+.............. ............ ... ..... ..... ............................... ..... ... ........... .... ........ ......................................................... ............ ..... ..... ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ......... ....... ... ........... .......... ........ . ........................... .. .. .........XOO++", +"XXOO+.............. ........... .... ........... ............................... .... ..................... ....... .......................................................... ............ ..... ..... ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... .................. ............... .......... ....... .. .......................... ... ............XOO++", +"XXOO+.............. ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... ... .. . ... .. . ... .. ... .. .. . .......... ... ... .... ..... ..... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. . ... .... .. ........... ... ... .. ....... .. . ... .. . ... ..... ... .... . ....XOO++", +"XXOO+.............. .. ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . .. . ... . .. ..... . ... . ... . .. ......... ... ... .... ..... ..... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... . . ... ... ... ... ........... ... ... .. ...... ... .. . ... . . . . ... ... ... .. .. ...XOO++", +"XXOO+.............. .. ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... . ... . ... . ...... . ... . . ............. ... ... .... ..... ..... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... . . ... ... ... ... ........... ... ... .. ..... .... ... . ... . . . . .. ..... .... .......XOO++", +"XXOO+.............. .. ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ..... ... . ... . ..... ... .. . .. ..... ............. ... .. .... ..... ..... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... . . ... ... ... ... ........... ... .. .. ..... .... ... . ... . . . . ...... ..... .... .......XOO++", +"XXOO+.............. .. ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... ... . ... .. . ..... ... .. . .. ... . ....... ..... .... . .... ..... ..... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... . . ... ... ... ... ..... ..... .... . .. .... ..... ... . ... . . . . ... . ...... .... .......XOO++", +"XXOO+.............. ... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ...... .. ... ..... . ...... ... .... .. ...... ... ...... .. ... ... ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ... .. ... .. ... ... ...... .. .. ..... ... .. .. ... .. .. ...... .... .......XOO++", +"XXOO+.............. ................................ ... . ....................................................................... ... ................................. ......... ... ............................................................................................................................................................. ... . ..................................................................................... ......... ... .........................................................XOO++", +"XXOO+.............. ................................. .. ........................................................................ ............................................. ............................................................................................................................................................... .. ................................................................................................ ..........................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............ ..... ....................... ....................... .. .......... ............................... ..... ............................. ..................... ....................................... .......... ... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ............................. .............................................XOO++", +"XXOO+.............. ............ ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ .................... .. ....................................... ............ ..... ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ........... .... ........ ...................................... ......XOO++", +"XXOO+.............. ............ .... ....................... ....................... .... ........... ............................... .... ..................... ....... ..................... .......................................... ............ ..... ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ..................... ....... ....................................... ......XOO++", +"XXOO+.............. ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. ... .. . ... ..... .. . .. . ... .. . .......... ... ... .... ..... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . ... ... ..... .. .. . ... .. ... .. . .. ....XOO++", +"XXOO+.............. .. ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . ... . .. . .. ... . .. . . . . ... . .. ......... ... ... .... ..... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. ... .... ...... ... ... . .. . ... . ... . ... . .. .. ......XOO++", +"XXOO+.............. .. . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . . ...... .... ... . ..... . . . . ............. ... ... .... ..... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ..... ... . ... . . ...... ......XOO++", +"XXOO+.............. .. ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ..... ...... .... ... . ..... . . . ..... ............. ... .. .... ..... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... ... .... ..... .... ... . ..... ... . ... . ..... ...... ......XOO++", +"XXOO+.............. .. ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ... . ...... .... ... . ..... . . . ... . ....... ..... .... . .... ..... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... ... .... .. . ..... .. ..... ... . .. ... . ...... .. ...XOO++", +"XXOO+.............. ... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ...... .. ...... ..... .. ..... ... .. .. ...... ... ...... .. ... ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... .. .... .. ..... ..... ...... .. ...... .. ....... ....XOO++", +"XXOO+.............. ...................................................................................... ... . ........................................................... ....................................................... ......... ... ....................................................................................................................................................... ... . ........................................................... ................. .........................XOO++", +"XXOO+.............. ....................................................................................... .. ........................................................... .................................................................. ......................................................................................................................................................... .. ........................................................... ................. .........................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............... .......... ... ... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ................................... ......................... ...... ................ .......... ... ......................................................................................................................................................................XOO++", +"XXOO+.............. ................ ............ ..... ... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ... ...................... ........ .. ............ ......... ....... ................. ............ ..... ......................................................................................................................................................................XOO++", +"XXOO+.............. ................ ............ ..... ... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ........................... ....... ... ...................... ....... ................. ............ ..... ......................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ......... ... ... .... ..... ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... ... ... . .. .. ... . ..... .. .. ... .. ... . .. .. .... .... .......... ... ... .... ..... ......................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ......... ... ... .... ..... ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ..... ... .. . ... . ... .. ...... .... .... ... ... ... .. . . ..... ... ... ......... ... ... .... ..... ......................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ......... ... ... .... ..... ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ...... ... ... . ... . ... .. ..... ..... .... . . ... ... ... . ...... ... ......... ... ... .... ..... ......................................................................................................................................................................XOO++", +"XXOO+.............. .. .. ......... ... .. .... ..... ... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ...... ... ... . ... . ... .. ..... ..... .... . . ... ... ... . . ..... ... ............. ... .. .... ..... ......................................................................................................................................................................XOO++", +"XXOO+.............. ... . ... ..... .... . .... ..... ... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ....... ... ... . .. .. .. .. . ...... .. . . . ... ... ... . .. .... ... ... ... ..... .... . .... ..... ......................................................................................................................................................................XOO++", +"XXOO+.............. ...... .. ... ...... .. ... ... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ...... .. ... . ...... . ... .. ....... ... . ... .. ... . ... .. ... ... ... ...... .. ... ......................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ... ......... ... ....................................................................................................................................................... ... . ......................................... ................................................................... ......... ... .................................................................................................................................................................................XOO++", +"XXOO+.............. ... ............... ......................................................................................................................................................... .. ......................................... .............................................................................. ..................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ........................................................................................................................... ... ... ... .... .... ... ... ... ..... ... ... ... .. .. ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... .......... ................................... ...... ......................................... ............................ .... ... .... ... ..... ... ... .... ... .... ... .... ..... ... .... ... . ........ ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... .......... ................................... ............................................................................. .... ... .... ... .... . ... ........ ... .... ... ... ..... ... .... ... . ........ ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... . .. ... .. . .. .. . ... .. ... ... . ... ........ . .. ... .. ... .... ..................... .... ... .... ... ...... ... ........ ... ........ .. . ..... ... ........ . . ..... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... .. .. .... ... . .. . ... . .. . ... .. ...... ... .. . ... ....... . . . ... . ... ... ... ... .................... ..... ..... ... ...... ... ..... ... ....... ... . ..... ... ....... .. .. .... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ... .. .... . ..... ... . ..... .. ...... ... ... . ... ....... . . . ... .. ..... ... ........................ .... ... .... ... ...... ... ... .... ... ...... ... .. ..... ... ...... ....... .... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ... .. .... ..... ..... ... . ..... ...... ...... ... ... . ... ....... . . . ... .... .... ... ........................ .... ... .... ... ...... ... ... .... ... ..... .... .... ... ..... ........ .... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ... .. .. . ... . ..... .. ..... ... .. .. ... ... ... .. ....... . . . .. . ... ... ... ... ... ..... ..... .... .... ... .... ... ...... ... ... .... ... .... ........ ..... ... .... ..... ... .... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... .. ... ... ... .. ..... ..... ...... .... ... .. ... ..... ....... ... .. . .. ... ... ... ... ... ... ... ... ... .. .. ... ... .. .... ... ... .. .. ... ............................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ................................ ................................... ... ....................................... ..... ..... .......................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ................................ .................................... ............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ........................................ ......... ... ........................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ............................ ............. .. ........................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ........................ ......... . ............ .. . ........................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ... . ... ... .......... ........... ..... .......... ... ... ... .. . ... .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ... ... ........... .......... .... ......... ... . ... . ... . ... . .. . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ............... ............. ... .......... ... . ..... ... . ... . ... .. .........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ................... ............. ... ............ .. ..... ..... ... . ... . ... .... ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... .. ... ... . . . ... ... ........... ..... ... ... ... ......... ... . ... . ... . ... . ... . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... .. ... .. ... ........ .. ... .. ........ ... ... ... .. ... .. .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............................ ................. .....................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ....................................................................................... ................................................................ ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ......... ...... ....................... ... ..................... .... ................. ......... ..............................................XOO++", +"XXOO+.............. .. ... ......................................................... ............................. ............................ ................................... ........ . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... ........ .. ..... .............. ........ .. .. ........ .......... ... .. . ............... .. .......... ..............................................XOO++", +"XXOO+.............. .. ... ....................................................................................... ............................ ................................... ....... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ......... ....... ............... ....... ... ........... .......... ... . ... .............. ............. ..............................................XOO++", +"XXOO+.............. .. ... . . ... .. .. . ... ... ... ... ... ... ... . ... ......... .... .... .. . ... .. . .. ... ........................... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. . ... ....... ... .. ... . ..... ... ..... .. ... ...... . ... ........ ... .... . ..... ..............................................XOO++", +"XXOO+.............. .. .. .. . ... . ... . .. . ... . ... . ... . ... . ... ... ... .. . ... ....... ... ... ... ... . . . . ... . .. .. .... ... .......................... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... ... . . . .... ... ... . ... .. ...... ... .. ... .. ........ .... .. ... ........... . .. . . .... ..............................................XOO++", +"XXOO+.............. .. ..... ..... . ... . ..... ... . ..... .. .... ..... ... ... . ... ....... ... ... . . . . . ... .. ..... ............................ ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. .... . . .. ..... .... ... . ... .. ..... ..... .... .. ..... ... ... ... ........ .. .... . . .... ..............................................XOO++", +"XXOO+.............. .. ..... ..... ..... ... . ..... ... . ..... ........ ..... .... ... ... . ... ....... ....... ... ..... . . . ..... ... .. ....... ........................... ..... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. .... . . .. ..... .... ... . ... .. ..... ..... .... ...... .... ... .. .... ... ....... ... .. .... . . .... ..............................................XOO++", +"XXOO+.............. .. ..... ..... ... . .. ..... ... . ... . ... . ... . ... ... ... ... .. ....... ... ... ... ... . . . . ... . ... .. .. . ... ... ..... ..... .......... .... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ..... . . .. .... ..... ... . .. .. .. . ...... .... ... .. .. . ... . ...... . .... ... ... .. .... . . .... ..............................................XOO++", +"XXOO+.............. .. ..... ...... .. ..... ...... ... ... ... ... ... .. ... ..... ........ ... ... .. ... .. .. ... ... ... ... ... ... ......... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ..... ... .. .... ...... ... . ... .. ...... ..... .... ... . ... .... ... .. .... ... .. ..............................................XOO++", +"XXOO+.............. .................... ..................................................... ... ......................................................... ..... ..... ................................................................................................................................................... ... . ............................................................................................................. .......................................................................XOO++", +"XXOO+.............. .................... ...................................................... ........................................................................................................................................................................................................................... .. .....................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ......... ................ .................................................... .......................................................................................................... .. .. ... ... ... ... ... ... ... .... .... ... ... .... ... .. ... .... .... ... ... ... .... .... ... ... ..... ... ... ... .. .. ..............................................................................................XOO++", +"XXOO+.............. .. ... ......... ................. .......... ...... ................................... ............................................... .... ...... .............................................. ........ .... ... .... ... .... ... .... ... .... ... ..... ... ... .... ... ..... ... ........ ... ..... ... ... .... ... .... ... .. ...... ... .... ... .... ..... ... .... ... . ........ ..............................................................................................XOO++", +"XXOO+.............. .. ............. ................. .......... .......................................... .................................................... ..................................................... ....... ..... ... .... ........ ... .... ... .... ... .... . ... ... .... ... .... . ... ........ ... .... . ... ... .... ... .... ... . . ...... ... .... ... ... ..... ... .... ... . ........ ..............................................................................................XOO++", +"XXOO+.............. .. ...... .... .... .. ... ... .... .. ... ... . ... ......... ... .... ... ... . . .. . ........ ... ... ... ... ... .... .. . ... ........................... ...... ...... ... .... ........ ... .... ... .... ... ...... ....... .... ... ...... ... . ..... ... ...... ... ... .... ... ........ ... ...... ... ........ .. . ..... ... ........ . . ..... ..............................................................................................XOO++", +"XXOO+.............. .. ......... ... ... ... . ... ... ....... .. ...... ... .. . ... ....... ... . ... ... ... ... . . . . .. ....... ... . ... . ... ... .... ...... ... ... . .. . ... .......................... ..... ..... ... .... ..... ... ..... .... ... ...... ...... ..... ... ...... ... .. .... ... ...... .... ..... ... ....... .... ...... ... ....... ... . ..... ... ....... .. .. .... ..............................................................................................XOO++", +"XXOO+.............. .. ...... ... ... ..... ... ... .... .. ...... ... ... . ... ....... ..... ... ... ... ... . . . . ... ....... ... . ... .. ..... .... ...... ... ... . ... .. ............................ ........ .... ... .... ... .... ... ........ .... ... ...... ..... ...... ... ...... ....... .... ... ...... ... ... .... ... ...... ..... ...... ... ...... ... .. ..... ... ...... ....... .... ..............................................................................................XOO++", +"XXOO+.............. .. ..... ... ... ... ..... ... ... ... ... .. ...... ... ... . ... ....... ..... ... ... ... ... . . . . ... ....... ... . ... .... .... .... ...... ... ... . ... .... ........................... ........ .... ... .... ... .... ... ........ .... ... ...... .... ....... ... ...... ....... .... ... ...... ... ... .... ... ..... ...... ...... ... ..... .... .... ... ..... ........ .... ..............................................................................................XOO++", +"XXOO+.............. .. ... . ... ... ... ... . .. ... ... ... .. .. ... ... ... .. ....... ... . ... ... ... .. . . . . ... ....... .. ... . ... ... .... .. ... ... ... . ... . ... ... ..... ..... .......... .... ... .... ... .... ... .... ... .... ... .... ... ...... ... ........ ... ...... ... ... .... ... ...... ... ... .... ... .... ....... ...... ... .... ........ ..... ... .... ..... ... .... ..............................................................................................XOO++", +"XXOO+.............. ... ... .. ... ... . .. ... ... ... .. ... ..... ........ ... ... ... . . ... . ... ....... ...... ... ... .... ... ... .. ... .. ... ... ... ......... ... ... ... ... ... ... ... ... ... .. . .. ... .. .. ... ... .. .. ... ... .. . .. ... .. .... ... ... .. .. ... ..............................................................................................XOO++", +"XXOO+.............. .............................................................. ... ................................................. ....................................................... ..... ..... ...........................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............................................................... .................................................. ...............................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ........................................................................ .............. .. ... .......... .................................... .................... ..................................................................................... ......... .... ............ ..................... ............................ ................................................................................................................................................XOO++", +"XXOO+.............. ........................................ ................ .............. ............. ... ..... .. ........... ..... ............................. ........... .... .... .................................................................................... .. ....... ... .. ............ ...................... ............................. ...............................................................................................................................................XOO++", +"XXOO+.............. ......................................................... .............. ... ......... ... .... .. . ........... ................................... ................ .... .................................................................................... .......... ... . . ........... ...................... ............................. ...............................................................................................................................................XOO++", +"XXOO+.............. ... .. .. .. . ... .. ... .. ... . ... .. ... ... .. ............ ... ..... ........... .... ... . ... ... ......... .... ... .. ... .. . ......... .. . ......... .. ... .. .. . ... ... ... ......... ... .............. ... .......... . ......... ... .... ... ... . . .. . ... ..... ..............................................................................................................................................XOO++", +"XXOO+.............. ...... . ... . ... . .. . ... .. . .... ... . . ..... .. .... ... . ... ... ............ ... .... ........... ..... ... .. . ... . ... ........ .... ... ... .... .... .. ........... . .. ........... . ... . ... . .. ..... . ... . ... ....... ... . ........... .... .......... . ........ ... . ... ... ... ... . . . . .. . ... .... ..............................................................................................................................................XOO++", +"XXOO+.............. ... . ... . ... . ..... ... ... ..... ... . . .. .. .... . ... ............... ....... ... ........... ..... ... ... . .. .......... .... . . ... .... .... ... ........ . ... ........ . ... . . ...... . ... . ....... ... .. ............ ..... ......... .. ........ ..... ... ... ... ... . . . . ... .. ...... ..............................................................................................................................................XOO++", +"XXOO+.............. .. ... . ... . ... . ..... ... ... ..... ... . . . ... .. .... ..... ... .............. ........ ... ........... ..... ... ... . ........ .......... ... . . ... .... .... ... ....... ... . ... ....... ... .. . .. ..... ..... ... . ... . ........... ... .. ........... ...... ......... ....... ..... ... ... ... ... . . . . ... .... .... ...............................................................................................................................................XOO++", +"XXOO+.............. .. ... . .. .. ..... ... .. . .... ... . . . ... .. .. . ... . ... ... ......... ..... ... ... ........... ..... ... ... . ... . ... ......... ... . . ... .... .. . ... ....... ... . ... ....... ... .. . .. ... . ..... ... .. . ... ....... ... .. .......... ....... ..... ...... ........ ... . ... ... ... .. . . . . ... . ... ... ...............................................................................................................................................XOO++", +"XXOO+.............. ... . ..... ..... ...... .. ... .. .. ... .. ... ... ... .. ........ .. .. ........ ... .. ... .. ... ........... ... . ... .... .. ... ........ . ... ........ ... .... .. ...... ..... .. ......... ... .......... . .. ..... ......... ... ... ... . . ... . ... .. ... ................................................................................................................................................XOO++", +"XXOO+.............. ........ ..... ............................................................. ......................................................................................................................................................... ... ............................................. ...........................................................................................................................................................................................................XOO++", +"XXOO+.............. ........ ..... ........................................................................................................................................................................................................................ ..........................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............... ................ ......................... ...................................... ...................... ... ......... .................................... .................... ..................................................................................... ......... .. ....... .................... ............................ ..................................................................................................................XOO++", +"XXOO+.............. ................ ................. .......... .............. ................................ ...... ..................... ... . ... ......... ..... ............................. ........... .... .... .................................................................................... .. ....... ... . ........... ......................... ............................. .................................................................................................................XOO++", +"XXOO+.............. ................ ................. .......... .............. ................................ ...... ........... ......... ..... ............. ................................... ................ .... .................................................................................... .......... ... . ........... ......................... ............................. .................................................................................................................XOO++", +"XXOO+.............. ... ... .... .... .. ... ... .... .. ... ... ........ .. ... .. ... .. .... ... ... .. ........ ..... ............. .... ... . ... ... ......... .... ... .. ... .. . ......... .. . ......... .. ... .. .. . ... ... ... ......... ... .............. . . ........ . ......... ... .... ... ... . . .. . ... ..... ................................................................................................................XOO++", +"XXOO+.............. .. ... ..... ... ... ... . ... ... ....... .. .... ... . ... ....... ... .. . ...... . ... .. ...... ... ... ... ......... .. .......... ..... ... .. . ... . ... ........ .... ... ... .... .... .. ........... . .. ........... . ... . ... . .. ..... . ... . ... ....... ... . ........... .. .. ....... .. ....... ... . ... ... ... ... . . . . .. . ... .... ................................................................................................................XOO++", +"XXOO+.............. .. ...... ... ... ..... ... ... .... .. .... . ... ....... ... .... . ...... ...... ... ... ............. ... . ... ......... ..... ... ... . .. .......... .... . . ... .... .... ... ........ . ... ........ . ... . . ...... . ... . ....... ... .. ............ ....... ........... ....... ..... ... ... ... ... . . . . ... .. ...... ................................................................................................................XOO++", +"XXOO+.............. .. ..... ... ... ... ..... ... ... ... ... .. .... ..... ... ....... ....... ... ... . ...... ...... ... .. ............. ... . ... ......... ..... ... ... . ........ .......... ... . . ... .... .... ... ....... ... . ... ....... ... .. . .. ..... ..... ... . ... . ........... ... .. ........... ........ ........... ....... ..... ... ... ... ... . . . . ... .... .... .................................................................................................................XOO++", +"XXOO+.............. .. ... . ... ... ... ... . .. ... ... ... .. .. . ... . ... ....... ... .. . .. ... . ... .. .. ... .... . ... ......... ... . ... ......... ..... ... ... . ... . ... ......... ... . . ... .... .. . ... ....... ... . ... ....... ... .. . .. ... . ..... ... .. . ... ....... ... .. .......... ..... ... ... ... ... ....... ... . ... ... ... .. . . . . ... . ... ... .................................................................................................................XOO++", +"XXOO+.............. ... ... .. ... ... . .. ... ... ... ... ........ .. ... .. .. .... ... ...... .. ......... ... ......... ... .. ... .. ... ........... ... . ... .... .. ... ........ . ... ........ ... .... .. ...... ..... .. ......... ... .......... .. ... ... ......... ... ... ... . . ... . ... .. ... ..................................................................................................................XOO++", +"XXOO+.............. ........................................................................................................ ... ... ................................................................................................................................................... ... ............................................. .............................................................................................................................................................................XOO++", +"XXOO+.............. ......................................................................................................... ......................................................................................................................................................... ............................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................... .......... .... .......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ........................... ... ........ ... ... ......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ........................ ......... ........... . ... ... ......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ... . ... ... ........ ............. ....... ........ ... ... ... .. . ... .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ... ... ......... .......... ...... ........ ... . ... . ... . ... . .. . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ............. ... ......... ..... .......... ... . ..... ... . ... . ... .. .........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ................. ... ......... .... ............. .. ..... ..... ... . ... . ... .... ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... .. ... ... . . . ... ... ......... ... ... ..... ... ........... ... . ... . ... . ... . ... . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... .. ... .. ... ......... ... .. . ........ ... ... ... .. ... .. .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............................ ................. .....................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ............................................................................................. ...............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... .............. ................................................ ............................. ............................ ..................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... .............. .............................................................................. ............................ ..................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... .. ... .. .. .. . ... ... ... ... ... ... ... . ... ......... .... .... .. . ... .. . .. ... ..........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. .. ... . ... .. .... ... . .. . ... . ... . ... . ... . ... ... ... .. . ... ....... ... ... ... ... . . . . ... . .. .. .... ... .........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..... ... .. .... .... ... . ..... ... . ..... .. .... ..... ... ... . ... ....... ... ... . . . . . ... .. ..... ...........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..... ... .... ... .... ... . ..... ... . ..... ........ ..... .... ... ... . ... ....... ....... ... ..... . . . ..... ... .. ....... ..........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..... ... . ... .. .. . .. ..... ... . ... . ... . ... . ... ... ... ... .. ....... ... ... ... ... . . . . ... . ... .. .. . ... ... ..... ..... .........................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ...... ... .... .. ..... ...... ... ... ... ... ... .. ... ..... ........ ... ... .. ... .. .. ... ... ... ... ... ... ........................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .......................... ..................................................... ... ......................................................... ..... ..... .........................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .......................... ...................................................... ................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ....... ... ........................................................................................... ...... .............................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ......... ... .................... ................. ........... ................. ............ ......... ....... ................ ............................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... .......... . ..................... ................. ........... ................. ...................... ....... ................ ............................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... .... ... . ......... .. ... . .. .. ... . ........ ... ........ .. ... .. ... . .. .. .... .... ........ ... .. ... .............................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ... ... ......... ... . ... .. .... ... . ... .. ........... .... ... ........ .... ... ... ... .. . . ..... ... ... ........ .... ... .. . ..............................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... .. . ........ ... . ... .. .... ... . ... .. ........... .... ... ........ .... . . ... ... ... . ...... ... ........ .... ... ...............................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ...... . ........ ... . ... .. .... ... . ... .. ........... .... ... ........ .... . . ... ... ... . . ..... ... ............ .... ....... ...............................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ... . ... ....... ... . .. .. .. . .. .. .. .. ........ .. . ... ........ .. . . . ... ... ... . .. .... ... ... ... .... .. . ... .. . .... ..... ..... .............................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... .... .. ... ........ ... . ... .. ...... . ... .......... ... .......... ... . ... .. ... . ... .. ... ... .... ... .. ... .. ... ... ............................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............................................ ..................................................................................... ....................... ..... ..... .............................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............................................ .......................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... .......... ................................... ...... ......................................... ...............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... .......... ................................... ................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... . .. ... .. . .. .. . ... .. ... ... . ... ........ . .. ... .. ... .... ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... .. .. .... ... . .. . ... . .. . ... .. ...... ... .. . ... ....... . . . ... . ... ... ... ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ... .. .... . ..... ... . ..... .. ...... ... ... . ... ....... . . . ... .. ..... ... ...........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ... .. .... ..... ..... ... . ..... ...... ...... ... ... . ... ....... . . . ... .... .... ... ...........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... ... .. .. . ... . ..... .. ..... ... .. .. ... ... ... .. ....... . . . .. . ... ... ... ... ... ..... ..... .......................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... .. ... ... ... .. ..... ..... ...... .... ... .. ... ..... ....... ... .. . .. ... ... ... ... ... ......................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ................................ ................................... ... ....................................... ..... ..... .......................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ................................ .................................... ............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ........................................ .......... ... .......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ............................ . ........ ... . ... ......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ........................ ......... ... ....... ... . ... ......................................... .............................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ... . ... ... ........ ... ........... ..... ........ ... ... ... .. . ... .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ... ... ......... ... .......... ..... ........ ... . ... . ... . ... . .. . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ............. ... ......... ..... .......... ... . ..... ... . ... . ... .. .........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... ...... ... . . . ................. ... ........ ..... ............. .. ..... ..... ... . ... . ... .... ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... .. ... ... . . . ... ... .......... . .... ... ..... ........... ... . ... . ... . ... . ... . ... . ... .......................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .... ... .. ... .. ... .......... .... .. . ........ ... ... ... .. ... .. .. ........................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ............................ ................. .....................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... .. .. ... ............................................................................................ ...... ............................... .......................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ... .... .. ... ...................... ................. ........... ................. ............ ......... ....... ....................... ....... ... ...................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . ... .... .. ... ...................... ................. ........... ................. ...................... ....... ............................... .......................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . ... .... .. ... .......... .. ... . .. .. ... . ........ ... ........ .. ... .. ... . .. .. .... .... ........ . ... .... .. ...................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . ... .... .. ... ......... ... . ... .. .... ... . ... .. ........... .... ... ........ .... ... ... ... .. . . ..... ... ... ....... . . ... ... ... ... ...................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ... .... .. ... ......... ... . ... .. .... ... . ... .. ........... .... ... ........ .... . . ... ... ... . ...... ... ....... . . ... ... ... ... ...................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ... .... .. ... ......... ... . ... .. .... ... . ... .. ........... .... ... ........ .... . . ... ... ... . . ..... ... ........... . . ... ... ... ... ...................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... ... .... .. ... ......... ... . .. .. .. . .. .. .. .. ........ .. . ... ........ .. . . . ... ... ... . .. .... ... ... ... ... . . ... ... ... ... ..... ..... ..... .................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ... .. .. ... ......... ... . ... .. ...... . ... .......... ... .......... ... . ... .. ... . ... .. ... ... .. ... .. ... .. ... ... ... ................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .................................................. ..................................................................................... ............................. ..... ..... .................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .................................................. .................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . ..... . ..... ..... .................. ............ . .... . ......... ................ ......................................................... ...... .....................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. .. . . . . . . .................. ........... .... .. .......... .... ......... ........ ....................... ............ ......... ....... .....................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ... . .. . . . . . . . .................. ........... . .... ... .......... .............. . .......... ....................... ...................... ....... .....................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . . ... . . . ... . .. . ...... . .. ... . ................. ... ... ... ... ... . . ......... ... .. ... ....... .. ... .. ... . .. .. .... .... ..............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . . . ... . . . .. . . ...... . . . ... . ... ............... .... .. .. .. .... .. .. . ......... .... ... .. . ......... .... ... ... ... .. . . ..... ... ... .............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . . . . . . . ...... . . . ... . ... .............. ..... .. .. .... .. .. . ........ .... ... .......... .... . . ... ... ... . ...... ... .............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . ..... . . . . . ...... . . . ... . ... .............. ..... .. ...... .... .. ...... . ........ .... ....... .......... .... . . ... ... ... . . ..... ... .................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. .. . . . . . . . . . . . ...... . . . .. . ... ............. ...... .. .. .. .... .. .. ......... .. . ... .. . ......... .. . . . ... ... ... . .. .... ... ... .............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....... . ... ... . ... ... . ...... ... .. . . .............. ..... .. .. .. .. ... ........... ... .. ... ......... ... . ... .. ... . ... .. ... ..............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. . . ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. . ......................................... ....... ... ............. ... ........................................... ......... ...... .... ... .. ........... ... ......................................................... .......... .... ..............................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... ....... ................. ................. ......... ... ............. ... ..................... ......................... ........ ...... ... ... ..... ... ......... ... ... ................................. ..................... ... ........ ..... .............................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... ........................................... .......... . .............. ... .............................................. ........ . ..... .. . ... ..... ... ......... ... ........................................................... ........... . ..... .............................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... . ... .... ......... .... .......... .... ... . .............. ... .. .. . ... ... .... .. . .......... ........... .... . .... ... . .. ... ........ .... ........... ... .. .. . ... ... .... .. . ........ ............. ...... ............................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... .. ... ... ... ......... ... ... ......... ... ... ... ................ . .. ... . .. . ... ... ... ... . .. ........ .......... .... . .... ... .. .. ........ .... ........... ... . ... . .. . ... ... ... ... . .. ....... .......... ...... ............................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... ... ... .... ........... .... ........... ... .. . ............... . .. . ...... ..... ... ... . ... ........... ......... ... .. .... ....... ..... ........ .... ........... ... . . ...... ..... ... ... . ... ....... ... ......... ...... ............................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... ... ... ...... .......... ...... .......... ... ...... . ............... . .. ..... ........ .... ... ... . ... ........... ......... ... ... ....... ..... ......... ... ............ . .. ..... ........ .... ... ... . ... ....... ... ......... ..... .............................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... ... ... ... ... ......... ... ... ......... ... ... . ... ... .......... ... ... . ..... ... ... ... ... . ... ....... ... ... ..... ...... .... ... ... . ... ......... ... ... ........ . .. ... . ..... ... ... ... ... . ... ....... ... ... ..... ..... .............................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... ... .. ... ......... ... .......... .... .. ... ... ........... .... .. ...... ... ... .. ... ........ ... .. .... .. .. ... ........... ... .......... .... .. ...... ... ... .. ... ........ ... .. .. ..............................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ..................................................................... .................................................................. ................................................................................................................. .........................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ..... .......................... ...... ...........................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... .... ............ ......... ....... ................ ..........................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... .... ...................... ....... ................ ..........................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ... .... .. ... .. ... . .. .. .... .... ........ ... .. ... ...........................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ..... .... ... ... ... .. . . ..... ... ... ........ .... ... .. . ............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ... ..... .... . . ... ... ... . ...... ... ........ .... ... .............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... .... .... . . ... ... ... . . ..... ... ............ .... ....... .............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... .... .. . . . ... ... ... . .. .... ... ... ... .... .. . ... .. . ............................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ..... .... ... . ... .. ... . ... .. ... ... .... ... .. ... ...........................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .................................................... ...............................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. ........ ............ ............. ....... ........ .. ..... ........................... ....... ................. ............................................................................................................. .................................................................................... ................... .................. ................... ........... .......................................................................................XOO++", +"XXOO+. . . . . . .. ... .. ....... ............. ............ ............ ....... ... . ...... .......................... ....... ................. ........................ ...... .................................. ..... ................................... .. ............................................. ..................................... ........ .......... ................... ................... ........... .......................................................................................XOO++", +"XXOO+.. . . . . . . ... .. ....... ............. ........... ............ ........ ..... ....... ......................... ....... ................. ........................ ......................................... ..... ................................... ...................................................................................... ........ .......... ................... ................... ........... .......................................................................................XOO++", +"XXOO+. . . . . . .. ... .. .. .. ... .... .......... .... ... ... ......... ..... . ..... ......... .. . ... ....... . .. ... . .. . ... .. . ... .. ... .... .. . ........ ... .. .. ... .. . .. . ... ......... ..... .. . ......... .. . ... .. . ... .... ... .. . ............... . ... . ... .. . ................ .... ... ... .. ... .......................................................................................XOO++", +"XXOO+.. . . . . . . ... ...... . ... . ... ... ......... ..... ... .. ........ .. .. ..... ........... . .. . ... ....... .. . ... . ... . .. . ... . .. ..... .. ...... ... ... . .. ....... ... ..... .. ..... .... ... . .. . .. . ... ....... .. ... . .. ........... . . . . ... . .. ... ... ... ..... . .. ............. ... . ... .. .... ... . .. ............... ... ... ..... . ... . ... . ... .......................................................................................XOO++", +"XXOO+. . . . . . .. ... .. .. . ... . ... .......... .... ... ..... ....... ... . ... .... ......... . ... . ... ....... ... . ... . ... . ... . . ... .. .. ...... ... ... . ... ....... ... .. .. ..... .... . ..... ... .. .......... .... ... . ............ . . . . . ....... ... ...... . ... ............. ... . ... .. .... ..... ... ............... ... ... .. . ... . . ... .......................................................................................XOO++", +"XXOO+.. . . . . . . ... .. . ... . ... . ....... ........... .... . ...... ....... ... . ... ... ......... ... . ... . ... ....... ... . .. . ... . ... . ..... ... . ... .. ...... ... ... . ... ....... ... . ... .. ..... .... ..... ..... ... .... ......... .... ... . ........... ... . . . . ..... ....... ... ..... ... . ... ............. ... . ... .. .... ..... ... ............... ... ... . ... . ... . ..... ... .......................................................................................XOO++", +"XXOO+. . . . . . .. ... .. . ... . ... . ... ... ............ ... . .. ... ... ... ... . ... .. .......... ... . ... . ... ....... ... .. . . .. ... . ... . ... . ... .. .. ... ... ... . ... ....... .. ... .. .. .. .. . ... . ..... ... . ... ........ .... ... . ........... ... . . . . ... . ....... ... ... . ... . ... ... ........ ... . .. .. .. . ... . ... ... .......... ... ... . ... . ... . ... . ... ... ...................................................................................XOO++", +"XXOO+.. . . . . . . .. ... . ... ... ............ ... .... ... ... .. ... . ............ . ... .. ....... ... ..... . ..... ... .. .. ... .. ... ... ... .. ... ....... ...... ... .... ... .. ..... ... .. ......... ..... .. ............ . ... .. .. ...... ... ... . ... ... .......... .. . ... ... .. ... ... .......... ... ... .. .. ... .. ..................................................................................XOO++", +"XXOO+. . . . . . .. .......................................................... ......................................................... ... . ........................................................... .............................................................................................................................. ......................................... ................................................ ...................................................................................XOO++", +"XXOO+.. . . . . . . ..................................................................................................................... .. ........................................................... .............................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ..... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ....................... .. .......... ............................... ..... ......... ............................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ....... . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... .. .................... ... ..... ..... ............................... ..... ........ .. .............. ............................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ...... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ... ................... .... ........... ............................... ..... ........ ................. ............................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. ... .. ... .... .... .... ..... ... ... . ... .. . ... .. .. ... ..... ........ ... .. ... .............................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .... .... ... .. . .... ..... ..... ..... ... ... . ... . ... . .. . ... . ... . ... . .. ... ........ .... ... .. . ..............................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ..... .... ... .... ...... ..... ..... ... ... . ... . ... . ... . ... . ... . .. ..... .......... .... ... ...............................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... .... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ..... .... ....... .... ...... ..... ..... ... .. . ... . ... . ... . ... . ... . ...... ....... ......... .... ....... ...............................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ...... .. . ... .. . .. ....... ..... ..... .... . . .. ... . ... . ... . ... . ... .. .... ... ... .... .. . ... .. . ..............................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ..... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ....... ... .. ... . ...... ... ... ...... . ...... .. ... .. .. .. ... ..... ... .... ... .. ... .............................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ............................................................................................................................................ ... . ....................................................................... ... . ................................................. .................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ............................................................................................................................................. .. ........................................................................ .. ...................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ..... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ....................... ..... ................. ......... ................................. ........................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ....... . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... .. .................... ..... ................. ........ .. .............. .................. .......................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ...... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ... ................... ...... ................. ........ ................. .................. .......................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. ... .. ... .... ... . ... . . ... .. ... ..... ........ ... .. ... .... ......................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .... .... ... .. . .... ... ... . ... . .. . ... . ... . .. ... ........ .... ... .. . ..... ......................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ..... .... ... .... .... ... . ... . ... . ... . .. ..... .......... .... ... ...... ......................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... .... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ..... .... ....... .... .... ... . .. . ... . ... . ...... ....... ......... .... ....... ..... .......................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ...... .. . ... .. . .. ..... ... .. . . ... . ... . ... .. .... ... ... .... .. . ... .. . .... .......................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ..... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ....... ... .. ... . ...... ..... . ... .. .. ... ..... ... .... ... .. ... .. ........................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ............................................................................................................................................ ... . ........................................................... ... ................................. ...............................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ............................................................................................................................................. .. ............................................................ ..................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ..... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ....................... ... .................. ......... ..........................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ....... . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... .. .................... .. .. ........ ........ ........ .. .............. ..........................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ...... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ... ................... ... ........... ........ ........ ................. ..........................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. ... .. ... .... ... ..... .. ... .. ... ..... ........ ... .. ... ...........................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .... .... ... .. . .... ... .. ... .. .... ... . ... . .. ... ........ .... ... .. . ............................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ..... .... ... .... ..... .... .. .... ... . .. ..... .......... .... ... .............................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... .... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ..... .... ....... .... ..... .... ...... .... ... . ...... ....... ......... .... ....... .............................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ...... .. . ... .. . .. ...... .... ... .. .. . ... . ... .. .... ... ... .... .. . ... .. . ............................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ..... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ....... ... .. ... . ...... ..... .... ... .. ... ..... ... .... ... .. ... ...........................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ............................................................................................................................................ ... . ................................................................................................. ...............................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ............................................................................................................................................. .. .................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ..... ...... . ........................... ... .................. ..... ....................... ....................... .. .......... ............................... ..... ....................... .. .......... ..................................... ......... ................................. ..... ..... ........... .... ............. .. ......... ..............................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ....... . ........................... .. .. ................. ..... ....................... ....................... ... ..... ..... ............................... ..... .. .................... ... ..... ..... ..................................... ........ .. .............. .................. ..... ..... .......... ..... ............. .... .......... .............................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ...... .. .......................... ... .................... .... ....................... ....................... .... ........... ............................... .... ... ................... .... ........... ..................................... ........ ................. .................. ..... ..... .......... .... . ............. .... .......... .............................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ....... .. . ... .. . ... ..... ... .... . ... ... .... .. ... .. .. . ..... ... .. . ... ..... .... .... ..... ... ... . ... .. . ... .... .. ... .. ... .... .... .... ..... ... ... ....... ... ......... .. ... ..... ........ ... .. ... .... ..... ..... ......... ...... ... ... .. .... ........... ............................................................................................................................XOO++", +"XXOO+.. . . . . . . ... ...... ... .. . ... . . . . ... ... ... .. .. . ... . ... ... ... ... . ... . .. ... ... ... . .. . ... ... ..... ..... ..... ... ... . ... . ... . .. . ... ... .... .... ... .. . .... ..... ..... ..... ... ... . . ... . ... . . ... . ... . .. ... ........ .... ... .. . ..... ..... ..... ......... ...... .... . .. ... .... ........... ............................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ..... .... ... . ... . . . . .. ..... .... ..... . ... .. .... ... .. ... ...... ..... ... ..... ...... ...... ..... ..... ... ... . ... . ... . ... . ... .. ..... .... ... .... ...... ..... ..... ... ... ....... ... .. ......... ... . .. ..... .......... .... ... ...... ..... ..... ......... ...... ..... ... ... .... ........... ............................................................................................................................XOO++", +"XXOO+.. . . . . . . .... .... .... ... . ... . . . . ...... ..... .... ..... ..... ... .. .... ... .... .. ...... ....... .. ..... ...... ...... ..... ..... ... .. . ... . ... . ... . ... .. ..... .... ....... .... ...... ..... ..... ... .. ....... ... .... ........ ... . ...... ....... ......... .... ....... ..... ..... ..... .......... ...... ..... ... ... .... .......... .............................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... ..... ... . ... . . . . ... . ...... .... ..... ... . ... . ..... .. . ... . ..... ..... ... . ..... ... . ....... ..... ..... .... . . .. ... . ... . ... . ...... .. . ... .. . .. ....... ..... ..... .... . ....... .. ... ....... ... . ... .. .... ... ... .... .. . ... .. . .... ..... ..... .......... ...... .... . .. ... .... .......... .............................................................................................................................XOO++", +"XXOO+.. . . . . . . ..... .. ..... ... .. .. ... .. .. ...... .... ...... ... . ...... . .. .. ..... ...... .. ...... .. ...... ... ... ...... . ...... .. ... .. . ....... ... .. ... . ...... ... ... ...... ....... ...... ......... .. ... ..... ... .... ... .. ... .. ..... ..... ........... .. . ... .. .. ......... ..............................................................................................................................XOO++", +"XXOO+. . . . . . .. ............................................................................................................................................ ... . ....................................................................... ... ....... ........................................... .................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ............................................................................................................................................. .. ........................................................................ ........ .............................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ................................................................................................................................ ...... ................... ...................... .... .............................................. .... ... .. ... ........ .............................. ....................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. ... ........ ................. ........................ .... ..... ......................................... ............ ......... ....... ................... ......... ........... .... ............................................. ... .. ....... . ... . ... ....... ............ .................. ...................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. ... ........ ................. ............................. ..... ......................................... ...................... ....... ................... ..................... ... . ............................................. ... . . ...... .. ... . ........... ............ .................. ...................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. ... . ... . .. .. ... . ........ ... . . ... ... .. ... .. . ......... .. . ........ .. ... .. ... . .. .. .... .... ......... . ... .. .......... ...... ......... ... ... ... .................. ... ..... ... ... . ........... .. ... . ... ... ..... ..................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. ... . ... .. .... ... . ... .. .......... ... . .. ... .... ..... .... ... . .. ....... ... . .. ........ .... ... ... ... .. . . ..... ... ... ....... ... . ... ... .......... ...... ......... ... ..... . ... . ... ................ .... .... ... . ........ ... . ... .. .... ... . ... .... ..................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. ... . ... .. .... ... . ... .. .......... . . . ....... .... ..... .... . ... ....... ... . ... ........ .... . . ... ... ... . ...... ... ....... ... . ... ... .......... ...... ......... ... .. . ... . ............... ..... ....... ..... . ... ....... ... . ... .. .... .. ...... ..................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. ... . ... .. .... ... . ... .. .......... . . . ....... .... ..... .... ..... ... ....... ... . ... ........ .... . . ... ... ... . . ..... ... ........... ... .. . .... ........... ..... ......... ... . ... . ... . .................. ...... ....... ..... . ... ....... ... . .. .. .... ........ .... ...................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. ... . .. .. .. . .. .. .. .. ....... . . . ....... .... .. .. .. . ... . ... ....... ... . ... ........ .. . . . ... ... ... . .. .... ... ... ... ... ... .. . .... ........... ..... ......... .. ... .. . ... ... ........ ....... ... ... . ... . ... ....... ... .. . .. .. . ... . ... ... ..... .............................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ... ... . ... .. ...... . ... ......... . .. ...... .... .... ... .. ... ........ .. ... ......... ... . ... .. ... . ... .. ... ... ... ... .... ........... .. ....... ...... ..... .. .... ......... . .. ... ... ........ ...... ... ... ... ... ..... ............................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .................... ..................................................................................................................................... ............................................. ........... ... ........ .................................................... ... ........................... .............................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .................... ................................................................................................................................................................................... ............ ............................................................... ..........................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. ....................................................................................................................................................... ...... ................ ...........................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ......................................... .......... ........................ .... ..... ......................................... ............ ......... ....... ................. ...........................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... .................................................... ............................. ..... ......................................... ...................... ....... ................. ...........................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... . ... .. . ... ... .. . ... ... .. ........ ... . . ... ... .. ... .. . ......... .. . ........ .. ... .. ... . .. .. .... .... .......... .... ... ..............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... .. ..... . .. . ... . ... . .. ... ... ... .. .......... ... . .. ... .... ..... .... ... . .. ....... ... . .. ........ .... ... ... ... .. . . ..... ... ... ......... ... ... . ... .............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... ...... . ... .. ... ..... ....... ... ... .. .......... . . . ....... .... ..... .... . ... ....... ... . ... ........ .... . . ... ... ... . ...... ... ......... ... ... . ... .............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... ..... ... . ... .... .. ..... ....... ... ... .. .......... . . . ....... .... ..... .... ..... ... ....... ... . ... ........ .... . . ... ... ... . . ..... ... ............. ... ... . ... .............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .... ... ..... ... . ... . ... . ... . ....... ... ... .. ....... . . . ....... .... .. .. .. . ... . ... ....... ... . ... ........ .. . . . ... ... ... . .. .... ... ... ... ..... ... ... .. ... .........................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .... ... ...... . ... .. ... .. ...... .. ....... ......... . .. ...... .... .... ... .. ... ........ .. ... ......... ... . ... .. ... . ... .. ... ... ... ... ...... .. ........................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .................................................. ............................................................................................................................... ............... ... ... .........................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .................................................. ................................................................................................................................................ ..............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. . . ..... . . ... .................. ............ . .... . ......... ................ ................... ........................................... ...... ...............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. .. . . .. . . . . .................. ........... .... .. .......... .... ......... ................. ......... .......... ............ ......... ....... ...............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ... . .. . . . . . . . . .................. ........... . .... ... .......... .............. . ................... .................... ...................... ....... ...............................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. . . . ... . . ... . . . ...... . .. ... . ................. ... ... ... ... ... . . ......... ... .. . ... .. ......... .. ... .. ... . .. .. .... .... ........................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. . . . . ... . . . . .... ...... . . . ... . ... ............... .... .. .. .. .... .. .. . ......... . .. ... . ... ... .......... .... ... ... ... .. . . ..... ... ... .......................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. . . . . . . . . . ...... . . . ... . ... .............. ..... .. .. .... .. .. . ......... ... ... . ... ... .......... .... . . ... ... ... . ...... ... .......................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. . ..... . . . . . . ...... . . . ... . ... .............. ..... .. ...... .... .. ...... . ......... ... ... .. . .... .......... .... . . ... ... ... . . ..... ... ...........................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. . . . . . . . . . . . ...... . . . .. . ... ............. ...... .. .. .. .... .. .. ......... . .. ... .. . .... .......... .. . . . ... ... ... . .. .... ... ... .......................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....... . ... ... ..... ... . ... ...... ... .. . . .............. ..... .. .. .. .. ... ......... ... .. ... .... .......... ... . ... .. ... . ... .. ... ........................................................................................................................................................................................................................................................................................XOO++", +"+++++.. . . . . . . .. . . ..................................................................................................................................................................................................................................................................................................................................................................................................................................................+++++", +"XXXX+. . . . . . .. .. ..................................................................................................................................................................................................................................................................................................................................................................................................................................................XXXX+", +"XXOO+.. . . . . . . .. .................................................................................... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. .................................................................................... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. . . ..... . . . .................. ............ . .... . ......... ................ ......... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. .. . . .. .. . . .................. ........... .... .. .......... .... ......... ....... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ... . .. . . . . . . . . . .................. ........... . .... ... .......... .............. . ......... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. . . . ... . . ... . . . ...... . .. ... . ................. ... ... ... ... ... . . ......... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. . . . . ... . . . . . ...... . . . ... . ... ............... .... .. .. .. .... .. .. . ........ ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. . . . . . . . . ...... . . . ... . ... .............. ..... .. .. .... .. .. . ....... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. . ..... . . . . . ...... . . . ... . ... .............. ..... .. ...... .... .. ...... . ....... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. . . . . . . . . . . ...... . . . .. . ... ............. ...... .. .. .. .... .. .. ........ ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . ....... . ... ... ..... ... ..... . ...... ... .. . . .............. ..... .. .. .. .. ... ......... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. .. . . .................................................................................... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.. . . . . . . .. .................................................................................... ........................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+. . . . . . .. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+.............. ....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................XOO++", +"XXOO+XXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXOO++", +"XXOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOO++", +"XXOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO+XOOOOOOOOOOOOOOOOOO++", +"X++++++++++++++++++++X++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++X++++++++++++++++++++", +"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" +}; diff --git a/Documentation/relative-octaves.pod b/Documentation/relative-octaves.pod deleted file mode 100644 index b6b31507af..0000000000 --- a/Documentation/relative-octaves.pod +++ /dev/null @@ -1,88 +0,0 @@ -=head1 NAME - -Octaves -- how to do pitches - -=head1 DESCRIPTION - -The LilyPond input language, Mudela (help, silly name), should be easy -to read and write. In my experience Mudela is already quite convenient -for entering music. Every time i've entered a substantial piece of music, -however, i found that i made quite a few mistakes. The MIDI output helps -a lot with locating and correcting the errors. There's one type of error -that seems to be frequent, stubborn and hard to catch, and that's the -octavation error. The relative octave feature is an attempt to make -Mudela a bit easier to write. In addition, this featuer makes it harder -to make octavation mistakes, yet if you made one, its a lot simpler to find -and correct. - -Here's how it works. - -=over 5 - -=item * -forget the old "\octave c';" command - -=item * -forget the old octave boundaries with octaves c .. c' - -=back - -You start the relative octave mode (for now) with the command - - \octave relative; - -From then on, the pitch of a note will be the closest to the last one, -assuming that large intervals are a lot more rare than small ones. -Thus, you can enter a scale without using octavation quotes: - - c d e f g a b c - -the last c being an octave higher than the first. If you have to -enter an interval that is greater than a quart, you must specify -whether the pitch goes up, using post-quotes: - - c c' % octave up - c g' % quart up - -or down, using pre-quotes: - - c 'c % octave down - c 'f % quart down - -Although it is not necesary, and thus redundant, information to specify -the direction of smaller intervals, you are allowed to do so: - - c d % second up - c d' % second up - - c a % third down - c 'a % third down - - -=head1 CONVERTING - -To convert a piece of music from the old absolute-octave notation to -relative octaves, lilypond provides the B<-f, --find-quarters> feature -to locate all big intervals in your music (sorry, fully automated convert -is too complex). - -You'll do something like this: - - lilypond -f los-toros-oboe 2>&1 | tee intervals - ... - los-toros-oboe.ly: 59: warning: Interval greater than quart, relative: d': - [)g8 r d - '] r | - los-toros-oboe.ly: 100: warning: Interval bigger than quart, relative: d': - [d8 d - '] [es'8.-> c'16] | - ... - -Then you load a copy of the original mudela file in your favourite editor, -and let it parse the 'error file' F<intervals>. First you remove all -octavation quotes. Then, jumping from warning to warning, you enter quotes -as suggested by LilyPond. - -=head1 EXAMPLE - -See F<mutopia/ltor.ly>. diff --git a/Documentation/relative-octaves.yo b/Documentation/relative-octaves.yo new file mode 100644 index 0000000000..a1c21cfadb --- /dev/null +++ b/Documentation/relative-octaves.yo @@ -0,0 +1,89 @@ +nsect(NAME) + +Octaves -- how to do pitches + +nsect(DESCRIPTION) + +The LilyPond input language, Mudela (help, silly name), should be easy +to read and write. In my experience Mudela is already quite convenient +for entering music. Every time I've entered a substantial piece of music, +however, I found that I made quite a few mistakes. The MIDI output helps +a lot with locating and correcting the errors. There's one type of error +that seems to be frequent, stubborn and hard to catch, and that's the +octavation error. The relative octave feature is an attempt to make +Mudela a bit easier to write. In addition, this feature makes it harder +to make octavation mistakes, yet if you made one, its a lot simpler to find +and correct. + +Here's how it works. + +itemize( +it()forget the old "\octave c';" command +it()forget the old octave boundaries with octaves c .. c' +) + +You can enter a piece of music in relative mode, by typing + +verb( + \melodic \relative c { ... } +) + +From then on, the pitch of a note will be the closest to the last one, +assuming that large intervals are a lot more rare than small ones. +Thus, you can enter a scale without using octavation quotes: + +verb( + c d e f g a b c +) + +the last c being an octave higher than the first. If you have to +enter an interval that is greater than a fourth, you must specify +whether the pitch goes up, using post-quotes: + +verb( + c c' % octave up + c g' % fourth up +) + +or down, using pre-quotes: + +verb( + c c, % octave down + c f, % fourth down +) + +nsect(CONVERTING) + +To convert a piece of music from the old absolute-octave notation to +relative octaves, lilypond provides the bf(-Q, --find-fourths) feature +to locate all big intervals in your music (sorry, fully automated convert +is too complex). + +First, edit the .ly file, add "\relative c" to all melodic chunks: + +verb( + foo = \melodic \relative c { ... } +) + +and remove all "\octave " commands. See the example file +file(input/test/find-fourths.ly). + +Use lily to find the fourths + +verb( + lilypond -Q find-fourths.ly 2>&1 | tee fourths + ... + find-fourths.ly:3:18: warning: Interval greater than fourth, relative: g': + c d c f c g + c b, c g, c f, c c'' c + + find-fourths.ly:3:20: warning: Interval greater than fourth, relative: c,: + c d c f c g c + b, c g, c f, c c'' c +) + +Then, load a copy of the original mudela file in your favourite editor, +and let it parse the 'error file' file(intervals). First you remove all +octavation quotes. Then, jumping from warning to warning, you enter quotes +as suggested by LilyPond. + diff --git a/Documentation/scherm.in b/Documentation/scherm.in new file mode 100644 index 0000000000..005b6451c3 --- /dev/null +++ b/Documentation/scherm.in @@ -0,0 +1,16 @@ +18:46:03 mub ~/lelie$ lilypond twinkle +GNU LilyPond 0.1.78/FlowerLib 1.1.44. +Ontleden...[/home/fred/usr/src/lilypond/init/init.ly[/home/fred/usr/src/lilypond/init/declarations.ly[/home/fred/usr/src/lilypond/init/dynamic.ly][/home/fred/usr/src/lilypond/init/nederlands.ly][/home/fred/usr/src/lilypond/init/script.ly][/home/fred/usr/src/lilypond/init/paper20.ly[/home/fred/usr/src/lilypond/init/table20.ly][/home/fred/usr/src/lilypond/init/table13.ly][/home/fred/usr/src/lilypond/init/table16.ly][/home/fred/usr/src/lilypond/init/params.ly[/home/fred/usr/src/lilypond/init/a4.ly][/home/fred/usr/src/lilypond/init/paper.ly][/home/fred/usr/src/lilypond/init/engraver.ly]]][/home/fred/usr/src/lilypond/init/midi.ly[/home/fred/usr/src/lilypond/init/performer.ly]][/home/fred/usr/src/lilypond/init/property.ly]][/home/fred/usr/src/lilypond/input/twinkle.ly]] +Vertolken van muziek...[8][16][24][25] +duur: 1.34 seconden +Voorbewerken van elementen... [/home/fred/usr/src/lilypond/mf/out/feta20.afm] +Berekenen van kolomposities... [3][6][9][12][15][18][21][24][25] +geschat: 231 regels (van gemiddeld 21.4 kolommen) +exact berekend: 66 regels (van gemiddeld 25.5 kolommen) +duur: 6.11 seconden +Nabewerken van elementen... +TeX uitvoer naar twinkle.tex... + +Vertolken van muziek... +duur: 0.22 seconden +MIDI uitvoer naar twinkle.midi... diff --git a/Documentation/schermo.in b/Documentation/schermo.in new file mode 100644 index 0000000000..b4fb407537 --- /dev/null +++ b/Documentation/schermo.in @@ -0,0 +1,16 @@ +18:37:15 mub ~/lelie$ lilypond twinkle +GNU LilyPond 0.1.78/FlowerLib 1.1.44. +Analizzare...[/home/fred/usr/src/lilypond/init/init.ly[/home/fred/usr/src/lilypond/init/declarations.ly[/home/fred/usr/src/lilypond/init/dynamic.ly][/home/fred/usr/src/lilypond/init/nederlands.ly][/home/fred/usr/src/lilypond/init/script.ly][/home/fred/usr/src/lilypond/init/paper20.ly[/home/fred/usr/src/lilypond/init/table20.ly][/home/fred/usr/src/lilypond/init/table13.ly][/home/fred/usr/src/lilypond/init/table16.ly][/home/fred/usr/src/lilypond/init/params.ly[/home/fred/usr/src/lilypond/init/a4.ly][/home/fred/usr/src/lilypond/init/paper.ly][/home/fred/usr/src/lilypond/init/engraver.ly]]][/home/fred/usr/src/lilypond/init/midi.ly[/home/fred/usr/src/lilypond/init/performer.ly]][/home/fred/usr/src/lilypond/init/property.ly]][/home/fred/usr/src/lilypond/input/twinkle.ly]] +Interpretare musica...[8][16][24][25] +durata: 1.36 secondi +Preprocessare elementi... [/home/fred/usr/src/lilypond/mf/out/feta20.afm] +Calcolare posizioni di colonne... [3][6][9][12][15][18][21][24][25] +approssimato: 231 linee (con una media di 21 colonne): +calcolato esattamente: 66 linee (con una media di 25 colonne) +durata: 6.14 secondi +Postprocessare elementi... +Prodotto di TeX verso twinkle.tex... + +Interpretare musica... +durata: 0.21 secondi +Prodotto di MIDI verso twinkle.midi... diff --git a/Documentation/tex/Makefile b/Documentation/tex/Makefile index e9f4cb59f2..8cde48019c 100644 --- a/Documentation/tex/Makefile +++ b/Documentation/tex/Makefile @@ -1,21 +1,51 @@ +# Documentation/tex/Makefile depth=../.. -include ./$(depth)/make/Include.make -include ./$(depth)/make/Docrules.make -# -DOCFILES = $(wildcard *.doc) -OUTDOCFILES = $(addprefix $(outdir)/, $(DOCFILES)) -BIBFILES= $(wildcard *.bib) -EXTRA_DISTFILES= $(BIBFILES) $(DOCFILES) +include $(depth)/make/Stepmake.make +include $(stepdir)/Documentation.vars.make +include $(depth)/make/Lilypond.make +include $(stepdir)/Documentation_rules.make -dvi: $(DVIFILES) +DATA_FILES = $(wildcard *.data) +datafiles = $(addprefix $(outdir)/,$(DATA_FILES:.data=.html)) +DOC_FILES = $(wildcard *.doc) +DVI_FILES = $(addprefix $(outdir)/,$(DOC_FILES:.doc=.dvi) $(YO_FILES:.yo=.dvi)) +OUTDOC_FILES = $(addprefix $(outdir)/, $(DOC_FILES)) +EL_FILES = $(wildcard *.el) +BIB_FILES= $(wildcard *.bib) +EXTRA_DIST_FILES= $(BIB_FILES) $(DOC_FILES) $(DATA_FILES) $(EL_FILES) +HTML_FILES = $(addprefix $(outdir)/, $(YO_FILES:.yo=.html)) +PS_FILES = $(DVI_FILES:.dvi=.ps) -local-WWW: $(OUTDOCFILES:.doc=.ps.gz) $(addprefix $(outdir)/, $(BIBFILES:.bib=.html)) - ls-latex --title 'LaTeX documents about LilyPond' $(BIBFILES) $(DOCFILES) > $(outdir)/index.html + +dvi: $(DVI_FILES) + +ps: $(PS_FILES) + +# urg +default: + +GENHTMLS = engraving colorado vocabulary computer-notation +OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html)) + +$(outdir)/mudela.dvi: $(outdir)/vocabulary.tex $(outdir)/engraving.bib +$(outdir)/mudela.html: $(OUTGENHTMLS) + +local-WWW: $(HTML_FILES) $(OUTDOC_FILES:.doc=.ps.gz) $(OUTYO_FILES:.yo=.latex) $(OUTYO_FILES:.yo=.ps.gz) $(addprefix $(outdir)/, $(BIB_FILES:.bib=.html)) $(datafiles) + $(PYTHON) $(step-bindir)/ls-latex.py --package=$(topdir) --title 'LaTeX documents about LilyPond' \ + $(YO_FILES) $(OUTYO_FILES:.yo=.latex) $(BIB_FILES) $(DOC_FILES) \ + | sed "s!$(outdir)/!!g" > $(outdir)/index.html + $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) $(outdir)/index.html $(outdir)/%.bib: %.bib ln -f $< $@ $(outdir)/%.html: %.bib bib2html $< $@ + +# Yeah right: +# make -k out/mudela.dvi => cp -f out/vocabulary.tex out/mudela.dvi + +#out/%: $(outdir)/% +# cp -f $< $@ diff --git a/Documentation/tex/colorado.bib b/Documentation/tex/colorado.bib index 890592063e..9aa8871ac4 100644 --- a/Documentation/tex/colorado.bib +++ b/Documentation/tex/colorado.bib @@ -12,7 +12,7 @@ year={1947}, title = {Musical handwriting : or, How to put music on paper : A handbook for all musicians, professional and amateur}, address ={London}, publisher ={Oxford University Press}, -note = {Musical notation}, +note = {subject: Musical notation}, } @Book {15, @@ -20,6 +20,7 @@ author ={Carl Brandt and Clinton Roemer}, title = {Standardized Chord Symbol Notation}, address={Sherman Oaks, CA}, publisher={Roerick Music Co.}, +note ={subject: musical notation}, } @Book {22, @@ -28,25 +29,27 @@ year = {1946}, title = {How to write music manuscript an exercise-method handbook for the music student, copyist, arranger, composer, teacher}, publisher={Carl Fischer, Inc.}, address= {New York}, -note = {Musical notation --Handbooks, manuals}, +note = {subject: Musical notation --Handbooks, manuals}, } @Book {31, title = {Music Printing & Publishing}, -editors ={Donald W. Krummel \& Stanley Sadie}, - -author = {?}, +author ={Donald W. Krummel \& Stanley Sadie}, year = {1990}, -series={The Norton/Grove Handbooks in Music.}, -publisher={W.W. Norton}, +publisher= {Macmillan Press}, +note ={subject: musical notation}, } +%series={The Norton/Grove Handbooks in Music.}, +% publisher={W.W. Norton}, + @Book {40, author={Foss, Hubert}, title = {Music Printing}, series = {Practical Printing and Binding}, address={London}, publisher={Oldhams Press Ltd., Long Acre}, +note ={subject: musical notation}, } @Book {48, @@ -54,29 +57,27 @@ author = {Steele, Robert}, year = {1903}, title = {The Earliest English Music Printing}, address={London}, +note= {subject: history of music printing and engraving}, } + @Book {54, author={Austin, Ernest}, title = {The Story of Music Printing}, address={London}, publisher={Lowe and Brydone Printers, Ltd.}, -} +note= {subject: history of music printing and engraving}, } + + @Book {63, author={?}, title = {Pictoral History of Music Printing}, -address={E;lhardt, Indiana}, +address={Elhardt, Indiana}, publisher={H. and A. Selmer, Inc.}, -} +note= {subject: history of music printing and engraving}, -@Book {69, -author = {Scholderer, Victor}, -year = {1963}, -title = {Johann Gutenberg}, -address={London}, -publisher={British Museum}, } @Book {77, @@ -85,36 +86,36 @@ year = {1955}, title = {Musical Autographs from Monteverdi to Hindemith}, address={Princeton}, publisher={Princeton University Press}, -} +note= {subject: history of music printing and engraving}, -@Book {85, -author = {Wolf, Johannes}, -year = {1919}, -title = {Handbuch der Notationskunde}, -address={Leipzig}, -publisher={Breitkopf & Hartel} } + @Book {92, author = {Novello, A}, year = {1847}, title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters}, address={London}, +note={ subject: history of music printing and engraving}, } @Book {100, author={Chrsander, F.}, year={18??}, title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century}, +note={ subject: history of music printing and engraving}, } -@Book {105, +@Article {squire1897, author = {Squire, W}, year = {1897}, title = {Notes on Early Music Printing}, journal = {Bibliographica}, -volume={ iii, 99}, +volume={iii}, +number={99}, +note={ subject: history of music printing and engraving}, + } @Article{113, @@ -124,6 +125,8 @@ title = {The Printing of Music, 1473-1934}, journal = {The Dolphin}, volume={ ii}, pages={ 171--207}, +note={ subject: history of music printing and engraving}, + } %% 4th ver., @Article {120, @@ -131,33 +134,19 @@ author = {Pattison, B}, year = {1939}, title = {Notes on Early Music Printing}, journal = {The Library}, - +note={subject: history of music printing and engraving}, volume={xix}, pages={389-421}, } -@Book {128, -author = {Barksdale, A}, -year = {1957}, -title = {The Printed Note: 500 Years of Music Printing and Engraving}, -address={Toledo, Ohio}, -note={(exhibition catalogue, the Toledo Museum of Art)}, -} - @Book {136, author = {King, H}, year = {1964}, title = {Four Hundred Years of Music Printing}, address={London}, +note={ subject: history of music printing and engraving}, } -%(Rev. 1971). -@Book {143, -author={Gamble, W}, -year={ 1923}, -title = {Music Engraving and Pinting, Historical And Technical Treatise}, -address={London}, -} %(Rev.1961). @Book{150, @@ -165,6 +154,7 @@ author={Deutsch, O.F.}, year ={1946}, title = {Music Publishers' Numbers}, address={London}, +note={ subject: history of music printing and engraving}, } @Book {151, @@ -172,6 +162,7 @@ author = {Marco, G.A}, year = {1962}, title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work}, address={Charlottesville, Virginia}, +note={ subject: history of music printing and engraving}, } @Article {158, @@ -181,6 +172,7 @@ title = {Music And Music Printing in Incunabula}, journal = {Papers of the Bibliographical Society of America}, volume={ xxvi}, pages={89-118}, +note={ subject: history of music printing and engraving}, } @Book {166, @@ -188,6 +180,7 @@ author = {Oldman, C.B}, year = {1934}, title = {Collecting Musical First Editions}, address={London}, +note={ subject: history of music printing and engraving}, } @Book{170, @@ -195,6 +188,7 @@ author={Carter, J}, year={1934}, title = {New Paths in Book Collecting}, address={London}, +note={ subject: history of music printing and engraving}, } @Book {179, @@ -205,6 +199,7 @@ title = {Graphic Analysis in Application to Early American Engraved Music}, journal = {Notes}, volume={xvi}, pages={213}, +note={ subject: history of music printing and engraving}, } @Book {189, @@ -214,6 +209,7 @@ title = {Oblong Format in Early Music Books}, journal = {The Library}, volume={5th ser., xxvi}, pages={312}, +note={ subject: history of music printing and engraving}, } @Book {198, @@ -234,11 +230,12 @@ note = {Musical notation}, } @Book {215, -author = {Tappelot, Willy}, +author = {Tappolet, Willy}, year = {1947}, title = {La Notation Musicale}, address={Paris}, -publisher={Neuchatel}, +note={subject: general notation}, +publisher={Neuch\^atel}, } @Book {223, @@ -247,14 +244,7 @@ year = {1903}, title = {The Story of Notation}, address={New York}, publisher={Charles Scribner's Sons}, -} - -@Book {231, -author = {Rosenthal, Carl A}, -year = {1967}, -title = {A Practical Guide to Music Notation}, -address={New York}, -publisher={MCA Music}, +note={subject: general notation}, } @Book {239, @@ -274,6 +264,7 @@ address={Oxford, England}, publisher={Clarendon Press}, scnd_address={New York}, scnd_publisher={Oxford University Press }, +note={subject: early notation}, } @Book {258, @@ -293,6 +284,7 @@ year = {1946}, title = {The Notation of Medieval Music}, address={New York}, publisher={Carl Fischer, Inc.}, +note={subject: early notation}, } @Book {277, @@ -301,11 +293,12 @@ year = {1949}, title = {Genesis of a Music}, address={Madison}, publisher={University of Wisconsin Press}, +note={subject: early notation}, } @Book {285, author={Cage, John}, -year={ 1969}, +year={1969}, title = {Notations}, address={New York}, publisher={Something Else Press}, @@ -331,17 +324,9 @@ title = {New Music Vocabulary}, address={Urbana, Illinois}, publisher={University of Illinois Press}, note = {A Guide to Notational Signs for Contemporary Music}, - - } -@Book {317, -author = {Boehm, Laszlo}, -year = {1961}, -title={Modern Music Notation}, -address={New York}, -publisher={G. Schirmer, Inc.}, -} + @Book {325, author = {Cowell, Henry}, @@ -349,6 +334,7 @@ year = {1930}, title = {New Musical Resources}, address={New York}, publisher={Alfred A. Knopf, Inc.}, +note={subject: 20th century notation}, } @Article {333, @@ -358,6 +344,8 @@ title = {Our Inadequate Notation}, journal = {Modern Music}, volume={4}, number={3}, +note={subject: 20th century notation}, + } @Book {342, @@ -380,6 +368,7 @@ month={July-Dec}, pages={21(26)}, note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century}, } + @Book {362, author = {Monelle, Raymond}, year = {1989}, @@ -489,7 +478,6 @@ Speech extrapolated. (includes notation) } @Book {464, - author = {Lependorf, Jeffrey}, year = {1989}, journal={Perspectives of New Music}, @@ -515,22 +503,29 @@ Chromatic Notation. Results and Conclusions of the Music Notation Refor by the Chroma Foundation (book reviews). }, } -@Book {491, -author={Francois, Jean-Charles}, -title = {Perspectives of New Music}, -volume={30}, number={1}, month={Winter}, pages={6(15)}, -year={1992}, -} -%title={Writing without representation, and unreadable notation.}, -%author={Jean-Charles Francois.} -%note={Modern music has outgrown notation. While the computer is used to write down music with accuracy never before achieved, the range of modern sounds has surpassed the relevance of the computer.}, +@Article {Francois92, + author={Francois, Jean-Charles}, + journal = {Perspectives of New Music}, + volume={30}, + number={1}, month={Winter}, + pages={6(15)}, + year={1992}, + note={subject: Modern music has outgrown notation. While the + computer is used to write down music with accuracy never + before achieved, the range of modern sounds has surpassed + the relevance of the computer...}, +title={Writing without representation, and unreadable notation.}, +} @Book {501, -author = {Hamel, Keith A}, -year = {1989}, -title = {Perspectives of New Music}, -volume={27}, number={1}, month={Winter}, pages={70(14)}, -note={A design for music editing and printing software based on notational syntax. (computer music) }, + author = {Hamel, Keith A}, + year = {1989}, + journal = {Perspectives of New Music}, + volume={27}, + number={1}, + month={Winter}, + pages={70(14)}, + title={A design for music editing and printing software based on notational syntax}, } diff --git a/Documentation/tex/computer-forms.el b/Documentation/tex/computer-forms.el new file mode 100644 index 0000000000..bc750e94cb --- /dev/null +++ b/Documentation/tex/computer-forms.el @@ -0,0 +1,21 @@ +; Computer vocabularies are Copyright (C) 1998 +; Jan Nieuwenhuizen <janneke@gnu.org> +; Han-Wen Nienhuys <hanwen@cs.uu.nl> + +(setq forms-file "computer.data") +(setq forms-number-of-fields 7) +(setq forms-read-only nil) ; to make sure +(setq forms-field-sep ":") +(setq forms-multi-line nil) + +(setq forms-format-list + (list + "*** Musical vocabulary ***\n" + "\nUS English: " 1 + "\nFrancais: " 2 + "\nDeutsch: " 3 + "\nBritish English: " 4 + "\nNederlands: " 5 + "\nItaliano: " 6 + "\n\nExplanation\n\n" 7 + )) diff --git a/Documentation/tex/computer-notation.bib b/Documentation/tex/computer-notation.bib new file mode 100644 index 0000000000..ca314247e2 --- /dev/null +++ b/Documentation/tex/computer-notation.bib @@ -0,0 +1,599 @@ +% +% TITLE=The music notation with computer bibliography +% AUTHOR=Han-Wen Nienhuys +% + +@String{CitH = {Computing and the Humanities}} +@String{CMJ = {Computer Music Journal}} + +@TechReport{roush88, + note = {Rules on formatting music formulated for use in computers. Mainly distilled from [Ross] HWN}, + year = {1988}, + title = {Music Formatting Guidelines}, + author = {D. Roush}, + number = {OSU-CISRC-3/88-TR10}, + institution = {Department of Computer and Information Science, The Ohio State University}, +} + + + +@InProceedings{assayaag86, + author = {G. Assayaag and D. Timis}, + title = {A Toolbox for music notation}, + booktitle = {Proceedings of the 1986 International Computer Music Conference}, + year = 1986 +} + +@PhdThesis {byrd85, + year = {1985}, + title = {Music Notation by Computer}, + author = {Donald Byrd}, + school = {Indiana University}, +} + +@Article{byrd94, + author = {Donald Byrd}, + title = {Music Notation Software and Intelligence}, + journal = {Computer Music Journal}, +year = 1994, +pages = {17--20}, + volume = 18, + number = 1, + + note = {Byrd (author of Nightinggale) shows four problematic +fragments of notation, and rants about notation programs that try to +exhibit intelligent behaviour. HWN} + +} + + + +@Article{erickson75, + author = {R. F. Erickson}, + title = {The DARMS Project: A status report}, + journal = {Computing in the humanities}, + year = 1975, + volume = 9, + number = 6, + pages = {291--298} +} + +c +@Article{field-richards93, + author = {H.S. Field-Richards}, + title = {Cadenza: A Music Description Language}, + journal = CMJ, + year = 1993, + volume = 17, + number = 4, + + note = {A description through examples of a music entry language. +Apparently it has no formal semantics. There is also no +implementation of notation convertor. HWN} + +} + + + +@Article{bielawa93, + author = {Herbert Bielawa}, + title = {Review of Sibelius 7}, + journal = CMJ, + year = {1993?}, + + note = {A raving review/tutorial of Sibelius 7 for Acorn. (And did +they seriously program a RISC chip in ... assembler ?!) HWN} + + +} + +@Article{sloan93, + author = {Donald Sloan}, + title = {Aspects of Music Representation in HyTime/SMDL}, + journal = CMJ, + year = 1993, + volume = 17, + number = 4, + +note = {An introduction into HyTime and its score description variant +SMDL. With a short example that is quite lengthy in SMDL} +} + +@Article{wiggins93, + author = {Geraint Wiggins and Eduardo Miranda and Alaaaan Smaill and Mitch Harris}, + title = {A Framework for the evaluation of music representation systems}, + journal = CMJ, + year = 1993, + volume = 17, + number = 3, + + note = {A categorisation of music representation systems (languages, +OO systems etc) splitted into high level and low level expressiveness. +The discussion of Charm and parallel processing for music +representation is rather vague. HWN} + +} + + + +@Article{dannenberg93, + author = {Roger B. Dannenberg}, + title = {Music Representation: Issues, Techniques, and Systems}, + journal = CMJ, + year = 1993, + volume = 17, + number = 3, + + note = {The title says it all. This article does not make any +statements, it points to some problems and solutions with music +representation. HWN}, + +} + +@Article{rothstein93, + author = {Joseph Rothstein}, + title = {Review of Passport Designs' Encore Music Notation Software}, + journal = CMJ, + year = {?}, + +note = {A no-science-here review of Encore. HWN} + +} + + + +@Article{belkin94, + author = {Alan Belkin}, + title = {Macintosh Notatino Software: Present and Future}, + journal = CMJ, + year = 1994, + volume = 18, + number = 1, + + note = {Some music notation systems are analysed for ease of use, MIDI + handling. No rocket science here. The article ends with a plea for a + standard notation format. HWN}, + +} + +@Article {byrd74, + year = {1974}, + title = {A System for Music Printing by Computer}, + author = {Donald Byrd}, + journal = {Computers and the Humanities}, + volume ={8}, + pages ={161-72}, +} + + +@Book {smith73, + note = {If I remember correctly, this was concerned more with an input language than with the typography. SP}, + year = {1973}, + title = {Editing and Printing Music by Computer}, + author = {Leland Smith}, + totalentry = {Journal of Music Theory}, + volume={17}, + pages ={292-309}, +} + + + + + +@InProceedings{montel97, + author = {Dominique Montel}, + title = {La gravure de la musique, lisibilit\'e esth\'etique, respect de l'oevre}, + booktitle = {Musique \& Notations}, + year = 1997, + address={Lyon}, + editors ={Genevois \& Orlarey} +} + +@PhdThesis {gomber75, + year = {1975}, + title = {A Computer-Oriented System for Music Printing}, + author = {David A Gomberg}, + school = {Washington University}, +} + + +@Book {CASR, + note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP}, + title = {Directory of Computer Assisted Research in Musicology}, + author = {Walter B Hewlett and Eleanor Selfridge-Field}, + totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities}, +} + + +@Book {gomberg, + title = {A Computer-oriented System for Music Printing}, + author = {David A. Gomberg}, + journal = CitH, + volume={11}, + pages = {63-80}, +} + + + +@Article{blostein94, + author = {Dorothea Blostein and Lippold Haken}, + title = {The Lime Music Editor: A Diagram Editor Involving Complex + Translations}, + journal = {Software Practice and Experience}, + year = {1994}, + volume = {24}, + number = {3}, + month = {march}, + pages = {289--306}, + note = {A description of various conversions, decisions and issues relating to this interactive editor HWN}, +} + +@InProceedings{bouzaiene98:_une, + author = {Nabil Bouzaiene and Lo\"ic Le Gall and Emmanuel Saint-James}, + title = {Une biblioth\`eque pour la notation musicale baroque}, + booktitle = {EP '98}, + year = 1998, + series = {LNCS}, + + note = {Describes ATYS, an extension to Berlioz, that can mimick + handwritten baroque style beams} +} + + + +@MastersThesis{gall97:_creat, + author = {Lo\"ic Le Gall}, + title = {Cr\'eation d'une police adapt\'ee \`a la notation musicale baroque}, +school = {\'Ecole Estienne}, +year = 1997, +} + +@InProceedings{balaban88, + author = {M. Balaban}, + title = {A Music Workstation Based on Multiple Hierarchical Views of Music}, + booktitle = {Proceedings of the 1988 International Computer Music Conference}, + year = 1988, + address = {San Francisco}, + organization = {International Computer Music Association} +} + +@TechReport {gourlay87-spacing, + note = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it (as of pl 76) HWN}, + year = {1987}, + title = {Spacing a Line of Music,}, + author = {John S. Gourlay}, + number = {OSU-CISRC-10/87-TR35}, + institution ={Department of Computer and Information Science, The Ohio State University}, +} + + +@TechReport {parish87, + note = {A brief overview of MusiCopy HWN}, + year = {1987}, + title = {MusiCopy: An automated Music Formatting System}, + author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola}, + totalentry = {OSU-CISRC-10/87-TR29}, + institution ={Department of Computer and Information Science, The Ohio State University}, +} + + +@TechReport {gourlay87-formatting, + +note = {This paper discusses the development of algorithms for the +formatting of musical scores (from abstract). It also appeared at +PROTEXT III, Ireland 1986}, + + year = {1987}, + title = {Computer Formatting of Music}, + author = {John S. Gourlay and A. Parrish +and D. Roush and F. Sola and Y. Tien}, + number = {OSU-CISRC-2/87-TR3}, + institution ={Department of Computer and Information Science, +The Ohio State University}, +} + + +@TechReport {hegazy87, + note = {Describes the "parser" which converts MusiCopy MDL to MusiCopy Simultaneities & columns HWN}, + year = {1987}, + title = {On the Implementation of the MusiCopy Language Processor,}, + author = {Wael A. Hegazy}, + number = {OSU-CISRC-10/87-TR34}, + institution={Department of Computer and Information Science, The Ohio State University}, +} + + +@TechReport {hegazy87-breaking, + note = {This generalizes \TeX's breaking algorithm to music. It also appeared in Document Manipulation and Typography, J.C. van Vliet (ed) 1988. HWN}, + year = {1987}, + title = {Optimal line breaking in music}, + author = {Wael A. Hegazy and John S. Gourlay}, + number = {OSU-CISRC-8/87-TR33}, + institution={Department of Computer and Information Science, The Ohio State University,}, +} + + +@TechReport {roush87, + note = {User manual of MusiCopy. Includes an impressive example piece. HWN}, + year = {1987}, + title = {Using MusiCopy}, + author = {Dean K. Roush}, + number = {OSU-CISRC-18/87-TR31}, + institution={Department of Computer and Information Science, The Ohio State University}, +} + + +@TechReport {parrish87-simultaneities, + note = {Placement of balls, stems, dots which occur at the same moment ("Simultaneity") HWN}, + year = {1987}, + title = {Computer Formatting of Musical Simultaneities,}, + author = {A. Parrish and John S. Gourlay}, + institution={Department of Computer and Information Science, The Ohio State University}, + number = {OSU-CISRC-10/87-TR28}, +} + + +@TechReport {sola87, + note = {Overview of a procedure for generating slurs HWN}, + year = {1987}, + title = {Computer Design of Musical Slurs, Ties and Phrase Marks,}, + author = {F. Sola}, + institution={Department of Computer and Information Science, The Ohio State University}, + number = {OSU-CISRC-10/87-TR32}, +} + + +@TechReport {sola87-beams, + institution={Department of Computer and Information Science, The Ohio State University}, + note = {Calculating beam slopes HWN}, + year = {1987}, + title = {Design of Musical Beams,}, + author = {F. Sola and D. Roush}, + number = {OSU-CISRC-10/87-TR30}, +} + + +@Article {gourlay86, + note = {This paper describes the MusiCopy musicsetting system and an input language to go with it. HWN}, + year = {1986}, + title = {A language for music printing}, + author = {John. S. Gourlay}, + journal = {Communications of the ACM}, + volume= {29}, + number ={5}, + pages = {388--401}, +} + +@Article {haken93, + note = {A description of Lime internals (which resemble older (before 0.0.68pre) LilyPond data structures somewhat) HWN}, + year = {1993}, + title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor}, + author = {Lippold Haken and Dorothea Blostein}, + journal = {Computer Music Journal}, + volume= {17}, + number={3}, + pages = {43--58}, +} + +@InProceedings{haken95, + year = {1995}, + title = {A New Algorithm for Horizontal Spacing of Printed Music}, + author = {Lippold Haken and Dorothea Blostein}, + booktitle = {International Computer Music Conference}, + address={Banff}, + month={Sept}, + pages = {118-119}, + note = {This describes an algorithm which uses springs between adjacent columns. This algorithm is a "subclass" of the LilyPond algorithm. HWN}, +} + +@Article {blostein91, + note = {This paper provides a shallow overview of the algorithm used in LIME for spacing individual lines. HWN}, + year = {1991}, + title = {Justification of Printed Music}, + author = {Dorothea Blostein and Lippold Haken}, + journal = {Communications of the ACM}, + volume= {J34}, + number= {3}, + month= {March}, + pages = {88-99}, +} + + +@Article {rader96, + note = {Describes a system called MusicEase, and explains that it uses "constraints" (which go unexplained) to automatically position various elements. HWN}, + year = {1996}, + title = {Creating Printed Music Automatically}, + author = {Gary M. Rader}, + journal = {Computer}, + volume={29}, + number={6}, + month={June}, + pages = {61--69}, +} + + + + +@PhdThesis {page88, + note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP}, + year = {1988}, + title = {Computer Tools for Music Information Retrieval}, + author = {Stephen Dowland Page}, + school ={Dissertation University of Oxford}, +} + +@MastersThesis{roelofs91, + note = {This dutch thesis describes a simplistic (monophonic) typesetting system, and focuses on the breaking algorithm, which is taken from Hegazy & Gourlay HWN}, + year = {1991}, + title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek}, + author = {Ren\'e Roelofs}, + school={Erasmus Universiteit Rotterdam}, + number={45327}, + translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.}, +} + + +@Article {filgueiras93, + year = {1993}, + title = {Representation and manipulation of music documents in SceX}, + author = {Miguel Filgueiras and Jos\'e Paulo Leal}, + journal= {Electronic Publishing}, + volume={6}, + number={4}, pages = {507--518}, + +} + + +@Article {foxley87, + note = {A paper on a TROFF preprocessor to typeset music. The output shown is not very sophisticated, and contains some typographical atrocities HWN}, + year = {1987}, + title = {Music --- A language for typesetting music scores}, + author = {Eric Foxley}, + journal = {Software --- Practice and Experience}, + volume = {17}, + number = {8}, + pages = {485-502}, +} + + +@Book {filgueiras96, + year = {1996}, + title = {Implementing a Symbolic Music Processing System}, + author = {Miguel Filgueiras}, + totalentry = {LIACC, Universidade do Porto, 1996; submitted}, +} + +@Book {filgueiras?, + title = {Some Music Typesetting Algorithms}, + author = {Miguel Filgueiras}, + totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming}, +} + + +@Article {colorado-web, + author ={Alyssa Lamb}, + note = {Webpages about engraving (designed with finale users in mind) (sic) HWN}, + institution = {The University of Colorado}, + title ={The University of Colorado Music Engraving page.}, + HTML={http://obenamots.cc.colorado.edu/Musicpress/engraving.html}, + year={1996} +} + + + + +@Book {Langston90, + note = {This paper deals with some command-line tools for music editing and playback. It doesn't mention notation issues, but does come with the grand idea (not) of using music to monitor complex systems. Imagine your nuclear plant supervisor to use AC/DC for checking the reactor HWN}, + year = {1990}, + title = {Unix music tools at Bellcore}, + author = {Peter S. Langston}, + journal={Software --- Practice and Experience}, + volume={20}, + number={S1}, + pages={47--61}, +} + + + +@Article {tablature-web, + note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN}, + title = {how to read and write tab: a guide to tab notation}, + author = {Howard Wright}, + email={Howard.Wright@ed.ac.uk}, + HTML={http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html}, +} + + +@Article {niff-web, + note = {Specs for NIFF, a reasonably comprehensive but binary (yuk) format for notation HWN}, + + year = {1995}, + title = {NIFF6a Notation Interchange File Format}, + author = {Cindy Grande}, + publisher={Grande Software Inc.}, + HTML= {http://www.jtauber.com/music/encoding/niff/}, + ftp = {ftp://blackbox.cartah.washington.edu} +} + + +@Article {smdl-web, + author={unknown}, + title = {SMDL, Standard Musical Description Language}, + pdf= {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf}, + note={ISO/IEC DIS 10743 + +SGML instance for describing music. Very comprehensive in music +definition, but no support for notation / performance whatsoever (They +basically say: "You can embed a NIFF or MIDI file") HWN} + +}, +} + +@TechReport{Ornstein83, + author={Ornstein, Severo M. and John Turner Maxwell III}, + title={Mockingbird: A Composer's Amanuensis}, + institution={Xerox Palo Alto Research Center}, + address={3333 Coyote Hill Road, Palo Alto, CA, 94304}, + number={CSL-83-2}, + month={January}, + year={1983} +} + +@PhdThesis{mueller90:_inter_bearb_musik, + author = {Giovanni M\"uller}, + title = {Interaktive Bearbeitung konventioneller Musiknotation}, + school = {Eidgen\"ossischen Technischen Hochschule Z\"urich}, + year = 1990, + +note = {This is about engraver-quality typesetting with computers. It +accepts the axiom that notation is too difficult to generate +automatically. The result is that a notation program should be a +WYSIWYG editor that allows one to tweak everything. + + + +The implementation therefore is quite "weak". The introductory +chapters on engraving and notation are well structured and clear, +though.} +} + +@TechReport{grover89-symbols, + author = {John Gr\/over}, + title = {A computer-oriented description of Music Notation. Part I. The Symbol Inventory}, + institution = {Department of informatics, University of Oslo}, + year = 1989, + number = 133, + +note = {The goal of this series of reports is a full description of +music formatting. As these largely depend on parameters of fonts, it +starts with a verbose description of music symbols. + + The subject is treated backwards: from general rules of typesetting +the author tries to extract dimensions for characters, whereas the +rules of typesetting (in a particular font) follow from the dimensions +of the symbols. His symbols do not match (the stringent) constraints +formulated by eg. \cite{wanske}} } + +@TechReport{grover89-twovoices, + author = {John Gr\/over}, + title = {A computer-oriented description of Music Notation. Part II: Two Voice Sharing a Staff, Leger Line Rules, Dot Positioning}, + + institution = {Department of informatics, University of Oslo}, + year = 1989, + number = 134, + + note = {A lot rules for what is in the title are formulated. The +descriptions are long and verbose. The verbosity shows that +formulating specific rules is not the proper way to approach the +problem. In stead, the formulated rules should follow from more +general rules, similar to\cite{parrish87-simultaneities}}, +} + +@TechReport{grover89-accidentals, + author = {John Gr\/over}, + title = {A computer-oriented description of Music Notation. Part III: Accidental Positioning}, + institution = {Department of informatics, University of Oslo}, + year = 1989, + number = 135, + note = {Placement of accidentals crystallised in an enormous set of rules. Same remarks as for \cite{grover89-twovoices} applies} +} diff --git a/Documentation/tex/computer.data b/Documentation/tex/computer.data new file mode 100644 index 0000000000..373209390c --- /dev/null +++ b/Documentation/tex/computer.data @@ -0,0 +1,88 @@ +assemble::::samenstellen:: +assembler::::samensteller:: +assert:::::: +binary::::tweetallig, binair:: +bit::::hapje:: +boot:::::: +bug::::luis:: +byte::::hapje:: +c(entral) p(rocessing) u(nit)::::c(entrale) v(erwerkings) e(enheid):: +character::::teken:carattere: +compile::::vertalen:compilare: +compiler::::vertaler:compilatore: +computer:ordinateur:rechner::rekentuig:comptatore: +debug::::ontluizen:: +debugger::::ontluizer:: +default::::verval:: +device::::apparaat:: +directory::inhaltsverzeichnis(urg)::index:: +drag and drop::::sleur en pleur(silly):: +(disk) drive::::(schijf) speler:: +edit::::redigeren, bewerken (hmm):: +editor::::redigeur, bewerker (hmm):: +exception::::uitzondering:eccezione: +f(requently) a(sked) q(uestions)::::v(eel) v(oorkomende) v(ragen):: +fatal::::noodlottig:fatale: +file::datei::bestand:documento: +float::::zweef:: +floating point::::zwevende komma:: +floppy disk::::schijfje:dischetto: +free software::::vrij bedenksel:: +hard disk::::harde schijf:: +hardware::::ijzer:: +hexadecimal::::zestientallig:: +home page::::volkstuintje(silly), thuispagina(urg):: +howto::::hoedan:: +hyper link::::super verbinding:: +identifier:::::: +inode:::::: +input::::invoer:: +int::::heel:: +integer::::geheel getal:: +interface::schnittstelle::tussensmoel(silly):: +interpret::::vertolken:interpretare: +interpreter::::vertolker:: +keyboard::tastatur::toetsenbord:: +lilypond:étang de lis:lilyteich:lily pond:lelievijver:stagno del giglio: +(hard) link::::(harde) verbinding:: +linux::::loes(silly):: +log in::::aanloggen:: +maintainer::::onderhouder:: +memory::::geheugen:: +menu:::::: +mirror::::spiegel:: +monitor::::beeldscherm:: +mouse::::muis:: +octal::::achttallig:: +open source software::::open-baar bedenksel:: +output::::uitvoer:: +(disk) partition::::(schijf) deel:: +patch::::lap:: +pixel::::puntje:: +pointer::::wijzer:: +printer::drucker::drukker:: +program::::programma:: +public domain::::publiek domein(urg):: +real (number)::::reeel getal:: +real time::::waartijds:: +reset:::::: +root (directory):::::: +root window:::::: +run::::draaien:girare: +script::::schrift:: +sector::::segment:: +shell::::schaal:: +shortcut::::afstekertje:: +signed (int):::::: +software::::bedenksel, programmatuur(spec), zachtwaar(silly):: +string::::snoer:corda: +swap(file)::::wisselbestand:: +symbolic link::::verwijz(ende verbind)ing:: +t(ape)ar(chive)::::b(and)ar(chief):: +tarball::::barbaal:: +template::::leest:: +terminal::::eindstation:: +track::::spoor:: +unsigned (int):::::: +void (pointer)::::leeg (wijzer):: +workstation::::werkstation:: diff --git a/Documentation/tex/engraving.bib b/Documentation/tex/engraving.bib index ca83827b1a..a234775e2e 100644 --- a/Documentation/tex/engraving.bib +++ b/Documentation/tex/engraving.bib @@ -4,6 +4,8 @@ % + + @Book{rastall, author = {Richard Rastall}, ALTeditor = {}, @@ -12,68 +14,24 @@ publisher = {J. M. Dent \& Sons London}, year = {1983}, note = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN}, - } @Book{ross, author = {Ted Ross}, title = {Teach yourself the art of music engraving and processing}, publisher = {Hansen House}, - year = {1987}, - key = {}, - volume = {}, - number = {}, - series = {}, - address = {}, - edition = {}, - month = {}, + year = 1987, note = {This is about engraving, i.e. professional typesetting. It contains directions on good typesetting, but the sections on reproduction technicalities, how to use pens and history are interesting. Especially the section on Music Typewriters is amusing HWN}, - annote = {}, -} - -@Article{blostein94, - author = {Dorothea Blostein and Lippold Haken}, - title = {The Lime Music Editor: A Diagram Editor Involving Complex - Translations}, - journal = {Software Practice and Experience}, - year = {1994}, - volume = {24}, - number = {3}, - month = {march}, - pages = {289--306}, - note = {A description of various conversions, decisions and issues relating to this interactive editor HWN}, -} - - - -@Book {wanske, - note = {I. A very thorough overview of engraving practices of various craftsmen. It includes detailed specs of characters, dimensions etc. II. a thorough overview of a anonymous (by now antiquated) automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung), electronic data processing HWN}, - year = {1988}, - title = {Musiknotation --- Von der Syntax des Notenstichs zum EDV-gesteuerten Notensatz}, - author = {Helene Wanske}, - publisher = {Schott-Verlag}, - address = {Mainz}, - isbn = {ISBN 3-7957-2886-x}, + address = {Miami, Florida}, } -@Book {weaner93, - year = {1993}, - title = {Standard Music Notation Practice}, - author = {Maxwell Weaner and Walter Boelke}, - totalentry = {revised edition by Arnold Broido and Daniel Dorff.}, - publisher = { Music Publisher's Association of the United States Inc}, - address = {New York} -} - - - @Book {read78, note = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN}, year = {1978}, @@ -92,6 +50,28 @@ address ={New York}, } +@Book {weaner93, + year = {1993}, + title = {Standard Music Notation Practice}, + author = {Maxwell Weaner and Walter Boelke}, + totalentry = {revised edition by Arnold Broido and Daniel Dorff.}, + publisher = {Music Publisher's Association of the United States Inc}, + address = {New York} +} + + +@Book {wanske, + note = {I. A very thorough overview of engraving practices of various craftsmen. It includes detailed specs of characters, dimensions etc. II. a thorough overview of a anonymous (by now antiquated) automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung), electronic data processing HWN}, + year = {1988}, + title = {Musiknotation --- Von der Syntax des Notenstichs zum EDV-gesteuerten Notensatz}, + author = {Helene Wanske}, + publisher = {Schott-Verlag}, + address = {Mainz}, + isbn = {ISBN 3-7957-2886-x}, +} + + + @Book {hader48, year = {1948}, title = {Aus der Werkstatt eines Notenstechers}, @@ -100,291 +80,130 @@ address ={Vienna}, note = {Hader was the chief-engraver of the Waldheim-Eberle music - publishers. This book contains the most important rules on engraving -(according to [Chlapik])}, - + publishers. This beautiful booklet was intended as an introduction + for laymen on the art of engraving. It contains a step by step, + in-depth explanation of how to cut and stamp music into zinc plates. + It also contains some compactly formulated rules on musical + orthography. Out of print. } } +@Book{gamble23:_music_engrav, + author = {William Gamble}, + title = {Music Engraving and printing. Historical and Technical Treatise}, + publisher = {Sir Isaac Pitman & Sons, ltd.}, + year = 1923, + note = {This pattriotic book was an attempt to promote and help + British music engravers. It is somewhat similar to Hader's + book\cite{hader48} in scope and style, but Gamble focuses more on + technical details (Which French punch cutters are worth buying from, + etc.), and does not treat typographical details, such as optical + illusions. It is available as reprint from Da Capo Press, New York + (1971).} +} @Booklet {mpa96, note = {Pamphlet explaining some fine points in music font design HWN}, year = {1996}, - title = {Standard music notation specifications for computer programming. }, + title = {Standard music notation specifications for computer programming.}, month = {December}, author ={mpa}, publisher = {MPA}, } -@TechReport{roush88, - note = {Rules on formatting music formulated for use in computers. Mainly distilled from [Ross] HWN}, - year = {1988}, - title = {Music Formatting Guidelines}, - author = {D. Roush}, - number = {OSU-CISRC-3/88-TR10}, - institution = {Department of Computer and Information Science, The Ohio State University}, -} - - -@PhdThesis {byrd85, - year = {1985}, - title = {Music Notation by Computer}, - author = {Donald Byrd}, - institution = {Dissertation Indiana University}, -} - - -@Article {byrd74, - year = {1974}, - title = {A System for Music Printing by Computer}, - author = {Donald Byrd}, - journal = {Computers and the Humanities}, - volume ={ 8}, - pages ={161-72}, -} - - -@Book {smith73, - note = {If I remember correctly, this was concerned more with an input language than with the typography. SP}, - year = {1973}, - title = {Editing and Printing Music by Computer}, - author = {Leland Smith}, - totalentry = {Journal of Music Theory}, - volume={ 17}, - pages ={292-309}, -} - - -@PhdThesis {gomber75, - year = {1975}, - title = {A Computer-Oriented System for Music Printing}, - author = {David A Gomberg}, - school = {Washington University}, -} - - -@Book {CASR, - note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP}, - title = {Directory of Computer Assisted Research in Musicology}, - author = {Walter B Hewlett and Eleanor Selfridge-Field}, - totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities}, -} - - -@Book {gomberg, - title = {A Computer-oriented System for Music Printing}, - author = {David A. Gomberg}, - journal = {Computers and the Humanities}, - volume={11}, - pages = {63-80}, -} - - -@TechReport {gourlay87-spacing, - note = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it (as of pl 76) HWN}, - year = {1987}, - title = {Spacing a Line of Music,}, - author = {John S. Gourlay}, - totalentry = {OSU-CISRC-10/87-TR35}, - institution ={ Department of Computer and Information Science, The Ohio State University}, -} - - -@TechReport {parish87, - note = {A brief overview of MusiCopy HWN}, - year = {1987}, - title = {MusiCopy: An automated Music Formatting System}, - author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola}, - totalentry = {OSU-CISRC-10/87-TR29}, - institution ={ Department of Computer and Information Science, The Ohio State University}, -} - - -@TechReport {gourlay87-formatting, - note = {This paper discusses the development of algorithms for the formatting of musical scores (from abstract). It also appeared at PROTEXT III, Ireland 1986}, - year = {1987}, - title = {Computer Formatting of Music}, - author = {John S. Gourlay and A. Parrish and D. Roush and F. Sola and Y. Tien}, - totalentry = {OSU-CISRC-2/87-TR3}, - institution ={Department of Computer and Information Science, The Ohio State University}, -} - - -@TechReport {hegazy87, - note = {Describes the "parser" which converts MusiCopy MDL to MusiCopy Simultaneities & columns HWN}, - year = {1987}, - title = {On the Implementation of the MusiCopy Language Processor,}, - author = {Wael A. Hegazy}, - number = { OSU-CISRC-10/87-TR34}, - institution={ Department of Computer and Information Science, The Ohio State University}, -} - - -@TechReport {hegazy87-breaking, - note = {This generalizes TeX's breaking algorithm to music. It also appeared in Document Manipulation and Typography, J.C. van Vliet (ed) 1988. HWN}, - year = {1987}, - title = {Optimal line breaking in music}, - author = {Wael A. Hegazy and John S. Gourlay}, - totalentry = { OSU-CISRC-8/87-TR33}, - institution={Department of Computer and Information Science, The Ohio State University, }, -} - - -@TechReport {roush87, - note = {User manual of MusiCopy. Includes an impressive example piece. HWN}, - year = {1987}, - title = {Using MusiCopy}, - author = {Dean K. Roush}, - totalentry = { OSU-CISRC-18/87-TR31}, - institution={ Department of Computer and Information Science, The Ohio State University}, -} - - -@TechReport {parrish87, - note = {Placement of balls, stems, dots which occur at the same moment ("Simultaneity") HWN}, - year = {1987}, - title = {Computer Formatting of Musical Simultaneities,}, - author = {A. Parrish and John S. Gourlay}, - institution={ Department of Computer and Information Science, The Ohio State University}, -} - totalentry = { OSU-CISRC-10/87-TR28}, +@Book {donato63, + year = {1963}, + author = {Anthony Donato}, + title ={Preparing Music Manuscript}, + address ={Englewood Cliffs, NJ}, + publisher={Prentice-Hall}, } -@TechReport {sola87, - note = {Overview of a procedure for generating slurs HWN}, - year = {1987}, - title = {Computer Design of Musical Slurs, Ties and Phrase Marks,}, - author = {F. Sola}, - institution={ Department of Computer and Information Science, The Ohio State University}, - totalentry = { OSU-CISRC-10/87-TR32}, +@Book {Karkoshka72, + year = {1972}, + title = {Notation in New Music; a critical guide to interpretation and realisation}, + author = {Erdhard Karkoshka}, + translator={Ruth Koenig}, + publisher={Praeger Publishers}, + address={New York}, + note ={(Out of print)}, } -@TechReport {sola87-beams, - institution={ Department of Computer and Information Science, The Ohio State University}, - note = {Calculating beam slopes HWN}, - year = {1987}, - title = {Design of Musical Beams,}, - author = {F. Sola and D. Roush}, - totalentry = { OSU-CISRC-10/87-TR30}, -} - +@Book {Roemer84, + year = {1984}, + title = {The Art of Music Copying}, + author = {Clinton Roemer}, + publisher={Roerick music co.}, + address= {Sherman Oaks (CA)}, -@Article {gourlay86, - note = {This paper describes the MusiCopy musicsetting system and an input language to go with it. HWN}, - year = {1986}, - title = {A language for music printing}, - author = {John. S. Gourlay}, - journal = { Communications of the ACM}, - volume= { 29 }, - number ={5}, - pages = {388--401}, + note ={Out of print. Heussenstamm writes: an instructional manual + which specializes in methods used in the commercial field. }, + edition={2nd}, } - - -@Article {haken93, - note = {A description of Lime internals (which resemble older (before 0.0.68pre) LilyPond data structures somewhat) HWN}, - year = {1993}, - title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor}, - author = {Lippold Haken and Dorothea Blostein}, - journal = {Computer Music Journal}, - volume= {17}, - number={ 3}, - pages = {43--58}, -} - -@InProceedings{haken95, - year = {1995}, - title = {A New Algorithm for Horizontal Spacing of Printed Music}, - author = {Lippold Haken and Dorothea Blostein}, - booktitle = { International Computer Music Conference}, - address={Banff}, - month={Sept}, - pages = {118-119}, - note = {This describes an algorithm which uses springs between adjacent columns. This algorithm is a "subclass" of the LilyPond algorithm. HWN}, +@Book {Rosecrans79, + year = {1979}, + title = {Music Notation Primer}, + author = {Glen Rosecrans}, + publisher={Passantino}, + address={New York}, + note={Heussenstamm writes: Limited in scope, similar to \cite{Roemer84}} } -@Article {blostein91, - note = {This paper provides a shallow overview of the algorithm used in LIME for spacing individual lines. HWN}, - year = {1991}, - title = {Justification of Printed Music}, - author = {Dorothea Blostein and Lippold Haken}, - journal = {Communications of the ACM}, - volume= {J34}, - number= {3}, - month= {March}, - pages = {88-99}, +@Book {donemes1900, + year = {1900}, + title = {Uitgeven van muziek}, + author = {Donemus}, + publisher= {Donemus Amsterdam}, } -@Article {rader96, - note = {Describes a system called MusicEase, and explains that it uses "constraints" (which go unexplained) to automatically position various elements. HWN}, - year = {1996}, - title = {Creating Printed Music Automatically}, - author = {Gary M. Rader}, - journal = {Computer}, - volume={ 29}, - number={6}, - month={June}, pages = {61--69}}, - - -@PhdThesis {page88, - note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP}, - year = {1988}, - title = {Computer Tools for Music Information Retrieval}, - author = {Stephen Dowland Page}, - school ={ Dissertation University of Oxford}, +@Book{vinci, +author={Vinci, Albert C.}, +title={Fundamentals of Traditional Music Notation}, +publisher={Kent State University Press}, +year={1989} } -@MastersThesis{roelofs91, - note = {This dutch thesis describes a simplistic (monophonic) typesetting system, and focuses on the breaking algorithm, which is taken from Hegazy & Gourlay HWN}, - year = {1991}, - title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek}, - author = {Ren\'e Roelofs}, - school={Erasmus Universiteit Rotterdam}, - number={45327}, - translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.}, +@Book{schirmer90, + author={G. Schirmer, Inc.}, + title={The G. Schirmer Manual of Style and Usage}, + address={New York}, + publisher={The G. Schirmer Publications Department}, + year={1990} } -@Article {filgueiras93, - year = {1993}, - title = {Representation and manipulation of music documents in SceX}, - author = {Miguel Filgueiras and Jos\'e Paulo Leal}, - journal= { Electronic Publishing}, - volume={ 6}, - number={4}, pages = {507--518}, +@Book {Stone80, + year = {1980}, + title = {Music Notation in the Twentieth Century}, + author = {Kurt Stone}, + publisher= {Norton}, + address={New York}, + note ={Out of print. Heussenstamm writes: The most important book on notation in recent years. }, } - - -@Article {foxley87, - note = {A paper on a TROFF preprocessor to typeset music. The output shown is not very sophisticated, and contains some typographical atrocities HWN}, +@Book {Heussenstamm87, year = {1987}, - title = {Music --- A language for typesetting music scores}, - author = {Eric Foxley }, - journal={ Software --- Practice and Experience, }, - volume={ 17}, - number={8}, pages = {485-502}, - + title = {The Norton Manual of Music Notation}, + author = {George Heussenstamm}, + address= {New York}, + publisher={Norton}, + note={Hands-on instruction book for copying (ie. handwriting) music. Fairly complete. HWN} } -@Book {filgueiras96, - year = {1996}, - title = {Implementing a Symbolic Music Processing System}, - author = {Miguel Filgueiras}, - totalentry = {LIACC, Universidade do Porto, 1996; submitted}, -} -@Book {filgueiras?, - title = {Some Music Typesetting Algorithms}, - author = {Miguel Filgueiras}, - totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming}, +@Book{unknown69:_music_notat, + author = {--}, + title = {Music Notation}, + publisher = {Crescendo books}, + year = 1969, + note = {Heussenstamm writes: An extremely thorough exploration of musical notation [..]} } @@ -395,7 +214,7 @@ author = {Tom Gerou and Linda Lusk}, publisher = {Alfred Publishing}, address ={Van Nuys CA}, - isbn ={ ISBN 0-88284-768-6}, + isbn ={ISBN 0-88284-768-6}, } @@ -405,121 +224,64 @@ title = {Die Praxis des Notengraphikers}, author = {Herbert Chlapik}, publisher = {Doblinger}, - isbn ={ ISBN 3-9000 035-96-2}, + isbn ={ISBN 3-9000 035-96-2}, } -@Article {colorado-web, - author ={Alyssa Lamb}, - note = {Webpages about engraving (designed with finale users in mind) (sic) HWN}, - institution = {The University of Colorado}, - title ={The University of Colorado Music Engraving page.}, - HTML={http://obenamots.cc.colorado.edu/Musicpress/engraving.html}, - year={1996} -} - -@Book {donato63, - year = {1963}, - author = {Anthony Donato}, - title ={ Preparing Music Manuscript}, - address ={ Englewood Cliffs, NJ}, - publisher={Prentice-Hall}, +@Book {barksdale57, + author = {Barksdale, A}, + year = {1957}, + title = {The Printed Note: 500 Years of Music Printing and Engraving}, + address={Toledo, Ohio}, + month = {January}, + note={`The exhibition "The Printed Note" attempts to show the various processes used since the second of the 15th century for reproducing music mechanically ... '. The illustration mostly feature ancient music}, + publisher={The Toledo Museum of Art}, } -@Book {donemes1900, - year = {1900}, - title = {Uitgeven van muziek}, - author = {Donemus}, - publisher= {Donemus Amsterdam}, +@Book {wolf19, + author = {Wolf, Johannes}, + year = {1919}, + title = {Handbuch der Notationskunde}, + address={Leipzig}, + publisher={Breitkopf & Hartel}, + note= {Very thorough treatment (in two volumes) of the history musical notation}, } - -@Book {Heussenstamm87, - year = {1987}, - title = {The Norton Manual of Music Notation}, - author = {George Heussenstamm}, - address= { New York}, - publisher={ Norton}, +@Book {rosenthal67, + author = {Rosenthal, Carl A}, + year = {1967}, + title = {A Practical Guide to Music Notation}, + address={New York}, + publisher={MCA Music}, + note={Heussenstamm writes: Informative in terms of traditional notation. Does not concern score preparation} } -@Book {Karkoshka72, - year = {1972}, - title = {Notation in New Music; a critical guide to interpretation and realisation}, - author = {Erdhard Karkoshka}, - translator={Ruth Koenig}, - publisher={Praeger Publishers}, - address={ New York}, - note ={(Out of print)}, +@Book {Boehm61, + author = {Boehm, Laszlo}, + year = {1961}, + title={Modern Music Notation}, + address={New York}, + publisher={G. Schirmer, Inc.}, + note ={Heussenstamm writes: A handy compact reference book in basic notation. } } - - -@Book {Roemer73, - year = {1973}, - title = {The Art of Music Copying}, - author = {Clinton Roemer}, - publisher={ Roerick music co.}, - address= { Sherman Oaks (CA)}, +@Book{button20:_system_music_notat, + author = {Button, H. Elliot}, + title = {System in Musical Notation}, + publisher = {Novello and co.}, + year = 1920, + address = {London} } - -@Book {Rosecrans79, - year = {1979}, - title = {Music Notation Primer}, - author = {Glen Rosecrans}, - publisher={Passantino}, - address={New York}, +@Book{johnson46:_how, + author = {Johnson, Harold}, + title = {How to write music manuscript}, + publisher = {Carl Fischer, Inc.}, + year = 1946, + address = {New York} } -@Book {Stone80, - year = {1980}, - title = {Music Notation in the Twentieth Century}, - author = {Kurt Stone}, - publisher= {Norton}, - address={New York}, - note ={(Out of print)}, - -} - -@Book {Langston90, - note = {This paper deals with some command-line tools for music editing and playback. It doesn't mention notation issues, but does come with the grand idea (not) of using music to monitor complex systems. Imagine your nuclear plant supervisor to use AC/DC for checking the reactor HWN}, - year = {1990}, - title = {Unix music tools at Bellcore}, - author = {Peter S. Langston}, - journal={ Software --- Practice and Experience}, - volume={20}, - number={S1}, - pages={47--61}, -} - - - -@Article {tablature-web, - note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN}, - title = {how to read and write tab: a guide to tab notation}, - author = {Howard Wright}, - email={Howard.Wright@ed.ac.uk}, - HTML={ http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html}, -} - - -@Article {niff-web, - note = {Specs for NIFF, a comprehensive but binary (yuk) format for notation HWN}, - year = {1995}, - title = {NIFF6a Notation Interchange File Format}, - author = {Cindy Grande}, - publisher={Grande Software Inc.}, - HTML={http://www.jtauber.com/music/encoding/niff/}, -} - - -@Article {smdl-web, - author={unknown}, - title = {SMDL, Standard Musical Description Language}, - pdf={ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf}, - note={ISO/IEC DIS 10743}, -} diff --git a/Documentation/tex/mudela.doc b/Documentation/tex/mudela.doc deleted file mode 100644 index 321596152b..0000000000 --- a/Documentation/tex/mudela.doc +++ /dev/null @@ -1,1267 +0,0 @@ -% -*-tex-*- - -% this document should be run through the mudela-book script after lilypond -% has been installed. The rules have been precooked into the -% Documentation/Rules.make file; do -% -% make out/mudela.dvi -% -% or -% -% mudela-book --outdir=out/ --outname=mudela.mudtex mudela.doc -% latex '\nonstopmode \input out/mudela.mudtex' - -% Hoi Tim, hier staan wat 'enge' commando's (die dingen met een '\' -% zoals \documentclass en \def\mudela...). -% Daar moet je je niets van aantrekken, ga gewoon naar Introduction -% en begin te tiepen. - -\documentclass{report} -\usepackage{a4wide} -\title{Mudela} -\author{Jan Nieuwenhuizen \& Han-Wen Nienhuys} - -\def\file#1{\verb+#1+} - -% ugh: trick to get examples not generate par -% these are for 16pt -\def\mudelapaperlinewidth{-28.452756}% -\def\mudelapaperindent{28.452756}% -\def\mudelapaperrulethickness{0.400000}% -\def\mudelapaperbarsize{16.000000}% -\def\mudelapaperinterline{4.000000}% -\def\mudelapapernotewidth{5.930000}% -\def\mudelapaperwholewidth{8.640000}% -\def\mudelapaperunitspace{22.000000}% -\def\mudelapaperbasicspace{4.000000}% -\def\mudelapapergeometric{0.000000}% -\def\mudelapaperarithmetic_basicspace{2.000000}% -\def\mudelapaperarithmetic_multiplier{4.800000}% -\def\mudelapaperinterbeam{3.140000}% -\def\mudelapapergourlay_energybound{100000.000000}% -\def\mudelapapergourlay_maxmeasures{14.000000}% -% huh? -% \def\exampleheight{2\mudelapaperbarsize pt} -\def\exampleheight{2cm} - -% ful of pars, needs the above -\input lilyponddefs -% generates par -\musixsixteendefs -\def\musixsixteendefs{} -% generates par -\turnOnPostScript% -\def\turnOnPostScript{} -% generates par -\def\interscoreline{} -% - -\begin{document} -\maketitle - -%\def\interexample{\hskip15mm$\Longrightarrow$\hskip15mm} -%\def\interexample{\hbox to10mm{\hfill\hbox to0pt{\hss\vbox to\exampleheight{\vss$\Longrightarrow$\vss}\hss}\hfill}} -\def\interexample{} -\def\preexample{\par} -\def\postexample{\par\medskip} - -\def\file#1{{\texttt{#1}}} -\setcounter{secnumdepth}{-1} - -\chapter{A tutorial} - -\emph{\Large ***Under construction: may 98***} - -\section{Introduction} - -This chapter is a gentle introduction to using LilyPond to typeset -simple music. - -LilyPond is a so called ``batch'' program. This means, that you use a -text editor (such as \texttt{emacs} or \texttt{vi}) to create an input -file. When you are done editing your input file, you save it, and you -run LilyPond on the file. If Lily finds any errors in your input file -then she\footnote{ We're sure that if computer programs could have -gender, LilyPond would be a female computer program. So we will refer -to the program as a she. This gender-bending is not to tease you, dear -reader. We do it in real life as well. In the past two years LilyPond -has become sort of a baby daughter to us, keeping us awake at night, -but also providing us lots of joy. We hope you do not mind our little -aberration from computer-manual tradition. -% -% The name LilyPond is actually sort of a girl's name. Can you guess which -% one ? -% -} will complain. If everything is well, than she'll generate a file, that -you can process further to view or print. - -Using LilyPond to print or view some music is a procedure with four -steps. To get you started we'll run down the full procedure for you -once. - -\begin{enumerate} -\item -Fire up your favourite editor (if you know none, try \texttt{joe silly.ly}), -and key in the following text: -\begin{verbatim} -\score { - < - \type Staff = aStaff \melodic { g'2 e'4 } - \type Lyrics = yell \lyric { Air2 ball!4 } - > - \paper {} -} -\end{verbatim} - -Save your file as \file{silly.ly}. - -%The input files for LilyPond have the default extension \file{.ly}. - -\item -Run LilyPond on your newly created file: enter \verb+lilypond silly+. -LilyPond will then print all kinds of mumbo jumbo that can safely be -ignored. You might see something like this: -\begin{verbatim} -GNU LilyPond 0.1.55/FlowerLib 1.1.39 -Parsing ... [/home/hanwen/musix/spacer/init/lily-init.ly[/home/hanwen/ - - ... stuff left out here ... - - Documentation/silly.ly] -Interpreting music ...[1] (time: 0.04 seconds) -Preprocessing elements... -Calculating column positions ... [2] -Approximated: 1 lines, (with an average of 4.0 columns) -Time: 0.01 seconds -warning: Can not solve this casting problem exactly; revert to Word_wrap -[2]Time: 0.00 seconds - -Postprocessing elements... -TeX output to silly.tex ... -\end{verbatim} -All has gone well; there were some warning but no errors. The output -is a TeX file, and it is called \file{silly.tex}. \file{TeX} is -usually spelled as \TeX. It is batch program for typesetting text, -developed by the great programmer and scientist Donald Knuth to -typeset his famous The Art of Computer Programming bookseries. As you -can see \TeX\ can be adapted to do a lot more. In fact, the document -that you are reading now was also done with \TeX. -\item - To do something useful with the output you have to run \TeX\ on it - first. Run the command \verb+tex silly+. The output should resemble this: -\begin{verbatim} -This is TeX, Version 3.14159 (C version 6.1) -(silly.tex -Babel <v3.6h> and hyphenation patterns for american, dutch, loaded. -(/home/hanwen/lib/texmf/tex/lilypond/lilyponddefs.tex -(/home/hanwen/lib/texmf/tex/lilypond/dyndefs.tex) -(/home/hanwen/lib/texmf/tex/lilypond/fetdefs.tex -(/home/hanwen/lib/texmf/tex/lilypond/feta20.tex) -(/home/hanwen/lib/texmf/tex/lilypond/lily-ps-defs.tex))) [1] ) -Output written on silly.dvi (1 page, 3084 bytes). -Transcript written on silly.log. -\end{verbatim} - The human translation is ``everything went OK, the result is one - page long, and I put it in \file{silly.dvi}.'' - -\item The \file{silly.dvi} file is a description of how a piece of -text looks when it is printed. You can view it, or print it. If you -are using a Unix system equipped with X-Windows, then you can issue -the command \file{xdvi silly} to view the result. If this is not the -case, consult your local \TeX\ guru on printing and viewing DVI files. -What is in your window should look like this: -\begin{mudela} -\score { - < - \type Staff = aStaff \melodic { g'2 e'4 } - \type Lyrics = yell \lyric { Air2 ball!4 } - > -} -\end{mudela} -\end{enumerate} - -The above is quite a lot of work. Moreover, the result is pretty -crude: the page does include prettily printed titles, composer. Jan -Arne Fagertun wrote a tool to take the above tedious steps out of -your hands. The tool is called ly2dvi, and it should be on your -system if you run Unix. If you use ly2dvi, then you can do -\begin{verbatim} - ly2dvi silly.ly -\end{verbatim} -in stead of steps 2 and 3. You feel the real win of ly2dvi when you -add titling to the music. This is something that we will discuss in [XXX] - - -The remainder of this document is not about \TeX, and mostly not even -about LilyPond. What you entered into your text editor in step~1. and -fed to LilyPond is a special kind of file composed of notenames, -special words and punctation. The remainder of this document explains -how to combine these elements to express a piece of music in the -language that LilyPond understands. In other words, we try to explain -how to use LilyPond, and not how LilyPond works. For want of a better -name we call the language Mudela (short for Music Description -Language). - -This document does not cover all of Mudela. Due to technical details, -the precise working of Mudela is coupled to the innards of LilyPond. -If you really want to know all the details, your best bet would be to -get the sources to LilyPond and read the parser and scanner source. -They are in \file{lilypond-x.y.z/lily/parser.y}, -\file{lilypond-x.y.z/lily/lexer.l}\footnote{Of course, it would be even -better if you would improve LilyPond and send the resulting diffs to -us. But that would a really different ballpark (And we haven't -started with the programming guide yet.)} - -In the following sections the basic elements of Mudela are presented. -We don't want to bore you too much with details, so we will leave-out -some red tape that's needed for a valid piece of Mudela: to be -precise, we will write \verb+X Y Z+, when we really mean -\begin{verbatim} -\score { - \melodic { X Y Z } - \paper {} -} -\end{verbatim} -Usually, we will also print the resulting fragment of music on the -right just as it was produced by LilyPond. - -For the remainder we will assume that you can carry out steps 1 to 4 -from the above instruction. We will also assume that you know how -music notation works. If you are not familiar with the English terms -for music notation, then you should consult XXXX [FIXME], it contains -a glossary of musical terms. - -\section{Music copying versus music definition versus music entry} - -If you have done music copying before, then using LilyPond may seem -awkward to you in the beginning. The purpose of LilyPond is informally -explained by the term ``music typesetter.'' - -This may give the impression that the program is like a drawing tool -that lets you control precisely how the music is formatted. This is -not the case: not only does the program print musical symbols, -LilyPond also tries to make esthetic decisions---to be precise, we -programmed her to do what we find pretty. You do not have complete -control over what is happening. On the other hand, good engraving is -a very complex trade, so it is a Good Thing that you do not have to -worry about what is happening. - -Secondly, LilyPond operates on musical definitions. This really is -something different from graphical definitions. If you copy music by -hand from a printed score, you don't have to know what the score -means; you just copy the symbols. With LilyPond such a thing is not -possible: we expect you to enter the meaning of the score, not the -score itself. If put more concretely: you do not enter ``black -notehead without flag, fourth staff line, with dot'', but ``a dotted -quarter note, pitch d$^2$''. LilyPond will figure out from the -musical info what kind of graphic presentation is needed. - -This has some drawbacks: most notably, it is difficult to enter sheet -music that you cannot read. On the other hand, any piece of music -once entered can be played and transposed automatically. - -Finally, in some spots we will cheat a bit when it comes to musical -definition. Mudela has some entry modes that help you to make typing -mudela pleasant. For example, the verbose phrase ``a dotted quarter -note, pitch d$^2$'' translates to the following longhand -\begin{verbatim} - \musical_pitch { 1 2 0 } \duration { 2 1} -\end{verbatim} -You can be conveniently abbreviate this to \verb+d''4.+, which is -considerably shorter. There are some features that also make the -quotes and numbers in \verb+d''4.+ superfluous in some cases. - -\section{When you know the notes to print\ldots} - -The basic building block of music is the note. You can have LilyPond -print a note by specifying its pitch and the duration. The pitch of -the central C, also known as c$^1$, is written as \verb+c'+. A quarter -note duration is written as \verb+4+. So, to print quarter note with -central C pitch, you enter the following -\begin{mudela}[fragment,verbatim,center] -c'4 -\end{mudela} -The pitch \verb+c'+ actually consists of two parts: one for the note -name, and one part for the octave. The number of apostrophes -specifies the octave to use if you are above central c. If you want -the octaves below central c, use the comma, eg, \verb+c,,+ (The comma -is meant to represent a ``sunken'' apostrophe). The letter specifies -which note name to use. The note names simply are the letters -\verb+a+ to \verb+g+. - -By convention, the \verb+a'+ concert pitch is the tone that is used to -tune instruments. The exact frequency of this tone has wandered: in -Baroque time it was 335 Hz, most textbooks will tell you it is 440 Hz, -and a lot of orchestras nowadays tune at 441.5 Hz. - -For example, -\begin{mudela}[fragment,verbatim] - c'4 d'4 e'4 c'4 c''4 d''4 e''4 f''4 g''4 a''4 b''4 c'''4 -\end{mudela} - -The duration of a note is specified as a number: a whole note is -denoted by 1, the half note by 2, the quarter by 4, and so on. Here -are some random notes to show how it works -\begin{mudela}[fragment,verbatim] -c,8 c8 c'16 c''32 d''64 b'64 c'''2 c1 c'4 d'4 e'4 f'4 g'4 a'4 -\end{mudela} - -This gives us already enough material to make simple songs: -\begin{mudela}[fragment,verbatim] - c''4 d''4 e''4 c''4 - e''4 f''4 g''2 - g''8 a''8 g''8 f''8 e''4 c''4 - c''4 g'4 c''2 -\end{mudela} - -There is only one part about pitches that we haven't told you: -chromatically altered pitches. The names ``a'' to ``g'' for typing -pitches are convenient: they are short, pronounceable and they -resemble the normal vocabulary for pitches. - -Enter flats and sharps. In English there is no standard terse word -for C sharp or C flat. For this reason, we implemented a different, -non-english convention for entering altered pitches, see -table~\ref{notename-tab}: one makes a note sharp by adding the suffix -``--is'' to the name, one makes the a note flat by adding the suffix -``--es.'' For a double sharp you simply add another ``--is'' suffix, -flats ditto. - - -\begin{table}[h] - \begin{center} - \caption{Default note names}\label{notename-tab} - - \begin{tabular}{ll} - english &LilyPond\\ - \hline\\ - c double flat &ceses\\ - c flat &ces\\ - c natural &c\\ - c sharp &cis\\ - c double sharp &cisis\\ - \end{tabular} - - \end{center} -\end{table} - -Variations on this convention are used in a number of germanic -languages, notably Dutch, German, Swedish, and Norwegian. To be -precise, LilyPond actually defaults to dutch notenames, with aes, -aeses, ees and eeses added for consistency. - -If you are not comfortable with these names, you can make your own -names. Included with the example initialisation files are note names -for different languages, among others English (C sharp is abbreviated -to cs), Italian, Swedish, Norwegian - -\section{[chords]} - -Up till so far we have only considered music that was rather simple. -All the music had notes going in one direction, from left to right, -the one following the other. You might be wondering if this is all -Lily could do, or whether is possible to stack notes as well (creating -\emph{chords}). Rest assured: we designed LilyPond with the goal mind -that she must handle any notation construct that can be expressed -conveniently. Of course, we did not leave out chords. - -In mudela you can form a chord of several notes, by enclosing them in -pointed parentheses, ie, $\langle$ and $\rangle$, for example a -D-major chord can be described by -\begin{mudela}[fragment,verbatim] - <d'8 fis'8 a'8 d''8> -\end{mudela} -Recall what was said in the previous section about flats and sharps: -the \texttt{fis} is an f sharp. Chords can be entered in the music in -same places that notes can. As an example we give a snippet of -``twinkle twinkle little star'' in chords. The chords may seem, well, -unconventional, but they mostly serve to show how chords work -\begin{mudela}[verbatim, fragment] - c''4 c''4 <c''4 g''4> <c''4 e''4 g''4> - <c''4 e''4 a''4> <b'4 d''4 a''4> <b'2 d''2 g''2> - <a'4 d''4 f''4> <bes'4 d''4 f''4> <bes'4 c''4 e''4> <g'4 c''4 e''4> - <e'4 a'4 d''4> <a4 g'4 cis''4> <d'2 f'2 d''2> -\end{mudela} - -\section{Shortcuts} - -If you have typed the last example in to a mudela file, you will have -noticed that the input has lots of repetitions. You probably made -some little errors with the right amount of \texttt{'}'s as well. For -these reasons, saving keystrokes and preventing errors, mudela has -some handy shortcuts. You don't have to type the duration, if it the -same as the last duration entered. This saves a considerable number -of keystrokes, and thus it reduces the potential for errors. The -previous example can be reduced to -\begin{verbatim} - c''4 c'' <c'' g''> <c'' e'' g''> - <c'' e'' a''> <b' d'' a''> <b'2 d'' g''> - <a'4 d'' f''> <bes' d'' f''> <bes' c'' e''> <g' c'' e''> - <e' a' d''> <a g' cis''> <d'2 f' d''> -\end{verbatim} - -The need for quotes can also be reduced: most of the pitch intervals -in traditional music are small. Therefore, it makes sense to leave -out the quotes when the interval is small. This is called the -relative mode for octaves. You can switch it on by entering -\verb+\relative+. From then on, the pitch of a note will be the -closest to the last one. You have to specify the first pitch because -the first note of a row obviously has no predecessor. Thus, you can -enter a scale without using octavation quotes, eg, - -\begin{mudela}[fragment,verbatim] - \relative c' { c d e f g a b c } -\end{mudela} - -For chords, the relative mode works slightly differently. In a -sequence of chords, the first note of a chord gives the starting point -for the next. We can demonstrate this with our twinkle twinkle example -\begin{verbatim} - \relative c' { - c4 c <c g'> <c e g> - <c e a> <b d a'> <b2 d g> - <a4 d f> <bes d f> <bes c e> <g c e> - <e a d> <a, g' cis'> <d2 f d'> - } -\end{verbatim} - - - -\section{Finishing touch} - - - -\chapter{Features} - -Durations are entered as their reciproce values -% a1 a2 a4 a a8 a a16 a a32 a a64 a a a a -\begin{mudela}[fragment,verbatim,center] -a1 a2 a4 a a8 a a16 a32 a64 -\end{mudela} -note that you only have to specify -the duration when it changes: -Lily assumes a note has the same duration as the previous one. - -Now we can already write a little tune -\begin{mudela}[fragment,verbatim,center] -c d e c | c d e c | e f g2 -\end{mudela} -As you'll probably have guessed, -the vertical bar (pipe) \verb+|+ may be used to mark -measures. - -In the scale shown above -we left-out the last c note of the next octave. -Postfixing the pitch with a quote \verb+'+ -produces a note by one octave higher -\begin{mudela}[fragment,verbatim,center] -c c' c'' -\end{mudela} - -Prefixing the pitch with a quote \verb+'+ -produces a note by one octave lower -\begin{mudela}[fragment,verbatim,center] -a a, a,, -\end{mudela} - -\section{Slurs and Ties} - -A tie connects two adjacent noteheads - -\begin{mudela}[fragment,verbatim,center] -e' ~ e -\end{mudela} - -Whereas a slur rather connects `chords', -and tries to avoid crossing stems - -\begin{mudela}[fragment,verbatim,center] -e'( )e -\end{mudela} - -And of course, such a (legato) slur can span several notes -\begin{mudela}[fragment,verbatim,center] -c( d e )f -\end{mudela} - -\section{Beams and Plets} - -A beam is -\begin{mudela}[fragment,verbatim,center] -[a8 a] [a16 a a a] -\end{mudela} - -Here's a beamed triplet -\begin{mudela}[fragment,verbatim,center] -[/3 a8 a a]/1 -\end{mudela} - -a triplet without a beam -\begin{mudela}[fragment,verbatim,center] -\[/3 a4 a8\] -\end{mudela} - -and a combination -\begin{mudela}[fragment,verbatim,center] -[/3 a8 a16 a] a8 \] -\end{mudela} - -Abbreviations -\begin{mudela}[fragment,verbatim,center] -c1:16 [:16 e1 g] -\end{mudela} - -\begin{mudela}[fragment,verbatim,center] -c4:32 [:16 c8 d8] -\end{mudela} - -\section{Notenames} - -Lily has predefined sets of notenames -for various languages% -\footnote{These are Dutch, English, German, Italian and Swedish. -Simply include the language specific init file \file{<language.ly>}.}. -The default set are the ones we like best are the Dutch notenames. - -A sharp is formed by adding \verb+is+ -\begin{mudela}[fragment,verbatim,center] -cis dis eis fis gis ais bis -\end{mudela} - -and a flat is formed by adding \verb+es+% -%\footnote{Exceptions: \verb+es+ and \verb+as+.} -\footnote{Exceptions: {\tt es} and {\tt as}.} -\begin{mudela}[fragment,verbatim,center] -ces des es fes ges as bes -\end{mudela} - -With the obvious names for double sharps -\begin{mudela}[fragment,verbatim,center] -cisis disis eisis fisis gisis aisis bisis -\end{mudela} - -and double flats -\begin{mudela}[fragment,verbatim,center] -ceses deses eses feses geses ases beses -\end{mudela} -See why we like-em? - -There are two special `notenames', the rest -\begin{mudela}[fragment,verbatim,center] -r16 [a a a] -\end{mudela} - -and the space -\begin{mudela}[fragment,verbatim,center] -a2 s-"diminuendo" | a -\end{mudela} - - -\section{Commands} - -\begin{mudela}[fragment,verbatim,center] -\clef "bass"; c, -\end{mudela} - -and a clef-change -\begin{mudela}[fragment,verbatim,center] -\clef "violin"; f' e' \clef "alto"; d' c' -\end{mudela} - -\begin{mudela}[fragment,verbatim,center] -\meter 3/4; c g g | -\end{mudela} - -\begin{mudela}[fragment,verbatim,center] -\key fis cis; -g, a, b, cis d e fis g' -\end{mudela} -Note how Mudela allows you to -convey a musical message -rather than forces you to produce a list of typesetting commands. -If the music a \verb+cis+, you type a \verb+cis+. -Depending on the key and context of the note -Lily will determine what accidentals to typeset. - -A reminder accidental can be forced by -using an exclamation mark \verb+!+ -on a pitch a reminder accidental -\begin{mudela}[fragment,verbatim,center] -cis d e cis | c! d e c | -\end{mudela} - -\begin{mudela}[fragment,verbatim,center] -\meter 2/4; -\bar "|:"; c c \bar ":|:"; c c \bar ":|"; c c \bar "|."; -\end{mudela} - -\section{Chords and Voices} - -Here's a simple chord -\begin{mudela}[fragment,verbatim,center] -<c e g> -\end{mudela} - -here are a few -\begin{mudela}[fragment,verbatim,center] -< - { c()d()c } - { e()f()e } - { g()a()g } -> -\end{mudela} - -and similarly voices -\begin{mudela}[fragment,verbatim,center] -< - { \voiceone c g c g } - { \voicetwo c,2 g,2 } -> -\end{mudela} - - -\section{A complete example} -%\label{se:complete} - -A Mudela file needs some red tape - -\begin{mudela}[verbatim,center] -\score{ - \melodic { - \octave c'; - c d e c | - c d e c | - e f g2 | - } -} -\end{mudela} - -\section{Lyrics} - -\begin{mudela}[verbatim,center] -\score{ - < - \melodic{ - \octave c'; - c d e c | c d e c | - e f g2 | e4 f g2 - \bar "|."; - } - \type Lyrics \lyric{ - Fr\`e-4 re Ja- que - Fr\`e- re Ja- que - Dor- mez vous?2 - Dor-4 mez vous?2 - } - > -} -\end{mudela} - -\section{Variables} - - -\section{Ly2dvi} -Check-out this handy little script -that not only may save you quite some keystrokes, -but produces titles and takes care of -margins and (hopefully) papersizes. -See \file{ly2dvi (1)}. - -\chapter{Input format reference} - -October 8, 1997 - -This document describes the the GNU LilyPond input format, which is an -effective language for defining music. We call this language (rather -arrogantly) The Musical Definition Language or Mudela, for -short.\footnote{If anybody comes up with a better name, we'd gladly - take this. Gourlay already uses Musical Description Language, - G-Sharp Score Definition Language. ISO standard 10743 defines a - Standard Music Description Language. We're not being original here} - -The first aim of Mudela is to define a piece of music, being complete -from both from a musical typesetting, as from a musical performing -point of view. - -The Musical Definition Language (Mudela), has a logical structure, -making use of identifiers, that allows for flexible input, and -definition reuse. See \file{MANIFESTO} for reasons and design considerations. - -The below included for explanatory purposes only (i.e., for a complete -and up-to-date definition, see \file{lily/parser.y} and -\file{lily/lexer.l}): - -As a related note, you should take a look at the examples and the init -files, as this document does not cover every aspect of mudela yet, and -may be out of date.\footnote{Ok, I am being pessimistic here. This - just is a disclaimer. Docs usually are written after the program - itself.} This document intends to give an idea of how it works, it -is not a guide on how to use it. - - -\section{Basic elements} - -\subsection{Files} - -The de-facto extension of Mudela is \file{.ly}. Files may be included by -entering \verb+\include+ at the start of a line: - -\begin{verbatim} -\include "a_file.ly" -\end{verbatim} - - -\subsection{Comments} - -Line comments are introduced by a -\verb+%+. -Block comments are delimited -by -\verb+%{+ -and -\verb+%}+. -They do not nest. - -\subsection{Versions} - -Occasionally, small changes in syntax across different versions of -Mudela might give syntax errors. To warn you about possible -incompatibilities, you can specify the Mudela version for which the -inputfile was written, -\begin{verbatim} -\version "0.0.50"; -\end{verbatim} - -A perl-script which tries to convert to newer versions -(\file{convert-mudela}) is included in the LilyPond distribution. - -\subsection{Words} - -Keywords are preceded by a backslash: \verb+\+. They contain -alphabetic characters only. - -Identifiers in their normal form consist start with a backslash, a -alpha character, followed by alpha-numerics. Identifiers can contain -any characters (except whitespace, - and \verb+%+), if you use this construct: - -\begin{verbatim} -\$i'm_a_weird!!!identifier -\end{verbatim} - -(which is the identifier with the name -\verb+i'm_a_weird!!!identifier+). \verb+$+ Takes any sequence of -characters which are not whitespace, \verb+$+ and \verb+%+. -\verb+$i'm_a_weird!!!string+ -\def\foobar{$} % silly fontlock mode - -\subsection{Nesting characters} - -Mudela uses the brace (\verb+{+ and \verb+}+) for most hierarchical -structures. For chords the \verb+<+ and the \verb+>+ are used as -nesting braces. - -\subsection{Constants} - -Please note that -.5 is not a Real. - -\begin{verbatim} -"I am a string" --1.2e3 % a real -12 % an int -\end{verbatim} - - -\subsection{Identifiers} - -When assigning identifiers you use - -\begin{verbatim} -string = ... -\end{verbatim} - -If you reuse identifiers, then the previous contents will be thrown -away after the right hand is evaluated, eg -\begin{verbatim} -bla = \melodic { \bla } -\end{verbatim} -is legal - -When using identifiers they have to be escaped: - -\begin{verbatim} -oboe = \melodic { ... } -\score{ \melodic { \oboe }} -\end{verbatim} - -The left-hand part of the assignment is really a string, so -\begin{verbatim} -"Foo bar 4 2 " = \melodic { .. } -\end{verbatim} - -is also a valid assignment (but you would have trouble referencing to it) - - -\subsection{Hierarchical structures} - -The general structure consists of declarations: -\begin{verbatim} -IDENTIFIER = \TYPE{ - <type specific data> -} -\end{verbatim} -and instantiations: - -\begin{verbatim} -\TYPE{ <type specific data> } -\end{verbatim} - -(Currently, \verb+\score+ is the only type that can be instantiated -at top level. Currently declarations can only be done at top level) - -Most instantiations that use an IDENTIFIER are specified as follows: - -\begin{verbatim} -\TYPE{ IDENTIFIER [...] } -\end{verbatim} - -Some exceptions on this rule have been made to prevent inputting -Mudela becoming tedious - - -\subsection{Modes:} - -To simplify different aspects of music definition (entering the notes -and manipulating them) Mudela has a number of different input "modes": - -\begin{description} - - -\item[Normal mode] - -At the start of parsing, Mudela assumes normal mode. -In Normal mode, a word is looked up in the following order: -\begin{description} -\item{\verb+word+} string -\item{\verb|"string"|} string -\item{\verb|\word|} keyword, identifier -\end{description} -In normal mode, a word is assumed to start with an alphabetic -character, followed by alpha-numeric characters. - -\item[Note mode] Note mode is introduced by the keyword - \verb+\melodic+. In Note mode, a word is looked up in the following - order: -\begin{description} -\item{\verb+word+} notename, string -\item{\verb|"string"|} string -\item{\verb|\word|} keyword, identifier -\end{description} - -In Note mode a word is considered to have alphabetic characters only, -so the underscore (\_) is illegal. If you accidently mistype a -notename, the parser will assume that you are entering a string (and -it will most likely complain that you should be in \verb|\lyrics| mode to -do lyrics) - - -\item[Lyric mode] Lyrics mode (and thus Simple mudela) is introduced - by the keyword \verb+\lyrics+. Because of the various control - characters that can appear in lyrics, eg, ``foreign language'' - accents, the inputting a string containing these has been made very - easy. - -In Lyrics mode, a word is looked up in the following order: -\begin{description} -\item{\verb+word+} string (thus a lyric) -\item{\verb|"string"|} string -\item{\verb|\word|} keyword, identifier -\end{description} - -In Lyric mode every sequence of non-digit and non-white characters -starting with an alphabetic character or the \_ is considered a word. - -\begin{verbatim} -a&@&@&TSI|{[ % a word -1THtrhortho % not a "word" -Leise Fl\"u\ss{}teren meine Sapfe % 4 words -_ _ _ _ % 4 words: 4 spaces -\end{verbatim} -\end{description} - -These modes are of a lexical nature. Normal and Note mode largely -resemble each other, save the possibility of entering Reals, -meaning of \verb+_+ and the resolution of words - -\subsection{Notes} - -You enter a note by giving the name and the reciprocal of the duration: - -\begin{mudela}[fragment,verbatim] -a'4 % Dutch names -\end{mudela} - -is a A-1 pitched crotchet. The ' signifies an octave change. A-1 is 440 -Hz concert-pitch. \verb+c'+ is also known as the central c. More examples: - -\begin{mudela}[fragment,verbatim] - a, % 110 - a % 220 - A % 110, uppercase octavates down - a' % 440 - a'' % 880 - 'as4.*2/3 -\end{mudela} - -The last one is an A flat, (just below 110 Hz concert-pitch). The \verb+*2/3+ -signifies that this note is part of a triplet (3 in stead of 2). The -duration is one and a half quarter note (\verb+4.+) times 2/3. - -Notenames are just a special kind of identifiers, and can be declared -for any language appropriate (see \file{init/dutch.ly}). The default language -for notenames is defined to be Dutch. In Dutch, the notenames are -a,b,c,d,e,f and g. Sharps are formed by adding the extension "is", -flats by adding ``es'' - -\begin{verbatim} -% double sharp -cisis disis eisis fisis gisis aisis bisis -% sharps -cis dis eis fis gis ais bis -% naturals -c d e f g a b -% flats -ces des es fes ges as bes -% double flats -ceses deses eses feses geses ases beses -\end{verbatim} - -Rests are named r or s -\begin{verbatim} -r % print a rest -s % a "space" rest, nothing is printed. -\end{verbatim} - -These notenames along with duration are enough material to construct -simple melodies: - -\begin{mudela}[verbatim,fragment] -\octave c'; -c4 c4 g4 g4 a4 a4 g2 -f4 f4 e4 e4 d4 d4 c2 -\end{mudela} - -Music is able to express more. generally speaking, the other -'features' are either connected between notes (slurs, beams: spanning -requests) or attached to notes (eg. accents). The former are -implemented as START and STOP stop features and then attached to the note. - -\begin{description} -\item{[ and ]} start and stop a beam -\item{( and )} start and stop a slur -\end{description} - -example: -\begin{mudela}[verbatim,fragment] - \octave c'; - [c8 () d8 () e8 - e8(] [)g8 <c'8] e'8> % NO nesting! - [2/3 c8 c8 c8]1/1 % a triplet -\end{mudela} - -Please note that these two characters do \emph{not} necessarrily nest, -they should be attached to the note. For this reason, the construct -\verb+[ <c4 c4>]+ will generate a parse error. - -\subsection{Slurs and Ties} - -Ties connect the noteheads of adjacent notes. They are entered as follows: - -\begin{mudela}[verbatim,fragment] -a'4 ~ a''4 -\end{mudela} - -Slurs connect whole chords, and try to avoid crossing stems. They are -entered as follows: - -\begin{mudela}[verbatim,fragment] -a'4( )a''4 -\end{mudela} - -\subsection{Scripts} - -Symbols which can be put at either side (above or below) of a staff -are entered as follows: -\begin{mudela}[verbatim,fragment] - a-^ % marcato, direction: default - %a^- % portato, direction: above note - a_. % staccato, direction: below note - a^\fermata % predefined identifier - c_"marcato" % add a text - c^"marcato" - c-"marcato" -\end{mudela} - -If you want to define your own scripts refer to \file{init/script.ly} for -details. - - -Dynamics can be put after the notename: -\begin{verbatim} -a4 \dynamic { 0 } % 0 = fff, 7 = ppp -\end{verbatim} - -Mudela defines the following dynamic identifiers: - -\begin{verbatim} -ppp pp p mp mf f ff fff sfz fz fp -\end{verbatim} -and the following abbreviations: -\begin{verbatim} -\< %start crescendo -\> % start decrescendo -\! % end crescendo/decrescendo -\end{verbatim} - -\subsection{Defaults} - -If omit the duration of a note, a default value is substituted. For -this default value mudela uses the last duration explicitly entered. - -Thus the following inputs are equivalent -\begin{verbatim} -c4 c4 c16 c16 c16 s16 c4 c16 -c4 c c16 c c c c4 c16 -\end{verbatim} - -If you are typing music which does not lie in the "small" and "large" -octave, you can prevent having to type \verb+'+ all the time by using the -\verb+\octave+ command: These two lines have the same pitch. -\begin{verbatim} -c'' d'' e'' c d e c d e -\octave c''; c d e ''c ''d ''e \octave c; c d e -\end{verbatim} - -By default the setting of \verb+\octave+ is 0. - -\subsection{Lyrics} - -Lyrics in Mudela resemble Simple mudela a lot, with notes substituted -by text. - -All syllables are entered separately, separated by whitespace -\begin{verbatim} -Twin-4 kle4 twin-4 kle4 ... -\end{verbatim} - -Two syllables or words that compose a single -duration entry are bound together using an underscore -\begin{verbatim} -He_could4 not4 -\end{verbatim} - -\section{Composition: forming bigger structures} - -The previous examples tacitly assumed that a sequence of notes is -printed in a left to right manner. This is not entirely correct, you -will get the bigger picture in this section. - -In mathematics you can form expressions by combining expressions, -which are ultimately some kind of atom or terminal symbol. The same -goes for mudela: there are some basic building blocks, and by -combining those you create complex music. - -You can combine music in three ways: -\begin{itemize} -\item If you enclose a sequence of music-elements in braces ( \verb+{+ - and \verb+}+ ), then you form another kind of music called (Voice) with those pieces. - The duration of the Voice is the sum of the durations of its elements -\begin{verbatim} -{ c c g g a a g2 } % twinkle twinkle -{ { c c g g} { a a g2 } } -\end{verbatim} -\item You can stack music by enclosing a sequence of music elements - with \verb+<+ and \verb+>+. This is called a Chord. The duration of a Chord is - the union of the durations of its elements Example: -\begin{verbatim} -<a4 {cis8 cis8} e'4> % a-major chord -\end{verbatim} -\item - You can form music by transposing music: -\begin{verbatim} -\transpose - d % from c to the d that's one octave down - { e4 f4 } % the horizontal music -\end{verbatim} -\end{itemize} - -Of course you can also combine these three mechanisms. -\begin{verbatim} -{ c <c e> <c e g> <c e g \transpose d' dis > } % 4 increasing chords -\end{verbatim} - -The basic building block in Mudela is called Request. Examples of -Requests are: Timing (such as Meter), Rhythmic, Melodic, Note (which is a combination of -Rhythmic and Melodic), Musicscript (put an accent over a note or -rest), etc. For the actual up to date listing, you should consult the -LilyPond source code: the Request types form a big class hierarchy. - -Normally you don't enter Requests directly, since that would be -tedious. Mudela has standard abbreviations for the most common -combination of Requests. If you enter \verb+c4+, this is an -abbreviation for: -\begin{verbatim} -Request_chord{ - Note_req{ - notename: 0 acc: 0 oct: -1 - duration { 4} - } - Stem_req{ - duration { 4} - } -} -\end{verbatim} - -The \verb+Request_chord+ is a special kind of chord which only allows -Requests as its elements. The examples of the previous section were -processed with \verb+{+ and \verb+}+ enclosing the input. - -\subsection{Durations} - -A duration always starts with the duration type (1,2,4 etc), and then -any optional multipliers/dots. Old fashioned durations can be entered -as follows -\begin{verbatim} -'c\breve -gis'\longa -\end{verbatim} - - - -\subsection{Meters/groupings} - -A meter has this form: -\begin{verbatim} -\meter 3/4 ; -\end{verbatim} - -Rhythmic grouping is a concept closely associated with this. For -example, in a 5/8 meter, the counts are grouped 2+3. In mudela this is -entered as -\begin{verbatim} -\grouping 8*2 8*3 ; -\end{verbatim} -You can start the piece with a partial measure, the command takes the -same syntax as grouping: -\begin{verbatim} -\partial 16*3 4; -\end{verbatim} - -Make the piece start with a upstep [english translation?] -lasting 1 3/4 quarter notes. - -These commands are also "voice elements", and constitute ``Music'' -(consisting of stuff with duration 0). - - -\subsection{Voicegroups} - - -[OUTDATED] - -If more than one "voice" is in a staff, then you have the option of -putting the different voices into so called voicegroups: members of -the same voicegroup share certain characteristics, among others: - - - dynamics - - text - - beams and stems - - scripts - -For the actual list, see the init file \file{init/register.ly} - -Putting different musical lines in to the same voicegroup effectively -makes LilyPond try to form chords of all those lines. Putting -different musical lines in to different voicegroups effectively makes -LilyPond try to set those lines as independently as possible. - -[adsolete. Has to be fixed in lily] - -You can set the voicegroup of a voice with the command \verb+\group+, e.g., - -\begin{verbatim} - oboeI = \melodic { - \group "oboes"; - [e8 f8 - \group "+solo"; - [g16 a16 g16 fis16] - \group "-"; - g8 f8 - } - oboeII = \melodic { \group "oboes"; - c8 d8] - e4 - e8 d8 - } - /// ... - - \staff { - melodicregs \melodic{ oboeI } - \melodic { oboeII} -} -\end{verbatim} - -In this example, the two oboe voices share one staff and are initially -in the voicegroup called "oboes". They will share beams, dynamics etc. -After two quarter notes, oboeI "pushes" its group: a new voicegroup is -created, called "oboes+solo". The \verb+\group "-"+ command makes the -voice enter "oboes" again. - -Please do note that [] are voicegroup wide; the previous input is -valid: the beam, started in oboeI, voicegroup "oboes" is also ended in -voicegroup "oboes", albeit not in oboeI but oboeII - -This concept may seem contorted, but it allows you to set the separate -oboe parts without changing the \verb+oboeI+ and \verb+oboeII+ (assuming that -you edit the [] in the example.) - -The construct -\begin{verbatim} -< { .... } {......} > -\end{verbatim} -makes a chord (all horizontal parts are in the same voicegroup). The construct -\begin{verbatim} -\multi 2 < { ....} { .... } > -\end{verbatim} -creates horizontal parts which behave independently. You will have to -set voicegroup features by hand (\verb+\stem+ and \verb+\hshift+. See examples) - -The construct -\begin{verbatim} -\multi 3 < { ....} { .... } > -\end{verbatim} -creates a chord with each part in a different staff - - -\subsection{Examples} - -Examples are included with the GNU LilyPond distribution. For the sake of -maintenance no long examples are included in this document. - - -\section{History} - -This language has a number of roots. First and foremost, GNU -LilyPond's predecessor mpp was the inspiration of the Note-mode input. -Secondly, the hierarchical structure looks a lot like Rayce's (Rayce -is a raytracer that I've written as a hobby project. ), which in turn -owes a lot to POVRay. - -Now, we know, musictypesetting and raytracing do not necessarily -require the same input format, and we know that a lot more ways exist -to convert music to ASCII, but we did give this language some -thoughts. As always suggestions are appreciated. - -\end{document} - - diff --git a/Documentation/tex/mudela.yo b/Documentation/tex/mudela.yo new file mode 100644 index 0000000000..87407dfb4b --- /dev/null +++ b/Documentation/tex/mudela.yo @@ -0,0 +1,2676 @@ +COMMENT(-*-text-*-) + +DEFINEMACRO(var)(1)(whenlatex(latexcommand({\normalfont\scshape )ARG1+latexcommand(}))\ + whenhtml(sc(ARG1))) + + + +COMMENT( This document contains Mudela fragments. You need at least +Yodl-1.30.18 to convert this to tex or html. + +TODO + +in stead <-> instead +) + +htmlbodyopt(bgcolor)(white) +htmlcommand(<font color=black>) + +latexpackage()(a4wide) +latexlayoutcmds( +%\usepackage[latin1]{inputenc} +\input mudela-book +) + +whenlatex(notableofcontents()) +whentexinfo(notableofcontents()) + +report(Mudela, the Music-Definition Language) + (Han-Wen Nienhuys and Jan Nieuwenhuizen) + (nop()PIPETHROUGH(date "+%B %d, %Y")()()nop()) + +COMMENT( + +* The [ ] look weird + +* paragraphs have too much space. + +) + + +latexcommand(\def\interexample{}) +latexcommand(\def\preexample{\par}) +latexcommand(\def\postexample{\par\medskip}) +latexcommand(\def\file#1{{code(#1)}}) +COMMENT( +latexcommand(\def\texttt#1{\tt #1}) +latexcommand(\def\textbf#1{\bf #1}) +) + +chapter(Tutorial) + +whenhtml( +nsubsect(Disclaimer) +This document is written in url(Yodl)(ftp://pcnov095.win.tue.nl/pub/yodl) +and should foremost produce nice LaTeX() output. +In other formats, such as html, some things will look a bit different, +while other things will be simply left out. +Therefore, the authoritive version of this document is the PostScript version, +produced via LaTeX(). +) + +sect(Introduction) +label(tutorial:introduction) +latexcommand(\parindent2pc) + +If you are reading this, you probably are interested in printing +music. LilyPond is a program that can print music from a +specification that you, the user, supply. Using LilyPond may be a bit +quaint in the beginning, because you have to give that specification +using a em(language). That might not be what you expect if you are +familiar with graphical interfaces. But there are some big +advantages: first, once you master the language, entering music can be +done quite efficiently. Secondly, it is possible to explain exactly +what the meaning of a language is, i.e., the semantics are much +clearer. Thirdly, since the program is not interactive, no tradeoffs +have to be made between processing speed and beauty of the output. + +This chapter is a gentle introduction to Mudela, the language that +instructs LilyPond to typeset music. We will explain Mudela by +presenting a series of examples of Mudela input. The corresponding +output will be shown on the right or below, just as it was produced by +LilyPond. + +We will assume that you more or less understand the basics of music notation. +If you are not familiar with the English terms for music notation, you +should consult bind(Appendix)ref(glossary): it contains a glossary +of musical terms along with translations in some other languages. + +If you want to try the examples given here, you should have look a +look at bind(Section)ref(sec:running-lilypond) first. + +sect(Music copying, music definition and music entry) +label(tutorial:copying-vs-def-vs-entry) + +If you have copied music before, using LilyPond may seem awkward +to you in the beginning. The purpose of LilyPond informally is +explained by the term `music typesetter'. + +This may give the impression that the program is like a drawing tool +and that it lets you control precisely how the music is formatted. +This is not the case: not only does the program print musical symbols, +LilyPond also tries to make esthetic decisions---to be precise, we +programmed her to do what we find nop(pretty.)footnote(We formed our +taste by looking at, and reading all about fine music engraving. Of +course, our taste is also bound by all the accepted rules of common +music notation.) You do not have complete control over what is +happening. Usually that is not a big loss, since good engraving is a +very complex trade. In other words, you don't have control, so you do +not have to worry about what is happening precisely. + +Secondly, we expect you to enter the meaning of the music, not the +sheet music itself. The input to LilyPond is a music definition, +which is something different than notation: notation is a graphical +system. Put more concretely: your input to LilyPond should contain +information like ``a dotted quarter note, pitch nop(d)sups(2).'' +LilyPond will figure out from the musical information that a black +note head with a stem but without flag, fourth staff line, with dot +should be printed. + +When you are copying music by hand from a printed score, you don't have +to know what the score means; you just copy the symbols. With LilyPond +such a thing is not possible. You have to enter the meaning of the +symbols, and this might not always be as easy. On the other hand, once +entered, any piece of music can be played and transposed automatically. + +Finally, in some spots we will cheat a bit when it comes to musical +definition. Mudela has some entry modes that help to make typing +Mudela pleasant. For example, the phrase ``a dotted quarter note, +pitch nop(d)sups(2)'' translates to the following longhand: +verb( +\musicalpitch { 1 2 0 } \duration { 2 1 }) + +This data is what we consider the musical em(definition). Mudela +has a special entry mode where you can conveniently abbreviate this to +`code(d''4.)'. There are some features that also make the quotes and +numbers in `code(d''4.)' superfluous in some cases. + +For those who are curious, the numbers in `code(\musicalpitch { 1 2 0 +})' example mean octave, notename, and accidental respectively. The +numbers in `code(\duration { 2 1 })' are the (negative) logarithm of the +duration (2 is a quarter note, 3 is an eighth note, etc.) and the number +of augmention dots respectively. + +sect(When you know the notes to nop(print)ellipsis()) + +The basic building block of music is the note. You can have LilyPond +print a note by specifying its pitch and duration. The pitch of the +central C is written as code(c'). This is in line with musicological +notation; there this pitch is transcribed as nop(c)sups(1) or c'. A +quarter-note duration is written as code(4). So, to print a quarter +note whose pitch is central C, you enter the following: +mudela(fragment,verbatim,center)( c'4 ) + + +subsect(Duration) + +The duration of a note is specified as a number: a whole note is +denoted by 1, a half note by 2, a quarter by 4, and so on. If you +want to augment a duration with a dot, simply affix a period to the +number. Here are some random notes to show how it works. + +mudela(fragment,verbatim)( + c'1 c'2 c'4 c'8 c'16 c'32 c'64 c'64 c'2. c'8. c'16 +) + +subsect(Basic pitches) + +The pitch code(c') actually consists of two parts: one part for the +note name, and one for the octave. The letter specifies which note +name to use: note names simply are the letters code(a) to code(g). +The number of apostrophes specifies the octave to use: the central C +is denoted by code(c').footnote(By convention, the A above central C +at concert pitch is the tone that is used to tune instruments. Its +frequency is about 440 Hz.) The C which is an eighth higher (the C in +the ``two-line octave'') is denoted by code(c''): every octave adds a +quote. A note name without quotes designates the pitch below code(c') +(the C in the ``small octave''). If you want to go down even further, +commas should be added, e.g., the C in the ``contra octave'' is +expressed as code(c,,).footnote(The comma is meant to represent a +sunken apostrophe.) + + +This example demonstrates octaves: +mudela(fragment,verbatim,center)( + c,,4 c,4 c4 c'4 c''4 c'''4 +) + +And this example demonstrates notenames: +mudela(center,fragment,verbatim)( + c'4 d'4 e'4 f'4 g'4 a'4 b'4 c''4 +) + +A rest can be entered as a note with the special name code(r), e.g., +mudela(fragment,verbatim,center)(r4) + +This already gives us enough material to make simple songs. In +bind(Figure)ref(fig:twinkle1) a portion of the traditional song +``Twinkle Twinkle Little Star'' is shown. + +latexcommand(\begin{figure}[h]) + center( +mudela(fragment,verbatim)( + c''4 c''4 g''4 g''4 + a''4 a''4 g''2 +) + latexcommand(\caption{Twinkle twinkle little star (version 1)}) + label(fig:twinkle1) + ) +latexcommand(\end{figure}) + + +subsect(Alterations) + +We have so far ignored chromatically altered pitches. The names `a' +to `g' for entering pitches are convenient: they are short, +pronounceable and they resemble the words for pitches in normal +musical vocabulary. + +Enter flats and sharps. In English there is no standard terse word +for C sharp or C flat. For this reason, we implemented a different, +non-English convention for entering altered pitches: a note is made +sharp by adding the suffix `--is' to its name, and flat by adding the +suffix `--es'. For a double sharp another `--is' suffix is added, for +flats another `--es' suffix. The names for the alterations of C are +given in bind(Table)ref(notename-tab). + +latexcommand(\begin{table}[h]) + center( + table(2)(ll)( + row(cell(english)cell(LilyPond)) + rowline() + row(cell(c double flat)cell(ceses)) + row(cell(c flat)cell(ces)) + row(cell(c natural)cell(c)) + row(cell(c sharp)cell(cis)) + row(cell(c double sharp)cell(cisis)) + ) + ) + latexcommand(\caption{Default note names}) + label(notename-tab) +latexcommand(\end{table}) + +Variations on this convention are used in a number of germanic +languages, notably Dutch, German, Swedish, and Norwegian. To be +precise, LilyPond actually defaults to Dutch notenames, with +code(aes), code(aeses), code(ees) and code(eeses) added for +consistency. + +Throughout this document we will continue to use the Dutch names. To make +(Dutch) pronunciation easier, the a-flat and e-flat are contracted to +code(as) and code(es). Similarly, the a double flat and e double flat are +contracted to code(ases) and code(eses). + +If you are not comfortable with these names, you can make your own. +Note names for different languages are included with the example +initialisation files, amongst others English (C sharp is abbreviated +to code(cs)), Italian, Swedish and Norwegian. If you want to use +these names, you should look at bind(Section)ref(subsect:include) for +information on how to use include files. + +sect(Running LilyPond) +label(sec:running-lilypond) + +In the previous section some basic elements of Mudela were presented. +We didn't want to bore you too much with repetitive details, so we +left out some red tape that's needed for a of Mudela in a form that is accepted +by LilyPond. To +be precise, we wrote code(X Y Z), when we really meant +verb(\score { + \melodic { X Y Z } + \paper {} +}) +We will continue to leave out the red tape this, until the time is fit to explain what the +above it means. + + +Because LilyPond uses a language, it is a so called em(batch) +program. +This means, that you use a +text editor (such as code(emacs) or code(vi)) to create an input +file. When you are done editing your input file, you save it, and you +run LilyPond on the file. If Lily finds any errors in your input file +then nop(she)footnote(We're sure that if computer programs could have + gender, LilyPond would be a female computer program. So we will + refer to the program as a she. This gender-bending is not to tease + you, dear reader. We do it in real life as well. In the past two + years LilyPond has become sort of a baby daughter to us, keeping us + awake at night, but also providing us with lots of joy. We hope you do + not mind our little aberration from the traditions of computer-manual + writing.) COMMENT( + The name LilyPond is actually sort of a girl's name. Can you guess which + one ?) +will complain. If everything went well, then she'll generate a file, that +you can process further to view or print. + +Using LilyPond to print or view some music is a four-step procedure. +To get you started we'll run down the full procedure for you once. + +enumerate( +it() +Fire up your favourite editor (if you don't +know any editors, try code(joe silly.ly)), +and key in the example from bind(Figure)ref(fig:twinkle1), with red tape: +verb( +\score { + \melodic { + c''4 c''4 g''4 g''4 + a''4 a''4 g''2 + } + \paper {} +} +) + +Save your file as file(twinkle.ly).footnote(The default extension for Mudela +files is file(.ly).) + +it() +Run LilyPond on your newly created file: enter code(lilypond twinkle). +LilyPond will then print all kinds of mumbo jumbo that can safely be +ignored. You might see something like this: +verb( +GNU LilyPond 0.1.55/FlowerLib 1.1.39 +Parsing ... [/home/hanwen/musix/spacer/init/lily-init.ly[/home/hanwen/ + + ... stuff left out here ... + + ] Documentation/twinkle.ly] +Interpreting music ...[1] (time: 0.04 seconds) +Preprocessing elements... +Calculating column positions ... [2] +Approximated: 1 lines, (with an average of 4.0 columns) +Time: 0.01 seconds +warning: Can not solve this casting problem exactly; revert to Word_wrap +[2]Time: 0.00 seconds + +Postprocessing elements... +TeX output to twinkle.tex ... +) + +All has gone well; there were some warnings but no errors. The run +resulted in output, a TeX file called file(twinkle.tex). + +file(TeX) is usually spelled TeX(). It is a batch program for +typesetting text. It was developed by the great programmer and +scientist Donald Knuth to typeset his famous bookseries em(The Art of +Computer Programming). As you can see, TeX() can be adapted to do a +lot more. whenlatex(In fact, the document that you are reading now was also +produced with TeX().) COMMENT(ugh.) + + +it() + To do something useful with the output you have to run TeX() on it + first. Run the command code(tex twinkle). The output should resemble this: +verb( +This is TeX, Version 3.14159 (C version 6.1) +(twinkle.tex +Babel <v3.6h> and hyphenation patterns for american, dutch, loaded. +(/home/hanwen/lib/texmf/tex/lilypond/lilyponddefs.tex +(/home/hanwen/lib/texmf/tex/lilypond/dyndefs.tex) +(/home/hanwen/lib/texmf/tex/lilypond/fetdefs.tex +(/home/hanwen/lib/texmf/tex/lilypond/feta20.tex) +(/home/hanwen/lib/texmf/tex/lilypond/lily-ps-defs.tex))) [1] ) +Output written on twinkle.dvi (1 page, 3084 bytes). +Transcript written on twinkle.log. +) + The human translation is ``everything went OK, the result is one + page long, and I put it in file(twinkle.dvi).'' + +it()The file(twinkle.dvi) file is a description of how a piece of +text looks when it is printed. You can view it, or print it. If you +are using a Unix system equipped with X-Windows, then you can issue +the command file(xdvi twinkle) to view the result. If this is not the +case, consult your local TeX() guru on printing and viewing DVI files. +What is in your window should approximately look like this: +mudela()( +\score { + \melodic { + c''4 c''4 g''4 g''4 + a''4 a''4 g''2 + } + \paper { linewidth = 13.\cm; } +} +) + +it() +If you want to print file(twinkle.dvi), you should invoke the command +code(dvips twinkle). Running this command should generate a +PostScript file called file(twinkle.ps). This file can be printed on +any PostScript compatible printer. You should not use any other +tools: the output from LilyPond contains fragments of PostScript which +will not print correctly if you don't use PostScript. If your printer +doesn't understand PostScript, you should check out GhostScript, a +PostScript emulator. +) + + + +The four-pass procedure sketched above is a bit clumsy. Moreover, the +result is pretty crude: the page does not include prettily printed +titles and if you are unlucky, the margins don't come out well. Jan +Arne Fagertun wrote a tool to take the above steps out of your hands, +make neat margins and print titling. The tool is called file(ly2dvi), +and it should be on your system if you use Lily on a Unix platform. +If you use file(ly2dvi), then you can do verb(ly2dvi twinkle.ly ) in +stead of steps 2 and 3. You will feel the real advantage of using +file(ly2dvi) when you add titling to the music. This is something +that we will discuss in bind(Section)ref(tutorial:titling). + + +COMMENT(This document does not cover all of Mudela. Due to technical details, +the precise working of Mudela is coupled to the innards of LilyPond. +If you really want to know all the details, your best bet would be to +get the sources to LilyPond and read the parser and scanner source. +They are in file(lilypond-x.y.z/lily/parser.yy) and +file(lilypond-x.y.z/lily/lexer.ll).) + + + +sect(Chords) + +Up till now we have only considered music that was rather simple. All +the music had notes going in one direction, from left to right, one +note following the other. You might be wondering if this is all Lily +can do, or whether it is possible to stack notes as well (creating +em(chords)). Rest assured: we designed LilyPond while keeping in mind +that she must be able to handle any notation construct that can be +expressed conveniently. Of course we did not leave out chords. + +In Mudela you can form a chord of several notes by enclosing them in +pointed parentheses, bind(i.e.)bind(langle())bind(and)rangle(). ASCII +doesn't really have these delimiters, so Mudela uses the larger-than +(code(>)) and smaller-than (code(<)) signs instead. For example, a +D-major nop(chord)footnote(Recall what was said in the previous +section about flats and sharps: the word code(fis) means an f sharp.) +can be described by the following fragment: +mudela(fragment,verbatim,center)( + <d'8 fis'8 a'8 d''8> +) + + Chords can be entered in the music in the same places that notes +can. As an example we give a snippet of ``Twinkle Twinkle Little +Star'' in chords. The chords may seem, slightly unconventional, but they +only serve to show how chords work. We've aligned the chords +in the input on their starting beat just to help you reading it. +This layout does not influence the typesetting result in any way. + +mudela(verbatim, fragment)( + c''4 c''4 <c''4 g''4> <c''4 e''4 g''4> + <c''4 e''4 a''4> <b'4 d''4 a''4> <b'2 d''2 g''2> + <a'4 d''4 f''4> <bes'4 d''4 f''4> <bes'4 c''4 e''4> <g'4 c''4 e''4> + <e'4 a'4 d''4> <a4 g'4 cis''4> <d'2 f'2 d''2> +) + + + +sect(Shortcuts for duration) + +If you typed the last example into a Mudela file, you will have +noticed that the input has lots of repetitions. You will probably +have made some errors with the right durations and number of +octavation quotes. +To save keystrokes and prevent errors Mudela +has some handy shortcuts. The simplest is the shortcut for +durations. You don't have to type the duration if it +is the same as the last duration entered. This saves a considerable +number of keystrokes, and thus reduces the potential for errors. The +previous example can be reduced to verb( + c''4 c'' <c'' g''> <c'' e'' g''> + <c'' e'' a''> <b' d'' a''> <b'2 d'' g''> + <a'4 d'' f''> <bes' d'' f''> <bes' c'' e''> <g' c'' e''> + <e' a' d''> <a g' cis''> <d'2 f' d''> +) + + +If you entered this, you probably made some little errors with the +right amount of quotes as well. To remedy this, mudela has another +feature called `relative octaves', which reduces the amount of quotes +needed. If you want to enter large pieces of music em(now) we +recommend you make an excursion to +bind(Section)ref(sec:relativeoctaves) and learn about relative +octaves. + + + +sect(Comments) + +If you want to make some private notes about the Mudela code that you +entered, you can do so by inserting comments into your file. The +contents of these comments are ignored by LilyPond. Mudela has two comment +styles: line comments and block comments. The line comment +is introduced by the percent sign: +verb( + c''4 + c''4 % shouldn't this be a different pitch? +) + +Block comments are enclosed in code(%{) and code(%}). + +verb( + c''4 + %{ + Ludwig van Bavaria's original manuscript has an fffff dynamic sign. + Clearly one can see the onset of paranoid schizophrenia in the + composer from these subtle nuances in his writings. + %} + c''4 +) + + +sect(Adding nuances: articulation and dynamics) + +Having just chords and notes does not give you real music. Real music +has more liveliness to it: music can have articulation, dynamics +(louder and softer), etc. This liveliness has notation, so LilyPond +can print it. We'll start out by explaining how to obtain the +smallest grains of nuance: the articulation of a single note. Articulation +is entered by writing a dash and the name of the desired articulation +mark. You have to add a backslash in front of the name to distinguish +it from the name of a note. mudela(fragment,verbatim)( + c''4-\staccato + c''4-\tenuto ) + +Typing a lot of staccato notes in this syntax will get tedious very +quickly. Therefore, Mudela has some handy abbreviations for +articulation marks such as staccato and tenuto. They are shown in the +following example: + +mudela()( +\score{ \melodic { + \property Voice.textstyle = typewriter + c''4-._"c''4-." s4 + c''4--_"c''4--" s4 + c''4-+_"c''4-+" s4 + c''4-|_"c''4-|" s4 + c''4->_"c''4->" s4 + c''4-^_"c''4-\\^{ }" s4 } + \paper { linewidth = 12.\cm; }}) + + +COMMENT(For a full list of supported articulation instructions, refer to the +chapter on features, bind(Chapter)ref(features).) + +Text and digits for fingering can be entered in the same manner: add a +dash and the text or digit to be printed: +mudela(fragment,verbatim)( + c''4-1 g''4-5 c''-"Sul tasto" ) +Currently, the meaning of the +syntax `note-dash-digit/articulation/text' is just ``add a superscript to this +note.'' This is not in line with our goal to em(define) music with +Mudela. We hope that this will be fixed in a future version of the +language. In the meantime you can abuse this: the super- and +subscripts can be forced into up or down position respectively by entering an +a caret (code(^)) or an underscore, code(_) instead of the dash: +mudela(fragment,verbatim,center)( + c'4-^ c'4^^ c'''4-^ c'''4_^ +) + +Dynamic markings are another way to add a nuance to a note. They are +entered by adding the name for the dynamic sign after the note. You +should not enter a dash between the name and the note.footnote(This + is inconsistent. We hope that this will be fixed in a later + version of the language.) +mudela(verbatim,fragment)( + c4 \ff c4 \fp c4 c4 \ppp c4 c4 \sfz +) +COMMENT(UGH) + +sect(Bridging the notes: beams, slurs and ties) + +Up till now most of the typesetting concerned simple fixed symbols +only. Now we turn to variable symbols: symbols that run from one note +to another. In LilyPond terminology, such a symbol is called a +em(spanner). To print a spanner, you have to attach a marker to the +note that begins it and to the one that ends it. + + +The first example of such a symbol is the slur. For the slur, the +start marker is the opening parenthesis. It won't be a surprise that +the stopping marker is the closing parenthesis. +For example: +mudela(fragment,center,verbatim)( c'4( )c'4 ) + +otice that the parentheses should be between the notes.footnote(The +location of the parentheses might be changed in a future version of +the language.) + +It is your job to make sure that each slur that you start also ends. +If it doesn't end, then Bad Things are likely to happen. The slur is +quite flexible: you can nest nop(slurs,)footnote(This is inconsistent when +compared to the syntax for articulation hints. This will probably be +fixed soon.) and you can connect a note with a slur on both the left and the +right side: + +mudela(fragment,verbatim,center)( + c'4(( )c''4 )c'4( )g'4 +) + +Another spanner is the beam (see bind(Figure)ref(mud:beam)). It +indicates the duration of the connected notes, and thus it acts like an +extended version of the flag. Secondly, the pattern of +left/right-pointing beams hints at the metric structure of the +measure. + + +latexcommand(\begin{figure}[h]) + center( + mudela(fragment)([c'8 c'8] [c'16 c'16 c'16 c'16] [c'16. c'32 c'32 c'16.] ) + latexcommand(\caption{Some beams}) + label(mud:beam) + ) +latexcommand(\end{figure}) + + +Strictly speaking, a beam is not a musical concept. The pattern of a +beam can be derived from the structure of the time signature and the durations +of the notes. It is merely a device that helps you understand the +rhythms notated. Unfortunately, LilyPond is not smart enough to insert +beams into your music on her own. You will have to instruct her by +marking the starting and stopping point of the beam with `code([)' and +`code(])' respectively, e.g. + +mudela(fragment,verbatim,center)( + [g'8 g'8] +) + +LilyPond has code that guesses what the pattern should look like, so +that you don't have to specify the beaming for complicated +patterns.footnote(Unfortunately the algorithm used is not foolproof yet: + code([c8. c32 c32]) will produce incorrect results.) + +Again, it is your responsibility to make sure that you end every beam +that you start. + +A third spanner is similar to the slur: the tie. The tie looks like a +slur, but a slur connects whole chords, whereas the tie connects +note heads. Tied notes should be played as one long note. +In analogy with TeX()'s tie (which ties together words with a +space), LilyPond's tie is entered as a tilde, ~. +mudela(verbatim,center,fragment)(c''1 ~ c''4) + +The input convention for the tilde is somewhat peculiar when used in +conjunction with chords. Internally, the extra information that is +represented by the tilde has to be attached to a note (or to a rest, +for that matter). For this reason, you can't put the tilde between +two chords (as in code( <c' g'> ~ <c' g'>)). The tilde sign must be +directly after a note of the chords. It does not matter which +one. The following example demonstrates this: +mudela(fragment,verbatim,center)( + <c'1 ~ g' es''> <c'4 g' es''> +) + +sect(Commands) +label(sec:commands) + +Up till now, we only printed notes, and correspondingly only entered +notes. But notation contains many other constructs, constructs that +help you with reading those notes. Examples of such constructs are +clefs, time signatures, keys etc. + +If you look carefully at the example in +bind(Figure)ref(fig:twinkle1), you will notice that the output +includes some bar lines and clefs, and that there are no references to +those in the input. They were generated automatically. + +Not all such hints can be inserted automatically, and you can also +override some of the settings. This can be done by inserting various +commands between the music. The general form of these commands is +center( + em(keyword) sc(arguments) +) + +em(keyword)s are words that have a special meaning to the parser of +Mudela. Because the parser must be able to distinguish the keywords +from note names, they have to be preceded by a so-called escape +character, the backslash, `code(\)'. To separate the arguments from +any notes that might follow the arguments, you have to end your +command with a semicolon. An added benefit of this construction is +that the commands stand out between your notes, because of the +backslashes. + +So the general form actually is `code(\keyword argument argument ... ;)' +Let us review these commands: + +description( +dit(code(\clef) var(clefname)) This command sets the current clef for notation, + i.e., a clef symbol is printed and the notes following this command + are shifted vertically. The argument is a string, the name of the + new clef. The default clef is the treble clef. + mudela(fragment,verbatim)( + \clef "bass"; c'4 + \clef "treble"; c'4 + \clef "alto"; c'4 + ) +dit(code(\key) var(pitch)) This command changes the current key signature. The + key signature is printed at the start of every line. The argument + is the name of the corresponding major key. The key of C-minor can + thus be specified as `code(\key es)'. + +dit(code(\accidentals) var(pitchlist)) + +This command changes the current key signature. The signature is +given in the form of a list of accidentals, which can be useful for +unconventional keys. The key of C-minor can be specified as +`code(\accidentals bes es as)'. The command `code(\accidentals fis es +bis)' provides a more exotic example. + + +dit(code(\time) var(numerator)code(/)var(denominator)) + This command chages the current time signature. LilyPond uses the + time signature to + calculate where to place the bars that start a measure. These bars + in turn are the places where a system can be broken into lines. + + The default value for this time signature is common time (4/4). You + can also tell this from the Twinkle ``Twinkle Little +Star'' example in bind(Figure)ref(fig:twinkle1). This +song actually has a 2/4 time signature, so a metrically more correct + version would start with as follows: + mudela(fragment,center,verbatim)( + \time 2/4; c'4 c' g' g' + ) + + +dit(code(\cadenza) var(togglevalue)) When typesetting music without a +regular meter (such as an ad libitum cadenza), no bar lines should be +printed. In LilyPond you can achieve this by issuing the command +`code(\cadenza 1)': it turns off the automatically +generated bar lines. + +You switch them on again with `code(\cadenza 0)', and then a bar line +is printed. LilyPond will act as if you are again at the start of a +measure. + +dit(code(\bar) var(bartype)) + This command lets you print special bar lines, such as repeats. You + can also use it to allow line breaks when entering cadenzas. The + argument var(bartype) is a string that describes what kind of bar line to print. + +mudela(fragment,verbatim)( + \bar "|:"; c'4 \bar ":|:"; c'4 \bar ":|"; c'4 \bar "||"; + c'4 \bar "empty"; c'4 \bar "|."; +) + The command `code(\bar "empty")' does not create any visible bar + line, but it does tells LilyPond to allow a linebreak + at that position. + +dit(code(\partial) var(duration)) some music starts with a measure that +isn't fully filled, a so-called upstep. The code(\partial) command +allows you to make +upsteps. The argument is a duration similar to the duration of a note. +Example: + mudela(fragment,verbatim)( + \time 4/4; + \partial 4; + [d'8 dis'] e' c''4 e'8 c''4 + ) + + dit(code(\grouping) var(durationslist)) sets the metric structure of the measure. + Its effect can best be shown by an example: + mudela(fragment,verbatim)( + \time 5/16; + \grouping 16*3 16*2; + [c'8 c'16 c'8] + \grouping 16*2 16*3; + [c'8 c'16 c'8] + \grouping 16*5 ; + [c'8 c'16 c'8] + ) + +In practice, you won't be needing this command very often: the +grouping is switched automatically when you issue a code(\time) +command. It is set to a combination of groups +of 2 and 3 beats, with as many groups of +3 as possible (in other words: 4/4 is divided in two times two beats +(2+2), 8/8 in 3+3+2) +) + +The commands that are described above aren't really music, but they +can be used in the same places as notes. This makes the grammar of the +language simpler. It is possible to put a command into a chord. +For example, the following two snippets of Mudela produce identical output. +verb( + <c4 e g \time 2/4;> + \time 2/4; <c4 e g> +) + + + +sect(Complex music: more than one staff) +label(tutorial:more-staffs) + + +Now we explain how to typeset music that runs in multiple staffs. +Consider the following---somewhat unrealistic---example: + +mudela(fragment)( + \type GrandStaff <e'4 {\clef bass; g4^""} > +) + + The music consists of two notes. Perhaps this is sheet music for a +piano player, and one note is meant to be played with the left hand, +and the other with the right hand. That music would sound the same if +it were written as a single chord on a single staff, i.e., +mudela(fragment)( + <g4 e'4> +) + + +This is another example where we can see that there can be a difference +between a musical idea, and the way it is expressed in notation. + +The Mudela construct for multiple staffs reflects the similarity +between the two examples: to get multiple staffs in Mudela you enter a +chord, with an additional instruction to tell LilyPond that the chord +does not represent notes stacked together, but staffs stacked +together. + +If a piece of music is to be interpreted as a staff, then this can be +expressed with the code(\type) construct. The following input says +``the quarter note with pitch e should be put on a staff.'' + +verb( + \type Staff e'4 +) + +The same can be done for the other note, i.e., + +verb( + \type Staff g4 +) + +If you want to stack these staffs, you must create a chord of both: + +verb( + < \type Staff e'4 + \type Staff g4 + > +) + +This looks reasonable, but the effect of this input is not what you +might expect (try it!). When interpreting this chord LilyPond will +start with the first entry. She'll look for a (nameless) staff. Such a +staff is not found, so it is created. On this staff the code(e) note +is put. When the second code(\type) entry is read, LilyPond will +start looking for a nameless staff. The staff that contains the +code(e) is found, and the code(g) is put there as well. + +The correct solution is to label both code(\type) constructs with +different names, for example code(trebleStaff) and code(bassStaff). +This makes LilyPond distinguish between them, and create two staffs: + +mudela(verbatim,fragment)( + < \type Staff = trebleStaff e'4 + \type Staff = bassStaff g4 + > +) + +The names that you choose do not matter just as long as they are +different. This is almost right, except for the brace at the left and +the clef of the second staff. The bass clef will be taken care of in +the next chapter. If you want a brace, then you have to tell LilyPond +that the chord you just formed is to be interpreted as a so-called +grand staff. This is also done with the code(\type) command. +mudela(verbatim,fragment)( + \type GrandStaff < + \type Staff = treblestaff e'4 + \type Staff = bassstaff g4 + > +) + +sect(Appending instead of stacking: sequential music) +label(tutorial:voice) + +The previous section dealt with a pretty hypothetical situation: sheet +music with two staffs and each staff containing only one single note. +In real-life situations staffs contain more than one note. They +contain music that has to be played in sequence. A staff can contain +a em(voice). We haven't learned how to make a voice yet: we need a +new construct to express this notion of `voice'. + +The construct is called em(sequential) music. A list of musical +objects (e.g., notes, chords or commands) can be made into sequential +music by enclosing the list in braces; for example: + +mudela(fragment,verbatim,center)( + { c'4 c'4 } +) +mudela(fragment,verbatim,center)( + { <c'4 e'> <e' g'> } +) + + +We could have called this construct more colloquially `voice', but +this would cause confusion later on, when a second kind of voice +enters the scene. Similar confusion might arise from the word +`chord', therefore from now on, we will talk about `simultaneous +music', when we refer to items enclosed in < and >. + + +The notion of a em(new) construct needs some explanation: we have been +using sequential music all the time, except that it was hidden in the +red tape in bind(Section)ref(tutorial:introduction). + + + +If we want to put whole voices onto a staff, then we have to +substitute sequential music for the single notes in the example from +the previous section. A code(\clef) command in the second piece of +sequential +music will also set the clef in +the bass staff. +mudela(fragment,verbatim)( + \type GrandStaff < + \type Staff = treblestaff { e'4 f'} + \type Staff = bassstaff {\clef "bass"; g a } + > +) + +COMMENT(You can nest simultaneous music and chords in any way you want. If +you are interested in the entire story, you should consult +bind(Chapter)ref(chap:features), which has a grammar in +bind(Section)ref(sec:grammar).) + +sect(Notation context) + +This section is about translation contexts, a topic of LilyPond that +is somewhat advanced. You don't have to understand this to use +LilyPond to print simple music. If you don't want to typeset fancy +polyphonic music or tweak the LilyPond notation engine, you can skip +the next two sections. + +In bind(Section)ref(tutorial:more-staffs) it was explained, that there +are more ways to notate a simple chord: as a single voice on a single +staff or in multiple staffs (and we'll soon see, that you can typeset +it as multiple voices on a staff). Obviously the concept of staff is not +really something musical. But what is it then? + + +The most simplistic explanation is: a staff is a peculiarity of the +notation system. In other words, a staff is a graphic device, a +special picture of five lines on which one can print note heads. To +avoid confusion, we will call this view on the concept of staff +`staff symbol' from now on. + + +There is more to it than meets the eye and mind. A staff +contains---besides a staff symbol--- some more components: +itemize( +it()A staff can a have a key signature (printed at the left) +it()A staff has bar lines +it()A staff has a clef (printed at the left) +) +To explain what a staff really is, we'll try to print music without +these components. If these components aren't printed, it is still +possible to print music: +mudela()(\score{ +\melodic \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 } +\paper { + linewidth = -1.; + Staff = \translator { + \type "Line_group_engraver_group"; + + defaultclef = violin; + + \consists "Timing_engraver"; + \consists "Separating_line_group_engraver"; + + \accepts "Voice"; + } + } +}) + +As you can see, one can still make out the general form of the melody +and the rhythm that is to be played, but the notation is difficult to +read and the musical information is not complete. The stress pattern +in the notes can't be deduced from this output. For this, we need a +time signature: + +mudela()( +\score { + \melodic \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 } + \paper{ + linewidth = -1.; + Staff = \translator { + \type "Line_group_engraver_group"; + defaultclef = violin; + \consists "Time_signature_engraver"; + \consists "Separating_line_group_engraver"; + \accepts "Voice"; + } + } +}) + +Technically speaking you know where the strong and weak beats are, but +it is difficult to find them quickly. Bar lines help you in finding +the location within the measure of the notes: +mudela()( +\score { + \melodic \relative c' { \time 2/4; g'4 c,4 a'4 f4 e c d2 } + \paper{ + linewidth = -1.; + Staff = \translator { + \type "Line_group_engraver_group"; + defaultclef = violin; + \consists "Bar_engraver"; + \consists "Time_signature_engraver"; + \consists "Separating_line_group_engraver"; + \accepts "Voice"; + } + } +}) + +We can remedy part of the difficulties with reading pitches by adding a staff +symbol: + +mudela()(\score{ + \melodic\relative c' { \time 2/4; g'4 c,4 +a'4 f4 e c d2 } \paper { + linewidth = -1.; + Staff = \translator { + \type "Line_group_engraver_group"; + + defaultclef = violin; + \consists "Bar_engraver"; + \consists "Time_signature_engraver"; + \consists "Staff_sym_engraver"; + \consists "Separating_line_group_engraver"; + + \accepts "Voice"; + } + } +}) + +This makes the output decidedly easier to read, but you still don't +know what the pitches of the notes above are. So this is still not +enough. But suppose you see the following notation: +mudela()(\score { + \melodic \relative c' {\clef alto; \time 2/4; g'4 c,4 a'4 f4 e c d2 } +\paper { + linewidth = -1.; + Staff = \translator { + \type "Line_group_engraver_group"; + + defaultclef = violin; + \consists "Bar_engraver"; + \consists "Time_signature_engraver"; + \consists "Clef_engraver"; + \consists "Staff_sym_engraver"; + \consists "Timing_engraver"; + \consists "Separating_line_group_engraver"; + + \accepts "Voice"; + } + } +}) + +Now you know the pitch of the notes: you look at the start of the line +and see a clef, with this clef, you can determine the notated pitches. +You have found the em(context) in which the notation is to be +interpreted! + +So the context determines the relationship between a piece of music +and its notation: you, the reader, use context to deduce music from +notation. Because LilyPond is a notation ``writer'' instead of a +reader, context works the other way around for Lily: with context a +piece of music can be converted to notation. +The components of a staff form context, and context is needed to read +and write notation. This motivates the following definition. + +quote( +A bf(notation context) is a conversion from music to notation. +) + +The example focused mainly on on staffs, but a staff is not the only +type of notation context. Notation contexts may be nested: you can +print polyphonic music by putting multiple `Voice' contexts in one +`Staff' context. The arguments of the code(\type) command (Staff, +GrandStaff) were in fact all names of different contexts. +The notions of ``current clef'' and ``current position within the +measure'' are all properties of notation contexts. Commands like +code(\clef) and code(\cadenza) change these properties. + + +The following is a list of the contexts that are supported by +LilyPond: +description( + +dit(Voice) The code(Voice) context is a context that corresponds to a + voice on a staff. This context handles the conversion of noteheads, + dynamic signs, stems, beams, super- and subscripts, slurs, ties and rests + +dit(Staff) The code(Staff) context handles clefs, bar lines, keys, + accidentals. A code(Staff) context can contain multiple code(Voice) + contexts. + +dit(RhythmicStaff) The code(RhythmicStaff) context is like the staff, + but much simpler: the notes are printed on one line, and pitches are + ignored. code(RhythmicStaff) can contain code(Voice) contexts. + +dit(GrandStaff) A code(GrandStaff) context contains code(Staff) + contexts, and it adds a brace to the output at the + nop(left.)footnote(This is a major deficiency in the current + implementation. Currently stems, + slurs and beams cannot be printed across two staffs. +In reality, a grand staff is a hybrid of one big staff and two stacked staffs.) + + A code(GrandStaff) context can contain multiple + code(Staff)s. Typically, it will contain two code(Staff)s, one + treble staff, and one bass staff. The bar lines of the contained + staffs are connected vertically. + +dit(StaffGroup) A code(StaffGroup) context contains code(Staff) or + code(Lyrics) contexts, and prints a bracket at the left. The bar + lines in the participating staffs are connected. + +dit(Lyrics) As its name suggests, The code(Lyrics) context deals with + typesetting lyrics. This topic will be covered in + bind(Section)ref(tutorial:lyrics). + +dit(Score) The code(Score) context is the toplevel context: no context can + contain a code(Score) context. The code(Score) context handles the + administration of time signatures. It also makes sure that items + such as clefs, time signatures, and key-signatures are aligned across staffs. + + The code(Score) can contain code(Staff), code(StaffGroup), code(Lyrics), code(GrandStaff) and + code(RhythmicStaff) contexts. + +COMMENT(do ChoireStaff) +) + + + Later on, in bind(Section)ref(tutorial:engravers) we will +explain how you can create your own contexts. + +If you are familiar with structured documents (like HTML, SGML or +LaTeX()), you might see the analogy of a context with a stylesheet: a +stylesheet is neither presentation nor information, but rather a +recipe em(how) a specific piece of information should be presented. +Analogously, a notation context is neither music nor notation, but the +conversion between the two. The big difference with text is that in +music notation the elements provided by context are essential to +understanding what is notated. + + + +sect(Polyphonic music (or: Notation context properties)) + +In the last section we explained that a notation context can have +properties that influence the conversion from music to notation. A +simple example of such a property is the clef: the type of clef partially +determines the vertical position of note heads in a staff. Some of +these properties can be modified by commands such as code(\clef) and +code(\time). But there is more: notation contexts also have +properties are settable in a generic fashion. We will demonstrate +this feature by printing multiple voices on a staff. + +In polyphonic (keyboard) music and orchestral scores often more than +one voice is printed on one staff. We'll explain how to achieve this +effect with LilyPond. The effect is not unlike the two stacked staffs +from bind(Section)ref(tutorial:more-staffs), except that we don't want +to stack staffs but voices. Thus, the general template is the following: +verb( + \type Staff < + \type Voice = one ... + \type Voice = two ... + > +) + +On the ellipsis there should be music going from left to right, in +otherr words, there should be sequential music, notes enclosed in +braces. Let us try the following simple melodies: + +mudela(fragment,verbatim)( +\type "Staff" < + \type "Voice" = "one" { r4 as'4 () as'4 g'4 } + \type "Voice" = "two" { g'2 f'4 e'4 } +>) + +As you can see the result is not quite perfect. The notes on the last +two beats look like plain chords and not like separate voices. What +really happened was that the stems of the upper and lower voices were +printed on top of each other. If you have tried running this example, you will probably +have noticed a complaint about ``too many +clashing notecolumns'' during the LilyPond run. +This complaint refers to the overlapping stems. + +To remedy this, engravers traditionally make the stems of the upper +and lower voice point in different directions: the stems of the lower +voice point down, and the stems of the upper up, as shown in +bind(Figure)ref(tutorial:multi-voice-fig). + +Surely the direction of a single stem is a property of the stem as a +graphical object. But the fact that all of the stems in a voice point +in the same direction is not directly graphical. Since this is a +property shared by all the stems in the voice, it is logical to +consider this property to be a property of the context code(Voice). +And this is how it's done in LilyPond: the context code(Voice) has an +attribute whose value is the direction to use +for stems. You can change it to `up' +by issuing the following phrase:footnote(The name code(ydirection) is +no mistake. The property also controls the up/down directions of +super-/subscripts, slurs, ties, etc.) + +verb( + \property "Voice"."ydirection" = "1" +) + +This command should be read as ``change the property called +code(ydirection) within the current code(Voice) context to the value +code(-1).'' For the property code(ydirection) the value code(1) means +`up', and code(-1) means `down'. The proper way to code the +polyphonic example is given in bind(Figure)ref(tutorial:multi-voice-fig). + +latexcommand(\begin{figure}[h]) +mudela(fragment,verbatim,center)( + \type "Staff" < + \type "Voice" = "one" { + \property Voice.ydirection = "1" + r4 as'4 () as'4 g'4 } + \type "Voice" = "two" { + \property Voice.ydirection = "-1" + g'2 f'4 e'4 } + > +) + latexcommand(\caption{multiple voices}) + label(tutorial:multi-voice-fig) +latexcommand(\end{figure}) + +Other properties can also be set, and they can be within different +contexts. In general, you can set a property by specifying +code(\property) var(contexttype)code(.)var(propertyname) code(=) +var(value). Both var(ContextType), var(PropertyName) and var(Value) +should be strings. + +The effect of a property is pretty much hardwired into the +implementation (and thus subject to change), so we will not deal with +all the possible properties in detail. Among other characteristics that +can be set are the layout of slurs and beams. The initialisation file +file(property.ly) explains most properties. + +We conclude this section with another example of a context property. +Polyphonic music that has three or four voices can't be printed by +simply changing the directions of the stems for each voice, obviously. +Traditionally, some chords are shifted horizontally to print if this many +voices have to be printed. +LilyPond can also do this, and the property that controls the +horizontal shifting is called code(hshift). The notes in a +code(Voice) context that has code(hshift) set to a true value (i.e., +non-zero or non-empty), will be shifted horizontally in the case of a +collision. The following example demonstrates the effect. + +mudela(fragment,verbatim)( + \type "Staff" < + \type "Voice" = "one" { + \property Voice.ydirection = "1" + r4 as'4 () as'4 g'4 } + \type "Voice" = "two" { + \property Voice.ydirection = "1" + \property Voice.hshift = 1 + g'2 f'4 e'4 } + \type "Voice" = "three" { + \property Voice.ydirection = "-1" + [d'8 dis'] [d' cis'] [c' b] c'4 + } + > +) + +sect(Lyrics) +label(tutorial:lyrics) + +Now for something completely different: Lyrics. Lyrics are also +considered to be music, although a lyric by itself does not have any +pitch. Producing lyrics has two aspects. First, you have to enter the +text, i.e., the syllables along with their durations. +After this, you have to specify how to convert these to graphics. + +Lyrics consist of syllables, which are strings together with +durations. Previously we only entered note names, so for entering +lyrics we have to instruct LilyPond that what we enter are not note +names but words---or rather: strings. This instruction is the keyword +code(\lyric). After entering this keyword you can enter a musical +construct---sequential music, simultaneous music, code(\type) +entries, etc.--- but with syllables in stead of pitches. For example: +verb( \lyric { 'got8 me on my knees4, Le-8 lie! }) + +The effect of code(\lyric) can be compared with the effect of the +doublequote character, code("), for it also changes the lexical +meaning of spaces and characters. This mode is another example of a +handy input feature of the language. + +Next comes the conversion to notation. LilyPond can't (yet) figure +out that lyrics need different treatment than notes. As a result, the +default conversion will try to put the text you entered as note heads +onto a staff, and this will fail. This default must be overriden with +a code(\type) keyword. Printing syllables of text in a line is done +by a context called code(Lyrics). You can select this context with +the code(\type) keyword. Here is a simple example: + +mudela(fragment,verbatim)( + \type Lyrics \lyric { 'got8 me on my knees,4 Le-8 lie! }) + +The result is technically more or less correct, but without a melody it +just doesn't work, so let's add a blob of cream: +mudela(fragment,verbatim)( + < + \type Staff { c''8. c''16 bes'8. a'16 g'4 f'8 g'4. } + \type Lyrics \lyric { 'got8. me16 on8. my16 knees,4 Le-8 lie!4. } + > +) + +The strings that makes up each syllable in the lyrics block are passed +along to TeX() verbatim, so if you are proficient with TeX() you can +do various nifty things. Just keep in mind that a syllable either +starts with a letter (a character in the range `code(a)' to `code(z)' +or `code(A)' to `code(Z)'), or it is a string enclosed quotes. It ends +with either a number for the duration, or a space. A last feature +that should be mentioned is the space-lyric: if you want to enter +a single ``syllable'' that consists of multiple words, i.e., words +separated by spaces, you should use an +underscore instead of a space. All these tricks are demonstrated in +the following example: + +COMMENT( urg +\type Lyrics \lyric { 'got_m\textbf{e}4 on8. m$\cal_Y$16 knees,4 Le-8 lie!4.} +\type Lyrics \lyric { 'got_m{\bf e}4 on8. m$\cal_Y$16 knees,4 Le-8 lie!4.} +) + +mudela(fragment,verbatim)(< + \type Staff { c''8. c''16 bes'8. a'16 g'4 f'8 g'4. } + \type Lyrics \lyric { 'got_me4 on8. m$\cal_Y$16 "3s,"4 Le-8 lie!4.} +> +) + +The spacing in the above example is a bit skewed because Lily can't +tell that the long syllables you entered are not ordinary characters, +but expand to really small symbols. + + + + +COMMENT(Rood is de kleur van geluk.) +COMMENT(Dat geldt ook voor haar.) + + +sect(Toplevel Mudela) + +Now the time has come to unravel the red tape that we have hidden from +you in the introduction. Mudela has a hierarchical structure for we +have seen that sequential and simultaneous music can be nested. +Mudela also has other `blocks' that can be nested. The general syntax +for a block is code(\keyword { ... }). + +When you run LilyPond, what happens is that you define music, and +specify one (or more) conversions to apply to that music, for example +a conversion to notation. This is done by putting the definition of +the music and the definition of the conversion together in a +code(\score) block, e.g., +verb( +\score { + % ... music ... + \paper {} +}) + +This is almost the context that should be around all +of the previous examples. The precise context reads thus: +verb( +\score { + \melodic { ... } + \paper {} +}) +On the ellipsis, you entered what shown as the example input. +You can see that in the +above example, the code(\melodic { ... }) forms the music, the +code(\paper {}) is a conversion to paper (notation, that is). The +code(\paper) definition is copied from a default definition +(which is in the initialisation file file(paper16.ly)). +The paper part also contains +the definition of the contexts. + +The keyword code(\melodic) is analogous to the code(\lyric) keyword. It +will switch the tokenizer into a mode that interprets plain words as +note names. If it can't recognize the words as a note name, it will +assume that they are strings. That is the reason why you can write +code(\clef bass) in stead of code(\clef "bass"); most of the strings +in code(\melodic) mode can be written without quotes. + +The braces that you see after the code(\melodic) keyword are the +braces that are around sequential music. Because of these braces, the +sequences of notes in our simple examples were sequential (and not +simultaneous). As a result the notes were printed from left to right, +and not stacked. + +sect(Identifiers) + + +Now that we are comfortable with the toplevel entries in a mudela +file, we can investigate some more of the recreations on toplevel, in +particular em(identifiers). Generally you can define an identifier by +entering code(identifierName = ... ) +where there can be a variety of things on the ellipsis. + +Here is a (partial) list of what you can abbreviate with identifiers +at top-level. +itemize( +it()The code(\score) block +it()The code(\paper) block +it()The code(\midi) block (to be explained in + bind(Section)ref(tutorial:sound)) +it()Music (sequential music, simultaneous music etc.) +it()Durations +it()Strings +it()Translators (to be explained in bind(Section)ref(tutorial:engravers)) +it()Integers +it()Reals +) + +When you refer +to the abbreviated entity, you must precede code(identifierName) +with a backslash, i.e., code(\identifierName). For example: +mudela(verbatim)( + czerny = \melodic { [c16 g e g] } + \score { + \melodic \type GrandStaff < + { c''2 g''2 } + { \clef bass; \czerny \czerny \czerny \czerny} + > + \paper { + linewidth = -1.0; + stem_length = 12.0*\internote; + } + } +) + + + +Another interesting feature of this example are the assignments within +the paper block. Some blocks, such as code(\paper), have a scope of +their own. In the case of the code(\paper) block, these variables +influence the characteristics of the output. As is shown, you can +tune quantities like the stemlength, and enter simple expressions. +The purpose of the negative linewidth is to prevent the music from +being justified. The identifiers that are meaningful are for the +paper block is strongly implementation dependent, so they will not be +listed here. Moreover, since most of the values are predefined to +sensible defaults, there usually is no need to tune these values. + +Recall the properties of a context, that could be set with +code(\property). It is a very general mechanism to tune the output of +the music, that is neatly separated from the real music. +Unfortunately, it is not convenient to type or read, and the precise +effect of a setting property isn't always apparent from its +definition. To remedy this, we can use an identifier to capture the +meaning of a code(\property). + +mudela(verbatim)( +stemup = \property Voice.ydirection = "1" +stemdown = \property Voice.ydirection = "-1" +shift = \property Voice.hshift = "1" +\score { + \type "Staff" \melodic < + \type "Voice" = "one" { + \stemup + r4 as'4 () as'4 g'4 } + \type "Voice" = "two" { + \stemup + \shift + g'2 f'4 e'4 } + \type "Voice" = "three" { + \stemdown + [d'8 dis'] [d' cis'] [c' b] c'4 + } + > + \paper{ linewidth = -1.0\pt; } +} +) + +Several abbreviations like code(\stemup) are defined in the +standard initialisation file file(property.ly). Setting or changing +context properties can have a similar effect as the commands that were +discussed in bind(Section)ref(sec:commands). Don't be fooled by the +similarity in appearance between a declared property-setting entry +and a real command. Real commands are hardcoded into the language +and they have to be terminated by semicolons. + +You can also use identifiers to break up the heavy nesting that can occur +in the code(\score) block. Another useful application is +parametrisation of the music: if you use identifiers in the +code(\score) block, you can make variations of the music by simply +redefining those identifiers. One particular application of this is +part extraction: by using identifiers and redefining them, one can +print extracted parts and a full orchestral score from the same +music definition. + + + +sect(Sound output) +label(tutorial:sound) + +You get output by combining music with definition a conversion to +output. Up till now we have only focused on the graphic output of +traditional engraving. But there is no reason why that should be the +only form of output for music. LilyPond currently supports one other +conversion: the conversion from abstract music to sound. You can have +LilyPond play the music that you entered. The format that is used +for this output is MIDI. + +The only information that you need to enter is the + nop(tempo)footnote(Unfortunately, +this the only thing that can be tuned at this +time. This is a limitation: the tempo of music can vary throughout +the music.) for the performance. The syntax for the tempo is +code(\tempo )var(duration) = var(beatsperminute);), for example: +verb( +\score { + ...music... + \midi { \tempo 4 = 76; } +} +) + +The most useful purpose of this sound output is to prooflisten your +files: typing errors (especially if they involve accidentals) stand +out when you listen. +The output was implemented in a very rudimentary manner, so it is +probably not worth listening to for any other reason. + + +sect(Contexts revisited: engravers) +label(tutorial:engravers) + +As was promised, we will now take a dive into the more wizardrous parts +of LilyPond: redefining (notation) contexts. We previously explained +that a context +itemize( +it()is a conversion from music to notation, +it()can contain other contexts +it()handles specific notation constructs +) + +This characterization almost automatically explains what the definition of a +context should look like: +itemize( +it()It should be part of the ``notation output definition,'' i.e., the + code(\paper) block +it() + It should contain a specification of what other contexts may be contained + in the context we're defining. +it() + It should contain a list of the notation constructs to be + handled. +) + +In practice, the context definition +looks like this: +verb( +\translator +{ + \type "Engraver_group_engraver"; + \accepts "..."; + \accepts "..."; + \accepts "..."; + + \consists " ... "; + \consists " ... "; + \consists " ... "; + + propertyname = "value"; + propertyname = "value"; + +} ) + + This is encoded by the + +The code(\translator) keyword opens the block for translation (or +context) definition. The code(\type) keyword explains to Lily that +the context should be formed by taking an (empty) instance of +code(Engraver_group_engraver). The code(Engraver_group_engraver) is a +C++ class from the source code to Lily. The code(\accepts) entries +explain what kind of contexts this context could contain. If we were +to define a context for a staff, the definition would typically +contain code(\accepts "Voice";). + +The code(\consists) entries specify which notation constructs should +be handled. This needs a little explanation: LilyPond contains the +code for quite a large number of basic building blocks for notation +generation, and each building block handles only one notation +construct. The name of such a building block is `engraver'. You can +specify which notation construct a context should handle by specifying +which engravers should be part of the context. The code(\consists +"Foobar") entry really means ``add an instance of code(Foobar) to the +translation group.'' + + +For example if this context should print time signatures, the definition +should include `code(\consists "Time_signature_engraver";)'. Again +code(Time_signature_engraver) is a class from the source code of LilyPond. + + + +Finally, one can pre-set some properties in a context definition. + +As a practical example, we will show you how to typeset polymetric +music, i.e., music where the meter can differ for each staff. The +solution is not very complicated: normally all timing information +(time signature, rhythmic grouping) is synchronised across each staff. In +LilyPond this is expressed by having only one registration for timing +information for all staffs. To be precise, there is only one +code(Timing_engraver), and it is located in the top level context, the +code(Score) context. + +All staffs use the information in the global code(Timing_engraver) +for generating bar lines and time signatures. In polymetric music, this timing +information can be different for every staff, so we should redefine +the code(Staff) context to include and the code(Score) context to exclude the +code(Timing_engraver). + +mudela(verbatim)( +polymetricpaper = \paper { + Score = \translator { + \type Score_engraver; + \consists "Score_priority_engraver"; + \consists "Priority_horizontal_align_engraver"; + \consists "Vertical_align_engraver"; + % \consists "Timing_engraver"; % removed Timing_engraver + \accepts "Staff"; + } + + Staff = \translator { + \type "Line_group_engraver_group"; + + defaultclef = violin; + + \consists "Bar_engraver"; + \consists "Clef_engraver"; + \consists "Key_engraver"; + \consists "Local_key_engraver"; + \consists "Time_signature_engraver"; + \consists "Timing_engraver"; % added Timing_engraver + \consists "Staff_sym_engraver"; + \consists "Separating_line_group_engraver"; + + \accepts "Voice"; + } +} +\score { + \melodic < + \type Staff = one { \time 2/4; c'4 c'4 c'4 c'4 c'4 c'4 } + \type Staff = two { \time 3/4; c'4 c'4 c'4 c'4 c'4 c'4 } + > + \paper { \polymetricpaper + linewidth = -1.; + } +} +) + +As you can see, we used the identifier code(polymetricpaper) to break +up the large score block. More of these context definitions appear in +the standard initialisation file file(engraver.ly). + +sect(Urtexts and context selection) +label(tutorial:urtext) + +In bind(Section)ref(tutorial:more-staffs), we have shown you how to make +multiple staffs, and explained that you have to label every staff (or +more precisely: different contexts), to make sure that new ones are +created when you need them. In this section, the real power of this +mechanism will unveiled. + +By naming other contexts that you create, you can reference other contexts +than the current context from within the music. For example, from within the music that you +enter for staff code(One), one could enter a small piece of music, +and send it to staff code(Two), e.g., +mudela(fragment,verbatim)( + < + \type Staff = one { c''4 \type Staff = two { c4 c4 } c''4 } + \type Staff = two { \clef bass; g,4 g,4 g,4 g,4 } + > +) + + +Another useful application of this feature is making Urtexts. +em(Urtext) is the German word for `original text'. The Urtext +edition of a piece of music, is an edition that reflects the original +writing of the composer. Such editions are useful for musicologists, +and performers that want to perform authentic interpretations. However, +for mere mortals, the Urtext can be quite hard to read. It might not +contain fingering and beaming, and typically it is full of footnotes. +Moreover, common interpretations may have emerged---after the composer +died. For this reason, the music that can be had as Urtext usually is also +available in enhanced and edited editions. + +The mechanism of context selection can be used to fabricate an Urtext +and an edited edition from em(one source). We will use the first few +bars of bind(J.)bind(S.)Bach's lovely Cello suite bind(no.)I to +demonstrate this. The example makes heavy use of space rests: a space +rest is a like a rest that doesn't print anything. It can be used as +a placeholder, to attach articulation marks to. It is entered as a +note with the name code(s). + +mudela(verbatim)( + bach = \melodic { [c16 g e' d'] [e' g e' g] } + + staffStuff = \melodic { \clef bass; \time 4/4; s1 \bar "|."; } + + slursOne = \melodic { s16( s s s s16 s s )s } + slursTwo = \melodic { s16-. s s() s s16() s s ()s } + + \score{ + { < \type Voice = celloVoice { \bach \bach } + \type Voice = celloVoice { \slursOne \slursOne } + \staffStuff + > + < + \type Voice = celloVoice { \bach \bach } + \type Voice = celloVoice { \slursTwo \slursTwo } + \staffStuff + > + } + \paper {} + } +) + + The slurs that you define should be put on the music that is defined +by the code(\bach) identifier. By labeling a code(Voice) context, and +directing both the articulation and the notes to that same code(Voice) +context, the articulation is put over the right notes. + + +sect(Transposing) +label(tutorial:more-grammar) + +COMMENT(In this section, we will complete the grammar for Music that was +sketched earlier. ) +One of the things that you can do with music is +em(transposing) it. If you want to transpose a piece of music, then +you should prefix the keyword code(\transpose) along with the pitch +(relative to the central C) for the transposition.footnote(the +code(\type Staff) is to make sure that no separate staffs are created +for the code(\scale) and code(\transpose cis' \scale) part.) + + +mudela(verbatim)( +scale = \melodic \relative c' { [c8 d e f] } +\score { + \melodic { + \type Staff { \scale \transpose cis' \scale } + } + \paper { linewidth = -1.0; } +}) + + +sect(Staff switching) + +We have seen that contexts can be nested. This means that they form a +tree. It is possible to edit this tree: for example, a code(Voice) +context can be taken out of a code(Staff) context, and put into +another. This has the effect of the voice switching staffs (something +that often happens in keyboard music). The syntax for this operation +with these particular contexts is code(\translator Staff = newStaffName). + +The effect is analogous to the first example in section +ref(tutorial:urtext), but with the code(\translator) construction it +is possible to split the real music and the commands that determine in +which staff the music is printed. For example: + +mudela(verbatim)( + +% real music +aVoice = \type Voice = voiceA \melodic { c''4 c4 c4 c''4 } +bVoice = \type Voice = voiceB \melodic { g,4 g,4 g,4 g,4 } + +% staff switching stuff +switch = \type Voice = voiceA \melodic { s4 \translator Staff = staffB s4 + s4 \translator Staff = staffA s4 } + +\score { + < + \type Staff = staffA < \aVoice \switch > + \type Staff = staffB < \bVoice \clef bass; > + > + \paper { linewidth = -1.; } +} +) + +Don't try to switch staffs when you are in the middle of a slur or +beam, though. It doesn't work yet. + +sect(Hairy durations: triplets) + +In the previous section we explained an operation that changes the +pitches of music, transposition. In this section we will explain an +operation that modifies the duration of the notes that you enter. +When notes are part of a triplet, then the real of duration of the +notes are 2/3 part of what their shape indicates: +mudela(fragment)( +\[/3 c'4 c'4 c'4 \]/1 +) + +To support this notion, Mudela allows you to modify the duration of a +note by multiplication or division. A code(c'4) note that would be in a +triplet is written as code(c'4*2/3). If you sequence a few of these +notes, you get a triplet.footnote(We added a normal staff in the example to +show the difference.) +mudela(fragment,verbatim)( +< \type Staff = staffA { c'8*2/3 c'8*2/3 c'8*2/3 c'4} + \type Staff = staffB { c''8 c''8 c''4 } >) + +LilyPond knows that these notes are no normal eighth notes, but the +reader doesn't yet. To help the reader a beam or a bracket with a `3' +should be printed. The special beam command `code([2/3)' and the +matching close beam `code(]1/1)' will take care of that, and +they also abbreviate the code(*2/3) part. If you want brackets in +stead of beams, you can use `code(\[2/3])' and `code(\]1/1)'. +mudela(fragment,verbatim)( +< \type Staff = staffA { + [2/3 c'8 c'8 c'8 ]1/1 + \[2/3 c'8 c'8 c'8 \]1/1 + } + \type Staff = staffB { [c''8 c''8 c''8 c''8] } +>) + +Other tuplets can be entered in the same way. +mudela(fragment,verbatim)( +< \type Staff = staffA { + \time 7/8; + [7/6 c'8 c'8 c'8 c'8 c'8 c'8 ]1/1 + } + \type Staff = staffB { + \time 7/8; + [c''8 c''8 c''8 c''8 c''8 c''8 c''8] } > +) + +For your convenience, code([2/3) can be further abbreviated to code([/3), and +you can abbreviate code(]1/1) on the closing beam marker to code(]/1). + +mudela(fragment,verbatim)( +< \type Staff = staffA { + [/3 c'8 c'8 c'8 ]/1 c'4 + } + \type Staff = staffB { [c''8 c''8] c''4 } > +) + + +bf(Important) the construct with code([/3) and +code([/1) is a hack that sets a mode in the parser. This means that +verb(id = \melodic { c8 c8 c8 } +notATriplet =\melodic { [2/3 \id ]1/1 }) +does not produce a triplet. It will hopefully +soon be replaced by a construction that mixes more elegantly with the +grammar for Music. + + +sect(Shortcuts for octaves) +label(sec:relativeoctaves) + +Plain Mudela contains a lot of quotes to get the octaves right. This +need for quotes can be reduced: most of the pitch intervals in +conventional music are small. Therefore, it makes sense to leave out +the quotes when the interval is small. We have built a mode that does +exactly this. It is called the relative mode for octaves. You can +switch it on by entering code(\relative). Then LilyPond will +interpret every note as if they mean the note with the same name +closest to the previous. You have to specify the first pitch because +the first note of a list obviously has no predecessor. So, you can +enter a scale without using octavation quotes, e.g., + +mudela(fragment,verbatim)( + \relative c' { c d e f g a b c } +) + +For chords, the relative mode works slightly differently. In a +sequence of chords, the first note of a chord gives the starting point +for the next chord. We can demonstrate this with our twinkle twinkle example +verb( + \relative c' { + c4 c <c g'> <c e g> + <c e a> <b d a'> <b2 d g> + <a4 d f> <bes d f> <bes c e> <g c e> + <e a d> <a, g' cis'> <d2 f d'> + } +) + +LilyPond converts any music with code(\relative) prepended to absolute +music immediately when it is read. Internally it is stored it in +absolute pitches. Since the tutorial mainly deals with how to specify +musical information, and not how to enter it conveniently, the +tutorial doesn't use it. + + +sect(Large pieces) +label(tutorial:large-pieces) + +In our quest for a clean and powerfull music language, we took the effort +of entering some larger pieces of music as well. From this we learned +certain things that lead to direct improvements of Mudela, such as the +relative mode. We also gained some practial experience, that resulted in a +compilation of tips that may be of use to you. + +Entering a large piece of music will often imply the need to produce a +conductor's score, as well as individual parts for all instruments. This +can most easily be achieved making use of identifiers and including mudela +files. + +subsect(Identifiers) + +Briefly introduced before, identifiers are your biggest help in structurising +a large piece of music. As an example, we'll consider a string quartet. +In short, it will look like this: verb( + global = \melodic{ } + violinoOne = \melodic \relative c { .. } + violinoTwo = \melodic \relative c { .. } + viola = \melodic \relative c { .. } + violoncello = \melodic \relative c { .. } +) + +The code(\global) part contains everything that is global, i.e., the +same, for each instrument. This may include time signature, key, repeat +signs, different bar types, time signature- and key changes, rehearsal +marks, etc. + +For each instrument, you'll have something vaguely resembling verb( + violinoOneStaff = \type Staff = violinoOne < + \property Staff.midi_instrument = "violin" + \property Staff.instrument = "Violino I" + \property Staff.instr = "Vl. I" + \global + \violinoOne + > +) + + +[Versions, relative mode, + barchecks, splitting of files] + +subsect(Including Mudela files) +ref(subsect:include) + +You can include other Mudela files with the command code(\include): +verb( +\include "paper13.ly" +\score { + ... + \paper { \paper_thirteen } +}) + +The file is looked for in the standard search path. + + +subsect(Grouping of staffs) + +subsect(Versioning) + +sect(Titling) +label(tutorial:titling) + +A piece of sheet music isn't complete without proper opening and +closing titles. LilyPond does not have any real support for setting +text: that is a job best left to TeX(). But you can pass messages to +TeX() from the input file. You can write TeX() macros to handle +these messages. +To do this, you add a code(\header) block +to your input file. The format is quite simple, + +verb( +\header{ + "key" = "value"; + "key" = "value"; + "key" = "value"; + % etc. +}) + +When the results of the music typesetting are output, the contents of +code(\header) are also up into the TeX() file. Tools like +code(ly2dvi) can use this information to generate pretty titling for +your input file. Consult the manual page of code(ly2dvi) for more +details. + + +The code(\header) block should be at toplevel in mudela, and +preferably at the top of the file. If you have an input file with +multiple code(\score) blocks, you should add a header to every score, +describing the different sub parts of the music piece, eg. + + +verb(\header { + "composer" = "Ludwig Van Bavaria"; + "title" = "Symphonie Megalomane"; + } + \score{ + ... % some music + \header { movement = "Mit roher Kraft wild herausfahrend!"; } + \paper { } + } + \score{ + ... % some more music + \header { movement = "Saut\'e comme un oeuf."; } + \paper { } + } +) + +If you want you can also put the code(\header) block at the top of the +input file; it will then be put into every output file automatically. +This will make it clear what the file contains as soon as you open it. + + + +chapter(Features) +label(features) + +bf(This document is not up to date). All rendered examples of course +are current, but the rest probably isn't. Adjusting the tutorial was +considered more important than writing the reference manual. We +apologize for the inconvenience. + + +This document describes the the GNU LilyPond input format, which is an +effective language for defining music. We call this language (rather +arrogantly) The Musical Definition Language or Mudela, for +short.footnote(If anybody comes up with a better name, we'd gladly + take this. Gourlay already uses Musical Description Language, + G-Sharp Score Definition Language. ISO standard 10743 defines a + Standard Music Description Language. We're not being original here.) + +The first aim of Mudela is to define a piece of music, being complete +from both from a musical typesetting, as from a musical performing +point of view. + +The Musical Definition Language (Mudela), has a logical structure, +making use of identifiers, that allows for flexible input, and +definition reuse. See the documentation file file(MANIFESTO), included +with the LilyPond sources for reasons and design considerations. + +The below is included for explanatory purposes only (i.e., for a +complete and up-to-date definition, see file(lily/parser.yy) and +file(lily/lexer.ll)). + +As a related note, you should take a look at the examples and the init +files, as this document does not cover every aspect of Mudela yet, and +may be out of date.footnote(Ok, I am being pessimistic here. This +just is a disclaimer. Docs usually are written after the program +itself.) This document intends to give an idea of how it works. It is +not a guide on how to use it. + +sect(Files) + +The de-facto extension of Mudela is file(.ly). Files may be included by +entering code(\include) at the start of a line: + +verb( +\include "a_file.ly" +) + + +sect(Comments) + +Line comments are introduced by a +code(%). +Block comments are delimited +by +code(%{) +and +code(%}). +They do not nest. + + +sect(Versions) + +Occasionally, small changes in syntax across different versions of +Mudela might give syntax errors. To warn you about possible +incompatibilities, you can specify the Mudela version for which the +inputfile was written, +verb( +\version "0.0.50"; +) + +A Python-script which tries to convert to newer versions +(file(convert-mudela)) is included in the LilyPond distribution. + +sect(Keywords) + +Keywords are preceded by a backslash: code(\). They contain +alphabetic characters only. + + +sect(Nesting characters) + +Mudela uses the brace, `code({)' and `code(})' for most hierarchical +structures. For chords the code(<) and the code(>) are used as +nesting braces. + +sect(Constants) + +verb( +"I am a string" +-1.2e3 % a real +12 % an int +) + + +sect(Identifiers) + +When assigning identifiers you use + +verb( +string = ... +) + +If you reuse identifiers, then the previous contents will be thrown +away after the right hand is evaluated, e.g. +verb( +bla = \melodic { \bla } +) +is legal + +When using identifiers they have to be escaped: + +verb( +oboe = \melodic { ... } +\score{ \melodic { \oboe }} +) + +The left-hand part of the assignment is really a string, so +verb( +"Foo bar 4 2 " = \melodic { .. } +) + +is also a valid assignment (but you would have trouble referencing to it) + + +sect(Hierarchical structures) + +The general structure consists of declarations: +verb( +IDENTIFIER = \TYPE{ + <type specific data> +} +) +and instantiations: + +verb( +\TYPE{ <type specific data> } +) + +(Currently, code(\score) is the only type that can be instantiated +at top level.) + +Most instantiations that use an IDENTIFIER are specified as follows: + +verb( +\TYPE{ \IDENTIFIER [...] } +) + +Some exceptions on this rule have been made to prevent inputting +Mudela becoming tedious + +sect(Modes:) + +To simplify different aspects of music definition (entering the notes +and manipulating them) Mudela has a number of different input "modes": + +description( + + +dit(Normal mode) + +At the start of parsing, Mudela assumes normal mode. +In Normal mode, a word is looked up in the following order: +description( +dit(code(word)) string +dit(code("string")) string +dit(code(\word)) keyword, identifier +) +In normal mode, a word is assumed to start with an alphabetic +character, followed by alpha-numeric characters. + +dit(Note mode) Note mode is introduced by the keyword + code(\melodic). In Note mode, a word is looked up in the following + order: +description( +dit(code(word)) notename, string +dit(code("string")) string +dit(code(\word)) keyword, identifier +) + +In Note mode a word is considered to have alphabetic characters only, +so the underscore (_) is invalid. If you accidently mistype a +notename, the parser will assume that you are entering a string (and +it will most likely complain that you should be in code(\lyric) mode to +do lyrics) + + +dit(Lyric mode) Lyrics mode is introduced by the keyword + code(\lyric). Because of the various control characters that can + appear in lyrics, e.g., foreign language accents, the inputting a + string containing these has been made very easy. + +In Lyrics mode, a word is looked up in the following order: +description( +dit(code(word)) string (thus a lyric) +dit(code("string")) string +dit(code(\word)) keyword, identifier +) + +In Lyric mode every sequence of non-digit and non-white characters +starting with an alphabetic character or the _ is considered a word. + +verb( +a&@&@&TSI|{[ % a word +1THtrhortho % not a "word" +Leise DOEXPAND(Fl\)DOEXPAND("u\)ss{}teren meine Sapfe % 4 words +_ _ _ _ % 4 words: 4 spaces +) +) + +These modes are of a lexical nature. Normal and Note mode largely +resemble each other, save the possibility of entering Reals, +meaning of code(_) and the resolution of words + + + + + +Durations are entered as their reciprocal values +mudela(fragment,verbatim,center)( +a'1 a'2 a'4 a a'8 a a'16 a'32 a'64 +) +Notice that you only have to specify the duration when it changes: Lily +assumes a note has the same duration as the previous one. + +Now we can already write a little tune +mudela(fragment,verbatim,center)( +c' d' e' c' | c' d' e' c' | e' f' g'2 +) +As you'll probably have guessed, +the vertical bar code(|) may be used to mark +measures. + +In the scale shown above +we left-out the last c note of the next octave. +Postfixing the pitch with a quote code(') +produces a note by one octave higher +mudela(fragment,verbatim,center)( +c c' c'' +) + +Postfixing the pitch with a comma, code(,) +produces a note by one octave lower +mudela(fragment,verbatim,center)( +a a, a,, +) + +sect(Slurs and Ties) + +A tie connects two adjacent note heads + +mudela(fragment,verbatim,center)( +e' ~ e' +) + +Whereas a slur rather connects `chords', +and tries to avoid crossing stems + +mudela(fragment,verbatim,center)( +e'( )e' +) + +And of course, such a (legato) slur can span several notes +mudela(fragment,verbatim,center)( +c'( d' e' )f' +) + +sect(Beams and Tuplets) + +A beam is +mudela(fragment,verbatim,center)( +[a'8 a'] [a'16 a' a' a'] +) + +Here's a beamed triplet +mudela(fragment,verbatim,center)( +[/3 a'8 a' a']/1 +) + +a triplet without a beam +mudela(fragment,verbatim,center)( +\[/3 a'4 a'8\] +) + +and a combination +mudela(fragment,verbatim,center)( +[/3 a'8 a'16 a'] a'8 \] +) + +Abbreviations +mudela(fragment,verbatim,center)( +c'1:16 [:16 e'1 g'] +) + +mudela(fragment,verbatim,center)( +c'4:32 [:16 c'8 d'8] +) + +sect(Notenames) + +Lily has predefined sets of notenames +for various nop(languages)footnote(These +are Dutch, English, German, Italian and Swedish. +Simply include the language specific init file file(language.ly).). +The default set are the ones we like best are the Dutch notenames. + +A sharp is formed by adding code(is) +mudela(fragment,verbatim,center)( +cis' dis' eis' fis' gis' ais' bis' +) + +and a flat is formed by adding code(es) +mudela(fragment,verbatim,center)( +ces' des' es' fes' ges' as' bes' +) + +With the obvious names for double sharps +mudela(fragment,verbatim)( +cisis' disis' eisis' fisis' gisis' aisis' bisis' +) + +and double flats +mudela(fragment,verbatim)( +ceses' deses' eses' feses' geses' ases' beses' +) + + +There are two special `notenames', the rest +mudela(fragment,verbatim,center)( +r16 [a' a' a'] +) + +and the space +mudela(fragment,verbatim,center)( +a'2 s-"diminuendo" | a' +) + + +sect(Commands) + +mudela(fragment,verbatim,center)( +\clef "bass"; c +) + +and a clef-change +mudela(fragment,verbatim,center)( +\clef "treble"; f' e' \clef "alto"; d' c' +) + +mudela(fragment,verbatim,center)( +\time 3/4; c' g' g' | +) + +mudela(fragment,verbatim,center)( +\key d; +g a b cis' d' e' fis' g' +) +Note how Mudela allows you to +convey a musical message and doesn't force you to produce a list of typesetting commands. +If the music has a code(cis), you type a code(cis). +Depending on the key and context of the note +Lily will determine what accidentals to typeset. + +A reminder accidental can be forced by +using an exclamation mark code(!) +on a pitch a reminder accidental +mudela(fragment,verbatim,center)( +cis' d' e' cis' | c'! d' e' c' | +) + +mudela(fragment,verbatim)( +\time 2/4; +\bar "|:"; c' c' \bar ":|:"; c' c' \bar ":|"; c' c' \bar "|."; +) + +sect(Chords and Voices) + +Here's a simple chord +mudela(fragment,verbatim,center)( +<c e g> +) + +here are a few +mudela(fragment,verbatim,center)( +< + { c'()d'()c' } + { e'()f'()e' } + { g'()a'()g' } +> +) + +and similarly voices +mudela(fragment,verbatim)( +< + { \voiceone c'4 g' c' g' } + { \voicetwo c2 g2 } +> +) + + +sect(A complete example) +COMMENT(%label(se:complete)) + +A Mudela file needs some red tape + +mudela(verbatim)( +\score{ + \melodic { + c' d' e' c' | + c' d' e' c' | + e' f' g'2 | + } +} +) + +sect(Lyrics) + +Lyrics are entered like notes, with pitches substituted +by text. + +All syllables are entered separately, separated by whitespace +verb( +Twin-4 kle4 twin-4 kle4 ... +) + +Two syllables or words that compose a single +duration entry are bound together using an underscore +verb( +He_could4 not4 +) + + +COMMENT( +URG + Fr\`e-4 re Ja- que + Fr\`e- re Ja- que +) + +mudela(verbatim,center)( +\score{ + < + \melodic \transpose c'' { + c d e c | c d e c | + e f g'2 | e'4 f g'2 + \bar "|."; + } + \type Lyrics \lyric{ + DOEXPAND(Fr\)`e-4 re Ja- que + DOEXPAND(Fr\)`e- re Ja- que + Dor- mez vous?2 + Dor-4 mez vous?2 + } + > +} +) + +sect(Composition: forming bigger structures) +label(sec:grammar) + +The computer savy user may be interested in a more formal +specification. We can capture what have learned about forming +sentences in Mudela in a context-free grammar. + +latexcommand(\smallskip) + +table(2)(lll)( + row(cell(em(Music))cell(: em(Note))) + row(cell()cell(code(|) em(Rest))) + row(cell()cell(code(|) code({) em(MusicList) code(}))) + row(cell()cell(code(|) code(<) em(MusicList) code(>))) + row(cell()cell(code(|) em(Command))) + row(cell()cell(code(|) code(\type) em(string) code(=) em(string) em(Music))) + row(cell()cell(;)) + row(cell(em(MusicList))cell(: em(empty))) + row(cell()cell(code(|) em(MusicList) em(Music))) + row(cell()cell(;)) +) + +latexcommand(\smallskip) + + + + + +In mathematics you can form expressions by combining expressions, +which are ultimately some kind of atom or terminal symbol. The same +goes for Mudela: there are some basic building blocks, and by +combining those you create complex music. + +You can combine music in three ways: +itemize( +it()If you enclose a sequence of music-elements in braces ( code({) + and code(}) ), then you form another kind of music called +sequential music + with those pieces. + The duration of sequential composition is the sum of the durations of its elements + verb( + { c c g g a a g2 } % twinkle twinkle + { { c c g g} { a a g2 } } + ) +it()You can stack music by enclosing a sequence of music elements + with code(<) and code(>). This is called simultaneous music. + The duration of a simultaneous composition is the union of the durations + of its elements Example: + verb( + <a4 {cis8 cis8} e'4> % a-major chord + ) +it()You can form music by transposing music: + verb( + \transpose + d % from c to the d that's almost one octave down + { e4 f4 } % the horizontal music +) +it()verb(\type) +it()verb(\property) +it()verb(\translator) +it()verb(\relative) +) + +Of course you can also combine these three mechanisms. +verb( +{ c <c e> <c e g> <c e g \transpose d' dis > } % 4 increasing chords +) + + +sect(Durations) + +A duration always starts with the duration type (1,2,4 etc), and then +any optional multipliers/dots. `Gregrorian' durations can be entered +as follows +verb( +c'\breve +gis'\longa +) + + + +sect(Time signatures/groupings) + +A time signature specification has this form: +verb( +\time 3/4 ; +) + +Rhythmic grouping is a concept closely associated with this. For +example, in a 5/8 time signature, the counts are grouped 2+3. In Mudela this is +entered as +verb( +\grouping 8*2 8*3 ; +) + +You can start the piece with a partial measure, the command takes a +duration as an argument +verb( +\partial 16*3; +) + +Make the piece start with a upstep +lasting 1 3/4 quarter notes. + +These commands constitute `Music', and have a duration of 0. + + +sect(Properties) + +By default the same accidentals are valid for all octaves, but + this can be changed with the property code(specialaccidentals). + + +The identifier code(\specialkey) sets the property for the Staff. A +key with two flats in one octave and three + sharps in the next can be declared with verb(\specialkey +\accidentals bes es fis' cis' gis';) + +sect(Music fragments) +label(tutorial:music-fragments) + +Sometimes you only need to print a small fragment of music, perhaps +something much like one of the examples in this document. Back in +section ref(sec:running-lilypond) we told you that the music you +enter should be encapsulated in something like: +verb( +\score< + \melodic\relative c{ + d + } + \paper{ } + \midi{ } +> +) +where the only interesting information is this particular example is verb( + d +) +The rest of the above example was already nicknamed `red tape'. +You may easily get bored if you have to provide this same red tape +for every fragmenty you nop(try)footnote(Of course, in most cases your +favourite text editor (TM) +will help you out.). + +Luckily there's a trick around this, and it's called file(.fly) files. +If you use the extension file(.fly) for Mudela file file(foo), +LilyPond will embed your file(foo.fly) nop(in)footnote(Or something very +similar. If you want to know exactly, see file(init/init.fly)): +verb( +\score< + \melodic\relative c{ + <<foo.ly>> + } + \paper{ } + \midi{ } +) + +Here's how it works. If you run LilyPond on your file file(bar.ly), you +may notice that she starts-off by reading quite a number of files before +she actually reaches your file(bar.ly). There's no magic going on, Lily +by default reads an initialisation file (file(init/init.ly)). In the +initialisation process a lot of things are defined that you'll need for +normal operation, such as notenames and various other mudela shortcuts, +engraver and perforer definitions, font sizes, musical dimensions and +paper sizes. When you use the extension file(.fly), Lily just starts +reading another initialisation file (file(init/init.fly)), that includes the +red tape for you too. + + +appendix() + +chapter(Glossary) +label(glossary) + +This glossary is far from complete. Additions are welcome. + +whenlatex(latexcommand( + {\parindent -1pc + \parskip 0pc\parsep 0pc + % COMMENT( from the texbook) + \def\length#1{\count0=0 \getlength#1\end} + \def\getlength#1{\ifx#1\end \let\next=\relax + \else\advance\count0 by1 \let\next=\getlength\fi \next} + \def\inlanguage#1#2{{\length{#2}% + \ifnum\count0=0 + \else + \emph{#1}: #2. + \fi}} + \small + + % COMMENT(\def\tableentry#1#2#3#4#5#6#7{\par\textbf{#1}: #7) + \def\tableentry#1#2#3#4#5#6#7{\par{\bf #1}: #7 + \inlanguage{Fran\c cais}{#2} + \inlanguage{British}{#4} \inlanguage{Deutsch}{#3} + \inlanguage{Nederlands}{#5}\inlanguage{Italiano}{#6}} + \input{vocabulary} + } +)) + +whenhtml( + includeverbatim(DOEXPAND(outdir)/vocabulary.html) +) + +whenlatex(latexcommand( + \bibliographystyle{plain} + \bibliography{engraving} +)) + + +COMMENT(The bib stuff is somewhere else on the WWW site) +COMMENT( +setchapterstring{} + +whenhtml{ + nchapter{Bibliography} + includeverbatim{out-www/engraving.html} +}) + diff --git a/Documentation/tex/other-packages.bib b/Documentation/tex/other-packages.bib new file mode 100644 index 0000000000..07ab38a4d0 --- /dev/null +++ b/Documentation/tex/other-packages.bib @@ -0,0 +1,334 @@ +% +% TITLE=Software for printing music +% AUTHOR=HWN +% + +@string(HWN = {Han-Wen Nienhuys}) +@string(JCN = {Jan Nieuwenhuizen}) + +@misc{Rosegarden, + title = {Rosegarden}, + HTML={http://www.bath.ac.uk/\~masjpf/rose.html}, + author={Chris Cannam}, + note={A Notation editor/Sequencer for X. Also outputs musictex.}, +} + + + +@Misc{graph_music_press, + title = {Graphire Music Press}, +publisher={Graphire Corporation} , +html={http://www.sover.net/\~graphire/}, +} + +@Misc{igor, + title = {Igor}, + note = {Vaporware from Sweden.}, +html={http://www.igortech.pi.se/igor/}, +} + + +@Misc{songw, +html={www.ars-nova.com}, +title={Songworks}, +publisher={Ars Nova}, +address={Box 637,Kirkland, Washington 98083}, +} + +@Manual{byrd:_night, +html= {http://www.musicwareinc.com/}, + title = {Nightingale}, + author = {Donald Byrd}, +} + +@Misc{musys, + note = {proprietary w32 package in dutch}, + html ={http://home.wxs.nl/\~musys}, +} + +@Misc{bladmuziek, + title = {Bladmuziek}, + note = {proprietary W32 package in dutch}, + html={http://www.barsukoff.demon.nl}, +} + +@misc{CommonNotation, + title = {Common Notation}, + HTML={http://www-ccrma.stanford.edu/CCRMA/Software/cmn/cmn.html}, + note={A versatile lisp package. Part of the Common Music system. Input is in + Lisp.}, + author={Bill Schottstaedt}, +} + +@misc{Vivace, + title = {Vivace}, + author={Garrick Meeker}, + HTML={http://www.calband.berkeley.edu/\~gmeeker/vivace}, + note={A amateurish notation program for TclTk and X.}, +} + +@misc{MPP, + title={mpp}, + author=JCN # " and " # HWN, + note={A preprocessor to MusixTeX. + It is outdated by its successor, + LilyPond. MPP is still available via the CTAN archive.}, +} + +@misc{LilyPond, + title = {LilyPond}, + HTML={http://www.cs.ruu.nl/people/hanwen/lilypond/index.html}, + author=HWN # " and " # JCN, + note={The GNU Project music typesetter. Designed as a batch program, + outputs to plain \TeX. + Added for completeness. You are currently reading her documentation.}, +} + +@misc{Music, + title = {Music}, + HTML={http://www.cs.nott.ac.uk/Department/Staff/ef/printing.html}, + note={A TROFF preprocessor}, + author={Eric Foxley}, +} + +@misc{PMX, + title = {PMX}, + HTML={http://www.gmd.de/Misc/Music/}, + author={Don Simons}, + note={A Preprocessor for MusiXTeX. Developed for DOS, written in FORTRAN. + UNIX/C translation available.}, +} + +@misc{M-Tx, + title = {M-Tx}, + HTML={http://www.gmd.de/Misc/Music/}, + author={Dirk Laurie}, + note={A Predecessor of PMX.}, +} + +@misc{Musictex, + title = {Musictex}, + HTML={http://www.gmd.de/Misc/Music/}, + author={ Daniel Taupin}, + note={MusicTeX is a macro package for TeX to typeset polyphonic or + instrumental music. It was originally written by Daniel Taupin. + It includes a full-featured (but slightly unsightly) set of fonts.}, +} + +@misc{musixtex1, + title = {MusiXTeX}, + HTML={http://www.gmd.de/Misc/Music/}, + author={Ross Mitchell and Andreas Egler}, + note={A rewrite of MusicTeX. After licensing quarrels, MusiXTeX has + been split into two (both still non-GNU GPL licensed) branches.}, +} + +@misc{musixtex2, + title = {MusiXTeX}, + HTML={http://www.gmd.de/Misc/Music/}, + author={Daniel Taupin}, + note={Daniel Taupin now maintains the branch that still carries + the name MusiXTeX.}, +} + +@misc{OpusTeX, + title = {OpusTeX}, + author={Andreas Egler}, + HTML={http://www.inf.ethz.ch/personal/acherman/misc.html}, + note={Andreas Egler's branch of MusiXTeX is now called OpusTeX.}, +} + +@misc{ABC2MTeX, + title = {ABC2MTeX}, + HTML={http://www.gre.ac.uk/\~c.walshaw/abc}, + author={Chris Walshaw}, + note={A preprocessor to MusixTeX for transcribing folk and + traditional music.}, +} + + +@misc{MuTeX, + author={Angelika Schofer and Andrea Steinbach.}, + note={A TeX macro package for typesetting single-staff music. With some + fonts. Juicy detail: It comes without license statement and both authors + and copyright holders have vanished from the face of the electronic earth, + yet it is the predecessor to MusicTeX.}, + HTML={http://www.gmd.de/Misc/Music/mutex}, +} + +@misc{scex, + title = {SceX}, + HTML={http://www.ncc.up.pt/\~mig/SceX.html}, + author={Miguel Filgueiras}, + note={A preprocessor to MusixTeX. Source in prolog + available on request. (?)}, +} + +@misc{calliope, + title = {Calliope}, + author={William F. Clocksin}, + HTML={http://www.cl.cam.ac.uk/users/wfc/}, + note={A NeXT package. Requires the Adobe Sonata font}, +} + +@misc{Scribe, + title = {Scribe}, + HTML={http://adu1.adu.lattrobe.edu.au/Music/Scribe.html}, + note={A formatter for medieval scores.}, +} + +@misc{Mup, + title = {Mup}, + HTML={http://www.arkkra.com/}, + note={A program which creates PS from a script input. Although it + comes with C source code, it is shareware.}, + address = {P. O. Box 315 Warrenville, IL 60555 }, +} + +@misc{MusicEase, + title = {MusicEase}, + author = {Gary M. Rader}, + HTML={http://mesa.colorado.edu/\~grader/musicez.html }, + note={Described in Computer vol 29(6). Shareware}, +} + +@misc{LIME, + title = {LIME}, + HTML={http://datura.cerl.uiuc.edu/}, + author={Lippold Haken and Dorothea Blostein}, + note={Notation editor for W95 and Mac}, +} + +@misc{Sibelius, + title = {Sibelius}, + HTML={http://www.acorn.co.uk/developers/sibelius/Home}, + note={Notation editor on Acorn machines. Their developers call it ``best + notation program available''. In any case, + they are good at bragging.}, +} + +@misc{schott-urw, + title={``EDV-Notensatz''}, + note={URW's music-engraving system described by [Wanske]. (Although URW + used \~DM 1.000.000 while developing this, it didn't buy them a cute name), +} +} + +@misc{Finale, + title={Finale}, + publisher={Coda music technology}, +} + + +@misc{score, + publisher={San Andreas Press}, + title={Score}, + author={Leland Smith}, + HTML={http://www.ymusic.com/Score}, + + note={Werner Lemberg (sx0005@sx2.hrz.uni-dortmund.de) writes: I + consider SCORE as the best program for typesetting classical + music. [..] the price is quite high (about US\$ 1000) [..] It has + a graphical interface but to get all out of the program you have to + learn a 400 page manual almost by heart because you'll change most + features by inputting parameters (up to 20 for some items) on a + command line. Expect three months to master SCORE :-)}, + +} + +@misc{mozart, + title={Mozart}, + HTML={http://www.mozart.co.uk/}, + note={A shareware windows package }, + author={David Webber}, +} + +@misc{Noteworthy, + title={Noteworthy}, + HTML={http://www.ntworthy.com}, + note={Shareware}, + publisher={Noteworthy Artware inc.}, +} + +@misc{WolfGang, + title = {WolfGang}, + author ={Etienne Darbellay}, + HTML={http://www.unige.ch/lettres/armus/music/wolfgang.html}, +} + +@misc{Amadeus, + title = {Amadeus}, + note={Jerker Elsgard (Jerker.Elsgard@abc.se) writes: professional and + expensive (DM 4000, --) engraving. Designed as a batch program (like + LilyPond). It is aimed at publishers. Its history is more than + fifteen years and Amadeus has been running under different Unix + clones. It uses MIDI-keyboard input}, +} + +@misc{muse, + title={A-R Music Engraving}, +author ={Thomas Hall}, + publisher={A-R Editions, inc.}, + note={Professional engraving on + Sun boxen.}, +} + +@misc{MusiCopy, + title = {MusiCopy}, + author={John S. Gourlay and others}, + note={A project at Ohio State university, which was discontinued in + 1987. The technical reports that have resulted from MusiCopy can + still be obtained by writing to OSU department of Computer Science.}, +} + +@misc{Berlioz, + title = {Berlioz}, + HTML={http://www.berlioz.tm.fr/}, +author={Dominique Montel}, + note={ Dominique Montel (a professional engraver) is now working + together with computer scientists on his own software for music + publishing called "Berlioz". It is proprietary and runs on W95/NT and Mac}, +} + +@misc{Sonata, + title = {Sonata}, + HTML={http://www.adobe.com/type/browser/F/F_SONA.html}, + publisher={Adobe inc.}, + author={Cleo Huggins}, + note={The music font by Adobe}, +} + + +@misc{Haskore, + title = {Haskore}, + HTML={http://haskell.systemsz.cs.yale.edu/haskore/onlinetutorial/index.html}, + author={Paul Hudak}, + note={A programming system for music, based on Haskell, a functional + programming language. It outputs MIDI, CSound, NeXTStep and MusicKit}, +} + +% html={http://www.passportdesigns.com}, +@misc{encore, + title = {Encore}, + publisher= {Passport designs}, +} + + + +@Misc{hoos:_salier, + author = {Holger H. Hoos and Thomas Helbich}, + title = {The Salieri project}, + +note = {`The SALIERI System is an interactive software environment +for structure oriented composition, manipulation and analysis of +music.'}, + html = {http://www.informatik.tu-darmstadt.de/AFS/CM/SALIERI/}, +} + +@Misc{emagic, + title = {emagic notator}, + publisher={emagic, www.emagic.de}, + html={http://www.mcc.ac.uk/\~emagic/SL/NOTATOR.HTM}, + note = {A notation product from a company that now focuses on sequencing}, +} + diff --git a/Documentation/tex/out/dummy.dep b/Documentation/tex/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Documentation/tex/vocabulary-forms.el b/Documentation/tex/vocabulary-forms.el new file mode 100644 index 0000000000..e948938327 --- /dev/null +++ b/Documentation/tex/vocabulary-forms.el @@ -0,0 +1,23 @@ +; Music vocabularies are Copyright (C) 1993 Free Software Foundation, Inc. +; Francois Pinard <pinard@iro.umontreal.ca>, +; Neil Jerram <nj104@cus.cam.ac.uk>. +; Forms by Han-Wen Nienhuys + +(setq forms-file "vocabulary.data") +(setq forms-number-of-fields 7) +(setq forms-read-only nil) ; to make sure +(setq forms-field-sep ":") +(setq forms-multi-line nil) + +(setq forms-format-list + (list + "*** Musical vocabulary ***\n" + "\nItaliano: " 6 + "\nFrancais: " 2 + "\nUS English: " 1 + "\nDeutsch: " 3 + "\nBritish English: " 4 + "\nNederlands: " 5 + "\n\nExplanation\n\n" 7 + + )) diff --git a/Documentation/tex/vocabulary.data b/Documentation/tex/vocabulary.data new file mode 100644 index 0000000000..d62f72b912 --- /dev/null +++ b/Documentation/tex/vocabulary.data @@ -0,0 +1,252 @@ +(arbitrary number of bars' rest):bâton de pause::::: +:comma enharmonique::::: +:comma pythagoricien:::komma van Pythagoras:: +:comma syntonique:::komma van Didymos, syntonische komma:: +:doigté de pédale::::: +:doigté::::: +:fioriture:::cadens:cadenza: +:indication de pédale::::: +:mode ecclésiastique::::: +:pointillés::::: +A:la::::: +B:si::::: +C:do:::C:: +C:ut::::: +D:ré::::: +E:mi::::: +F:fa::::: +G:sol::::: +accent:accent:Akzent::accent:accento: +accident; accidental alteration:altération accidentelle:Vorzeichen::toevallig teken:accidento: +adjacent keys:tons voisins::::: +alto:alto:::alt:: +ancient form (diatonic minor scale):forme du mode mineur ancien::::: +appoggiatura:appogiature, ports de voix, notes d'agr\'ement:langer Vorschl\"age:::appogiature: +arpeggio:arpège, arpègement:Brechungen::gebroken akoord:arpeggio: +artificial measure:mesure artificielle::::: +artificial rest:respiration::::: +ascending interval:intervalle ascendant::::: +augmented (interval):augmenté (intervalle):::overmatig interval:: +backfall, forefall:accent, chute, port de voix:Vorschlag::korte voorslag:appogiature: +bar; measure:mesure:::maat, maatstreep:: +baritone:bariton:::bariton:: +barline:barre (de mesure):Taktstrich::maatstreep:stanghetta: +bass clef:clé de fa:F Schl\"ussel::F sleutel, bas sleutel:chiave di basso: +bass:basse:::bas:: +beam:barre:Balken::waardestreep/balk:barra: +beat:temps:::tel:: +binary beat:temps binaire:::tweedelige maatsoort:: +brace:accolade:Klammer:::accolada:Symbol at the start of a system that connects staffs. +brass::::koper (blazers):: +cadence:cadence:::cadens:: +chain of trills:chaîne de trilles:::triller:: +character:caractère::::: +chevron:chevron::::: +chord of the dominant ninth:accord de neuvième dominante:::dominant noon akkoord:: +chord of the dominant seventh:accord de septième dominante:::septiem akkoord:: +chord:accord:::akkoord:: +chromatic scale:gamme chromatique:::chromatische toonladder:: +chromatic semitone:demi-ton chromatique:::chromatische halve toon:: +chromatic transposition:transposition chromatique::::: +chromatic type:genre chromatique::::: +clef:clef:Schl\"ussel::Sleutel:la chiave (pl. le chiavi): +clef:clé:::sleutel:: +closing angular bracket:::::decrescendo: +comma:comma::::: +compound interval:intervalle composé::::: +compound measure:mesure composée::::: +conjunct movement:mouvement conjoint::::: +consonant interval; consonance:consonance:::consonant:: +contralto:contralto::::: +contro-time:contre-temps::::: +cue-notes::Stichnoten::stichnoten:: +dash over/below:pizzicato::::: +degree [of the scale]:degré [de la gamme]:::trap [van de toonladder]:: +descending interval:intervalle descendant:::dalend interval:: +diatonic major scale:gamme diatonique majeure:::diatonische majeur toonladder:: +diatonic minor scale:gamme diatonique mineure::::: +diatonic semitone:demi-ton diatonique:::diatonische halve toon:: +diatonic type:genre diatonique::::: +diatonic:diatonique:::diatonisch::A diatonic scale is a scale consisting of whole and half tones. +diminished (interval):diminué (intervalle):::verminderd (interval):: +disjunct movement:mouvement disjoint::::: +dissonant interval; dissonance:dissonance:::dissonant interval; dissonant:: +dominant:dominante:::dominant::A tone that creates tension; usually the fifth degree of the scale. +dot (augmentation dot) :point:Punkt::punt:punto: +dot and curved line combined:point et liaison combinés::::: +dot over/below::::staccato:staccato: +dot:point:::punt:: +dotted note:note pointée::::: +double appoggiatura:appogiature double::::: +double bar line:double barre:Doppeltaktstrich::dubbele streep:doppia barra: +double dotted note:note doublement pointée::::: +double flat:double bémol:Doppel-Be::dubbelmol:doppio bemolle: +double sharp:double dièse:Doppelkreuz::dubbelkruis:doppio diesis: +double trill:trille double::::: +double triplet:double triolet:::dubbele triool:: +double whole note:::breve:brevis:breve: +duplet:duolet:::duool:: +duration:durée:::duur, lengte:: +eighth note:croche::quaver:achtste noot:: +eighth rest:demi-soupir::quaver rest:achtste rust:: +engraving::notenstechen::steken:: +enharmonic intervals:intervalles enharmoniques::::: +enharmonic notes:notes enharmoniques:::enharmonische noot:: +enharmonic scales:gammes enharmoniques::::: +enharmonic transposition:transposition enharmonique::::: +enharmonic type:genre enharmonique::::: +enharmony:enharmonie::::: +essential alteration:altération essentielle::::: +expression mark:signe d'expressoin:Vortragszeichen::voordrachtsteken:segno d'espressione: +extension of interval:extension d'intervalle::::: +fermata:pauses:Fermate::fermate:fermata:Prolonged sound or silence of indefinite duration +fifth:quinte:::kwint:: +flag, hook, tail, pennant:crochet:F\"anchen::vlaggetje:coda uncinata: +flat:bémol:Be::mol:bemolle: +four-bar rest:bâton de pause::::: +fourth:quarte:::kwart:: +glissando:glissement:Glissando::glissando:glissando: +graces:petites notes:kurz Vorschl\"age, Manieren (?)::versieringen:appogiature: +grand staff::::piano systeem::A combination of two staffs with a brace. Usually used for piano music. +half note:blanche::minim:halve noot:: +half rest:demi-pause::minim rest:halve rust:: +harmonic cadence:cadence harmonique:::cadens:: +harmonic form (diatonic minor scale):forme harmonique::::: +harmonic interval:intervalle harmonique::::: +incomplete measure:mesure incomplète::::: +interval:intervalle:::interval:: +inversion of interval:renversement d'intervalle:::inversie:: +irregular contro-time:contre-temps irrégulier::::: +irregular group:groupe irrégulier::::: +irregular measure:mesure irrégulière::::: +irregular syncopation:syncope irrégulière:::onregelmatige syncope:: +key signature:armure, armature [de la clé], signes des accidentals:Vorzeichen::toonsoort (voortekens):segni di chiave: +kind of note:figure de note::::: +kind of rest:figure de silence::::: +leading note:sensible::::: +ledger line, leger line:ligne supplémentaire:Hilfslinien, Kopfstriche (?)::hulplijntje:lineette:A ledger line is an extension of the staff. +legato curve:liaison rythmique:::legato boog:: +lilypond:étang de lis:lilyteich:lily pond:lelievijver:stagno del giglio: +line:ligne:::lijn:: +long appoggiatura:appogiature longue::::: +lower number:chiffre inférieur::::: +major (interval):majeur (intervalle):::groot (interval):: +major mode:mode majeur::::: +meantone tuning:tempérament mésotonique::::: +mediant:médiante:::mediant::The sixth degree of a scale +melodic cadence:cadence mélodique:::cadens:: +melodic form (diatonic minor scale):forme mélodique::::: +meter, time:m\`etre:Takt, Metrum::maatsoort::A recurring pattern of stress +metronome:métronome:::metronoom:: +metronomic indication:indication métronomique::::: +mezzo-soprano:mezzo-soprano::::: +middle C clef:clé d'ut:::C sleutel, alt sleutel:chiave di tenore: +middle C:do central:::centrale C:: +minor (interval):mineur (intervalle)::::: +minor mode:mode mineur::::: +modal note:note modale::::: +mode:mode::::: +modulation:modulation:::modulatie:: +mordent:mordant, pinc\'e:Pralltriller, Mordent::mordent:mordente: +motive:incise:::motief:: +musical ladder:échelle musicale::::: +natural sign:bécarre:Aufl\"osungszeichen::herstellingsteken:bequadro: +ninth::::noon:: +note head::Notenkopf::noot balletje:: +note:note:Note::noot:nota: +octave line:clé d'octave::::: +octave line:échelle d'octave::::: +octave sign:octave:Oktave:::ottava: +octave:octave:::octaaf:: +opening angular bracket:::::crescendo: +ornament, embellishment; accessory:agr\'ement, ornement:Verzierungen:::fiorette, fioriture, abbellimenti: +part::::partij:: +pause:pause:Luftpause:::: +pause:point d'orgue::::: +perfect (interval):juste (intervalle):::rein (interval):: +perfect major chord:accord parfait majeur::::: +perfect minor chord:accord parfait mineur::::: +phrase member:membre de phrase::::: +phrase:phrase::::: +phrasing:phrasé::::: +pitch pipe; tuning fork:diapason:::stemfluitje; stemvork:: +pitch:hauteur:::toonhoogte:: +quadruplet:quartolet:::kwartool:: +quarter note:noire::crotchet:kwartnoot:: +quarter rest:soupir::crotchet rest:kwart rust:: +register:registre:::register:: +regular contro-time:contre-temps régulier::::: +regular syncopation:syncope régulière::::: +relative scales:gammes relatives, tons relatifs::::: +repeat:barre de reprise:::herhaling:: +rest:silence::::: +rest:soupir:Pause::rust:pausa: +return sign:renvoi:::herstellingsteken:: +rhythm:rythme:Rhythmus::ritme:: +rhythmic curve:courbe rythmique::::: +scale:gamme:::toonladder:: +score:partition:::partituur:: +second:seconde::::secunde: +semitone:demi-ton:::halve toon:: +seventh:septième:::septiem:septime: +sextuplet:sextolet:::sextool:: +sextuplet:sixain:::sextool:: +shading signs:signes indicateurs de nuance::::: +shading:nuance::::: +sharp:dièse:::kruis:: +short appoggiatura:appogiature brève::::: +simple appoggiatura:appogiature simple::::: +simple interval:intervalle simple::::: +simple measure:mesure simple::::: +sixteenth note:double croche::semiquaver:zestiende noot:: +sixteenth rest:quart de soupir::semiquaver rest:zestiende rust:: +sixth:sixte:::sext:: +sixty-fourth note:quadruple croche::hemidemisemiquaver:vierenzestigste noot:: +sixty-fourth rest:seizième de soupir::hemidemisemiquaver rest::: +slur:liason, coulé:Bindungzeichen, Bindebogen::binding, bindingsboog:legatura: +soprano:soprano:::sopraan:: +space:espace::::: +staff:portée:::(noten)balk; partij::pl staves or staffs +stem:queue:Stiel, Hals::stok:asta, gamba: +strings::::strijkers:: +strong beat:temps fort:::thesis:: +subdominant:sous-dominante::::: +subtonic:sous-tonique::::: +superdominant:sus-dominante::::: +supertonic:sus-tonique::::: +syncopation; upbeat:syncope:::syncope:: +system:syst\`eme:System::systeem:sitema: +tempered tuning:tempérament égal:::getempereerde stemming:: +tempo indication:signes de temps:Zeitmasse, Tempobezeichnung::tempo aanduiding:segno di tempo: +tempo; movement:mouvement::::: +tenor:ténor::::: +tenth::::deciem:decime: +ternary beat:temps ternaire:::driedelige maatsoort:: +tetrachord:tétracorde::::: +third:tierce:::terts:: +thirty-second note:triple croche::demisemiquaver:32e noot:: +thirty-second rest:huitième de soupir::demisemiquaver rest:32e rust:: +tie:liaison:Bindung::overbinding:legatura:A curve that shows the prolongation (as opposed to the repetition fo a note) +time signature:chiffrage (chiffres indicateurs), signe de valeur:Taktvorzeichnung, Taktvorzeichen::maatsoort:segni di tempo: +tonal note:note tonale::::: +tonality:tonalité:::tonaliteit:: +tone:ton:::toon:: +tonic:tonique:::tonica:: +transposition:transposition:::transpositie:: +treble clef:clé de sol:G Schl\"ussel::G sleutel, viool sleutel:chiave di violino: +tremolo:tr\'emolo:Tremolo::tremolo:tremolo: +trill; shake:trille, tremblement, battement (cadence):Triller::triller:trillo: +triplet:triolet::::: +tritone:triton::::: +turn; gruppetto:bris\'e, groupe, doubl\'e, grupetto:Doppelschlag::dubbelslag:grupetto: +two-bar rest:bâton de pause::::: +underline over/below:portamento::::: +unison:unisson::::unisono: +unit of beat:unité de temps::::: +unit of measure:unité de mesure::::: +upper number:chiffre supérieur::::: +voice:voix:::stem:: +weak beat:temps faible:::arsis:: +whole note:ronde::semibreve:hele noot:: +whole rest:pause::semibreve rest::: +woodwind::::houtblazers:: diff --git a/Documentation/topdocs/AUTHORS.yo b/Documentation/topdocs/AUTHORS.yo new file mode 100644 index 0000000000..b1c6ec64bd --- /dev/null +++ b/Documentation/topdocs/AUTHORS.yo @@ -0,0 +1,51 @@ +article(AUTHORS - who did what on GNU LilyPond?)()() + +This file lists authors of GNU LilyPond, and what they wrote. +This list is alphabetically ordered. + +itemize( +it()nemail(Mats Bengtsson)(matsb@s3.kth.se), + lurl(http://www.s3.kth.se/~matsb) + clef stuff, key stuff, swedish notenames, testing, general + comments. +it()nemail(Eric Bullinger)(eric@aut.ee.ethz.ch), + accidental transposition. +it()nemail(Jan Arne Fagertun)(Jan.A.Fagertun@energy.sintef.no), + TeX titling and lytodvi.sh +it()nemail(Anthony Fok)(foka@debian.org), + debian package: debian/* +it()nemail(Neil Jerram)(nj104@cus.cam.ac.uk). + parts of Documentation/Vocab* +it()Donald Ervin Knuth, lurl(http://www.cs-staff.stanford.edu/~knuth) + mf/ital-*.mf (these were taken from the CM fonts) +it()nemail(Werner Lemberg)(xlwy01@uxp1.hrz.uni-dortmund.de), + misc bugfixes, some Beam and Stem code. +it()nemail(David R. Linn)(drl@vuse.vanderbilt.edu), + Mailing list maintenance. +it()nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), + lurl(http://www.cs.uu.nl/~hanwen) + nl() + Main author. +it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org), + lurl(http://www.digicash.com/~jan) + nl() + Main author +it()nemail(Alexandre Oliva)(oliva@dcc.unicamp.br), + lurl(http://sunsite.unicamp.br/~oliva) + testing +it()nemail(Franc,ois Pinard)(pinard@iro.umontreal.ca), + parts of Documentation/Vocab*, started internationalization stuff +it()nemail(Jeffrey B. Reed)(daboys@bga.com), + Windows-NT support. +it()Shay Rojanski + Some mudela source. +) + + +Your name could be here! If you want to help, then take a look at the +SMALLISH PROJECTS section of in the file file(TODO). Some do not involve +coding C++ + +[And of course we sincerely thank J.S.Bach, F.Schubert, T. Merula and +W.A.Mozart for their beautiful music] + diff --git a/Documentation/topdocs/INSTALL.yo b/Documentation/topdocs/INSTALL.yo new file mode 100644 index 0000000000..19716b51d6 --- /dev/null +++ b/Documentation/topdocs/INSTALL.yo @@ -0,0 +1,298 @@ +article(INSTALL - compiling and installing GNU LilyPond)(HWN & JCN)() + +sect(ABSTRACT) + +You do something which looks remotely like +verb( + configure # Check out the buildscripts/set-lily.sh script + make + make install +) + +The detailed instructions follow here. The +file(buildscripts/set-lily.sh) script sets some environment variables +and symlinks, which comes in handly when you have to compile LilyPond +very often. It is aimed at people who run (or debug) LilyPond without +installing. + +sect(PREREQUISITES) + +For compilation you need: + +itemize( +it()A GNU system: GNU LilyPond is known to run on these GNU systems: Linux + (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and +Solaris. + +Although we recommend to use Unix, LilyPond is known to run on Windows +NT/95/98 as well. See Section ref(w32). + +it() GNU C++ version 2.7 or newer (2.8 and egcs are also fine). +it() Python 1.5 +) + +sect(RUNNING) + +GNU LilyPond does use a lot of resources. For operation you need the following: + +itemize( +it()TeX +it()A PostScript printer and/or viewer (such as Ghostscript) is strongly + recommended. Xdvi will show all embedded PostScript too if you have + Ghostscript installed. +) + +sect(RECOMMENDED) + +Although not strictly necessary, these are recommended to have. + +itemize( +it()GNU make. +it()Flex (version 2.5.4 or newer). +it()Bison (version 1.25 or newer). +it()Python (version 1.5 or newer). +it()Yodl. All documentation will be in Yodl. (1.30.17) +lurl(ftp://pcnov095.win.tue.nl/pub/yodl) + lurl(http://www.cs.uu.nl/~hanwen/yodl) +it()Texinfo. (version 3.12 or newer) + +it()GNU find +it() A fast computer (a full page of music typically takes 1 minute on my + 486/133, using the bf(--enable-checking) compile. It's lot slower than + most MusiXTeX preprocessors) +) + +sect(WEBSITE) + +If you want to auto-generate Lily's website, you'll need some additional +conversion tools. + +itemize( +it()xpmtoppm (from the Portable Bitmap Utilities) (For RedHat Linux + users: it is included within the package libgr-progs). +it()Bib2html lurl(http://pertsserver.cs.uiuc.edu/~hull/bib2html.) + Which, in turn depends on man2html for proper installation. +man2html can be had from lurl(http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05). + + TeTeX users should not forget to rerun texhash. +) + +sect(CONFIGURING and COMPILING) + +to install GNU LilyPond, simply type: +verb( + configure --enable-tex-dir=XXXX --enable-mf-dir=YYYY + make + make install +) + +This will install a number of files, something close to: +verb( + /usr/local/man/man1/mi2mu.1 + /usr/local/man/man1/convert-mudela.1 + /usr/local/man/man1/mudela-book.1 + /usr/local/man/man1/lilypond.1 + /usr/local/bin/lilypond + /usr/local/bin/mi2mu + /usr/local/share/lilypond/* + /usr/local/share/locale/{it,nl}/LC_MESSAGES/lilypond.mo + /usr/lib/texmf/texmf/tex/lilypond/* +) + + +You should specify directories that are in TeX()'s and MetaFont's +include path with the options (--enable-tex-dir) and +bf(--enable-mf-dir). If you don't specify any directories, the TeX() +include directory is detected dynamically, which is unreliable. The +above assumes that you are root and have the GNU development tools, +and your make is GNU make. If this is not the case, you can adjust +your environment variables to your taste: + +verb( + export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR" + configure +) + +code(CPPFLAGS) are the preprocessor flags. + +The configure script is Cygnus configure, and it will accept +bf(--help). If you are not root, you will probably have to make it +with a different bf(--prefix) option. Our favourite location is + +verb( + configure --prefix=$HOME/usr +) + +In this case, you will have to set up MFINPUTS, and TEXINPUTS accordingly. + +If you want to install GNU LilyPond in file(/usr/local), and your TeX has +no default hooks for local stuff, you can do: + +verb( + configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf +) + +Since GNU LilyPond currently is beta, you are advised to also use + +verb( + --enable-debugging + --enable-checking +) + +Other options include: + +description( +dit(bf(--enable-shared)) + Make a shared library (gnu/linux, solaris (?) only ) (TEMPORARILY +OUT OF ORDER) + +dit(bf(--enable-printing)) + Enable debugging print routines (lilypond bf(-D) option) +dit(bf(--enable-optimise)) + Set maximum optimisation: compile with bf(-O2) +dit(bf(--enable-profiling)) + Compile with support for profiling. +dit(bf(--enable-tex-prefix)) + Set the directory where TeX and Metafont live. +dit(bf(--enable-tex-dir)) + Set then directory TeX input is in (detected as a subdir of + tex-prefix). This should be a directory that is reachable both for + tex and latex. On my system the best choice would be + file(/usr/lib/texmf/texmf/tex/generic//). +dit(bf(--enable-mf-dir)) + Set the directory metafont input is in (idem). On my system the best + choice would be file(/usr/lib/texmf/texmf/fonts/source/public/). +dit(bf(--enable-config)) + Output to a different configuration file. Needed for multi-platform + builds +) + +All options are documented in the file(configure) help +The option bf(--enable-optimise) is recommended for Real Life usage. + +If you do + +verb( + make all +) + +everything will be compiled, but nothing will be installed. The +resulting binaries can be found in the subdirectories file(out/) (which +contain all files generated during compilation). + +sect(CONFIGURING FOR MULTIPLE PLATFORMS) + +If you want to compile LilyPond with different configuration settings, +then, you can use the bf(--enable-config) option. Example: suppose I +want to build with and without profiling. Then I'd use the +following for the normal build, + +verb( + configure --prefix=~ --disable-optimise --enable-checking + make + make install + ) + +and for the profiling version, I specify a different configuration. + +verb( + configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking + make configuration=optprof + make configuration=optprof install +) + + +sect(INSTALLING) + +If you have done a successful code(make), then a simple + +verb( + make install +) + +should do the trick. + +If you are doing an upgrade, please remember to remove obsolete +file(.pk) and file(.tfm) files of the fonts. A script has been +provided to do the work for you, see file(bin/clean-fonts.sh). + +nsect(CAVEATS) + +itemize( +it()The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You + should turn off this flag for this file. +) + +nsect(EXAMPLE) + +This is what I type in my xterm: + +verb( + lilypond someinput.ly + tex someinput.tex + xdvi someinput& +) + +This is what the output looks like over here: + +verb( + GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0 + Parsing ... [/home/hw/share/lilypond/init// + <..etc..> + init//performer.ly]]][input/kortjakje.ly] + Creating elements ...[8][16][24][25] + Preprocessing elements... + Calculating column positions ... [14][25] + Postprocessing elements... + TeX output to someinput.tex ... + Creating MIDI elements ...MIDI output to someinput.midi ... + + + hw:~/musix/spacer$ xdvi someinput& + [1] 855 +) + +Check out the input files, some of them have comments +Please refer to the man page for more information. + +sect(REDHAT LINUX) + +RedHat Linux users can compile an RPM. A spec file is in +file(make/out/lilypond.spec). You should install a gif file called +file(lelie_icon.gif) along with the sources. You can generate this +gif file by typing + +verb( + make gifs +) + +in the directory file(Documentation). + +You can make the rpm by issuing + +verb( + make rpm +) + + +sect(DEBIAN GNU/LINUX) + +A Debian package is also available; contact Anthony Fok +email(foka@debian.org). The build scripts are in the subdirectory file(debian/) + + +sect(WINDOWS NT/95) +label(w32) + + +Separate instructions on building for W32 are avaible +url(in the file README-W32.yo)(../../DOEXPAND(outdir)/README-W32.html). + +sect(AUTHORS) + +nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl) + +nemail(Jan Nieuwenhuizen)(janneke@gnu.org) + + +Have fun! diff --git a/Documentation/topdocs/Makefile b/Documentation/topdocs/Makefile new file mode 100644 index 0000000000..c8c180d1d2 --- /dev/null +++ b/Documentation/topdocs/Makefile @@ -0,0 +1,31 @@ +# Documentation/topdocs/Makefile + +depth = ../.. + +SUBDIRS= + +include $(depth)/make/Stepmake.make +include $(depth)/make/Lilypond.make + +default: do-doc + +BLURBS=BLURB COPERTINA FLAPTEKST +# INFO_FILES = $(outdir)/$(package).info + +include $(stepdir)/Documentation.shared.make + +# urg +$(outdir)/%.html: %.yo + $(YODL2HTML) -doutdir=$(outdir) --live-data=3 -o $@.in $< + $(sed-version) < $@.in > $@ + rm -f $@.in + $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=index.html --news=$(depth)/NEWS $@ + +local-WWW: + -cp $(outdir)/*gif $(outdir)/index.html $(depth) # don't fail if not making website + + +TO_TOP_FILES=$(addprefix $(outdir)/, $(README_TOP_FILES)) +copy-to-top: + $(foreach i, $(TO_TOP_FILES), \ + cp $(i) $(depth)/ && ) true diff --git a/Documentation/topdocs/PATCHES.yo b/Documentation/topdocs/PATCHES.yo new file mode 100644 index 0000000000..87a328b11f --- /dev/null +++ b/Documentation/topdocs/PATCHES.yo @@ -0,0 +1,130 @@ +nsect(NAME) + +PATCHES - track and distribute your code changes + +nsect(DESCRIPTION) + +This page documents how to distribute your changes to GNU lilypond +(or in fact any other StepMake package). + +nsect(ABSTRACT) + +Distributing a change normally goes like this: + +itemize( +it()make your fix/add your code +it()Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo +it()generate a patch, +it()e-mail your patch to one of the mailing lists + gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org +) + +nsect(GENERATING A PATCH) + +In file(VERSION), set MY_PATCH_LEVEL: + +verb( + VERSION: + ... + MY_PATCH_LEVEL=jcn1 +) + +In file(NEWS), enter a summary of changes: + +verb( + NEWS: + pl 0.1.73.jcn1 + - added PATCHES.yo +) + +Then, from the top of Lily's source tree, type + +verb( + make diff +) + +which leaves your patch as file(./lilypond-0.1.73.jcn1.diff). + +If you didn't configure Lily using --srcdir, you can do: + +verb( + make release + + tar-ball: ../patches/lilypond-0.1.73.jcn1.gz + patch: ../patches/lilypond-0.1.73.jcn1.gz + updeet: ../test/updeet +) + +nsect(PREREQUISITES) + +For creating a patch you need + +itemize( +it()All items mentioned in file(INSTALL). You're not going to send a patch + that you haven't even built, right? +it()GNU diff +it()Python (version 1.5 or newer). + You can of course make a patch by hand, which would go something like: + +verb( + make distclean + cd .. + diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1 +) + +but there are handy python scripts available. If you're doing development, +you'll need Python for other LilyPond scripts anyway. + +it()The Lily directory structure, which looks like: + +includefile(../../stepmake/Documentation/layout.yo) +) + +nsect(APPLYING PATCHES) + +If you're following LilyPond development regularly, you probably want to +download just the patch for each subsequent release. +After downloading the patch (into the patches directory, of course), simply +apply it: + +verb( + gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E +) + +and don't forget to make automatically generated files: + +verb( + autoconf footnote(patches don't include automatically generated files, + i.e. file(configure) and files generated by file(configure).) + + configure +) + +nsect(SYNCHRONISE) + +If you're not very quick with sending your patch, there's a good chance +that an new release of LilyPond comes available. In such a case (and +sometimes for other unkown reasons :-), the maintainer will probably ask +you to make a new patch against the latest release. +Your best bet is to download the latest release, and apply your patch +against this new source tree: + +verb( + cd lilypond-0.1.74 + gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E + autoconf + configure +) + +Then, make a patch as shown above. + +nsect(SEE ALSO) + +file(stepmake/INSTALL.txt) + +nsect(MAINTAINER) + +nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl) + +Just keep on sending those patches! + diff --git a/Documentation/topdocs/README.yo b/Documentation/topdocs/README.yo new file mode 100644 index 0000000000..9b6b21dd9b --- /dev/null +++ b/Documentation/topdocs/README.yo @@ -0,0 +1,93 @@ +COMMENT(-*-Text-*-) +DEFINEMACRO(Package)(0)(LilyPond) DEFINEMACRO(package)(0)(lilypond) +COMMENT( ^^^^ Slaat dit ergens op?) + + +redef(XXsetchapternum)(0)() + +This is the toplevel README to Package() + +includefile(../BLURB.in) + +sect(VERSIONING) + +if you have downloaded a + + *.pre* + +version, then this is version is *not* meant for producing nice output +(but to keep your patchsets up to date). It might not even compile. + + +sect(REQUIREMENTS) + +For the compilation and running of Package() you need some additional +packages. Please refer to the installation instructions. + +NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file), then +you don't have to compile Package(). + + +sect(INSTALLATION) + +For your convenience, a formatted copy of the INSTALL instructions are +in the toplevel directory, as INSTALL.txt + +The process is fairly straightforward, but chances are that you have +to specify directories for TeX() to code(configure): this is done with +the options code(--enable-tex-dir) and code(--enable-mf-dir) + + +sect(DOCUMENTATION) + +The real documentation is the directory Documentation/ + +To generate the pretty-printed docs, you have to run code(configure) first, +and then do this: + + make doc + +You can also simply read the .yo sources. They are ASCII text. +The complete documentation is accessible in formatted form at the +website lurl(http://www.cs.uu.nl/people/hanwen/lilypond/index.html) + + +sect(COMMENTS) + +Package() is a long way from finished and polished. We do appreciate +criticism, comments, bugreports, patches, etc. + + Please send your e-mail to one of the MAILING LISTS + +and not to us personally. See file(Documentation/links.yo) for more info. + + +sect(DOZE) + +If you have received this file as part of a DOS/Window32 distribution +(package()-*.zip), then it is advisable to also download the source +package, since it might contain more documentation +lurl(ftp://pcnov095.win.tue.nl/pub/package()/) + +If you decide to build Package() from source, please read the INSTALL.txt +document first, especially the Windows NT/95 section. + + +sect(CAVEATS) + +* Please read the file BUGS for some ugly bugs. This especially applies +Linux-Intel unix users. + +* If you have installed a previous version, be sure to remove old font +files, eg +verb(rm `find /var/lib/texmf/fonts -name 'feta*'`) + +a script to do this for you is in file(bin/cleanfonts.sh) + + +sect(CDROM DISTRIBUTIONS) + +If you have received Package() on a cdrom, chances are that development +has moved a some patchlevels up. If possible, please check the latest +version of Package() before reporting bugs. + diff --git a/Documentation/topdocs/index.yo b/Documentation/topdocs/index.yo new file mode 100644 index 0000000000..04eef033ca --- /dev/null +++ b/Documentation/topdocs/index.yo @@ -0,0 +1,78 @@ +DEFINEMACRO(depth)(0)(.) +DEFINEMACRO(docdir)(0)(Documentation) +DEFINEMACRO(pic)(1)(url(ARG1)(DOEXPAND(docdir)/pictures/DOEXPAND(outdir)/ARG1.gif +)) + + +nsect(LilyPond -- The GNU Project Music Typesetter) + +includefile(../BLURB.in)(url(italiano)(DOEXPAND(docdir)/DOEXPAND(outdir)/COPERTINA.html))(url(nederlands)(DOEXPAND(docdir)/DOEXPAND(outdir)/FLAPTEKST.html)) +nl() +pic(screenshot) + +center(mudela(fragment)( + \relative c'' { \key es; r8 [c16 b] [c8 g] [as c16 b] [c8 d] | g,4 } +)) + +nsubsect() + +Hmm, this is what it said yesterday too. I just want to know +url(What's new)(DOEXPAND(docdir)/DOEXPAND(outdir)/NEWS.html) today and then COMMENT( +url(Download)(ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz) LilyPond. +perhaps lily/VERSION, i.e. without my-patch-level would be best... +)url(Download)(ftp://pcnov095.win.tue.nl/pub/lilypond/development/) LilyPond. + +nsubsect(Introduction) + +This is not a Fanmail/Hype page. These pages were entirely created from +the LilyPond package-sources. + +A document on LilyPond's music description language Mudela is +url(in the making)(DOEXPAND(docdir)/tex/DOEXPAND(outdir)/mudela.html). + +Note: These pages are created from the latest bf(development snapshots) +of LilyPond, specifically, this page was made from LilyPond +@TOPLEVEL_VERSION@.tar.gz + +nsect(Sites) + +description( +dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site. +dit(lurl(http://www.digicash.com/~jan/lilypond/))Jan's site. +) + +nsubsubsect(Mirrors) +description( +dit(lurl(http://sca.uwaterloo.ca/lilypond/)) + Eric Praetzel was kind enough to provide a mirror of both the website + and the ftp site. +) + +nsubsect(Examples) + +itemize( +it()url(short examples of what LilyPond can do: MIDI, PS, .gif and input.) +(DOEXPAND(depth)/input/DOEXPAND(outdir)/index.html) +it()url(examples of what LilyPond can do with real music: MIDI, PS, .gif and input)(DOEXPAND(depth)/mutopia/DOEXPAND(outdir)/index.html) +) + +nsubsect(NEWS) + +This is what the latest version brings: +verb( +top_of_NEWS +) + +COMMENT( +Go get it at lurl(ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz) +) +Go get it at lurl(ftp://pcnov095.win.tue.nl/pub/lilypond/development/) + +nsubsect(Documentation) + +itemize( +it()url(All of the LilyPond documentation.)(DOEXPAND(docdir)/DOEXPAND(outdir)/index.html) +it()url(The DOC++ documentation of the C++ sources.)(DOEXPAND(depth)/docxx/index.html) +) + +@COUNTER_REF@ diff --git a/Documentation/topdocs/scherm.in b/Documentation/topdocs/scherm.in new file mode 100644 index 0000000000..005b6451c3 --- /dev/null +++ b/Documentation/topdocs/scherm.in @@ -0,0 +1,16 @@ +18:46:03 mub ~/lelie$ lilypond twinkle +GNU LilyPond 0.1.78/FlowerLib 1.1.44. +Ontleden...[/home/fred/usr/src/lilypond/init/init.ly[/home/fred/usr/src/lilypond/init/declarations.ly[/home/fred/usr/src/lilypond/init/dynamic.ly][/home/fred/usr/src/lilypond/init/nederlands.ly][/home/fred/usr/src/lilypond/init/script.ly][/home/fred/usr/src/lilypond/init/paper20.ly[/home/fred/usr/src/lilypond/init/table20.ly][/home/fred/usr/src/lilypond/init/table13.ly][/home/fred/usr/src/lilypond/init/table16.ly][/home/fred/usr/src/lilypond/init/params.ly[/home/fred/usr/src/lilypond/init/a4.ly][/home/fred/usr/src/lilypond/init/paper.ly][/home/fred/usr/src/lilypond/init/engraver.ly]]][/home/fred/usr/src/lilypond/init/midi.ly[/home/fred/usr/src/lilypond/init/performer.ly]][/home/fred/usr/src/lilypond/init/property.ly]][/home/fred/usr/src/lilypond/input/twinkle.ly]] +Vertolken van muziek...[8][16][24][25] +duur: 1.34 seconden +Voorbewerken van elementen... [/home/fred/usr/src/lilypond/mf/out/feta20.afm] +Berekenen van kolomposities... [3][6][9][12][15][18][21][24][25] +geschat: 231 regels (van gemiddeld 21.4 kolommen) +exact berekend: 66 regels (van gemiddeld 25.5 kolommen) +duur: 6.11 seconden +Nabewerken van elementen... +TeX uitvoer naar twinkle.tex... + +Vertolken van muziek... +duur: 0.22 seconden +MIDI uitvoer naar twinkle.midi... diff --git a/Documentation/topdocs/schermo.in b/Documentation/topdocs/schermo.in new file mode 100644 index 0000000000..b4fb407537 --- /dev/null +++ b/Documentation/topdocs/schermo.in @@ -0,0 +1,16 @@ +18:37:15 mub ~/lelie$ lilypond twinkle +GNU LilyPond 0.1.78/FlowerLib 1.1.44. +Analizzare...[/home/fred/usr/src/lilypond/init/init.ly[/home/fred/usr/src/lilypond/init/declarations.ly[/home/fred/usr/src/lilypond/init/dynamic.ly][/home/fred/usr/src/lilypond/init/nederlands.ly][/home/fred/usr/src/lilypond/init/script.ly][/home/fred/usr/src/lilypond/init/paper20.ly[/home/fred/usr/src/lilypond/init/table20.ly][/home/fred/usr/src/lilypond/init/table13.ly][/home/fred/usr/src/lilypond/init/table16.ly][/home/fred/usr/src/lilypond/init/params.ly[/home/fred/usr/src/lilypond/init/a4.ly][/home/fred/usr/src/lilypond/init/paper.ly][/home/fred/usr/src/lilypond/init/engraver.ly]]][/home/fred/usr/src/lilypond/init/midi.ly[/home/fred/usr/src/lilypond/init/performer.ly]][/home/fred/usr/src/lilypond/init/property.ly]][/home/fred/usr/src/lilypond/input/twinkle.ly]] +Interpretare musica...[8][16][24][25] +durata: 1.36 secondi +Preprocessare elementi... [/home/fred/usr/src/lilypond/mf/out/feta20.afm] +Calcolare posizioni di colonne... [3][6][9][12][15][18][21][24][25] +approssimato: 231 linee (con una media di 21 colonne): +calcolato esattamente: 66 linee (con una media di 25 colonne) +durata: 6.14 secondi +Postprocessare elementi... +Prodotto di TeX verso twinkle.tex... + +Interpretare musica... +durata: 0.21 secondi +Prodotto di MIDI verso twinkle.midi... diff --git a/Documentation/topdocs/topweb.yo b/Documentation/topdocs/topweb.yo new file mode 100644 index 0000000000..64bd836383 --- /dev/null +++ b/Documentation/topdocs/topweb.yo @@ -0,0 +1 @@ +whenhtml(htmlcommand(<meta http-equiv=refresh content="0; url=Documentation/topdocs/out-www/index.html">)) diff --git a/Documentation/topinfo.yo b/Documentation/topinfo.yo new file mode 100644 index 0000000000..017486895f --- /dev/null +++ b/Documentation/topinfo.yo @@ -0,0 +1,37 @@ + +node()(Top)(Copying)((dir)) + +menu( +mit(Copying)( Your rights.) +mit(Programs)( Your softs.) +mit(Mutopia)( Your music.) +mit(Concept Index)( Your index.) +) + +node(Top)(Copying)(Programs)(Top) +chapter(COPYING) +LilyPond is Free Software. See file(COPYING) for details. + +node(Copying)(Programs)(convert-mudela)(Top) +menu( +mit(convert-mudela)( Convert Mudela) +mit(LilyPond)( The GNU Music Typsetter herself) +mit(Ly2dvi)( Lilypond Frontend) +mit(Mi2mu)( MIDI input) +mit(mudela-book)( Integrate LaTeX and mudela) +) + +whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/convert-mudela.texinfo)) +whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/lilypond.texinfo)) +whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/ly2dvi.texinfo)) +whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/mi2mu.texinfo)) +whentexinfo(texinfocommand(@include man/DOEXPAND(outdir)/mudela-book.texinfo)) +whentexinfo(texinfocommand(@include DOEXPAND(outdir)/mutopia.texinfo)) + +nchapter(Concept Index) +node(Mutopia)(Concept Index)()(Top) +COMMENT( urg makeindex()) +printndex() + +whentexinfo(texinfocommand(@bye)) + diff --git a/Documentation/topweb.pod b/Documentation/topweb.pod deleted file mode 100644 index def6a75970..0000000000 --- a/Documentation/topweb.pod +++ /dev/null @@ -1,82 +0,0 @@ -=head1 NAME - -The Homepage of LilyPond -- the GNU Project music typesetter - -=head1 DESCRIPTION - -LilyPond is the GNU Project music typesetter. This program can print -beautiful sheet music from a music definition file. It can also play -a play (mechanical) performances to a MIDI file. Features include -multiple staffs, meters, clefs, keys, lyrics, versatile -input-language, cadenzas, beams, slurs, triplets. It includes a nice -font of musical symbols. - -This is not a Fanmail/Hype page. These pages were entirely created from -the LilyPond package-sources. - -Note: These pages are created from the latest B<development snapshots> -of LilyPond, specifically, this page was made from LilyPond -@TOPLEVEL_VERSION@. - -=head2 Mirrors - -=over 4 - -=item http://sca.uwaterloo.ca/lilypond/ - -Eric Praetzel was kind enough to provide a mirror of both the website -and the ftp site. - -=back - -=head2 Examples - -=over 4 - -=item * -<a href=input/out-www/index.html -> -short examples of what LilyPond can do: MIDI, PS, .gif and input. -</a -> - -=item * -<a href=mutopia/out-www/index.html -> -examples of what LilyPond can do -with real music: MIDI, PS, .gif and input -</a -> - -=back - -=head2 NEWS! - -This is what the latest version brings: - -top_of_NEWS - -Go get it at ftp://pcnov095.win.tue.nl/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz - -=head2 Documentation: Introduction - -=over 4 - -=item * -<a href=Documentation/out-www/index.html -> -All of the LilyPond documentation. -</a -> - -=item * -<a href=docxx/index.html -> -The DOC++ documentation of the C++ sources. -</a -> - - - - -=back diff --git a/Documentation/vocabulary-forms.el b/Documentation/vocabulary-forms.el deleted file mode 100644 index 98a964793a..0000000000 --- a/Documentation/vocabulary-forms.el +++ /dev/null @@ -1,23 +0,0 @@ -; Musical vocabularies are Copyright (C) 1993 Free Software Foundation, Inc. -; Francois Pinard <pinard@iro.umontreal.ca>, -; Neil Jerram <nj104@cus.cam.ac.uk>. -; Forms by Han-Wen Nienhuys - -(setq forms-file "vocabulary-data") -(setq forms-number-of-fields 7) -(setq forms-read-only nil) ; to make sure -(setq forms-field-sep ":") -(setq forms-multi-line nil) - -(setq forms-format-list - (list - "*** Musical vocabulary ***\n" - "\nItaliano: " 6 - "\nFrancais: " 1 - "\nUS English: " 2 - "\nDeutsch: " 3 - "\nBritish English: " 4 - "\nNederlands: " 5 - "\n\nExplanation\n\n" 7 - - )) diff --git a/Documentation/vocabulary.data b/Documentation/vocabulary.data deleted file mode 100644 index e9e616a284..0000000000 --- a/Documentation/vocabulary.data +++ /dev/null @@ -1,252 +0,0 @@ -Francais:US English:Deutsch:UK English:Nederlands:Italiaans: -:engraving:notenstechen::steken:: -:Grand staff:::Piano systeem::A combination of two staffs with a brace. Usually used for piano music. -:system:::systeem:: -accentuation:accentuation:::accent:: -accolade:brace::::: -accord:chord:::akkoord:: -accord de neuvième dominante:chord of the dominant ninth:::dominant akkoord:: -accord de septième dominante:chord of the dominant seventh:::septiem akkoord:: -accord parfait majeur:perfect major chord::::: -accord parfait mineur:perfect minor chord::::: -alto:alto:::alt:: -altération accidentelle:accident; accidental alteration:::toevallig teken:: -altération essentielle:essential alteration::::: -appogiature:appoggiatura::::: -appogiature brève:short appoggiatura::::: -appogiature double:double appoggiatura::::: -appogiature longue:long appoggiatura::::: -appogiature simple:simple appoggiatura::::: -armature [de la clé]:key signature:::toonsoort (voortekens):: -armure [de la clé]:key signature:::toonsoort:: -arpège:arpeggio:::gebroken akoord:: -augmenté (intervalle):augmented (interval):::overmatig interval:: -bariton:baritone:::bariton:: -barre de mesure:bar line:::maatstreep:: -:beam:Balk::waardestreep/balk:: -barre de reprise:repeat:::herhaling:: -basse:bass:::bas:: -blanche:half note:::halve noot:: -bâton de pause:(arbitrary number of bars' rest)::::: -bâton de pause:four-bar rest::::: -bâton de pause:two-bar rest::::: -bécarre:natural sign:::herstellingsteken:: -bémol:flat:::mol:: -cadence:cadence:::cadens:: -cadence harmonique:harmonic cadence:::cadens:: -cadence mélodique:melodic cadence:::cadens:: -:cue-notes:Stichnoten::stichnoten:: -caractère:character::::: -chaîne de trilles:chain of trills:::triller:: -chevron:chevron::::: -chiffrage (chiffres indicateurs):time signature:::maatsoort:: -chiffre inférieur:lower number::::: -chiffre supérieur:upper number::::: -clé:clef:::sleutel:: -clé d'octave:octave line::::: -clé d'ut:middle C clef:::C sleutel, alt sleutel:: -clé de fa:bass clef:::F sleutel:: -clé de sol:treble clef:::G sleutel, viool sleutel:: -comma:comma::::: -comma enharmonique::::: -comma pythagoricien::::: -comma syntonique: : : : : : -consonance:consonant interval; consonance:::consonant:: -contralto:contralto::::: -contre-temps:contro-time::::: -contre-temps irrégulier:irregular contro-time::::: -contre-temps régulier:regular contro-time::::: -coulé:slur:::binding, bindingsboog:: -courbe rythmique:rythmic curve::::: -:opening angular bracket::::crescendo: -croche:eighth note:::achtste noot:: -:closing angular bracket::::decrescendo: -degré [de la gamme]:degree [of the scale]:::trap [van de toonladder]:: -demi-pause:half rest:::halve rust:: -demi-soupir:eighth rest:::achtste rust:: -demi-ton:semitone:::halve toon:: -demi-ton chromatique:chromatic semitone:::chromatische halve toon:: -demi-ton diatonique:diatonic semitone:::diatonische halve toon:: -diapason:pitch pipe; tuning fork:::stemfluitje; stemvork:: -diminué (intervalle):diminished (interval):::verminderd (interval):: -dissonance:dissonant interval; dissonance:::dissonant interval; dissonant:: -dièse:sharp:::kruis:: -do:C:::C:: -do central:middle C:::centrale C::: -doigté:::::: -doigté de pédale:::::: -dominante:dominant:::dominant:: -double barre:double bar line:::dubbele streep:: -double bémol:double flat:::dubbelmol:: -double croche:sixteenth note:::zestiende noot:: -double dièse:double sharp:::dubbelkruis:: -double triolet:double triplet:::dubbele triool:: -duolet:duplet:::duool:: -durée:duration:::duur, lengte:: -échelle d'octave:octave line::::: -échelle musicale:Musical Ladder::::: -enharmonie:enharmony::::: -espace:space::::: -extension d'intervalle:extension of interval::::: -fa:F::::: -figure de note:kind of note::::: -figure de silence:kind of rest::::: -fioriture::::cadens:cadenza: -forme du mode mineur ancien:ancient form (diatonic minor scale)::::: -forme harmonique:harmonic form (diatonic minor scale)::::: -forme mélodique:melodic form (diatonic minor scale)::::: -gamme:scale:::toonladder:: -gamme chromatique:chromatic scale:::chromatische toonladder:: -gamme diatonique majeure:diatonic major scale:::diatonische majeur toonladder:: -gamme diatonique mineure:diatonic minor scale::::: -gammes enharmoniques:enharmonic scales::::: -gammes relatives:relative scales::::: -genre chromatique:chromatic type::::: -genre diatonique:diatonic type::::: -genre enharmonique:enharmonic type::::: -groupe irrégulier:irregular group::::: -grupetto:turn; gruppetto:::dubbelslag:: -hauteur:pitch:::toonhoogte:: -huitième de soupir:thirty-second rest:::32e rust:: -incise:motive:::motief:: -indication de pédale::::: -indication métronomique:metronomic indication::::: -intervalle:interval:::interval:: -intervalle ascendant:ascending interval::::: -intervalle composé:compound interval::::: -intervalle descendant:descending interval:::dalend interval:: -intervalle harmonique:harmonic interval::::: -intervalle simple:simple interval::::: -intervalles enharmoniques:enharmonic intervals::::: -juste (intervalle):perfect (interval):::rein (interval):: -la:A::::: -liaison:tie:::overbinding:: -liaison rythmique:legato curve::::: -ligne:line::::: -ligne supplémentaire:ledger line:::hulplijntje:: -étang de lis:lilypond:lilyteich:lily pond:lelievijver:stagno del giglio: -majeur (intervalle):major (interval):::groot (interval):: -membre de phrase:phrase member::::: -mesure:bar; measure:::maat, maatstreep:: -mesure artificielle:artificial measure::::: -mesure composée:compound measure::::: -mesure incomplète:incomplete measure::::: -mesure irrégulière:irregular measure::::: -mesure simple:simple measure::::: -mezzo-soprano:mezzo-soprano::::: -mi:E::::: -mineur (intervalle):minor (interval)::::: -mode:mode::::: -mode ecclésiastique::::: -mode majeur:major mode::::: -mode mineur:minor mode::::: -modulation:modulation:::modulatie:: -mordant:mordent:::mordent:: -:::::: -mouvement:tempo; movement:::deel:: -mouvement conjoint:conjunct movement::::: -mouvement disjoint:disjunct movement::::: -mouvement lent:slow tempo::::: -mouvement modéré:moderate tempo::::: -mouvement rapide:fast tempo::::: -médiante:mediant::::: -métronome:metronome:::metronoom:: -noire:quarter note:::kwartnoot:: -note:note:::noot:: -note doublement pointée:double dotted note::::: -note modale:modal note::::: -note pointée:dotted note::::: -note tonale:tonal note::::: -notes enharmoniques:enharmonic notes:::enharmonische noot:: -nuance:shading::::: -octave:octave:::octaaf:: -ornement:embellishment; accessory::::: -:part:::partij:: -partition:score:::partituur:: -pause:whole rest::::: -phrase:phrase::::: -phrasé:phrasing::::: -pizzicato:dash over/below::::: -point:dot:::punt:: -point d'orgue:pause::::: -point et liaison combinés:dot and curved line combined::::: -pointillés::::: -portamento:underline over/below::::: -portée:staff:::(noten)balk; partij:: -portées:staves::::: -quadruple croche:sixty-fourth note::::: -quart de soupir:sixteenth rest::::: -quarte:fourth:::kwart:: -quartolet:quadruplet:::kwartool:: -quinte:fifth:::kwint:: -registre:register:::register:: -renversement d'intervalle:inversion of interval:::inversie:: -renvoi:return sign:::herstellingsteken:: -respiration:artificial rest::::: -:double whole note::breve:brevis:breve: -ronde:whole note:::hele noot:: -rythme:rythm:::ritme:: -ré:D::::: -seconde:second::::secunde: -seizième de soupir:sixty-fourth rest::::: -sensible:leading note::::: -septième:seventh:::septiem:septime: -sextolet:sextuplet::::: -si:B::::: -signes indicateurs de nuance:shading signs::::: -silence:rest::::: -sixain:sextuplet:::sextool:: -sixte:sixth::::: -sol:G::::: -soprano:soprano:::sopraan:: -soupir:quarter rest::::: -sous-dominante:subdominant::::: -sous-tonique:subtonic::::: -:dot over/below:::staccato:staccato: -sus-dominante:superdominant::::: -sus-tonique:supertonic::::: -syncope:syncopation; upbeat:::syncope:: -syncope irrégulière:irregular syncopation:::onregelmatige syncope:: -syncope régulière:regular syncopation::::: -temps:beat:::tel:: -temps binaire:binary beat::::: -temps faible:weak beat::::: -temps fort:strong beat::::: -temps ternaire:ternary beat::::: -tempérament mésotonique:meantone tuning::::: -tempérament égal:tempered tuning:::getempereerde stemming:: -tierce:third:::terts:: -ton:tone:::toon:: -tonalité:tonality:::tonaliteit:: -tonique:tonic::::: -tons relatifs:relative scales::::: -tons voisins:adjacent keys::::: -transposition:transposition::::: -transposition chromatique:chromatic transposition::::: -transposition enharmonique:enharmonic transposition::::: -trille:trill; shake::::: -trille double:double trill::::: -triolet:triplet::::: -triple croche:thirty-second note::::: -triton:tritone::::: -ténor:tenor::::: -tétracorde:tetrachord::::: -unisson:unison::::: -unité de mesure:unit of measure::::: -unité de temps:unit of beat::::: -ut:C::::: -voix:voice:::stem:: -:quarter note::crotchet::: -:quarter rest::crotchet rest::: -:thirty-second note::demisemiquaver::: -:thirty-second rest::demisemiquaver rest::: -:sixty-fourth note::hemidemisemiquaver::: -:sixty-fourth rest::hemidemisemiquaver rest::: -:half note::minim::: -:half rest::minim rest::: -:eighth note::quaver::: -:eighth rest::quaver rest::: -:whole note::semibreve::: -:whole rest::semibreve rest::: -:sixteenth note::semiquaver::: -:sixteenth rest::semiquaver rest:: : diff --git a/INSTALL.txt b/INSTALL.txt index 12c297b46c..11572c9d44 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -1,396 +1,268 @@ +TITLE INFORMATION: INSTALL - compiling and installing GNU LilyPond +AUTHOR INFORMATION: HWN & JCN +Contents -INSTALL(1) LilyPond documentation INSTALL(1) +1: ABSTRACT +2: PREREQUISITES +3: RUNNING +4: RECOMMENDED +5: WEBSITE +6: CONFIGURING and COMPILING +7: CONFIGURING FOR MULTIPLE PLATFORMS +8: INSTALLING +9: REDHAT LINUX +10: DEBIAN GNU/LINUX +11: WINDOWS NT/95 +12: AUTHORS +1: ABSTRACT -NAME - INSTALL - installing GNU LilyPond +You do something which looks remotely like -DESCRIPTION - This page documents installation and compilation of GNU - LilyPond + configure # Check out the buildscripts/set-lily.sh script + make + make install -ABSTRACT - You do something which looks remotely like +The detailed instructions follow here. The +buildscripts/set-lily.sh script sets some environment variables +and symlinks, which comes in handly when you have to compile LilyPond +very often. It is aimed at people who run (or debug) LilyPond without +installing. - configure - make - make install +2: PREREQUISITES - The detailed instructions follow here. +For compilation you need: -PREREQUISITES - For compilation you need. +o A GNU system: GNU LilyPond is known to run on these GNU systems: Linux + (PPC, intel), FreeBSD, AIX, NeXTStep, IRIX, Digital Unix and +Solaris. - o A GNU system: GNU LilyPond is known to run on these - GNU systems: Linux (PPC, intel), FreeBSD, AIX, - NeXTStep, IRIX, Digital Unix and Solaris. +Although we recommend to use Unix, LilyPond is known to run on Windows +NT/95/98 as well. See Section [w32]. - If you have the Cygnus WINDOWS32 port of the GNU - utils, it will even work in Windows NT/95, but we - don't promise to support it. +o GNU C++ version 2.7 or newer (2.8 and egcs are also fine). +o Python 1.5 - o GNU C++ version 2.7 or newer (yes, 2.8 is fine). +3: RUNNING - o Python +GNU LilyPond does use a lot of resources. For operation you need the following: -RUNNING - GNU LilyPond does use a lot of resources. For operation - you need the following: +o TeX +o A PostScript printer and/or viewer (such as Ghostscript) is strongly + recommended. Xdvi will show all embedded PostScript too if you have + Ghostscript installed. - o TeX +4: RECOMMENDED - o A PostScript printer and/or viewer (such as - Ghostscript) is strongly recommended. Xdvi will show - all embedded PostScript too if you have Ghostscript - installed. +Although not strictly necessary, these are recommended to have. -RECOMMENDED - Although not strictly necessary, these are recommended to - have. +o GNU make. +o Flex (version 2.5.4 or newer). +o Bison (version 1.25 or newer). +o Python (version 1.5 or newer). +o Yodl. All documentation will be in Yodl. (1.30.17) +ftp://pcnov095.win.tue.nl/pub/yodl + http://www.cs.uu.nl/~hanwen/yodl +o Texinfo. (version 3.12 or newer) - o GNU make. +o GNU find +o A fast computer (a full page of music typically takes 1 minute on my + 486/133, using the --enable-checking compile. It's lot slower than + most MusiXTeX preprocessors) - o Flex (version 2.5.4 or newer). +5: WEBSITE - o Bison (version 1.25 or newer). +If you want to auto-generate Lily's website, you'll need some additional +conversion tools. - o Perl-5. Most documentation was created with the - perl's Plain Old Documentation. (I use 5.003) +o xpmtoppm (from the Portable Bitmap Utilities) (For RedHat Linux + users: it is included within the package libgr-progs). +o Bib2html http://pertsserver.cs.uiuc.edu/~hull/bib2html. + Which, in turn depends on man2html for proper installation. +man2html can be had from http://askdonald.ask.uni-karlsruhe.de/hppd/hpux/Networking/WWW/Man2html-1.05. + TeTeX users should not forget to rerun texhash. +6: CONFIGURING and COMPILING -15/May/98 LilyPond 0.1.65 1 +to install GNU LilyPond, simply type: + configure --enable-tex-dir=XXXX --enable-mf-dir=YYYY + make + make install +This will install a number of files, something close to: + /usr/local/man/man1/mi2mu.1 + /usr/local/man/man1/convert-mudela.1 + /usr/local/man/man1/mudela-book.1 + /usr/local/man/man1/lilypond.1 + /usr/local/bin/lilypond + /usr/local/bin/mi2mu + /usr/local/share/lilypond/* + /usr/local/share/locale/{it,nl}/LC_MESSAGES/lilypond.mo + /usr/lib/texmf/texmf/tex/lilypond/* +You should specify directories that are in TeX's and MetaFont's +include path with the options (--enable-tex-dir) and +--enable-mf-dir. If you don't specify any directories, the TeX +include directory is detected dynamically, which is unreliable. The +above assumes that you are root and have the GNU development tools, +and your make is GNU make. If this is not the case, you can adjust +your environment variables to your taste: -INSTALL(1) LilyPond documentation INSTALL(1) + export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR" + configure +CPPFLAGS are the preprocessor flags. - o Python. Although perl is nice, python is better. We - will shift towards python for build scripts +The configure script is Cygnus configure, and it will accept +--help. If you are not root, you will probably have to make it +with a different --prefix option. Our favourite location is - o GNU find + configure --prefix=$HOME/usr - o A fast computer (a full page of music typically takes - 1 minute on my 486/133, using the --enable-checking - compile. It's lot slower than most MusiXTeX - preprocessors) +In this case, you will have to set up MFINPUTS, and TEXINPUTS accordingly. -WEBSITE - If you want to auto-generate Lily's website, you'll need - some additional conversion tools. +If you want to install GNU LilyPond in /usr/local, and your TeX has +no default hooks for local stuff, you can do: - o xpmtoppm (from the Portable Bitmap Utilities) - (included within the RedHat package libgr-progs). + configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf - o Bib2html - (http://pertsserver.cs.uiuc.edu/~hull/bib2html.) - Which, in turn depends on Man2htlm - (http://askdonald.ask.uni-karlsruhe.de/ - hppd/hpux/Networking/WWW/Man2html-1.05) for proper - installation (ugh). TeTeX users, don't forget to - rerun texhash. +Since GNU LilyPond currently is beta, you are advised to also use -CONFIGURING and COMPILING - to install GNU LilyPond, simply type: + --enable-debugging + --enable-checking - configure - make - make install +Other options include: - This will install the following files: +o --enable-shared + Make a shared library (gnu/linux, solaris (?) only ) (TEMPORARILY +OUT OF ORDER) - /usr/local/man/man1/mi2mu.1 - /usr/local/man/man1/convert-mudela.1 - /usr/local/man/man1/mudela-book.1 - /usr/local/man/man1/lilypond.1 - /usr/local/lib/libflower.{so,a} - /usr/local/bin/lilypond - /usr/local/bin/mi2mu - /usr/local/share/lilypond/* - /usr/lib/texmf/texmf/tex/lilypond/* +o --enable-printing + Enable debugging print routines (lilypond -D option) +o --enable-optimise + Set maximum optimisation: compile with -O2 +o --enable-profiling + Compile with support for profiling. +o --enable-tex-prefix + Set the directory where TeX and Metafont live. +o --enable-tex-dir + Set then directory TeX input is in (detected as a subdir of + tex-prefix). This should be a directory that is reachable both for + tex and latex. On my system the best choice would be + /usr/lib/texmf/texmf/tex/generic//. +o --enable-mf-dir + Set the directory metafont input is in (idem). On my system the best + choice would be /usr/lib/texmf/texmf/fonts/source/public/. +o --enable-config + Output to a different configuration file. Needed for multi-platform + builds - The TeX include directory is detected dynamically, but it - can be adjusted with --enable-tex-prefix and --enable-tex- - dir. The above assumes that you are root and have the GNU - development tools, and your make is GNU make. If this is - not the case, you can adjust your environment variables to - your taste: +All options are documented in the configure help +The option --enable-optimise is recommended for Real Life usage. - export CPPFLAGS="-I /home/me/my_include -DWEIRD_FOOBAR" - configure +If you do + make all +everything will be compiled, but nothing will be installed. The +resulting binaries can be found in the subdirectories out/ (which +contain all files generated during compilation). +7: CONFIGURING FOR MULTIPLE PLATFORMS -15/May/98 LilyPond 0.1.65 2 +If you want to compile LilyPond with different configuration settings, +then, you can use the --enable-config option. Example: suppose I +want to build with and without profiling. Then I'd use the +following for the normal build, + configure --prefix=~ --disable-optimise --enable-checking + make + make install +and for the profiling version, I specify a different configuration. + configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking + make configuration=optprof + make configuration=optprof install +8: INSTALLING -INSTALL(1) LilyPond documentation INSTALL(1) +If you have done a successful make, then a simple + make install - CPPFLAGS are the preprocessor flags. +should do the trick. - the configure script is Cygnus configure, and it will - accept --help. If you are not root, you will probably have - to make it with - - configure --prefix=/home/me_myself_and_I/ - - In this case, you will have to set MFINPUTS, and TEXINPUTS - accordingly. - - If you want to install GNU LilyPond in /usr/local, and - your TeX has no default hooks for local stuff (mine is - broken too), you can do: - - configure --prefix=/usr/local --enable-tex-prefix=/usr/lib/texmf - - Since GNU LilyPond currently is beta, you are advised to - also use - - --enable-debugging - --enable-checking - - other options include: - - --enable-shared - Make a shared library (gnu/linux, solaris (?) only ) - - --enable-printing - Enable debugging print routines (lilypond -d option) - - --enable-optimise - Set maximum optimisation: compile with -O2 - - --enable-profiling - Compile with support for profiling - - --enable-tex-prefix - Set the directory where TeX and Metafont live - - --enable-tex-dir - Set then directory TeX input is in (detected as a - subdir of tex-prefix). This should be a directory - that is reachable both for tex and latex. On my - system the best choice would be - /usr/lib/texmf/texmf/tex/generic//. - - --enable-mf-dir - Set the directory mf input is in (idem). On my - system the best choice would be - /usr/lib/texmf/texmf/fonts/source/public/. - - --enable-config - Output to different configuration files. Needed for - - - -15/May/98 LilyPond 0.1.65 3 - - - - - -INSTALL(1) LilyPond documentation INSTALL(1) - - - multi-platform builds - - All options are documented in the configure help The - option --enable-optimise is recommended for Real Life - usage. - - If you do - - make all - - everything will be compiled, but nothing will be - installed. The resulting binaries can be found in the - subdirectories out/ (which contain all files generated - during compilation). - -CONFIGURING FOR MULTIPLE PLATFORMS - If you want to compile LilyPond with different - configuration settings, then, you can use the --enable- - config option. Example: suppose I want to build with and - without profiling. Then I'd use the following for the - normal build, - - configure --prefix=~ --disable-optimise --enable-checking - make - make install - - and for the profiling version, I specify a different - configuration. - - configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking - make configuration=optprof - make configuration=optprof install - - -INSTALLING - If you have done a successful make, then a simple - - make install - - should do the trick. - - If you are doing an upgrade, please remember to remove - obsolete .pk and .tfm files of the fonts. A script has - been provided to do the work, see bin/clean-fonts.sh. +If you are doing an upgrade, please remember to remove obsolete +.pk and .tfm files of the fonts. A script has been +provided to do the work for you, see bin/clean-fonts.sh. CAVEATS - o The -O2 option to gcc triggers a gcc bug on DEC Alpha - in dstream.cc. You should turn off this flag for this - file. - - o Perl5.003 and Perl5.004 use different syntax for - pod2html. - - - - - -15/May/98 LilyPond 0.1.65 4 - - - - - -INSTALL(1) LilyPond documentation INSTALL(1) +o The -O2 option to gcc triggers a gcc bug on DEC Alpha in dstream.cc. You + should turn off this flag for this file. EXAMPLE - This is what I type in my xterm: - - lilypond someinput.ly - tex someinput.tex - xdvi someinput& - - This is what the output looks like over here: - - GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0 - Parsing ... [/home/hw/share/lilypond/init// - <..etc..> - init//performer.ly]]][input/kortjakje.ly] - Creating elements ...[8][16][24][25] - Preprocessing elements... - Calculating column positions ... [14][25] - Postprocessing elements... - TeX output to someinput.tex ... - Creating MIDI elements ...MIDI output to someinput.midi ... - - hw:~/musix/spacer$ xdvi someinput& - [1] 855 - - Check out the input files, some of them have comments - Please refer to the man page for more information. - -REDHAT LINUX - RedHat Linux users can compile an RPM. A spec file is in - make/out/lilypond.spec. You should install a gif file - called lelie_icon.gif along with the sources. You can - generate this gif file by typing - - make gifs - - in the directory Documentation. - -DEBIAN GNU/LINUX - A Debian package is also available; contact Anthony Fok - <foka@debian.org>. The build scripts are in the - subdirectory debian/ - -WINDOWS NT/95 - So, you're stuck with Windows, eh? Well, don't worry, you - just need (to get) Cygnus' windows32 port of gnu - development stuff; have a look at - http://www.cygnus.com/gnu-win32. - - To make GNU LilyPond under, brr, aargh, shudder... - windows32, well, simply type: - - bash configure - make - - Note If you rely on broken DOS/Windows tools such as - - - -15/May/98 LilyPond 0.1.65 5 - - - - - -INSTALL(1) LilyPond documentation INSTALL(1) - - - pkzip/WinZIP to unpack the distribution, make sure the - entire source tree is unpacked correctly, in particular - the empty out directories (flower/out, lib/out et. al.) - -AUTHORS - Han-Wen Nienhuys <hanwen@cs.ruu.nl> - - Jan Nieuwenhuizen <jan@digicash.com> - - Have fun! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +This is what I type in my xterm: + lilypond someinput.ly + tex someinput.tex + xdvi someinput& +This is what the output looks like over here: + GNU LilyPond 0.0.78 #4/FlowerLib 1.1.24 #0 + Parsing ... [/home/hw/share/lilypond/init// + <..etc..> + init//performer.ly]]][input/kortjakje.ly] + Creating elements ...[8][16][24][25] + Preprocessing elements... + Calculating column positions ... [14][25] + Postprocessing elements... + TeX output to someinput.tex ... + Creating MIDI elements ...MIDI output to someinput.midi ... + hw:~/musix/spacer$ xdvi someinput& + [1] 855 +Check out the input files, some of them have comments +Please refer to the man page for more information. +9: REDHAT LINUX +RedHat Linux users can compile an RPM. A spec file is in +make/out/lilypond.spec. You should install a gif file called +lelie_icon.gif along with the sources. You can generate this +gif file by typing + make gifs +in the directory Documentation. +You can make the rpm by issuing + make rpm +10: DEBIAN GNU/LINUX +A Debian package is also available; contact Anthony Fok +<foka@debian.org>. The build scripts are in the subdirectory debian/ +11: WINDOWS NT/95 +Separate instructions on building for W32 are avaible +in the file README-W32.yo. +12: AUTHORS -15/May/98 LilyPond 0.1.65 6 +Han-Wen Nienhuys <hanwen@cs.uu.nl> +Jan Nieuwenhuizen <janneke@gnu.org> +Have fun! diff --git a/NEWS b/NEWS index 97fce166d1..9decb57907 100644 --- a/NEWS +++ b/NEWS @@ -1,1362 +1,11 @@ -pl 65 - - fixes for template instantiation (AO) - - junked standchen-easy, - - mudela 0.1.15: deprecate \duration, junked \octave relative - - small doco fixes - - moved data from Melodic_req into Musical_pitch (analogous to - Duration and Rhythmic_req) - - implemented \relative c' { .. } and associated Relative_octave_music - - junked \octave relative; - -pl 64.jcn2 - - simple compile fixes - - bf: beam:stemlens:knee - - hara-kiri-* - - bf: ctags - - preludes-3.lym4 - -********** -pl 64 (may 13) - -pl 63.jcn3 - - beam stemlength stuff runtime - - dropped lq for beam-stemlengths, fixes [d d d] [d g d] - - ugly sed fix for commas in .ly.m4 - - beam damp corrent fix - - scsii: small fixes - - preludes.ly; dropped silly preludes.tex - -pl 63.jcn2 - - vocabulary on website - - data-to-html.py - - bf: beam damped-slope correct - - bf: make website - - some preludes-* fixes - -pl 63.jcn1 - - "relative" sizes for titledefs - - bib2html/man2html urls in INSTALL.pod - - auto-generated feta stuff in doosdist - - bf's: make dist, docdeps - - bf's scsii - -************ -pl 63 (may 11) - - - non_fatal_error () (should use!) - - Mozart Horn concerto 3, horn part - - bf: plet-spanner - -pl 62.jcn11 - - bf: beam::set-stemlen:iterations - - knee-bug.ly - - use knee in menuetto-ii - - bit on slope damping - - some bf's and doco - - bf's scsii - - scsii: bf' new: sarabande - - bf's allemande, courante - - bf: knee: stem through beams - - bf: too high beams - -pl 62.hwn1 - - bf jcn8: deep copy Scope (ughugh. I want GC!) - - cleaned Identifier - - mudela 0.1.14 'a -> a, - - class Scope - - .bib updates - - key robustifiction for extreme octaves - - ly2dvi 0.11 - - energy "normalisation" removed. - -pl 62.jcn8 - - beam: knee input/test/knee.ly - - vimrc init for lily - - errors display column number too - - scsii: bf's, new: allemande, courante - - looked at lyric lengthen "mir________." (eerste weigering) - - beam: knee [c \stemdown c' \stemup 'c] - - expressions parsed at identifier_init - - bf: slur/stem/whole x-adjust: - * use note-col width iso mean note-witdth - * note-column:width () - - now string variables in paper too -> mudelapapersize - - paper_def: real dict -> identifier dict - - My_lily_lexer: identifier dict stack - - init paper and a4 stuff - - \include \string - - all rvalues from parser var pool -> access rvalue as \rvalue - - string variables - - ly2dvi 0.10.jcn1 - * mudelapiece, mudelaopus (ugh, fix) - * textheight - - more titledefs - - bf: table 20 typeface widths - - bf: toplevel/*.txt - - bf: ugly Documentation/mutopia fix (should rename dir to Mutopia/ ?) - - bf: make examples - - www.digicash.com/~jan/lilypond - - make website fixes - - ambiguity fixes in .ly's - - bf: relative-octave warning - - relative-octave: guess if ambiguous - - ambiguity warning for relative mode - - scsii: prelude - - bf: slur gap - - bf's: scsii: menuetto - - .txt -> $(DOTTEXT) - - make website fixes - - .txt fixes - - bf: typo make-patch - - bf: *dist.sh cleanup - - bf: release.py - - bf: make/Targets doc (removed .txt extension) - - rpm-dist.sh - - make doos dist fixes - - doos-dist.sh windoze dist script - -- removed useless spacing hack at spring-spacer.cc:692 - - bf: los-toros: do multi-bar rests (setting SkipBars = 1) - - scsii-menuetto.ly -> menuetto-urtext.ly, -cello.ly and -alto.ly - - bf: \octave c'; for relative-octaves - - bf: Documentation make - -********* -pl 62 - - no-touch hak. - - bfs: multi measure rests - - fixed the website. - - add extra space after breakable columns. - - -pl 61.jcn8 - - mudela relative octave feature: - * Documentation/relative-octaves.pod - * \octave relative; - * lilypond -f for automatically finding new relative quote positions - (sorry, fully automated convert is too complex) - * mutopia/ltor.ly: octave quotes reduced from 511 to 59 - - better conflily - - bf: abbreviation-beam-engraver: set beam::multiple_i_ - - bf: open_abbrev_parens - - dotted/dashed slurs/ties - - fixed-up scsii-menuetto; use dotted-slurs - - slur_thickness runtime - - bf: typo lilyponddefs: elevendefs - - moved hard-coded slur parameters to runtime - - make-patch -r: diff against latest release - - allow semicolons after paper_identifier and \include - - params.ly: parameterised some paper vars - - bf: beam quantise for slope = 0 - - interbeam (mult>3) open-up to paper-def to paper! - - "implemented" Paper-def::staffheight - - simplification + bf bezier clipping - - vandale fix - - moved doco from paper*ly to fonts.doc - - papers with expressions - - paper20.ly: rewrote precalculated values as expressions - - simple expressions in mudela (paper-body only) - - beam_thickness centralised and run-time... - - \nobreak - - bf: beamquantise: never sit if mult > 1 - - bf: broken slur y-offset (not!) - - pagelength hack in tex/headers - - alignment of bracket (in span-score-bar.cc) - - boolean *break_b to continue break_penalty_i; maar nu... - - removed paper20 includes, \paper_twenty from examples - - dropped latex files - - renamed standje, standchen. - - parser accepts range of mudela-versions - - Mudela_version - - String_convert::split - - bf's: los-toros-oboe - - braindead Break_req with penalty; junked Disallow_break_req and - Break_force_req - -pl 61.ag1 - - implemented octave-shifted clefs. - -******** - -pl 61 - - bf: mudela-book error msgs - - don't dist feta-tables. - - bf: mf-to-table, deps[0] catch - - reworked initialisation parsing logic; Got a no-redtape mode - for free - - 20 pt staffsize now default - - dependencies for LilyPond (-d, --dependencies). --debug moved to -D - - (c) 1998 - - ly2dvi 0.10 (JAF) - - changed \begin[options]{mudela} to \begin{mudela}[options] - - more WWW hacks. - -pl 60.jcn2 - - minor adjust for asymmetricity of beam symbol - - added TEST beam quantisation; see input/test/beam-pos.ly - - removed some empty .cc .hh - - Grandstaff -> Grand_staff (After [Gerou] and Harvard Dictionary of - Music) - - bf's: slur and tie post-processing - - cleaned-up bow: get encompass - - cleaned-up beam-yspan and beam-leftpos quantisation - - misc.cc: some funcs to get lower and upper bounds from array of values - - interval.*: Slice (Interval of int) - - added some doco to beam.cc - - removed some x,y by-ref passing in Lookup - - cleaned-up beam-yspan quantisation - - cleaned-up slur get encompass - - configure: --disable-optimise for compile without -O - -pl 59.jcn4 - - bf: beam quantise - - bf: sticky plet bug - - bf: chords in beam - - bf: typo beamquantisaton - - bf: don't blow_fit infeasible bows (x_i < x_0 || x_i > x_n) - - bf's: beam/stemlengths, beam-bug [c8 c16 c16] - - bf: placement broken tie - - yet another try to raise bar-number - - bf's: bow tangent clipping, allow higher bows - -************ -pl 60 - - mats patches: use Latex font stuff. - - fixes to the .59 patch release (jcn) - - make website|examples target - -pl 59.jcn3 - - bf: preludes-5 - - no inline compiler warnings by default - - bf: gcc 2.8 compile bow.cc - - moved functions with loops from varray.hh to varray.cc - - bf: minimum length for tie - - slur clipping standard - - bf: second broken slur minimum length - -pl 59.jcn2 - - added some to .dstream - - bf: second part of broken slur - - slur encompassing noteheads adjust - - bwv'd preludes - - bf: make-patch -d - - doc'd rerunning of autoconf - - rest of real standje (rename and move simplified standchen to - input/test?) - - bf: clipping - - bit better bar number placement - -pl 59.jcn1 - - more INLINE - - bf: multi-measure rest - -pl 58.jcn7 - - los-toros: do multi-bar rest - - - -*************** -pl 59 - - ly2dvi 0.9.hwn1, -K switch, - - doc: moved manpages in separate directory. - - do WWW stuff via make - - mutopia-index.py - - ly2dvi 0.9 (JAF) - - multi platform build fixes - - junked embedded switches, embedded MF, obsolete TeX stuff - - junked virtual matrix storage: inlined most matrix computation, - speed increase of 30% - - junked taupindefs, eglerdefs - - rm'd taupin/egler from INSTALL - - doc: engraving.bib, colorado.bib - - input hierarchy. - - -pl 58.jcn6 - - multi-measure rests: moved acknowledge from timing-translator - to -grav - - slur clipping experimental... - - bo to b - - always announce multi-measure - -pl 58.jcn5 - - bf: reset plet after reading mmrest - - try at not generating moments... - - Multi_measure_rest 'symbol' - -pl 58.jcn4 - - try at multi-measure rests: part.ly - - bf's: slur get_encompass - - bf: slur clipping - -pl 58.jcn3 - - experimental (--test) clipping of too high or tilted slurs - - nicer slur control output and ps code - - bit thicker and round-capped tuplet bracket - - bf: slur.cc: RESIZE_ICE - -pl 58.jcn1 - - varray.hh bezier.cc, slur.cc patches to avoid gcc 2.8.1 ice - - some inlining fixes - - configure: use -O to enable inlining - - included and fixed new make-patch.py - - bf: Mutopia.make - - bf: offset: operator - () - - ugly hack bezier: do blow_fit twice - - bf's: bezier: rotate,translate - -*************** -pl 58 - - more *.make hacking - - bracket fix (AG) - - clef fix (PC) - -pl 57.jcn1 - - reincluded test/bow.cc - - promoted Bezier bows to standard - * bf's: broken slurs - * some bf's: verneukeratificering van JCN code - * some bezier slur doco - * calculate Ties with Bezier bow - * junked tex-slur.cc - * junked ps-slur code - * junked height-only slur-correction - * lots of bezier/slur fixes - * bezier:blow_fit - -************** -pl 57 - - verneukeratificering van JCN code. - - lots of updates on our own makefile system. - - junked automake & documented it - - put rods into Spring_spacer too. Much cleaner - - bf: weird spacings (enge floats) - - bf: too many constraints added. - - smarter constraint check - - bf: table16 fontsize. - - - 56.jcn1's empiric computer science. - - debian patches (AF) - - solaris/irix patches (AO) - - - pl 56.jcn5 - - bezier and slur: cleaning and fixes - - bf: removed silly experimental beam feature - -pl 56.jcn4 - - reintruduced slope in bug [c8 c16 c16] in favour of stemlen bug... - - staff-side: accent half line higher - - reincluded silly los-toros latex file - - bf's: bezier.cc,bow.cc, mat.hh: rotate - - bf: bezier slur: handle broken slurs - - bf: beam - - dehairifications of bezier.cc - -pl 56.jcn3 - - bf's: offset multiply, matrix rotate - - dropped los-toros latex file - -pl 56.jcn2 - - even nicer excentric slurs; - - input/slur-bug.ly - - los-toros with barnumbers ;-) - - nice version of height-ajust bezier slurs (see sleur.ly --test) - - bf's beam: - * slope in[c8 c16 c16]; - * allow no INTER position for normal quantising - -pl 56.jcn1 - - bezier curves with raaklijnen - -pl 56.ag1 - - `Makefile.am.wild's now should work correctly with VPATH (AG) - -************ - -pl 56 - - more dutch vocabulary - - Barnumber FAQ added - - bf: abbrev over whole note. - - feta: reverse turn. - - bf: rod distance - - bf: local key clashing - -*********** -pl 55 - - bezier check and ajust for slur height - - better slur height ajust - - DO chmod 755 *test/*sh - - bf: discretionary of || - - bf: scripts within staff - - NOT Grandstaff -> Grand_staff (yet?) - - bf: cresc. decresc. height lookup.cc,init/table* - - bf: staff-symbol (script placements) - - staff-group-bracket - - bf's preludes, los-toros - - nicer trills - - adjustment slur extend - -********** -pl 54 - - bf dynamic_grav - - bf accidentals with key change - - bfs with command-items in non-breakable columns. - - typos (thanks LM) - -pl 53.jcn1 - - two new BUGs - - preludes-* with trills - - nicer trills - - fixed ugly slur extend bug - - first try at symphonic work: (start of) Coriolan - - fixes: los-toros - - test/ with some stupid tests - - bf, again midi-output - - --no-timestamps options for lily/mi2mu (to enable make check targets) - - removed doubles in lilypython - - smarter prev_version for make-patch - -*********** - -pl 53 - - bf: c4 \< c4 \< - - bfs of spacing stuff - - -pl 52.jcn6 - - make check target - - moved flower/test to flowertest - - dist fixes - - flower no longer independent package - - bf: GNUmakefile - - bf's: configure: debugging (default) /profiling - - bf: Rational iface (fixes MIDI output) - - bf: non --srcdir configure + build with GNU make (ugh) - - ugh: autowildflower - - bf's: invoking wild-perl - - bf: ugh: staff-side.cc: placement height - - bf's: gnu 2.7.2 link (huh?, everyone using 2.8?) - - make-patch: default diff against (copy of) srcdir - - bin/conflily configures in ../build - - GNUmakefiles that do: - * auto-update of Makefile.am.wild - * auto-switch to builddir - - bf's: configure --srcdir - - fixes for los-toros/twinkle/test-lyrics - - latex file for los-toros (ugh) - - staff-side: symbols closer... - - half fix of midi output? duh. - - oboe1 los-toros - -************ -pl 52 - - split up elem-group stuff. - - per line widths - - miscellaneous fixes by WL. - - -pl 51.jcn1 - - bf's: dutch->nederlands - - Cygnus b19 compile/link fixes - -************ -march 27 -pl 51 - - changed dutch -> nederlands, german -> deutsch etc. - - norwegian (AG) - -pl 50.jcn4 - - fixes for cygnus' gnu-windows32 beta19 - be sure to compile with -fno-rtti - - proof of concept for automated updating of Makefile.am - see mi2mu/GNUmakefile (still somewhat clumsy) - - mv'd both config.hh.in to acconfig.h - - copied printing/debugging/optimising options to flower conf - - (some modified) fixes from AO - - beginnetje los-toros-oboe - - bf: DIR_DATADIR - - bf: trills - -************ -pl 50 - - deprecate autowild - - --srcdir fixes - - ly2dvi 0.8 - -pl 49.jcn2 - - static (default) and/or shared libs flower and lily - - patch from AO 'libtool 1.1.1' - - mf: trill-symbols: feta-slag.mf - - shared libs (ugh: hardcoded switch in configure set to static) - - some fixes: denneboom.ly, standje.ly/standchen.ly - -******** -march 19 - -pl 49 - - parser assert changed to warning - - fix stdin reading - - small jcn fix - - changed unbound Spanner from assert to warning - - forced breakpoints - - add a nowildcard: stmt to wild-perl - -pl 48.jcn5 - - ugh: double parser/lexer: - be sure to rm lily/parser.cc lily/lexer.cc or bin/clien - before re-running autowild! - - V.RSION - - bin/clien bin/meek - - bf's: flower/VERSION, flower/config.hh, lily/lexer/VURSION - lib/config.hh bin/convent-mudela - - lost of automake fixes - - automake - -****** -march 12 -pl 48 - - Pitch_squash_engraver makes Rhythmic_staff possible. - - some fixes to buildscripts for sgi irix - - misc. patches (WL) - - move away from libg++: rolled own Rational class.. - - don't make gif files Documentation/ by default - - ly2dvi manpage (JAF) - - ly2dvi 0.7 (JAF) - - more clefs. (MB) - -pl 47.jcn2 - - bf: interbeams and beam-stemlengths for size != 16 - - bf's: preludes - - more introduction - -pl 47.jcn1 - - voice{one,two,three} defines - - preludes-*: fixes, junked multi, broke-down score-block - - mudela-book: added center option - -****** -march 6 -pl 47 - - Abbreviation now a separate item. - - bf'd some gcc 2.8 warnings. - - bf'd spurious space in autodep. - - more clefs (MB) - -pl 46.jcn1 - - start mudela introduction - - -pl 46.jcn2 - - bf's: preludes-* - -******* -feb 27 - -pl 46 - - span-bar at upstep. - - bf: \score { \score_identifier } - - tenor clef (MB) - -pl 45.jcn2 - - preludes-4,5,6 - - bf's denneboom (oeps, see loop) - -pl 44.jcn7 - - text-item.cc: try to get fingers just above note... - - set minimum space between columns - - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-( - - bf's midi ascii-debug output - - bf: property instrument - -******* -feb 12 -pl 45 - - bf: translator switching - - SunOS and IRIX patches (AO) - - preludes bugfixes; preludes.tex ugh (JCN) - - shared lib numbering (AF) - - various fixes for debian (AF) - - ly2dvi .6.jaf (JAF) -pl 44.jcn6 - - bf: crescendo.cc: bigger and use bar_size - - slur: guess extra height for height limit for extending notes/stems - - ps: adjustable slur height limit, bf crescendo - - -****** -feb 6 -pl 44 - - ly2dvi 0.6.hwn1 - - ly2dvi 0.6 (JAF) - - use ly2dvi for website - -pl 44.jcn2 - - fingers default to above note - - preludes-2.ly - - parser: fingerings - - preludes-1.ly - - bf: denneboom.ly - - preludes-3.ly.m4, standje.ly, preludes-4.ly - - make rule for macro ly-files - - pletvisibility (init/property.ly): - * default no bracket with beams - * invisible plet bracket feature - - finger dir in text-def - -******* -feb 2 - -pl 43 - - bf: broken Plet_spanners - - more GNITting - - avoid some more global ctors, for NeXTstep - - some NeXTStep patches from tiggr - - don't do overstrike/bold chars in textfiles - - -pl 42.jcn2 - - bit hesitating start of mutopia - - bf: don't try to typeset unterminated plet - - separately sticky plet durations: "c4 c4*2/3 c8 c4*1/1", ok Mats? - - denneboom.ly (half-baked version) - - indent and shape, see ^ - -pl 42.jcn1 - - bf: memmem revisited - - bf: ps: draw_plet vertical endings - - renamed stem_start to stem_begin - - bf: plet bracket placing on differently orientated stems - - more standje.ly and fixes -****** -jan 28 - -pl 42 - - ly2dvi 0.5 (JAF) - - italian.ly (thanks, Paolo) - - bf: first \mudelapaper output (BS) - - bf: cathedral + bazaar URL (thanks, Barrie) - - bf: libc-extension.hh (AO) - -pl 41.jcn4 - - plet brackets (always) in ps (only) - - Plet_spanner derives from bow - - bf: mf/Makefile: let %.tex %.ly depend on %.mf, - iso non-distributed %.log - - mi2mu mudela 0.1.8 - - bit better plet number placement - - handier plet syntax: [2/3 c8 c c ]1/1 and \[2/3 c2 c c \] - - Plet_swallow_engraver for lyrics - - bit better plet number placement (NOT) - - new plet syntax: combined beam and plet open - - more standje.ly - - new plet syntax: start: \plet2/3 stop: \telp1/1 - - Plet_req, Plet_engraver; removed plet stuff from beam - -****** -jan 20 -pl 41 - - warn for score with multiple Music blocks - - bf: \plet (MB) - - \textsharp in 16pt - - malloc frobnifying - - more fontsizes: 26pt, 11pt, 13pt - - \textstyle "bold" - - .rpm: remove old fonts - -pl 40.jcn2 - - bf: typo scores.cc - - bfs: non-default base constructor calls - - bfs: virtual destructors - - standje.ly: the real standchen (first bit) - - gcc 2.8 compile - - nicer scsii-menuetto - -pl 40.jcn1 - - bf: breaking of :| bar - - bf: lyric substitution of _ -> ' ' flower/libc-ext:memmem - - no slope=0 beams between stafflines - - bf: tex without lily-ps-defs - - bf: embedded mf shift: added '%' to \embeddedps - - doos compile - -****** -jan 12 -pl 40 - - some doco fixes - - debian diffs (AF) - -pl 39.jcn2 - - bf: bit smarter atan() for feta-sleur (thanks wendy) - - bf: y quantise of multiple down beams (typo) - - minor doc fixes - - bf: distribute mfdeps and moved from mf/out/mfdeps to mf/mf.dep - - some changes to ANNOUNCE - - fixes for simple slur/tie placement - - embedded MF fonts identified by parameters -> reusable runtime fonts - - clean-embeds.sh - - runtime MF beams: feta-beum.mf - - bf: enable switching PS off - - updated runtime MF feta-sleur.mf with new PS slur algorithm - -****** -jan 5 1998 -pl 39 - - 0.2 ANNOUNCE sketch - - unix style paths for LILYINCLUDE env - - show all output pages on website - - ps-to-gifs.sh - - bf: wtk1-fugue2 - - python make-website - - higher brace resolution - - phased out musixtex stuff - - bf: rhythm.ly - - PS slurs - - PS beams - - Bow units - - turn on PS by default - - turn off barnumbers by default. - - bf: halfbeam size. - - bf: -M bug - - stafflinethick in PS (crescendi) - - continued (de)crescendi (in PS) - - bf: spurious beam reqs - - handle unfeasible spacing cleanly. - - ML-address change - - output naming: default to basename[-serialnumber].{midi,tex} - - bf: clef width - -pl 39.jcn2 - - make-examples.sh - - leftright repeat sign + repeatbar dims - - smaller minimum sized rod at end of bar - - bf: spacing.ly - - less space at begin of bar - - experimental whitespace fixes at begin and end of bar - - added to beams.ly - - open-up beam spacing for mult > 3 - - fixed hang/sit to overlap iso aligne with staffline - - fixed inter beam spacing, paper*.ly - - scsii-menuetto.ly fixes - - init/property.ly - - property settings for beam quantiseing and damping - - provisionary multiple-beam fix - -****** -pl 38 - - bf: \> \! \ff (crescendo overlap) - - misc feta-fixes, flageolet sign. - - midi tempo fixes. -pl 37.jcn3 - - max beam slope "compile time parameterised" and set to 0.6 - (oh, how we need runtime generated beams!) - - beam's left y-pos quantisation - - beam slopes' y-span quantisation - - stem.ly - -pl 37.jcn2 - - feta: fixed sizes small numerals + flageolet - - -******* -dec 12 -pl 37 - - --postscript - - don't crash non-fitting grouping (thx, John) - - attach unended spanners to a column (thanks John) - - bf: unended tie - - bf: tie direction - - bf: unended slur - -pl 36.jcn2 - - feta: small numerals - -******** -dec 9 - -pl 36 - - bf: notehead collisions - - bf: dot y-position - - use Item::break_priority_i_ for horizontal alignment of breakables. - (it still sucks) - - junk some derivation checks, junk Normal_*_bar - - FlowerLib fixes. - - twinkle fixes. - - feta: flag/clefspacing - - -******* -dec 5 -pl 35 - - naming: lily-init iso symbol.ly - - mf braces - - center textscripts. - -pl 34.jcn1 - - mf: nicening of dyn, klef, rest - - fingerfont - - bf: 12/8 - - -******** -dec 2 -pl 34 - - bf: mf: numbers and alto clef - - bf: scsi-menuet - - PS crescendos - - ly2dvi diffs (JAF) - - debian diffs (AF) - - w32 doco fix (JCN) - - -******** -nov 24 - -pl 33 - - added abbrev.ly to font.ly; rm'd abbrev.ly - - don't process scores on parse errors. - - bf: kortjakje.ly - - bf: invisible stems in beams (abbrev.ly) - - lytodvi script (JAF) - - output Paper_def settings to TeX file. (eg: linewidth) - -******** -nov 19 -pl 32 - - change type checks (ughugh) to derivation checks (ugh) - - this fixes clef bug. - - bf: order of breakables: meter comes after bar. - - bf: do error iso coredump on unknown symbol-table - - bf: release.py, copy patch too. - - bf: add makefile dep for disting MF logs. - - bf: don't read font-en-tja*.ly, but feta*.ly - -pl 31.jcn2 - - first version of (non-ugh) c-klef - - bf: mi2mu: notes of zero duration as comments - - feta: ugh c clef - - -******** -nov 17 - -pl 31 - - bf: replaced Score_column assert by a warning (thanks Scott) - - bf: mi2mu version output (thanks Scott) - - faq updates - - always output lily header with Lily version - - bar mucking: make scorebars/braces different from repeat bars. - - feta: repeatcolon, clef bf's - - debian/ updates. (AF) - - moved debian stuff into toplevel dir - -******** -nov 11 - -pl 30 - - feta: G clef. - - scripts now do relative coords (fixes lyrics + barnumber bug) - - bf: Lyrics lexer mode - - bf: bass clef - -******** -nov 6 -pl 29 - - feta: bass clef, bf: dynamics, bf: 64th flag - - -******** -oct 30 -pl 28 - - revised Staff_symbol::brew_molecule_p () - - naming: \makelilytitle - - fixes for TeX titledefs (JAF) - - junked some obsolete pedal stuff. - -pl 27.om-je-te-helpen-met-je-ps-spul.jcn1 - - embedded slurs: - * bf: placements - * added \embeddedtex - * postscript is default - * fixed \embeddedps - * fixed mf: draw_slur - * postscript macro: draw_slur - -******** -oct 29 -pl 27 - - -t/--test switch for experimental stuff. - - bf: debian optimize is not with 'z' - - mf: naming feta fonts are now called feta16, feta-beams16, etc. - - feta: ledgerline - - lily adjustments for new and elegant ledger line - - bf: mf-source path. - -pl 26.jcn1 - - bf: numerals - - sleur.ly - - embedded slur testing - - bf + patch: make-patch release.py / VERSION - - -******** -oct 26 -pl 26 - - bf: \transpose - - feta: numerals 0 - 9, rewrote flags. - - - -******** -oct 22 - -pl 25 - - variable stemlength - - feta: 32nd, 64th flags - - font.ly - - dist & tarball made in out/ - - rewrote release.sh in python - - notehead/stem attachment better. - - more Stem cleanage - - related Beam cleanage - - started numeral font (JCN) - - bf: whole rest outside staff. - -********* -oct 20 -pl 24 - - internationalization preps (FP) - - rewrote make-patch in python - - BUGS: added another flex/libio crash explanation - - feta: flags - - -******** -pl 23 - - feta changes: 1/4 rest, flat, bf 8-128 rest - - bf: cadenza - - bf: scripts - - bf: rest-collision - - bf: meter placement - - junked cpgento.sh - -********* - -pl 22 - - bf: lyric 's- Zondags - - bf: colliding accidentals: renamed translate(Real,Axis) to translate_axis() - - renaming of scripts - - strings with escaped characters. - - bf "string_with_\"_embedded" - - bf: mf/Makefile - - feta changes (trill, organ pedals) - - updated mf-to-table for new feta conventions - - changed header format to something sensible. - - moved staff to centerline == 0; - -******** - -pl 21 - - shrinking uses more energy than stretching - - check IO error on writing (disk full?) - - -********* - -oct 8 -pl 20 - - don't swallow non lyric-stuff in lyrics - - x-position of Stem - - more feta changes - - move scripts to right - - genheader.py replaces genheader.perl - -pl 19.jcn2 - - bf's mi2mu: - * Midi_track_parser::note_end_all - * staff output uses key, meter, tempo read - * command line read minor key - * minor key notenames - -pl 19.jcn1 - - small changes to sharp, fermata - - small changes to lilypond.lsm+doc, lelievijver.lsm - - mi2mu updeet + bf - -pl 19 - - bf: keyword.cc rm'd struct defs - - dots: support for feta dots. - - lots of font (feta) tjanges - - mf-to-table rewrite in python - -********* -pl 18.jcn1 - - check for python, mf-deps fix - -pl 18 - - bf: Box[X_AXIS] = b - - bin/mf-deps.py script - - moved beams out of font-en-tja into vette-beams. - - Made corresponding .cc changes. - - -jcn patches - - egcs compile (no link yet) - - nicer 4rest - - beam font (je kunt wel tegen een grapje, eva?) - - mf-to-table: - * "breapth" (x-depth) feature - * handle generic stuff such as beams - - polished noteheads - - fixed 8-128 rests - - 4rest - - mf-to-table generates tex defs - - bf:mf-to-table and conflily outname check - - 8-128 rests - -****** -sep 24 - -pl 17 - - bf: ledgerline width - - bf: toccata-fuga-E - - took out some hardwiring of tex-beam - -pl 16.jcn1 - - mf-to-table.in: generate mozarella metric info tables - - autometric.mf: write metric info to mf logfile - - ital-r.mf, smaller ital-m.mf - - variable streepjes length (top/bottomlines); fixed (for 20pt?) - - streepjes twice as thick as staffrules - - even more pronounced bolletjes -- how 'bout this wendy? - - quarter and half note after drawings (a/b less distinct) - -***** -sep 19 -pl 16 - - revised mudela-man a bit - - ; optional after \musicidentifier - - bf: doco about {Mus*,Opus}TeX - - bf: configure: MFDIR - - bf: String::operator bool () removed - - bf: String::operator char const * () removed - - bf: Line_spacer::~Line_spacer () added: plugged memleak - - bf: Line_of_score::do_unlink () call Spanner::do_unlink - - bf: rests in beams - - bf: textnatural - - bf: 20 pt flags - - bf: longarest - -pl 15.jcn1 - - bf: typos whole and half notehead - - de-uglyfied bolletjes.mf - - ascii output of font metrics in mf logfile - -****** -sep 17 - - -pl 15 - - put top of NEWS file in the webpage - - breadth first search for engravers. - - bf: coriolan-alto.ly - - Stem / Notehead width now properly calced - - Atom and Symbol merged - -pl 14.jcn1 - - lily's own noteheads (balls/globes :) (font-en-tja*.mf) - - {table,paper}* and taupindefs adaptations (when are we moving?) - - fp, sf, sfz dynamics - - font.ly - - bf: dist mudela-mode - -******* -sep 15 - -pl 14 - - Simple but nifty mudela-mode.el for Emacs - - slightly better syntax for single-note-repeat, now default kept in -Stem_engraver - - bf: Abbrev_beams are not the only beams (see: jcn4, stem-info, thanks, Jan) - - a CPU timer for Interpreting and Breaking - - Separate Score_elem: - * invoke-once stuff in Super_elem (using function pointers; much cleaner now) - * geometrical stuff into Graphical_element - * Axis_group_* accept Graphical_elements iso. Score_elems - * A dimension cache, hopefully this makes lily a bit faster - * TeX output moved out of Score_elem, separate interface Outputter - - - < \multi 2; bla > -> \multi 2 < bla > (mudela 0.1.6) - - bf: don't do \multi if \type specified - - Translator switching: Change_translator, Change_iterator - - -pl 12.jcn4 - - fixed dynamic f, magstep bug - - gaps on abbrev-beams - - bf: stem-info - - bf: last abbrev - - bf: stem: do_width - - bf: removed rest-column.hh - -******* -sep 11 - -pl 13 - - big Rest/notehead rewrite: - * separated Rest, Note_head and Dots - * Dot_column: dots are now chord-wise aligned - * Rhythmic_head is base for Rest, Note_head - * Merged Note_column and Rest_column - * Rest_engraver - - grand Engraver/Translator/Performer rewrite. - * properties: \property voice.dir = -1 (mudela 0.1.3) - * Input_translator junked, now Translators are generated -by the parser (mudela 0.1.4) - * Translator changing: \translator Staff=oboesolo - * Translator preselect: \type Staff=bla < c4 >. (mudela 0.1.5) - * Engraver/Performer now derived of Translator. - * Engraver_group_engraver/ Performer_group_performer derived of - Translator_group - * renamed: Voice -> Thread, Voice_group -> Voice - - renamed Audio_score to Performance - - junked mididef statics - - Audio debug output - - bf: excess [] in scsi - - bf: swallow \skips - - bf: don't crash on infinite dims - - renamed wohltemperirt to wtk1-fugue2 - - bf: address in GPL - - bf: errors in stdin - - bf: stop if errors in init files - - bf: move stem too when doing collisions - - Molecule::add_XXXX -> Molecule::add_at_edge () - - doco updeet: why no midi FAQ, index, CodingStyle hungarian - - -pl 12.jcn3 - - try at better dynamic font, copied from cmbxti10: mf/* - - typesetting abbreviation beams; abbreviation-* - - some simple abbrev fixes + code cleanup (dank je, lieverd) - - typesetting simple abbreviations: c4:16 === [c16 c c c] - -pl 11mb - - Support also for \longa in duration-convert.cc, init/ and tex/ - files. (MB) - -******** -sep 3 - - -pl 12 - - bf: don't redefine tex primitives like \textfont and \mathfont - - nicer broken slurs (?) - - bf: error status upon parse error - - robustness in Lookup::*slur - - bf: mi2mu: warn if 0-length string in midi-file - - output id-footer - -******** -sep 1 - -pl 11 - - forms for Musical vocabulary - - ignore \r for windows - - Now paper{score,def} & midi{def,score} derived of class -Music_output[_def]. Score is almost empty. - - Engraver hacking: - * junk Text_engraver - * Timing_engraver - * barnumber now really counts the number of bars - * Separated Stem_engraver and Beam_engraver - * junk Stem_beam_engraver - * no need for Stem_reqs - - use Direction = {LEFT, RIGHT, UP, DOWN} iso. -1, 1 throughout source - - ties and slurs with Drul_array - - junked Spanner_elem_group - - bf: w32 fixes - - Spanner now spans items. - - more GNITting ( bla ) -> (bla), indentation - - Drul_array - - Paper_column now is derived of Horizontal_group_item. Items -are no longer hardwired into a Paper_column - - bf: stdin input - - PCol -> Paper_column - - Wtk-i, fugue1, prelude1 (SR) - -******* -aug 21 -pl 10 - - bf: init pending_indent_i_ - - output header to TeX file. Who wants to write TeX to make it work? - - - mi2mu: bf's, --key option - - removed Duration(int,int) - - bf: Duration_convert::dur2_str - -pl 9.jcn2 - - redo of mi2mu frontend (midi-parser) - - bf: String_convert::bin2_i; added bin2_u - - bf's: Binary_source_file - - bf: constr. Tempo/Timing_req -pl 0.1.8.jcn3 - - table20, standchen-{16,20}* -******* -aug 18 - -pl 9 - - declare rhythic_request - - preliminary support for real \mudelaheaders - - context-sensitive arithmetic spacing. Looks alot better - - silly GNU braces. - - JCN fixes for pl 8 - - bf: midi instrument - - Vocabs from GMP-I - -pl 8.mb: - - use log of duration-name - -******* -aug 15 -pl 8 - - - gif -> xpm - - bf: Whoops! Open eyes now, when finding shortest note in -spring-spacer. Fixes spacing problems. - - GNU coding: parentheses (here you are, Franc,ois :-) - - all macros now UPPERCASE - - Identifier blondification: don't use void* - - Identifier doesn't store its name. Much cleaner now. - - bf: Rest_collision_engraver now always announces - - bf: announce Staff_sym only once -pl 0.1.7.jcn1 - - complete redo mid/back-end of mi2mu - - bf: do not create/play empty Audio-{text,instrument} events - - -******** -aug 14 - -pl 7 - - Audio_element as base for Audio_item and Audio_staff. fixes -midi-lyric segfault - - added "Gallina a due violini" (MB) - - make MIDI files on website. - - Collision now also is an Element_group. - - bf: announce Collision when created - -******** -aug 13 -pl 6 - - bf: 13 shift/reduce in parser fixed - - bf: plets in parser - - bf: main.o (again) - - german notenames (RM) - - Score_elem::offset_ now relative to its X/Y groups. Slight -speed increase? - -******** -aug 12 -pl 5 - - - Wordwrap revert - - added LilyPond in WWW titles - - oops. A quaver is a 8th note, not a 4th - - bf: main.o remaking in lily/Makefile - - unhair Voice_iterator - - bf: error if no music in score - - bf: don't create translators if Chord element is empty - - bf: ctor of Tempo_req - - use virtual do_equal_b() for request comparison - - bf: turned off default plets: c4*2/3 c4*2/3 -> c4*2/3 c4*4/9 - - bf: time_int() of an empty chord/voice - - more corrections to GMP Manifesto - - debian updates (AF) - - bf: g++ ICE in Performer_group_performer - - use fread() for reading in Simple_file_storage - -pl 0.1.3.jcn1 - - mi2mu: simplification +bf lily_stream: indentation and wordwrap - - mi2mu: bf: blunt: non-alpha(num) chars from identifiers - -********* -aug 11 - -pl 4 - - correction of GNU Music Manifesto - - moved lowlevel stuff of Source_file to Mapped_file_storage. -Interface via File_storage. (Now using Simple_file_storage) - - bf: c4-"A"-"B" - - bf: exit status - - declarable keys - - Engraver_group_engraver::find_simple_engraver() - - bf: lily/Makefile - - bf: Midi_note_event ctor - - bf: tempo request - - popular twinkle twinkle (JV) - - mudela: parse tempo requests, \midi{ \tempo 4= 60;} - -****** -aug 8 -pl 3 - - don't crash if no Clef_engraver. - - PScore -> Paper_score - - bf: Score_elem::extent() init of interval - - bfs: {Horizontal,Vertical}_group related - - bf: don't change original Item while doing making - multiple copies - - bf: configure DATADIR - - bf: type of spanbar. - -pl 0.1.2.jcn1 - - minor doco fixes - - revived Midi_walker - - moved midi out of performer-* to audio-* - - Audio_staff - - removed all <ugh> members from performers - -******* -aug 7 -pl 2 - - junked Line_of_staff - - bf: --output - - bf: . in lexer - - bf: mi2mu version number. - - bf: in mudela-book - - bf: don't forget to make mi2mu - - Bar_number_grav: measure numbers (experimental) - - Bar_column_engraver, Bar_column: scripts on bars - - rewrite of {Horizontal,Vertical}_group. Yes, again. -Now neatly integrated into class hierarchy - - Axis, Axis_group - - Debian rules (AF) - -pl 0.1.1.jcn1 - - Audio{column,score,item,...}, more generic audio - - bf: Makefiles - - bf: mi2mu mudela version -********* -aug 5 - -pl 0.1.1 - - {Horizontal, Vertical}_group. A score_element may be in at most one. - - This means Horizontal_group_item and Vertical_group_spanner need special support. - - This also means a big speed increase - - configure cleanup - - bf: Choleski solve. - - doc updates: lilygut, INSTALL - -pl 0.1.1.hwn - - recode of Break/Colhpos interfaces - - Gourlay_breaking: dynamic-programming optimal solution for - casting off. Word_wrap is still optional - - some printing short cuts if no -d specced. - - band_matrices for column calcs - - more Diagonal_storage fixes - - retake: INFTY fixes ( now infinity_mom, infinity_f ) - -pl 78.jcn3 - - configure: ln and zip - - target doosdist -> lilypond-x.x.x.exe.zip: + executables - sources - +pl 1 + - mi2mu fix: \key "D" + - \hoffset + - started new NEWS file + - lots of stepmake hacking + - aclocal.m4 copied from stepmake + - ly2dvi 0.12 + - build the doco from the source tree. + - include website in RPM diff --git a/NEWS-0.0 b/NEWS-0.0 new file mode 100644 index 0000000000..f936254a1f --- /dev/null +++ b/NEWS-0.0 @@ -0,0 +1,1170 @@ + +This file documents changes in version 0.0 + +august 1 + +VERSION 0.1.0 + + - bf: output tempo to track 0 too + - bf: don't forget to copy id_str_, so moved into Music + +pl 78.jcn2 + - INFTY doze fixes + +pl 78.jcn1 + - fix for multi-staff midi: wohltemperirt.ly, standchen.ly + - doze fixes + - bf: conflily, configure (text) +***** +july 31 +pl 78 + - bf: Midi_instrument + - added enable/disable defaults to help. + - incredibly ugly NAME_MEMBERS(); bug. Immediately changed to +DECLARE_MY_RUNTIME_TYPEINFO; + - \stem -1 -> \stem \down in input + - bf: slurchar index + - configure warnings + - preliminary stuff for multiarch building + - #!/usr/bin/perl fixes (AO) + - some Makefile cleanups: now faster. + +pl 77.jcn2 + - Midi_instrument + +****** +july 29 +pl 77 + - some fixes for internal compiler errors +derive from Pointer_list with default dtor gives error with -O2 + - .ini -> .ly + - lyrics fix + - Performer beautification: got rid of set_track(), midi_output() + - pseudo RTTI for midi-items + - bf: Performer*::print() + - links.pod + - Voice_element -> Request_chord + - fixed flex problems: stdin input works again + - Documentation/Rules.make, make-website via make + - spacing: now add basicspace + +******* +july 28 +pl 76 + - mudela version bumped to 0.1 + - mudela-book + - doco updates, now some stuff in LaTeX + - junked book.{ly,tex} example + - progress indicator + - rhythm.ly updated + - removed mf sources from distribution due to (c) stuff + - allowal of breaks handled cleanly + - junked Subtle_reqs, junked Request_iterator. Request + iteration now by Voice_element_iterator + - Piano_bar, Piano_bar_engraver, Span_score_bar_engraver, + Span_score_bar + - Swallow_performer + - removed Staff_engravers, grouping into Line_group_engraver + - Head_column as base for Rest_column,Note_column + - Score_column derived from PCol + - regurgled Line spacing: interface and implementation + separate. Idealspacing moved into Spring_spacer + - Gourlay style linespacing + +pl 75.jcn6 + - {lyric,meter,key}-performer + - span-brace-* (Removed again. Such is life) + - doze compile + - midi output, notes only + - working midi output -- hacked + - doze compile, mingw32 configure (still triggers gcc int. comp err) + +pl 74pre.jcn2 + - mi2mu fixes after scott snyder <snyder@d0sgif.fnal.gov> [sss] + - mi2mu update for mudela 0.0.61 + - conflily fixes + +******* +july 21 + +pl 75 + - inbook.ly & book.tex example. + - natural width: linewidth = -1.0\cm + +pl 74pre.jcn1 + - oversimplified midi output thru performer hierarchy + - bf: Spanner::doprint + +pl 72pre.jcn1 + - naming fixes; some iter*() explicitations + - removed acceptor.hh + - *performer*: second draft of midi (audio/...) + +******* +july 9 + +pl 74pre + - Input_engraver -> Input_translator + - bf: span start/stop is now a "used" col. + - Rest_column/Rest_collisions bugfixes + - bf: crescendi. + - Spanner do_print() + +****** +july 7 +pl 73pre + - some refs doco. + - move Input_engraver into Paper_def + - junk Interpreter + - naming: Request_engraver -> Engraver, + - Music_iterator::next() -> process_and_next() + - junk Voice_engravers + - Span_bar, Span_bar_engraver + - Vertical_align_engraver + +******* +july 2 +pl 72pre + - \paper{} syntax: var = 1.0\pt;, with an Assoc array + - sketch of MIDI Performer classes. + - bf: memleak in parser + - naming: Acceptor -> Translator + - input: bf collisions.ly, scales.ly + - bf: [r8 c8] + - naming: Register -> Engraver + - force \\ on identifiers + - doco updates + - musixtex T73 fonts + +pl 70.mb + - bf: find syntax in Variables.make +***** +july 1 +pl 71pre + - nested \melodic and \lyric constructs + - init id's, Input_register aliases. + - bf: notehead x-swap + - bf: auto-keys. + - bf: first clef + - junked \init_end; construct + - Preparatory work for MIDI output: + * Acceptor as baseclass for Register_group_register + * Global_acceptor as interface of Register to Score + - bf: empty voice + - Lyrics: partially working + - some doco updates (junks, mostly) + + +****** +june 30 + + +pl 70pre + - bf: text Script + - bf: Script::dir_i_ checks. + - bf: script stacking + - bf: Text_spanner::do_subst. + - bf: Text_spanner::Text_spanner(Text_spanner&) + - bf: script priority read from script.ini + - bf: Script_def::do_equal_b + - bf: script dims. + - mudela: ; obligatory for \paper {}. + - some cosmetic changes involving RTTI macros + +******* +june 29 +pl 69pre + - bf: whole rest position, whole/half rest dots. + - bf: scripts + - reg termination + - centered bars + - bf: init of Tie::dir_i_ + - bf: Staff_side depends on staff_sym_ + - bf: Script::do_substitute_dependency() now implemented + - more print info (also in output) + - bf: Vertical_align_element + - stemless beams now allowed (with warning) + - bf: Rest_column::stem_l_ init + - merge rests.ly with collisions.ly + +pl 67.jcn3 + - rests under beam [c8 r c] + +pl 67.jcn2 + - first attempt at rest collisions + - rests.ly + +pl 67.jcn1 + - beam stem length: beams.ly + - bf: mingw configure + - re: conflily + +****** +june 26 +pl 68pre + - doco: other-packages.pod, lots of lilyliterature.pod + - last duration mode now is default. + - some OpusTeX stuff. + - bf Y2K in convert-mudela + - Grand rewrite of Music/Register stuff: + * separation of Y and X-elt-groups + * Registers: info up: broadcasts, info down: get_xxx_info() + * Registers: try_request works from bottom to top of tree. + * Score_elem empty_b_ and transparent_b_ flag + * Junk Staff_column, and find the requests while walking the + Voices. + * Score_register + * Staff_group, Score_request_register. + * align key/Meters/bar across staffs + * junked Staff, Staff_column, Staff_walker, Complex_walker, + Request_column Pulk_voice, Pulk_voices, Walker_registers, + Voice_element, + Input_score, Input_staff, Input_music and a lot of + parserjunk. + * mudela: lots of structure changes : now much simpler + * generation of pre/postbreak items now in Score_elem with deps. + + - bf: make_patch explanation + - bf: make install TeX stuff + - mudela: . mandatory for REALs + + +pl 67 + - damped beamslope after wanske + +****** +june 3 +pl 67 + - sketch of Music classes + - General_script_def as baseclass for Text_def and Script_def + - bf: clean lib/out/liblily.a + - bf: rests shorter than 1/4 + +pl 66.jcn3 + - bf: make uninstall + - conflily + - f: some pedaling + - plet hack removed :-( [ c c c ]2/3 -> [2/3 c c c ]1/1 + +pl 66.jcn2 + - bf: bar, Hilfslinie + - bf: configure for mingw32 + +pl 66.jcn1 + - WIN32 -> WINDOWS32, more win32->windows32 + - some GNU/Linux changes + - cygnus b18 / mingw update + - doze compile; bf: p-score.cc compares + - reincluded toccata fixes + - small stuff: vi tags, typos, bibl + +****** +may 27 +pl 66 + - make_website --jpeg, --png and --gif + - win32 -> windows32 + - bf: Score_elem::TeXstring assert fail + - bf: headswap with stemdown + - bf: broken tie + - bf: broken slur + - bf: accidental dims + - bf: measure bar width + + +****** +may 26 + +pl 65 + - bf pathfind /root/file + - massive Score_elem rewrite: + * group_element_i_ count + * support for removing an individual Score_elem cleanly. + * moved dep stuff into class Directed_graph_node + * Score_elems can be copied and deleted freely. + * junk PStaff + * Spanner_elem_group + * Line_of_{score,staff} now are Score_elems + * clean dep handling upon deletion + * delete unbroken spanners + * added a break_processing round. + * Super_elem + - junk Complex_staff, + - clean {lily}?proto.hh + - Element_group + - Score_elem now as virtual base class everywhere + - naming: Staff_elem -> Score_elem + - bf: make in toplevel dir + - bf: broken tie y-pos + - bf: sharing 4th, 8th and 16th noteheads + - bf: overlapping chords. <\multivoice c d > + +pl 64.wl + - new stem direction code + - bfs: wohltemperirt.ly (thanks, Werner) + - bf: stem direction + +pl 63.jcn2 + - doze compile + +pl 63.jcn1 + - bf: mi2mu mudela commands + - bf: mi2mu tracks + - mi2mu quantify tuning + - mi2mu TODO + +********* +may 16 +pl 64 + - exe's now built in out/ + - toplevel Makefile dep from make/Toplevel.make.in + - make_website: add version footer + - make_website: bf dist *.txt + - bf: fix loose bars : \meter 4/4; c1. + - Staff_elem -> Score_elem + - bf <cis cis> + - vbrace lookup + - resync barcheck + +******* + +may 15 +pl 63 + - bf: segfault during MIDI output with mi2mu output. + - kludge: parse error beyond eof + - don't read ini if toplevel file not found + - accumulate \kern in TeX output. + - bf: try to prevent long lines; TeX breaks on them. + - naming: Pointer->Link, IPointer->Pointer + - bf: \plet didn't work (MB) + - GMP manifesto. + +pl 61.jcn4 + - mi2mu -p -s16 fugua2.midi getting better! + plus factor 2 mi2mu speedup (fugue2.midi 5.50user) + - bf: Duration_convert quantify threshold down + - bf: (on quantify): tcols quantified; no silly voices + +pl 61.jcn3 + - lily parsing speedup: backup rules for lexer.l + - bf: mi2mu, using midi_voice list... + +pl 61.jcn2 + - all in all mi2mu speedup of about factor 8 since pl61 + (fugue.midi 82.72user to 10.30user on a 586.133) + what about lily? + - binary search on track-columns + - mi2mu IP*list to Array (implications?!) conversion + - mi2mu parsing speedup: backup rules for midi-lexer.l + - bf: zero denominator + +********** +may 14 +pl 62 + - make clean bf: remove lex & yacc files too + - added kludge in case measure too long + - added kludge in case of unconnected columns. + - kludged columns get error marker + - kludged lines get error marker + + +pl 61.jcn1 + - smarter + faster duration-convert using Array + - bf: mi2mu compilation/duration-conversions + - lots faster mi2mu, hopefully does type 1 too... +pl 60.jcn1 + - mi2mu handles non-quantified rests, try mi2mu -b wtk-i/fugue2.midi + + + +********** +pl 61 + - scales.ly bugfix: dimensions default to ((0,0), (0,0)) + - naming: PointerList->Pointer_list + - tied notes don't get accidental + - bf: crescendo size + - fixes: make_patch, + - bf: _"text" direction + - mailing list into lilypond.pod + +pl 60.mb + - set_flower_debug: Warning if -d is used when NPRINT is defined. + - Fixed several TeX details. vcenter renamed since it interfered + with LaTeX. Position of accents changed. + - New example; scripts.ly + - table_sixteen: added scriptdefinition (Lilypond breaks if a + script is defined without dimensions). + - bf: ifndef typos in p-score.cc, choleski.cc + - bf: Slur::do_post_processing(), whole notes caused SIGSEGV. + +(ascension break :-) +******* +pl 57.jcn4 + - mi2mu handles rests (quantified only) + - fixed configure buglet + - "!date" Fri May 2 02:18:12 MET DST 1997 + +pl 60 + - Request_register::get_feature(), tie direction, Slur direction + - lilypond output is now directly texable. + - make_website checks return status + +******* +may 5 +pl 59 + - Slur now into voicegroups, and take stems into account. + - bf: rest size in table. + - split Slur in baseclass Bow + - Tie, Tie_req, Tie_register + +****** +may 2 +pl 58.jcn1 + - bf: toccata-fuga-E.ly + +pl 57.jcn4 + - mi2mu handles rests (quantified only) + - fixed configure buglet + - "!date" Fri May 2 02:18:12 MET DST 1997 + +pl 58 + - lexer cleanup + - national chars in lyrics + - \stem 2; bf + - long comments: %{ %} + - *.ini mode bf + - bf: partial may be everywhere + - bf: meterchange not at start of measure + - some doc updates + - bf: stem too long if stem is down. + +pl 57.jcn3 + - dank je schat, voor wtk-i + - mi2mu tries to handle rests + - "!date" Thu May 1 02:34:04 MET DST 1997 + - maak je het niet te laat schat? + XXXX HWN + +pl 57.jcn2 + - small toccata-fuga-E.ly fixes + - \bar "||"; is now doublebar, "|." is finishbar + - collision hshift fix, with on-line assistance +****** +pl 57 + - lots of TODO doco + - text alignment bugfix + - bugfix Voice_group_regs::get_register_p() now is actually called too + - bugfix init of Text_item::pos_i_ + +pl 56.jcn1 + - toccata-fuga-in-E.ly, excerpts with real-life collisions + - \{l,r}{b,f}{toe,heel} --- using cmsy fonts... + - pedal.ly + +pl 55.jcn1 + - mi2mu man page + - make doc fixlet + - \[lr]heel \[lr]toe scripts (happy pedal studies, pa) + - lyric with width + - removal of some example files + +pl 56.mb: + - last duration fix + - makefile fixes + - space rest + - swedish note name update + +****** +pl 56 + - Massive Rest/Stem/Collision/Note_column rewrite: resolve +notehead/rest ambiguities and bugs. eg, [c8 r8 c8] + +pl 54.jcn1 + - standchen.ly: repeats; lyricii to end + - convert-mudela: help + usage + - fixed midi key/meter-change (triggered by martien.ly) bug + +****** +April 23 +pl 55 + - staff-side robustification + - script-on-rest bug + - doc update + - transpose syntax +****** +pl 54 + - bugfix Colhpos.cc::OK assert fail. + - Inclusion of MusixTeX MF files, + - detection of MF dir +pl 53.hwn + - stacked lyrics + - configure/make buglets. +****** +pl 53 + - spurious accidental bug. + - simultaneity check. + - added AUTHORS.pod + - convert-mudela auto from guess + - include -> \include + - change order of opening parse/init file + - Pulk_voice, Pulk_voices + - Request_column + - revised request-from-voice extraction. Now much faster + +****** +april 17 +pl 52 + - Buildroot RPM + - tex-prefix and tex-dir sep'd (here you are jan) + - convert-mudela framework + - Collision_register, Collision + - \hshift 1; input + - Features changed +pl 50.jcn1 + - LILYINCLUDE dir searched before DIR_DATADIR(?) + - lily reads from stdin again (but does not now when to stop) +****** +pl 51 + - transposition bugfix + doco + - LilyPond -> GNU LilyPond + - bugfixes for Staff_side and Note_column* + - wohltemperirt: complete + +****** +april 11 + +pl 50 + - merge rest / notehead. + - Staff_side as a base class for most "staff-side" symbols. + - version check + - Note_column_register, Note_column + - multiple scripts + +******** +april 8 +pl 49.jcn1 +Bugfix + - configure[.in], make/Configure_variables.make.in c++ (=doze fix) + - "configure; make" ok for doze, win32 target may be removed now + - win32/gcc 2.7.2 compile fixes -- why does this all compile + (without warnings, why can-t i even trigger warnings) under + linux/gcc-2.7.2.1? it's quite a tedious job fixing this + shit _on doze_ all the time. + * fixed #includes global-regs.cc, staff-info.cc, staff.cc + * key.hh:Key() -> Octave_key() + * added missing lily/include/input.hh: Input( Input const& ) + +pl 49 + - lsm template + - clef in cadenza mode. + - notename clear + - \command bla; for \meter, \clef, \octave etc. +******* +pl 48 + - notenames init + - Duration order -> grouping + - broken key s + - default octave + +****** +april 3 +pl 47 + - dynamic flowerlib + - Input mods: now use Source_file iso Sources + - makefile lib deps restructured + - make_website now produces in out/ + +pl 46 + - examples.pod + - LILYINCLUDE env var. + - push/popgroup + - website updated + - Swallow_register + - Lyric_register. + - Staff_sym_register + - user settable register config + - struct Input now used iso defined_ch_C_ + - Walker_registers and Staff_registers separated + - dynamic-reg -> hairpins + +pl 44.jcn2 + - doze configure/compile fixes + - doze make refixed + - faq + - install mudela manpage too + - RedHat spec lilypond.spec fixed + - target: rpm (make RedHat packages) + +****** +Mar 26 +pl 45 + - Removing unused Voice_regs & Voice_groups + - -O2 bugfix + +pl 44.jcn1 + - merged 42.3 42.jcn4 code trees (see stuff below) + - moving towards Mudela 0.1 (again) + * keyword "music" dropped for horizontal music + * keywords "\lyric" "\melodic" introduced, e.g.: + melody = \melodic { c c | g g } + * removed level of indirection: + - staff initialisable with music identifier list: + \staff{ global melody } + - \score and staffs alike + - gnu standard(?) help texts + - configure "creates" toplevel Makefile from make/Toplevel.make + +Bugfix + - fixed mi2mu + - write meter to track0 too... + - default octave + - new Sources in My_midi_lexer: sourcefile_p_ = get_file_l(): oeps. + (ain-t hungarian grand?) + +Examples + - updated for mudela 0.1 + +****** +pl 44 + - naming: _c_l -> _C + - pure parser, My_lily_parser + - ''a iso ``a + - Includable_lexer + - junk Input_file + - Duration in parser, Duration restructuring + - grandiose lexer hax. Flex should be fixed, really. + Lexer much faster now. + - opps. mi2mu broken + +****** +pl 43 + - transposition. + - $variable&@name + - warnings if incorrect mode + - missing scsii measure + - declaration used check. + - + +pl 42.jcn4 + - lily writes midi meter/key changes from requests + - mi2mu: + + write mudela 0.1 + + write bar change requests + + more tunable quantisation + +Examples + - half-new-menuetto.ly converted to mudela -almost- 0.1 + - new mi2mu of bach's wtk pre1/fugue1 + +pl 42.3 (jcn version) + - oeps, branched source tree + +pl 42.hwn3 + - const naming change (T const <-> const T) + - Mudela 0.1 (roughly the same as below..) + +pl 42.3 + - moving towards Mudela 0.1: + * all keywords must be preceded by backslash '\' + * explicit lexer switches '$' and '@' dropped + * keyword "music" dropped for horizontal music + * keywords "\lyric" " introduced, e.g.: + melody = \melodic { c c | g g } + * staff initialisable with music identifier: + \staff{ melody } + * chords: < c e > + * octavate ''c`` + * \meter{ 2/4 } + * \octave{ ''`` } + - configure sets CXX (to c++, commonly) +Internal + - renamed lexer.hh, mylexer.cc My_flex_lexer to my.lily.lexer.* + +pl 42.2 + - new lilyinput (Mudela 0.1) doc. +Examples + - new-twinkle.ly (in Mudela 0.1, hopefully) + +pl 42.1 + - further Makefile revamping. + - moved flowerlib + +******* +pl 42 + + +pl 41.hwn3 + - struct Lexer_prefs + - parser bug + - make uninstall + +pl 41.hwn2 + - make file rehack + - spec update + - make install + - detect TeX directory + +pl 41.hwn1 + - cygnus configure, + - updated versioning + - install.pod + +pl 41.jn1 +Bugfix + - doze compile +******* +pl 41 + - release + +pl 40.3 + - all of the above + - hw's configure.in + - p-name.xx fixes + +pl 40.hwn1 + - hairpin dynamics + - notename now as identifier. Parser/lexer cleanup + +pl 40.2 + - mi2mu --blonde-durations, --no-silly options. + - mi2mu starts to look promising, see examples +Examples + - pre1.midi.ly, fugue.midi.ly +Internal + - Duration handles blonde midi-durations + - More settings for Duration_convert + - lily writes meter too (ugh, howto?) +Bugfix + - mi2mu auto track number fix + - mi2mu / lily Midi_tempo fixed/added + +pl 40.1 +Bugfix + - lily midi output track 0 name + - mi2mu tempo fixed + - make out/make and out/make/Site.make in configure script! + - mi2mu double newline fix + + +****** +Mar 11 +pl 40 + - release + +pl 39-5 + - own versioning for mi2mu: 0.0.10 + - some file renaming mi2mu +pl 39-4 + - all of the above + +pl 39-hwn2 + - last bar bugfix +Internal + - simple dynamics + - experimental RPM spec. + - doco update. + +pl 39-3 + - all of the above + - m2m renamed to mi2mu + - better line breaking in mi2mu + - (somewhat broken) progress indicator for mi2mu + - mi2mu output === lily input (in names and durations, + always assuming voices > 1 though) + +Bugfix + - midi: note on/off only once per pitch per track + (sending all note-on events introduces cool mi2mu feature) + - make clean removes deps too + - mi2mu notename/accidental/octave, and key fixed + +Internal + - auto create of out-dirs, config headers, using tag file .GENERATE + +Examples + - stanchen.ly debugged + +pl 39-2 + - configure script help and in topdir again, duh. + - auto configure upon virgin make + - configured makefile stuff in make/out/ + + +******** +pl 39-1 + - doze target (for 16 bit dos xcompiler: gcc-go32) +Internal + - make/User.make; C..FLAGS sorted out +Bugfix + - make clean... + +pl 39 + - new make structure, featuring: + * top-level/sub-level build + * auto custom-library dependencies/build + * top-level/sub-level dist + * minimal(? can even smaller) specific Makefiles + * which makes for simple lib/exe module split (make/Template.make) + * integrated flowerlib + * all stuff into subbirs (make/Stuff.make) + * all headers into <module>/include dirs (make/Include.make) + * all output into <module>/out (executables into bin/) + * more make features, like make config, make help + * small lily lib + * lilypond-x.x.x/.version for toplevel lily version + * lilypond-x.x.x/<module>/.version for <module> version (eg: flower) + * versioning using additional optional MY_PATCH_LEVEL + for easy make_patch + + - bin/cptogen + +Internal + - generic m2m header: m2m.hh + +Bugfix + - small fixes, make, dist, configure + +pl 38-5 + - all of the below, e.g. new filenames and new makefile + structure patches merged +****** +pl 38 + +Internal + - great filename renaming operation with - convention. + - printing methods for paper_def/lookup/symtab(s) + - untied all registers from complexwalker. Now registers are +intrinsically hierarchical. All walker communication is done via a +"top level" register. + +pl 37-3 + - m2m handles voices + - instrument, track_name, copyright/left stuff for m2m/ly + +Internal + - Midi_voice + +pl 37-1 + - text, key, tempo event in midi output/ly input + +Internal + - simple makefile structure, allows for multiple projects + +****** +pl 37 + + +Documentation + - language.pod as starting point for mudela devel. + + - Jan's patches: +Features + - m2m patchy --no-triplet option; + lilypond accepts m2m's real midi output (hand-add red tape) + - m2m output only valid durations, resync option wip + - m2m produces .ly output +Internal + - simpler and better naming for Duration* + - the great String renaming / index to base=0 change + - Track_column, Lily_stream + - Duration, Plet, Duration_convert taking load off duration calc. +Bugfix + - m2m duration calc + + + +****** +pl 36 + - Jan's patches: + - do MIDI rests cleanly. + - lily/m2m: time and tempo fixed for metric timing +Internal + - Midi_tempo + - m2m parses more midi stuff (all of bach-wtc); timing?? + - m2m recognises some commandline options +Examples + - fixed midi.ly + +******* +Feb 25 +pl 35 + - Register_group +Bugfix + - alignment of breakable items. + +******* +pl 34 + - better midi syntax. + - --midi,-M option. + - preliminary midi2mudela (/mudela2midi) converter: m2m (JCN) +Internal + - m2m sources: midi-*; (JCN) + - new Midi_walker, fixes several MIDI bugs. + - junked Midi_staff, Staff_column children, Midi_walker + - Midi_output + +pl 33-1 + - m2m parses midi +Internal + - Binary_source_file + - Source_file::error_str simplified +******* +pl33 +Examples + - Swedish notenames (MB) + +pl pre33-2 + +Bugfix + - midi pitch + +Features + - Jan's patches, see below +Bugfix + - some midi bugfixes. + +pl pre33-1 (JCN) + + + - midi output using pitches iso notename +Examples + - added midi output (some midi output files broken?) + - all melodic fixed (except for error.ly:-) + - midi.ly +Bugfix + - midiwalker line break + - empty/nonexistent include at top of ly + - midi #tracks + - midi pitch c0 + - midi poor man-s staff dynamics +Internal + - Midi_column, Midi_staff, Midi_walker + +pl pre33 (JCN) + - Jan's patches, see below + +Features + - simple plet notation (JCN) + - lyrics centred, but no fully suppored? (JCN) +Internal + - Midi_stream + - Mididef + - Midi_item, Midi_pitch, Midi_duration + - Midi_chunk, Midi_header, Midi_track + - preparations for midi output + - no exit upon context error (JCN) + - converted some "warnings" to errors; no output (JCN) +Bugfix: + - simple plet bugfix +Examples + - updated standchen, menuetto (JCN) + - new plet notation (JCN) + - plet.ly (parse and spacing tests) (JCN) + +******* +pl 32 +Features + - multiple meters, see rhythm.ly + - skip syntax/Skip_req + - score_wide_music: commands in staff now override commands in score. +Internal: + - command carnage + - Key_register + - Bar_register + - Meter_register + - meters now kept in baseclass Staff_walker + - Score_walker (to ease MIDI output) +Doc: + - Hungarian doco added to CodingStyle + +pl 32-1 + - music processing speedup + - website added to doco + - clef must *inside* music + - fixed spurious "beam too narrow" messages. +Internal: + - merge musical / non-musical staff_column + - musical/ non-musical requests + - Clef_register + - split up request.hh, Musical_req vs. Nonmusical_req +******* +pl 31 + +Examples + - Coriolan example (JN) + - standchen updated +Bugfix + - calcideal assertion bugfix +******* +Feb 12 13:55 +pl 30 + +Features + - better multivoice spacing + - move rest in multivoice staff + - errors in TeX output now warnings + - progress indicator + - music processing speedup. +Internal + - make spanner for staffsym; scrap Line_pstaff + - scrap simplestaff (Rhythmic_staff temporarily disabled) + - docxx 3.0 format comments + - split register source files + - hardcoded dimensions compile time + - Lookup::tex_hairpin +Bugfix + - non G-clef clefs + - script junking (2x) + - empty files + - beam::center (plet position!) + +pl 29 + - multiplatform Makefile (JN) + - context errors: bugfixes (JN) +******* +pl 28 + +Internal + - idealspacing slightly better for multivoice. +Doc + - Request_register +Bugfix + - Script.cc : float exception (MB) + - Request::Request(Request) copying of definition pointer (JN) + - cleaned dependencies for broken spanners + - stupid typo in Staff_elem::post_processing() + - init of hpos in PCol::PCol + - Word_wrap::solve() bug +******* +pl 27 + - preliminary WIN32 support (JN) +Features + - errors converted to warnings (JN) + - context errors (JN) + - As vs. as notename. + - WARNING: "melodic" stafftype will create the new Complex_staff! +Examples + - Lohman's Viola Quartet (JN) + - JS Bach Solo Cello suite II menuet (JN) + + +pl pre27 + +Features + - option --init + - last_duration_mode: default_duration is last duration entered + (\duration{\last}) + - syntax: grouping 2*4 3*8 + - preliminary multivoice support +Examples + - JS Bach's WTK example added. + +Internal: + - Text_reg and Script_reg +******* +pl 26 + - Documentation/lelie_logo.png + - 8-bit chars for input (see ltest.tex) (MB) + - quotes around string now optional +Bugfixes: + - unmatched ] (MB) +Internal: + - print/name methods of Staff_elem + - added Request_register + - Voice_group_registers, Voice_registers, *_register + - Complex_staff +******* + Jan 27 '97 +pl 25 + - other clefs added, keys typeset properly (MB) + +******* +pl 24: + - Lyrics (JCN) + - Commands in music-mode (an input feature) (there you are, Mats) + +******* +pl 23: + - TODO file inc'd + - cadenza mode. + - default extension, search path. + - error.pod,faq.pod + - Markers + - configure script + - inputfile name in output. +Internal changes: + - scrapped VPATH + - Make dependencies per .o + - Split Input_* parsing steps to enable marking +Bugfixes: + - unconnected columns + + +******* +pl 22: + - doco from mpp + - repeat signs + - | checks for bar in a voice (Barcheck_req) +Internal changes: + - naming (Hungarian notation, svec vs. Array) + - cleanup PScore, Score + - removed Staff_commands, plugging commands into Staff_column directly +Bugfixes: + - bug noteheadswap + - huge memleak fixed; unearthed lots of bugs + +******* +pl 21: + - scripts + - texts + - nplets (triplets!) +Internal changes: + - Move breaking stuff into a separate class Break_algorithm + - dependencies for Staff_elem's + +******* +Dec 23 +pl 20: + - updated doco to .pod + - include files from .ly +Internal changes: + - Rational for time measurement + - directionalspanner/textspanner + +******* +pl 19: + - grouping code: LilyPond can set advanced multibeams. +Internal changes: + - struct Moment + +******* + +pl 18: + - robust Staff_commands + +******* +pl 17: + - robust Input_commands + - merged Vertical_/Horizontal music + - PARTIALs with duration + - modularized lexer: multiple runs + +******* +pl 16 + - notenames configurable + +******* +pl 15 + - grouping code + - multibeams (simple) + +******* +pl 14 + - symtables from .ly + - Input_command + - Input_{score/staff} + +******* +Dec 2 +pl 13 + - Horizontal/Vertical music + - Input_commands diff --git a/NEWS-0.1 b/NEWS-0.1 new file mode 100644 index 0000000000..f5e3562839 --- /dev/null +++ b/NEWS-0.1 @@ -0,0 +1,2141 @@ +August 1 + +VERSION 1.0.0 + + - scsii-paper: no wordwrap + - bf's: texinfo + +pl 85.jcn2 + - ONEWS -> NEWS-0.1 + - bf: zip: list of docfiles + - bf: install info + - bf's: rpm spec + - website ok + - mudela version bump -> 1.0.0 + - bf's: '[a-g] -> , + - bf: broken.ly + - ly2dvi fixes, (PC) + +pl 85.hwn1 + - search & replace: jan@digicash.com -> janneke@gnu.org + +pl 85.jcn1 + - website fixes + - debian fixes (thanks, Bastian Kleineidam) + - some (yet unfinished) doco + +********* +pl 85 +july 30 + +pl 84.hwn4 + - revamped install directions. +pl 84.eb1 + - key undo + +pl 84.hwn3 + - misc scsii fixes. + - doco fixes + +pl 84.jcn3 + - bf: titledefs without poet + - scsii fixes + +pl 84.hwn2 + - don't make key items if no accs present. + - Oops. Lyric spacing should go to the right (and not left) (thanks, PC) + - barnumbering break priority. + - bf: tied chords + - 16pt init for yodl-mudela + - split span-score-bar.{cc,hh} + - junked most experimental_features_global_b stuff + - revised AUTHORS.yo + - dot stuff. Added a Dot_column_engraver (thanks, Mats) + +pl 84.jcn2 + - ly2dvi fixes + - w32/install doco fixes + - mutopia fixes + +pl 84.hwn1 + - fixes for ly2dvi + titledefs (Peter Chubb) + - merge Span_dynamic_reqs too + +pl 84.mb1 + - MF: Added breve and longa rests. + +pl 84 jcn1 + - top website + - ps-to-gifs: TRANSPARENT_IS_BROKEN (ppc hack) + +pl 84.uu1 + - doco fixes + +************* +pl 84 + +pl 83.jcn5 + - bf: typo mudela-doc + - long getopt all the way + +pl 83.hwn5 + - doco fixes + - bf: initialise axis_ filed of script + - separate versioning for mi2mu and flowerlib dropped. + - split bin/ in buildscripts/ and scripts/ + +pl 83.jcn3 + - egcs ICE stuff. + +pl 83.jbr2 + - lily/midi-stream.cc: added appropriate MODE options to open + midi output as a binary file. This should be pretty harmless. + - lily/lexer.ll: added \r as white and black space to enable + W32 native editors. This also should be harmless. + +pl 83.jbr1 + - flower/lgetopt.cc: report method fix. (String + char needs to be + fixed) + + +pl 83.hwn4 + - stepmake := stuff + + +pl 83.hwn3 + - \property maxVerticalAlign, minVerticalAlign tunes vertical + staff distances. See input/test/vertical-align.ly + - bf: scripts over chords. (thanks, PC) + - revamped aligning stuff: Align_element is baseclass + for Horizontal_align_item and Vertical_align_spanner + - bf: Clef_item with _8 does new/del correctly. + - more file renaming -elem -> -element + +pl 83.hwn2 + - doco fixes (thanks, Lambert) + - tieydirection,slurydirection overrides ydirection (thanks, PC) + +pl 83.jcn1 + - bf: stepmake + +pl 83.hwn1 + - rm'd clean-embeds.sh + - rm'd \octave from all examples. + +pl 83.uu1 + - mi2mu output mudela 0.1.21 + - meter -> time_signature + - bugfixes for mi2mu, divide by zero error. (thx, JBR) + + +******** +july 23 + +pl 83 +pl 82.hwn2 + - \musical_pitch -> \musicalpitch (mudela 0.1.21) + - meter -> time_signature, + - \meter -> \time (mudela 0.1.21) + - moving around files : -grav -> -engraver + - doco fixes + +pl 82.jcn5 + - doc make fixes; stepmake 34 + +pl 82.jcn4 + - lots of doco build/install/website fixes + - junked some doubles from doco + + - mi2mu syntax to 0.1.20 + - bf: mi2mu col creation + - bf: stream << '\t', int + - bf: mi2mu version + - bf: font-body.ly + +pl 82.jcn3 + - bf's: diff/stepmake + +pl 82.jcn2 + - bf: slur blow + - tie/slur ydirection + - makeflags / diff fixes + +pl 82.jcn1 + - rejects: verbatim copy of Coriolan from 81.jcn2 + +pl 81.jbr2 + - Documentation/README-W32.yo: Additions to section 2 + +******* + +pl 82 + +pl 81.jbr1 + - NT fixes for release target + * stepmake/stepmake: %=--% => %=% in diff target + Cygnus make with MAKE_MODE=unix forces a MAKEFLAG of --unix. + This results in a ----unix switch being passed to package-diff. + This may break normal operation of this target. + * stepmake/bin/package-diff.py: added a do nothing option --unix +pl 81.jcn2 + - bf: abbrev + - found ugly slur bug + - egcs workaround + - more Coriolan fixes + - half-beam fix + +pl 81.hwn2 + - lots of vocabulary + - break_priority_i_ fixes: barnumbering, marginstuff, marks now work more or less + - wrote lilypond-docs RPM spec + - major brainsurgery: class Graphical_axis_group: + * derive Axis_group_element from Graphical_axis_group, + * derive Graphical_axis_group from Graphical_element + - junked input/minimal.ly + + +pl 81.hwn1 + - cleaned up parser.yy (removed \textstyle from parser, other stuff) + - Slurs have height too. + - typewrite textstyle + - added error rule to music. + - Documentation/pictures/ subdir + - Documentation/topdocs/ subdir + + +pl 81.jcn1 + - coriolan fixes. + +****** +july 16 + +pl 81 + +pl 80.jcn1 + - Coriolan: bulk remainder of strings + +pl 80.hwn1 + - junked coriolan-alto.ly + - the great Search & Replace + * Score_elem -> Score_element + * hanwen@stack.nl -> hanwen@cs.uu.nl + * Colinfo -> Column_info + * add () -> add_xxxx () + * Col_hpositions -> Column_x_positionso + - lily-proto.hh cleanup + - moved Dot_column creation. Dot bug fixed + - typos README-W32 + - ADD_THIS_TRANSLATOR uses templates now. + +pl 80.eb1 + - accidental transposition + + +******* + +pl 80 + - some make vs $(MAKE) bugs + +pl 79.hwn1 + - bf lily/VERSION depends on toplevel VERSION + - bf postbreak_only scripts + - Staff_side now is horizontal too + - rm'd \octave in scales.ly + +pl 79.jcn2 + - w32 support doco (JBR) + - bf: install info + - truncated some very long filenames (not bo length) + +pl 79.jcn1 + - bf: ps-to-gifs + - html fixes + - more italian (TDM) + - more coriolan + + +********* +pl 79 + +pl 78.hwn2 + - reversed some of the beyond-too-ugly hacks for script/staffside. + - bf: Axis_group_element::access_Axis_group_element () (2nd fix for Hara_kiri) + - more .bib stuff. + - more doco, lots of small fixes for .yo stuff. + + +pl 78.jcn2 + - bf: make docxx + - some doco/website fixes +i - screenshots for website + - fixed locale + - v78 + - w32 doco + +pl 78.hwn1 + - more bib fixes + - uniformised virtual accessors for Score_elem children. + - bf Hara_kiri seg fault + - changed left == right spanpoint assert into warning + - changed Lyrics.textstyle to Voice.textstyle where appropriate + +pl 78.jcn1 + - counter fix + +************ + +pl 78 + +pl 77.hwn1 + - Key transposition (MB) + - move .dstreamrc to dstreamrc + - make website fixes. junked z.yo, language.yo + - split off computer stuff from engraving.bib + - articles from CMJ added to computer-notation.bib + - doco fixes + - syntax of \skip and \partial changed; take only single durations + + + +pl 77.jcn2 + - mark placement + - w32 doco + - html-footer: (PACKAGE)_COUNTERPATH + +pl 77.jcn1 + - doco, bib fixes + - fixed \mark A; \mark 12; + +pl 77.hwjc + - dropped perl + - py fixes + + +pl 77.uu1 + - \textstyle obsoletized, use \property Voice.textstyle now. + +******* +pl 77 + - bf: install info + - bf: key-grav.cc: ambiguous conversion + - bf: mudela.yo glossary em() -> \emph{} + +pl 76.jcn1 + - irix compile install fixes, .bib stuff (HWN) + - bracket bit lighter + - brace/bracket placement + - minor fixes in key code + - small website fixes + - invocation mudela-book + - try at bracket/brace placement + +pl 75.mb1 + - Introduced real key names, \key e; gives E major! + - Previous use of the \key command now called \accidentals, + \accidentals fis cis gis dis; gives E major. + - Support for special keys with different accidentals on + different octaves, \specialkey \accidentals Fis Bes gis aiss'; + +********** +pl 76 + - website examples: + * Thread -> Voice + * 18 -> 19 + * type /consists Engraver vs Line_engraver stuff + - bf: mutopia-index + - to relative: twinke-pop + - bf: clef-grav: null pointer assignment + - ran convert-mudela + +pl 75.jcn3 + - minieme fixes (HWN) + - bf's: node() names have changed: Mudela Book/ Convert Mudela + - bf: lilyponddefs.tex: removed \fi, added braces + +pl 75.hwn2 + - bf lilyponddefs.tex: added \fi to \ifs + - convert-mudela in python + - mudela-book in python. + - bf memleak Score_elem::do_brew_molecule () + - bf array bound read String_convert::split_arr + - bf free mem read Item::Item (Item const &) + - bf memleak Midi_walker::do_{stop,start}_note () + - bf memleak Spanner::do_brew_molecule () + - bf plet-engraver memleak + - checked input/bugs dir. + +pl 75.hwn1 + - junked octave (mudela 0.1.19) + - more .bib stuff + - doco fixes. + +pl 75.jcn2 + - binary releases: + * make deb + * dpkg 1.4.0.23.2 + * debhelper 0.96 + * /usr/bin/db_*: remove -p from install options (urg) + * make rpm + * make zip + - path to nice lilypond.info (must have a go at auto-nodes): + * mv'd Documentation/man/lilypond-info.yo -> Documentation/topinfo.yo + * included mutopia as example + - bf: gifs: $(wildcard) + - leave tarball in out/ too, after 'make release' + - mf-to-table: --package + - typo configure.in + - nt make fixes (JBR) + +pl 75.hwn1 + - clef 8 fix (AG) + - junked octave (mudela 0.1.19) + - more .bib stuff + - doco fixes. + +pl 75.jcn1 + - dropped mf/Rules.make + - dropped target doosdist + - dropped lilypython/pythonblurb + - --package rest of python exes + - packagepython/package-diff fixes + + +********** +pl 75 + +pl 74.jcn5 + - lost of (step)make fixes + - 'make release' + - --package + +pl 74.mb1 + - Fix ":|:" that spans several staffs + - bf: bar.cc, table of breaks + - bf: engraver.ly, Complete the addition of ChoireStaff + - bf: lilyponddefs.tex, placement of ":|". + - Cleanup clef-item and clef-grav, prepare for dictionary + of clef names. + +pl 74.jcn4 + - cygnus fixes: doco, compile, install + +pl 74.jcn3 + - packagepythonified genheader + - stepmake 21 + +pl 74.jcn2 + - renamed: ../redhat to ../RedHat + - renamed (or huh, was this a typo?): + ../sourcetree -> lilypond-x.y.z to ../lilypond -> lilypond-x.y.z + - what about ~/rpms; see stepmake/Variables.make? + - README.txt + - debashify: zet-lily (HWN) + - www, yodl, stepmake fixes + - ls-latex fixes + - mudela.yo fixes + +pl 74.jcn1 + - mudela.yo fixes + - bf: add-html-footer: duplicate <body> + +********* +pl 74 + - bf: ps-to-gifs fix + +pl 73.jcn2 + - irix configure/link fixes (HWN) + - untested fix for "^\f" (HWN) + - add-html-footer: bgcolor=white + - m.yo: successful 2tex and 2html + - ps-to-gifs additions and fixes + - bf: --output + - (step)make targets: + * diff + * help + * rpm + * zip + - yodl-1.30.pre4: handle mudela(options)(mudela) + - small m.yo example for mudela.yo + - crude tex2yodl in stepmake + - mudela from stdin: default to filter behaviour + - allow lelie to act as a pseudo-filter --output=- + - fixed faq.yo + - atvariables + - bf's: module-deps + - bf's table-to-html and invocation + - small doco fixes + +pl 73.hwn1 + - more doco + - got rid of weird <> semantics + * Ties_engraver, Note_heads_engraver + * depracated \multi + * depracated Thread context + + - wtk1-fugue{1,2} now in relative mode. + - don't create Rest_collision, Collision if no more than one + collider (interpreting should be faster, less mem usage) + - depracate Line_group_engraver, must use Line_group_engraver_group + + +pl 73.jcn1 + - tiny topweb.yo fixes (added 'Documentation/out-www/' to some urls) + +********* +pl 73 + Yodl developent: + ftp://pcnov095.win.tue.nl/pub/yodl/ + http://www.digicash.com/~jan/yodl/ + - removed BLURBS from makefile + - stepmake pl 16 + - To Yodl: + * *.pod -> *.yo (should fixup pod 'manpage' legacy) + * dropped pod2* config stuff + +pl 72.hwn1 + - count "constraint off" as degeneracy + - zet-lily stuff. + - bf: add Meter_engraver + - bfs: tutorial + +pl 72.jcn3 + - Documentation/man texinfo-> YODL! + +pl 72.jcn2 + - more texinfo: + * texi2html workarounds: junked man/*.pod + * Documentation/man: pod -> texinfo + - Coriolan: viola part + +pl 72.jcn1 + - doco/mutopia/website fixes + +********* +pl 72 + +pl 71.jcn4 + - try at texinfo: + * lilypond.texinfo + * stepmake pl 13: texi2man + * lilypond.1 now generated from texinfo + * lilypond.info + +pl 71.hwn2 + - changed QLP asserts to warnings; now you can see the +shabbyness of the QLP code + - ChoireStaff context + - more tutorial doco + - mudela-book: name output files to per section and chapter. + +pl 71.jcn3 + - bf: convert-mudela: added StaffGroup + - bf: various .ly: (WhyIsThis; we'll drop a_"bla" and use '_', no?) + - stepmake pl 12 + - bf: abbrev + beam (urg: internote y dim bug) + - debian conffiles (AF) + +pl 71.hwn1 + - vocab fixes + - more tutorial stuff + - quart -> fourth + - depracated contexts with _ in name (mudela 0.1.17) + - bf: don't crash if default context can't be found + - distinction between global and local \header block. + +pl 71.jcn2 + - msgfmt check + - rpm: crude fix for input dir (urg: should get doc on rpm spec; + why is that so hard to get hold of in plain text?) + - found (bit undocumented) sticky abbrev mode in stem-grav: + c8:16 c: c: + * bf: enable disabling + * disabled sticky abbrev req + - urg: transposing for midi (should fix audio-items) + - sticky abbrev req: a8:16 a a a8: + - bit more coriolan + +pl 71.jcn1 + - added PATCHES to web page + - rpm-dist, doos-dist, show-latest to step + +******** +pl 71 + - bf: po install + - fixed somewhere: space between bar line and first note [HWN] + - bf: DOTTEXT + - bf: (don't) install libintl + - configure fix for irix tr + - bf release.py + - stepmake-0.1.9: fixes make install, rmp-dist + - bf: mf-to-table + - make-patch: lily-diff + +pl 70.jcn6 + - make htmldoc defaults to out-www + - moved some python stuff to stepmake-0.1.8 + - aux config scripts from stepmake + - stepmake-0.1.7 as ./stepmake: drop versioning on sub-package dirnames + - po fixes + - computer-forms.el + +pl 70.jcn5 + - bf: Documentation/make html + - bf: coriolan ... almost there + - bf's: lilyponddefs: (fixes make website) + * moved errordefs (mmm, perhaps \input's should have been moved...) + * moved def of interscoreline + * moved def of setdynamic + - stepmake 0.1.6 + - include fixes + +pl 70.jcn4 + - configure stepmake too + - make dist recurses into stepmake + - stepmake-0.1.5 + +pl 70.jcn3 + - make; make dist work (without packaging) stepmake-* + - mv'd outputter* tex-outputter* + its not so handy to have files with the same prefix as our out dir :-) + - verbatim included stepmake-0.1.4 + - DOTTEXT->.txt + - verbatim included stepmake-0.1.3 + +pl 70.jcn2 + - changed 'current' to 'lilypond' in scripts that only i ever use... + - tenuto shorter, thicker and follow into staff + - computer{.data,-forms.el} + - mark + - by default don't make libintl + - make install for libintl + +pl 70.jcn1 + - generic make fixes + +******** +pl 70 + +pl 69.jcn4 + - included libintl from gettext-0.10 + - fix: staff-bracket on one staff too + - bf: lilymake/Rules + - generic lily-make-0.1.0 package; shared as example with lilyx-0.1.0 + - junked automake stuff from aclocal.m4 + - bf: BASH scripts + +pl 69.hwn1 + - standardised virtual accessor naming for Requests + - doco updates. + - bf: tied accidentals. + +pl 69.jcn2 + - now DATADIR = datadir = /usr/local/share/lilypond ... + - bf's: DATADIR/datadir: by default: /usr/local/share; '/lilypond' + must be added whenever necessary + - bf: begin/end html for BLURBS; junked html-accents... + - html-accents + +******** +pl 69 (june 2) + - bf: table-to-html: convert_html + - bf: added fingerfont in fetdefs.tex + - crude fix: fetdef repeatcolon + - gallina.ly to relative octave mode (MB) + +pl 68.jcn3 + - bf: libintl.h include + - readded: DATAFILES =.*data (too late, computer vocab missing...) + - span-score-bar: + * don't set piano braces that span less than two staffs + * don't set staff brackets that span less than one staff + - bf: abbrev (internote dim) + - more coriolan, hara-kiri + - add arcs to bracket height to avoid colliding of brackets + - HAVE_GETTEXT + - computer.data: modest start of computer-related vocabulary + - configure (localdir/datadir) fixes + +pl 68.nenn1 + - fix for postbreaks past line_group + - bf: harakiri: set empty + +pl 68.hwn1 + - use AFM iso autogenerated table. + - more bits of tutorial + +********* +pl 68.jcn2 (may 29) + - bf: configure.in localedir/datadir (urg) + - libc-extension.cc: vsnprintf + check + - bf: blurbs + - @BASH@ for scripts that are actually (still...) bash iso sh + - check for bash + +pl 68.jcn1 + - gettext/intl checks; (AO) + - bf: meter-switch + - COPERTINA + +pl 68 + - AFM file stuff: afm.cc, afm-reader.cc, mf-to-table.py + - removed c0 position from get_staff_info () + +pl 67.jcn2 + - grace example + - bf: sticky plets + - bf: s0 + - bf: twinkle.ly + - junked implicit to-string conversions + * now used Scalar for all explicit implicit conversions + * moved implicit-conversion String constructors to to_str (...) + - _f with Strings + - bf: BLUB: re-added empty line + - bf's: reincluded: tar-docxx.sh, topweb.pod.in (<aol>me too!</aol>) + - po: unification/breaking-up of (some) messages + - crude get-lily/build-lily scripts + - make targets "po-update" "show-po-update LANGUAGE=xxx" + - handier internationalisation funcs _(), _f () iso macro + - String_convert::form_str (fmt, ...) + + +******* +pl 67 (may 27) + - multiple font sizes. See input/test/sizes.ly + - w32 blurb by Dominique Cretel + - bfs faqs + - cleaned Identifier further; canonical accessors + +pl 66.jcn7 + - bf: hara-kiri clefs: (the "u" is "\unknown"; how to fix this?) + - bf's: make website + - better configure language message + - bf: lilpond.spec + - bf: configure/localedir + - internationalisation: po/* + - distribute mutopia/ in binary rpm too + - FLAPTEKST + - "generate" all debian conffiles in out/ + - BLOEP; and BLURB substituted by configure throughout doco + +pl 66.jcn4 + - bf's standchen + - website fixes for .fly + - target doc++; tar-docxx fixes + - topweb fixes + - configure check for pod2html 5004/5003 + - switch init file on extension (some new ones): + * init.ly: normal structured Mudela + * init.fly: simple Mudela (for on-the-* without tape ly's) + * init.sly for simple init (no properties,scripts,midi) + + - bf: stem with flags (forgot internote dimension) + - bf's mutopia (urg, properties) + - String_storage: parse string identifiers (i didn't do it, nobody saw me do it, you can't prove anything) + - scsii-prelude: urtext and suggested slurs separated + - converted twinkle, kortjakje, standchen, preludes to relative + - conflily -> zet-lily + - -Q --find-quarts option + - bf: add-html-header: mailaddress () iso mailaddress + - bf: show-latest looks at MY_PATCHLEVEL too + - fixes scsii + + + +*********** +pl 66 (may 18) + - junked literature.pod (we now have the .bib file) + - bits of mudela.doc + - other-packages.pod -> other-packages.bib + +pl 65.jcn3 + - print_dimen: don't print "NaNpt" + - fixed Coriolan, added "instrument" and "instr" + - MIDI favours property "midi_instrument" over "instrument" + - Bar::do_height iso brew_molecule hack: not quite yet... + - stem/beam: more stuff runtime + * beam-dir-algorithms + * beam-stemlengths: take unnatural dir into account + * natural stemlength + * forced stemlength shortening + - bf: Bar: don't make molecule if invisible; fixes hara-kiri + - robustification of MIDI: never return "", always return sane + string and print warning + - bf: typo Key_change_req::sharps(); fixes MIDI + - scsii: new relative octave fixes, gigue + +pl 65.jcn2 + - included some auto-generated mf files for MikTeX (doos). + - hara-kir: nicer set-transparent + - relative.pod: doco'd blonder relativeness + + +pl 65.jcn1 + - staff-margin-engraver + - blind scsii fixes for new relative mode + - bf's: hara-kiri-* + - jumps in topweb.pod + +********* + +pl 65 (may 15) + - fixes for template instantiation (AO) + - junked standchen-easy, + - mudela 0.1.15: deprecate \duration, junked \octave relative + - small doco fixes + - moved data from Melodic_req into Musical_pitch (analogous to + Duration and Rhythmic_req) + - implemented \relative c' { .. } and associated Relative_octave_music + - junked \octave relative; + +pl 64.jcn2 + - simple compile fixes + - bf: beam:stemlens:knee + - hara-kiri-* + - bf: ctags + - preludes-3.lym4 + +********* +pl 64 (may 13) + +pl 63.jcn3 + - beam stemlength stuff runtime + - dropped lq for beam-stemlengths, fixes [d d d] [d g d] + - ugly sed fix for commas in .ly.m4 + - beam damp corrent fix + - scsii: small fixes + - preludes.ly; dropped silly preludes.tex + +pl 63.jcn2 + - vocabulary on website + - data-to-html.py + - bf: beam damped-slope correct + - bf: make website + - some preludes-* fixes + +pl 63.jcn1 + - "relative" sizes for titledefs + - bib2html/man2html urls in INSTALL.pod + - auto-generated feta stuff in doosdist + - bf's: make dist, docdeps + - bf's scsii + +************ +pl 63 (may 11) + + - non_fatal_error () (should use!) + - Mozart Horn concerto 3, horn part + - bf: plet-spanner + +pl 62.jcn11 + - bf: beam::set-stemlen:iterations + - knee-bug.ly + - use knee in menuetto-ii + - bit on slope damping + - some bf's and doco + - bf's scsii + - scsii: bf' new: sarabande + - bf's allemande, courante + - bf: knee: stem through beams + - bf: too high beams + +pl 62.hwn1 + - bf jcn8: deep copy Scope (ughugh. I want GC!) + - cleaned Identifier + - mudela 0.1.14 'a -> a, + - class Scope + - .bib updates + - key robustifiction for extreme octaves + - ly2dvi 0.11 + - energy "normalisation" removed. + +pl 62.jcn8 + - beam: knee input/test/knee.ly + - vimrc init for lily + - errors display column number too + - scsii: bf's, new: allemande, courante + - looked at lyric lengthen "mir________." (eerste weigering) + - beam: knee [c \stemdown c' \stemup 'c] + - expressions parsed at identifier_init + - bf: slur/stem/whole x-adjust: + * use note-col width iso mean note-witdth + * note-column:width () + - now string variables in paper too -> mudelapapersize + - paper_def: real dict -> identifier dict + - My_lily_lexer: identifier dict stack + - init paper and a4 stuff + - \include \string + - all rvalues from parser var pool -> access rvalue as \rvalue + - string variables + - ly2dvi 0.10.jcn1 + * mudelapiece, mudelaopus (ugh, fix) + * textheight + - more titledefs + - bf: table 20 typeface widths + - bf: toplevel/*.txt + - bf: ugly Documentation/mutopia fix (should rename dir to Mutopia/ ?) + - bf: make examples + - www.digicash.com/~jan/lilypond + - make website fixes + - ambiguity fixes in .ly's + - bf: relative-octave warning + - relative-octave: guess if ambiguous + - ambiguity warning for relative mode + - scsii: prelude + - bf: slur gap + - bf's: scsii: menuetto + - .txt -> $(DOTTEXT) + - make website fixes + - .txt fixes + - bf: typo make-patch + - bf: *dist.sh cleanup + - bf: release.py + - bf: make/Targets doc (removed .txt extension) + - rpm-dist.sh + - make doos dist fixes + - doos-dist.sh windoze dist script + -- removed useless spacing hack at spring-spacer.cc:692 + - bf: los-toros: do multi-bar rests (setting SkipBars = 1) + - scsii-menuetto.ly -> menuetto-urtext.ly, -cello.ly and -alto.ly + - bf: \octave c'; for relative-octaves + - bf: Documentation make + +********* +pl 62 + - no-touch hak. + - bfs: multi measure rests + - fixed the website. + - add extra space after breakable columns. + + +pl 61.jcn8 + - mudela relative octave feature: + * Documentation/relative-octaves.pod + * \octave relative; + * lilypond -f for automatically finding new relative quote positions + (sorry, fully automated convert is too complex) + * mutopia/ltor.ly: octave quotes reduced from 511 to 59 + - better conflily + - bf: abbreviation-beam-engraver: set beam::multiple_i_ + - bf: open_abbrev_parens + - dotted/dashed slurs/ties + - fixed-up scsii-menuetto; use dotted-slurs + - slur_thickness runtime + - bf: typo lilyponddefs: elevendefs + - moved hard-coded slur parameters to runtime + - make-patch -r: diff against latest release + - allow semicolons after paper_identifier and \include + - params.ly: parameterised some paper vars + - bf: beam quantise for slope = 0 + - interbeam (mult>3) open-up to paper-def to paper! + - "implemented" Paper-def::staffheight + - simplification + bf bezier clipping + - vandale fix + - moved doco from paper*ly to fonts.doc + - papers with expressions + - paper20.ly: rewrote precalculated values as expressions + - simple expressions in mudela (paper-body only) + - beam_thickness centralised and run-time... + - \nobreak + - bf: beamquantise: never sit if mult > 1 + - bf: broken slur y-offset (not!) + - pagelength hack in tex/headers + - alignment of bracket (in span-score-bar.cc) + - boolean *break_b to continue break_penalty_i; maar nu... + - removed paper20 includes, \paper_twenty from examples + - dropped latex files + - renamed standje, standchen. + - parser accepts range of mudela-versions + - Mudela_version + - String_convert::split + - bf's: los-toros-oboe + - braindead Break_req with penalty; junked Disallow_break_req and + Break_force_req + +pl 61.ag1 + - implemented octave-shifted clefs. + +******** + +pl 61 + - bf: mudela-book error msgs + - don't dist feta-tables. + - bf: mf-to-table, deps[0] catch + - reworked initialisation parsing logic; Got a no-redtape mode + for free + - 20 pt staffsize now default + - dependencies for LilyPond (-d, --dependencies). --debug moved to -D + - (c) 1998 + - ly2dvi 0.10 (JAF) + - changed \begin[options]{mudela} to \begin{mudela}[options] + - more WWW hacks. + +pl 60.jcn2 + - minor adjust for asymmetricity of beam symbol + - added TEST beam quantisation; see input/test/beam-pos.ly + - removed some empty .cc .hh + - Grandstaff -> Grand_staff (After [Gerou] and Harvard Dictionary of + Music) + - bf's: slur and tie post-processing + - cleaned-up bow: get encompass + - cleaned-up beam-yspan and beam-leftpos quantisation + - misc.cc: some funcs to get lower and upper bounds from array of values + - interval.*: Slice (Interval of int) + - added some doco to beam.cc + - removed some x,y by-ref passing in Lookup + - cleaned-up beam-yspan quantisation + - cleaned-up slur get encompass + - configure: --disable-optimise for compile without -O + +pl 59.jcn4 + - bf: beam quantise + - bf: sticky plet bug + - bf: chords in beam + - bf: typo beamquantisaton + - bf: don't blow_fit infeasible bows (x_i < x_0 || x_i > x_n) + - bf's: beam/stemlengths, beam-bug [c8 c16 c16] + - bf: placement broken tie + - yet another try to raise bar-number + - bf's: bow tangent clipping, allow higher bows + +************ +pl 60 + - mats patches: use Latex font stuff. + - fixes to the .59 patch release (jcn) + - make website|examples target + +pl 59.jcn3 + - bf: preludes-5 + - no inline compiler warnings by default + - bf: gcc 2.8 compile bow.cc + - moved functions with loops from varray.hh to varray.cc + - bf: minimum length for tie + - slur clipping standard + - bf: second broken slur minimum length + +pl 59.jcn2 + - added some to .dstream + - bf: second part of broken slur + - slur encompassing noteheads adjust + - bwv'd preludes + - bf: make-patch -d + - doc'd rerunning of autoconf + - rest of real standje (rename and move simplified standchen to + input/test?) + - bf: clipping + - bit better bar number placement + +pl 59.jcn1 + - more INLINE + - bf: multi-measure rest + +pl 58.jcn7 + - los-toros: do multi-bar rest + + + +*************** +pl 59 + - ly2dvi 0.9.hwn1, -K switch, + - doc: moved manpages in separate directory. + - do WWW stuff via make + - mutopia-index.py + - ly2dvi 0.9 (JAF) + - multi platform build fixes + - junked embedded switches, embedded MF, obsolete TeX stuff + - junked virtual matrix storage: inlined most matrix computation, + speed increase of 30% + - junked taupindefs, eglerdefs + - rm'd taupin/egler from INSTALL + - doc: engraving.bib, colorado.bib + - input hierarchy. + + +pl 58.jcn6 + - multi-measure rests: moved acknowledge from timing-translator + to -grav + - slur clipping experimental... + - bo to b + - always announce multi-measure + +pl 58.jcn5 + - bf: reset plet after reading mmrest + - try at not generating moments... + - Multi_measure_rest 'symbol' + +pl 58.jcn4 + - try at multi-measure rests: part.ly + - bf's: slur get_encompass + - bf: slur clipping + +pl 58.jcn3 + - experimental (--test) clipping of too high or tilted slurs + - nicer slur control output and ps code + - bit thicker and round-capped tuplet bracket + - bf: slur.cc: RESIZE_ICE + +pl 58.jcn1 + - varray.hh bezier.cc, slur.cc patches to avoid gcc 2.8.1 ice + - some inlining fixes + - configure: use -O to enable inlining + - included and fixed new make-patch.py + - bf: Mutopia.make + - bf: offset: operator - () + - ugly hack bezier: do blow_fit twice + - bf's: bezier: rotate,translate + +*************** +pl 58 + - more *.make hacking + - bracket fix (AG) + - clef fix (PC) + +pl 57.jcn1 + - reincluded test/bow.cc + - promoted Bezier bows to standard + * bf's: broken slurs + * some bf's: verneukeratificering van JCN code + * some bezier slur doco + * calculate Ties with Bezier bow + * junked tex-slur.cc + * junked ps-slur code + * junked height-only slur-correction + * lots of bezier/slur fixes + * bezier:blow_fit + +************** +pl 57 + - verneukeratificering van JCN code. + - lots of updates on our own makefile system. + - junked automake & documented it + - put rods into Spring_spacer too. Much cleaner + - bf: weird spacings (enge floats) + - bf: too many constraints added. + - smarter constraint check + - bf: table16 fontsize. + + - 56.jcn1's empiric computer science. + - debian patches (AF) + - solaris/irix patches (AO) + + + pl 56.jcn5 + - bezier and slur: cleaning and fixes + - bf: removed silly experimental beam feature + +pl 56.jcn4 + - reintruduced slope in bug [c8 c16 c16] in favour of stemlen bug... + - staff-side: accent half line higher + - reincluded silly los-toros latex file + - bf's: bezier.cc,bow.cc, mat.hh: rotate + - bf: bezier slur: handle broken slurs + - bf: beam + - dehairifications of bezier.cc + +pl 56.jcn3 + - bf's: offset multiply, matrix rotate + - dropped los-toros latex file + +pl 56.jcn2 + - even nicer excentric slurs; + - input/slur-bug.ly + - los-toros with barnumbers ;-) + - nice version of height-ajust bezier slurs (see sleur.ly --test) + - bf's beam: + * slope in[c8 c16 c16]; + * allow no INTER position for normal quantising + +pl 56.jcn1 + - bezier curves with raaklijnen + +pl 56.ag1 + - `Makefile.am.wild's now should work correctly with VPATH (AG) + +************ + +pl 56 + - more dutch vocabulary + - Barnumber FAQ added + - bf: abbrev over whole note. + - feta: reverse turn. + - bf: rod distance + - bf: local key clashing + +*********** +pl 55 + - bezier check and ajust for slur height + - better slur height ajust + - DO chmod 755 *test/*sh + - bf: discretionary of || + - bf: scripts within staff + - NOT Grandstaff -> Grand_staff (yet?) + - bf: cresc. decresc. height lookup.cc,init/table* + - bf: staff-symbol (script placements) + - staff-group-bracket + - bf's preludes, los-toros + - nicer trills + - adjustment slur extend + +********** +pl 54 + - bf dynamic_grav + - bf accidentals with key change + - bfs with command-items in non-breakable columns. + - typos (thanks LM) + +pl 53.jcn1 + - two new BUGs + - preludes-* with trills + - nicer trills + - fixed ugly slur extend bug + - first try at symphonic work: (start of) Coriolan + - fixes: los-toros + - test/ with some stupid tests + - bf, again midi-output + - --no-timestamps options for lily/mi2mu (to enable make check targets) + - removed doubles in lilypython + - smarter prev_version for make-patch + +*********** + +pl 53 + - bf: c4 \< c4 \< + - bfs of spacing stuff + + +pl 52.jcn6 + - make check target + - moved flower/test to flowertest + - dist fixes + - flower no longer independent package + - bf: GNUmakefile + - bf's: configure: debugging (default) /profiling + - bf: Rational iface (fixes MIDI output) + - bf: non --srcdir configure + build with GNU make (ugh) + - ugh: autowildflower + - bf's: invoking wild-perl + - bf: ugh: staff-side.cc: placement height + - bf's: gnu 2.7.2 link (huh?, everyone using 2.8?) + - make-patch: default diff against (copy of) srcdir + - bin/conflily configures in ../build + - GNUmakefiles that do: + * auto-update of Makefile.am.wild + * auto-switch to builddir + - bf's: configure --srcdir + - fixes for los-toros/twinkle/test-lyrics + - latex file for los-toros (ugh) + - staff-side: symbols closer... + - half fix of midi output? duh. + - oboe1 los-toros + +************ +pl 52 + - split up elem-group stuff. + - per line widths + - miscellaneous fixes by WL. + + +pl 51.jcn1 + - bf's: dutch->nederlands + - Cygnus b19 compile/link fixes + +************ +march 27 +pl 51 + - changed dutch -> nederlands, german -> deutsch etc. + - norwegian (AG) + +pl 50.jcn4 + - fixes for cygnus' gnu-windows32 beta19 + be sure to compile with -fno-rtti + - proof of concept for automated updating of Makefile.am + see mi2mu/GNUmakefile (still somewhat clumsy) + - mv'd both config.hh.in to acconfig.h + - copied printing/debugging/optimising options to flower conf + - (some modified) fixes from AO + - beginnetje los-toros-oboe + - bf: DIR_DATADIR + - bf: trills + +************ +pl 50 + - deprecate autowild + - --srcdir fixes + - ly2dvi 0.8 + +pl 49.jcn2 + - static (default) and/or shared libs flower and lily + - patch from AO 'libtool 1.1.1' + - mf: trill-symbols: feta-slag.mf + - shared libs (ugh: hardcoded switch in configure set to static) + - some fixes: denneboom.ly, standje.ly/standchen.ly + +******** +march 19 + +pl 49 + - parser assert changed to warning + - fix stdin reading + - small jcn fix + - changed unbound Spanner from assert to warning + - forced breakpoints + - add a nowildcard: stmt to wild-perl + +pl 48.jcn5 + - ugh: double parser/lexer: + be sure to rm lily/parser.cc lily/lexer.cc or bin/clien + before re-running autowild! + - V.RSION + - bin/clien bin/meek + - bf's: flower/VERSION, flower/config.hh, lily/lexer/VURSION + lib/config.hh bin/convent-mudela + - lost of automake fixes + - automake + +****** +march 12 +pl 48 + - Pitch_squash_engraver makes Rhythmic_staff possible. + - some fixes to buildscripts for sgi irix + - misc. patches (WL) + - move away from libg++: rolled own Rational class.. + - don't make gif files Documentation/ by default + - ly2dvi manpage (JAF) + - ly2dvi 0.7 (JAF) + - more clefs. (MB) + +pl 47.jcn2 + - bf: interbeams and beam-stemlengths for size != 16 + - bf's: preludes + - more introduction + +pl 47.jcn1 + - voice{one,two,three} defines + - preludes-*: fixes, junked multi, broke-down score-block + - mudela-book: added center option + +****** +march 6 +pl 47 + - Abbreviation now a separate item. + - bf'd some gcc 2.8 warnings. + - bf'd spurious space in autodep. + - more clefs (MB) + +pl 46.jcn1 + - start mudela introduction + + +pl 46.jcn2 + - bf's: preludes-* + +******* +feb 27 + +pl 46 + - span-bar at upstep. + - bf: \score { \score_identifier } + - tenor clef (MB) + +pl 45.jcn2 + - preludes-4,5,6 + - bf's denneboom (oeps, see loop) + +pl 44.jcn7 + - text-item.cc: try to get fingers just above note... + - set minimum space between columns + - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-( + - bf's midi ascii-debug output + - bf: property instrument + +******* +feb 12 +pl 45 + - bf: translator switching + - SunOS and IRIX patches (AO) + - preludes bugfixes; preludes.tex ugh (JCN) + - shared lib numbering (AF) + - various fixes for debian (AF) + - ly2dvi .6.jaf (JAF) +pl 44.jcn6 + - bf: crescendo.cc: bigger and use bar_size + - slur: guess extra height for height limit for extending notes/stems + - ps: adjustable slur height limit, bf crescendo + + +****** +feb 6 +pl 44 + - ly2dvi 0.6.hwn1 + - ly2dvi 0.6 (JAF) + - use ly2dvi for website + +pl 44.jcn2 + - fingers default to above note + - preludes-2.ly + - parser: fingerings + - preludes-1.ly + - bf: denneboom.ly + - preludes-3.ly.m4, standje.ly, preludes-4.ly + - make rule for macro ly-files + - pletvisibility (init/property.ly): + * default no bracket with beams + * invisible plet bracket feature + - finger dir in text-def + +******* +feb 2 + +pl 43 + - bf: broken Plet_spanners + - more GNITting + - avoid some more global ctors, for NeXTstep + - some NeXTStep patches from tiggr + - don't do overstrike/bold chars in textfiles + + +pl 42.jcn2 + - bit hesitating start of mutopia + - bf: don't try to typeset unterminated plet + - separately sticky plet durations: "c4 c4*2/3 c8 c4*1/1", ok Mats? + - denneboom.ly (half-baked version) + - indent and shape, see ^ + +pl 42.jcn1 + - bf: memmem revisited + - bf: ps: draw_plet vertical endings + - renamed stem_start to stem_begin + - bf: plet bracket placing on differently orientated stems + - more standje.ly and fixes +****** +jan 28 + +pl 42 + - ly2dvi 0.5 (JAF) + - italian.ly (thanks, Paolo) + - bf: first \mudelapaper output (BS) + - bf: cathedral + bazaar URL (thanks, Barrie) + - bf: libc-extension.hh (AO) + +pl 41.jcn4 + - plet brackets (always) in ps (only) + - Plet_spanner derives from bow + - bf: mf/Makefile: let %.tex %.ly depend on %.mf, + iso non-distributed %.log + - mi2mu mudela 0.1.8 + - bit better plet number placement + - handier plet syntax: [2/3 c8 c c ]1/1 and \[2/3 c2 c c \] + - Plet_swallow_engraver for lyrics + - bit better plet number placement (NOT) + - new plet syntax: combined beam and plet open + - more standje.ly + - new plet syntax: start: \plet2/3 stop: \telp1/1 + - Plet_req, Plet_engraver; removed plet stuff from beam + +****** +jan 20 +pl 41 + - warn for score with multiple Music blocks + - bf: \plet (MB) + - \textsharp in 16pt + - malloc frobnifying + - more fontsizes: 26pt, 11pt, 13pt + - \textstyle "bold" + - .rpm: remove old fonts + +pl 40.jcn2 + - bf: typo scores.cc + - bfs: non-default base constructor calls + - bfs: virtual destructors + - standje.ly: the real standchen (first bit) + - gcc 2.8 compile + - nicer scsii-menuetto + +pl 40.jcn1 + - bf: breaking of :| bar + - bf: lyric substitution of _ -> ' ' flower/libc-ext:memmem + - no slope=0 beams between stafflines + - bf: tex without lily-ps-defs + - bf: embedded mf shift: added '%' to \embeddedps + - doos compile + +****** +jan 12 +pl 40 + - some doco fixes + - debian diffs (AF) + +pl 39.jcn2 + - bf: bit smarter atan() for feta-sleur (thanks wendy) + - bf: y quantise of multiple down beams (typo) + - minor doc fixes + - bf: distribute mfdeps and moved from mf/out/mfdeps to mf/mf.dep + - some changes to ANNOUNCE + - fixes for simple slur/tie placement + - embedded MF fonts identified by parameters -> reusable runtime fonts + - clean-embeds.sh + - runtime MF beams: feta-beum.mf + - bf: enable switching PS off + - updated runtime MF feta-sleur.mf with new PS slur algorithm + +****** +jan 5 1998 +pl 39 + - 0.2 ANNOUNCE sketch + - unix style paths for LILYINCLUDE env + - show all output pages on website + - ps-to-gifs.sh + - bf: wtk1-fugue2 + - python make-website + - higher brace resolution + - phased out musixtex stuff + - bf: rhythm.ly + - PS slurs + - PS beams + - Bow units + - turn on PS by default + - turn off barnumbers by default. + - bf: halfbeam size. + - bf: -M bug + - stafflinethick in PS (crescendi) + - continued (de)crescendi (in PS) + - bf: spurious beam reqs + - handle unfeasible spacing cleanly. + - ML-address change + - output naming: default to basename[-serialnumber].{midi,tex} + - bf: clef width + +pl 39.jcn2 + - make-examples.sh + - leftright repeat sign + repeatbar dims + - smaller minimum sized rod at end of bar + - bf: spacing.ly + - less space at begin of bar + - experimental whitespace fixes at begin and end of bar + - added to beams.ly + - open-up beam spacing for mult > 3 + - fixed hang/sit to overlap iso aligne with staffline + - fixed inter beam spacing, paper*.ly + - scsii-menuetto.ly fixes + - init/property.ly + - property settings for beam quantiseing and damping + - provisionary multiple-beam fix + +****** +pl 38 + - bf: \> \! \ff (crescendo overlap) + - misc feta-fixes, flageolet sign. + - midi tempo fixes. +pl 37.jcn3 + - max beam slope "compile time parameterised" and set to 0.6 + (oh, how we need runtime generated beams!) + - beam's left y-pos quantisation + - beam slopes' y-span quantisation + - stem.ly + +pl 37.jcn2 + - feta: fixed sizes small numerals + flageolet + + +******* +dec 12 +pl 37 + - --postscript + - don't crash non-fitting grouping (thx, John) + - attach unended spanners to a column (thanks John) + - bf: unended tie + - bf: tie direction + - bf: unended slur + +pl 36.jcn2 + - feta: small numerals + +******** +dec 9 + +pl 36 + - bf: notehead collisions + - bf: dot y-position + - use Item::break_priority_i_ for horizontal alignment of breakables. + (it still sucks) + - junk some derivation checks, junk Normal_*_bar + - FlowerLib fixes. + - twinkle fixes. + - feta: flag/clefspacing + + +******* +dec 5 +pl 35 + - naming: lily-init iso symbol.ly + - mf braces + - center textscripts. + +pl 34.jcn1 + - mf: nicening of dyn, klef, rest + - fingerfont + - bf: 12/8 + + +******** +dec 2 +pl 34 + - bf: mf: numbers and alto clef + - bf: scsi-menuet + - PS crescendos + - ly2dvi diffs (JAF) + - debian diffs (AF) + - w32 doco fix (JCN) + + +******** +nov 24 + +pl 33 + - added abbrev.ly to font.ly; rm'd abbrev.ly + - don't process scores on parse errors. + - bf: kortjakje.ly + - bf: invisible stems in beams (abbrev.ly) + - lytodvi script (JAF) + - output Paper_def settings to TeX file. (eg: linewidth) + +******** +nov 19 +pl 32 + - change type checks (ughugh) to derivation checks (ugh) + - this fixes clef bug. + - bf: order of breakables: meter comes after bar. + - bf: do error iso coredump on unknown symbol-table + - bf: release.py, copy patch too. + - bf: add makefile dep for disting MF logs. + - bf: don't read font-en-tja*.ly, but feta*.ly + +pl 31.jcn2 + - first version of (non-ugh) c-klef + - bf: mi2mu: notes of zero duration as comments + - feta: ugh c clef + + +******** +nov 17 + +pl 31 + - bf: replaced Score_column assert by a warning (thanks Scott) + - bf: mi2mu version output (thanks Scott) + - faq updates + - always output lily header with Lily version + - bar mucking: make scorebars/braces different from repeat bars. + - feta: repeatcolon, clef bf's + - debian/ updates. (AF) + - moved debian stuff into toplevel dir + +******** +nov 11 + +pl 30 + - feta: G clef. + - scripts now do relative coords (fixes lyrics + barnumber bug) + - bf: Lyrics lexer mode + - bf: bass clef + +******** +nov 6 +pl 29 + - feta: bass clef, bf: dynamics, bf: 64th flag + + +******** +oct 30 +pl 28 + - revised Staff_symbol::brew_molecule_p () + - naming: \makelilytitle + - fixes for TeX titledefs (JAF) + - junked some obsolete pedal stuff. + +pl 27.om-je-te-helpen-met-je-ps-spul.jcn1 + - embedded slurs: + * bf: placements + * added \embeddedtex + * postscript is default + * fixed \embeddedps + * fixed mf: draw_slur + * postscript macro: draw_slur + +******** +oct 29 +pl 27 + - -t/--test switch for experimental stuff. + - bf: debian optimize is not with 'z' + - mf: naming feta fonts are now called feta16, feta-beams16, etc. + - feta: ledgerline + - lily adjustments for new and elegant ledger line + - bf: mf-source path. + +pl 26.jcn1 + - bf: numerals + - sleur.ly + - embedded slur testing + - bf + patch: make-patch release.py / VERSION + + +******** +oct 26 +pl 26 + - bf: \transpose + - feta: numerals 0 - 9, rewrote flags. + + + +******** +oct 22 + +pl 25 + - variable stemlength + - feta: 32nd, 64th flags + - font.ly + - dist & tarball made in out/ + - rewrote release.sh in python + - notehead/stem attachment better. + - more Stem cleanage + - related Beam cleanage + - started numeral font (JCN) + - bf: whole rest outside staff. + +********* +oct 20 +pl 24 + - internationalization preps (FP) + - rewrote make-patch in python + - BUGS: added another flex/libio crash explanation + - feta: flags + + +******** +pl 23 + - feta changes: 1/4 rest, flat, bf 8-128 rest + - bf: cadenza + - bf: scripts + - bf: rest-collision + - bf: meter placement + - junked cpgento.sh + +********* + +pl 22 + - bf: lyric 's- Zondags + - bf: colliding accidentals: renamed translate(Real,Axis) to translate_axis() + - renaming of scripts + - strings with escaped characters. + - bf "string_with_\"_embedded" + - bf: mf/Makefile + - feta changes (trill, organ pedals) + - updated mf-to-table for new feta conventions + - changed header format to something sensible. + - moved staff to centerline == 0; + +******** + +pl 21 + - shrinking uses more energy than stretching + - check IO error on writing (disk full?) + + +********* + +oct 8 +pl 20 + - don't swallow non lyric-stuff in lyrics + - x-position of Stem + - more feta changes + - move scripts to right + - genheader.py replaces genheader.perl + +pl 19.jcn2 + - bf's mi2mu: + * Midi_track_parser::note_end_all + * staff output uses key, meter, tempo read + * command line read minor key + * minor key notenames + +pl 19.jcn1 + - small changes to sharp, fermata + - small changes to lilypond.lsm+doc, lelievijver.lsm + - mi2mu updeet + bf + +pl 19 + - bf: keyword.cc rm'd struct defs + - dots: support for feta dots. + - lots of font (feta) tjanges + - mf-to-table rewrite in python + +********* +pl 18.jcn1 + - check for python, mf-deps fix + +pl 18 + - bf: Box[X_AXIS] = b + - bin/mf-deps.py script + - moved beams out of font-en-tja into vette-beams. + - Made corresponding .cc changes. + + +jcn patches + - egcs compile (no link yet) + - nicer 4rest + - beam font (je kunt wel tegen een grapje, eva?) + - mf-to-table: + * "breapth" (x-depth) feature + * handle generic stuff such as beams + - polished noteheads + - fixed 8-128 rests + - 4rest + - mf-to-table generates tex defs + - bf:mf-to-table and conflily outname check + - 8-128 rests + +****** +sep 24 + +pl 17 + - bf: ledgerline width + - bf: toccata-fuga-E + - took out some hardwiring of tex-beam + +pl 16.jcn1 + - mf-to-table.in: generate mozarella metric info tables + - autometric.mf: write metric info to mf logfile + - ital-r.mf, smaller ital-m.mf + - variable streepjes length (top/bottomlines); fixed (for 20pt?) + - streepjes twice as thick as staffrules + - even more pronounced bolletjes -- how 'bout this wendy? + - quarter and half note after drawings (a/b less distinct) + +***** +sep 19 +pl 16 + - revised mudela-man a bit + - ; optional after \musicidentifier + - bf: doco about {Mus*,Opus}TeX + - bf: configure: MFDIR + - bf: String::operator bool () removed + - bf: String::operator char const * () removed + - bf: Line_spacer::~Line_spacer () added: plugged memleak + - bf: Line_of_score::do_unlink () call Spanner::do_unlink + - bf: rests in beams + - bf: textnatural + - bf: 20 pt flags + - bf: longarest + +pl 15.jcn1 + - bf: typos whole and half notehead + - de-uglyfied bolletjes.mf + - ascii output of font metrics in mf logfile + +****** +sep 17 + + +pl 15 + - put top of NEWS file in the webpage + - breadth first search for engravers. + - bf: coriolan-alto.ly + - Stem / Notehead width now properly calced + - Atom and Symbol merged + +pl 14.jcn1 + - lily's own noteheads (balls/globes :) (font-en-tja*.mf) + - {table,paper}* and taupindefs adaptations (when are we moving?) + - fp, sf, sfz dynamics + - font.ly + - bf: dist mudela-mode + +******* +sep 15 + +pl 14 + - Simple but nifty mudela-mode.el for Emacs + - slightly better syntax for single-note-repeat, now default kept in +Stem_engraver + - bf: Abbrev_beams are not the only beams (see: jcn4, stem-info, thanks, Jan) + - a CPU timer for Interpreting and Breaking + - Separate Score_elem: + * invoke-once stuff in Super_elem (using function pointers; much cleaner now) + * geometrical stuff into Graphical_element + * Axis_group_* accept Graphical_elements iso. Score_elems + * A dimension cache, hopefully this makes lily a bit faster + * TeX output moved out of Score_elem, separate interface Outputter + + - < \multi 2; bla > -> \multi 2 < bla > (mudela 0.1.6) + - bf: don't do \multi if \type specified + - Translator switching: Change_translator, Change_iterator + + +pl 12.jcn4 + - fixed dynamic f, magstep bug + - gaps on abbrev-beams + - bf: stem-info + - bf: last abbrev + - bf: stem: do_width + - bf: removed rest-column.hh + +******* +sep 11 + +pl 13 + - big Rest/notehead rewrite: + * separated Rest, Note_head and Dots + * Dot_column: dots are now chord-wise aligned + * Rhythmic_head is base for Rest, Note_head + * Merged Note_column and Rest_column + * Rest_engraver + - grand Engraver/Translator/Performer rewrite. + * properties: \property voice.dir = -1 (mudela 0.1.3) + * Input_translator junked, now Translators are generated +by the parser (mudela 0.1.4) + * Translator changing: \translator Staff=oboesolo + * Translator preselect: \type Staff=bla < c4 >. (mudela 0.1.5) + * Engraver/Performer now derived of Translator. + * Engraver_group_engraver/ Performer_group_performer derived of + Translator_group + * renamed: Voice -> Thread, Voice_group -> Voice + - renamed Audio_score to Performance + - junked mididef statics + - Audio debug output + - bf: excess [] in scsi + - bf: swallow \skips + - bf: don't crash on infinite dims + - renamed wohltemperirt to wtk1-fugue2 + - bf: address in GPL + - bf: errors in stdin + - bf: stop if errors in init files + - bf: move stem too when doing collisions + - Molecule::add_XXXX -> Molecule::add_at_edge () + - doco updeet: why no midi FAQ, index, CodingStyle hungarian + + +pl 12.jcn3 + - try at better dynamic font, copied from cmbxti10: mf/* + - typesetting abbreviation beams; abbreviation-* + - some simple abbrev fixes + code cleanup (dank je, lieverd) + - typesetting simple abbreviations: c4:16 === [c16 c c c] + +pl 11mb + - Support also for \longa in duration-convert.cc, init/ and tex/ + files. (MB) + +******** +sep 3 + + +pl 12 + - bf: don't redefine tex primitives like \textfont and \mathfont + - nicer broken slurs (?) + - bf: error status upon parse error + - robustness in Lookup::*slur + - bf: mi2mu: warn if 0-length string in midi-file + - output id-footer + +******** +sep 1 + +pl 11 + - forms for Musical vocabulary + - ignore \r for windows + - Now paper{score,def} & midi{def,score} derived of class +Music_output[_def]. Score is almost empty. + - Engraver hacking: + * junk Text_engraver + * Timing_engraver + * barnumber now really counts the number of bars + * Separated Stem_engraver and Beam_engraver + * junk Stem_beam_engraver + * no need for Stem_reqs + - use Direction = {LEFT, RIGHT, UP, DOWN} iso. -1, 1 throughout source + - ties and slurs with Drul_array + - junked Spanner_elem_group + - bf: w32 fixes + - Spanner now spans items. + - more GNITting ( bla ) -> (bla), indentation + - Drul_array + - Paper_column now is derived of Horizontal_group_item. Items +are no longer hardwired into a Paper_column + - bf: stdin input + - PCol -> Paper_column + - Wtk-i, fugue1, prelude1 (SR) + +******* +aug 21 +pl 10 + - bf: init pending_indent_i_ + - output header to TeX file. Who wants to write TeX to make it work? + + - mi2mu: bf's, --key option + - removed Duration(int,int) + - bf: Duration_convert::dur2_str + +pl 9.jcn2 + - redo of mi2mu frontend (midi-parser) + - bf: String_convert::bin2_i; added bin2_u + - bf's: Binary_source_file + - bf: constr. Tempo/Timing_req +pl 0.1.8.jcn3 + - table20, standchen-{16,20}* +******* +aug 18 + +pl 9 + - declare rhythic_request + - preliminary support for real \mudelaheaders + - context-sensitive arithmetic spacing. Looks alot better + - silly GNU braces. + - JCN fixes for pl 8 + - bf: midi instrument + - Vocabs from GMP-I + +pl 8.mb: + - use log of duration-name + +******* +aug 15 +pl 8 + + - gif -> xpm + - bf: Whoops! Open eyes now, when finding shortest note in +spring-spacer. Fixes spacing problems. + - GNU coding: parentheses (here you are, Franc,ois :-) + - all macros now UPPERCASE + - Identifier blondification: don't use void* + - Identifier doesn't store its name. Much cleaner now. + - bf: Rest_collision_engraver now always announces + - bf: announce Staff_sym only once +pl 0.1.7.jcn1 + - complete redo mid/back-end of mi2mu + - bf: do not create/play empty Audio-{text,instrument} events + + +******** +aug 14 + +pl 7 + - Audio_element as base for Audio_item and Audio_staff. fixes +midi-lyric segfault + - added "Gallina a due violini" (MB) + - make MIDI files on website. + - Collision now also is an Element_group. + - bf: announce Collision when created + +******** +aug 13 +pl 6 + - bf: 13 shift/reduce in parser fixed + - bf: plets in parser + - bf: main.o (again) + - german notenames (RM) + - Score_elem::offset_ now relative to its X/Y groups. Slight +speed increase? + +******** +aug 12 +pl 5 + + - Wordwrap revert + - added LilyPond in WWW titles + - oops. A quaver is a 8th note, not a 4th + - bf: main.o remaking in lily/Makefile + - unhair Voice_iterator + - bf: error if no music in score + - bf: don't create translators if Chord element is empty + - bf: ctor of Tempo_req + - use virtual do_equal_b() for request comparison + - bf: turned off default plets: c4*2/3 c4*2/3 -> c4*2/3 c4*4/9 + - bf: time_int() of an empty chord/voice + - more corrections to GMP Manifesto + - debian updates (AF) + - bf: g++ ICE in Performer_group_performer + - use fread() for reading in Simple_file_storage + +pl 0.1.3.jcn1 + - mi2mu: simplification +bf lily_stream: indentation and wordwrap + - mi2mu: bf: blunt: non-alpha(num) chars from identifiers + +********* +aug 11 + +pl 4 + - correction of GNU Music Manifesto + - moved lowlevel stuff of Source_file to Mapped_file_storage. +Interface via File_storage. (Now using Simple_file_storage) + - bf: c4-"A"-"B" + - bf: exit status + - declarable keys + - Engraver_group_engraver::find_simple_engraver() + - bf: lily/Makefile + - bf: Midi_note_event ctor + - bf: tempo request + - popular twinkle twinkle (JV) + - mudela: parse tempo requests, \midi{ \tempo 4= 60;} + +****** +aug 8 +pl 3 + - don't crash if no Clef_engraver. + - PScore -> Paper_score + - bf: Score_elem::extent() init of interval + - bfs: {Horizontal,Vertical}_group related + - bf: don't change original Item while doing making + multiple copies + - bf: configure DATADIR + - bf: type of spanbar. + +pl 0.1.2.jcn1 + - minor doco fixes + - revived Midi_walker + - moved midi out of performer-* to audio-* + - Audio_staff + - removed all <ugh> members from performers + +******* +aug 7 +pl 2 + - junked Line_of_staff + - bf: --output + - bf: . in lexer + - bf: mi2mu version number. + - bf: in mudela-book + - bf: don't forget to make mi2mu + - Bar_number_grav: measure numbers (experimental) + - Bar_column_engraver, Bar_column: scripts on bars + - rewrite of {Horizontal,Vertical}_group. Yes, again. +Now neatly integrated into class hierarchy + - Axis, Axis_group + - Debian rules (AF) + +pl 0.1.1.jcn1 + - Audio{column,score,item,...}, more generic audio + - bf: Makefiles + - bf: mi2mu mudela version +********* +aug 5 + +pl 0.1.1 + - {Horizontal, Vertical}_group. A score_element may be in at most one. + - This means Horizontal_group_item and Vertical_group_spanner need special support. + - This also means a big speed increase + - configure cleanup + - bf: Choleski solve. + - doc updates: lilygut, INSTALL + +pl 0.1.1.hwn + - recode of Break/Colhpos interfaces + - Gourlay_breaking: dynamic-programming optimal solution for + casting off. Word_wrap is still optional + - some printing short cuts if no -d specced. + - band_matrices for column calcs + - more Diagonal_storage fixes + - retake: INFTY fixes ( now infinity_mom, infinity_f ) + +pl 78.jcn3 + - configure: ln and zip + - target doosdist -> lilypond-x.x.x.exe.zip: + executables - sources + + + diff --git a/ONEWS b/ONEWS deleted file mode 100644 index f936254a1f..0000000000 --- a/ONEWS +++ /dev/null @@ -1,1170 +0,0 @@ - -This file documents changes in version 0.0 - -august 1 - -VERSION 0.1.0 - - - bf: output tempo to track 0 too - - bf: don't forget to copy id_str_, so moved into Music - -pl 78.jcn2 - - INFTY doze fixes - -pl 78.jcn1 - - fix for multi-staff midi: wohltemperirt.ly, standchen.ly - - doze fixes - - bf: conflily, configure (text) -***** -july 31 -pl 78 - - bf: Midi_instrument - - added enable/disable defaults to help. - - incredibly ugly NAME_MEMBERS(); bug. Immediately changed to -DECLARE_MY_RUNTIME_TYPEINFO; - - \stem -1 -> \stem \down in input - - bf: slurchar index - - configure warnings - - preliminary stuff for multiarch building - - #!/usr/bin/perl fixes (AO) - - some Makefile cleanups: now faster. - -pl 77.jcn2 - - Midi_instrument - -****** -july 29 -pl 77 - - some fixes for internal compiler errors -derive from Pointer_list with default dtor gives error with -O2 - - .ini -> .ly - - lyrics fix - - Performer beautification: got rid of set_track(), midi_output() - - pseudo RTTI for midi-items - - bf: Performer*::print() - - links.pod - - Voice_element -> Request_chord - - fixed flex problems: stdin input works again - - Documentation/Rules.make, make-website via make - - spacing: now add basicspace - -******* -july 28 -pl 76 - - mudela version bumped to 0.1 - - mudela-book - - doco updates, now some stuff in LaTeX - - junked book.{ly,tex} example - - progress indicator - - rhythm.ly updated - - removed mf sources from distribution due to (c) stuff - - allowal of breaks handled cleanly - - junked Subtle_reqs, junked Request_iterator. Request - iteration now by Voice_element_iterator - - Piano_bar, Piano_bar_engraver, Span_score_bar_engraver, - Span_score_bar - - Swallow_performer - - removed Staff_engravers, grouping into Line_group_engraver - - Head_column as base for Rest_column,Note_column - - Score_column derived from PCol - - regurgled Line spacing: interface and implementation - separate. Idealspacing moved into Spring_spacer - - Gourlay style linespacing - -pl 75.jcn6 - - {lyric,meter,key}-performer - - span-brace-* (Removed again. Such is life) - - doze compile - - midi output, notes only - - working midi output -- hacked - - doze compile, mingw32 configure (still triggers gcc int. comp err) - -pl 74pre.jcn2 - - mi2mu fixes after scott snyder <snyder@d0sgif.fnal.gov> [sss] - - mi2mu update for mudela 0.0.61 - - conflily fixes - -******* -july 21 - -pl 75 - - inbook.ly & book.tex example. - - natural width: linewidth = -1.0\cm - -pl 74pre.jcn1 - - oversimplified midi output thru performer hierarchy - - bf: Spanner::doprint - -pl 72pre.jcn1 - - naming fixes; some iter*() explicitations - - removed acceptor.hh - - *performer*: second draft of midi (audio/...) - -******* -july 9 - -pl 74pre - - Input_engraver -> Input_translator - - bf: span start/stop is now a "used" col. - - Rest_column/Rest_collisions bugfixes - - bf: crescendi. - - Spanner do_print() - -****** -july 7 -pl 73pre - - some refs doco. - - move Input_engraver into Paper_def - - junk Interpreter - - naming: Request_engraver -> Engraver, - - Music_iterator::next() -> process_and_next() - - junk Voice_engravers - - Span_bar, Span_bar_engraver - - Vertical_align_engraver - -******* -july 2 -pl 72pre - - \paper{} syntax: var = 1.0\pt;, with an Assoc array - - sketch of MIDI Performer classes. - - bf: memleak in parser - - naming: Acceptor -> Translator - - input: bf collisions.ly, scales.ly - - bf: [r8 c8] - - naming: Register -> Engraver - - force \\ on identifiers - - doco updates - - musixtex T73 fonts - -pl 70.mb - - bf: find syntax in Variables.make -***** -july 1 -pl 71pre - - nested \melodic and \lyric constructs - - init id's, Input_register aliases. - - bf: notehead x-swap - - bf: auto-keys. - - bf: first clef - - junked \init_end; construct - - Preparatory work for MIDI output: - * Acceptor as baseclass for Register_group_register - * Global_acceptor as interface of Register to Score - - bf: empty voice - - Lyrics: partially working - - some doco updates (junks, mostly) - - -****** -june 30 - - -pl 70pre - - bf: text Script - - bf: Script::dir_i_ checks. - - bf: script stacking - - bf: Text_spanner::do_subst. - - bf: Text_spanner::Text_spanner(Text_spanner&) - - bf: script priority read from script.ini - - bf: Script_def::do_equal_b - - bf: script dims. - - mudela: ; obligatory for \paper {}. - - some cosmetic changes involving RTTI macros - -******* -june 29 -pl 69pre - - bf: whole rest position, whole/half rest dots. - - bf: scripts - - reg termination - - centered bars - - bf: init of Tie::dir_i_ - - bf: Staff_side depends on staff_sym_ - - bf: Script::do_substitute_dependency() now implemented - - more print info (also in output) - - bf: Vertical_align_element - - stemless beams now allowed (with warning) - - bf: Rest_column::stem_l_ init - - merge rests.ly with collisions.ly - -pl 67.jcn3 - - rests under beam [c8 r c] - -pl 67.jcn2 - - first attempt at rest collisions - - rests.ly - -pl 67.jcn1 - - beam stem length: beams.ly - - bf: mingw configure - - re: conflily - -****** -june 26 -pl 68pre - - doco: other-packages.pod, lots of lilyliterature.pod - - last duration mode now is default. - - some OpusTeX stuff. - - bf Y2K in convert-mudela - - Grand rewrite of Music/Register stuff: - * separation of Y and X-elt-groups - * Registers: info up: broadcasts, info down: get_xxx_info() - * Registers: try_request works from bottom to top of tree. - * Score_elem empty_b_ and transparent_b_ flag - * Junk Staff_column, and find the requests while walking the - Voices. - * Score_register - * Staff_group, Score_request_register. - * align key/Meters/bar across staffs - * junked Staff, Staff_column, Staff_walker, Complex_walker, - Request_column Pulk_voice, Pulk_voices, Walker_registers, - Voice_element, - Input_score, Input_staff, Input_music and a lot of - parserjunk. - * mudela: lots of structure changes : now much simpler - * generation of pre/postbreak items now in Score_elem with deps. - - - bf: make_patch explanation - - bf: make install TeX stuff - - mudela: . mandatory for REALs - - -pl 67 - - damped beamslope after wanske - -****** -june 3 -pl 67 - - sketch of Music classes - - General_script_def as baseclass for Text_def and Script_def - - bf: clean lib/out/liblily.a - - bf: rests shorter than 1/4 - -pl 66.jcn3 - - bf: make uninstall - - conflily - - f: some pedaling - - plet hack removed :-( [ c c c ]2/3 -> [2/3 c c c ]1/1 - -pl 66.jcn2 - - bf: bar, Hilfslinie - - bf: configure for mingw32 - -pl 66.jcn1 - - WIN32 -> WINDOWS32, more win32->windows32 - - some GNU/Linux changes - - cygnus b18 / mingw update - - doze compile; bf: p-score.cc compares - - reincluded toccata fixes - - small stuff: vi tags, typos, bibl - -****** -may 27 -pl 66 - - make_website --jpeg, --png and --gif - - win32 -> windows32 - - bf: Score_elem::TeXstring assert fail - - bf: headswap with stemdown - - bf: broken tie - - bf: broken slur - - bf: accidental dims - - bf: measure bar width - - -****** -may 26 - -pl 65 - - bf pathfind /root/file - - massive Score_elem rewrite: - * group_element_i_ count - * support for removing an individual Score_elem cleanly. - * moved dep stuff into class Directed_graph_node - * Score_elems can be copied and deleted freely. - * junk PStaff - * Spanner_elem_group - * Line_of_{score,staff} now are Score_elems - * clean dep handling upon deletion - * delete unbroken spanners - * added a break_processing round. - * Super_elem - - junk Complex_staff, - - clean {lily}?proto.hh - - Element_group - - Score_elem now as virtual base class everywhere - - naming: Staff_elem -> Score_elem - - bf: make in toplevel dir - - bf: broken tie y-pos - - bf: sharing 4th, 8th and 16th noteheads - - bf: overlapping chords. <\multivoice c d > - -pl 64.wl - - new stem direction code - - bfs: wohltemperirt.ly (thanks, Werner) - - bf: stem direction - -pl 63.jcn2 - - doze compile - -pl 63.jcn1 - - bf: mi2mu mudela commands - - bf: mi2mu tracks - - mi2mu quantify tuning - - mi2mu TODO - -********* -may 16 -pl 64 - - exe's now built in out/ - - toplevel Makefile dep from make/Toplevel.make.in - - make_website: add version footer - - make_website: bf dist *.txt - - bf: fix loose bars : \meter 4/4; c1. - - Staff_elem -> Score_elem - - bf <cis cis> - - vbrace lookup - - resync barcheck - -******* - -may 15 -pl 63 - - bf: segfault during MIDI output with mi2mu output. - - kludge: parse error beyond eof - - don't read ini if toplevel file not found - - accumulate \kern in TeX output. - - bf: try to prevent long lines; TeX breaks on them. - - naming: Pointer->Link, IPointer->Pointer - - bf: \plet didn't work (MB) - - GMP manifesto. - -pl 61.jcn4 - - mi2mu -p -s16 fugua2.midi getting better! - plus factor 2 mi2mu speedup (fugue2.midi 5.50user) - - bf: Duration_convert quantify threshold down - - bf: (on quantify): tcols quantified; no silly voices - -pl 61.jcn3 - - lily parsing speedup: backup rules for lexer.l - - bf: mi2mu, using midi_voice list... - -pl 61.jcn2 - - all in all mi2mu speedup of about factor 8 since pl61 - (fugue.midi 82.72user to 10.30user on a 586.133) - what about lily? - - binary search on track-columns - - mi2mu IP*list to Array (implications?!) conversion - - mi2mu parsing speedup: backup rules for midi-lexer.l - - bf: zero denominator - -********** -may 14 -pl 62 - - make clean bf: remove lex & yacc files too - - added kludge in case measure too long - - added kludge in case of unconnected columns. - - kludged columns get error marker - - kludged lines get error marker - - -pl 61.jcn1 - - smarter + faster duration-convert using Array - - bf: mi2mu compilation/duration-conversions - - lots faster mi2mu, hopefully does type 1 too... -pl 60.jcn1 - - mi2mu handles non-quantified rests, try mi2mu -b wtk-i/fugue2.midi - - - -********** -pl 61 - - scales.ly bugfix: dimensions default to ((0,0), (0,0)) - - naming: PointerList->Pointer_list - - tied notes don't get accidental - - bf: crescendo size - - fixes: make_patch, - - bf: _"text" direction - - mailing list into lilypond.pod - -pl 60.mb - - set_flower_debug: Warning if -d is used when NPRINT is defined. - - Fixed several TeX details. vcenter renamed since it interfered - with LaTeX. Position of accents changed. - - New example; scripts.ly - - table_sixteen: added scriptdefinition (Lilypond breaks if a - script is defined without dimensions). - - bf: ifndef typos in p-score.cc, choleski.cc - - bf: Slur::do_post_processing(), whole notes caused SIGSEGV. - -(ascension break :-) -******* -pl 57.jcn4 - - mi2mu handles rests (quantified only) - - fixed configure buglet - - "!date" Fri May 2 02:18:12 MET DST 1997 - -pl 60 - - Request_register::get_feature(), tie direction, Slur direction - - lilypond output is now directly texable. - - make_website checks return status - -******* -may 5 -pl 59 - - Slur now into voicegroups, and take stems into account. - - bf: rest size in table. - - split Slur in baseclass Bow - - Tie, Tie_req, Tie_register - -****** -may 2 -pl 58.jcn1 - - bf: toccata-fuga-E.ly - -pl 57.jcn4 - - mi2mu handles rests (quantified only) - - fixed configure buglet - - "!date" Fri May 2 02:18:12 MET DST 1997 - -pl 58 - - lexer cleanup - - national chars in lyrics - - \stem 2; bf - - long comments: %{ %} - - *.ini mode bf - - bf: partial may be everywhere - - bf: meterchange not at start of measure - - some doc updates - - bf: stem too long if stem is down. - -pl 57.jcn3 - - dank je schat, voor wtk-i - - mi2mu tries to handle rests - - "!date" Thu May 1 02:34:04 MET DST 1997 - - maak je het niet te laat schat? - XXXX HWN - -pl 57.jcn2 - - small toccata-fuga-E.ly fixes - - \bar "||"; is now doublebar, "|." is finishbar - - collision hshift fix, with on-line assistance -****** -pl 57 - - lots of TODO doco - - text alignment bugfix - - bugfix Voice_group_regs::get_register_p() now is actually called too - - bugfix init of Text_item::pos_i_ - -pl 56.jcn1 - - toccata-fuga-in-E.ly, excerpts with real-life collisions - - \{l,r}{b,f}{toe,heel} --- using cmsy fonts... - - pedal.ly - -pl 55.jcn1 - - mi2mu man page - - make doc fixlet - - \[lr]heel \[lr]toe scripts (happy pedal studies, pa) - - lyric with width - - removal of some example files - -pl 56.mb: - - last duration fix - - makefile fixes - - space rest - - swedish note name update - -****** -pl 56 - - Massive Rest/Stem/Collision/Note_column rewrite: resolve -notehead/rest ambiguities and bugs. eg, [c8 r8 c8] - -pl 54.jcn1 - - standchen.ly: repeats; lyricii to end - - convert-mudela: help + usage - - fixed midi key/meter-change (triggered by martien.ly) bug - -****** -April 23 -pl 55 - - staff-side robustification - - script-on-rest bug - - doc update - - transpose syntax -****** -pl 54 - - bugfix Colhpos.cc::OK assert fail. - - Inclusion of MusixTeX MF files, - - detection of MF dir -pl 53.hwn - - stacked lyrics - - configure/make buglets. -****** -pl 53 - - spurious accidental bug. - - simultaneity check. - - added AUTHORS.pod - - convert-mudela auto from guess - - include -> \include - - change order of opening parse/init file - - Pulk_voice, Pulk_voices - - Request_column - - revised request-from-voice extraction. Now much faster - -****** -april 17 -pl 52 - - Buildroot RPM - - tex-prefix and tex-dir sep'd (here you are jan) - - convert-mudela framework - - Collision_register, Collision - - \hshift 1; input - - Features changed -pl 50.jcn1 - - LILYINCLUDE dir searched before DIR_DATADIR(?) - - lily reads from stdin again (but does not now when to stop) -****** -pl 51 - - transposition bugfix + doco - - LilyPond -> GNU LilyPond - - bugfixes for Staff_side and Note_column* - - wohltemperirt: complete - -****** -april 11 - -pl 50 - - merge rest / notehead. - - Staff_side as a base class for most "staff-side" symbols. - - version check - - Note_column_register, Note_column - - multiple scripts - -******** -april 8 -pl 49.jcn1 -Bugfix - - configure[.in], make/Configure_variables.make.in c++ (=doze fix) - - "configure; make" ok for doze, win32 target may be removed now - - win32/gcc 2.7.2 compile fixes -- why does this all compile - (without warnings, why can-t i even trigger warnings) under - linux/gcc-2.7.2.1? it's quite a tedious job fixing this - shit _on doze_ all the time. - * fixed #includes global-regs.cc, staff-info.cc, staff.cc - * key.hh:Key() -> Octave_key() - * added missing lily/include/input.hh: Input( Input const& ) - -pl 49 - - lsm template - - clef in cadenza mode. - - notename clear - - \command bla; for \meter, \clef, \octave etc. -******* -pl 48 - - notenames init - - Duration order -> grouping - - broken key s - - default octave - -****** -april 3 -pl 47 - - dynamic flowerlib - - Input mods: now use Source_file iso Sources - - makefile lib deps restructured - - make_website now produces in out/ - -pl 46 - - examples.pod - - LILYINCLUDE env var. - - push/popgroup - - website updated - - Swallow_register - - Lyric_register. - - Staff_sym_register - - user settable register config - - struct Input now used iso defined_ch_C_ - - Walker_registers and Staff_registers separated - - dynamic-reg -> hairpins - -pl 44.jcn2 - - doze configure/compile fixes - - doze make refixed - - faq - - install mudela manpage too - - RedHat spec lilypond.spec fixed - - target: rpm (make RedHat packages) - -****** -Mar 26 -pl 45 - - Removing unused Voice_regs & Voice_groups - - -O2 bugfix - -pl 44.jcn1 - - merged 42.3 42.jcn4 code trees (see stuff below) - - moving towards Mudela 0.1 (again) - * keyword "music" dropped for horizontal music - * keywords "\lyric" "\melodic" introduced, e.g.: - melody = \melodic { c c | g g } - * removed level of indirection: - - staff initialisable with music identifier list: - \staff{ global melody } - - \score and staffs alike - - gnu standard(?) help texts - - configure "creates" toplevel Makefile from make/Toplevel.make - -Bugfix - - fixed mi2mu - - write meter to track0 too... - - default octave - - new Sources in My_midi_lexer: sourcefile_p_ = get_file_l(): oeps. - (ain-t hungarian grand?) - -Examples - - updated for mudela 0.1 - -****** -pl 44 - - naming: _c_l -> _C - - pure parser, My_lily_parser - - ''a iso ``a - - Includable_lexer - - junk Input_file - - Duration in parser, Duration restructuring - - grandiose lexer hax. Flex should be fixed, really. - Lexer much faster now. - - opps. mi2mu broken - -****** -pl 43 - - transposition. - - $variable&@name - - warnings if incorrect mode - - missing scsii measure - - declaration used check. - - - -pl 42.jcn4 - - lily writes midi meter/key changes from requests - - mi2mu: - + write mudela 0.1 - + write bar change requests - + more tunable quantisation - -Examples - - half-new-menuetto.ly converted to mudela -almost- 0.1 - - new mi2mu of bach's wtk pre1/fugue1 - -pl 42.3 (jcn version) - - oeps, branched source tree - -pl 42.hwn3 - - const naming change (T const <-> const T) - - Mudela 0.1 (roughly the same as below..) - -pl 42.3 - - moving towards Mudela 0.1: - * all keywords must be preceded by backslash '\' - * explicit lexer switches '$' and '@' dropped - * keyword "music" dropped for horizontal music - * keywords "\lyric" " introduced, e.g.: - melody = \melodic { c c | g g } - * staff initialisable with music identifier: - \staff{ melody } - * chords: < c e > - * octavate ''c`` - * \meter{ 2/4 } - * \octave{ ''`` } - - configure sets CXX (to c++, commonly) -Internal - - renamed lexer.hh, mylexer.cc My_flex_lexer to my.lily.lexer.* - -pl 42.2 - - new lilyinput (Mudela 0.1) doc. -Examples - - new-twinkle.ly (in Mudela 0.1, hopefully) - -pl 42.1 - - further Makefile revamping. - - moved flowerlib - -******* -pl 42 - - -pl 41.hwn3 - - struct Lexer_prefs - - parser bug - - make uninstall - -pl 41.hwn2 - - make file rehack - - spec update - - make install - - detect TeX directory - -pl 41.hwn1 - - cygnus configure, - - updated versioning - - install.pod - -pl 41.jn1 -Bugfix - - doze compile -******* -pl 41 - - release - -pl 40.3 - - all of the above - - hw's configure.in - - p-name.xx fixes - -pl 40.hwn1 - - hairpin dynamics - - notename now as identifier. Parser/lexer cleanup - -pl 40.2 - - mi2mu --blonde-durations, --no-silly options. - - mi2mu starts to look promising, see examples -Examples - - pre1.midi.ly, fugue.midi.ly -Internal - - Duration handles blonde midi-durations - - More settings for Duration_convert - - lily writes meter too (ugh, howto?) -Bugfix - - mi2mu auto track number fix - - mi2mu / lily Midi_tempo fixed/added - -pl 40.1 -Bugfix - - lily midi output track 0 name - - mi2mu tempo fixed - - make out/make and out/make/Site.make in configure script! - - mi2mu double newline fix - - -****** -Mar 11 -pl 40 - - release - -pl 39-5 - - own versioning for mi2mu: 0.0.10 - - some file renaming mi2mu -pl 39-4 - - all of the above - -pl 39-hwn2 - - last bar bugfix -Internal - - simple dynamics - - experimental RPM spec. - - doco update. - -pl 39-3 - - all of the above - - m2m renamed to mi2mu - - better line breaking in mi2mu - - (somewhat broken) progress indicator for mi2mu - - mi2mu output === lily input (in names and durations, - always assuming voices > 1 though) - -Bugfix - - midi: note on/off only once per pitch per track - (sending all note-on events introduces cool mi2mu feature) - - make clean removes deps too - - mi2mu notename/accidental/octave, and key fixed - -Internal - - auto create of out-dirs, config headers, using tag file .GENERATE - -Examples - - stanchen.ly debugged - -pl 39-2 - - configure script help and in topdir again, duh. - - auto configure upon virgin make - - configured makefile stuff in make/out/ - - -******** -pl 39-1 - - doze target (for 16 bit dos xcompiler: gcc-go32) -Internal - - make/User.make; C..FLAGS sorted out -Bugfix - - make clean... - -pl 39 - - new make structure, featuring: - * top-level/sub-level build - * auto custom-library dependencies/build - * top-level/sub-level dist - * minimal(? can even smaller) specific Makefiles - * which makes for simple lib/exe module split (make/Template.make) - * integrated flowerlib - * all stuff into subbirs (make/Stuff.make) - * all headers into <module>/include dirs (make/Include.make) - * all output into <module>/out (executables into bin/) - * more make features, like make config, make help - * small lily lib - * lilypond-x.x.x/.version for toplevel lily version - * lilypond-x.x.x/<module>/.version for <module> version (eg: flower) - * versioning using additional optional MY_PATCH_LEVEL - for easy make_patch - - - bin/cptogen - -Internal - - generic m2m header: m2m.hh - -Bugfix - - small fixes, make, dist, configure - -pl 38-5 - - all of the below, e.g. new filenames and new makefile - structure patches merged -****** -pl 38 - -Internal - - great filename renaming operation with - convention. - - printing methods for paper_def/lookup/symtab(s) - - untied all registers from complexwalker. Now registers are -intrinsically hierarchical. All walker communication is done via a -"top level" register. - -pl 37-3 - - m2m handles voices - - instrument, track_name, copyright/left stuff for m2m/ly - -Internal - - Midi_voice - -pl 37-1 - - text, key, tempo event in midi output/ly input - -Internal - - simple makefile structure, allows for multiple projects - -****** -pl 37 - - -Documentation - - language.pod as starting point for mudela devel. - - - Jan's patches: -Features - - m2m patchy --no-triplet option; - lilypond accepts m2m's real midi output (hand-add red tape) - - m2m output only valid durations, resync option wip - - m2m produces .ly output -Internal - - simpler and better naming for Duration* - - the great String renaming / index to base=0 change - - Track_column, Lily_stream - - Duration, Plet, Duration_convert taking load off duration calc. -Bugfix - - m2m duration calc - - - -****** -pl 36 - - Jan's patches: - - do MIDI rests cleanly. - - lily/m2m: time and tempo fixed for metric timing -Internal - - Midi_tempo - - m2m parses more midi stuff (all of bach-wtc); timing?? - - m2m recognises some commandline options -Examples - - fixed midi.ly - -******* -Feb 25 -pl 35 - - Register_group -Bugfix - - alignment of breakable items. - -******* -pl 34 - - better midi syntax. - - --midi,-M option. - - preliminary midi2mudela (/mudela2midi) converter: m2m (JCN) -Internal - - m2m sources: midi-*; (JCN) - - new Midi_walker, fixes several MIDI bugs. - - junked Midi_staff, Staff_column children, Midi_walker - - Midi_output - -pl 33-1 - - m2m parses midi -Internal - - Binary_source_file - - Source_file::error_str simplified -******* -pl33 -Examples - - Swedish notenames (MB) - -pl pre33-2 - -Bugfix - - midi pitch - -Features - - Jan's patches, see below -Bugfix - - some midi bugfixes. - -pl pre33-1 (JCN) - - - - midi output using pitches iso notename -Examples - - added midi output (some midi output files broken?) - - all melodic fixed (except for error.ly:-) - - midi.ly -Bugfix - - midiwalker line break - - empty/nonexistent include at top of ly - - midi #tracks - - midi pitch c0 - - midi poor man-s staff dynamics -Internal - - Midi_column, Midi_staff, Midi_walker - -pl pre33 (JCN) - - Jan's patches, see below - -Features - - simple plet notation (JCN) - - lyrics centred, but no fully suppored? (JCN) -Internal - - Midi_stream - - Mididef - - Midi_item, Midi_pitch, Midi_duration - - Midi_chunk, Midi_header, Midi_track - - preparations for midi output - - no exit upon context error (JCN) - - converted some "warnings" to errors; no output (JCN) -Bugfix: - - simple plet bugfix -Examples - - updated standchen, menuetto (JCN) - - new plet notation (JCN) - - plet.ly (parse and spacing tests) (JCN) - -******* -pl 32 -Features - - multiple meters, see rhythm.ly - - skip syntax/Skip_req - - score_wide_music: commands in staff now override commands in score. -Internal: - - command carnage - - Key_register - - Bar_register - - Meter_register - - meters now kept in baseclass Staff_walker - - Score_walker (to ease MIDI output) -Doc: - - Hungarian doco added to CodingStyle - -pl 32-1 - - music processing speedup - - website added to doco - - clef must *inside* music - - fixed spurious "beam too narrow" messages. -Internal: - - merge musical / non-musical staff_column - - musical/ non-musical requests - - Clef_register - - split up request.hh, Musical_req vs. Nonmusical_req -******* -pl 31 - -Examples - - Coriolan example (JN) - - standchen updated -Bugfix - - calcideal assertion bugfix -******* -Feb 12 13:55 -pl 30 - -Features - - better multivoice spacing - - move rest in multivoice staff - - errors in TeX output now warnings - - progress indicator - - music processing speedup. -Internal - - make spanner for staffsym; scrap Line_pstaff - - scrap simplestaff (Rhythmic_staff temporarily disabled) - - docxx 3.0 format comments - - split register source files - - hardcoded dimensions compile time - - Lookup::tex_hairpin -Bugfix - - non G-clef clefs - - script junking (2x) - - empty files - - beam::center (plet position!) - -pl 29 - - multiplatform Makefile (JN) - - context errors: bugfixes (JN) -******* -pl 28 - -Internal - - idealspacing slightly better for multivoice. -Doc - - Request_register -Bugfix - - Script.cc : float exception (MB) - - Request::Request(Request) copying of definition pointer (JN) - - cleaned dependencies for broken spanners - - stupid typo in Staff_elem::post_processing() - - init of hpos in PCol::PCol - - Word_wrap::solve() bug -******* -pl 27 - - preliminary WIN32 support (JN) -Features - - errors converted to warnings (JN) - - context errors (JN) - - As vs. as notename. - - WARNING: "melodic" stafftype will create the new Complex_staff! -Examples - - Lohman's Viola Quartet (JN) - - JS Bach Solo Cello suite II menuet (JN) - - -pl pre27 - -Features - - option --init - - last_duration_mode: default_duration is last duration entered - (\duration{\last}) - - syntax: grouping 2*4 3*8 - - preliminary multivoice support -Examples - - JS Bach's WTK example added. - -Internal: - - Text_reg and Script_reg -******* -pl 26 - - Documentation/lelie_logo.png - - 8-bit chars for input (see ltest.tex) (MB) - - quotes around string now optional -Bugfixes: - - unmatched ] (MB) -Internal: - - print/name methods of Staff_elem - - added Request_register - - Voice_group_registers, Voice_registers, *_register - - Complex_staff -******* - Jan 27 '97 -pl 25 - - other clefs added, keys typeset properly (MB) - -******* -pl 24: - - Lyrics (JCN) - - Commands in music-mode (an input feature) (there you are, Mats) - -******* -pl 23: - - TODO file inc'd - - cadenza mode. - - default extension, search path. - - error.pod,faq.pod - - Markers - - configure script - - inputfile name in output. -Internal changes: - - scrapped VPATH - - Make dependencies per .o - - Split Input_* parsing steps to enable marking -Bugfixes: - - unconnected columns - - -******* -pl 22: - - doco from mpp - - repeat signs - - | checks for bar in a voice (Barcheck_req) -Internal changes: - - naming (Hungarian notation, svec vs. Array) - - cleanup PScore, Score - - removed Staff_commands, plugging commands into Staff_column directly -Bugfixes: - - bug noteheadswap - - huge memleak fixed; unearthed lots of bugs - -******* -pl 21: - - scripts - - texts - - nplets (triplets!) -Internal changes: - - Move breaking stuff into a separate class Break_algorithm - - dependencies for Staff_elem's - -******* -Dec 23 -pl 20: - - updated doco to .pod - - include files from .ly -Internal changes: - - Rational for time measurement - - directionalspanner/textspanner - -******* -pl 19: - - grouping code: LilyPond can set advanced multibeams. -Internal changes: - - struct Moment - -******* - -pl 18: - - robust Staff_commands - -******* -pl 17: - - robust Input_commands - - merged Vertical_/Horizontal music - - PARTIALs with duration - - modularized lexer: multiple runs - -******* -pl 16 - - notenames configurable - -******* -pl 15 - - grouping code - - multibeams (simple) - -******* -pl 14 - - symtables from .ly - - Input_command - - Input_{score/staff} - -******* -Dec 2 -pl 13 - - Horizontal/Vertical music - - Input_commands diff --git a/PATCHES.txt b/PATCHES.txt index 5618b58820..76bceea841 100644 --- a/PATCHES.txt +++ b/PATCHES.txt @@ -1,198 +1,127 @@ - - -PATCHES(1) LilyPond documentation PATCHES(1) - - NAME - PATCHES - track and distribute your code changes -DESCRIPTION - This page documents how to distribute your changes to GNU - LilyPond +PATCHES - track and distribute your code changes -ABSTRACT - Distributing a change normally goes like this: +DESCRIPTION - o make your fix/add your code +This page documents how to distribute your changes to GNU lilypond +(or in fact any other StepMake package). - o Add changes to NEWS, and add yourself to - Documentation/AUTHORS.pod +ABSTRACT - o generate a patch, +Distributing a change normally goes like this: - o e-mail your patch to one of the mailing lists gnu- - music-discuss@gnu.org or bug-gnu-music@gnu.org +o make your fix/add your code +o Add changes to NEWS, and add yourself to Documentation/AUTHORS.yo +o generate a patch, +o e-mail your patch to one of the mailing lists + gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org GENERATING A PATCH - In VERSION, set TOPLEVEL_MY_PATCH_LEVEL: - VERSION: - ... - TOPLEVEL_MY_PATCH_LEVEL = jcn1 +In VERSION, set MY_PATCH_LEVEL: - In NEWS, enter a summary of changes: + VERSION: + ... + MY_PATCH_LEVEL=jcn1 - NEWS: - pl 0.1.48.jcn1 - - added PATCHES.pod +In NEWS, enter a summary of changes: - Then, from the top of Lily's source tree, type + NEWS: + pl 0.1.73.jcn1 + - added PATCHES.yo - make-patch +Then, from the top of Lily's source tree, type - which leaves your patch as ./patch-0.1.48.jcn1. + make diff - If you didn't configure Lily using --srcdir, you can do: +which leaves your patch as ./lilypond-0.1.73.jcn1.diff. - release +If you didn't configure Lily using --srcdir, you can do: - tar-ball: ../patches/patch-0.1.48.jcn1.gz - patch: ../patches/patch-0.1.48.jcn1.gz - updeet: ../test/updeet + make release + tar-ball: ../patches/lilypond-0.1.73.jcn1.gz + patch: ../patches/lilypond-0.1.73.jcn1.gz + updeet: ../test/updeet PREREQUISITES - For creating a patch you need - - o All items mentioned in INSTALL. You're not going to - send a patch that you haven't even built, right? - +For creating a patch you need +o All items mentioned in INSTALL. You're not going to send a patch + that you haven't even built, right? +o GNU diff +o Python (version 1.5 or newer). + You can of course make a patch by hand, which would go something like: -12/May/98 LilyPond 0.1.65 1 + make distclean + cd .. + diff -urN lilypond-0.1.73 lilypond-0.1.73.jcn1 > lilypond-0.1.73.jcn1 +but there are handy python scripts available. If you're doing development, +you'll need Python for other LilyPond scripts anyway. +o The Lily directory structure, which looks like: + doos/ # gnu/windows32 build and binary releases + harmonia -> harmonia-x.y.z + harmonia-x.y.z/ + lilypond -> lilypond-x.y.z # symlink to development directory + lilypond-x.y.z/ # current development + patches/ # patches between different releases + RedHat/BUILD # RedHat build and binary releases + RedHat/RPMS + RedHat/SPECS + releases/ # .tar.gz releases + test/ # tarballs and diffs from current version + yodl -> yodl-1.30.17 + yodl-1.30.17 +with prefix $HOME/usr/src +and (for building rpms only) in $HOME/.rpmrc: -PATCHES(1) LilyPond documentation PATCHES(1) + topdir: /home/fred/usr/src/RedHat +APPLYING PATCHES - o GNU Diff +If you're following LilyPond development regularly, you probably want to +download just the patch for each subsequent release. +After downloading the patch (into the patches directory, of course), simply +apply it: - o Python (version 1.4 or newer). You can of course - make a patch by hand, which would go something like: + gzip -dc ../patches/lilypond-0.1.74.diff.gz | patch -p1 -E - make distclean - cd .. - diff -urN lilypond-0.1.48 lilypond-0.1.48.jcn1 > patch-0.1.48.jcn1 +and don't forget to make automatically generated files: - but there are handy python scripts available. If - you're doing development, you'll need Python for - other LilyPond scripts anyway. - - o The Lily directory structure, which looks like: - - lilypond-0.1.48/ - patches/ - releases/ - test/ - - - If you're following LilyPond development regularly, you - probably want to download just the patch for each - subsequent release. After downloading the patch (into the - patches directory, of course), simply apply it: - - gzip -dc ../patches/patch-0.1.49.gz | patch -p1 -E - - and don't forget to make automatically generated files: - - autoconf 1) - configure + autoconf footnote(patches don't include automatically generated files, + i.e. file(configure) and files generated by file(configure).) + configure SYNCHRONISE - If you're not very quick with sending your patch, there's - a good chance that an new release of LilyPond comes - available. In such a case (and sometimes for other unkown - reasons :-), the maintainer will probably ask you to make - a new patch against the latest release. Your best bet is - to download the latest release, and apply your patch - against this new source tree: - - cd lilypond-0.1.49 - gzip -dc ../patches/patch-0.1.48.jcn1.gz | patch -p1 -E - autoconf 1) - configure - - Then, make a patch as shown above. - - 1) patches don't include automatically generated files, - i.e. configure - and files generated by configure. +If you're not very quick with sending your patch, there's a good chance +that an new release of LilyPond comes available. In such a case (and +sometimes for other unkown reasons :-), the maintainer will probably ask +you to make a new patch against the latest release. +Your best bet is to download the latest release, and apply your patch +against this new source tree: + cd lilypond-0.1.74 + gzip -dc ../patches/lilypond-0.1.73.jcn1.diff.gz | patch -p1 -E + autoconf + configure +Then, make a patch as shown above. -12/May/98 LilyPond 0.1.65 2 - - - - - -PATCHES(1) LilyPond documentation PATCHES(1) +SEE ALSO +stepmake/INSTALL.txt MAINTAINER - Han-Wen Nienhuys <hanwen@cs.uu.nl> - - Just keep on sending those patches! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -12/May/98 LilyPond 0.1.65 3 +Han-Wen Nienhuys <hanwen@cs.uu.nl> +Just keep on sending those patches! diff --git a/README b/README deleted file mode 100644 index a172ebc034..0000000000 --- a/README +++ /dev/null @@ -1,89 +0,0 @@ -This is the toplevel README to LilyPond -*-Text-*- - - -LilyPond is the GNU Project music typesetter. The program generates -visual or auditive output from a music definition file: it can typeset -formatted sheet music to a TeX file and play (mechanical) performances -to a MIDI file. Features include multiple staffs, meters, clefs, -keys, lyrics, versatile input-language, cadenzas, beams, slurs, -triplets. - - -1. VERSIONING - -if you have downloaded a - - *.pre* - -version, then this is version is *not* meant for producing nice output -(but to keep your patchsets up to date). It might not even compile. - - -2. REQUIREMENTS - -For the compilation and running of LilyPond you need some additional -packages. Please refer to the installation instructions. - -NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file), then -you don't have to compile LilyPond. - - -3. INSTALLATION - -For your convenience, a formatted copy of the INSTALL instructions are -in the toplevel directory, as INSTALL.text - -The process is fairly straightforward, but chances are that you have -to specify directories for TeX to configure (--enable-tex-dir, ---enable-mf-dir) - -4. DOCUMENTATION - -The real documentation is the directory Documentation/ - -To generate the pretty-printed docs, you have to run configure first, -and then do this: - - make doc - -You can also simply read the .pod sources. They are ASCII text. -.pod is the documentation format of perl (see perlpod(1)) - - -5. COMMENTS - -LilyPond is a long way from finished and polished. We do appreciate -criticism, comments, bugreports, patches, etc. - - Please send your e-mail to one of the MAILING LISTS - -(and not to us personally). See Documentation/links.pod for more info - - -6. DOZE - -If you have received this file as part of a DOS/Window32 distribution -(lilypond-*.zip), then it is advisable to also download the source -package, since it might contain more documentation - - ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe) - -The website also contains the complete documentation - - http://www.cs.uu.nl/~hanwen/lilypond/index.html - -If you decide to build LilyPond from source, please read the INSTALL -document first, especially the Windows NT/95 section. - - -7. CAVEATS - -* Please read the file BUGS for some ugly bugs. This especially applies -Linux-Intel unix users. - -* If you have installed a previous version, be sure to remove old font -files, eg - - rm `find /var/lib/texmf/fonts -name 'feta*'` - -a script to do this for you is in bin/cleanfonts.sh diff --git a/README.txt b/README.txt new file mode 100644 index 0000000000..2008fc4f8c --- /dev/null +++ b/README.txt @@ -0,0 +1,88 @@ + +This is the toplevel README to LilyPond + + LilyPond is the GNU Project music typesetter. This program can print +beautiful sheet music from a music definition file. It can also play +mechanical performances to a MIDI file. Features include multiple +staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas, +beams, slurs, triplets, formatting scores, part extraction. It includes +a nice font of musical symbols. + +1: VERSIONING + +if you have downloaded a + + *.pre* + +version, then this is version is *not* meant for producing nice output +(but to keep your patchsets up to date). It might not even compile. + +2: REQUIREMENTS + +For the compilation and running of LilyPond you need some additional +packages. Please refer to the installation instructions. + +NOTE: If you downloaded a binary (.rpm or a W95/NT .zip file), then +you don't have to compile LilyPond. + +3: INSTALLATION + +For your convenience, a formatted copy of the INSTALL instructions are +in the toplevel directory, as INSTALL.txt + +The process is fairly straightforward, but chances are that you have +to specify directories for TeX to configure (--enable-tex-dir, +--enable-mf-dir) + +4: DOCUMENTATION + +The real documentation is the directory Documentation/ + +To generate the pretty-printed docs, you have to run configure first, +and then do this: + + make doc + +You can also simply read the .yo sources. They are ASCII text. +The complete documentation is accessible in formatted form at the +website + + http://www.cs.uu.nl/people/hanwen/lilypond/index.html + +5: COMMENTS + +LilyPond is a long way from finished and polished. We do appreciate +criticism, comments, bugreports, patches, etc. + + Please send your e-mail to one of the MAILING LISTS + +and not to us personally. See Documentation/links.yo for more info. + +6: DOZE + +If you have received this file as part of a DOS/Window32 distribution +(lilypond-*.zip), then it is advisable to also download the source +package, since it might contain more documentation + + ftp://pcnov095.win.tue.nl/pub/lilypond/ (Europe) + +If you decide to build LilyPond from source, please read the INSTALL.txt +document first, especially the Windows NT/95 section. + +7: CAVEATS + +* Please read the file BUGS for some ugly bugs. This especially applies +Linux-Intel unix users. + +* If you have installed a previous version, be sure to remove old font +files, eg + + rm `find /var/lib/texmf/fonts -name 'feta*'` + +a script to do this for you is in bin/cleanfonts.sh + +8: CDROM DISTRIBUTIONS + +If you have received LilyPond on a cdrom, chances are that development +has moved a some patchlevels up. If possible, please check the latest +version of LilyPond before reporting bugs. diff --git a/TODO b/TODO index 7f9b738c65..893aa58eac 100644 --- a/TODO +++ b/TODO @@ -1,21 +1,114 @@ Features you cannot find in the doco as working, should be mentioned here. + This is an assorted collection of stuff that will be done, might be done, or is an idea that I want to think about Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr/urg + * fix plain tex footer line. -0.2: - * junk My_lily_parser::abbrev_beam_type_i_ + * portable libs for flowerlib/lilylib - * w32 blurb + * install TeX stuff into tex/generic directory. - * make sure all ex's have a mudela-version - * notes almost touch barline: whitespace at the begin of the bar - should be at fixed at at least (about) one interline. - hack at spring-spacer.cc:662 doesn't work anymore + * make GNU style webpages. + + * There seems to be an install error in lilypond-1.0.0. Most of the + files in the "init" directory don't get installed in the + /usr/local/share/lilypond directory. The files installed are of + the form feta*.ly. In particular init.ly doesn't get installed. + I installed the files by hand and then the system seems to work. + + * I things it's more than appropriate for an GNU project to ship Info + files (and manpages) with the source package. The "Standard" tells to + do so (ftp://ftp.gnu.org/pub/gnu/standards/standards.text): + + + * a `make check' target (without installing stuff!) + + * midi_instrument -> midiInstrument + + * horizontal centering of dynamics + + * \font\fontA=feta20.afm (.afm?) + + * gzip RH manpage + + * stable make/config stuff + + * stemup/stemdown; see test/updown.fly + - check examples; add \type Staff hither and thether + + * $DEPENDENCIES_OUTPUT support + + * use a fake-yodl.sh to mimick yodl when yodl is not installed + + * fix BUGs + + * fix weird behaviour when .AFMs not found. + + * Xdvi zooming ?! + gs: Error: /undefined in draw_beam + gs: Operand stack: + + * run texhash after installing .tex + + * fix vertical alignment and stafflines + + *GrandStaff needs more work -- I want a single word `harpsichord' to the + left of the grandstaff, not one on each stave. + (Organ staff -- with separate pedal -- but common properties may be + something to think about. Of course for organ you want to be able + to give stop indications on the way through, so the \property + Voice.Instrument would be a stop, and \property + GrandStaff.instrument would be PipeOrgan...) + + + * make Tie_req a "command" { <c g> ~ <c g> } + + * bib ep1988 + + * mix engraver hacking with music ? + + * revise the Score_priority_align_engraver concept. It sucks. + + * ly2xdvi + + * make new VoiceOne, VoiceTwo, VoiceThree contexts with +ydirection and hshift preset + + * StepMake install + - /usr/bin/make-patch? + + * *.yo: fix pod manpage layout legacy + + * text-items clash with stems/beams + + * --include, -I option for ly2dvi (pass on to lily) + + * fix placement of beam-less abbrev + + * \meter 3/4; + <{\voiceone cis4. cis8 cis4 | cis4 cis cis | r1 } + {\voicetwo cis,4 r r | r2. | r1 }> | + } + + * try to use template<Type> iso MACRO(Type) + + - NEWS: ... Musical_pitch (analogous to Duration and Rhythmic_req) + think about, analogous to pitch: + * { a4 a16 } c <-- duration of c? + * <a4 b8> c <-- duration of c? + + * \tempo 4. = 90; + + * fix audio-items (don't use (input) requests, but copy data) + + * junk My_lily_parser::abbrev_beam_type_i_ + + * make sure all ex's have a mudela-version * do rest-collisions for Multi_measure_rests as well. @@ -26,10 +119,6 @@ grep for TODO and ugh/ugr/urg * deps for ly2dvi - * fix .txt rules / make dist from freshly configured tar-ball - - * document use of ly2dvi more prominently - * clean up abbrev/plet/beam/abbrevbeam/duration mess in parser. * minimum length second part broken tie @@ -43,35 +132,41 @@ grep for TODO and ugh/ugr/urg * fix variable define/lookup parser global<->paper - * fix position of bar number - - * fix position of brace in conjunction with bracket - * fix title/instrument placements; see input/test/title.ly * <\voiceone c4. \voicetwo c4> * add full cello suites to web site (kom op, Maarten!) + * Rethink Time_description + * \cadenza , \meter, \grouping should all be \properties + * rename - plet -> tuplet - - grav -> engraver - measure -> bar - abbreviation-beam -> (measured/unmeasured) tremolo * libtoolize flowerlib + * shared lib * robustify Beam (in case of no stems, 32nd notes) + * decentralised spring factory + + * move paper vars into engraver properties + * check for groff / troff/ nroff et + * more intelligent file searching + - use kpsepath + - make LilyPond fully relocatable + * use kpsepath to find all TeX dirs - configure.in - clean-fonts.sh * nicen examples: - - remove all \multi - break-up heavily-nested score blocks * disable spaces in TeX stuff @@ -80,16 +175,12 @@ grep for TODO and ugh/ugr/urg * dots & rest collisions. - * add a screenshot to the website. :) - * documentation - introduction? - info? - LaTeX? - more manpages? - * naming Mozarella, Madeira, Muella? - * versioning for Feta * the warning about the negative slur/tie length appears twice @@ -98,32 +189,16 @@ grep for TODO and ugh/ugr/urg * The `3' in the meter key is a one or two pixels too thin (at 600dpi) in the middle: - * the tenuto script is too long and too thin - * the bracket is ugly (wings are too parabolic, should be more circular) - * better hshift (dots, distance, head dependent) - - * stem len adjustable -STUFF - * convert-mudela: - - automatically add a \version if not present. - - better parsing - - make smarter - - fix convert-mudela -e *.ly ; - - convert-mudela -e empty.ly - - redo in python. + * better hshift (dots, distance, head dependent) * clefs (AG): The "8" should appear closer to the actual clef, touching it. * give Items/Spanners access to unbroken originals - * generalised scopes for Parser/identifiers. - - * speed up PS code. - - * scoping for properties + * scoping for properties? { c4 \multi 2 < { \stemup .. } { \stemdown .. } > @@ -132,41 +207,52 @@ STUFF this modifies \stem for the c2 - * emacs mudela-mode - - should handle block comments too. - - handle lexer modes (\header, \melodic, \lyric) etc. - - indentation - - notenames? - - fontlock: \melodic \melodic - + * put errorlevel in Input class - * use properties for: - - Text_style - - default_octave - - plet? - - default_duration? - - default abbreviation - - Staff_sym size - - default tempo. - - font size - - bartypes (get rid of derived Span_bar_engravers) - - cadenza mode? - - MIDI instrument - - staff title + * junk nesting slurs - * page handling: - - PS output - - optimal pagebreaking. + * integrate midi-elts from mi2mu and lily? - * put errorlevel in Input class + * cautionary accidental - * AFM for font input? + * score-bar-scripts + FMR: Free memory read: + * This is occurring while in: + Bar_column::do_substitute_dependency(Score_element*,Score_element*) [bar + -column.cc:29] + Score_element::unlink() [score-elem.cc:383] + Paper_score::set_breaking(const Array<Column_x_positions>&) [p-score.cc: + 150] + Paper_score::calc_breaking() [p-score.cc:189] + Paper_score::process() [p-score.cc:203] + Score::run_translator(Music_output_def*) [score.cc:117] + * Reading 4 bytes from 0x65d3a0 in the heap. + * Address 0x65d3a0 is 160 bytes into a freed block at 0x65d300 of 208 bytes. + * This block was allocated from: + malloc [rtlib.o] + __builtin_new [libgcc.a] + Span_score_bar::clone()const [span-score-bar.hh:20] + Item::copy_breakable_items() [item.cc:69] + Item::do_breakable_col_processing() [item.cc:89] + Score_element::calcalute_dependencies(int,int,void(Score_element::*)()*) + [score-elem.cc:171] + * There have been 22 frees since this block was freed from: + free [rtlib.o] + __builtin_delete [libgcc.a] + Span_score_bar::~Span_score_bar() [span-score-bar.hh:18] + Paper_score::set_breaking(const Array<Column_x_positions>&) [p-score.cc: + 156] + Paper_score::calc_breaking() [p-score.cc:189] + Paper_score::process() [p-score.cc:203] + Postprocessing elements... + TeX output to score-bar-scripts.tex... 3RD PARTY BUGS: - * tried egcs 1.0.2: failed on lily/stem.cc -> flower/include/interval.hh - should narrow down and send bug report + * redhat (v?) graphical install bomb-out? + + * egcs-1.03 ice: stem.cc:327; should localize bug (mine's still 10K) * gcc 2.8.1: see ice and RESIZE_ICE @@ -181,9 +267,65 @@ STUFF without a trace of failure (create .rej file, print error or dump core) and just ignore any further diffs. + * glibc 2.0: + + f = fopen ("/dev/null", "r") + assert (feof (f)) + +3RD PARTY PROJECTS: + + * GNU indent: handle C++ + + * GNU make: move hardcoded builtin rules to runtime ? + + * GNU patch + - rewrite ? -> check out GNU patch 2.5 + - 'double-fix' mode: ignore identical fix, rather than suggest + to revert patch direction when (more or less? exactly) the same + thing is fixed + PROJECTS - * Unicode support? + * Scripts: + - fix position of bar number + - stack scripts in chords: + % fingering: footing: + < a-4 c-2 g-1 > < c-\ltoe e-\lheel > + - script-spacing + - slur parts as a script + - stack parameterised scripts for fingering and footing: + + * convert-mudela: + - automatically add a \version if not present. + - better parsing + - make smarter + - convert-mudela -e empty.ly + + * emacs mudela-mode + - should handle block comments too. + - handle lexer modes (\header, \melodic, \lyric) etc. + - indentation + - notenames? + - fontlock: \melodic \melodic + + + * use properties for: + - Text_style + - default_octave + - plet? + - Staff_sym size + - default tempo. + - font size + - bartypes (get rid of derived Span_bar_engravers) + - cadenza mode? + - MIDI instrument + - staff title + + * page handling: + - PS output + - optimal pagebreaking. + + * Unicode support? -> man 7 unicode - 16 bit Strings - -u switch - detect of 16/8 bit files @@ -198,10 +340,10 @@ PROJECTS * \header - output header info to MIDI too. - * Add mudela-output to Rosegarden. + * Add mudela-output to Rosegarden. (contact Derek Wyatt) * a musical dictionary. See Documentation/vocabulary-*, other -languages: + languages: - explanation - italian - german @@ -217,8 +359,6 @@ languages: - MIDI output? - typesetting - * integrate midi-elts from mi2mu and lily? - * Debug logs: - derive lily_stream, Dstream, texstream from ostream? - indentable stream as baseclass for TeX stream, lily stream, Dstream. @@ -262,7 +402,11 @@ languages: - text - slur start/end - * cautionary accidental + * PS + - speed up PS code. + - PS lines to .eps files + - write custom prolog + * Output an output format independent (ofi) typeset file; and make ofi2 TeX, MusiXTex, Display PostScript, PostScript, @@ -272,13 +416,15 @@ languages: - Common Music Notation - PostScript output (esp. Beams, Slurs, etc) - Move all Score_elems, into libmutype.a + - SGML + * Documentation - Doc (C) stuff of sheet music - a better format? SGML? TeX? Info? - a tutorial - * TeX spanners , use texbeam.cc as an example (smallish) + * more spanners (smallish) - Glissando - trill @@ -289,9 +435,10 @@ languages: - use plet grouping - separate visual from rhythmic info even more - beams over bars + - endbeam req should be *after* the duration, so you can do + < { [c4] } + { c8. c16 } > - * Redo fonts - - adapt for multiple font sizes. * lines: - Ledger lines, should be separate item: Ledger_lines, Ledger_lines @@ -304,11 +451,7 @@ languages: * Keys: - merge key{item} & localkey{item}? - - do conventional keys (C G A, F B E, a e fis, d as des, etc ), - besides lists of flats/sharps, possibly via declaration - - key transposition. - - key undo: \key bes; .. . \key; should print natural - - special key: \key bes 'b bis'; + - Major/Minor - spacing, national styles? * Support for TAB @@ -320,11 +463,8 @@ languages: * breaking: - caching breakpoints - saving them - - penalties - specify number of lines - * Rhythmic staff. - * markers INPUTLANGUAGE @@ -348,22 +488,26 @@ INPUTLANGUAGE * relative mode for pitch entering - * bracket (bracketplets) + * bracket: volta 1,2 * configure pitch_byte * rest name configurable - * Raw request syntax - SMALLISH PROJECTS + * limit memory usage; the full coriolan takes up too much resources. + + * fix confusing naming in Engraver vs Engraver_group_engraver (context) + * progress when creating MIDI elts. * A range for context errors (eg. mark both { and }. ) * lyric in staff (sharpsharp in staff, text below) + * half sharps/flats + * write Dynamic_line (to group dynamics horizontally) * use Real for all y positions. @@ -374,8 +518,6 @@ SMALLISH PROJECTS * adaptive accidental spacing. * handle EOF graciously in error messages. -oo - * caching Item/spanner dimensions. * centered whole rest @@ -395,10 +537,6 @@ oo * stafftypes: voice names/ instrument names. - * TeX stuff: - - Decent TeX titledefs (\tempo, \metron, etc. ) - - decent TeX page layout - * lily \tempo * C meter iso 4/4, idem for alla breve, etc. @@ -407,13 +545,6 @@ oo * Brackets - * Scripts: - - stack scripts in chords: - % fingering: footing: - < a-4 c-2 g-1 > < c-\ltoe e-\lheel > - - script-spacing - - slur parts as a script - - stack parameterised scripts for fingering and footing: % toe to bheel four to five % ^_u 4_5 @@ -435,6 +566,7 @@ oo IDEAS + * Output data structures of Mudela in XML/SGML. * create libmudela, or liblily_frontend @@ -444,9 +576,7 @@ IDEAS * use an embedded language: Python, Scheme for: - Score_elems - - Engraver - Translators - - Complex mudela? * y -dims in internote? Staff-space? X-dimensions? @@ -454,8 +584,6 @@ IDEAS * caching breakpoints - * #c <-> cis - * breath marks * used fixedpoint arithmetic for min. energy. @@ -466,17 +594,9 @@ IDEAS - design meta-language like TeX and Metafont - programming/macros input - * Global type registration. - - My_class * p = create_object( My_class ) - Type t = get_type ( *p ); - if ( t <= get_type( q )) - .. - * versioning stuff (cvt mudela, mudela, etc.) - - * dots into separate item. + * padded vertical alignment (rods for vertical placement) * use String iso Text_def for lyrics. @@ -484,6 +604,4 @@ IDEAS * lyrics in chords still fuck up. - * pushgroup/popgroup - * Use hooks/dependency graphs for properties diff --git a/VERSION b/VERSION index ed7ea2f305..522667c82e 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,7 @@ -MAJOR_VERSION=0 -MINOR_VERSION=1 -PATCH_LEVEL=65 +PACKAGE_NAME=LilyPond +MAJOR_VERSION=1 +MINOR_VERSION=0 +PATCH_LEVEL=1 MY_PATCH_LEVEL= # use the above to send patches, always empty for released version: diff --git a/aclocal.m4 b/aclocal.m4 index d1ec16c75e..0f54b68df8 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,30 +1,431 @@ -dnl aclocal.m4 generated automatically by aclocal 1.3 +dnl aclocal.m4 -*-shell-script-*- +dnl StepMake subroutines for configure.in + +AC_DEFUN(AC_STEPMAKE_COMPILE, [ + # -O is necessary to get inlining + OPTIMIZE="-O" + checking_b=yes + optimise_b=tja + profile_b=no + debug_b=yes + + AC_ARG_ENABLE(checking, + [ enable-checking set runtime checks (assert calls). Default: on], + [checking_b=$enableval] ) + + # actually, the default is: tja='-O' to get inlining... + # off='' + AC_ARG_ENABLE(optimise, + [ enable-optimise use maximal speed optimisations. Default: off], + [optimise_b=$enableval]) + + AC_ARG_ENABLE(profiling, + [ enable-profiling compile with gprof support. Default: off], + [profile_b=$enableval]) + + AC_ARG_ENABLE(debugging, + [ enable-debugging set debug info. Default: on], + [debug_b=$enableval]) + + AC_ARG_ENABLE(mingw-prefix, + [ enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)], + [MINGWPREFIX=$enableval], + [MINGWPREFIX=no]) + + if test "$printing_b" = no; then + # ugh + AC_DEFINE(NPRINT) + DEFINES="$DEFINES -DNPRINT" + fi + + if test "$checking_b" = no; then + # ugh + AC_DEFINE(NDEBUG) + DEFINES="$DEFINES -DNDEBUG" + fi + + if test "$optimise_b" = yes; then + DEFINES="$DEFINES -finline-functions" + OPTIMIZE="-O2" + fi + + if test "$optimise_b" = no; then + OPTIMIZE="" + fi + + if test $profile_b = yes; then + EXTRA_LIBES="-pg" + DEFINES="$DEFINES -pg" + fi + + if test $debug_b = yes; then + DEFINES="$DEFINES -g" + fi + + # however, C++ support in mingw32 v 0.1.4 is still flaky + if test x$MINGWPREFIX != xno; then + ICFLAGS="-I$MINGWPREFIX/include" + ILDFLAGS="-$MINGWPREFIX/lib" + fi -dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. -dnl This Makefile.in is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. + AC_PROG_CC + LD='$(CC)' + AC_SUBST(LD) + + CPPFLAGS=${CPPFLAGS:-""} + AC_SUBST(CPPFLAGS) + AC_SUBST(LDFLAGS) + AC_SUBST(ICFLAGS) + AC_SUBST(ILDFLAGS) + AC_SUBST(DEFINES) + AC_SUBST(EXTRA_LIBES) +]) + +AC_DEFUN(AC_STEPMAKE_CXX, [ + AC_LANG_CPLUSPLUS + AC_PROG_CXX + + AC_CHECK_HEADER(FlexLexer.h, true, + AC_STEPMAKE_WARN(can"\'"t find flex header. Please install Flex headers correctly)) + + CXXFLAGS="$DEFINES $OPTIMIZE" + LDFLAGS=$EXTRA_LIBES + + AC_SUBST(CXXFLAGS) + AC_SUBST(CXX) + LD='$(CXX)' + AC_SUBST(LD) +]) + +AC_DEFUN(AC_STEPMAKE_CXXTEMPLATE, [ + AC_CACHE_CHECK([whether explicit instantiation is needed], + lily_cv_need_explicit_instantiation, + AC_TRY_LINK([ + template <class T> struct foo { static int baz; }; + template <class T> int foo<T>::baz = 1; + ], [ return foo<int>::baz; ], + lily_cv_need_explicit_instantiation=no, + lily_cv_need_explicit_instantiation=yes)) + if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then + AC_DEFINE(NEED_EXPLICIT_INSTANTIATION) + fi +]) -dnl This program is distributed in the hope that it will be useful, -dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without -dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A -dnl PARTICULAR PURPOSE. +AC_DEFUN(AC_STEPMAKE_DATADIR, [ + if test "$datadir" = "\${prefix}/share"; then + datadir='${prefix}/share/'$package + fi + DIR_DATADIR=${datadir} + presome=${prefix} + if test "$prefix" = "NONE"; then + presome=${ac_default_prefix} + fi + DIR_DATADIR=`echo ${DIR_DATADIR} | sed "s!\\\${prefix}!$presome!"` + AC_SUBST(datadir) + AC_SUBST(DIR_DATADIR) + AC_DEFINE_UNQUOTED(DIR_DATADIR, "${DIR_DATADIR}") +]) + +AC_DEFUN(AC_STEPMAKE_END, [ + AC_OUTPUT($CONFIGFILE.make:config.make.in) + rm -f Makefile + cp make/Toplevel.make.in ./Makefile + chmod 444 Makefile +]) + +AC_DEFUN(AC_STEPMAKE_GXX, [ + # ugh autoconf + changequote(<<, >>)dnl + if $CXX --version | grep '2\.[78]' > /dev/null || + $CXX --version | grep 'egcs' > /dev/null + changequote([, ])dnl + then + true + else + AC_STEPMAKE_WARN(can't find g++ 2.7, 2.8 or egcs) + fi +]) + +AC_DEFUN(AC_STEPMAKE_INIT, [ + + . $srcdir/VERSION + FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL + if test x$MY_PATCH_LEVEL != x; then + FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL + fi + + # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:] + changequote(<<, >>)dnl + PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'` + package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'` + changequote([, ])dnl + + if test "x$PACKAGE" = "xSTEPMAKE"; then + echo Stepmake package! + (cd stepmake; rm -f stepmake; ln -s ../stepmake .) + (cd stepmake; rm -f bin; ln -s ../bin .) + AC_CONFIG_AUX_DIR(bin) + else + echo Package: $PACKAGE + AC_CONFIG_AUX_DIR(stepmake/bin) + fi + + AC_SUBST(package) + AC_SUBST(PACKAGE) + AC_SUBST(PACKAGE_NAME) + AC_DEFINE_UNQUOTED(PACKAGE, "${PACKAGE_NAME}") + AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, "${FULL_VERSION}") + + package_depth=`dirname $cache_file` + AC_SUBST(package_depth) + + AUTOGENERATE="This file was automatically generated by configure" + AC_SUBST(AUTOGENERATE) + absolute_builddir="`pwd`" + AC_SUBST(absolute_builddir) + + # No versioning on directory names of sub-packages + stepmake=stepmake + AC_SUBST(stepmake) + + CONFIGSUFFIX= + AC_ARG_ENABLE(config, + [ enable-config=FILE put configure settings in config-FILE.make], + [CONFIGSUFFIX=$enableval]) + + if test "$CONFIGSUFFIX" != "" ; then + CONFIGFILE=config-$CONFIGSUFFIX + else + CONFIGFILE=config + fi + AC_SUBST(CONFIGSUFFIX) + + AC_CANONICAL_HOST + AC_CHECK_PROGS(MAKE, make, error) + AC_CHECK_PROGS(FIND, find, error) + + +dnl system supplied INSTALL is unsafe; use our own install. +dnl AC_PROG_INSTALL +dnl if test "$INSTALL" = "bin/install-sh"; then +dnl export INSTALL="\$\(depth\)/bin/install-sh" +dnl fi + + AC_CHECK_PROGS(TAR, tar, error) + AC_CHECK_PROGS(BASH, bash, /bin/sh) + + AC_PATH_PROG(PYTHON, python, -echo no python) + AC_SUBST(PYTHON) + + + AC_CHECK_SEARCH_RESULT($MAKE, GNU make, You should install GNU make) + if test $MAKE != "error" ; then + $MAKE -v| grep GNU > /dev/null + if test "$?" = 1 + then + AC_STEPMAKE_WARN(Please install *GNU* make) + fi + fi + + AC_CHECK_SEARCH_RESULT($PYTHON, python, You should install Python) + + if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then + LN=cp # hard link does not work under cygnus-nt (yet?) + ZIP="zip -r -9" # + DOTEXE=.exe + else + LN=ln + ZIP="zip -r -9" + fi + AC_SUBST(DOTEXE) + AC_SUBST(ZIP) + AC_SUBST(LN) + + AC_STEPMAKE_DATADIR +]) + +AC_DEFUN(AC_STEPMAKE_LEXYACC, [ + # ugh, automake: we want (and check for) bison + AC_PROG_YACC + # ugh, automake: we want (and check for) flex + # AC_PROG_LEX + # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack... + + # AC_DECL_YYTEXT + # ugh, ugh + ac_cv_prog_lex_root=lex.yy + + AC_CHECK_PROGS(BISON, bison, error) + AC_CHECK_PROGS(FLEX, flex, error) + AC_CHECK_SEARCH_RESULT($BISON, bison, Please install Bison, 1.25 or better) + AC_CHECK_SEARCH_RESULT($FLEX, flex, Please install Flex, 2.5 or better) + + if test $BISON != "error"; then + bison_version=`$BISON --version| sed 's/^.*version 1.//g' ` + if test $bison_version -lt 25; then + AC_STEPMAKE_WARN(Your bison is a bit old (1.$bison_version). You might have to install 1.25) + fi + fi + + AC_SUBST(BISON) + AC_SUBST(FLEX) +]) + +AC_DEFUN(AC_STEPMAKE_LIB, [ + AC_CHECK_PROGS(AR, ar, error) + AC_PROG_RANLIB + + AC_SUBST(AR) + AC_SUBST(RANLIB) +]) -AC_DEFUN(AC_JUNK_ARGS, [ +AC_DEFUN(AC_STEPMAKE_LIBTOOL, [ + # libtool.info ... + # **Never** try to set library version numbers so that they correspond + # to the release number of your package. This is an abuse that only + # fosters misunderstanding of the purpose of library versions. + + REVISION=$PATCH_LEVEL + # CURRENT=$MINOR_VERSION + CURRENT=`expr $MINOR_VERSION + 1` + # AGE=$(expr $MAJOR_VERSION + 1) + AGE=$MAJOR_VERSION + AC_SUBST(CURRENT) + AC_SUBST(REVISION) + AC_SUBST(AGE) ]) -AC_DEFUN(AC_LILY_WARN, [ +AC_DEFUN(AC_STEPMAKE_LOCALE, [ + lang=English + ALL_LINGUAS="en nl" + + # with/enable ?? + AC_ARG_WITH(localedir, + [ with-localedir=LOCALE use LOCALE as locale dir. Default: PREFIX/share/locale ], + localedir=$with_localedir, + localedir='${prefix}/share/locale') + + AC_ARG_WITH(lang, + [ with-lang=LANG use LANG as language to emit messages], + language=$with_lang, + language=English) + + AC_MSG_CHECKING(language) + case "$language" in + En* | en* | Am* | am* | US* | us*) + lang=English;; + NL | nl | Du* | du* | Ned* | ned*) + lang=Dutch;; + "") + lang=English;; + *) + lang=unknown;; + esac + AC_MSG_RESULT($lang) + + if test "$lang" = "unknown" ; then + AC_STEPMAKE_WARN($language not supported; available are: $ALL_LINGUAS) + fi + +]) + +AC_DEFUN(AC_STEPMAKE_GETTEXT, [ + DIR_LOCALEDIR=${localedir} + presome=${prefix} + if test "$prefix" = "NONE"; then + presome=${ac_default_prefix} + fi + DIR_LOCALEDIR=`echo ${DIR_LOCALEDIR} | sed "s!\\\${prefix}!$presome!"` + AC_SUBST(localedir) + AC_SUBST(DIR_LOCALEDIR) + AC_DEFINE_UNQUOTED(DIR_LOCALEDIR, "${DIR_LOCALEDIR}") + + AC_CHECK_LIB(intl, gettext) + AC_CHECK_FUNCS(gettext) +]) + +AC_DEFUN(AC_STEPMAKE_MAN, [ + AC_CHECK_PROGS(TROFF, troff, -echo no troff) +]) + +AC_DEFUN(AC_STEPMAKE_MSGFMT, [ + AC_CHECK_PROGS(MSGFMT, msgfmt, -echo no msgfmt) + AC_MSG_CHECKING(whether msgfmt accepts -o) + msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`" + if test "$msgfmt_output" = ""; then + AC_MSG_RESULT(yes) + else + # urg + MSGFMT="touch $@; echo " + AC_MSG_RESULT(no) + AC_STEPMAKE_WARN(please install msgfmt from GNU gettext) + fi +]) + +AC_DEFUN(AC_STEPMAKE_TEXMF, [ + AC_ARG_ENABLE(tex-prefix, + [ enable-tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)], + [TEXPREFIX=$enableval], + [TEXPREFIX=auto] ) + + AC_ARG_ENABLE(tex-dir, + [ enable-tex-dir=DIR set the directory to put $PACKAGE_NAME TeX files in. ], + [TEXDIR=$enableval], + [TEXDIR=auto] ) + + AC_ARG_ENABLE(mf-dir, + [ enable-mf-dir=DIR set the directory to put $PACKAGE_NAME MetaFont files in. ], + [MFDIR=$enableval], + [MFDIR=auto]) + + if test "x$TEXPREFIX" = xauto ; then + AC_TEX_PREFIX(TEXPREFIX) + else + find_texprefix=$TEXPREFIX + fi + + if test "x$MFDIR" = xauto; then + AC_MF_SUBDIR(MFDIR) + fi + + if test "x$TEXDIR" = xauto ; then + AC_TEX_SUBDIR(TEXDIR) + fi + + AC_SUBST(TEXPREFIX) + AC_SUBST(TEXDIR) + AC_SUBST(MFDIR) +]) + +AC_DEFUN(AC_STEPMAKE_WARN, [ AC_MSG_WARN($1) warn_b=yes ]) +AC_DEFUN(AC_STEPMAKE_YODL, [ + if test "x$YODL" = "x"; then + AC_CHECK_PROGS(YODL, yodl, -echo no yodl) + AC_CHECK_PROGS(YODL2HTML, yodl2html, -echo no yodl) + AC_CHECK_PROGS(YODL2LATEX, yodl2latex, ) + AC_CHECK_PROGS(YODL2MAN, yodl2man, -echo no yodl) + AC_CHECK_PROGS(YODL2TEXINFO, yodl2texinfo, -echo no yodl) + AC_CHECK_PROGS(YODL2TXT, yodl2txt, -echo no yodl) + else + AC_SUBST(YODL) + AC_SUBST(YODL2HTML) + AC_SUBST(YODL2LATEX) + AC_SUBST(YODL2MAN) + AC_SUBST(YODL2TEXINFO) + AC_SUBST(YODL2TXT) + export YODL YODL2HTML YODL2LATEX YODL2MAN YODL2TEXINFO YODL2TXT + fi +]) + dnl should cache result. dnl should look in $prefix first. dnl should probably assume TDS - - AC_DEFUN(AC_TEX_PREFIX, [ @@ -45,7 +446,7 @@ AC_DEFUN(AC_TEX_PREFIX, [ if test "x$find_texpostfix" = x; then find_texpostfix='/lib/texmf/tex' - AC_LILY_WARN(Cannot determine the TeX-directory. Please use --enable-tex-prefix) + AC_STEPMAKE_WARN(Cannot determine the TeX-directory. Please use --enable-tex-prefix) fi find_texprefix="$find_root_prefix/$find_texpostfix" @@ -73,7 +474,7 @@ AC_DEFUN(AC_FIND_DIR_IN_PREFIX, [ if test "x$find_dirdir" = x; then find_dirdir="/$3"; - AC_LILY_WARN(Cannot determine $4 subdirectory. Please set from command-line) + AC_STEPMAKE_WARN(Cannot determine $4 subdirectory. Please set from command-line) true fi $2=$find_dirdir @@ -117,380 +518,136 @@ dnl AC_REQUIRE([AC_TEX_PREFIX]) ]) AC_DEFUN(AC_CHECK_SEARCH_RESULT, [ - if test $1 = "error" - then - AC_LILY_WARN(can't find $2. $3) + result="`echo \"$1\" | grep echo`" + if test "x$1" = "xerror" -o "x$result" != "x"; then + AC_STEPMAKE_WARN(can\'t find $2. $3) fi ]) -# Do all the work for Automake. This macro actually does too much -- -# some checks are only needed if your package does certain things. -# But this isn't really a big deal. - -# serial 1 - -dnl Usage: -dnl AM_INIT_AUTOMAKE(package,version, [no-define]) - -AC_DEFUN(AM_INIT_AUTOMAKE, -[AC_REQUIRE([AM_PROG_INSTALL]) -PACKAGE=[$1] -AC_SUBST(PACKAGE) -VERSION=[$2] -AC_SUBST(VERSION) -dnl test to see if srcdir already configured -if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -fi -ifelse([$3],, -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") -AC_DEFINE_UNQUOTED(VERSION, "$VERSION")) -AC_REQUIRE([AM_SANITY_CHECK]) -AC_REQUIRE([AC_ARG_PROGRAM]) -dnl FIXME This is truly gross. -missing_dir=`cd $ac_aux_dir && pwd` -AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) -AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) -AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) -AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) -AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) -AC_REQUIRE([AC_PROG_MAKE_SET])]) - - -# serial 1 - -AC_DEFUN(AM_PROG_INSTALL, -[AC_REQUIRE([AC_PROG_INSTALL]) -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' -AC_SUBST(INSTALL_SCRIPT)dnl -]) +# Configure paths for GTK+ +# Owen Taylor 97-11-3 -# -# Check to make sure that the build environment is sane. -# - -AC_DEFUN(AM_SANITY_CHECK, -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftestfile -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` - if test "[$]*" = "X"; then - # -L didn't work. - set X `ls -t $srcdir/configure conftestfile` - fi - if test "[$]*" != "X $srcdir/configure conftestfile" \ - && test "[$]*" != "X conftestfile $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "[$]2" = conftestfile - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -rm -f conftest* -AC_MSG_RESULT(yes)]) - -dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) -dnl The program must properly implement --version. -AC_DEFUN(AM_MISSING_PROG, -[AC_MSG_CHECKING(for working $2) -# Run test in a subshell; some versions of sh will print an error if -# an executable is not found, even if stderr is redirected. -# Redirect stdin to placate older versions of autoconf. Sigh. -if ($2 --version) < /dev/null > /dev/null 2>&1; then - $1=$2 - AC_MSG_RESULT(found) -else - $1="$3/missing $2" - AC_MSG_RESULT(missing) -fi -AC_SUBST($1)]) - - -# serial 24 AM_PROG_LIBTOOL -AC_DEFUN(AM_PROG_LIBTOOL, -[AC_REQUIRE([AM_ENABLE_SHARED])dnl -AC_REQUIRE([AM_ENABLE_STATIC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_RANLIB])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AM_PROG_LD])dnl -AC_REQUIRE([AM_PROG_NM])dnl -AC_REQUIRE([AC_PROG_LN_S])dnl +dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS dnl -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Check for any special flags to pass to ltconfig. -libtool_flags= -test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" -test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" -test "$silent" = yes && libtool_flags="$libtool_flags --silent" -test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" -test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case "$host" in -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac +AC_DEFUN(AM_PATH_GTK, +[dnl +dnl Get the cflags and libraries from the gtk-config script +dnl + AC_PATH_PROG(GTK_CONFIG, gtk-config, no) + min_gtk_version=ifelse([$1], ,0.99.7,$1) + AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) + no_gtk="" + if test "$GTK_CONFIG" != "no" ; then + GTK_CFLAGS=`$GTK_CONFIG --cflags` + GTK_LIBS=`$GTK_CONFIG --libs` + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + ac_save_CXXFLAGS="$CXXFLAGS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" +dnl +dnl Now check if the installed GTK is sufficiently new. (Also sanity +dnl checks the results of gtk-config to some extent +dnl + AC_TRY_RUN([ +#include <gtk/gtk.h> +#include <stdio.h> + +int +main () +{ + int major, minor, micro; + + if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + return !((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))); +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + else + no_gtk=yes fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - CFLAGS="$CFLAGS -belf" - ;; -esac - -# Actually configure libtool. ac_aux_dir is where install-sh is found. -CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ -LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \ -${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \ -$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ -|| AC_MSG_ERROR([libtool configure failed]) + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" + AC_SUBST(CXXFLAGS) + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) ]) -# AM_ENABLE_SHARED - implement the --enable-shared flag -# Usage: AM_ENABLE_SHARED[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN(AM_ENABLE_SHARED, -[define([AM_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(shared, -changequote(<<, >>)dnl -<< --enable-shared build shared libraries [default=>>AM_ENABLE_SHARED_DEFAULT] -changequote([, ])dnl -[ --enable-shared=PKGS only build shared libraries if the current package - appears as an element in the PKGS list], -[p=${PACKAGE-default} -case "$enableval" in -yes) enable_shared=yes ;; -no) enable_shared=no ;; -*) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_shared=AM_ENABLE_SHARED_DEFAULT)dnl -]) - -# AM_DISABLE_SHARED - set the default shared flag to --disable-shared -AC_DEFUN(AM_DISABLE_SHARED, -[AM_ENABLE_SHARED(no)]) - -# AM_DISABLE_STATIC - set the default static flag to --disable-static -AC_DEFUN(AM_DISABLE_STATIC, -[AM_ENABLE_STATIC(no)]) - -# AM_ENABLE_STATIC - implement the --enable-static flag -# Usage: AM_ENABLE_STATIC[(DEFAULT)] -# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to -# `yes'. -AC_DEFUN(AM_ENABLE_STATIC, -[define([AM_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE(static, -changequote(<<, >>)dnl -<< --enable-static build static libraries [default=>>AM_ENABLE_STATIC_DEFAULT] -changequote([, ])dnl -[ --enable-static=PKGS only build shared libraries if the current package - appears as an element in the PKGS list], -[p=${PACKAGE-default} -case "$enableval" in -yes) enable_static=yes ;; -no) enable_static=no ;; -*) - enable_static=no - # Look at the argument we got. We use all the common list separators. - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," - for pkg in $enableval; do - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$ac_save_ifs" - ;; -esac], -enable_static=AM_ENABLE_STATIC_DEFAULT)dnl -]) +# Configure paths for GTK-- +# Jan Nieuwenhuizen 98-06-3 -# AM_PROG_LD - find the path to the GNU or non-GNU linker -AC_DEFUN(AM_PROG_LD, -[AC_ARG_WITH(gnu-ld, -[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -AC_REQUIRE([AC_PROG_CC]) -ac_prog=ld -if test "$ac_cv_prog_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by GCC]) - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - /* | [A-Za-z]:\\*) - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(ac_cv_path_LD, -[if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog"; then - ac_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" -else - ac_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$ac_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_SUBST(LD) -AM_PROG_LD_GNU -]) - -AC_DEFUN(AM_PROG_LD_GNU, -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then - ac_cv_prog_gnu_ld=yes -else - ac_cv_prog_gnu_ld=no -fi]) -]) - -# AM_PROG_NM - find the path to a BSD-compatible name lister -AC_DEFUN(AM_PROG_NM, -[AC_MSG_CHECKING([for BSD-compatible nm]) -AC_CACHE_VAL(ac_cv_path_NM, -[case "$NM" in -/* | [A-Za-z]:\\*) - ac_cv_path_NM="$NM" # Let the user override the test with a path. - ;; -*) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -B" - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - ac_cv_path_NM="$ac_dir/nm -p" - else - ac_cv_path_NM="$ac_dir/nm" - fi - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm - ;; -esac]) -NM="$ac_cv_path_NM" -AC_MSG_RESULT([$NM]) -AC_SUBST(NM) +dnl AM_PATH_GTK__([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for GTK--, and define GTK___CFLAGS and GTK___LIBS +dnl +AC_DEFUN(AM_PATH_GTK__, +[dnl +dnl Get the cflags and libraries from the gtk__-config script +dnl + min_gtk___version=ifelse([$1], ,0.9.4,$1) + AC_MSG_CHECKING(for GTK-- - version >= $min_gtk___version) + no_gtk__="" + if test "$GTK_CONFIG" != "no" ; then + GTK___CFLAGS=`$GTK_CONFIG --cflags` + GTK_LIBS=`$GTK_CONFIG --libs` + GTK___LIBS="$GTK_LIBS -lgtkmm" + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + ac_save_CXXFLAGS="$CXXFLAGS" + CFLAGS="$CFLAGS $GTK___CFLAGS" + CXXFLAGS="$CXXFLAGS $GTK___CFLAGS" + LIBS="$LIBS $GTK___LIBS" +dnl +dnl Now check if the installed GTK__ is sufficiently new. (Also sanity +dnl checks the results of gtk__-config to some extent +dnl + AC_TRY_RUN([ +#include <gtk--.h> +#include <stdio.h> + +int +main () +{ + // urg + return 0; +} +],, no_gtk__=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + CXXFLAGS="$ac_save_CXXFLAGS" + LIBS="$ac_save_LIBS" + else + no_gtk__=yes + fi + if test "x$no_gtk__" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + GTK___CFLAGS="" + GTK___LIBS="" + ifelse([$3], , :, [$3]) + fi + CXXFLAGS="$CXXFLAGS $GTK___CFLAGS" + AC_SUBST(CXXFLAGS) + AC_SUBST(GTK___CFLAGS) + AC_SUBST(GTK___LIBS) ]) - -dnl AM_PROG_LEX -dnl Look for flex, lex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT -AC_DEFUN(AM_PROG_LEX, -[missing_dir=ifelse([$1],,`cd $ac_aux_dir && pwd`,$1) -AC_CHECK_PROGS(LEX, flex lex, "$missing_dir/missing flex") -AC_PROG_LEX -AC_DECL_YYTEXT]) - -# Like AC_CONFIG_HEADER, but automatically create stamp file. - -AC_DEFUN(AM_CONFIG_HEADER, -[AC_PREREQ([2.12]) -AC_CONFIG_HEADER([$1]) -dnl When config.status generates a header, we must update the stamp-h file. -dnl This file resides in the same directory as the config header -dnl that is generated. We must strip everything past the first ":", -dnl and everything past the last "/". -AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl -ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, -<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, -<<am_indx=1 -for am_file in <<$1>>; do - case " <<$>>CONFIG_HEADERS " in - *" <<$>>am_file "*<<)>> - echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx - ;; - esac - am_indx=`expr "<<$>>am_indx" + 1` -done<<>>dnl>>) -changequote([,]))]) - diff --git a/bin/Makefile b/bin/Makefile deleted file mode 100644 index b7a8c3a60d..0000000000 --- a/bin/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -# bin/Makefile - -depth = .. -include $(depth)/make/Include.make - -# list of distribution files: -EXTRA_DISTFILES = install-sh config.sub config.guess ltconfig - -include $(depth)/make/Scripts.make - -EXECUTABLES=convert-mudela mudela-book ly2dvi - -include $(depth)/make/Executable.make diff --git a/bin/add-URLs.sh b/bin/add-URLs.sh deleted file mode 100755 index a32e6f964b..0000000000 --- a/bin/add-URLs.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -# add URLs for broken perl 5.004 - -perl -i~ -pe 's! ([a-z]+://[^ \t]+)! <a href=$1>$1</a>!g' $* diff --git a/bin/add-html-footer.py b/bin/add-html-footer.py deleted file mode 100644 index e18d5d244a..0000000000 --- a/bin/add-html-footer.py +++ /dev/null @@ -1,79 +0,0 @@ -#!@PYTHON@ - -""" -Print a nice footer. add the top of the NEWS file (up to the ********) -""" - - -import os -import sys -import getopt -import __main__ - -lilypath ='' -try: - lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' -except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - sys.exit(1) - -lilypath = lilypath + '/bin/' -sys.path.append(lilypath) - -from lilypython import * - -lilyversion= '' -fullname = "unknown" -news_file = '' - -def set_vars(): - __main__.lilyversion = version_tuple_to_str(lilydirs.version_tuple()) - os.environ["CONFIGSUFFIX"] = 'www'; - pw = pwd.getpwuid (os.getuid()); - - __main__.fullname= pw[4]; - - -backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\ -of LilyPond -- The GNU Project Music typesetter\n\ -<hr><font size=-1>\n\ -This page was built from lilypond-%s by <p>\n\ -<address><br>%s <a href=mailto:%s><<!bla>%s</a>></address>\n\ -<p></font>' - -set_vars () -banner_file = '' -news_file='' -news ='' -(options, files) = getopt.getopt(sys.argv[1:], '', ['news=']) - -for opt in options: - o = opt[0] - a = opt[1] - if o == '--news': - news_file = a - -def footstr(index): - return backstr % (index, lilyversion, fullname, mailaddress (), mailaddress) - -index_file='../../out-www/index.html' -banner = footstr (index_file) -banner_id = '<! banner_id >' - - -if news_file: - news = gulp_file (news_file) - i = regex.search ('^\*\*', news) - news = news[:i] - - -for f in files: - s = gulp_file (f) - if news_file: - s = regsub.sub ('top_of_NEWS', '<XMP>\n'+ news + '\n</XMP>\n', s) - - if regex.search (banner_id, s) == -1: - s = regsub.sub ('</body>', '</BODY>', s) - s = regsub.sub ('</BODY>', banner_id + banner + '</BODY>', s) - - dump_file (f, s) diff --git a/bin/clean-diaper.sh b/bin/clean-diaper.sh deleted file mode 100755 index 47c2a069db..0000000000 --- a/bin/clean-diaper.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# unclobber current dir. -rm -vf *.aux *.log *.orig *~ *dvi *.dep - -# subdirs -rm -vf `grep -li "^% Creator: GNU LilyPond" *.out *.tex` -rm -vf `grep -li "Creator: mi2mu" *.midi.ly` -rm -vf `grep -li "%Creator: dvipsk" *.ps` -rm -vf `grep -li "Creator: GNU LilyPond" *.midi` -rm -vf `grep -li "Creator: ly2dvi" *.tex` -rm -vf `find -name 'core'` -rm -vf `find -name '*.orig'` -rm -vf `find -name '*.rej'` - - - - - -# docxx mess -rm -vf *.class HIER*.html dxxgifs.tex gifs.db icon?.gif logo.gif down.gif \ - aindex.html index.html diff --git a/bin/clean-embeds.sh b/bin/clean-embeds.sh deleted file mode 100755 index 1b53f85ecb..0000000000 --- a/bin/clean-embeds.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -rm -f feta-sleur-[0-9x\-]*.mf -rm -f feta-sleur-[0-9x\-]*.log -rm -f feta-beum-[0-9x\-]*.mf -rm -f feta-beum-[0-9x\-]*.log -rm -f feta-embed.aux -rm -f missfont.log -clean-fonts sleur -clean-fonts beum diff --git a/bin/clean-fonts.sh b/bin/clean-fonts.sh deleted file mode 100755 index 202a873584..0000000000 --- a/bin/clean-fonts.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -case $# in -0) - WHAT="" ;; -1) - WHAT=$1;; -esac - -# should use kpsepath - -if [ -d /var/lib/texmf ]; then - TEXDIR=/var/lib/texmf -elif [ -d /var/texfonts ]; then - TEXDIR=/var/texfonts -else - TEXDIR=/var/ -fi - -# remove possibly stale .pk/.tfm files -echo> /tmp/cleaning-font-dummy -FILES=`find $TEXDIR -name "feta*$WHAT*tfm" -or -name "feta*$WHAT*pk"` - -echo removing $FILES -rm $FILES /tmp/cleaning-font-dummy diff --git a/bin/config.guess b/bin/config.guess deleted file mode 100755 index 413ed41c0f..0000000000 --- a/bin/config.guess +++ /dev/null @@ -1,883 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. -# -# This file 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 2 of the License, or -# (at your option) any later version. -# -# This program 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 this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Written by Per Bothner <bothner@cygnus.com>. -# The master version of this file is at the FSF in /home/gd/gnu/lib. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit system type (host/target name). -# -# Only a few systems have been added to this list; please add others -# (but try to keep the structure clean). -# - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 8/24/94.) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - cat <<EOF >dummy.s - .globl main - .ent main -main: - .frame \$30,0,\$26,0 - .prologue 0 - .long 0x47e03d80 # implver $0 - lda \$2,259 - .long 0x47e20c21 # amask $2,$1 - srl \$1,8,\$2 - sll \$2,2,\$2 - sll \$0,3,\$0 - addl \$1,\$0,\$0 - addl \$2,\$0,\$0 - ret \$31,(\$26),1 - .end main -EOF - ${CC-cc} dummy.s -o dummy 2>/dev/null - if test "$?" = 0 ; then - ./dummy - case "$?" in - 7) - UNAME_MACHINE="alpha" - ;; - 15) - UNAME_MACHINE="alphaev5" - ;; - 14) - UNAME_MACHINE="alphaev56" - ;; - 10) - UNAME_MACHINE="alphapca56" - ;; - 16) - UNAME_MACHINE="alphaev6" - ;; - esac - fi - rm -f dummy.s dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]` - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-cbm-sysv4 - exit 0;; - amiga:NetBSD:*:*) - echo m68k-cbm-netbsd${UNAME_RELEASE} - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - arm32:NetBSD:*:*) - echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - SR2?01:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - atari*:NetBSD:*:*) - echo m68k-atari-netbsd${UNAME_RELEASE} - exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:NetBSD:*:*) - echo m68k-sun-netbsd${UNAME_RELEASE} - exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:NetBSD:*:*) - echo m68k-apple-netbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - sed 's/^ //' << EOF >dummy.c - int main (argc, argv) int argc; char **argv; { - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - ${CC-cc} dummy.c -o dummy \ - && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ - -o ${TARGET_BINARY_INTERFACE}x = x ] ; then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i?86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >dummy.c - #include <sys/systemcfg.h> - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:4) - if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=4.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[3478]??:HP-UX:*:*) - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; - 9000/8?? ) HP_ARCH=hppa1.0 ;; - esac - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >dummy.c - #include <unistd.h> - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i?86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - F300:UNIX_System_V:*:*) - FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - F301:UNIX_System_V:*:*) - echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` - exit 0 ;; - hp3[0-9][05]:NetBSD:*:*) - echo m68k-hp-netbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - i?86:BSD/386:*:* | *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:NetBSD:*:*) - echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo i386-pc-cygwin32 - exit 0 ;; - i*:MINGW*:*) - echo i386-pc-mingw32 - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin32 - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. - ld_help_string=`ld --help 2>&1` - ld_supported_emulations=`echo $ld_help_string \ - | sed -ne '/supported emulations:/!d - s/[ ][ ]*/ /g - s/.*supported emulations: *// - s/ .*// - p'` - case "$ld_supported_emulations" in - i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; - i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; - sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; - esac - - if test "${UNAME_MACHINE}" = "alpha" ; then - sed 's/^ //' <<EOF >dummy.s - .globl main - .ent main - main: - .frame \$30,0,\$26,0 - .prologue 0 - .long 0x47e03d80 # implver $0 - lda \$2,259 - .long 0x47e20c21 # amask $2,$1 - srl \$1,8,\$2 - sll \$2,2,\$2 - sll \$0,3,\$0 - addl \$1,\$0,\$0 - addl \$2,\$0,\$0 - ret \$31,(\$26),1 - .end main -EOF - LIBC="" - ${CC-cc} dummy.s -o dummy 2>/dev/null - if test "$?" = 0 ; then - ./dummy - case "$?" in - 7) - UNAME_MACHINE="alpha" - ;; - 15) - UNAME_MACHINE="alphaev5" - ;; - 14) - UNAME_MACHINE="alphaev56" - ;; - 10) - UNAME_MACHINE="alphapca56" - ;; - 16) - UNAME_MACHINE="alphaev6" - ;; - esac - - objdump --private-headers dummy | \ - grep ld.so.1 > /dev/null - if test "$?" = 0 ; then - LIBC="libc1" - fi - fi - rm -f dummy.s dummy - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 - elif test "${UNAME_MACHINE}" = "mips" ; then - cat >dummy.c <<EOF -main(argc, argv) - int argc; - char *argv[]; -{ -#ifdef __MIPSEB__ - printf ("%s-unknown-linux-gnu\n", argv[1]); -#endif -#ifdef __MIPSEL__ - printf ("%sel-unknown-linux-gnu\n", argv[1]); -#endif - return 0; -} -EOF - ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - else - # Either a pre-BFD a.out linker (linux-gnuoldld) - # or one that does not give us useful --help. - # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. - # If ld does not provide *any* "supported emulations:" - # that means it is gnuoldld. - echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" - test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 - - case "${UNAME_MACHINE}" in - i?86) - VENDOR=pc; - ;; - *) - VENDOR=unknown; - ;; - esac - # Determine whether the default compiler is a.out or elf - cat >dummy.c <<EOF -#include <features.h> -main(argc, argv) - int argc; - char *argv[]; -{ -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); -#endif - return 0; -} -EOF - ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 - rm -f dummy.c dummy - fi ;; -# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions -# are messed up and put the nodename in both sysname and nodename. - i?86:DYNIX/ptx:4*:*) - echo i386-sequent-sysv4 - exit 0 ;; - i?86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} - fi - exit 0 ;; - i?86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` - echo ${UNAME_MACHINE}-pc-isc$UNAME_REL - elif /bin/uname -X 2>/dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - pc:*:*:*) - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i?86:LynxOS:2.*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Richard.M.Bartel@ccMail.Census.GOV> - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes <hewes@openmarket.com>. - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:*:6*) - echo mips-sony-newsos6 - exit 0 ;; - R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -cat >dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -#if !defined (ultrix) - printf ("vax-dec-bsd\n"); exit (0); -#else - printf ("vax-dec-ultrix\n"); exit (0); -#endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 -rm -f dummy.c dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -#echo '(Unable to guess system type)' 1>&2 - -exit 1 diff --git a/bin/config.sub b/bin/config.sub deleted file mode 100755 index 213a6d47d6..0000000000 --- a/bin/config.sub +++ /dev/null @@ -1,954 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file 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 2 of the License, or -# (at your option) any later version. -# -# This program 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 this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -if [ x$1 = x ] -then - echo Configuration name missing. 1>&2 - echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 - echo "or $0 ALIAS" 1>&2 - echo where ALIAS is a recognized configuration type. 1>&2 - exit 1 -fi - -# First pass through any local machine types. -case $1 in - *local*) - echo $1 - exit 0 - ;; - *) - ;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - linux-gnu*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple) - os= - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ - | arme[lb] | pyramid | mn10200 | mn10300 \ - | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ - | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \ - | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \ - | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ - | mipstx39 | mipstx39el \ - | sparc | sparclet | sparclite | sparc64 | v850) - basic_machine=$basic_machine-unknown - ;; - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i[3456]86) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - vax-* | tahoe-* | i[3456]86-* | i860-* | m32r-* | m68k-* | m68000-* \ - | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ - | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ - | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ - | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \ - | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \ - | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \ - | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ - | sparc64-* | mips64-* | mipsel-* \ - | mips64el-* | mips64orion-* | mips64orionel-* \ - | mipstx39-* | mipstx39el-* \ - | f301-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-cbm - ;; - amigaos | amigados) - basic_machine=m68k-cbm - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-cbm - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [ctj]90-cray) - basic_machine=c90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - os=-mvs - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[3456]86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i[3456]86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i[3456]86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i[3456]86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - miniframe) - basic_machine=m68000-convergent - ;; - mipsel*-linux*) - basic_machine=mipsel-unknown - os=-linux-gnu - ;; - mips*-linux*) - basic_machine=mips-unknown - os=-linux-gnu - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - np1) - basic_machine=np1-gould - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5) - basic_machine=i586-intel - ;; - pentiumpro | p6) - basic_machine=i686-intel - ;; - pentium-* | p5-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - k5) - # We don't have specific support for AMD's K5 yet, so just call it a Pentium - basic_machine=i586-amd - ;; - nexen) - # We don't have specific support for Nexgen yet, so just call it a Pentium - basic_machine=i586-nexgen - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=rs6000-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - mips) - if [ x$os = x-linux-gnu ]; then - basic_machine=mips-unknown - else - basic_machine=mips-mips - fi - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sparc) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -ctix* | -uts*) - os=-sysv - ;; - -ns2 ) - os=-nextstep2 - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -xenix) - os=-xenix - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-semi) - os=-aout - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-ibm) - os=-aix - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f301-fujitsu) - os=-uxpv - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -hpux*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os diff --git a/bin/conflily.sh b/bin/conflily.sh deleted file mode 100755 index 0f4fda05d8..0000000000 --- a/bin/conflily.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/sh -# conflily --- configure LilyPond sourcetree -# -# You should set LILYPOND_SOURCEDIR to the latest uppacked source dir, -# it will default to: -# -export LILYPOND_SOURCEDIR=$HOME/lelie/current -# -# and create links to here, if necessary -# -if [ ! -e $HOME/lelie ]; then - (cd ..; ln -s `pwd` $HOME/lelie) -fi -# -# -current=`basename \`pwd\`` -# (cd ..; rm -f current) -(cd ..; rm -f current 2>&1 > /dev/null) -(cd ..; ln -s $current current) -# -# The LilyPond root dir looks like this: -# -# current -> ./lilypond-x.x.x symlink to current source -# lilypond-x.x.x/ the unpacked LilyPond source -# patches/ gzipped patches -# releases/ tar gzipped releases -# test/ latest output of 'release' -# -# -if [ "x$LILYINCLUDE" = "x" ]; then - # we can try... - echo you should add the following to your login script - if [ "x$MAILADDRESS" = "x" ]; then - export MAILADDRESS=$USER@`hostname` - echo " export MAILADDRESS=\$USER@`hostname`" - fi - export LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/mf/out - export PATH=$PATH$LILYPOND_SOURCEDIR/bin: - export MFINPUTS=$MFINPUTS:$LILYPOND_SOURCEDIR/mf - export TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out - cat <<EOF - export LILYINCLUDE=\$LILYPOND_SOURCEDIR/init:\$LILYPOND_SOURCEDIR/mf/out - export PATH=\$PATH:$LILYPOND_SOURCEDIR/bin - export MFINPUTS=\$MFINPUTS:\$LILYPOND_SOURCEDIR/mf - export TEXINPUTS=\$TEXINPUTS:\$LILYPOND_SOURCEDIR/mf/out -EOF -fi - -ln -sf $LILYPOND_SOURCEDIR/lily/out/lilypond bin/out/lilypond -ln -sf $LILPPOND_SOURCEDIR/out/mi2mu bin/out/mi2mu - -configure --prefix=/usr --enable-debugging --enable-printing --enable-checking --disable-optimise diff --git a/bin/convert-mudela.pl b/bin/convert-mudela.pl deleted file mode 100755 index 3787efcde3..0000000000 --- a/bin/convert-mudela.pl +++ /dev/null @@ -1,386 +0,0 @@ -#!@PERL@ -w -# -*-perl-*- - -=head1 TODO - - detect \lyrics and \melodic, and do substitution accordingly. - count <> and {} ? - -Ugh . Perl sux. Anybody for Python? - -=cut - - - -# -# version of "supporting" engine, not mudela conversions. -# - - - - -$convert_mudela_version = "0.1.2"; - -use Getopt::Long; - - -sub version_compare -{ - local ($a,$b)=@_; - return &cmpver; -} - - -sub cmpver -{ - my(@a)= split /\./,$a; - my(@b)= split /\./,$b; - - for $i (0,1,2) { - return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]); - } - return $a cmp $b; -} - -sub version_string_conv -{ - my ($from_version, $to_version) = @_; - s/\version \"$from_version\"/\version \"$to_version\"/g; -} - -################################################################ - -sub no_conv -{ -} - -sub convert_0_0_52_to_0_0_53 -{ - - s/include \"/$1\\include \"/g; -} - - -sub convert_0_0_54_to_0_0_55 -{ - s/%{/% {/g; -} - - -sub convert_0_0_53_to_0_0_54 -{ - print STDERR "Not smart enough to convert \\transpose\n" if (/\\transpose/) ; -} - -# we-re not at 58 yet, but this is at least one of the rules -sub convert_0_0_55_to_0_0_56 -{ - s/\"\|\|\"/\"|.\"/g; -} - -sub convert_0_0_56_to_0_0_57 -{ - s/\(([ \]\[|\t-\.>]|\\[<!>a-z]+)*\)/\~ $1/g; -} - -sub convert_0_0_57_to_0_0_58 -{ - s/\[ *([^\[\]]*)\] *([1-9]*) *\/ *([1-9]*)/[$2\/$3 $1]1\/1/g; -} - -sub convert_0_0_58_to_0_0_59 -{ - die "Not smart enough to convert 0.0.58 to 0.0.59\n"; -} - -sub convert_0_0_59_to_0_0_60 -{ - s/(\\unitspace [0-9.mcptin\\ ]+|\\geometric [0-9.]+|\\width [0-9.mcp\\tin]+)/$1;/g; - s/(\\output \"[^\"]+\")/$1;/; - s/(\\tempo [0-9: ]+)/$1;/; -} - -sub convert_0_0_60_to_0_0_61 -{ - s/(\\unitspace|\\geometric|\\width)/$1=/g; - -} - -sub convert_0_1_0_to_0_1_1 -{ - s/\\tempo (.*):(.*);/\\tempo $1 = $2;/g -} - -sub convert_0_1_2_to_0_1_3 -{ - s/\\stem *(\\up|1) *;/\\stemup/g; - s/\\stem *(\\down|-1) *;/\\stemdown/g; - s/\\stem *0 *;/\\stemboth/g; - s/\\hshift ([^;]+) *;/\\property Voice.hshift = $1/g; -} - -my $header_b = 0; - -sub generic_conversion_scan -{ - if (/\\header *\{/) - { - $header_b = 1; - } - if ($header_b && /^ *\}/) - { - $header_b = 0; - } -} -sub convert_0_1_4_to_0_1_5 -{ - s/([<{]) *\\id "Piano" (.+);/\\type Grandstaff = $3 $1/; - s/([<{]) *\\id (.+) (.+);/\\type $2 = $3 $1/; -} - - -sub convert_0_1_5_to_0_1_6 -{ - s/< *\\multi (.*);/\\multi $1 </; -} - -sub convert_0_1_6_to_0_1_7 -{ - if ($header_b) - { - s/^([a-zA-z]+)[ \t]+(.*)$/$1 =\t \"$2\";/; - s/^([ \t])+(.*)$/$1 \"$2\";/; - } -} - -sub convert_0_1_7_to_0_1_8 -{ - s/\\plet *1 *\/ *1 *;/\\]/; - s/\\plet *([1-9][0-9]*) *\/ *([2-9][0-9]*) *;/\\[$1\/$2/; -} - -sub convert_0_1_8_to_0_1_9 -{ -# sticky plet shorthand... -# print "introduced plet and finger shorthands...\n"; -} - -sub convert_0_1_9_to_0_1_10 -{ - s/Grandstaff/Grand_staff/; -} - -sub convert_0_1_10_to_0_1_14 -{ - while ( /([ \n\t\]\[<>()])\'+[a-zA-Z]/ ) - { - s/([ \n\t\[<>()\]])\'(\'*[a-zA-Z]+)/$1$2,/g; - } -} -sub convert_0_1_14_to_0_1_15 -{ -# junked \duration last and \duration 4, 8, 16 etc. -# junked \octave relative - print STDERR "Not smart enough to convert \\duration\n" if (/\\duration/) ; - print STDERR "Not smart enough to convert \\octave relative\n" if (/\\octave relative/) ; -} - -############################################################### - -sub last_conversion -{ - my @v = &versions; - return pop @v; -} -sub identify -{ - - print STDERR "This is convert-mudela " . $convert_mudela_version . - " (up to mudela version ", last_conversion, ")\n"; -} - - - sub usage - { - print STDERR "Usage: convert-mudela [options] [mudela-file]...\n" - . "Convert old mudela source from mudela-file or stdin\n\n" - . "Options:\n" - . " -e, --edit perform in-place conversion\n" - . " -f, --from=PATHLEVEL use source version 0.0.PATCHLEVEL\n" - . " -h, --help print this help\n" - . " -o, --output=FILE name output file\n" - . " -s, --show-rules print all known conversion rules\n" - . " -t, --to=VERSION convert to version VERSION\n" - } - - -my %minor_conversions = ("0.0.50" => \&no_conv, - "0.0.52" => \&convert_0_0_50_to_0_0_52, - "0.0.53" => \&convert_0_0_52_to_0_0_53, - "0.0.54" => \&convert_0_0_53_to_0_0_54, - "0.0.55" => \&convert_0_0_54_to_0_0_55, - "0.0.56" => \&convert_0_0_55_to_0_0_56, - "0.0.57" => \&convert_0_0_56_to_0_0_57, - "0.0.58" => \&convert_0_0_57_to_0_0_58, - "0.0.59" => \&convert_0_0_58_to_0_0_59, - "0.0.60" => \&convert_0_0_59_to_0_0_60, - "0.0.61" => \&convert_0_0_60_to_0_0_61, - "0.1.1" => \&convert_0_1_0_to_0_1_1, - "0.1.2" => \&no_conv, - "0.1.3" => \&convert_0_1_2_to_0_1_3, - "0.1.4" => \&no_conv, - "0.1.5" => \&convert_0_1_4_to_0_1_5, - "0.1.6" => \&convert_0_1_5_to_0_1_6 - ,"0.1.7" => \&convert_0_1_6_to_0_1_7 - ,"0.1.8" => \&convert_0_1_7_to_0_1_8 - ,"0.1.9" => \&convert_0_1_8_to_0_1_9 - ,"0.1.10" => \&convert_0_1_9_to_0_1_10 - , "0.1.14" => \&convert_0_1_10_to_0_1_14 - , "0.1.15" => \&convert_0_1_14_to_0_1_15 - ); - - - -sub versions -{ - return (sort { cmpver; } (keys %minor_conversions)); -} - - -sub show_rules -{ - my (@v) = versions; - - print "Rules: ", join(", ", @v), "\n"; - -} - -sub do_conversion -{ - my ($from,$to) = @_; - - my @applicable_conversion; - my @mudela_levels; - - my @v = versions; - foreach $ver (@v) { - if (version_compare($ver, $from) > 0 && version_compare($ver,$to) <= 0 ){ - push @applicable_conversion, $minor_conversions{$ver}; - push @mudela_levels, $ver; - } - } - - print STDERR "Applying following rules: ", join(", ", @mudela_levels) , "\n"; - - while (<INLY>) { - generic_conversion_scan; - foreach $subroutine (@applicable_conversion) { - - &$subroutine; - - } - version_string_conv $from, $to; - print OUTLY; - } -} - -sub get_auto_from -{ - my ($fn)=@_; - my ($ver); - open INLY, $fn || die "Can't open"; - - while (<INLY>) { - s/^.*\\version \"([^\"]*)\".*$//; - if (defined ($1)) { - print STDERR "Guessing version: ", $1, ".. "; - $ver = $1; - last; - } - } - if (!defined($ver)){ - print STDERR "can't determine mudela version in $fn.\n"; - my $u; - return $u; - } - close INLY; - return $ver; -} - -sub set_files -{ - $infile = "-"; - $outfile = "-"; - $outfile = $opt_output if (defined($opt_output)); - - if ($ARGV [0]) { - $infile = $ARGV[0]; - } - if (!(-f $infile) && !($infile =~ /\.ly$/s)) { - $infile .= ".ly"; - } - if ($opt_edit && $infile ne "-") { - $opt_edit = 1; - $outfile = "$infile.NEW"; - $infile = "$infile"; - } - print STDERR "Input ", (($infile eq "-") ?"STDIN" : $infile), " .. "; - -} - -sub do_one_arg -{ - set_files; - - local ($from_version, $to_version); - $from_version = $opt_from; - $to_version = $opt_to; - - ($from_version = get_auto_from $infile) unless defined($opt_from); - return if (!defined($from_version)); - - ($to_version = last_conversion) unless (defined($opt_to)); - - die "can't open \`$infile\'" unless open INLY,$infile ; - die "can't open \`$outfile\'" unless open OUTLY, ">$outfile"; - - do_conversion $from_version, $to_version; - close INLY; - close OUTLY; - - if ($opt_edit) { - rename $infile, "$infile~"; - rename $outfile, "$infile"; - } -} - -## "main" - -identify; - - -GetOptions ("help", "output=s", "from=s", "to=s", "minor=i", "edit", "show-rules"); - -if ($opt_help) { - usage(); - $opt_help = 0; # to extinguish typo check. - exit 0; -} - -if ($opt_show_rules) { - show_rules ; - $opt_show_rules = 0; # to extinguish typo check. - exit 0; -} - -local ( $infile,$outfile); -my $processed_one=0; - -while (defined($ARGV[0])) { - do_one_arg; - shift @ARGV; - $processed_one = 1; -} -do_one_arg unless ($processed_one); - - diff --git a/bin/doos-dist.sh b/bin/doos-dist.sh deleted file mode 100644 index baef3fc923..0000000000 --- a/bin/doos-dist.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -# doos-dist.sh --- make a windoze distribution - -latest=lilypond-`show-latest -p` -{ cd $LILYPOND_SOURCEDIR; cd ..; -export LILYPOND_ROOTDIR=`pwd` } - -if [ ! -e $LILYPOND_ROOTDIR/doos/zip ]; then - doo mkdir -p $LILYPOND_ROOTDIR/doos/zip -fi - -set -x - -cd $LILYPOND_ROOTDIR/doos || exit 1 - -rm -rf lilypond-* - -tar xzf $LILYPOND_ROOTDIR/releases/$latest.tar.gz || exit 1 -cd $latest - -export PATH=/usr/doos/bin:$PATH -configure --host=i386-pc-linux --target=i386-pc-cygwin32 --prefix=/usr --enable-debugging --enable-printing --enable-checking - -make -make doosdist - -ln out/$latest.exe.zip $LILYPOND_ROOTDIR/doos/zip - diff --git a/bin/find-typenames.pl b/bin/find-typenames.pl deleted file mode 100755 index 890f9cabd0..0000000000 --- a/bin/find-typenames.pl +++ /dev/null @@ -1,20 +0,0 @@ -#!@PERL@ - -open GREP, "egrep -h '^struct|^class' *.hh *.cc|"; -open OUT, "|sort | uniq"; -while (<GREP>) { - - s/^struct/class/; - if (! /; *$/) { - s/:[^{]+{.*$//; - s/ *{.*$/;/; - } - if (! /; *$/) { - chop; - $_ .= ";\n"; - - } - print OUT; -} -close OUT; -close GREP; diff --git a/bin/flower.py b/bin/flower.py deleted file mode 100755 index 768a56eb61..0000000000 --- a/bin/flower.py +++ /dev/null @@ -1,85 +0,0 @@ -#!@PYTHON@ - -# -# flower.py -- python flower lib -# -# source file of the GNU LilyPond music typesetter -# -# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> -# - -import sys - -class File: - """silly wrapper for Python file object.""" - def __init__ (self,nm, mode='r'): - if nm: - self.file_ = open (nm, mode); - elif mode == 'w': - self.file_ = sys.stdout - else: - self.file_ = sys.stdin - - self.eof_ = 0; - def readline (self): - l= self.file_.readline (); - if not l: - self.eof_ = 1; - return l; - def write (self, str): - self.file_.write (str) - def eof (self): - return self.eof_ - def close (self): - self.file_.close () - def __del__ (self): - self.close (); - - - -import fnmatch -import os - -_debug = 0 - -_prune = ['(*)'] - - -def my_find(patterns, dir = os.curdir): - list = [] - names = os.listdir(dir) - names.sort() - for name in names: - if name in (os.curdir, os.pardir): - continue - fullname = os.path.join(dir, name) - for pat in patterns: - if fnmatch.fnmatch(name, pat): - list.append(fullname) - if os.path.isdir(fullname) and not os.path.islink(fullname): - for p in _prune: - if fnmatch.fnmatch(name, p): - if _debug: print "skip", `fullname` - break - else: - if _debug: print "descend into", `fullname` - found = my_find(patterns, fullname) - if found: - list = list + found - return list - -def multiple_find(pats, dirnames): - from find import find - l = [] - for d in dirnames: - l = l + my_find(pats, d) - return l - -def file_exist_b(name): - try: - f = open(name) - except IOError: - return 0 - f.close () - return 1 - diff --git a/bin/genheader.py b/bin/genheader.py deleted file mode 100755 index ca45f0736e..0000000000 --- a/bin/genheader.py +++ /dev/null @@ -1,145 +0,0 @@ -#!@PYTHON@ - -# -# genheader.py -- do headers (like these) -# -# source file of the GNU LilyPond music typesetter -# -# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> -# - - - -import posix -import pwd -import regex -import regsub -import string -import sys -import os -import getopt -import time -lilypath ='' -try: - lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' -except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - sys.exit(1) - -lilypath = lilypath + '/bin/' -sys.path.append(lilypath) - -from lilypython import * - -class My_options: - def __init__(self): - self.commentify = None - self.add_hdr_def = 0 - self.classname = '' - -my_options = My_options() - - -def name(): - return pwd.getpwuid(posix.getuid())[4] - -def c_commentify(str): - return '/* ' + regsub.gsub('^',' ', str) + '\n */'; - -def sh_commentify(str): - return regsub.gsub('^', '# ', str) - -def tex_commentify(str): - return regsub.gsub('^', '% ', str) - -def project_str(): - cwd = posix.getcwd() - if regex.search('flower', cwd) <> -1: - PROJECT = "the Flower Library" - elif regex.search('mf$', cwd) <> -1: - PROJECT = "the Feta (defintively not an abbreviation for Font-En-Tja) music font" - else: - PROJECT = "the GNU LilyPond music typesetter" - return PROJECT - -def head_str(filename): - if my_options.add_hdr_def: - what = "declare " - else: - what=" implement " - - - headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) %d %s <%s>\n' \ - %(filename, what, project_str(), time.localtime (time.time ())[0], name(), mailaddress()) - return headstr - - -def c_include(filename): - startdef= filename; - trans = string.maketrans( string.lowercase + '-.', string.uppercase + '__') - startdef = string.translate(filename, trans) - - - headstr = "\n\n#ifndef %s\n#define %s\n" % (startdef, startdef) - terminatestr = "#endif /* %s */\n" % (startdef); - - return headstr+ '\n\n'+ terminatestr; - - - - - -(options, files) = getopt.getopt(sys.argv[1:], 'tcsh', ['class']) - -for opt in options: - o = opt[0] - a = opt[1] - if o == '-c': - my_options.commentify = c_commentify - elif o == '-t': - my_options.commentify = tex_commentify - elif o == '-s': - my_options.commentify = sh_commentify - elif o == '-h': - my_options.add_hdr_def = 1 - elif o == '--class': - my_options.classname = a - - - -# -# FIXME: should create xxx.cc and include/xxx.hh, with implement/declare Xxx -# in one run -if my_options.classname: - pass - -def do_file(nm): - s = my_options.commentify(head_str(nm)) - if my_options.add_hdr_def: - s = s + c_include(nm) - return s - - -def extension(ext,nm): - ext = '\\.' + ext - return regex.search(ext, nm) <> -1 - -def c_extension(nm): - return extension('hh',nm) or extension('cc',nm) \ - or extension('icc', nm) or extension('tcc',nm) -def select_commentification(nm): - if c_extension (nm): - return c_commentify - elif extension('py',nm) or extension('pl',nm) or extension('sh',nm): - return sh_commentify - elif extension('mf',nm) or extension('tex',nm) or extension('ly',nm): - return tex_commentify - else: - raise 'help' - -for nm in files: - if extension('hh', nm) or extension('icc', nm) or extension('tcc', nm): - my_options.add_hdr_def = 1 - if my_options.commentify == None: - my_options.commentify = select_commentification(nm) - print do_file(nm) diff --git a/bin/install-sh b/bin/install-sh deleted file mode 100755 index 398f7f861e..0000000000 --- a/bin/install-sh +++ /dev/null @@ -1,241 +0,0 @@ -#! /bin/sh - -# ugr. Why $#^&@ does configure need this? - -# -# install - install a program, script, or datafile -# This comes from X11R5. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. -# - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/bin/lilypython.py b/bin/lilypython.py deleted file mode 100755 index 210865bacb..0000000000 --- a/bin/lilypython.py +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/python - -# -# lily-python.py -- implement general LilyPond-wide python stuff -# -# source file of the GNU LilyPond music typesetter -# -# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl> -# - -import posix -import pwd -import regex -import regsub -from string import * -from flower import * -import sys -import os -import getopt - - -version_re = regex.compile('\\version *\"\(.*\)\"') -# now used as shell script in configure too! -# make_assign_re = regex.compile('^\([A-Z_]*\) *= *\(.*\)$') -make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$') - -def mailaddress(): - try: - return os.environ['MAILADDRESS'] - except KeyError: - return '(address unknown)' - -def version_tuple(file): - lines = file.readlines() - - mi = pa = mj = 0 - mp = '' - - for l in lines: - if make_assign_re.search(l) <> -1: - nm = make_assign_re.group(1) - val = make_assign_re.group(2) -# if nm == 'TOPLEVEL_MAJOR_VERSION': - if nm == 'MAJOR_VERSION': - mj = atoi(val) -# elif nm == 'TOPLEVEL_MINOR_VERSION': - elif nm == 'MINOR_VERSION': - mi = atoi(val) -# elif nm == 'TOPLEVEL_PATCH_LEVEL': - elif nm == 'PATCH_LEVEL': - pa = atoi(val) -# elif nm == 'TOPLEVEL_MY_PATCH_LEVEL': - elif nm == 'MY_PATCH_LEVEL': - mp = val - return (mj,mi,pa,mp) - -def next_version(tup): - return (tup[0], tup[1], tup[2] + 1, tup[3]); - -def prev_version(tup): - t = tup - if t[3]: - t3name = regsub.sub('[0-9]*$', '', t[3]) - t3level = atoi(regsub.sub('[^0-9]*', '', t[3])) - if t3level and t3level - 1 > 0: - return (tup[0], tup[1], tup[2], t3name + `t3level - 1`); - else: - return (tup[0], tup[1], tup[2], ''); - elif t[2] == 0 : - return (tup[0], tup[1] -1, tup[2], ''); - else: - return (tup[0], tup[1], tup[2] - 1, ''); - -def dirname(v): - return 'lilypond-' + version_tuple_to_str(v) - -def tarball(v): - return dirname(v) + '.tar.gz' - -def released_tarball(v): - return lilydirs.release_dir + tarball(v) - -def tuple_to_list(tup): - l=[] - for x in tup: - l.append[x] - return l - -def version_str_to_tuple(str): - t = split(str, '.') - try: - mypatch = t[3] - except IndexError: - mypatch = '' - - return (atoi(t[0]), atoi(t[1]), atoi(t[2]), mypatch) - -def guess_mudela_version(filename): - f = open (filename) - lines = f.readlines() - f.close() - for l in lines: - if version_re.search(l) <> -1: - return version_re.group(1) - - return '' - -def version_tuple_to_str(tup): - mypatch ='' - if tup[3]: - mypatch = '.' + tup[3] - - return ('%d.%d.%d' % tup[0:3]) + mypatch - -class Lilydirs: - def __init__(self): - try: - self.topdir = os.environ['LILYPOND_SOURCEDIR'] + '/' - - except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - sys.exit(1) - - try: - self.groupdir = os.environ['LILYPOND_GROUPDIR'] + '/' - except KeyError: - self.groupdir = self.topdir + '../' - - self.release_dir = self.groupdir + '/releases/' - self.patch_dir = self.groupdir + '/patches/' - - def version_tuple(self): - f = open (self.topdir + 'VERSION') - v = version_tuple(f) - f.close () - return v - - - -lilydirs = Lilydirs() - -if __name__ == '__main__': - v= lilydirs.version_tuple() - print v, prev_version(v), next_version(v) - mv = guess_mudela_version(lilydirs.topdir + 'init/symbol.ly') - pv=(0,1,1,'jcn4') - print version_tuple_to_str(pv), prev_version(pv), next_version(pv) - print version_tuple_to_str((0,1,1,'')) - print mv, version_str_to_tuple(mv) - - - -def dump_file(f, s): - i = open(f, 'w') - i.write(s) - i.close () - -def gulp_file(f): - i = open(f) - i.seek (0, 2) - len = i.tell () - i.seek (0,0) - return i.read (len) - - -header_regex = regex.compile('\\header[ \t\n]*{\([^}]*\)}') -header_entry_regex = regex.compile('[\n\t ]*\([^\n\t ]+\)[\n\t ]*=[\n \t]*\([^;]+\)[\n \t]*;') - -# -# FIXME breaks on multiple strings. -# -def read_mudela_header (fn): - s = gulp_file(fn) - s = regsub.gsub('%.*$', '', s) - s = regsub.gsub('\n', ' ', s) - - dict = {} - if header_regex.search(s) <> -1: - h = header_regex.group(1) - else: - return dict - - while regex.search('=', h) <> -1: - - if header_entry_regex.search (h) == -1: - - raise 'format error' - - h = regsub.sub(header_entry_regex, '', h) - left = header_entry_regex.group(1) - right = header_entry_regex.group(2) - - right = regsub.gsub('\([^\\]\)\"', '\\1', right) - right = regsub.gsub('^"', '', right) - left = regsub.gsub('\([^\\]\)\"', '', left) - left = regsub.gsub('^"', '', left) - - dict[left] = right - - return dict - diff --git a/bin/ls-latex.py b/bin/ls-latex.py deleted file mode 100644 index ef9977a207..0000000000 --- a/bin/ls-latex.py +++ /dev/null @@ -1,128 +0,0 @@ -#!@PYTHON@ - -import sys -import os - -lilypath ='' -try: - lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' -except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - sys.exit(1) - -lilypath = lilypath + '/bin/' -sys.path.append(lilypath) - -from lilypython import * -import __main__ -import glob - - - -latex_author_re = regex.compile('\\author{\([^}]+\)}') -latex_title_re = regex.compile('\\title{\([^}]+\)}') - -class Latex_head: - def __init__ (self): - self.author = '' - self.title = '' - self.date = '' - self.site = '' - - -def read_latex_header (fn): - s = gulp_file (fn) - i = regex.search( '\\\\begin{document}', s) - if i < 0: - raise 'huh?' - s = s[:i] - s = regsub.gsub('%.*$', '', s) - s = regsub.gsub('\n', ' ', s) - if latex_author_re.search (s) == -1 : - raise 'huh?' - - header = Latex_head() - header.filename= fn; - header.author = latex_author_re.group (1) - if latex_title_re.search (s) == -1: - raise 'huh?' - header.title = latex_title_re.group (1) - header.outfile = regsub.gsub ('\.doc+$', '.ps.gz', fn) - return header - - -bib_author_re = regex.compile('% *AUTHOR *= *\(.*\)$') -bib_title_re = regex.compile('% *TITLE *= *\(.*\)$') - -def bib_header (fn): - s = gulp_file (fn) - if bib_author_re.search (s) == -1 : - raise 'huh?' - - header = Latex_head() - header.filename= fn; - header.author = bib_author_re.group (1) - if bib_title_re.search (s) == -1: - raise 'huh?' - header.title = bib_title_re.group (1) - header.outfile = regsub.gsub ( '\.bib$', '.html' , fn) - return header - - -def read_pod_header (fn): - header = Latex_head () - s = gulp_file (fn) - i = regex.search( '[^\n \t]', s) - s = s[i:] - i = regex.search( '\n\n', s) - s = s[i+2:] - if i < 0: - raise 'huh?' - i = regex.search( '\n\n', s) - header.title = s[:i] - header.filename = fn - header.outfile = regsub.gsub ('\.pod$', '.html', fn) - return header - - -def print_html_head (l,o,h): - pre =o - - l.write ('<li><a href=%s>%s</a>' % (pre + h.outfile, h.title )) - if h.author: - l.write ('<p>by %s</p>' % h.author) - l.write ('</li>\n') - - -import getopt - -(cl_options, files) = getopt.getopt(sys.argv[1:], - 'e:h', ['help', 'prefix=' - , 'title=']) - -tex = '' -output ='' -pre = '' -title = '' -for opt in cl_options: - o = opt[0] - a = opt[1] - if o == '--prefix' or o == '-p': - pre = a - if o == '--title' or o == '-t': - title = a - -l = sys.stdout - -l.write ('<html><title>%s

%s

    \n' % (title, title)) - - -for x in files: - if regex.search ('\\.bib$', x) <> -1: - head = bib_header (x) - elif regex.search ('\\.pod$', x) <> -1: - head = read_pod_header (x) - else: - head = read_latex_header (x) - print_html_head (l, pre, head) -l.write ('
') diff --git a/bin/ltconfig b/bin/ltconfig deleted file mode 100644 index 2347e69439..0000000000 --- a/bin/ltconfig +++ /dev/null @@ -1,1512 +0,0 @@ -#! /bin/sh - -# ltconfig - Create a system-specific libtool. -# Copyright (C) 1996-1998 Free Software Foundation, Inc. -# Gordon Matzigkeit , 1996 -# -# This file 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 2 of the License, or -# (at your option) any later version. -# -# This program 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 this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A lot of this script is taken from autoconf-2.10. - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi - -echo=echo -if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then : -else - # The Solaris and AIX default echo program unquotes backslashes. - # This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # So, we emulate echo with printf '%s\n' - echo="printf %s\\n" - if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then : - else - # Oops. We have no working printf. Try to find a not-so-buggy echo. - echo=echo - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" - for dir in $PATH /usr/ucb; do - if test -f $dir/echo && test "X`$dir/echo '\t'`" = 'X\t'; then - echo="$dir/echo" - break - fi - done - IFS="$save_ifs" - fi -fi - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' - -# The name of this program. -progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` - -# Constants: -PROGRAM=ltconfig -PACKAGE=libtool -VERSION=1.2 -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' -rm="rm -f" - -help="Try \`$progname --help' for more information." - -# Global variables: -can_build_shared=yes -enable_shared=yes -# All known linkers require a `.a' archive for static linking. -enable_static=yes -ltmain= -silent= -srcdir= -ac_config_guess= -ac_config_sub= -host= -nonopt= -verify_host=yes -with_gcc=no -with_gnu_ld=no - -old_AR="$AR" -old_CC="$CC" -old_CFLAGS="$CFLAGS" -old_CPPFLAGS="$CPPFLAGS" -old_LD="$LD" -old_LN_S="$LN_S" -old_NM="$NM" -old_RANLIB="$RANLIB" - -# Parse the command line options. -args= -prev= -for option -do - case "$option" in - -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - eval "$prev=\$option" - prev= - continue - fi - - case "$option" in - --help) cat <&2 - echo "$help" 1>&2 - exit 1 - ;; - - *) - if test -z "$ltmain"; then - ltmain="$option" - elif test -z "$host"; then -# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 -# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then -# echo "$progname: warning \`$option' is not a valid host type" 1>&2 -# fi - host="$option" - else - echo "$progname: too many arguments" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac -done - -if test -z "$ltmain"; then - echo "$progname: you must specify a LTMAIN file" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -if test -f "$ltmain"; then : -else - echo "$progname: \`$ltmain' does not exist" 1>&2 - echo "$help" 1>&2 - exit 1 -fi - -# Quote any args containing shell metacharacters. -ltconfig_args= -for arg -do - case "$arg" in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ltconfig_args="$ltconfig_args '$arg'" ;; - *) ltconfig_args="$ltconfig_args $arg" ;; - esac -done - -# A relevant subset of AC_INIT. - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 5 compiler messages saved in config.log -# 6 checking for... messages and results -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>>./config.log - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - -if test -z "$srcdir"; then - # Assume the source directory is the same one as the path to ltmain.sh. - srcdir=`$echo "$ltmain" | $Xsed -e 's%/[^/]*$%%'` - test "$srcdir" = "$ltmain" && srcdir=. -fi - -trap "$rm conftest*; exit 1" 1 2 15 -if test "$verify_host" = yes; then - # Check for config.guess and config.sub. - ac_aux_dir= - for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/config.guess; then - ac_aux_dir=$ac_dir - break - fi - done - if test -z "$ac_aux_dir"; then - echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 - echo "$help" 1>&2 - exit 1 - fi - ac_config_guess=$ac_aux_dir/config.guess - ac_config_sub=$ac_aux_dir/config.sub - - # Make sure we can run config.sub. - if $ac_config_sub sun4 >/dev/null 2>&1; then : - else - echo "$progname: cannot run $ac_config_sub" 1>&2 - echo "$help" 1>&2 - exit 1 - fi - - echo $ac_n "checking host system type""... $ac_c" 1>&6 - - host_alias=$host - case "$host_alias" in - "") - if host_alias=`$ac_config_guess`; then : - else - echo "$progname: cannot guess host type; you must specify one" 1>&2 - echo "$help" 1>&2 - exit 1 - fi ;; - esac - host=`$ac_config_sub $host_alias` - echo "$ac_t$host" 1>&6 - - # Make sure the host verified. - test -z "$host" && exit 1 - -elif test -z "$host"; then - echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 - echo "$help" 1>&2 - exit 1 -else - host_alias=$host -fi - -# Transform linux* to *-*-linux-gnu*, to support old configure scripts. -case "$host_os" in -linux-gnu*) ;; -linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` -esac - -host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -case "$host_os" in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "${COLLECT_NAMES+set}" != set; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR cru $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -# Set a sane default for `AR'. -test -z "$AR" && AR=ar - -# If RANLIB is not set, then run the test. -if test "${RANLIB+set}" != "set"; then - result=no - - echo $ac_n "checking for ranlib... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/ranlib; then - RANLIB="ranlib" - result="ranlib" - break - fi - done - IFS="$save_ifs" - - echo "$ac_t$result" 1>&6 -fi - -if test -n "$RANLIB"; then - old_archive_cmds="$old_archive_cmds;\$RANLIB \$oldlib" - old_postinstall_cmds="\$RANLIB \$oldlib;$old_postinstall_cmds" -fi - -# Check to see if we are using GCC. -if test "$with_gcc" != yes || test -z "$CC"; then - # If CC is not set, then try to find GCC or a usable CC. - if test -z "$CC"; then - echo $ac_n "checking for gcc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" - for dir in $PATH; do - IFS="$save_ifs" - test -z "$dir" && dir=. - if test -f $dir/gcc; then - CC="gcc" - break - fi - done - IFS="$save_ifs" - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - fi - - # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". - if test -z "$CC"; then - echo $ac_n "checking for cc... $ac_c" 1>&6 - IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" - cc_rejected=no - for dir in $PATH; do - test -z "$dir" && dir=. - if test -f $dir/cc; then - if test "$dir/cc" = "/usr/ucb/cc"; then - cc_rejected=yes - continue - fi - CC="cc" - break - fi - done - IFS="$save_ifs" - if test $cc_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $CC - shift - if test $# -gt 0; then - # We chose a different compiler from the bogus one. - # However, it has the same name, so the bogon will be chosen - # first if we set CC to just the name; use the full file name. - shift - set dummy "$dir/cc" "$@" - shift - CC="$@" - fi - fi - - if test -n "$CC"; then - echo "$ac_t$CC" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$CC"; then - echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 - exit 1 - fi - fi - - # Now see if the compiler is really GCC. - with_gcc=no - echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 - echo "$progname:424: checking whether we are using GNU C" >&5 - - $rm conftest.c - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - with_gcc=yes - fi - $rm conftest.c - echo "$ac_t$with_gcc" 1>&6 -fi - -# Allow CC to be a program name with arguments. -set dummy $CC -compiler="$2" - -echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 -pic_flag= -special_shlib_compile_flags= -wl= -link_static_flag= -no_builtin_flag= - -if test "$with_gcc" = yes; then - wl='-Wl,' - link_static_flag='-static' - no_builtin_flag=' -fno-builtin' - - case "$host_os" in - aix3* | aix4* | irix5* | irix6* | osf3* | osf4*) - # PIC is the default for these OSes. - ;; - os2*) - # We can build DLLs from non-PIC. - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - pic_flag='-m68020 -resident32 -malways-restore-a4' - ;; - *) - pic_flag='-fPIC' - ;; - esac -else - # PORTME Check for PIC flags for the system compiler. - case "$host_os" in - aix3* | aix4*) - # All AIX code is PIC. - link_static_flag='-bnso -bI:/lib/syscalls.exp' - ;; - - hpux9* | hpux10*) - # Is there a better link_static_flag that works with the bundled CC? - wl='-Wl,' - link_static_flag="${wl}-a ${wl}archive" - pic_flag='+Z' - ;; - - irix5* | irix6*) - wl='-Wl,' - link_static_flag='-non_shared' - # PIC (with -KPIC) is the default. - ;; - - os2*) - # We can build DLLs from non-PIC. - ;; - - osf3* | osf4*) - # All OSF/1 code is PIC. - wl='-Wl,' - link_static_flag='-non_shared' - ;; - - sco3.2v5*) - pic_flag='-Kpic' - link_static_flag='-dn' - special_shlib_compile_flags='-belf' - ;; - - solaris2*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - sunos4*) - pic_flag='-PIC' - link_static_flag='-Bstatic' - wl='-Qoption ld ' - ;; - - sysv4.2uw2*) - pic_flag='-KPIC' - link_static_flag='-Bstatic' - wl='-Wl,' - ;; - - uts4*) - pic_flag='-pic' - link_static_flag='-Bstatic' - ;; - - *) - can_build_shared=no - ;; - esac -fi - -if test -n "$pic_flag"; then - echo "$ac_t$pic_flag" 1>&6 - - # Check to make sure the pic_flag actually works. - echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 - $rm conftest* - echo > conftest.c - save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $pic_flag -DPIC" - echo "$progname:547: checking if $compiler PIC flag $pic_flag works" >&5 - if { (eval echo $progname:548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then - # Append any warnings to the config.log. - cat conftest.err 1>&5 - - # On HP-UX, both CC and GCC only warn that PIC is supported... then they - # create non-PIC objects. So, if there were any warnings, we assume that - # PIC is not supported. - if test -s conftest.err; then - echo "$ac_t"no 1>&6 - can_build_shared=no - pic_flag= - else - echo "$ac_t"yes 1>&6 - pic_flag=" $pic_flag" - fi - else - # Append any errors to the config.log. - cat conftest.err 1>&5 - can_build_shared=no - pic_flag= - echo "$ac_t"no 1>&6 - fi - CFLAGS="$save_CFLAGS" - $rm conftest* -else - echo "$ac_t"none 1>&6 -fi - -# Check for any special shared library compilation flags. -if test -n "$special_shlib_compile_flags"; then - echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 - if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : - else - echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 - can_build_shared=no - fi -fi - -echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 -$rm conftest* -echo 'main(){return(0);}' > conftest.c -save_LDFLAGS="$LDFLAGS" -LDFLAGS="$LDFLAGS $link_static_flag" -echo "$progname:591: checking if $compiler static flag $link_static_flag works" >&5 -if { (eval echo $progname:592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - echo "$ac_t$link_static_flag" 1>&6 -else - echo "$ac_t"none 1>&6 - link_static_flag= -fi -LDFLAGS="$save_LDFLAGS" -$rm conftest* - -if test -z "$LN_S"; then - # Check to see if we can use ln -s, or we need hard links. - echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 - $rm conftestdata - if ln -s X conftestdata 2>/dev/null; then - $rm conftestdata - LN_S="ln -s" - else - LN_S=ln - fi - if test "$LN_S" = "ln -s"; then - echo "$ac_t"yes 1>&6 - else - echo "$ac_t"no 1>&6 - fi -fi - -# Make sure LD is an absolute path. -if test -z "$LD"; then - ac_prog=ld - if test "$with_gcc" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 - echo "$progname:624: checking for ld used by GCC" >&5 - ac_prog=`($CC -print-prog-name=ld) 2>&5` - case "$ac_prog" in - # Accept absolute paths. - /* | [A-Za-z]:\\*) - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we are not using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac - elif test "$with_gnu_ld" = yes; then - echo $ac_n "checking for GNU ld... $ac_c" 1>&6 - echo "$progname:642: checking for GNU ld" >&5 - else - echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 - echo "$progname:645: checking for non-GNU ld" >&5 - fi - - if test -z "$LD"; then - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog"; then - LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then - test "$with_gnu_ld" != no && break - else - test "$with_gnu_ld" != yes && break - fi - fi - done - IFS="$ac_save_ifs" - fi - - if test -n "$LD"; then - echo "$ac_t$LD" 1>&6 - else - echo "$ac_t"no 1>&6 - fi - - if test -z "$LD"; then - echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 - exit 1 - fi -fi - -# Check to see if it really is or is not GNU ld. -echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 -# I'd rather use --version here, but apparently some GNU ld's only accept -v. -if $LD -v 2>&1 &5; then - with_gnu_ld=yes -else - with_gnu_ld=no -fi -echo "$ac_t$with_gnu_ld" 1>&6 - -# See if the linker supports building shared libraries. -echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 - -allow_undefined_flag= -no_undefined_flag= -archive_cmds= -old_archive_from_new_cmds= -export_dynamic_flag_spec= -hardcode_libdir_flag_spec= -hardcode_libdir_separator= -hardcode_direct=no -hardcode_minus_L=no -hardcode_shlibpath_var=unsupported -runpath_var= - -case "$host_os" in -amigaos* | sunos4*) - # On these operating systems, we should treat GNU ld like the system ld. - gnu_ld_acts_native=yes - ;; -*) - gnu_ld_acts_native=no - ;; -esac - -ld_shlibs=yes -if test "$with_gnu_ld" = yes && test "$gnu_ld_acts_native" != yes; then - - # See if GNU ld supports shared libraries. - if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs' - runpath_var=LD_RUN_PATH - ld_shlibs=yes - else - ld_shlibs=no - fi - - if test "$ld_shlibs" = yes; then - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - fi -else - # PORTME fill in a description of your system's linker (not GNU ld) - case "$host_os" in - aix3*) - allow_undefined_flag=unsupported - archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE;$AR cru $lib $objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$with_gcc" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix4*) - allow_undefined_flag=unsupported - archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$CC -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry;$AR cru $lib $objdir/$soname' - hardcode_direct=yes - hardcode_minus_L=yes - ;; - - amigaos*) - archive_cmds='$rm $objdir/a2ixlibrary.data;$echo "#define NAME $libname" > $objdir/a2ixlibrary.data;$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data;$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data;$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data;$AR cru $lib$libobjs;$RANLIB $lib;(cd $objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib$libobjs /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib$libobjs' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3, at last, uses gcc -shared to do shared libraries. - freebsd3*) - archive_cmds='$CC -shared -o $lib$libobjs' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - archive_cmds='$rm $objdir/$soname;$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs;mv $objdir/$soname $lib' - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs' - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - irix5* | irix6*) - archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - ;; - - netbsd*) - # Tested with NetBSD 1.2 ld - archive_cmds='$LD -Bshareable -o $lib$libobjs' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - openbsd*) - archive_cmds='$LD -Bshareable -o $lib$libobjs' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def;$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def;$echo DATA >> $objdir/$libname.def;$echo " SINGLE NONSHARED" >> $objdir/$libname.def;$echo EXPORTS >> $objdir/$libname.def;emxexp$libobjs >> $objdir/$libname.def;$CC -Zdll -Zcrtdll -o $lib$libobjs $objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' - ;; - - osf3* | osf4*) - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - sco3.2v5*) - archive_cmds='$LD -G -o $lib$libobjs' - hardcode_direct=yes - ;; - - solaris2*) - no_undefined_flag=' -z text' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib$libobjs' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - - # Solaris 2 before 2.5 hardcodes -L paths. - case "$host_os" in - solaris2.[0-4]*) - hardcode_minus_L=yes - ;; - esac - ;; - - sunos4*) - if test "$with_gcc" = yes; then - archive_cmds='$CC -shared -o $lib$libobjs' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs' - fi - - if test "$with_gnu_ld" = yes; then - export_dynamic_flag_spec='${wl}-export-dynamic' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib$libobjs' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=no - hardcode_minus_L=no - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - can_build_shared=no - ;; - esac -fi -echo "$ac_t$ld_shlibs" 1>&6 - -if test -z "$NM"; then - echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 - case "$NM" in - /* | [A-Za-z]:\\*) ;; # Let the user override the test with a path. - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/nm; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -B" - elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then - NM="$ac_dir/nm -p" - else - NM="$ac_dir/nm" - fi - break - fi - done - IFS="$ac_save_ifs" - test -z "$NM" && NM=nm - ;; - esac - echo "$ac_t$NM" 1>&6 -fi - -# Check for command to grab the raw symbol name followed by C symbol from nm. -echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRSTU]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \1' - -# Define system-specific variables. -case "$host_os" in -aix*) - symcode='[BCDTU]' - ;; -irix*) - # Cannot use undefined symbols on IRIX because inlined functions mess us up. - symcode='[BCDEGRST]' - ;; -solaris2*) - symcode='[BDTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then - symcode='[ABCDGISTUW]' -fi - -# Write the raw and C identifiers. -global_symbol_pipe="sed -n -e 's/^.* $symcode $sympat$/$symxfrm/p'" - -# Check to see that the pipe works correctly. -pipe_works=no -$rm conftest* -cat > conftest.c <&5 -if { (eval echo $progname:972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then - # Now try to grab the symbols. - nlist=conftest.nm - if { echo "$progname:975: eval \"$NM conftest.o | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.o | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then - - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - wcout=`wc "$nlist" 2>/dev/null` - count=`$echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` - (test "$count" -ge 0) 2>/dev/null || count=-1 - else - rm -f "$nlist"T - count=-1 - fi - - # Make sure that we snagged all the symbols we need. - if egrep ' nm_test_var$' "$nlist" >/dev/null; then - if egrep ' nm_test_func$' "$nlist" >/dev/null; then - cat < conftest.c -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c - - cat <> conftest.c -#if defined (__STDC__) && __STDC__ -# define __ptr_t void * -#else -# define __ptr_t char * -#endif - -/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ -int dld_preloaded_symbol_count = $count; - -/* The mapping between symbol names and symbols. */ -struct { - char *name; - __ptr_t address; -} -dld_preloaded_symbols[] = -{ -EOF - sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c - cat <<\EOF >> conftest.c - {0, (__ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.o conftestm.o - save_LIBS="$LIBS" - save_CFLAGS="$CFLAGS" - LIBS='conftestm.o' - CFLAGS="$CFLAGS$no_builtin_flag" - if { (eval echo $progname:1033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - pipe_works=yes - else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 - fi - LIBS="$save_LIBS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $global_symbol_pipe" >&5 - fi -else - echo "$progname: failed program was:" >&5 - cat conftest.c >&5 -fi -$rm conftest* - -# Do not use the global_symbol_pipe unless it works. -echo "$ac_t$pipe_works" 1>&6 -test "$pipe_works" = yes || global_symbol_pipe= - -# Check hardcoding attributes. -echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var"; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct" != no && \ - test "$hardcode_minus_L" != no && \ - test "$hardcode_shlibpath_var" != no; then - - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -elif test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ - test "$hardcode_shlibpath_var" != yes; then - # We cannot hardcode anything. - hardcode_action=unsupported -else - # We can only hardcode existing directories. - hardcode_action=relink -fi -echo "$ac_t$hardcode_action" 1>&6 -test "$hardcode_action" = unsupported && can_build_shared=no - - -reload_flag= -reload_cmds='$LD$reload_flag -o $output$reload_objs' -echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 -# PORTME Some linker may need a different reload flag. -reload_flag='-r' -echo "$ac_t$reload_flag" -test -n "$reload_flag" && reload_flag=" $reload_flag" - -# PORTME Fill in your ld.so characteristics -library_names_spec= -libname_spec='lib$name' -soname_spec= -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -version_type=none -dynamic_linker="$host_os ld.so" - -echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 -case "$host_os" in -aix3* | aix4*) - version_type=linux - library_names_spec='${libname}${release}.so.$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}.so.$major' - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' - ;; - -freebsd2* | freebsd3*) - version_type=sunos - library_names_spec='${libname}${release}.so.$versuffix $libname.so' - finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -gnu*) - version_type=sunos - library_names_spec='${libname}${release}.so.$versuffix' - shlibpath_var=LD_LIBRARY_PATH - ;; - -hpux9* | hpux10*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - dynamic_linker="$host_os dld.sl" - version_type=sunos - shlibpath_var=SHLIB_PATH - library_names_spec='${libname}${release}.sl.$versuffix ${libname}${release}.sl.$major $libname.sl' - soname_spec='${libname}${release}.sl.$major' - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6*) - version_type=osf - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so.$versuffix $libname.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux-gnu*) - version_type=linux - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' - soname_spec='${libname}${release}.so.$major' - finish_cmds='PATH="$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - - if test -f /lib/ld.so.1; then - dynamic_linker='GNU ld.so' - else - # Only the GNU ld.so supports shared libraries on MkLinux. - case "$host_cpu" in - powerpc*) dynamic_linker=no ;; - *) dynamic_linker='Linux ld.so' ;; - esac - fi - ;; - -netbsd* | openbsd*) - version_type=sunos - library_names_spec='${libname}${release}.so.$versuffix' - finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -os2*) - libname_spec='$name' - library_names_spec='$libname.dll $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4*) - version_type=osf - soname_spec='${libname}${release}.so' - library_names_spec='${libname}${release}.so.$versuffix $libname.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}.so.$major' - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris2*) - version_type=linux - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' - soname_spec='${libname}${release}.so.$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}.so.$versuffix' - finish_cmds='PATH="$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - ;; - -sysv4.2uw2*) - version_type=linux - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' - soname_spec='${libname}${release}.so.$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' - soname_spec='${libname}${release}.so.$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$ac_t$dynamic_linker" -test "$dynamic_linker" = no && can_build_shared=no - -# Report the final consequences. -echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 - -echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds;\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; -esac - -echo "$ac_t$enable_shared" 1>&6 - -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes - -echo "checking whether to build static libraries... $enable_static" 1>&6 - -echo $ac_n "checking for objdir... $ac_c" 1>&6 -rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - objdir=_libs -fi -rmdir .libs 2>/dev/null -echo "$ac_t$objdir" 1>&6 - -# Copy echo and quote the copy, instead of the original, because it is -# used later. -ltecho="$echo" - -# Now quote all the things that may contain metacharacters. -for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ - old_LN_S AR CC LD LN_S NM reload_flag reload_cmds wl pic_flag \ - link_static_flag no_builtin_flag export_dynamic_flag_spec \ - libname_spec library_names_spec soname_spec RANLIB \ - old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ - old_postuninstall_cmds archive_cmds postinstall_cmds postuninstall_cmds \ - allow_undefined_flag no_undefined_flag \ - finish_cmds finish_eval global_symbol_pipe \ - hardcode_libdir_flag_spec hardcode_libdir_separator; do - - case "$var" in - reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | archive_cmds | \ - postinstall_cmds | postuninstall_cmds | finish_cmds) - # Double-quote double-evaled strings. - eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`" - ;; - *) - eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`" - ;; - esac -done - -ofile=libtool -trap "$rm $ofile; exit 1" 1 2 15 -echo creating $ofile -$rm $ofile -cat < $ofile -#! /bin/sh - -# libtool - Provide generalized library-building support services. -# Generated automatically by $PROGRAM - GNU $PACKAGE $VERSION -# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. -# -# Copyright (C) 1996-1998 Free Software Foundation, Inc. -# Gordon Matzigkeit , 1996 -# -# This program 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 2 of the License, or -# (at your option) any later version. -# -# This program 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 this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This program was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# CC="$old_CC" CFLAGS="$old_CFLAGS" CPPFLAGS="$old_CPPFLAGS" \\ -# LD="$old_LD" NM="$old_NM" RANLIB="$old_RANLIB" LN_S="$old_LN_S" \\ -# $0$ltconfig_args -# -# Compiler and other test output produced by $progname, useful for -# debugging $progname, is in ./config.log if it exists. - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="sed -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi - -# An echo program that does not interpret backslashes. -echo="$ltecho" - -# The version of $progname that generated this script. -LTCONFIG_VERSION="$VERSION" - -# Shell to use when invoking shell scripts. -SHELL=${CONFIG_SHELL-/bin/sh} - -# Whether or not to build libtool libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build old-style libraries. -build_old_libs=$enable_static - -# The host system. -host_alias="$host_alias" -host="$host" - -# The archiver. -AR="$AR" - -# The default C compiler. -CC="$CC" - -# The linker used to build libraries. -LD="$LD" - -# Whether we need hard or soft links. -LN_S="$LN_S" - -# A BSD-compatible nm program. -NM="$NM" - -# The name of the directory that contains temporary libtool files. -objdir="$objdir" - -# How to create reloadable object files. -reload_flag="$reload_flag" -reload_cmds="$reload_cmds" - -# How to pass a linker flag through the compiler. -wl="$wl" - -# Additional compiler flags for building library objects. -pic_flag="$pic_flag" - -# Compiler flag to prevent dynamic linking. -link_static_flag="$link_static_flag" - -# Compiler flag to turn off builtin functions. -no_builtin_flag="$no_builtin_flag" - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec="$export_dynamic_flag_spec" - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec="$libname_spec" - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec="$library_names_spec" - -# The coded name of the library, if different from the real name. -soname_spec="$soname_spec" - -# Commands used to build and install an old-style archive. -RANLIB="$RANLIB" -old_archive_cmds="$old_archive_cmds" -old_postinstall_cmds="$old_postinstall_cmds" -old_postuninstall_cmds="$old_postuninstall_cmds" - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds="$old_archive_from_new_cmds" - -# Commands used to build and install a shared archive. -archive_cmds="$archive_cmds" -postinstall_cmds="$postinstall_cmds" -postuninstall_cmds="$postuninstall_cmds" - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag="$allow_undefined_flag" - -# Flag that forces no undefined symbols. -no_undefined_flag="$no_undefined_flag" - -# Commands used to finish a libtool library installation in a directory. -finish_cmds="$finish_cmds" - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval="$finish_eval" - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe="$global_symbol_pipe" - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec="$hardcode_libdir_flag_spec" - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator="$hardcode_libdir_separator" - -# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -EOF - -case "$host_os" in -aix3*) - cat <<\EOF >> $ofile -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "${COLLECT_NAMES+set}" != set; then - COLLECT_NAMES= - export COLLECT_NAMES -fi - -EOF - ;; -esac - -# Append the ltmain.sh script. -cat "$ltmain" >> $ofile || (rm -f $ofile; exit 1) - -chmod +x $ofile -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/bin/ltmain.sh b/bin/ltmain.sh deleted file mode 100644 index e9350b3fab..0000000000 --- a/bin/ltmain.sh +++ /dev/null @@ -1,2453 +0,0 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun ltconfig. -# -# Copyright (C) 1996-1998 Free Software Foundation, Inc. -# Gordon Matzigkeit , 1996 -# -# This program 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 2 of the License, or -# (at your option) any later version. -# -# This program 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 this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# The name of this program. -progname=`$echo "$0" | sed 's%^.*/%%'` -modename="$progname" - -# Constants. -PROGRAM=ltmain.sh -PACKAGE=libtool -VERSION=1.2 - -default_mode= -help="Try \`$progname --help' for more information." -magic="%%%MAGIC variable%%%" -mkdir="mkdir" -mv="mv -f" -rm="rm -f" - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LANG+set}" = set; then LANG=C; export LANG; fi - -if test "$LTCONFIG_VERSION" != "$VERSION"; then - echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - echo "$modename: not configured to build any kind of library" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= - -# Parse our command line options once, thoroughly. -while test $# -gt 0 -do - arg="$1" - shift - - case "$arg" in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case "$prev" in - execute_dlfiles) - eval "$prev=\"\$$prev \$arg\"" - ;; - *) - eval "$prev=\$arg" - ;; - esac - - prev= - prevopt= - continue - fi - - # Have we seen a non-optional argument yet? - case "$arg" in - --help) - show_help=yes - ;; - - --version) - echo "$PROGRAM (GNU $PACKAGE) $VERSION" - exit 0 - ;; - - --dry-run | -n) - run=: - ;; - - --features) - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - exit 0 - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --quiet | --silent) - show=: - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 -fi - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - case "$nonopt" in - *cc | *++ | gcc* | *-gcc*) - mode=link - for arg - do - case "$arg" in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case "$mode" in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - lastarg= - srcfile="$nonopt" - suppress_output= - - for arg - do - # Accept any command-line options. - case "$arg" in - -o) - $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - esac - - # Accept the current argument as the source file. - lastarg="$srcfile" - srcfile="$arg" - - # Aesthetically quote the previous argument. - - # Backslashify any backslashes, double quotes, and dollar signs. - # These are the only characters that are still specially - # interpreted inside of double-quoted scrings. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly in scan - # sets, so we specify it separately. - case "$lastarg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - lastarg="\"$lastarg\"" - ;; - esac - - # Add the previous argument to base_compile. - if test -z "$base_compile"; then - base_compile="$lastarg" - else - base_compile="$base_compile $lastarg" - fi - done - - # Get the name of the library object. - libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - - # Recognize several different file suffixes. - xform='[cCFSfms]' - case "$libobj" in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - - case "$libobj" in - *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;; - *) - $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2 - exit 1 - ;; - esac - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - $run $rm $obj $libobj - trap "$run $rm $obj $libobj; exit 1" 1 2 15 - else - $run $rm $libobj - trap "$run $rm $libobj; exit 1" 1 2 15 - fi - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - # All platforms use -DPIC, to notify preprocessed assembler code. - $show "$base_compile$pic_flag -DPIC $srcfile" - if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then : - else - test -n "$obj" && $run $rm $obj - exit 1 - fi - - # If we have no pic_flag, then copy the object into place and finish. - if test -z "$pic_flag"; then - $show "$LN_S $obj $libobj" - $run $LN_S $obj $libobj - exit $? - fi - - # Just move the object, then go on to compile the next one - $show "$mv $obj $libobj" - $run $mv $obj $libobj || exit 1 - - # Allow error messages only from the first compilation. - suppress_output=' >/dev/null 2>&1' - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - # Suppress compiler output if we already did a PIC compilation. - $show "$base_compile $srcfile$suppress_output" - if $run eval "$base_compile \$srcfile$suppress_output"; then : - else - $run $rm $obj $libobj - exit 1 - fi - fi - - # Create an invalid libtool object if no PIC, so that we do not - # accidentally link it into a program. - if test "$build_libtool_libs" != yes; then - $show "echo timestamp > $libobj" - $run eval "echo timestamp > \$libobj" || exit $? - fi - - exit 0 - ;; - - # libtool link mode - link) - modename="$modename: link" - CC="$nonopt" - allow_undefined=yes - compile_command="$CC" - finalize_command="$CC" - - compile_shlibpath= - finalize_shlibpath= - deplibs= - dlfiles= - dlprefiles= - export_dynamic=no - hardcode_libdirs= - libobjs= - link_against_libtool_libs= - ltlibs= - objs= - prev= - prevarg= - release= - rpath= - perm_rpath= - temp_rpath= - vinfo= - - # We need to know -static, to get the right output filenames. - for arg - do - case "$arg" in - -all-static | -static) - if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 - fi - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - for arg - do - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case "$prev" in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac - - case "$prev" in - dlfiles|dlprefiles) - case "$arg" in - *.la | *.lo) ;; # We handle these cases below. - *) - dlprefiles="$dlprefiles $arg" - test "$prev" = dlfiles && dlfiles="$dlfiles $arg" - prev= - ;; - esac - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath) - rpath="$rpath $arg" - prev= - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi - - prevarg="$arg" - - case "$arg" in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - if test "$export_dynamic" != yes; then - export_dynamic=yes - if test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - else - arg= - fi - - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - fi - ;; - - -L*) - dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'` - case "$dir" in - /* | [A-Za-z]:\\*) - # Add the corresponding hardcode_libdir_flag, if it is not identical. - ;; - *) - $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2 - exit 1 - ;; - esac - deplibs="$deplibs $arg" - ;; - - -l*) deplibs="$deplibs $arg" ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -o) prev=output ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -static) - # If we have no pic_flag, then this is the same as -all-static. - if test -z "$pic_flag" && test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - ;; - - *.o | *.a) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A library object. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test "$build_libtool_libs" = yes; then - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'` - prev= - fi - libobjs="$libobjs $arg" - ;; - - *.la) - # A libtool-controlled library. - - dlname= - libdir= - library_names= - old_library= - - # Check to see that this really is a libtool archive. - if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : - else - $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 - exit 1 - fi - - # If there is no directory component, then add one. - case "$arg" in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$libdir"; then - $echo "$modename: \`$arg' contains no -rpath information" 1>&2 - exit 1 - fi - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 - exit 1 - fi - - # Find the relevant object directory and library name. - name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` - dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$arg"; then - dir="$objdir" - else - dir="$dir/$objdir" - fi - - # This library was specified with -dlopen. - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - if test -z "$dlname"; then - # If there is no dlname, we need to preload. - prev=dlprefiles - else - # We should not create a dependency on this library, but we - # may need any libraries it requires. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - prev= - continue - fi - fi - - # The library was specified with -dlpreopen. - if test "$prev" = dlprefiles; then - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - dlprefiles="$dlprefiles $dir/$old_library" - else - dlprefiles="$dlprefiles $dir/$linklib" - fi - prev= - fi - - if test "$build_libtool_libs" = yes && test -n "$library_names"; then - link_against_libtool_libs="$link_against_libtool_libs $arg" - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi - - # This is the magic to use -rpath. - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - # Put the magic libdir with the hardcode flag. - hardcode_libdirs="$libdir" - libdir="@HARDCODE_LIBDIRS@" - else - # Just accumulate the unique libdirs. - case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - libdir= - fi - fi - - if test -n "$libdir"; then - eval flag=\"$hardcode_libdir_flag_spec\" - - compile_command="$compile_command $flag" - finalize_command="$finalize_command $flag" - fi - elif test -n "$runpath_var"; then - # Do the same for the permanent run path. - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - - - case "$hardcode_action" in - immediate) - if test "$hardcode_direct" = no; then - compile_command="$compile_command $dir/$linklib" - elif test "$hardcode_minus_L" = no; then - compile_command="$compile_command -L$dir -l$name" - elif test "$hardcode_shlibpath_var" = no; then - compile_shlibpath="$compile_shlibpath$dir:" - compile_command="$compile_command -l$name" - fi - ;; - - relink) - # We need an absolute path. - case "$dir" in - /* | [A-Za-z]:\\*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - exit 1 - fi - dir="$absdir" - ;; - esac - - if test "$hardcode_direct" = yes; then - compile_command="$compile_command $dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - compile_command="$compile_command -L$dir -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - compile_shlibpath="$compile_shlibpath$dir:" - compile_command="$compile_command -l$name" - fi - ;; - - *) - $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2 - exit 1 - ;; - esac - - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - finalize_command="$finalize_command $libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - finalize_command="$finalize_command -L$libdir -l$name" - elif test "$hardcode_shlibpath_var" = yes; then - finalize_shlibpath="$finalize_shlibpath$libdir:" - finalize_command="$finalize_command -l$name" - else - # We cannot seem to hardcode it, guess we'll fake it. - finalize_command="$finalize_command -L$libdir -l$name" - fi - else - # Transform directly to old archives if we don't build new libraries. - if test -n "$pic_flag" && test -z "$old_library"; then - $echo "$modename: cannot find static library for \`$arg'" 1>&2 - exit 1 - fi - - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_command="$compile_command $dir/$linklib" - finalize_command="$finalize_command $dir/$linklib" - else - compile_command="$compile_command -L$dir -l$name" - finalize_command="$finalize_command -L$dir -l$name" - fi - fi - - # Add in any libraries that this one depends upon. - compile_command="$compile_command$dependency_libs" - finalize_command="$finalize_command$dependency_libs" - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - ;; - esac - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -n "$vinfo" && test -n "$release"; then - $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - oldlib= - oldobjs= - case "$output" in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - - */* | *\\*) - $echo "$modename: output file \`$output' must have no directory components" 1>&2 - exit 1 - ;; - - *.a) - # Now set the variables for building old libraries. - build_libtool_libs=no - build_old_libs=yes - oldlib="$output" - $show "$rm $oldlib" - $run $rm $oldlib - ;; - - *.la) - # Make sure we only generate libraries of the form `libNAME.la'. - case "$output" in - lib*) ;; - *) - $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - - name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval libname=\"$libname_spec\" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - current=0 - revision=0 - age=0 - - if test -n "$objs"; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 - exit 1 - fi - - # How the heck are we supposed to write a wrapper for a shared library? - if test -n "$link_against_libtool_libs"; then - $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2 - exit 1 - fi - - if test -n "$dlfiles$dlprefiles"; then - $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2 - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test -z "$rpath"; then - $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - set dummy $rpath - if test $# -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - - # Parse the version information argument. - IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' - set dummy $vinfo - IFS="$save_ifs" - - if test -n "$5"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - test -n "$2" && current="$2" - test -n "$3" && revision="$3" - test -n "$4" && age="$4" - - # Check that each of the things are valid numbers. - case "$current" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case "$revision" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - case "$age" in - 0 | [1-9] | [1-9][0-9]*) ;; - *) - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - ;; - esac - - if test $age -gt $current; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit 1 - fi - - # Calculate the version variables. - version_vars="version_type current age revision" - case "$version_type" in - none) ;; - - linux) - version_vars="$version_vars major versuffix" - major=`expr $current - $age` - versuffix="$major.$age.$revision" - ;; - - osf) - version_vars="$version_vars versuffix verstring" - major=`expr $current - $age` - versuffix="$current.$age.$revision" - verstring="$versuffix" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test $loop != 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - sunos) - version_vars="$version_vars major versuffix" - major="$current" - versuffix="$current.$revision" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit 1 - ;; - esac - - # Create the output directory, or remove our outputs if we need to. - if test -d $objdir; then - $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*" - $run $rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.* - else - $show "$mkdir $objdir" - $run $mkdir $objdir - status=$? - if test $status -eq 0 || test -d $objdir; then : - else - exit $status - fi - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - # Add libc to deplibs on all systems. - dependency_libs="$deplibs" - deplibs="$deplibs -lc" - - if test "$build_libtool_libs" = yes; then - # Get the real and link names of the library. - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - lib="$objdir/$realname" - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are PIC. - test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'` - - # Do each of the archive commands. - eval cmds=\"$archive_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Create links to the real library. - for linkname in $linknames; do - $show "(cd $objdir && $LN_S $realname $linkname)" - $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $? - done - - # If -export-dynamic was specified, set the dlname. - if test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - - # Now set the variables for building old libraries. - oldlib="$objdir/$libname.a" - ;; - - *.lo | *.o) - if test -n "$link_against_libtool_libs"; then - $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2 - exit 1 - fi - - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles"; then - $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2 - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 - fi - - case "$output" in - *.lo) - if test -n "$objs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit 1 - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Create the old-style object. - reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` - - output="$obj" - eval cmds=\"$reload_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - test -z "$libobj" && exit 0 - - if test "$build_libtool_libs" != yes; then - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - $show "echo timestamp > $libobj" - $run eval "echo timestamp > $libobj" || exit $? - exit 0 - fi - - if test -n "$pic_flag"; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs" - output="$libobj" - eval cmds=\"$reload_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - else - # Just create a symlink. - $show "$LN_S $obj $libobj" - $run $LN_S $obj $libobj || exit 1 - fi - - exit 0 - ;; - - *) - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 - fi - - if test -n "$rpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - # Put the magic libdir with the hardcode flag. - hardcode_libdirs="$libdir" - libdir="@HARDCODE_LIBDIRS@" - else - # Just accumulate the unique libdirs. - case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - libdir= - fi - fi - - if test -n "$libdir"; then - eval flag=\"$hardcode_libdir_flag_spec\" - - compile_command="$compile_command $flag" - finalize_command="$finalize_command $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - fi - - # Substitute the hardcoded libdirs into the compile commands. - if test -n "$hardcode_libdir_separator"; then - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` - fi - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` - finalize_command=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` - fi - - if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${output}S.c" - else - dlsyms= - fi - - if test -n "$dlsyms"; then - # Add our own program objects to the preloaded list. - dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` - - # Discover the nlist of each of the dlfiles. - nlist="$objdir/${output}.nm" - - if test -d $objdir; then - $show "$rm $nlist ${nlist}T" - $run $rm "$nlist" "${nlist}T" - else - $show "$mkdir $objdir" - $run $mkdir $objdir - status=$? - if test $status -eq 0 || test -d $objdir; then : - else - exit $status - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - # Parse the name list into a source file. - $show "creating $objdir/$dlsyms" - if test -z "$run"; then - # Make sure we at least have an empty file. - test -f "$nlist" || : > "$nlist" - - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - wcout=`wc "$nlist" 2>/dev/null` - count=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` - (test "$count" -ge 0) 2>/dev/null || count=-1 - else - $rm "$nlist"T - count=-1 - fi - - case "$dlsyms" in - "") ;; - *.c) - $echo > "$objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define dld_preloaded_symbol_count some_other_symbol -#define dld_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test -f "$nlist"; then - sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms" - else - echo '/* NONE */' >> "$objdir/$dlsyms" - fi - - $echo >> "$objdir/$dlsyms" "\ - -#undef dld_preloaded_symbol_count -#undef dld_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define __ptr_t void * -#else -# define __ptr_t char * -#endif - -/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ -int dld_preloaded_symbol_count = $count; - -/* The mapping between symbol names and symbols. */ -struct { - char *name; - __ptr_t address; -} -dld_preloaded_symbols[] = -{\ -" - - if test -f "$nlist"; then - sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms" - fi - - $echo >> "$objdir/$dlsyms" "\ - {0, (__ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif\ -" - ;; - - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit 1 - ;; - esac - fi - - # Now compile the dynamic symbol file. - $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")" - $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $? - - # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` - elif test "$export_dynamic" != yes; then - test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2 - else - # We keep going just in case the user didn't refer to - # dld_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - - # We have no uninstalled library dependencies, so finalize right now. - $show "$compile_command" - $run eval "$compile_command" - exit $? - fi - - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'` - finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'` - - # Create the binary in the object directory, then wrap it. - if test -d $objdir; then : - else - $show "$mkdir $objdir" - $run $mkdir $objdir - status=$? - if test $status -eq 0 || test -d $objdir; then : - else - exit $status - fi - fi - - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case "$dir" in - /* | [A-Za-z]:\\*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - - # Delete the old output file. - $run $rm $output - - if test -n "$compile_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command" - finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command" - fi - - case "$hardcode_action" in - relink) - # AGH! Flame the AIX and HP-UX people for me, will ya? - $echo "$modename: warning: using a buggy system linker" 1>&2 - $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2 - ;; - esac - - $show "$compile_command" - $run eval "$compile_command" || exit $? - - # Now create the wrapper script. - $show "creating $output" - - # Quote the finalize command for shipping. - finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"` - - # Quote $echo for shipping. - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - - # Only actually do things if our run command is non-null. - if test -z "$run"; then - $rm $output - trap "$rm $output; exit 1" 1 2 15 - - $echo > $output "\ -#! /bin/sh - -# $output - temporary wrapper script for $objdir/$output -# Generated by ltmain.sh - GNU $PACKAGE $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of \``pwd`'. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -sed_quote_subst='$sed_quote_subst' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - link_against_libtool_libs='$link_against_libtool_libs' - finalize_command=\"$finalize_command\" -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" = \"$magic\"; then : - else - echo=\"$qecho\" - file=\"\$0\" - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" - - progdir=\"\$thisdir/$objdir\" - program='$output' - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\` - - export $shlibpath_var -" - fi - - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - - # Export the path to the program. - PATH=\"\$progdir:\$PATH\" - export PATH - - exec \$program \${1+\"\$@\"} - - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit 1 - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" - chmod +x $output - fi - exit 0 - ;; - esac - - # See if we need to build an old-fashioned archive. - if test "$build_old_libs" = "yes"; then - # Transform .lo files to .o files. - oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - eval cmds=\"$old_archive_from_new_cmds\" - else - eval cmds=\"$old_archive_cmds\" - fi - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Now create the libtool archive. - case "$output" in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.a" - - $show "creating $output" - - # Only create the output if not a dry run. - if test -z "$run"; then - $echo > $output "\ -# $output - a libtool library file -# Generated by ltmain.sh - GNU $PACKAGE $VERSION - -# The name that we can dlopen(3). -dlname='$dlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Directory that this library needs to be installed in: -libdir='$install_libdir'\ -" - fi - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $objdir && $LN_S ../$output $output)" - $run eval "(cd $objdir && $LN_S ../$output $output)" || exit 1 - ;; - esac - exit 0 - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional /bin/sh argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL"; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg="$nonopt" - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir= - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest="$arg" - continue - fi - - case "$arg" in - -d) isdir=yes ;; - -f) prev="-f" ;; - -g) prev="-g" ;; - -m) prev="-m" ;; - -o) prev="-o" ;; - -s) - stripme=" -s" - continue - ;; - -*) ;; - - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest="$arg" - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case "$arg" in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit 1 - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test -n "$isdir"; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test $# -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - fi - case "$destdir" in - /* | [A-Za-z]:\\*) ;; - *) - for file in $files; do - case "$file" in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case "$file" in - *.a) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - library_names= - old_library= - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$realname $destdir/$realname" - $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? - test "X$dlname" = "X$realname" && dlname= - - if test $# -gt 0; then - # Delete the old symlinks. - rmcmd="$rm" - for linkname - do - rmcmd="$rmcmd $destdir/$linkname" - done - $show "$rmcmd" - $run $rmcmd - - # ... and create new ones. - for linkname - do - test "X$dlname" = "X$linkname" && dlname= - $show "(cd $destdir && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $LN_S $realname $linkname)" - done - fi - - if test -n "$dlname"; then - # Install the dynamically-loadable library. - $show "$install_prog $dir/$dlname $destdir/$dlname" - $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - eval cmds=\"$postinstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - $show "$install_prog $file $destdir/$name" - $run eval "$install_prog $file $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case "$destfile" in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'` - ;; - *.o) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit 0 - ;; - - *) - # Do a test to see if this is really a libtool program. - if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then - link_against_libtool_libs= - finalize_command= - - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Check the variables that should have been set. - if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then - $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 - exit 1 - fi - - finalize=yes - for lib in $link_against_libtool_libs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case "$lib" in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" - if test -z "$libdir"; then - $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2 - elif test -f "$libfile"; then : - else - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - if test "$hardcode_action" = relink; then - if test "$finalize" = yes; then - $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2 - $show "$finalize_command" - if $run eval "$finalize_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - continue - fi - file="$objdir/$file"T - else - $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - $show "$install_prog$stripme $file $dest" - $run eval "$install_prog\$stripme \$file \$dest" || exit $? - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - # Do each command in the postinstall commands. - eval cmds=\"$old_postinstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec $SHELL $0 --finish$current_libdirs - exit 1 - fi - - exit 0 - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - eval cmds=\"$finish_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" - fi - done - fi - - echo "------------------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - echo " $libdir" - done - echo - echo "To link against installed libraries in a given directory, LIBDIR," - echo "you must use the \`-LLIBDIR' flag during linking." - echo - echo " You will also need to do one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - echo " - use the \`$flag' linker flag" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - echo "See any operating system documentation about shared libraries for" - echo "more information, such as the ld(1) and ld.so(8) manual pages." - echo "------------------------------------------------------------------------------" - exit 0 - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit 1 - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test -f "$file"; then : - else - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - dir= - case "$file" in - *.la) - # Check to see that this really is a libtool archive. - if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit 1 - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case "$file" in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then - # If there is no directory component, then add one. - case "$file" in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done - - if test -z "$run"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - - # Now actually exec the command. - eval "exec \$cmd$args" - - $echo "$modename: cannot exec \$cmd$args" - exit 1 - else - # Display what would be done. - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - $echo "$cmd$args" - exit 0 - fi - ;; - - # libtool uninstall mode - uninstall) - modename="$modename: uninstall" - rm="$nonopt" - files= - - for arg - do - case "$arg" in - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; - esac - done - - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit 1 - fi - - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - rmfiles="$file" - - case "$name" in - *.la) - # Possibly a libtool archive, so verify it. - if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $dir/$n" - test "X$n" = "X$dlname" && dlname= - done - test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" - test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" - - $show "$rm $rmfiles" - $run $rm $rmfiles - - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - eval cmds=\"$postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - eval cmds=\"$old_postuninstall_cmds\" - IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' - for cmd in $cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" - done - IFS="$save_ifs" - fi - - # FIXME: should reinstall the best remaining shared library. - fi - ;; - - *.lo) - if test "$build_old_libs" = yes; then - oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'` - rmfiles="$rmfiles $dir/$oldobj" - fi - $show "$rm $rmfiles" - $run $rm $rmfiles - ;; - - *) - $show "$rm $rmfiles" - $run $rm $rmfiles - ;; - esac - done - exit 0 - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 - ;; - esac - - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit 1 -fi # test -z "$show_help" - -# We need to display help for each of the modes. -case "$mode" in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - --n, --dry-run display commands without modifying any files - --features display configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --version print version information - -MODE must be one of the following: - - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE." - exit 0 - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -static do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only -library objects (\`.lo' files) may be specified, and \`-rpath' is required. - -If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar' -and \`ranlib'. - -If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is -created, otherwise an executable program is created." - ;; - -uninstall) - $echo -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit 1 - ;; -esac - -echo -$echo "Try \`$modename --help' for more information about other modes." - -exit 0 - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/bin/ly2dvi.sh b/bin/ly2dvi.sh deleted file mode 100755 index 447f29e371..0000000000 --- a/bin/ly2dvi.sh +++ /dev/null @@ -1,920 +0,0 @@ -#!/bin/sh -# -# Script to make a LaTeX file for Lilypond -# -# Written by Jan Arne Fagertun -# Sat Nov 22 22:26:43 CET 1997 -# -# $Id: ly2dvi.sh,v 1.16 1998/05/08 21:18:34 janaf Exp $ -# -# Original LaTeX file made by Mats Bengtsson, 17/8 1997 -# - -VERSION="0.11.hwn1" -NAME=ly2dvi.sh -IDENTIFICATION="$NAME $VERSION" -NOW=`date` -echo "$IDENTIFICATION" 1>&2 - -# TODO: -# prevent orphaned "Lily is here" strings - -# NEWS - -#0.11.hwn1 -# - height vs heigth -# - robustification: give \nonstopmode as LaTeX arg; no hanging if no TeX file. -# - robustification: notice failed cp. - -#0.11 -# - more papersizes (thanks Han-Wen) - don't expect LaTeX to accept all... -# - -W,--Width= : set paper width (points) -# - -H,--Height= : set paper height (points) -# - -H and -W is used only when an unknown papersize is to be specified, -# and has to be combined with a papersize option known to LaTeX -#NB! - -F,--headers= : name of additional LaTeX headers input file. -#NB! Changed from -H to -F -# - -d,--dependencies : passed to lilypond - - -#0.10.jcn1 -# - HEIGHT -> HEIGHT -# - vertical margins (for a4), same on both sides -# - textheight from lilypond output file (mudelapapertextheight) -# - piece titling -# - mudelapiece, mudelaopus -# -#0.10 -# - -K,--keeplilypond : Keep lilypond output files (default delete) -# - -k,--keeply2dvi : Keep ly2dvi output files (default delete) -# - -L,--landscape : Set landscape orientation -# - -N,--nonumber : Turn off page numbering (\pagestyle{empty}) -# - Could not reinsert "\usepackage[T1]{fontenc}" because -# "los-toros" won't work with it -# - Ekstra LaTeX headers from input file -#0.9.hwn1 -# - option to remove output of lily -# 0.9 -# - Trap Lilypond abort -# - Replaced "\usepackage[T1]{fontenc}" with -# \usepackage[latin1]{inputenc} (takk, Mats) -# - Removed "()" around "\LilyIdString" (Janne didn't want it) -# 0.8 - Trap Lilypond segmentation fault -# - Function for cleanup -# - Trap line -# - More human-readable variables -# - Some logics concerning rc-files -# 0.7 -# - Improved Lilypond error checking -# - Output orientation (landscape...). Overrides mudela file -# variable orientation="landscape"; -# - Paper width and height put into variables (only A4!) -# - Adjusted top margin to default..... -# -#TODO -# - Include more papersizes. -# - Manual page....... -# 0.6.jaf2 -# - LILYINCLUDE update -# -# 0.6.hwn1 -# - handle LILYINCLUDE -# - --output -# -# 0.6 -# - Source rc-files, if present. Files are: -# /usr/local/share/lilyrc /etc/lilyrc $HOME/.lilyrc ./.lilyrc -# - tee output from Lilypond -# - Handles margins for A4 paper (equal on both sides) -# - new option -s (--separate) for one LaTeX run per file, -# else all files are run together -# -# 0.5 -# - More useful ("two-level") debug. -# - The Q&D hack to find file names and not handling \include -# is replaced by grabbing output file names from Lilypond. -# = Detects multiple output files - adds them when running -# LaTeX. -# - Works with multiple input files - no matter if they are -# (a mix of) input to or output from Lilypond. -# -#TODO -# - Still no margins handling. -# - We have to discuss how to handle multiple output files -# from Lilypond - 'ly2dvi standchen' gives a rather odd -# result.... - -# 0.4.1 -# - Always exit after printing help info -# 0.4 -# - Changes to ensure for more strict grep'ing of parameters -# Thanks to from G.B.Stott@bolton.ac.uk -# - More efficient use of sed -e 's///' -e 's///' -# Thanks to Johan Vromans and GBS -# - Ask tex for location of titledefs.tex (Thanks to JV) -# - Accept only exact match of "\def\mudelacomposer{" -# (or whatever mudela* defined in titledefs.tex) -# - Even more efficient use of sed (Thanks to JV) -# - Default file name for single output file implemented. -# - Moved help into function - finally included from 0.1.jcn1 -# -#TODO -# - Still doesn't handle \include -# - The Q&D for finding output file name from the sequence of -# \paper \output \midi \output really needs to be looked at. -# I have improved it a lot, but it's only capable of finding -# one (the last) file name. -# Well, I have to rewrite this entirely to handle \include, -# then I can fix it. -# - Still no margins handling. -# -#WARNING -# - Some lines of output from lilypond do NOT start -# at first character position, therefore I have removed "^" -# in sed'ing and grep'ing. - -# 0.3.hwn1 -# - add "Creator: " line to output -# -# 0.3 -# - multiple input files to make score from several files -# (extra files assumed to be Lilypond output) -# - cp dvi-file instead of mv, to allow for xdvi reload -# - check for illegal long options -# - put in pt in text width, if not given -# - put in \nonstopmode in LaTeX file -# - restored LaTeX exit value check - -# 0.2.1 -# - temporarily omit LaTeX exit value check -# - remove ALL temporary files - -# 0.2 -# - fix for solaris - included from 0.1.jcn1 -# - long option hack - included from 0.1.jcn1 - modified -# - moved help into function - NOT included from 0.1.jcn1 yet -# - various improvements - included from 0.1.jcn1 -# - find mudela definitions from titledefs.tex -# - find papersize from lilypond output file (mudelapapersize), -# overridden by option '-p size' or '--papersize=size' -# - option -l lang or --language=lang overrides -# lilypond output file definition (mudelalanguage) -# - textwidth from lilypond output file (mudelapaperlinewidth) - -# 0.1.jcn1 -# - fix for solaris -# - long option hack -# - moved help into function - -# -# Clean up -# -cleanup() { - if [ "$KEEP_LY2DVI_OUTPUT" != "Y" ] - then - [ -n "$LatF" -a -f "$LatF" ] && rm -f $LatF - [ -n "$LOGFILE" -a -f "$LOGFILE" ] && rm -f $LOGFILE - [ -n "$FN" ] && rm -f $FN.* - for F in *$$* $TMP/*$$* - do - rm -f $F - done - fi - if [ "$KEEP_LILY_OUTPUT" != "Y" ] - then - for F in $LILY_OUTPUT_FILES - do - [ -f $F ] && rm -f $F - done - fi -} -# -# print usage -# -help() { - cat << EOF -Generate dvi file from mudela or lilypond output -Usage: $0 [options] file[s] - -Options: - -D,--debug set debug mode - -F,--headers= name of additional LaTeX headers file - -H,--Height= set paper height (points) (see manual page) - -K,--keeplilypond keep lilypond output files - -L,--landscape set landscape orientation - -N,--nonumber switch off page numbering - -O,--orientation= set orientation (obsolete - use -L instead) - -W,--Width= set paper width (points) (see manual page) - -d,--dependencies tell lilypond make a dependencies file - -h,--help this help text - -k,--keeply2dvi keep ly2dvi output files - -l,--language= give LaTeX language (babel) - -o,--output= set output directory - -p,--papersize= give LaTeX papersize (eg. a4) - -s,--separate run all files separately through LaTeX - - files may be (a mix of) input to or output from lilypond(1) -EOF -} -# -# Trap function (cleanup) -# -trap cleanup 0 9 15 -# -# Various defaults -# -[ -z "$TMP" ] && TMP=/tmp -if [ ! -d $TMP ] -then - $debug_echo $IDENTIFICATION": temporary directory "$TMP" not found, set to /tmp" - TMP=/tmp -fi -LOGFILE=$TMP/lilylog.$$ # Logfile for lilypond -PAPERSIZE=a4 # Default papersize name -PWIDTH=597 # Default paperwidth -PHEIGHT=845 # Default paperheight -PNUM="%" # Page numbering on -LILYOPTS="" # Options to lilypond -# -setPaperZize() { -case "$PAPERSIZE" in - a0*) - PWIDTH=2389 - PHEIGHT=3381 - PAPERSIZE=a0paper - ;; - a1|a1p*) - PWIDTH=1690 - PHEIGHT=2389 - PAPERSIZE=a1paper - ;; - a2*) - PWIDTH=1194 - PHEIGHT=1690 - PAPERSIZE=a2paper - ;; - a3*) - PWIDTH=845 - PHEIGHT=1194 - PAPERSIZE=a3paper - ;; - a4*) - PWIDTH=597 - PHEIGHT=845 - PAPERSIZE=a4paper - ;; - a5*) - PWIDTH=423 - PHEIGHT=597 - PAPERSIZE=a5paper - ;; - a6*) - PWIDTH=298 - PHEIGHT=423 - PAPERSIZE=a6paper - ;; - a7*) - PWIDTH=211 - PHEIGHT=298 - PAPERSIZE=a7paper - ;; - a8*) - PWIDTH=305 - PHEIGHT=211 - PAPERSIZE=a8paper - ;; - a9*) - PWIDTH=105 - PHEIGHT=305 - PAPERSIZE=a9paper - ;; - a10*) - PWIDTH=74 - PHEIGHT=105 - PAPERSIZE=a10paper - ;; - b0*) - PWIDTH=2847 - PHEIGHT=4023 - PAPERSIZE=b0paper - ;; - b1*) - PWIDTH=2012 - PHEIGHT=2847 - PAPERSIZE=b1paper - ;; - b2*) - PWIDTH=1423 - PHEIGHT=2012 - PAPERSIZE=b2paper - ;; - b3*) - PWIDTH=1006 - PHEIGHT=1423 - PAPERSIZE=b3paper - ;; - b4*) - PWIDTH=712 - PHEIGHT=1006 - PAPERSIZE=b4paper - ;; - b5*) - PWIDTH=503 - PHEIGHT=712 - PAPERSIZE=b5paper - ;; - archA) - PWIDTH=650 - PHEIGHT=867 - ;; - archB) - PWIDTH=867 - PHEIGHT=1301 - ;; - archC) - PWIDTH=1301 - PHEIGHT=1734 - ;; - archD) - PWIDTH=1734 - PHEIGHT=2602 - ;; - archE) - PWIDTH=2602 - PHEIGHT=3469 - ;; - flsa|flse) - PWIDTH=614 - PHEIGHT=940 - ;; - halfletter) - PWIDTH=397 - PHEIGHT=614 - ;; - ledger) - PWIDTH=1229 - PHEIGHT=795 - ;; - legal) - PWIDTH=614 - PHEIGHT=1012 - ;; - letter) - PWIDTH=614 - PHEIGHT=795 - ;; - note) - PWIDTH=542 - PHEIGHT=723 - ;; - *) - echo "" - echo $0": unknown papersize -- "$PAPERSIZE - echo "" - ;; -esac -} -# -# RC-files ? -# -for D in /usr/local/share/ /etc/ $HOME/. ./. -do - RCfile=$D"lilyrc" - [ -f $RCfile ] && . $RCfile -done -fORI=$ORIENTATION -fLNG=$LANGUAGE -fPSZ=$PAPERSIZE -fLHF=$LATEXHF -unset ORIENTATION LANGUAGE PAPERSIZE LATEXHF -# -# Keywords defined in titledefs.tex -# -TF=`kpsewhich -n tex tex titledefs.tex` -if [ -n $TF ] -then - TF=/usr/lib/texmf/tex/lilypond/titledefs.tex -fi -MU_DEF="" -if [ -f $TF ] -then - MU_DEF=`egrep "^.newcommand...mudela" $TF | \\ - sed -e 's/^.newcommand...//' -e 's/\\}.*$//'` -fi - -if [ -z "$MU_DEF" ] -then - MU_DEF="mudelatitle mudelasubtitle mudelacomposer \ - mudelaopus mudelaarranger mudelapiece mudelainstrument" -fi - -# -# debugging -# -debug_echo=true -# -# All files in one LaTeX run -# -SEPFILE=N -# -# Find command line options and switches -# -# "x:" x takes argument -# -switches="DF:H:KLNO:W:dhkl:o:p:s\?" -options="" -# -# ugh, "\-" is a hack to support long options -# while getopts \-:$options$switches O -# must be in double quotes for bash-2.0 -while getopts "\-:$options$switches" O -do - $debug_echo "O: \`$O'" - $debug_echo "arg: \`$OPTARG'" - case $O in - D ) - [ $debug_echo = echo ] && set -x - debug_echo=echo - ;; - F ) - LATEXHF=$OPTARG - ;; - H ) - PHEIGHT=$OPTARG - ;; - K ) - KEEP_LILY_OUTPUT=Y - ;; - L ) - ORIENTATION=landscape - ;; - O ) - ORIENTATION=$OPTARG - ;; - N ) - PNUM="\pagestyle{empty}" - ;; - W ) - PWIDTH=$OPTARG - ;; - d ) - LILYOPTS=$LILYOPTS" -d" - ;; - h ) - help; - exit 0 - ;; - k ) - KEEP_LY2DVI_OUTPUT=Y - ;; - l ) - LANGUAGE=$OPTARG - ;; - o ) - OUTPUTDIR=$OPTARG - ;; - p ) - PAPERSIZE=$OPTARG - ;; - s ) - SEPFILE=Y - ;; - \? ) - help; - exit -1 - ;; - # a long option! - -) - $debug_echo "long option: \`$OPTARG'" - case "$OPTARG" in - He*|-He*) - PHEIGHT=`echo $OPTARG | sed -e s/"^.*="//` - ;; - W*|-W*) - PWIDTH=`echo $OPTARG | sed -e s/"^.*="//` - ;; - dep*|-dep*) - LILYOPTS=$LILYOPTS" -d" - ;; - d*|-d*) - [ $debug_echo = echo ] && set -x - debug_echo=echo - ;; - hea*|-hea*) - LATEXHF=`echo $OPTARG | sed -e s/"^.*="//` - ;; - h*|-h*) - help; - exit 0 - ;; - keepli*|-keepli*) - KEEP_LILY_OUTPUT=Y - ;; - k*|-k*) - KEEP_LY2DVI_OUTPUT=Y - ;; - land*|-land*) - ORIENTATION=landscape - ;; - lang*|-lang*) - LANGUAGE=`echo $OPTARG | sed -e s/"^.*="//` - ;; - n*|-n*) - PNUM="\pagestyle{empty}" - ;; - or*|-or*) - ORIENTATION=`echo $OPTARG | sed -e s/"^.*="//` - ;; - ou*|-ou*) - OUTPUTDIR=`echo $OPTARG | sed -e s/"^.*="//` - ;; - p*|-p*) - PAPERSIZE=`echo $OPTARG | sed -e s/"^.*="//` - ;; - s*|-s*) - SEPFILE=Y - ;; - *|-*) - echo $0": illegal option -- "$OPTARG; - help; - exit -1 - ;; - esac - esac -done -shift `expr $OPTIND - 1` -# -# Input file name -# -if [ "$1" = "" ] -then - help - $debug_echo $IDENTIFICATION": No input file name given" - exit 1 -fi -# -# -mudelaDefs(){ -# Include \def\mudela-definitions -# -for L in $MU_DEF -do - SS=$1 - # LL=`egrep '^\\\\def.'$L'{' $OF` - LL=`egrep '^\\\\def.'$L'{' $File` - if [ "$LL" = "" ] - then - LL=`egrep '^\\\\def.'$L'{' $OF` - fi - if [ "$LL" != "" ] - then - ##{ - LLL=`echo $LL | sed -e 's/}.*$//' -e 's/.*{//'` - ##}{ - if [ "$LLL" != "" ] - then - echo "$SS\\"$L'{'$LLL'}%' >> $LatF - fi - fi -done -} -startFile(){ -# -# LaTeX file name -# -BN=`basename $File .tex` -FN=$BN.$$ -if [ "$KEEP_LY2DVI_OUTPUT" != "Y" ] -then - LatF=$TMP/$FN.tex -else - LatF=$FN.tex -fi -# -# Find: -# paper size (PAPERSIZE, overridden by command line option -p) -# paper orientation (ORIENTATION, overridden by option -o) -# language (LANGUAGE, overridden by option -l) -# textwidth -# -eval `sed -n \\ - -e 's/\\\\def\\\\mudelalanguage{\([^}]*\).*$/fLNG=\1;/p' \\ - -e 's/\\\\def\\\\mudelalatexheaders{\([^}]*\).*$/fLHF=\1;/p' \\ - -e 's/\\\\def\\\\mudelaorientation{\([^}]*\).*$/fORI=\1;/p' \\ - -e 's/\\\\def\\\\mudelapaperlinewidth{\([^}]*\).*$/TWN=\1;/p' \\ - -e 's/\\\\def\\\\mudelapapertextheight{\([^}]*\).*$/THN=\1;/p' \\ - -e 's/\\\\def\\\\mudelapapersize{\([^}]*\).*$/fPSZ=\1;/p' \\ - $File` -# -if [ -z "$LATEXHF" ] -then - LATEXHF=$fLHF -fi -LLHF="%" -if [ -n "$LATEXHF" ] -then - [ -f $LATEXHF ] && LLHF="\input{$LATEXHF}" -fi -# -if [ -z "$PAPERSIZE" ] -then - PAPERSIZE=$fPSZ -fi -if [ -n "$PAPERSIZE" ] -then - setPaperZize - PAPEROPT=$PAPERSIZE -fi -# -if [ -z "$ORIENTATION" ] -then - ORIENTATION=$fORI -fi -if [ -n "$ORIENTATION" ] -then - if [ -z "$PAPEROPT" ] - then - PAPEROPT=$ORIENTATION - else - PAPEROPT=$PAPEROPT,$ORIENTATION - fi -fi -# -if [ -n "$PAPEROPT" ] -then - PAPER="["$PAPEROPT"]" -fi -# -if [ -z "$LANGUAGE" ] -then - LANGUAGE=$fLNG -fi -if [ -n "$LANGUAGE" ] -then - LLNG="\usepackage["$LANGUAGE"]{babel}" -else - LLNG="%" -fi - -# -# Find textwidth -# -if [ -n "$TWN" ] -then - TW=$TWN - case $TW in - *mm) - ;; - *cm) - ;; - *pt) - ;; - *) - TW=$TW"pt" - ;; - esac - $debug_echo "Text width = "$TW -fi -TWp=`echo $TW | sed -e 's/\..*$//'` -PWp=$PWIDTH -# -# Find textheight -# -if [ -n "$THN" ] -then - TH=$THN - case $TH in - *mm) - ;; - *cm) - ;; - *pt) - ;; - *) - TH=$TH"pt" - ;; - esac - $debug_echo "Text height = "$TH -fi -THp=`echo $TH | sed -e 's/\..*$//'` -PHp=$PHEIGHT -if [ "$ORIENTATION" = "landscape" ] -then - PWp=$PHEIGHT - PHp=$PWIDTH -fi -HMARG=`expr $PWp - $TWp` -HMARG=`expr $HMARG / 2`"pt" -$debug_echo "Text left = "$HMARG -VMARG=`expr $PHp - $THp` -VMARG=`expr $VMARG / 2`"pt" -$debug_echo "Text top = "$VMARG -# -# Geometry: /var/lib/texmf/latex/geometry/geometry.dvi -# -# -# Write LaTeX file -# -cat << EOF > $LatF -% Creator: $IDENTIFICATION -% Automatically generated from $IF, $NOW - -\documentclass$PAPER{article} - -$LLNG -\usepackage{geometry} -\usepackage[latin1]{inputenc} -%\usepackage[T1]{fontenc} -$PNUM -%\addtolength{\oddsidemargin}{-1cm} -%\addtolength{\topmargin}{-1cm} -%\setlength{\textwidth}{$TW} -%\setlength{\textheight}{$TH} -%\geometry{width=$TW, left=$HMARG, top=1cm} -%\geometry{width=$TW, left=$HMARG} -%\geometry{height=$TH, top=$VMARG} -% \geometry{body={$PWp pt, $PHp pt}, width=$TW, top=$HMARG, height=$TH, top=$VMARG} -\geometry{width=$TW, top=$HMARG, height=$TH, top=$VMARG} -\input lilyponddefs -\input titledefs -$LLHF -\begin{document} -EOF -mudelaDefs -cat << EOF >> $LatF -\cmrtwenty% ugh -\makelilytitle -EOF -} -nextFile(){ -cat << EOF >> $LatF -\def\theopus{}% -\def\thepiece{}% -EOF -mudelaDefs "\\def" -cat << EOF >> $LatF -\def\theopus{\mudelaopus}% ugh -\def\thepiece{\mudelapiece}% -\makelilypiecetitle -EOF -} -# -# Conclusion -# -endFile(){ -cat << EOF >> $LatF -\vfill\hfill{\LilyIdString} -\end{document} -EOF -# -# Run LaTeX -# -latex '\nonstopmode \input '$LatF || exit 5 -# -# Rename dvi file -# -if [ -f $FN.dvi ] -then - RESULT=$BN.dvi - [ -n "$OUTPUTDIR" ] && RESULT="$OUTPUTDIR/$RESULT" - - cp $FN.dvi $RESULT || exit 5 - -fi -# -# Output some info -# -cat << EOF - -$IDENTIFICATION: dvi file name is $RESULT - -EOF -} - -# ugh. GF is side-effect. -findInput() { -# should check for LILYINCLUDE - for lypath in "." `echo $LILYINCLUDE| sed 's/:/ /g'` - do - if [ -f "$lypath/$1" ] - then - GF="$lypath/$1" - return - fi - - if [ -f "$lypath/$1.ly" ] - then - GF="$lypath/$1.ly" - return - fi - done - $debug_echo $IDENTIFICATION": Input file "$GF" not found" - echo $NAME": Input file "$GF" not found" 1>&2 - exit 2 -} -# -# Loop through all files -# - -LILY_OUTPUT_FILES= - -for GF in $* -do - findInput $GF - - # - # Check whether the file is input to or output from lilypond - # - L1=`head -1 $GF` - OP=`echo $L1 | grep "^% Creator: GNU LilyPond"` - if [ -n "$OP" ] - then - # - # OK - it's the output from lilypond. - # - # Get lilypond source file name - # - OF=$GF - IFL=`grep mudelafilename $OF` - if [ "$IFL" != "" ] - then - IF=`echo $IFL | sed -e 's/.*{//' -e 's/}*.$//'` - # - # Check if source file exists - # - if [ ! -f $IF ] - then - $debug_echo $IDENTIFICATION": Mudela file not found." - TW=15.5cm - TH=25cm - fi - else - $debug_echo $IDENTIFICATION": Mudela file name not found." - TW=15.5cm - TH=25cm - fi - else - # - # I have to assume this is the lilypond input file - # Find output file name, if defined - # - IF=$GF - # - # Run lilypond - # Grab output file names - # - $debug_echo "lilypond "$LILYOPTS $IF - - lilypond $LILYOPTS $IF 2>&1 | tee $LOGFILE - OF=`egrep '^TeX output to ' $LOGFILE | \\ - sed -e 's/TeX output to//' -e 's/\.\.\.//'` - $debug_echo "==> "$OF - STATUS=`egrep -i "error|segmentation|abort" $LOGFILE` - echo $STATUS - if [ ! -z "$STATUS" ] - then - exit 10 - fi - fi - # - # "Spin through" all the files - # - for File in $OF - do - $debug_echo "--- "$File - # - # Check if output file is generated - # - if [ ! -f $File ] - then - $debug_echo $IDENTIFICATION": hmm, I could not find the output file "$File - exit 4 - fi - # - # Is this the first file? - # - if [ -z "$FFile" ] - then - FFile=$File - startFile - else - nextFile - fi - cat << EOF >> $LatF -\input{$File} -EOF - if [ $SEPFILE = Y ] - then - FFile="" - endFile - fi - LILY_OUTPUT_FILES="$LILY_OUTPUT_FILES $OF" - done -done -if [ $SEPFILE = N ] -then - endFile -fi -# -# OK - finished -# diff --git a/bin/mail-address.sh b/bin/mail-address.sh deleted file mode 100644 index 37e1141751..0000000000 --- a/bin/mail-address.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -# mail-address -if [ "$MAILADDRESS" != "" ]; then - echo $MAILADDRESS -else - echo "mail-address:6: warning: \$MAILADDRESS undefined" > /dev/stderr - echo $USER@`hostname` -fi diff --git a/bin/make-patch.py b/bin/make-patch.py deleted file mode 100755 index 9909bf9b73..0000000000 --- a/bin/make-patch.py +++ /dev/null @@ -1,186 +0,0 @@ -#!@PYTHON@ - -import sys -import os - -lilypath ='' -try: - lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' -except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - sys.exit(1) - -lilypath = lilypath + '/bin/' -sys.path.append(lilypath) - - -from lilypython import * -import getopt -import pipes - - -mp_version = '0.51' - -class Options: - def __init__(self): - self.to_version = lilydirs.version_tuple() - self.from_version = prev_version(self.to_version) - -options = Options() - - -def help(): - sys.stdout.write( - 'Generate a patch to go to this version.\n' - ' -f, --from=FROM old is FROM\n' - ' -d, --dir=DIR diff to (or from) directory DIR\n' - ' -r, --release diff against latest release\n' - ' -t, --to=TO to version TO\n' - ) - -def untar(fn): - # os.system('pwd'); - sys.stderr.write('untarring ' + fn + '\n') - os.system ('gzip --quiet -dc ' + fn + '| tar xf - ') - sys.stderr.flush() - - -header = 'Generated by make-patch, old = %s, new = %s\n\ -\n\ -usage \n\ -\n\ - cd lilypond-source-dir; patch -E -p1 < %s\n\ -\n\ -Patches do not contain automatically generated files, \n\ -i.e. you should rerun autoconf and configure\n\n' - -# ugh, how to get rid of .tex files generated by lily? -# pats = ['*.lsm', 'configure', '*.txt', '.dstreamrc', 'lilypond.spec'] -pats = ['*.lsm', 'configure', '*.txt', '.dstreamrc', 'lilypond.spec', - 'AUTHORS', 'INSTALL', 'PATCHES'] - -def remove_automatic(dirnames): - files = [] - files = files + multiple_find(pats, dirnames) - - for f in files: - os.remove(f) - -def makepatch(fromdir, todir, patfile_nm): - - remove_automatic([fromdir, todir]) - - os.chdir(todir) - - f = open(patfile_nm, 'w') - f.write(header %\ - (fromdir, todir, \ - os.path.basename(patfile_nm))) - f.close() - - sys.stderr.write('diffing to %s... ' % patfile_nm) - os.system('pwd') - print ('diff -urN ../%s . >> %s' % (fromdir, patfile_nm)) - os.system('diff -urN ../%s . >> %s' % (fromdir, patfile_nm)) - os.system('gzip --quiet -9f %s' % patfile_nm) - -def main(): - os.environ['GZIP'] = '-q' - sys.stderr.write('This is make-patch version %s\n' % mp_version) - (cl_options, files) = getopt.getopt(sys.argv[1:], - 'd:hf:o:rt:', ['output=', 'help', 'from=', 'to=']) - outfn = '' - srcdir = '' - - # on default, we want to diff tar balls, again :-) - from_b=1 - to_b=1 - for opt in cl_options: - o = opt[0] - a = opt[1] - if o == '--from' or o == '-f': - options.from_version = version_str_to_tuple(a) - from_b=1 - elif o == '--to' or o == '-t': - options.to_version = version_str_to_tuple(a) - to_b=1 - elif o == '--dir' or o == '-d': - srcdir = a; - to_b=0 - elif o == '--help' or o == '-h': - help() - return 0; - elif o == '--output' or o == '-o': - outfn = os.path.join(os.getcwd(), a) - elif o == '--release' or o == '-r': -# huh? -# if options.from_version[3]: -# options.from_version[3] = ''; - options.from_version = (options.from_version[0], - options.from_version[1], options.from_version[2], ''); - else: - raise getopt.error - - if not outfn: - pn = 'patch-%s' % version_tuple_to_str(options.to_version) - outfn = os.path.join(os.getcwd(), pn) - - import tempfile - prev_cwd = os.getcwd(); - - os.system('rm -rf /tmp/make-patch') - try: - os.mkdir ('/tmp/make-patch') - except: - pass - - fromdir = dirname(options.from_version) - todir = dirname(options.to_version) - - diffdir = '' - if srcdir != '': - diffdir = '/tmp/make-patch/' + 'lilypond-%s'\ - % version_tuple_to_str(options.to_version) - - if from_b != 0 or (from_b == 0 and to_b == 0): - os.chdir ('/tmp/make-patch') - untar(released_tarball(options.from_version)) - os.chdir(prev_cwd) - else: - fromdir = diffdir - sys.stderr.write('copying ' + srcdir + ' to ' + diffdir + '\n') - # os.system('cp -pr %s %s' % (srcdir, diffdir)) - os.system('mkdir -p %s '% (diffdir)) - os.chdir (srcdir) - os.system('tar cf - --exclude out . | tar -xf - -C %s' - % diffdir) - - if to_b != 0: - os.chdir ('/tmp/make-patch') - untar(released_tarball(options.to_version)) - os.chdir(prev_cwd) - else: - todir = diffdir - sys.stderr.write('copying ' + srcdir + ' to ' + diffdir + '\n') - os.system('mkdir -p %s '% (diffdir)) - # os.system('cp -pr %s %s' (srcdir, diffdir))% - os.chdir (srcdir) - os.system('tar -cf - --exclude out . | tar -xf - -C %s ' - % diffdir) - - os.chdir('/tmp/make-patch') - os.chdir(todir) - # os.system('rm -f *.aux *.dvi *.midi *.log *.ps *.tex *.ly') - os.chdir ('/tmp/make-patch') - - makepatch(fromdir, todir, outfn) - - os.chdir('/tmp/make-patch') - sys.stderr.write('cleaning ... ') - os.system('rm -fr %s %s' % (fromdir, todir)) - sys.stderr.write('\n') - os.chdir(prev_cwd) - -if __name__ == '__main__': - main() - diff --git a/bin/make-version.sh b/bin/make-version.sh deleted file mode 100755 index 3be14353cb..0000000000 --- a/bin/make-version.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/sh - -#shift; -if test "x$1" = x; -then - versionfile="VERSION" -else - versionfile=$1; -fi - -cat $versionfile| sed 's/#.*$//g'|sed 's/\([^ ]*\)[\t ]*=[ \t]*\([^ ]*\)$/#define \1 \"\2\"/g' -echo - diff --git a/bin/mf-to-table.py b/bin/mf-to-table.py deleted file mode 100755 index 0db3593dcd..0000000000 --- a/bin/mf-to-table.py +++ /dev/null @@ -1,278 +0,0 @@ -#!@PYTHON@ - -# -# mf-to-table.py -- convert spacing info in MF logs .ly and .tex -# -# source file of the GNU LilyPond music typesetter -# -# (c) 1997 Han-Wen Nienhuys -# - -import getopt -from string import * -import regex -import regsub -import os -import sys -import time - - - -lilypath ='' -try: - lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' -except KeyError: - try: - lilypath = os.environ['top_srcdir'] + '/' - except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - -lilypath = lilypath + '/bin/' -sys.path.append(lilypath) - -from flower import * - -begin_autometric_re = regex.compile('@{') -end_autometric_re = regex.compile('@}') -include_re = regex.compile ('(\([a-zA-Z_0-9-]+\.mf\)') -autometric_re = regex.compile('@{\(.*\)@}') -version = '0.6' -postfixes = ['log', 'dvi', '2602gf', 'tfm'] - -class Feta_file(File): - """Read Feta metrics from a metafont log-file.""" - - def include_scan (self, line): - include_pos = include_re.search (line) - while include_pos <> -1: - self.dependencies.append (include_re.group (1)) - - line = line[include_pos + 1:] - include_pos = include_re.search (line) - - def read_autometricline(self): - line = '' - while end_autometric_re.search(line) == -1 and not self.eof(): - suf = File.readline(self) - self.include_scan (suf) - if begin_autometric_re.search(line) == -1: - line = '' - line = line + regsub.sub('\n','', suf) - - if self.eof(): - return '' - - return line; - def readline(self): - """return what is enclosed in one @{ @} pair""" - line = ''; - while autometric_re.search(line) == -1 and not self.eof(): - line = self.read_autometricline() - - if self.eof(): - return ''; - - return autometric_re.group(1); - def __init__(self, nm): - File.__init__(self, nm) - self.dependencies = [] - def do_file(infile_nm): - infile = readline(); - -# -# FIXME: should parse output for {} to do indenting. -# -class Indentable_file(File): - """Output file with support for indentation""" - def __init__(self,nm, mode): - File.__init__(self,nm,mode) - self.current_indent_ = 0 - self.delta_indent_ = 4 - def writeline (self, str): - File.write(self, str) - def writeeol(self): - File.write(self, '\n') - File.write(self, ' '* self.current_indent_) - - def indent(self): - self.current_indent_ = self.delta_indent_ + self.current_indent_; - def dedent(self): - self.current_indent_ = self.current_indent_ - self.delta_indent_; - if self.current_indent_ < 0: - raise 'Nesting!' - - def write(self, str): - lines = split(str, '\n') - for l in lines[:-1]: - self.writeline(l) - self.writeeol() - self.writeline (lines[-1]) - -class Ly_file(Indentable_file): - """extra provisions for mozarella quirks""" - def print_lit(self, str): - self.write('\"%s\"\t' % str) - - def print_f_dimen(self, f): - dimstr = '%.2f' % f - - # try to mask rounding errors - if (dimstr == '-0.00'): - dimstr = '0.00' - self.write( dimstr +'\\pt\t'); - - def print_dimen(self, str): - self.print_f_dimen(atof(str)) - - def neg_print_dimen(self, str): - self.print_f_dimen(-atof(str)); - - def def_symbol(self, lily_id, tex_id, dims): - self.print_lit(lily_id) - self.print_lit('\\\\' + tex_id) - - self.neg_print_dimen(dims [0]) - self.print_dimen(dims [1]) - self.neg_print_dimen(dims [2]) - self.print_dimen(dims [3]) - self.write('\n') - - -class Log_reader: - """Read logs, destill info, and put into output files""" - def output_label(self, line): - - if not line: - return; - tags = split(line, '@:') - label = tags[0] - name = tags[1] - ly = self.lyfile - if tags[0] == 'font': - ly.indent() - ly.write("% name=\\symboltables {\n") - self.texfile.write("% name\n") - elif label == "group": - ly.indent() - ly.print_lit(name) - ly.write(' = \\table {\n') - self.texfile.write("% " + name + "\n") - elif label == "puorg": - ly.dedent() - ly.write("}\n") - self.texfile.write("\n") - elif label == "tnof": - ly.dedent() - ly.write("% } % $name\n") - elif label == "char": - code = tags[2] - id = tags [7] - texstr = tags [8] - - ly.def_symbol(id, texstr, tags[3:7]) - - self.texfile.write("\\fetdef\\%s{%s}\n" % (texstr, code)) - else: - raise 'unknown label: ' + label - - def writedeps (self, deps): - if not len (deps): - sys.stderr.write ('Huh, no main target??') - return - filename = deps[0] - split = os.path.splitext(filename) - basename=split[0]; - - targets = map (lambda x,y = basename, z = self.outdir: z + '/' + y + '.' + x, postfixes) - depstring = reduce(lambda x,y: x + ' ' + y, deps) - dependencies = map (lambda x, y=depstring: x + ': ' + y, targets) - for x in dependencies: - self.depfile.write (x + '\n') - - def do_file(self,filenm): - self.lyfile.write ('\n% input from ' + filenm + '\n') - self.texfile.write ('\n% input from ' + filenm + '\n') - feta = Feta_file(filenm) - while not feta.eof(): - line = feta.readline() - self.output_label(line) - feta.close() - - self.writedeps (feta.dependencies) - - def __init__(self, lyfile_nm, texfile_nm, depfile_nm): - self.lyfile = Ly_file(lyfile_nm, 'w') - self.texfile = Indentable_file(texfile_nm, 'w') - self.depfile = File (depfile_nm, 'w') - - headerstr = '%% Creator: %s\n%% Automatically generated on\n%% Do not edit' % \ - (program_id() ) - - self.lyfile.write(headerstr) - self.texfile.write(headerstr) - self.depfile.write ('# automatically generated by %s\n' % program_id ()) - - def close(self): - self.lyfile.close() - self.texfile.close() - self.depfile.close () - - def __del__(self): - self.close() - -def today_str(): - return time.asctime(time.localtime(time.time())) - -def program_id(): - return 'mf-to-table.py version ' + version; - -def identify(): - sys.stdout.write(program_id() + '\n') - -def help(): - sys.stdout.write("Usage: mf-to-table [options] LOGFILEs\n" - + "Generate mozarella metrics table from preparated feta log\n\n" - + "Options:\n" - + " -h, --help print this help\n" - + " -l, --ly=FILE name output table\n" - + " -d, --dep=FILE print dependency info to FILE\n" - + " -o, --outdir=DIR prefix for dependency info\n" - + " -t, --tex=FILE name output tex chardefs\n") - sys.exit (0) - - -def main(): - identify() - (options, files) = getopt.getopt( - sys.argv[1:], 'ho:l:t:d:', ['outdir=', 'dep=', 'ly=', 'tex=', 'debug', 'help']) - - lyfile_nm = texfile_nm = ''; - depfile_nm = '' - outdir_prefix = '.' - for opt in options: - o = opt[0] - a = opt[1] - if o == '--dep' or o == '-d': - depfile_nm = a - elif o == '--outdir' or o == '-o': - outdir_prefix = a - elif o == '--ly' or o == '-l': - lyfile_nm = a - elif o == '--tex' or o == '-t': - texfile_nm = a - elif o== '--help' or o == '-h': - help() - elif o == '--debug': - debug_b = 1 - else: - print o - raise getopt.error - - log_reader = Log_reader(lyfile_nm, texfile_nm, depfile_nm) - log_reader.outdir = outdir_prefix - for filenm in files: - log_reader.do_file(filenm) - log_reader.close() - - -main() diff --git a/bin/mudela-book.pl b/bin/mudela-book.pl deleted file mode 100755 index 09e52f2f0a..0000000000 --- a/bin/mudela-book.pl +++ /dev/null @@ -1,212 +0,0 @@ -#!@PERL@ -w -# -*-Perl-*- -my $mudcount = 0; -my $mudela_b = 0; -my $outname = "-"; -my $outdir; -use Getopt::Long; - - -# do something, check return status -sub my_system -{ - my (@cmds) = @_; - foreach $cmd (@cmds) { - my ($ignoreret)=0; - if ( $cmd =~ /^-/ ) { - $ignoreret = 1; - $cmd = substr ($cmd, 1); - } - - my $ret = ( system ($cmd)); - if ($ret) { - if ($ignoreret) { - print STDERR "ignoring failed command \`$cmd\' (status $ret)\n"; - }else { - print STDERR "\nmudela-book: failed on command \`$cmd\' (status $ret)\n"; - exit 2; - } - } - } -} -sub gen_mufile -{ - return "$outdir/$outname$mudcount.ly"; -} - -sub gen_texbase -{ - return "$outname$mudcount.tex"; -} -sub gen_texfile -{ - return "$outdir/" . gen_texbase; -} - -sub close_mudela -{ - $mudela_b = 0; - if ($fragment_b) { - print MUDELA "}\n \\paper { linewidth = -1.0\\cm;"; - print MUDELA "castingalgorithm = \\Wordwrap; } }\n"; - $fragment_b =0; - } - if ($verbatim_b) { - print BOOK "\\end{verbatim}"; - } - if ($center_b) { - print BOOK "\\end{minipage}"; - } - if ($verbatim_b) { - print BOOK "\\interexample"; - $verbatim_b = 0; - } - close MUDELA; - my $status =0; - if ( -f gen_mufile ) { - $status = system "diff -q $outdir/book-mudela.ly " . gen_mufile; - } else { - $status = 1; - } - if ( $status ) { - rename "$outdir/book-mudela.ly", gen_mufile; - unlink gen_texfile; - } - - if ( ! -f gen_texfile) { - my_system "lilypond ". gen_mufile; - rename gen_texbase, gen_texfile; - } - - if ($center_b) { - print BOOK "\\begin{minipage}[c]{.5\\textwidth}\n"; - } - print BOOK "\\input " . gen_texfile . "\n"; - if ($center_b) { - print BOOK "\\end{minipage}"; - $center_b = 0; - } - print BOOK "\\postexample%\n"; -} - -sub open_mudela -{ - $mudcount++; - $mudela_b = 1 ; - open MUDELA, ">$outdir/book-mudela.ly"; - print BOOK "\\preexample%\n"; - print MUDELA "\\include \"paper16.ly\"\n"; - if ($center_b) { - print BOOK "\\begin{minipage}[c]{.5\\textwidth}\n"; - print MUDELA "default_paper = \\paper { \\paper_sixteen "; - print MUDELA "linewidth = 7.\\cm;}"; - } - if ($verbatim_b) { - print BOOK "\\begin{verbatim}\n"; - } - if ($fragment_b) { - print MUDELA "\\score { \\melodic { "; - } else { - print MUDELA "default_paper = \\paper { \\paper_sixteen "; - print MUDELA "linewidth = 15.\\cm;}"; - - } - -} - -sub begin_b -{ - my ($s) = @_; - return (/^\\begin{$s}/) ; -} - -sub end_b -{ - my ($s) = @_; - return (/^\\end{$s}/) ; -} -sub parse_mudela_opts -{ - my ($s) = @_; - $s =~ s/[\[\]]//g; - - $verbatim_b =1 if ($s =~ /verbatim/ ); - $fragment_b = 1 if ($s =~ /fragment/ ); - $center_b = 1 if ($s =~ /center/ ); -} - -sub help -{ - print "usage: convert-mudela [options] [file] -options: ---help ---outdir=DIRECTORY write all files in directory DIRECTORY ---outname=NAME use NAME as base for the output -"; - exit; -} - -sub main -{ - GetOptions( 'outdir=s', 'outname=s', 'help'); - if ( $opt_help ) { - help(); - $opt_help = 0; # to extinguish typo check. brr, what a language - } - - if (defined ($opt_outdir)) { - $outdir = $opt_outdir . "/"; - } else { - $outdir = "."; - } - - if (defined ($ARGV[0])) { - $infile = $ARGV[0] ; - } else { - $infile = "-"; - } - if (defined ($opt_outname)) { - $outname = $opt_outname ; - } else { - die "Need to have an output name, use --outname" if ( $infile eq "-"); - $outname = "$infile.tex"; - } - - my $openout ="$outdir$outname"; - if ( $infile eq $openout ) { - die "The input can't be the output\n"; - } - - open INFILE, "<$infile" or die "Can't open $infile\n"; - open BOOK, ">$openout" or die "Can't open $openout\n";; - while () { - if ($mudela_b) { - if (end_b "mudela") { - close_mudela; - next; - } - print MUDELA; - if ( $verbatim_b ) { - my $s = $_; - $s =~ s/\t/ /g; #shit - print BOOK $s; - } - - } else { - if (/^\\begin{mudela}(\[.*\])?/ ) { - my $opts =""; - $opts = $1 if ( defined ($1)); - - parse_mudela_opts($opts); - open_mudela; - next; - } - print BOOK; - } - } - close INFILE; - close BOOK; -} - - -main; diff --git a/bin/mutopia-index.py b/bin/mutopia-index.py deleted file mode 100644 index 485578f0dc..0000000000 --- a/bin/mutopia-index.py +++ /dev/null @@ -1,99 +0,0 @@ - -import sys -import os - -lilypath ='' -try: - lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' -except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - sys.exit(1) - -lilypath = lilypath + '/bin/' -sys.path.append(lilypath) - -from lilypython import * - - - -def gen_list(inputs, subdir, filename): - (pre, subdirs, post)=subdir - print "generating HTML list %s\n" % filename - list = open(filename, 'w') - list.write ('Rendered Examples\n') - list.write ('') - if len(subdirs): - list.write ('

subdirectories

') - list.write ('
    ') - for ex in subdirs: - print 'subdir %s ' % ex - list.write ('
  • Subdirectory: %s
  • \n' % (pre + ex + post , ex)) - - list.write ('
') - - list.write('

Contents of this directory

\n'); - list.write ('These example files are taken from the LilyPond distribution.\n' - 'LilyPond currently only outputs TeX and MIDI. The pictures and\n' - 'PostScript files were generated using TeX, Ghostscript and some\n' - 'graphics tools. The papersize used for these examples is A4. The GIF\n' - 'files have been scaled to eliminate aliasing.\n'); - - - for ex in inputs: - print '%s, ' % ex - header = read_mudela_header(ex + '.ly.txt') - - def read_dict(s, default, h =header): - try: - ret = h[s] - except KeyError: - ret = default - return ret - head = read_dict('title', ex) - composer = read_dict('composer', '') - desc = read_dict('description', '') - list.write('
') - list.write('

example file: %s

' % head); - if composer <> '': - list.write('

%s

\n' % composer) - if desc <> '': - list.write('%s

' % desc) - list.write ('

    ') - def list_item(filename, desc, l = list): - if file_exist_b(filename): - l.write ('
  • %s\n' % (filename, desc)) - - list_item(ex + '.ly.txt', 'The input') - for pageno in range(1,10): - f = ex + '-page%d.gif' % pageno - if not file_exist_b (f): - break - list_item(f, 'The output (picture, page %d)' % pageno) - list_item(ex + '.ps.gz', 'The output (gzipped PostScript)') - list_item(ex + '.midi', 'The output (MIDI)') - list.write ("
"); - - list.write( ""); - list.close() - -allfiles = multiple_find (['*.ly.txt'], '.') - -import getopt - -(cl_options, files) = getopt.getopt(sys.argv[1:], - 'hs:', ['help', 'subdirs=', 'suffix=', 'prefix=']) -subdir_pre='' -subdir_suf ='' - -subdirs =[] -for opt in cl_options: - o = opt[0] - a = opt[1] - if o == '--subdirs' or o == '-s': - subdirs.append (a) - elif o == '--prefix': - subdir_pre = a - elif o == '--suffix': - subdir_suf = a - -gen_list (files, (subdir_pre, subdirs, subdir_suf), 'index.html') diff --git a/bin/out/dummy.dep b/bin/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/bin/profile-conf.sh b/bin/profile-conf.sh deleted file mode 100644 index 79dbd73463..0000000000 --- a/bin/profile-conf.sh +++ /dev/null @@ -1,2 +0,0 @@ - -configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking diff --git a/bin/ps-to-gifs.sh b/bin/ps-to-gifs.sh deleted file mode 100755 index c276406a2b..0000000000 --- a/bin/ps-to-gifs.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -usage() -{ - echo 'ps-to-gifs.sh FILE.ps' - exit 2; -} - -case $# in -1) - FILE=`basename $1 .ps` - ;; -*) - usage - ;; -esac - -# generate the pixmap at twice the size, then rescale (for antialiasing) -cat $1 | gs -q -sDEVICE=ppmraw \ - -sOutputFile="|pnmscale 0.3333|ppmtogif > $FILE-page%d.gif" \ - -r200 -dNOPAUSE - -c quit - diff --git a/bin/release.py b/bin/release.py deleted file mode 100755 index 731a2ee2ea..0000000000 --- a/bin/release.py +++ /dev/null @@ -1,45 +0,0 @@ -#!@PYTHON@ - -import sys -import os - -lilypath ='' -try: - lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' -except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - sys.exit(1) - -lilypath = lilypath + '/bin/' -sys.path.append(lilypath) - -from lilypython import * - -os.chdir(lilydirs.topdir) -os.system('make dist') -cur_ver = lilydirs.version_tuple() -print tarball(cur_ver) -os.rename('out/' + tarball(cur_ver), released_tarball(cur_ver)) -os.chdir('../test') -os.system('pwd') -os.system('rm ../test/*gz') -os.link(released_tarball(cur_ver), tarball(cur_ver)) - - -# not a module, but a script (JCN) -# makepatch.main() - -# Module wherefore aren't thou Script -# A Rose by any other name would be as blonde. --HWN - -os.system('python ' + lilydirs.topdir + '/bin/make-patch.py'); - -pn = 'patch-%s' % version_tuple_to_str(cur_ver) -# os.system('gzip -9 ' + pn) -pn = pn + '.gz' -rel_pn = lilydirs.release_dir + '../patches/' + pn; - -os.rename(pn, rel_pn); -os.link(rel_pn, pn); - -os.system('tar cf updeet *gz') diff --git a/bin/rpm-dist.sh b/bin/rpm-dist.sh deleted file mode 100644 index a10b49f13a..0000000000 --- a/bin/rpm-dist.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/sh -# rpm-dist.sh --- make an rpm distribution - -latest=lilypond-`show-latest -p` -{ cd $LILYPOND_SOURCEDIR; cd ..; -export LILYPOND_ROOTDIR=`pwd` } - -icon=lelie_icon.gif -rpmrc=$LILYPOND_SOURCEDIR/make/out/rpmrc -spec=$LILYPOND_SOURCEDIR/make/out/lilypond.spec - -if [ ! -e $LILYPOND_ROOTDIR/releases/$icon ]; then - make -C $LILYPOND_ROOTDIR/current/Documentation gifs - ln $LILYPOND_ROOTDIR/current/Documentation/out/$icon $LILYPOND_ROOTDIR/releases -fi - -# urg -user=`whoami` -if [ "x$user" != "xroot" ]; then - echo only root wants to build RPMs - exit 2 -fi - -if [ ! -e $LILYPOND_ROOTDIR/redhat/BUILD ]; then - mkdir -p $LILYPOND_ROOTDIR/redhat/BUILD - mkdir -p $LILYPOND_ROOTDIR/redhat/RPMS/i386 - mkdir -p $LILYPOND_ROOTDIR/redhat/SRPMS -fi - -set -x -cd $LILYPOND_ROOTDIR/redhat || exit 1 -rm -rf lilypond-* - -rpm -ba --rcfile $rpmrc $spec - diff --git a/bin/show-latest.pl b/bin/show-latest.pl deleted file mode 100755 index 2b2c994d00..0000000000 --- a/bin/show-latest.pl +++ /dev/null @@ -1,55 +0,0 @@ -#!@PERL@ -# -*-Perl-*- - -$LILYPOND_SOURCEDIR="$ENV{LILYPOND_SOURCEDIR}"; -$LILYPOND_ROOTDIR=`cd $LILYPOND_SOURCEDIR/..; pwd`; -chop ($LILYPOND_ROOTDIR); -$reldir="$LILYPOND_ROOTDIR/releases"; - -use FileHandle; -use Getopt::Long; - -sub cmpver -{ - my(@a)= split( /\./, $a); - my(@b)= split( /\./, $b); - - for $i (0,1,2) { - return $a[$i] <=> $b[$i] if ($a[$i] != $b[$i]); - } - return $a cmp $b; -} - -my @versions; -open LS, "ls -1 $reldir|"; - -GetOptions( 'print', 'news', 'latest'); - - -while () { - $_ =~ /lilypond-([^.]+\.[^.]+\.[^.]+).tar.gz/; - push @versions, $1; -} - - -@versions = sort cmpver @versions; -my $last= (pop @versions); - - -if ( $opt_print ) { - print $last . "\n"; -} - -if ( $opt_latest) { - system "rm $reldir/zZ*"; - system "> $reldir/zZ_LATEST_IS_$last"; -} -if ( $opt_news ) { - open NEWS, "tar --to-stdout -zxf $reldir/lilypond-$last.tar.gz lilypond-$last/NEWS |"; - input_record_separator NEWS "****"; - $desc = ; - chop ($desc); - close NEWS; - - print $desc; -} diff --git a/bin/table-to-html.py b/bin/table-to-html.py deleted file mode 100755 index bc4bc7152a..0000000000 --- a/bin/table-to-html.py +++ /dev/null @@ -1,92 +0,0 @@ -#!@PYTHON@ - -# -# table-to-html.py -- convert char-separated table to html table -# -# source file of the GNU LilyPond music typesetter -# -# (c) 1998 Jan Nieuwenhuizen -# - -import getopt -from string import * -import regex -import regsub -import os -import sys -import time - -version = '0.1' - -lilypath ='' -try: - lilypath = os.environ['LILYPOND_SOURCEDIR'] + '/' -except KeyError: - try: - lilypath = os.environ['top_srcdir'] + '/' - except KeyError: - print 'Please set LILYPOND_SOURCEDIR to the toplevel source, eg LILYPOND_SOURCEDIR=/home/foobar/lilypond-1.2.3/' - -lilypath = lilypath + '/bin/' -sys.path.append (lilypath) - -from flower import * - -def program_id (): - return 'table-to-html.py version ' + version; - -def identify (): - sys.stdout.write (program_id () + '\n') - -def help (): - sys.stdout.write ("Usage: table-to-html [options] TABLE_FILE HTML_FILE\n" - + "Generate mozarella metrics table from preparated feta log\n\n" - + "Options:\n" - + " -h, --help print this help\n" - + " -s, --separator=SEP specify separator [:]\n") - sys.exit (0) - - -def header (html): - html.write ('') - -def footer (html): - html.write ('
') - -def convert (inname, outname, separator): - table = File (inname) - # ugh - html = File (outname, 'w') - - header (html) - while not table.eof (): - line = table.readline () - columns = split (line, separator) - html_line = '' + join (columns, '') + '' - html.write (html_line) - table.close () - footer (html) - html.close () - - -def main (): - identify () - (options, files) = getopt.getopt ( - sys.argv[1:], 'hs:', ['help','separator=']) - - separator = ':' - for opt in options: - o = opt[0] - a = opt[1] - if o == '--separator' or o == '-s': - separator = a - elif o== '--help' or o == '-h': - help () - else: - print o - raise getopt.error - - convert (files[0], files[1], separator) - -main () - diff --git a/bin/tar-docxx.sh b/bin/tar-docxx.sh deleted file mode 100644 index c6d33a9605..0000000000 --- a/bin/tar-docxx.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh - -if [ "$1" = "" ]; -then - echo tar-docxx tarball.tar.gz -fi - -cwd=`pwd` -TARBALL=`basename $1` -TAROUTDIR=/tmp/tar-docxx -mkdir $TAROUTDIR - -echo untarring ... -tar -C $TAROUTDIR -zxf $1 '*cc' '*.c' '*.hh' '*.h' - -cd $TAROUTDIR -DATE=`date` - -cat << EOF > banner.html - This program documentation comes from $TARBALL. It was generated by - $USERNAME ($MAILADDRESS) on $DATE -EOF - - - -mkdir docxx; -echo doc++ ... -doc++ -pSf -B banner.html -d docxx `find -type f` -tar -czf $cwd/progdocs.tar.gz docxx/ -# rm -rf $TAROUTDIR diff --git a/buildscripts/Makefile b/buildscripts/Makefile new file mode 100644 index 0000000000..7832495f3c --- /dev/null +++ b/buildscripts/Makefile @@ -0,0 +1,13 @@ +# bin/Makefile + +depth = .. + +include $(depth)/make/Stepmake.make + +default: + +EXTRA_DIST_FILES = ltconfig + +include $(stepdir)/Script_files.make + + diff --git a/buildscripts/clean-diaper.sh b/buildscripts/clean-diaper.sh new file mode 100755 index 0000000000..47c2a069db --- /dev/null +++ b/buildscripts/clean-diaper.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# unclobber current dir. +rm -vf *.aux *.log *.orig *~ *dvi *.dep + +# subdirs +rm -vf `grep -li "^% Creator: GNU LilyPond" *.out *.tex` +rm -vf `grep -li "Creator: mi2mu" *.midi.ly` +rm -vf `grep -li "%Creator: dvipsk" *.ps` +rm -vf `grep -li "Creator: GNU LilyPond" *.midi` +rm -vf `grep -li "Creator: ly2dvi" *.tex` +rm -vf `find -name 'core'` +rm -vf `find -name '*.orig'` +rm -vf `find -name '*.rej'` + + + + + +# docxx mess +rm -vf *.class HIER*.html dxxgifs.tex gifs.db icon?.gif logo.gif down.gif \ + aindex.html index.html diff --git a/buildscripts/clean-fonts.sh b/buildscripts/clean-fonts.sh new file mode 100755 index 0000000000..a57dc7fc74 --- /dev/null +++ b/buildscripts/clean-fonts.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +case $# in +0) + WHAT="" ;; +1) + WHAT=$1;; +esac + +# should use kpsepath + +if [ -d /var/lib/texmf ]; then + TEXDIR=/var/lib/texmf +elif [ -d /var/texfonts ]; then + TEXDIR=/var/texfonts +else + TEXDIR=/var/ +fi + +# remove possibly stale .pk/.tfm files +echo> /tmp/cleaning-font-dummy +FILES=`find $TEXDIR -name "feta*$WHAT*tfm" -or -name "feta*$WHAT*pk"` + +echo removing $FILES +rm -f $FILES /tmp/cleaning-font-dummy diff --git a/buildscripts/docxx-lily.sh b/buildscripts/docxx-lily.sh new file mode 100644 index 0000000000..82407ed1ff --- /dev/null +++ b/buildscripts/docxx-lily.sh @@ -0,0 +1,16 @@ +#!/bin/sh +cwd=`pwd` + +{ cd $LILYPOND_SOURCEDIR; cd ..; +export LILYPOND_ROOTDIR=`pwd` } + +if [ "$1" = "" ]; then + VERSION=`show-current` + TARBALL=$LILYPOND_ROOTDIR/releases/lilypond-$VERSION.tar.gz + cwd=`pwd` +else + TARBALL=$1 +fi + + +tar-docxx $TARBALL diff --git a/buildscripts/find-typenames.pl b/buildscripts/find-typenames.pl new file mode 100644 index 0000000000..890f9cabd0 --- /dev/null +++ b/buildscripts/find-typenames.pl @@ -0,0 +1,20 @@ +#!@PERL@ + +open GREP, "egrep -h '^struct|^class' *.hh *.cc|"; +open OUT, "|sort | uniq"; +while () { + + s/^struct/class/; + if (! /; *$/) { + s/:[^{]+{.*$//; + s/ *{.*$/;/; + } + if (! /; *$/) { + chop; + $_ .= ";\n"; + + } + print OUT; +} +close OUT; +close GREP; diff --git a/buildscripts/gen-sitemap.sh b/buildscripts/gen-sitemap.sh new file mode 100644 index 0000000000..7f9bcbc95e --- /dev/null +++ b/buildscripts/gen-sitemap.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +TMPDIR=/tmp/gen-sitemap +for tarball in $*; do + tar -C $TMPDIR -xfz $tarball '*.html' +done diff --git a/buildscripts/genheader.py b/buildscripts/genheader.py new file mode 100644 index 0000000000..8e6f396037 --- /dev/null +++ b/buildscripts/genheader.py @@ -0,0 +1,146 @@ +#!@PYTHON@ + +# genheader.py -- do headers (like these) +# +# source file of the GNU LilyPond music typesetter +# +# (c) 1997 Han-Wen Nienhuys + +import os +import sys +import pwd +import regex +import regsub +import string +import getopt +import time + +class My_options: + def __init__(self): + self.commentify = None + self.add_hdr_def = 0 + self.classname = '' + +my_options = My_options() + + +def name(): + return pwd.getpwuid(os.getuid())[4] + +def c_commentify(str): + return '/* ' + regsub.gsub('^',' ', str) + '\n */'; + +def sh_commentify(str): + return regsub.gsub('^', '# ', str) + +def tex_commentify(str): + return regsub.gsub('^', '% ', str) + +def project_str(): + cwd = os.getcwd() + if regex.search('flower', cwd) <> -1: + PROJECT = "the Flower Library" + elif regex.search('mf$', cwd) <> -1: + PROJECT = "the Feta (defintively not an abbreviation for Font-En-Tja) music font" + else: + PROJECT = "the GNU LilyPond music typesetter" + return PROJECT + +def head_str(filename): + if my_options.add_hdr_def: + what = "declare " + else: + what=" implement " + + + mailaddres = '' + try: + mailaddres = '<%s>' % os.environ['MAILADDRESS'] + except KeyError: + pass + headstr = '\n%s -- %s\n\nsource file of %s\n\n(c) %d %s %s\n' \ + %(filename, what, project_str(), + time.localtime (time.time ())[0], name(), mailaddres) + return headstr + + +def c_include(filename): + startdef= filename; + trans = string.maketrans( string.lowercase + '-.', string.uppercase + '__') + startdef = string.translate(filename, trans) + + + headstr = "\n\n#ifndef %s\n#define %s\n" % (startdef, startdef) + terminatestr = "#endif /* %s */\n" % (startdef); + + return headstr+ '\n\n'+ terminatestr; + + +def help (): + sys.stdout.write ("Usage: genheader [options] FILENAME\n" + + "Generate file with header FILENAME\n\n" + + "Options:\n" + + " -h, --header generate header\n" + + " --help print this help\n" + + " -p, --package=DIR specify package\n" + ) + + sys.exit (0) + + +(options, files) = getopt.getopt(sys.argv[1:], 'tcshp:', ['class', 'package=', 'help']) + +for opt in options: + o = opt[0] + a = opt[1] + if o == '-c': + my_options.commentify = c_commentify + elif o == '-t': + my_options.commentify = tex_commentify + elif o == '-s': + my_options.commentify = sh_commentify + elif o == '-h' or o == '--header': + my_options.add_hdr_def = 1 + elif o == '--class': + my_options.classname = a + elif o == '--help': + help () + +# FIXME: should create xxx.cc and include/xxx.hh, with implement/declare Xxx +# in one run +if my_options.classname: + pass + +def do_file(nm): + s = my_options.commentify(head_str(nm)) + if my_options.add_hdr_def: + s = s + c_include(nm) + return s + + +def extension(ext,nm): + ext = '\\.' + ext + return regex.search(ext, nm) <> -1 + +def c_extension(nm): + return extension('hh',nm) or extension('cc',nm) \ + or extension('icc', nm) or extension('tcc',nm) + +def select_commentification(nm): + if c_extension (nm): + return c_commentify + elif extension('py',nm) or extension('pl',nm) or extension('sh',nm): + return sh_commentify + elif extension('mf',nm) or extension('tex',nm) or extension('ly',nm): + return tex_commentify + else: + sys.stderr.write ('unknown extension for file %s\n' % nm) + raise 'help' + +for nm in files: + if extension('hh', nm) or extension('icc', nm) or extension('tcc', nm): + my_options.add_hdr_def = 1 + if my_options.commentify == None: + my_options.commentify = select_commentification(nm) + print do_file(nm) + diff --git a/buildscripts/html-accents.py b/buildscripts/html-accents.py new file mode 100644 index 0000000000..228ed7485f --- /dev/null +++ b/buildscripts/html-accents.py @@ -0,0 +1,115 @@ +#!@PYTHON@ + +# html-accents.py -- convert (some) latin1 chars to html +# pod2html is so broken... +# +# source file of the GNU LilyPond music typesetter +# +# (c) 1998 Jan Nieuwenhuizen + +name = 'html-accents' +version = '0.1' + +import os +import sys +sys.path.append ('@abs-step-bindir@') +sys.path.append (os.environ['HOME'] + '/usr/src/lilypond/stepmake/bin') + +import getopt +from string import * +import regex +import regsub +import time + +def program_id (): + return name + ' version ' + version; + +def identify (): + sys.stdout.write (program_id () + '\n') + +def help (): + sys.stdout.write ("Usage: " + name + " [options] INFILE OUTFILE\n" + + "Convert (some) latin1 chars to html &xxx;\n\n" + + "Options:\n" + + " -h, --help print this help\n" + + " -p, --package=DIR specify package\n" + ) + sys.exit (0) + +# chars = {'è':'è', } +chars = { +'á':'á', +'â':'â', +'æ':'æ', +'à':'à', +'å':'å', +'ã':'ã', +'ä':'ä', + +'ç':'ç', + +'é':'é', +'ê':'ê', +'è':'è', +'ë':'ë', + +'í':'í', +'î':'î', +'ì':'ì', +'ï':'ï', + +'ñ':'ñ', + +'ó':'ó', +'ô':'ô', +'ò':'ò', +'ø':'ø', +'õ':'õ', +'ö':'ö', + +'ú':'ú', +'û':'û', +'ù':'ù', +'ü':'ü' +} + +def convert_accents (inname, outname): + from flower import * + text = File (inname) + # ugh + html = File (outname, 'w') + + while not text.eof (): + line = text.readline () + for i in chars.keys (): + line = regsub.gsub (i, chars[i], line) + html.write (line) + text.close () + html.close () + +def main (): + identify () + (options, files) = getopt.getopt ( + sys.argv[1:], 'hp:', ['help', 'package=']) + for opt in options: + o = opt[0] + a = opt[1] + if o== '--help' or o == '-h': + help () + elif o == '-p' or o == '--package': + topdir = a + else: + print o + raise getopt.error + + sys.path.append (topdir + '/stepmake/bin') + from packagepython import * + package = Package (topdir) + packager = Packager () + + from flower import * + + convert_accents (files[0], files[1]) + +main () + diff --git a/buildscripts/localpackage.py b/buildscripts/localpackage.py new file mode 100644 index 0000000000..f37fc8267b --- /dev/null +++ b/buildscripts/localpackage.py @@ -0,0 +1,16 @@ +# localpackage.py +# must be included in package's python bin dir + +def localpackage (n): + p=lower (n) + P=upper (n) + if topdir == '': + try: + topdir = os.environ[P + '_SOURCEDIR'] + except: + topdir = os.environ['HOME'] + '/usr/src/' + p + sys.path.append (topdir + '/stepmake/bin') + from packagepython import * + package = Package (topdir) + packager = Packager () + diff --git a/buildscripts/ltconfig b/buildscripts/ltconfig new file mode 100644 index 0000000000..2347e69439 --- /dev/null +++ b/buildscripts/ltconfig @@ -0,0 +1,1512 @@ +#! /bin/sh + +# ltconfig - Create a system-specific libtool. +# Copyright (C) 1996-1998 Free Software Foundation, Inc. +# Gordon Matzigkeit , 1996 +# +# This file 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A lot of this script is taken from autoconf-2.10. + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi + +echo=echo +if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then : +else + # The Solaris and AIX default echo program unquotes backslashes. + # This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # So, we emulate echo with printf '%s\n' + echo="printf %s\\n" + if test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then : + else + # Oops. We have no working printf. Try to find a not-so-buggy echo. + echo=echo + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" + for dir in $PATH /usr/ucb; do + if test -f $dir/echo && test "X`$dir/echo '\t'`" = 'X\t'; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + fi +fi + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# The name of this program. +progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'` + +# Constants: +PROGRAM=ltconfig +PACKAGE=libtool +VERSION=1.2 +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.c 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.c $LIBS 1>&5' +rm="rm -f" + +help="Try \`$progname --help' for more information." + +# Global variables: +can_build_shared=yes +enable_shared=yes +# All known linkers require a `.a' archive for static linking. +enable_static=yes +ltmain= +silent= +srcdir= +ac_config_guess= +ac_config_sub= +host= +nonopt= +verify_host=yes +with_gcc=no +with_gnu_ld=no + +old_AR="$AR" +old_CC="$CC" +old_CFLAGS="$CFLAGS" +old_CPPFLAGS="$CPPFLAGS" +old_LD="$LD" +old_LN_S="$LN_S" +old_NM="$NM" +old_RANLIB="$RANLIB" + +# Parse the command line options. +args= +prev= +for option +do + case "$option" in + -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + eval "$prev=\$option" + prev= + continue + fi + + case "$option" in + --help) cat <&2 + echo "$help" 1>&2 + exit 1 + ;; + + *) + if test -z "$ltmain"; then + ltmain="$option" + elif test -z "$host"; then +# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1 +# if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then +# echo "$progname: warning \`$option' is not a valid host type" 1>&2 +# fi + host="$option" + else + echo "$progname: too many arguments" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac +done + +if test -z "$ltmain"; then + echo "$progname: you must specify a LTMAIN file" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +if test -f "$ltmain"; then : +else + echo "$progname: \`$ltmain' does not exist" 1>&2 + echo "$help" 1>&2 + exit 1 +fi + +# Quote any args containing shell metacharacters. +ltconfig_args= +for arg +do + case "$arg" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ltconfig_args="$ltconfig_args '$arg'" ;; + *) ltconfig_args="$ltconfig_args $arg" ;; + esac +done + +# A relevant subset of AC_INIT. + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 5 compiler messages saved in config.log +# 6 checking for... messages and results +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>>./config.log + +# NLS nuisances. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LANG+set}" = set; then LANG=C; export LANG; fi + +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + +if test -z "$srcdir"; then + # Assume the source directory is the same one as the path to ltmain.sh. + srcdir=`$echo "$ltmain" | $Xsed -e 's%/[^/]*$%%'` + test "$srcdir" = "$ltmain" && srcdir=. +fi + +trap "$rm conftest*; exit 1" 1 2 15 +if test "$verify_host" = yes; then + # Check for config.guess and config.sub. + ac_aux_dir= + for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/config.guess; then + ac_aux_dir=$ac_dir + break + fi + done + if test -z "$ac_aux_dir"; then + echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2 + echo "$help" 1>&2 + exit 1 + fi + ac_config_guess=$ac_aux_dir/config.guess + ac_config_sub=$ac_aux_dir/config.sub + + # Make sure we can run config.sub. + if $ac_config_sub sun4 >/dev/null 2>&1; then : + else + echo "$progname: cannot run $ac_config_sub" 1>&2 + echo "$help" 1>&2 + exit 1 + fi + + echo $ac_n "checking host system type""... $ac_c" 1>&6 + + host_alias=$host + case "$host_alias" in + "") + if host_alias=`$ac_config_guess`; then : + else + echo "$progname: cannot guess host type; you must specify one" 1>&2 + echo "$help" 1>&2 + exit 1 + fi ;; + esac + host=`$ac_config_sub $host_alias` + echo "$ac_t$host" 1>&6 + + # Make sure the host verified. + test -z "$host" && exit 1 + +elif test -z "$host"; then + echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2 + echo "$help" 1>&2 + exit 1 +else + host_alias=$host +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case "$host_os" in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +case "$host_os" in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "${COLLECT_NAMES+set}" != set; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR cru $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +# Set a sane default for `AR'. +test -z "$AR" && AR=ar + +# If RANLIB is not set, then run the test. +if test "${RANLIB+set}" != "set"; then + result=no + + echo $ac_n "checking for ranlib... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/ranlib; then + RANLIB="ranlib" + result="ranlib" + break + fi + done + IFS="$save_ifs" + + echo "$ac_t$result" 1>&6 +fi + +if test -n "$RANLIB"; then + old_archive_cmds="$old_archive_cmds;\$RANLIB \$oldlib" + old_postinstall_cmds="\$RANLIB \$oldlib;$old_postinstall_cmds" +fi + +# Check to see if we are using GCC. +if test "$with_gcc" != yes || test -z "$CC"; then + # If CC is not set, then try to find GCC or a usable CC. + if test -z "$CC"; then + echo $ac_n "checking for gcc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" + for dir in $PATH; do + IFS="$save_ifs" + test -z "$dir" && dir=. + if test -f $dir/gcc; then + CC="gcc" + break + fi + done + IFS="$save_ifs" + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + fi + + # Not "gcc", so try "cc", rejecting "/usr/ucb/cc". + if test -z "$CC"; then + echo $ac_n "checking for cc... $ac_c" 1>&6 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" + cc_rejected=no + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/cc; then + if test "$dir/cc" = "/usr/ucb/cc"; then + cc_rejected=yes + continue + fi + CC="cc" + break + fi + done + IFS="$save_ifs" + if test $cc_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same name, so the bogon will be chosen + # first if we set CC to just the name; use the full file name. + shift + set dummy "$dir/cc" "$@" + shift + CC="$@" + fi + fi + + if test -n "$CC"; then + echo "$ac_t$CC" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$CC"; then + echo "$progname: error: no acceptable cc found in \$PATH" 1>&2 + exit 1 + fi + fi + + # Now see if the compiler is really GCC. + with_gcc=no + echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6 + echo "$progname:424: checking whether we are using GNU C" >&5 + + $rm conftest.c + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + with_gcc=yes + fi + $rm conftest.c + echo "$ac_t$with_gcc" 1>&6 +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6 +pic_flag= +special_shlib_compile_flags= +wl= +link_static_flag= +no_builtin_flag= + +if test "$with_gcc" = yes; then + wl='-Wl,' + link_static_flag='-static' + no_builtin_flag=' -fno-builtin' + + case "$host_os" in + aix3* | aix4* | irix5* | irix6* | osf3* | osf4*) + # PIC is the default for these OSes. + ;; + os2*) + # We can build DLLs from non-PIC. + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + pic_flag='-m68020 -resident32 -malways-restore-a4' + ;; + *) + pic_flag='-fPIC' + ;; + esac +else + # PORTME Check for PIC flags for the system compiler. + case "$host_os" in + aix3* | aix4*) + # All AIX code is PIC. + link_static_flag='-bnso -bI:/lib/syscalls.exp' + ;; + + hpux9* | hpux10*) + # Is there a better link_static_flag that works with the bundled CC? + wl='-Wl,' + link_static_flag="${wl}-a ${wl}archive" + pic_flag='+Z' + ;; + + irix5* | irix6*) + wl='-Wl,' + link_static_flag='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + os2*) + # We can build DLLs from non-PIC. + ;; + + osf3* | osf4*) + # All OSF/1 code is PIC. + wl='-Wl,' + link_static_flag='-non_shared' + ;; + + sco3.2v5*) + pic_flag='-Kpic' + link_static_flag='-dn' + special_shlib_compile_flags='-belf' + ;; + + solaris2*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + sunos4*) + pic_flag='-PIC' + link_static_flag='-Bstatic' + wl='-Qoption ld ' + ;; + + sysv4.2uw2*) + pic_flag='-KPIC' + link_static_flag='-Bstatic' + wl='-Wl,' + ;; + + uts4*) + pic_flag='-pic' + link_static_flag='-Bstatic' + ;; + + *) + can_build_shared=no + ;; + esac +fi + +if test -n "$pic_flag"; then + echo "$ac_t$pic_flag" 1>&6 + + # Check to make sure the pic_flag actually works. + echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6 + $rm conftest* + echo > conftest.c + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $pic_flag -DPIC" + echo "$progname:547: checking if $compiler PIC flag $pic_flag works" >&5 + if { (eval echo $progname:548: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then + # Append any warnings to the config.log. + cat conftest.err 1>&5 + + # On HP-UX, both CC and GCC only warn that PIC is supported... then they + # create non-PIC objects. So, if there were any warnings, we assume that + # PIC is not supported. + if test -s conftest.err; then + echo "$ac_t"no 1>&6 + can_build_shared=no + pic_flag= + else + echo "$ac_t"yes 1>&6 + pic_flag=" $pic_flag" + fi + else + # Append any errors to the config.log. + cat conftest.err 1>&5 + can_build_shared=no + pic_flag= + echo "$ac_t"no 1>&6 + fi + CFLAGS="$save_CFLAGS" + $rm conftest* +else + echo "$ac_t"none 1>&6 +fi + +# Check for any special shared library compilation flags. +if test -n "$special_shlib_compile_flags"; then + echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2 + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$special_shlib_compile_flags[ ]" >/dev/null; then : + else + echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2 + can_build_shared=no + fi +fi + +echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6 +$rm conftest* +echo 'main(){return(0);}' > conftest.c +save_LDFLAGS="$LDFLAGS" +LDFLAGS="$LDFLAGS $link_static_flag" +echo "$progname:591: checking if $compiler static flag $link_static_flag works" >&5 +if { (eval echo $progname:592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + echo "$ac_t$link_static_flag" 1>&6 +else + echo "$ac_t"none 1>&6 + link_static_flag= +fi +LDFLAGS="$save_LDFLAGS" +$rm conftest* + +if test -z "$LN_S"; then + # Check to see if we can use ln -s, or we need hard links. + echo $ac_n "checking whether ln -s works... $ac_c" 1>&6 + $rm conftestdata + if ln -s X conftestdata 2>/dev/null; then + $rm conftestdata + LN_S="ln -s" + else + LN_S=ln + fi + if test "$LN_S" = "ln -s"; then + echo "$ac_t"yes 1>&6 + else + echo "$ac_t"no 1>&6 + fi +fi + +# Make sure LD is an absolute path. +if test -z "$LD"; then + ac_prog=ld + if test "$with_gcc" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6 + echo "$progname:624: checking for ld used by GCC" >&5 + ac_prog=`($CC -print-prog-name=ld) 2>&5` + case "$ac_prog" in + # Accept absolute paths. + /* | [A-Za-z]:\\*) + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we are not using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then + echo $ac_n "checking for GNU ld... $ac_c" 1>&6 + echo "$progname:642: checking for GNU ld" >&5 + else + echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 + echo "$progname:645: checking for non-GNU ld" >&5 + fi + + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog"; then + LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" + fi + + if test -n "$LD"; then + echo "$ac_t$LD" 1>&6 + else + echo "$ac_t"no 1>&6 + fi + + if test -z "$LD"; then + echo "$progname: error: no acceptable ld found in \$PATH" 1>&2 + exit 1 + fi +fi + +# Check to see if it really is or is not GNU ld. +echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6 +# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + with_gnu_ld=yes +else + with_gnu_ld=no +fi +echo "$ac_t$with_gnu_ld" 1>&6 + +# See if the linker supports building shared libraries. +echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6 + +allow_undefined_flag= +no_undefined_flag= +archive_cmds= +old_archive_from_new_cmds= +export_dynamic_flag_spec= +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= + +case "$host_os" in +amigaos* | sunos4*) + # On these operating systems, we should treat GNU ld like the system ld. + gnu_ld_acts_native=yes + ;; +*) + gnu_ld_acts_native=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes && test "$gnu_ld_acts_native" != yes; then + + # See if GNU ld supports shared libraries. + if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared ${wl}-soname $wl$soname -o $lib$libobjs' + runpath_var=LD_RUN_PATH + ld_shlibs=yes + else + ld_shlibs=no + fi + + if test "$ld_shlibs" = yes; then + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + fi +else + # PORTME fill in a description of your system's linker (not GNU ld) + case "$host_os" in + aix3*) + allow_undefined_flag=unsupported + archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$LD -o $objdir/$soname$libobjs -bE:$lib.exp -T512 -H512 -bM:SRE;$AR cru $lib $objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$with_gcc" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4*) + allow_undefined_flag=unsupported + archive_cmds='$NM$libobjs | $global_symbol_pipe | sed '\''s/.* //'\'' > $lib.exp;$CC -o $objdir/$soname$libobjs ${wl}-bE:$lib.exp ${wl}-bM:SRE ${wl}-bnoentry;$AR cru $lib $objdir/$soname' + hardcode_direct=yes + hardcode_minus_L=yes + ;; + + amigaos*) + archive_cmds='$rm $objdir/a2ixlibrary.data;$echo "#define NAME $libname" > $objdir/a2ixlibrary.data;$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data;$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data;$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data;$AR cru $lib$libobjs;$RANLIB $lib;(cd $objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib$libobjs /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib$libobjs' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3, at last, uses gcc -shared to do shared libraries. + freebsd3*) + archive_cmds='$CC -shared -o $lib$libobjs' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + archive_cmds='$rm $objdir/$soname;$LD -b +s +b $install_libdir -o $objdir/$soname$libobjs;mv $objdir/$soname $lib' + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + archive_cmds='$LD -b +h $soname +s +b $install_libdir -o $lib$libobjs' + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6*) + archive_cmds='$LD -shared -o $lib -soname $soname -set_version $verstring$libobjs' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + ;; + + netbsd*) + # Tested with NetBSD 1.2 ld + archive_cmds='$LD -Bshareable -o $lib$libobjs' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + openbsd*) + archive_cmds='$LD -Bshareable -o $lib$libobjs' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def;$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def;$echo DATA >> $objdir/$libname.def;$echo " SINGLE NONSHARED" >> $objdir/$libname.def;$echo EXPORTS >> $objdir/$libname.def;emxexp$libobjs >> $objdir/$libname.def;$CC -Zdll -Zcrtdll -o $lib$libobjs $objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def' + ;; + + osf3* | osf4*) + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} -o $lib -soname $soname -set_version $verstring$libobjs$deplibs' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + archive_cmds='$LD -G -o $lib$libobjs' + hardcode_direct=yes + ;; + + solaris2*) + no_undefined_flag=' -z text' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib$libobjs' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + + # Solaris 2 before 2.5 hardcodes -L paths. + case "$host_os" in + solaris2.[0-4]*) + hardcode_minus_L=yes + ;; + esac + ;; + + sunos4*) + if test "$with_gcc" = yes; then + archive_cmds='$CC -shared -o $lib$libobjs' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib$libobjs' + fi + + if test "$with_gnu_ld" = yes; then + export_dynamic_flag_spec='${wl}-export-dynamic' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib$libobjs' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + can_build_shared=no + ;; + esac +fi +echo "$ac_t$ld_shlibs" 1>&6 + +if test -z "$NM"; then + echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6 + case "$NM" in + /* | [A-Za-z]:\\*) ;; # Let the user override the test with a path. + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/nm; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -B" + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + NM="$ac_dir/nm -p" + else + NM="$ac_dir/nm" + fi + break + fi + done + IFS="$ac_save_ifs" + test -z "$NM" && NM=nm + ;; + esac + echo "$ac_t$NM" 1>&6 +fi + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6 + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRSTU]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \1' + +# Define system-specific variables. +case "$host_os" in +aix*) + symcode='[BCDTU]' + ;; +irix*) + # Cannot use undefined symbols on IRIX because inlined functions mess us up. + symcode='[BCDEGRST]' + ;; +solaris2*) + symcode='[BDTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTUW]' +fi + +# Write the raw and C identifiers. +global_symbol_pipe="sed -n -e 's/^.* $symcode $sympat$/$symxfrm/p'" + +# Check to see that the pipe works correctly. +pipe_works=no +$rm conftest* +cat > conftest.c <&5 +if { (eval echo $progname:972: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.o; then + # Now try to grab the symbols. + nlist=conftest.nm + if { echo "$progname:975: eval \"$NM conftest.o | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.o | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then + + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + wcout=`wc "$nlist" 2>/dev/null` + count=`$echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` + (test "$count" -ge 0) 2>/dev/null || count=-1 + else + rm -f "$nlist"T + count=-1 + fi + + # Make sure that we snagged all the symbols we need. + if egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.c +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c + + cat <> conftest.c +#if defined (__STDC__) && __STDC__ +# define __ptr_t void * +#else +# define __ptr_t char * +#endif + +/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ +int dld_preloaded_symbol_count = $count; + +/* The mapping between symbol names and symbols. */ +struct { + char *name; + __ptr_t address; +} +dld_preloaded_symbols[] = +{ +EOF + sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> conftest.c + cat <<\EOF >> conftest.c + {0, (__ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.o conftestm.o + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS='conftestm.o' + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo $progname:1033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + pipe_works=yes + else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 + fi + LIBS="$save_LIBS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $global_symbol_pipe" >&5 + fi +else + echo "$progname: failed program was:" >&5 + cat conftest.c >&5 +fi +$rm conftest* + +# Do not use the global_symbol_pipe unless it works. +echo "$ac_t$pipe_works" 1>&6 +test "$pipe_works" = yes || global_symbol_pipe= + +# Check hardcoding attributes. +echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && \ + test "$hardcode_minus_L" != no && \ + test "$hardcode_shlibpath_var" != no; then + + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +elif test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" != yes; then + # We cannot hardcode anything. + hardcode_action=unsupported +else + # We can only hardcode existing directories. + hardcode_action=relink +fi +echo "$ac_t$hardcode_action" 1>&6 +test "$hardcode_action" = unsupported && can_build_shared=no + + +reload_flag= +reload_cmds='$LD$reload_flag -o $output$reload_objs' +echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6 +# PORTME Some linker may need a different reload flag. +reload_flag='-r' +echo "$ac_t$reload_flag" +test -n "$reload_flag" && reload_flag=" $reload_flag" + +# PORTME Fill in your ld.so characteristics +library_names_spec= +libname_spec='lib$name' +soname_spec= +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +version_type=none +dynamic_linker="$host_os ld.so" + +echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6 +case "$host_os" in +aix3* | aix4*) + version_type=linux + library_names_spec='${libname}${release}.so.$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so.$major' + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done' + ;; + +freebsd2* | freebsd3*) + version_type=sunos + library_names_spec='${libname}${release}.so.$versuffix $libname.so' + finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +gnu*) + version_type=sunos + library_names_spec='${libname}${release}.so.$versuffix' + shlibpath_var=LD_LIBRARY_PATH + ;; + +hpux9* | hpux10*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + dynamic_linker="$host_os dld.sl" + version_type=sunos + shlibpath_var=SHLIB_PATH + library_names_spec='${libname}${release}.sl.$versuffix ${libname}${release}.sl.$major $libname.sl' + soname_spec='${libname}${release}.sl.$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6*) + version_type=osf + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so.$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' + finish_cmds='PATH="$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + + if test -f /lib/ld.so.1; then + dynamic_linker='GNU ld.so' + else + # Only the GNU ld.so supports shared libraries on MkLinux. + case "$host_cpu" in + powerpc*) dynamic_linker=no ;; + *) dynamic_linker='Linux ld.so' ;; + esac + fi + ;; + +netbsd* | openbsd*) + version_type=sunos + library_names_spec='${libname}${release}.so.$versuffix' + finish_cmds='PATH="$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4*) + version_type=osf + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so.$versuffix $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so.$major' + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris2*) + version_type=linux + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}.so.$versuffix' + finish_cmds='PATH="$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4.2uw2*) + version_type=linux + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major $libname.so' + soname_spec='${libname}${release}.so.$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$ac_t$dynamic_linker" +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6 + +echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6 +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case "$host_os" in +aix*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds;\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +esac + +echo "$ac_t$enable_shared" 1>&6 + +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes + +echo "checking whether to build static libraries... $enable_static" 1>&6 + +echo $ac_n "checking for objdir... $ac_c" 1>&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$ac_t$objdir" 1>&6 + +# Copy echo and quote the copy, instead of the original, because it is +# used later. +ltecho="$echo" + +# Now quote all the things that may contain metacharacters. +for var in ltecho old_CC old_CFLAGS old_CPPFLAGS old_LD old_NM old_RANLIB \ + old_LN_S AR CC LD LN_S NM reload_flag reload_cmds wl pic_flag \ + link_static_flag no_builtin_flag export_dynamic_flag_spec \ + libname_spec library_names_spec soname_spec RANLIB \ + old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds postinstall_cmds postuninstall_cmds \ + allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe \ + hardcode_libdir_flag_spec hardcode_libdir_separator; do + + case "$var" in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | archive_cmds | \ + postinstall_cmds | postuninstall_cmds | finish_cmds) + # Double-quote double-evaled strings. + eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\"\`" + ;; + *) + eval "$var=\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`" + ;; + esac +done + +ofile=libtool +trap "$rm $ofile; exit 1" 1 2 15 +echo creating $ofile +$rm $ofile +cat < $ofile +#! /bin/sh + +# libtool - Provide generalized library-building support services. +# Generated automatically by $PROGRAM - GNU $PACKAGE $VERSION +# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh. +# +# Copyright (C) 1996-1998 Free Software Foundation, Inc. +# Gordon Matzigkeit , 1996 +# +# This program 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This program was configured as follows, +# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# +# CC="$old_CC" CFLAGS="$old_CFLAGS" CPPFLAGS="$old_CPPFLAGS" \\ +# LD="$old_LD" NM="$old_NM" RANLIB="$old_RANLIB" LN_S="$old_LN_S" \\ +# $0$ltconfig_args +# +# Compiler and other test output produced by $progname, useful for +# debugging $progname, is in ./config.log if it exists. + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="sed -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "\${CDPATH+set}" = set; then CDPATH=; export CDPATH; fi + +# An echo program that does not interpret backslashes. +echo="$ltecho" + +# The version of $progname that generated this script. +LTCONFIG_VERSION="$VERSION" + +# Shell to use when invoking shell scripts. +SHELL=${CONFIG_SHELL-/bin/sh} + +# Whether or not to build libtool libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build old-style libraries. +build_old_libs=$enable_static + +# The host system. +host_alias="$host_alias" +host="$host" + +# The archiver. +AR="$AR" + +# The default C compiler. +CC="$CC" + +# The linker used to build libraries. +LD="$LD" + +# Whether we need hard or soft links. +LN_S="$LN_S" + +# A BSD-compatible nm program. +NM="$NM" + +# The name of the directory that contains temporary libtool files. +objdir="$objdir" + +# How to create reloadable object files. +reload_flag="$reload_flag" +reload_cmds="$reload_cmds" + +# How to pass a linker flag through the compiler. +wl="$wl" + +# Additional compiler flags for building library objects. +pic_flag="$pic_flag" + +# Compiler flag to prevent dynamic linking. +link_static_flag="$link_static_flag" + +# Compiler flag to turn off builtin functions. +no_builtin_flag="$no_builtin_flag" + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="$export_dynamic_flag_spec" + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec="$libname_spec" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec="$library_names_spec" + +# The coded name of the library, if different from the real name. +soname_spec="$soname_spec" + +# Commands used to build and install an old-style archive. +RANLIB="$RANLIB" +old_archive_cmds="$old_archive_cmds" +old_postinstall_cmds="$old_postinstall_cmds" +old_postuninstall_cmds="$old_postuninstall_cmds" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="$old_archive_from_new_cmds" + +# Commands used to build and install a shared archive. +archive_cmds="$archive_cmds" +postinstall_cmds="$postinstall_cmds" +postuninstall_cmds="$postuninstall_cmds" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="$allow_undefined_flag" + +# Flag that forces no undefined symbols. +no_undefined_flag="$no_undefined_flag" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="$finish_cmds" + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval="$finish_eval" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="$global_symbol_pipe" + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec="$hardcode_libdir_flag_spec" + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator="$hardcode_libdir_separator" + +# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +EOF + +case "$host_os" in +aix3*) + cat <<\EOF >> $ofile +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "${COLLECT_NAMES+set}" != set; then + COLLECT_NAMES= + export COLLECT_NAMES +fi + +EOF + ;; +esac + +# Append the ltmain.sh script. +cat "$ltmain" >> $ofile || (rm -f $ofile; exit 1) + +chmod +x $ofile +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/buildscripts/ltmain.sh b/buildscripts/ltmain.sh new file mode 100644 index 0000000000..e9350b3fab --- /dev/null +++ b/buildscripts/ltmain.sh @@ -0,0 +1,2453 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun ltconfig. +# +# Copyright (C) 1996-1998 Free Software Foundation, Inc. +# Gordon Matzigkeit , 1996 +# +# This program 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 2 of the License, or +# (at your option) any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# The name of this program. +progname=`$echo "$0" | sed 's%^.*/%%'` +modename="$progname" + +# Constants. +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.2 + +default_mode= +help="Try \`$progname --help' for more information." +magic="%%%MAGIC variable%%%" +mkdir="mkdir" +mv="mv -f" +rm="rm -f" + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' + +# NLS nuisances. +# Only set LANG and LC_ALL to C if already set. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LANG+set}" = set; then LANG=C; export LANG; fi + +if test "$LTCONFIG_VERSION" != "$VERSION"; then + echo "$modename: ltconfig version \`$LTCONFIG_VERSION' does not match $PROGRAM version \`$VERSION'" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + echo "$modename: not configured to build any kind of library" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= + +# Parse our command line options once, thoroughly. +while test $# -gt 0 +do + arg="$1" + shift + + case "$arg" in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case "$prev" in + execute_dlfiles) + eval "$prev=\"\$$prev \$arg\"" + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case "$arg" in + --help) + show_help=yes + ;; + + --version) + echo "$PROGRAM (GNU $PACKAGE) $VERSION" + exit 0 + ;; + + --dry-run | -n) + run=: + ;; + + --features) + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + exit 0 + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --quiet | --silent) + show=: + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 +fi + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + case "$nonopt" in + *cc | *++ | gcc* | *-gcc*) + mode=link + for arg + do + case "$arg" in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case "$mode" in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + lastarg= + srcfile="$nonopt" + suppress_output= + + for arg + do + # Accept any command-line options. + case "$arg" in + -o) + $echo "$modename: you cannot specify the output filename with \`-o'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + esac + + # Accept the current argument as the source file. + lastarg="$srcfile" + srcfile="$arg" + + # Aesthetically quote the previous argument. + + # Backslashify any backslashes, double quotes, and dollar signs. + # These are the only characters that are still specially + # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly in scan + # sets, so we specify it separately. + case "$lastarg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + lastarg="\"$lastarg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + done + + # Get the name of the library object. + libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + + # Recognize several different file suffixes. + xform='[cCFSfms]' + case "$libobj" in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case "$libobj" in + *.lo) obj=`$echo "X$libobj" | $Xsed -e 's/\.lo$/.o/'` ;; + *) + $echo "$modename: cannot determine name of library object from \`$srcfile'" 1>&2 + exit 1 + ;; + esac + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + $run $rm $obj $libobj + trap "$run $rm $obj $libobj; exit 1" 1 2 15 + else + $run $rm $libobj + trap "$run $rm $libobj; exit 1" 1 2 15 + fi + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + # All platforms use -DPIC, to notify preprocessed assembler code. + $show "$base_compile$pic_flag -DPIC $srcfile" + if $run eval "$base_compile\$pic_flag -DPIC \$srcfile"; then : + else + test -n "$obj" && $run $rm $obj + exit 1 + fi + + # If we have no pic_flag, then copy the object into place and finish. + if test -z "$pic_flag"; then + $show "$LN_S $obj $libobj" + $run $LN_S $obj $libobj + exit $? + fi + + # Just move the object, then go on to compile the next one + $show "$mv $obj $libobj" + $run $mv $obj $libobj || exit 1 + + # Allow error messages only from the first compilation. + suppress_output=' >/dev/null 2>&1' + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + # Suppress compiler output if we already did a PIC compilation. + $show "$base_compile $srcfile$suppress_output" + if $run eval "$base_compile \$srcfile$suppress_output"; then : + else + $run $rm $obj $libobj + exit 1 + fi + fi + + # Create an invalid libtool object if no PIC, so that we do not + # accidentally link it into a program. + if test "$build_libtool_libs" != yes; then + $show "echo timestamp > $libobj" + $run eval "echo timestamp > \$libobj" || exit $? + fi + + exit 0 + ;; + + # libtool link mode + link) + modename="$modename: link" + CC="$nonopt" + allow_undefined=yes + compile_command="$CC" + finalize_command="$CC" + + compile_shlibpath= + finalize_shlibpath= + deplibs= + dlfiles= + dlprefiles= + export_dynamic=no + hardcode_libdirs= + libobjs= + link_against_libtool_libs= + ltlibs= + objs= + prev= + prevarg= + release= + rpath= + perm_rpath= + temp_rpath= + vinfo= + + # We need to know -static, to get the right output filenames. + for arg + do + case "$arg" in + -all-static | -static) + if test "X$arg" = "X-all-static" && test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 + fi + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + for arg + do + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case "$prev" in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case "$prev" in + dlfiles|dlprefiles) + case "$arg" in + *.la | *.lo) ;; # We handle these cases below. + *) + dlprefiles="$dlprefiles $arg" + test "$prev" = dlfiles && dlfiles="$dlfiles $arg" + prev= + ;; + esac + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath) + rpath="$rpath $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi + + prevarg="$arg" + + case "$arg" in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + if test "$export_dynamic" != yes; then + export_dynamic=yes + if test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + else + arg= + fi + + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + fi + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's%^-L\(.*\)$%\1%'` + case "$dir" in + /* | [A-Za-z]:\\*) + # Add the corresponding hardcode_libdir_flag, if it is not identical. + ;; + *) + $echo "$modename: \`-L$dir' cannot specify a relative directory" 1>&2 + exit 1 + ;; + esac + deplibs="$deplibs $arg" + ;; + + -l*) deplibs="$deplibs $arg" ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -o) prev=output ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -static) + # If we have no pic_flag, then this is the same as -all-static. + if test -z "$pic_flag" && test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + ;; + + *.o | *.a) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A library object. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test "$build_libtool_libs" = yes; then + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e 's/\.lo$/\.o/'` + prev= + fi + libobjs="$libobjs $arg" + ;; + + *.la) + # A libtool-controlled library. + + dlname= + libdir= + library_names= + old_library= + + # Check to see that this really is a libtool archive. + if (sed -e '2q' $arg | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : + else + $echo "$modename: \`$arg' is not a valid libtool archive" 1>&2 + exit 1 + fi + + # If there is no directory component, then add one. + case "$arg" in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$libdir"; then + $echo "$modename: \`$arg' contains no -rpath information" 1>&2 + exit 1 + fi + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$arg'" 1>&2 + exit 1 + fi + + # Find the relevant object directory and library name. + name=`$echo "X$arg" | $Xsed -e 's%^.*/%%' -e 's/\.la$//' -e 's/^lib//'` + dir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$arg"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + + # This library was specified with -dlopen. + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + if test -z "$dlname"; then + # If there is no dlname, we need to preload. + prev=dlprefiles + else + # We should not create a dependency on this library, but we + # may need any libraries it requires. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + prev= + continue + fi + fi + + # The library was specified with -dlpreopen. + if test "$prev" = dlprefiles; then + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + dlprefiles="$dlprefiles $dir/$old_library" + else + dlprefiles="$dlprefiles $dir/$linklib" + fi + prev= + fi + + if test "$build_libtool_libs" = yes && test -n "$library_names"; then + link_against_libtool_libs="$link_against_libtool_libs $arg" + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + + # This is the magic to use -rpath. + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + # Put the magic libdir with the hardcode flag. + hardcode_libdirs="$libdir" + libdir="@HARDCODE_LIBDIRS@" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + libdir= + fi + fi + + if test -n "$libdir"; then + eval flag=\"$hardcode_libdir_flag_spec\" + + compile_command="$compile_command $flag" + finalize_command="$finalize_command $flag" + fi + elif test -n "$runpath_var"; then + # Do the same for the permanent run path. + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + + + case "$hardcode_action" in + immediate) + if test "$hardcode_direct" = no; then + compile_command="$compile_command $dir/$linklib" + elif test "$hardcode_minus_L" = no; then + compile_command="$compile_command -L$dir -l$name" + elif test "$hardcode_shlibpath_var" = no; then + compile_shlibpath="$compile_shlibpath$dir:" + compile_command="$compile_command -l$name" + fi + ;; + + relink) + # We need an absolute path. + case "$dir" in + /* | [A-Za-z]:\\*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit 1 + fi + dir="$absdir" + ;; + esac + + if test "$hardcode_direct" = yes; then + compile_command="$compile_command $dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + compile_command="$compile_command -L$dir -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + compile_shlibpath="$compile_shlibpath$dir:" + compile_command="$compile_command -l$name" + fi + ;; + + *) + $echo "$modename: \`$hardcode_action' is an unknown hardcode action" 1>&2 + exit 1 + ;; + esac + + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + finalize_command="$finalize_command $libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + finalize_command="$finalize_command -L$libdir -l$name" + elif test "$hardcode_shlibpath_var" = yes; then + finalize_shlibpath="$finalize_shlibpath$libdir:" + finalize_command="$finalize_command -l$name" + else + # We cannot seem to hardcode it, guess we'll fake it. + finalize_command="$finalize_command -L$libdir -l$name" + fi + else + # Transform directly to old archives if we don't build new libraries. + if test -n "$pic_flag" && test -z "$old_library"; then + $echo "$modename: cannot find static library for \`$arg'" 1>&2 + exit 1 + fi + + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_command="$compile_command $dir/$linklib" + finalize_command="$finalize_command $dir/$linklib" + else + compile_command="$compile_command -L$dir -l$name" + finalize_command="$finalize_command -L$dir -l$name" + fi + fi + + # Add in any libraries that this one depends upon. + compile_command="$compile_command$dependency_libs" + finalize_command="$finalize_command$dependency_libs" + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + ;; + esac + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -n "$vinfo" && test -n "$release"; then + $echo "$modename: you cannot specify both \`-version-info' and \`-release'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + oldlib= + oldobjs= + case "$output" in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + */* | *\\*) + $echo "$modename: output file \`$output' must have no directory components" 1>&2 + exit 1 + ;; + + *.a) + # Now set the variables for building old libraries. + build_libtool_libs=no + build_old_libs=yes + oldlib="$output" + $show "$rm $oldlib" + $run $rm $oldlib + ;; + + *.la) + # Make sure we only generate libraries of the form `libNAME.la'. + case "$output" in + lib*) ;; + *) + $echo "$modename: libtool library \`$arg' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + name=`$echo "X$output" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval libname=\"$libname_spec\" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + current=0 + revision=0 + age=0 + + if test -n "$objs"; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects:$objs" 2>&1 + exit 1 + fi + + # How the heck are we supposed to write a wrapper for a shared library? + if test -n "$link_against_libtool_libs"; then + $echo "$modename: libtool library \`$output' may not depend on uninstalled libraries:$link_against_libtool_libs" 1>&2 + exit 1 + fi + + if test -n "$dlfiles$dlprefiles"; then + $echo "$modename: warning: \`-dlopen' is ignored while creating libtool libraries" 1>&2 + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -z "$rpath"; then + $echo "$modename: you must specify an installation directory with \`-rpath'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + set dummy $rpath + if test $# -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + # Parse the version information argument. + IFS="${IFS= }"; save_ifs="$IFS"; IFS=':' + set dummy $vinfo + IFS="$save_ifs" + + if test -n "$5"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + test -n "$2" && current="$2" + test -n "$3" && revision="$3" + test -n "$4" && age="$4" + + # Check that each of the things are valid numbers. + case "$current" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case "$revision" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case "$age" in + 0 | [1-9] | [1-9][0-9]*) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + if test $age -gt $current; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + fi + + # Calculate the version variables. + version_vars="version_type current age revision" + case "$version_type" in + none) ;; + + linux) + version_vars="$version_vars major versuffix" + major=`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + version_vars="$version_vars versuffix verstring" + major=`expr $current - $age` + versuffix="$current.$age.$revision" + verstring="$versuffix" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test $loop != 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + version_vars="$version_vars major versuffix" + major="$current" + versuffix="$current.$revision" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 + ;; + esac + + # Create the output directory, or remove our outputs if we need to. + if test -d $objdir; then + $show "$rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.*" + $run $rm $objdir/$output $objdir/$libname.* $objdir/${libname}${release}.* + else + $show "$mkdir $objdir" + $run $mkdir $objdir + status=$? + if test $status -eq 0 || test -d $objdir; then : + else + exit $status + fi + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + # Add libc to deplibs on all systems. + dependency_libs="$deplibs" + deplibs="$deplibs -lc" + + if test "$build_libtool_libs" = yes; then + # Get the real and link names of the library. + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + lib="$objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are PIC. + test -z "$pic_flag" && libobjs=`$echo "X$libobjs " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//g'` + + # Do each of the archive commands. + eval cmds=\"$archive_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Create links to the real library. + for linkname in $linknames; do + $show "(cd $objdir && $LN_S $realname $linkname)" + $run eval '(cd $objdir && $LN_S $realname $linkname)' || exit $? + done + + # If -export-dynamic was specified, set the dlname. + if test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + + # Now set the variables for building old libraries. + oldlib="$objdir/$libname.a" + ;; + + *.lo | *.o) + if test -n "$link_against_libtool_libs"; then + $echo "$modename: error: cannot link libtool libraries into reloadable objects" 1>&2 + exit 1 + fi + + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored while creating objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles"; then + $echo "$modename: warning: \`-dlopen' is ignored while creating objects" 1>&2 + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored while creating objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored while creating objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 + fi + + case "$output" in + *.lo) + if test -n "$objs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit 1 + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e 's/\.lo$/.o/'` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Create the old-style object. + reload_objs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` + + output="$obj" + eval cmds=\"$reload_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + test -z "$libobj" && exit 0 + + if test "$build_libtool_libs" != yes; then + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + $show "echo timestamp > $libobj" + $run eval "echo timestamp > $libobj" || exit $? + exit 0 + fi + + if test -n "$pic_flag"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs" + output="$libobj" + eval cmds=\"$reload_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + else + # Just create a symlink. + $show "$LN_S $obj $libobj" + $run $LN_S $obj $libobj || exit 1 + fi + + exit 0 + ;; + + *) + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored while linking programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored while creating objects" 1>&2 + fi + + if test -n "$rpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + # Put the magic libdir with the hardcode flag. + hardcode_libdirs="$libdir" + libdir="@HARDCODE_LIBDIRS@" + else + # Just accumulate the unique libdirs. + case "$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator" in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + libdir= + fi + fi + + if test -n "$libdir"; then + eval flag=\"$hardcode_libdir_flag_spec\" + + compile_command="$compile_command $flag" + finalize_command="$finalize_command $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + fi + + # Substitute the hardcoded libdirs into the compile commands. + if test -n "$hardcode_libdir_separator"; then + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@HARDCODE_LIBDIRS@%$hardcode_libdirs%g"` + fi + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` + finalize_command=`$echo "X$finalize_command " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` + fi + + if test "$export_dynamic" = yes && test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${output}S.c" + else + dlsyms= + fi + + if test -n "$dlsyms"; then + # Add our own program objects to the preloaded list. + dlprefiles=`$echo "X$objs$dlprefiles " | $Xsed -e 's/\.lo /.o /g' -e 's/ $//'` + + # Discover the nlist of each of the dlfiles. + nlist="$objdir/${output}.nm" + + if test -d $objdir; then + $show "$rm $nlist ${nlist}T" + $run $rm "$nlist" "${nlist}T" + else + $show "$mkdir $objdir" + $run $mkdir $objdir + status=$? + if test $status -eq 0 || test -d $objdir; then : + else + exit $status + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + # Parse the name list into a source file. + $show "creating $objdir/$dlsyms" + if test -z "$run"; then + # Make sure we at least have an empty file. + test -f "$nlist" || : > "$nlist" + + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + wcout=`wc "$nlist" 2>/dev/null` + count=`echo "X$wcout" | $Xsed -e 's/^[ ]*\([0-9][0-9]*\).*$/\1/'` + (test "$count" -ge 0) 2>/dev/null || count=-1 + else + $rm "$nlist"T + count=-1 + fi + + case "$dlsyms" in + "") ;; + *.c) + $echo > "$objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$output' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define dld_preloaded_symbol_count some_other_symbol +#define dld_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test -f "$nlist"; then + sed -e 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> "$objdir/$dlsyms" + else + echo '/* NONE */' >> "$objdir/$dlsyms" + fi + + $echo >> "$objdir/$dlsyms" "\ + +#undef dld_preloaded_symbol_count +#undef dld_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define __ptr_t void * +#else +# define __ptr_t char * +#endif + +/* The number of symbols in dld_preloaded_symbols, -1 if unsorted. */ +int dld_preloaded_symbol_count = $count; + +/* The mapping between symbol names and symbols. */ +struct { + char *name; + __ptr_t address; +} +dld_preloaded_symbols[] = +{\ +" + + if test -f "$nlist"; then + sed 's/^\(.*\) \(.*\)$/ {"\1", (__ptr_t) \&\2},/' < "$nlist" >> "$objdir/$dlsyms" + fi + + $echo >> "$objdir/$dlsyms" "\ + {0, (__ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif\ +" + ;; + + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + esac + fi + + # Now compile the dynamic symbol file. + $show "(cd $objdir && $CC -c$no_builtin_flag \"$dlsyms\")" + $run eval '(cd $objdir && $CC -c$no_builtin_flag "$dlsyms")' || exit $? + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$objdir/${output}S.o%"` + elif test "$export_dynamic" != yes; then + test -n "$dlfiles$dlprefiles" && $echo "$modename: warning: \`-dlopen' and \`-dlpreopen' are ignored without \`-export-dynamic'" 1>&2 + else + # We keep going just in case the user didn't refer to + # dld_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test -z "$link_against_libtool_libs" || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + + # We have no uninstalled library dependencies, so finalize right now. + $show "$compile_command" + $run eval "$compile_command" + exit $? + fi + + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'%g'` + finalize_command=`$echo "X$finalize_command" | $Xsed -e 's%@OUTPUT@%'"$objdir/$output"'T%g'` + + # Create the binary in the object directory, then wrap it. + if test -d $objdir; then : + else + $show "$mkdir $objdir" + $run $mkdir $objdir + status=$? + if test $status -eq 0 || test -d $objdir; then : + else + exit $status + fi + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case "$dir" in + /* | [A-Za-z]:\\*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + # Delete the old output file. + $run $rm $output + + if test -n "$compile_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_command="$runpath_var=\"$rpath\$$runpath_var\" $compile_command" + finalize_command="$runpath_var=\"$rpath\$$runpath_var\" $finalize_command" + fi + + case "$hardcode_action" in + relink) + # AGH! Flame the AIX and HP-UX people for me, will ya? + $echo "$modename: warning: using a buggy system linker" 1>&2 + $echo "$modename: relinking will be required before \`$output' can be installed" 1>&2 + ;; + esac + + $show "$compile_command" + $run eval "$compile_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the finalize command for shipping. + finalize_command=`$echo "X$finalize_command" | $Xsed -e "$sed_quote_subst"` + + # Quote $echo for shipping. + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + $rm $output + trap "$rm $output; exit 1" 1 2 15 + + $echo > $output "\ +#! /bin/sh + +# $output - temporary wrapper script for $objdir/$output +# Generated by ltmain.sh - GNU $PACKAGE $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of \``pwd`'. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=; export CDPATH; fi + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + link_against_libtool_libs='$link_against_libtool_libs' + finalize_command=\"$finalize_command\" +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" = \"$magic\"; then : + else + echo=\"$qecho\" + file=\"\$0\" + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | sed -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + /* | [A-Za-z]:\\*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | sed -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" + + progdir=\"\$thisdir/$objdir\" + program='$output' + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/:*\$//'\` + + export $shlibpath_var +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + + # Export the path to the program. + PATH=\"\$progdir:\$PATH\" + export PATH + + exec \$program \${1+\"\$@\"} + + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit 1 + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" + chmod +x $output + fi + exit 0 + ;; + esac + + # See if we need to build an old-fashioned archive. + if test "$build_old_libs" = "yes"; then + # Transform .lo files to .o files. + oldobjs="$objs"`$echo "X$libobjs " | $Xsed -e 's/[^ ]*\.a //g' -e 's/\.lo /.o /g' -e 's/ $//g'` + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" + else + eval cmds=\"$old_archive_cmds\" + fi + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Now create the libtool archive. + case "$output" in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.a" + + $show "creating $output" + + # Only create the output if not a dry run. + if test -z "$run"; then + $echo > $output "\ +# $output - a libtool library file +# Generated by ltmain.sh - GNU $PACKAGE $VERSION + +# The name that we can dlopen(3). +dlname='$dlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Directory that this library needs to be installed in: +libdir='$install_libdir'\ +" + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $objdir && $LN_S ../$output $output)" + $run eval "(cd $objdir && $LN_S ../$output $output)" || exit 1 + ;; + esac + exit 0 + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional /bin/sh argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL"; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir= + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case "$arg" in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case "$arg" in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit 1 + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test -n "$isdir"; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test $# -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + fi + case "$destdir" in + /* | [A-Za-z]:\\*) ;; + *) + for file in $files; do + case "$file" in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case "$file" in + *.a) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + library_names= + old_library= + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir="`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/" + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$realname $destdir/$realname" + $run eval "$install_prog $dir/$realname $destdir/$realname" || exit $? + test "X$dlname" = "X$realname" && dlname= + + if test $# -gt 0; then + # Delete the old symlinks. + rmcmd="$rm" + for linkname + do + rmcmd="$rmcmd $destdir/$linkname" + done + $show "$rmcmd" + $run $rmcmd + + # ... and create new ones. + for linkname + do + test "X$dlname" = "X$linkname" && dlname= + $show "(cd $destdir && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $LN_S $realname $linkname)" + done + fi + + if test -n "$dlname"; then + # Install the dynamically-loadable library. + $show "$install_prog $dir/$dlname $destdir/$dlname" + $run eval "$install_prog $dir/$dlname $destdir/$dlname" || exit $? + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + $show "$install_prog $file $destdir/$name" + $run eval "$install_prog $file $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case "$destfile" in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e 's/\.lo$/\.o/'` + ;; + *.o) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e 's/\.lo$/\.o/'` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit 0 + ;; + + *) + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then + link_against_libtool_libs= + finalize_command= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Check the variables that should have been set. + if test -z "$link_against_libtool_libs" || test -z "$finalize_command"; then + $echo "$modename: invalid libtool wrapper script \`$file'" 1>&2 + exit 1 + fi + + finalize=yes + for lib in $link_against_libtool_libs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case "$lib" in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/`$echo "X$lib" | $Xsed -e 's%^.*/%%g'`" + if test -z "$libdir"; then + $echo "$modename: warning: \`$lib' contains no -rpath information" 1>&2 + elif test -f "$libfile"; then : + else + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + if test "$hardcode_action" = relink; then + if test "$finalize" = yes; then + $echo "$modename: warning: relinking \`$file' on behalf of your buggy system linker" 1>&2 + $show "$finalize_command" + if $run eval "$finalize_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + continue + fi + file="$objdir/$file"T + else + $echo "$modename: warning: cannot relink \`$file' on behalf of your buggy system linker" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + $show "$install_prog$stripme $file $dest" + $run eval "$install_prog\$stripme \$file \$dest" || exit $? + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + # Do each command in the postinstall commands. + eval cmds=\"$old_postinstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec $SHELL $0 --finish$current_libdirs + exit 1 + fi + + exit 0 + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + eval cmds=\"$finish_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" + fi + done + fi + + echo "------------------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + echo " $libdir" + done + echo + echo "To link against installed libraries in a given directory, LIBDIR," + echo "you must use the \`-LLIBDIR' flag during linking." + echo + echo " You will also need to do one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + echo " - use the \`$flag' linker flag" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + echo "See any operating system documentation about shared libraries for" + echo "more information, such as the ld(1) and ld.so(8) manual pages." + echo "------------------------------------------------------------------------------" + exit 0 + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit 1 + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test -f "$file"; then : + else + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + dir= + case "$file" in + *.la) + # Check to see that this really is a libtool archive. + if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case "$file" in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (sed -e '4q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then + # If there is no directory component, then add one. + case "$file" in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + + # Now actually exec the command. + eval "exec \$cmd$args" + + $echo "$modename: cannot exec \$cmd$args" + exit 1 + else + # Display what would be done. + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + $echo "$cmd$args" + exit 0 + fi + ;; + + # libtool uninstall mode + uninstall) + modename="$modename: uninstall" + rm="$nonopt" + files= + + for arg + do + case "$arg" in + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + rmfiles="$file" + + case "$name" in + *.la) + # Possibly a libtool archive, so verify it. + if (sed -e '2q' $file | egrep '^# Generated by ltmain\.sh') >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $dir/$n" + test "X$n" = "X$dlname" && dlname= + done + test -n "$dlname" && rmfiles="$rmfiles $dir/$dlname" + test -n "$old_library" && rmfiles="$rmfiles $dir/$old_library" + + $show "$rm $rmfiles" + $run $rm $rmfiles + + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + IFS="${IFS= }"; save_ifs="$IFS"; IFS=';' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + done + IFS="$save_ifs" + fi + + # FIXME: should reinstall the best remaining shared library. + fi + ;; + + *.lo) + if test "$build_old_libs" = yes; then + oldobj=`$echo "X$name" | $Xsed -e 's/\.lo$/\.o/'` + rmfiles="$rmfiles $dir/$oldobj" + fi + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + + *) + $show "$rm $rmfiles" + $run $rm $rmfiles + ;; + esac + done + exit 0 + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + ;; + esac + + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 +fi # test -z "$show_help" + +# We need to display help for each of the modes. +case "$mode" in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + +-n, --dry-run display commands without modifying any files + --features display configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --version print version information + +MODE must be one of the following: + + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE." + exit 0 + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to dld_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only +library objects (\`.lo' files) may be specified, and \`-rpath' is required. + +If OUTPUT-FILE ends in \`.a', then a standard library is created using \`ar' +and \`ranlib'. + +If OUTPUT-FILE ends in \`.lo' or \`.o', then a reloadable object file is +created, otherwise an executable program is created." + ;; + +uninstall) + $echo +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; +esac + +echo +$echo "Try \`$modename --help' for more information about other modes." + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/buildscripts/mail-address.sh b/buildscripts/mail-address.sh new file mode 100644 index 0000000000..37e1141751 --- /dev/null +++ b/buildscripts/mail-address.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# mail-address +if [ "$MAILADDRESS" != "" ]; then + echo $MAILADDRESS +else + echo "mail-address:6: warning: \$MAILADDRESS undefined" > /dev/stderr + echo $USER@`hostname` +fi diff --git a/buildscripts/mf-to-table.py b/buildscripts/mf-to-table.py new file mode 100644 index 0000000000..3f4d99006d --- /dev/null +++ b/buildscripts/mf-to-table.py @@ -0,0 +1,327 @@ +#!@PYTHON@ + +# mf-to-table.py -- convert spacing info in MF logs .ly and .tex +# +# source file of the GNU LilyPond music typesetter +# +# (c) 1997 Han-Wen Nienhuys + +import os +import sys +import getopt +from string import * +import regex +import regsub +import time + +sys.path.append ('@abs-step-bindir@') + +(options, files) = getopt.getopt( + sys.argv[1:], 'a:d:hl:o:p:t:', + ['afm=', 'outdir=', 'dep=', 'ly=', 'tex=', 'debug', 'help', 'package=']) + +for opt in options: + o = opt[0] + a = opt[1] + if o == '-p' or o == '--package': + topdir = a + +sys.path.append (topdir + '/stepmake/bin') +from packagepython import * +package = Package (topdir) +packager = Packager () + +from packagepython import * +from flower import * + +begin_autometric_re = regex.compile('@{') +end_autometric_re = regex.compile('@}') +include_re = regex.compile ('(\([a-zA-Z_0-9-]+\.mf\)') +autometric_re = regex.compile('@{\(.*\)@}') +version = '0.7' +postfixes = ['log', 'dvi', '2602gf', 'tfm'] + +class Feta_file(File): + """Read Feta metrics from a metafont log-file.""" + + def include_scan (self, line): + include_pos = include_re.search (line) + while include_pos <> -1: + self.dependencies.append (include_re.group (1)) + + line = line[include_pos + 1:] + include_pos = include_re.search (line) + + def read_autometricline(self): + line = '' + while end_autometric_re.search(line) == -1 and not self.eof(): + suf = File.readline(self) + self.include_scan (suf) + if begin_autometric_re.search(line) == -1: + line = '' + line = line + regsub.sub('\n','', suf) + + if self.eof(): + return '' + + return line; + def readline(self): + """return what is enclosed in one @{ @} pair""" + line = ''; + while autometric_re.search(line) == -1 and not self.eof(): + line = self.read_autometricline() + + if self.eof(): + return ''; + + return autometric_re.group(1); + def __init__(self, nm): + File.__init__(self, nm) + self.dependencies = [] + def do_file(infile_nm): + infile = readline(); + +# +# FIXME: should parse output for {} to do indenting. +# +class Indentable_file(File): + """Output file with support for indentation""" + def __init__(self,nm, mode): + File.__init__(self,nm,mode) + self.current_indent_ = 0 + self.delta_indent_ = 4 + def writeline (self, str): + File.write(self, str) + def writeeol(self): + File.write(self, '\n') + File.write(self, ' '* self.current_indent_) + + def indent(self): + self.current_indent_ = self.delta_indent_ + self.current_indent_; + def dedent(self): + self.current_indent_ = self.current_indent_ - self.delta_indent_; + if self.current_indent_ < 0: + raise 'Nesting!' + + def write(self, str): + lines = split(str, '\n') + for l in lines[:-1]: + self.writeline(l) + self.writeeol() + self.writeline (lines[-1]) + +class Afm_file (File): + def print_f_dimen(self, f): + f = f * 1000 + + dimstr = '%.2f' % f + + # try to mask rounding errors + if (dimstr == '-0.00'): + dimstr = '0.00' + self.write( dimstr +' '); + + def neg_print_dimen(self, str): + self.print_f_dimen(-atof(str)) + def print_dimen(self, str): + self.print_f_dimen(atof(str)) + def def_symbol (self, code, lily_id, tex_id, xdim, ydim): + self.write ('C %s; N %s-%s; B ' % (code, self.groupname, lily_id)) + + self.neg_print_dimen(xdim [0]) + self.neg_print_dimen(ydim [0]) + self.print_dimen(xdim [1]) + self.print_dimen(ydim [1]) + + self.write (';\n'); + + def start (self,nm): + self.write ('Start%s\n' % nm) + def end (self,nm): + self.write ('End%s\n' % nm) + +class Ly_file(Indentable_file): + """extra provisions for mozarella quirks""" + def print_lit(self, str): + self.write('\"%s\"\t' % str) + + def print_f_dimen(self, f): + dimstr = '%.2f' % f + + # try to mask rounding errors + if (dimstr == '-0.00'): + dimstr = '0.00' + self.write( dimstr +'\\pt\t'); + + def print_dimen(self, str): + self.print_f_dimen(atof(str)) + + def neg_print_dimen(self, str): + self.print_f_dimen(-atof(str)); + + def def_symbol(self, code, lily_id, tex_id, xdim, ydim): + self.print_lit(lily_id) + self.print_lit('\\\\' + tex_id) + + self.neg_print_dimen(xdim [0]) + self.print_dimen(xdim [1]) + self.neg_print_dimen(ydim [0]) + self.print_dimen(ydim [1]) + self.write('\n') + + +class Log_reader: + """Read logs, destill info, and put into output files""" + def output_label(self, line): + + if not line: + return; + tags = split(line, '@:') + label = tags[0] + name = tags[1] + ly = self.lyfile + afm = self.afmfile + if tags[0] == 'font': + ly.indent() + ly.write("% name=\\symboltables {\n") + self.texfile.write("% name\n") + + afm.write ('FontName %s\n' % name) + afm.start ('FontMetrics') + afm.start ('CharMetrics') + + elif label == "group": + ly.indent() + ly.print_lit(name) + ly.write(' = \\table {\n') + self.texfile.write("% " + name + "\n") + afm.groupname = name + elif label == "puorg": + ly.dedent() + ly.write("}\n") + self.texfile.write("\n") + elif label == "tnof": + ly.dedent() + ly.write("% } % $name\n") + afm.end ('CharMetrics') + afm.end('FontMetrics'); + elif label == "char": + code = tags[2] + id = tags [7] + texstr = tags [8] + xdim = tags[3:5] + ydim = tags[5:7] + ly.def_symbol(code, id, texstr, xdim, ydim) + + self.texfile.write("\\fetdef\\%s{%s}\n" % (texstr, code)) + afm.def_symbol (code, id, texstr, xdim, ydim) + else: + raise 'unknown label: ' + label + + def writedeps (self, deps): + if not len (deps): + sys.stderr.write ('Huh, no main target??') + return + filename = deps[0] + split = os.path.splitext(filename) + basename=split[0]; + + targets = map (lambda x,y = basename, z = self.outdir: z + '/' + y + '.' + x, postfixes) + depstring = reduce(lambda x,y: x + ' ' + y, deps) + dependencies = map (lambda x, y=depstring: x + ': ' + y, targets) + for x in dependencies: + self.depfile.write (x + '\n') + + def do_file(self,filenm): + self.lyfile.write ('\n% input from ' + filenm + '\n') + self.texfile.write ('\n% input from ' + filenm + '\n') + feta = Feta_file(filenm) + while not feta.eof(): + line = feta.readline() + self.output_label(line) + feta.close() + + self.writedeps (feta.dependencies) + + def __init__(self, lyfile_nm, texfile_nm, depfile_nm, afmfile_nm): + self.lyfile = Ly_file(lyfile_nm, 'w') + self.texfile = Indentable_file(texfile_nm, 'w') + self.depfile = File (depfile_nm, 'w') + self.afmfile = Afm_file (afmfile_nm, 'w') + headerstr = '%% Creator: %s\n%% Automatically generated on\n%% Do not edit' % \ + (program_id() ) + + self.lyfile.write(headerstr) + self.texfile.write(headerstr) + self.depfile.write ('# automatically generated by %s\n' % program_id ()) + + def close(self): + self.lyfile.close() + self.texfile.close() + self.depfile.close () + + def __del__(self): + self.close() + +def today_str(): + return time.asctime(time.localtime(time.time())) + +def program_id(): + return 'mf-to-table.py version ' + version; + +def identify(): + sys.stdout.write(program_id() + '\n') + +def help(): + sys.stdout.write("Usage: mf-to-table [options] LOGFILEs\n" + + "Generate mozarella metrics table from preparated feta log\n\n" + + "Options:\n" + + " -a, --afm=FILE .afm file\n" + + " -d, --dep=FILE print dependency info to FILE\n" + + " -h, --help print this help\n" + + " -l, --ly=FILE name output table\n" + + " -o, --outdir=DIR prefix for dependency info\n" + + " -p, --package=DIR specify package\n" + + " -t, --tex=FILE name output tex chardefs\n" + ) + sys.exit (0) + + +def main(): + identify() + + lyfile_nm = texfile_nm = ''; + depfile_nm = '' + afmfile_nm = '' + outdir_prefix = '.' + for opt in options: + o = opt[0] + a = opt[1] + if o == '--dep' or o == '-d': + depfile_nm = a + elif o == '--outdir' or o == '-o': + outdir_prefix = a + elif o == '--ly' or o == '-l': + lyfile_nm = a + elif o == '--tex' or o == '-t': + texfile_nm = a + elif o== '--help' or o == '-h': + help() + elif o=='--afm' or o == '-a': + afmfile_nm = a + elif o == '--debug': + debug_b = 1 + elif o == '-p' or o == '--package': + topdir = a + else: + print o + raise getopt.error + + log_reader = Log_reader(lyfile_nm, texfile_nm, depfile_nm, afmfile_nm) + log_reader.outdir = outdir_prefix + for filenm in files: + log_reader.do_file(filenm) + log_reader.close() + + +main() diff --git a/buildscripts/mutopia-index.py b/buildscripts/mutopia-index.py new file mode 100644 index 0000000000..bf7ed7a628 --- /dev/null +++ b/buildscripts/mutopia-index.py @@ -0,0 +1,161 @@ +#!@PYTHON@ +# mutopia-index.py + +name = 'mutopia-index' + +import regex +import os +import sys +sys.path.append ('@abs-step-bindir@') + + + +header_regex = regex.compile('\\header[ \t\n]*{\([^}]*\)}') +header_entry_regex = regex.compile('[\n\t ]*\([^\n\t ]+\)[\n\t ]*=[\n \t]*\([^;]+\)[\n \t]*;') + +# +# FIXME breaks on multiple strings. +# +def read_mudela_header (fn): + s = gulp_file(fn) + s = regsub.gsub('%.*$', '', s) + s = regsub.gsub('\n', ' ', s) + + dict = {} + if header_regex.search(s) <> -1: + h = header_regex.group(1) + else: + return dict + + while regex.search('=', h) <> -1: + + if header_entry_regex.search (h) == -1: + + raise 'format error' + + h = regsub.sub(header_entry_regex, '', h) + left = header_entry_regex.group(1) + right = header_entry_regex.group(2) + + right = regsub.gsub('\([^\\]\)\"', '\\1', right) + right = regsub.gsub('^"', '', right) + left = regsub.gsub('\([^\\]\)\"', '', left) + left = regsub.gsub('^"', '', left) + + dict[left] = right + + return dict + + + + +def help (): + sys.stdout.write ("Usage: " + name + " [options] INFILE OUTFILE\n" + + "Generate index for mutopia\n\n" + + "Options:\n" + + " -h, --help print this help\n" + + " -p, --package=DIR specify package\n" + + " --prefix=PRE specify prefix\n" + + " -s, --subdirs=DIR add subdir\n" + + " --suffix=SUF specify suffix\n" + ) + sys.exit (0) + +def gen_list(inputs, subdir, filename): + (pre, subdirs, post)=subdir + print "generating HTML list %s\n" % filename + list = open(filename, 'w') + list.write ('Rendered Examples\n') + list.write ('') + if len(subdirs): + list.write ('

subdirectories

') + list.write ('
    ') + for ex in subdirs: + print 'subdir %s ' % ex + list.write ('
  • Subdirectory: %s
  • \n' % (pre + ex + post , ex)) + + list.write ('
') + + list.write('

Contents of this directory

\n'); + list.write ('These example files are taken from the LilyPond distribution.\n' + 'LilyPond currently only outputs TeX and MIDI. The pictures and\n' + 'PostScript files were generated using TeX, Ghostscript and some\n' + 'graphics tools. The papersize used for these examples is A4. The GIF\n' + 'files have been scaled to eliminate aliasing.\n'); + + + for ex in inputs: + ex_ext = '.ly' + print '%s, ' % ex + try: + header = read_mudela_header(ex + ex_ext + '.txt') + except: + ex_ext = '.fly' + header = read_mudela_header(ex + ex_ext + '.txt') + + def read_dict(s, default, h =header): + try: + ret = h[s] + except KeyError: + ret = default + return ret + head = read_dict('title', ex) + composer = read_dict('composer', '') + desc = read_dict('description', '') + list.write('
') + list.write('

example file: %s

' % head); + if composer <> '': + list.write('

%s

\n' % composer) + if desc <> '': + list.write('%s

' % desc) + list.write ('

    ') + def list_item(filename, desc, l = list): + if file_exist_b(filename): + l.write ('
  • %s\n' % (filename, desc)) + + list_item(ex + ex_ext + '.txt', 'The input') + for pageno in range(1,100): + f = ex + '-page%d.gif' % pageno + if not file_exist_b (f): + break + list_item(f, 'The output (picture, page %d)' % pageno) + list_item(ex + '.ps.gz', 'The output (gzipped PostScript)') + list_item(ex + '.midi', 'The output (MIDI)') + list.write ("
"); + + list.write( ""); + list.close() + +import getopt + +(options, files) = getopt.getopt(sys.argv[1:], + 'hp:s:', ['help', 'subdirs=', 'suffix=', 'package=', 'prefix=']) +subdir_pre='' +subdir_suf ='' + +subdirs =[] +for opt in options: + o = opt[0] + a = opt[1] + if o == '--subdirs' or o == '-s': + subdirs.append (a) + elif o == '--prefix': + subdir_pre = a + elif o == '-p' or o == '--package': + topdir = a + elif o == '--suffix': + subdir_suf = a + + sys.path.append (topdir + '/stepmake/bin') + from packagepython import * + package = Package (topdir) + packager = Packager () + + from flower import * + + +# huh? +allfiles = multiple_find (['*.*ly.txt'], '.') + +gen_list (files, (subdir_pre, subdirs, subdir_suf), 'index.html') + diff --git a/buildscripts/profile-conf.sh b/buildscripts/profile-conf.sh new file mode 100644 index 0000000000..79dbd73463 --- /dev/null +++ b/buildscripts/profile-conf.sh @@ -0,0 +1,2 @@ + +configure --prefix=~ --enable-profiling --enable-config=optprof --enable-optimise --disable-checking diff --git a/buildscripts/ps-to-gifs.sh b/buildscripts/ps-to-gifs.sh new file mode 100755 index 0000000000..a2e9e26be9 --- /dev/null +++ b/buildscripts/ps-to-gifs.sh @@ -0,0 +1,77 @@ +#!/bin/bash +# ps-to-gifs, convert PS to multiple gifs + +usage() +{ + cat < $OUTFILE +PPMS=`ls $BASE*ppm` +for i in $PPMS; do + o=`dirname $i`/`basename $i .ppm`.gif + cat $i | pnmscale 0.5 | $CROP | ppmtogif $color > $o + rm $i +done + +if [ "x$OUTFILE" != "x" ]; then + mv $BASE-page1.gif $BASE.gif +fi + diff --git a/buildscripts/run-lilypond.sh b/buildscripts/run-lilypond.sh new file mode 100644 index 0000000000..2a69e5a3e2 --- /dev/null +++ b/buildscripts/run-lilypond.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +LILYTOPDIR=$1 +shift +export LILYINCLUDE="$LILYTOPDIR/init:$LILYTOPDIR/mf/out:$LILYINCLUDE" +export TEXINPUTS="$LILYTOPDIR/tex:$TEXINPUTS" +export MFINPUTS="$LILYTOPDIR/mf:$TEXINPUTS" + +$LILYTOPDIR/lily/out/lilypond $* diff --git a/buildscripts/set-lily.sh b/buildscripts/set-lily.sh new file mode 100755 index 0000000000..087ad63182 --- /dev/null +++ b/buildscripts/set-lily.sh @@ -0,0 +1,56 @@ +#!/bin/sh +# zet-lily.sh --- configure LilyPond sourcetree +# nice in first character unique name +# +PACKAGE_NAME=LilyPond +export PACKAGE_NAME +prefix=$HOME/usr +sources=$prefix/src +# +# +. ./stepmake/bin/package-zet.sh +# +# The $sources dir looks like this: +# +# +# +if [ "x$LILYINCLUDE" = "x" ]; then + # we can try... + echo you should add the following to your profile script + if [ "x$MAILADDRESS" = "x" ]; then + MAILADDRESS=$USER@`hostname` + export MAILADDRESS + echo " MAILADDRESS=\$USER@`hostname`" + echo " export MAILADDRESS" + fi + LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/input:$LILYPOND_SOURCEDIR/mf/out + MFINPUTS=$MFINPUTS:$LILYPOND_SOURCEDIR/mf + TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out + export LILYINCLUDE MFINPUTS TEXINPUTS + cat < confdefs.h # A filename unique to this package, relative to the directory that # configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=flower/choleski.cc +ac_unique_file=make/lilypond.lsm.in # Find the source files, if location was not specified. if test -z "$srcdir"; then @@ -538,8 +542,26 @@ else fi - #ugh flower/out/ -ac_aux_dir= + + +# Bootstrap StepMake configure + + + . $srcdir/VERSION + FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL + if test x$MY_PATCH_LEVEL != x; then + FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL + fi + + # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:] + PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'` + package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'` + + if test "x$PACKAGE" = "xSTEPMAKE"; then + echo Stepmake package! + (cd stepmake; rm -f stepmake; ln -s ../stepmake .) + (cd stepmake; rm -f bin; ln -s ../bin .) + ac_aux_dir= for ac_dir in bin $srcdir/bin; do if test -f $ac_dir/install-sh; then ac_aux_dir=$ac_dir @@ -558,14 +580,76 @@ ac_config_guess=$ac_aux_dir/config.guess ac_config_sub=$ac_aux_dir/config.sub ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + else + echo Package: $PACKAGE + ac_aux_dir= +for ac_dir in stepmake/bin $srcdir/stepmake/bin; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in stepmake/bin $srcdir/stepmake/bin" 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + + fi + + + + + cat >> confdefs.h <> confdefs.h </dev/null 2>&1; then : else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:569: checking host system type" >&5 +echo "configure:653: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -585,171 +669,286 @@ host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` echo "$ac_t""$host" 1>&6 - - -. $srcdir/VERSION -FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL -if test x$MY_PATCH_LEVEL != x; then - FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL + for ac_prog in make +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:678: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$MAKE"; then + ac_cv_prog_MAKE="$MAKE" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_MAKE="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +MAKE="$ac_cv_prog_MAKE" +if test -n "$MAKE"; then + echo "$ac_t""$MAKE" 1>&6 +else + echo "$ac_t""no" 1>&6 fi +test -n "$MAKE" && break +done +test -n "$MAKE" || MAKE="error" -. $srcdir/flower/VERSION -FULL_FLOWER_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL + for ac_prog in find +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:712: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$FIND"; then + ac_cv_prog_FIND="$FIND" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_FIND="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +FIND="$ac_cv_prog_FIND" +if test -n "$FIND"; then + echo "$ac_t""$FIND" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi -# libtool.info ... -# **Never** try to set library version numbers so that they correspond -# to the release number of your package. This is an abuse that only -# fosters misunderstanding of the purpose of library versions. +test -n "$FIND" && break +done +test -n "$FIND" || FIND="error" -REVISION=$PATCH_LEVEL -# CURRENT=$MINOR_VERSION -CURRENT=`expr $MINOR_VERSION + 1` -# AGE=$(expr $MAJOR_VERSION + 1) -AGE=$MAJOR_VERSION + for ac_prog in tar +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:749: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$TAR"; then + ac_cv_prog_TAR="$TAR" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_TAR="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +TAR="$ac_cv_prog_TAR" +if test -n "$TAR"; then + echo "$ac_t""$TAR" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi -# turn off shared libraries by default (may be enabled using --enable-shared) -#AM_DISABLE_SHARED -#AM_PROG_LIBTOOL +test -n "$TAR" && break +done +test -n "$TAR" || TAR="error" -# ugh, automake: we want (and check for) bison -for ac_prog in 'bison -y' byacc + for ac_prog in bash do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:625: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then +echo "configure:783: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_BASH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$YACC"; then - ac_cv_prog_YACC="$YACC" # Let the user override the test. + if test -n "$BASH"; then + ac_cv_prog_BASH="$BASH" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_YACC="$ac_prog" + ac_cv_prog_BASH="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi -YACC="$ac_cv_prog_YACC" -if test -n "$YACC"; then - echo "$ac_t""$YACC" 1>&6 +BASH="$ac_cv_prog_BASH" +if test -n "$BASH"; then + echo "$ac_t""$BASH" 1>&6 else echo "$ac_t""no" 1>&6 fi -test -n "$YACC" && break +test -n "$BASH" && break done -test -n "$YACC" || YACC="yacc" +test -n "$BASH" || BASH="/bin/sh" -# ugh, automake: we want (and check for) flex -# AC_PROG_LEX -# urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack... + # Extract the first word of "python", so it can be a program name with args. +set dummy python; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:816: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$PYTHON" in + /*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_PYTHON="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON="-echo no python" + ;; +esac +fi +PYTHON="$ac_cv_path_PYTHON" +if test -n "$PYTHON"; then + echo "$ac_t""$PYTHON" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + -# AC_DECL_YYTEXT -# ugh, ugh -ac_cv_prog_lex_root=lex.yy -# -O is necessary to get inlining -OPTIMIZE="-O" -printing_b=no -checking_b=yes -optimise_b=tja -profile_b=no -CONFIGSUFFIX= -debug_b=yes - + + result="`echo \"$MAKE\" | grep echo`" + if test "x$MAKE" = "xerror" -o "x$result" != "x"; then + + echo "configure: warning: can\'t find GNU make. You should install GNU make" 1>&2 + warn_b=yes + fi -ac_ext=C -# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cxx_cross + if test $MAKE != "error" ; then + $MAKE -v| grep GNU > /dev/null + if test "$?" = 1 + then + + echo "configure: warning: Please install *GNU* make" 1>&2 + warn_b=yes + + fi + fi + + result="`echo \"$PYTHON\" | grep echo`" + if test "x$PYTHON" = "xerror" -o "x$result" != "x"; then + + echo "configure: warning: can\'t find python. You should install Python" 1>&2 + warn_b=yes -echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6 -echo "configure:683: checking whether explicit instantiation is needed" >&5 -if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < struct foo { static int baz; }; -template int foo::baz = 1; -int main() { - return foo::baz; -; return 0; } -EOF -if { (eval echo configure:698: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - lily_cv_need_explicit_instantiation=no -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - lily_cv_need_explicit_instantiation=yes -fi -rm -f conftest* -fi + if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then + LN=cp # hard link does not work under cygnus-nt (yet?) + ZIP="zip -r -9" # + DOTEXE=.exe + else + LN=ln + ZIP="zip -r -9" + fi + + + -echo "$ac_t""$lily_cv_need_explicit_instantiation" 1>&6 -if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then - cat >> confdefs.h <<\EOF -#define NEED_EXPLICIT_INSTANTIATION 1 + + if test "$datadir" = "\${prefix}/share"; then + datadir='${prefix}/share/'$package + fi + DIR_DATADIR=${datadir} + presome=${prefix} + if test "$prefix" = "NONE"; then + presome=${ac_default_prefix} + fi + DIR_DATADIR=`echo ${DIR_DATADIR} | sed "s!\\\${prefix}!$presome!"` + + + cat >> confdefs.h <> confdefs.h <<\EOF +#define NPRINT 1 +EOF + + DEFINES="$DEFINES -DNPRINT" + fi + + if test "$checking_b" = no; then + # ugh + cat >> confdefs.h <<\EOF +#define NDEBUG 1 +EOF + + DEFINES="$DEFINES -DNDEBUG" + fi + + if test "$optimise_b" = yes; then + DEFINES="$DEFINES -finline-functions" + OPTIMIZE="-O2" + fi + + if test "$optimise_b" = no; then + OPTIMIZE="" + fi + + if test $profile_b = yes; then + EXTRA_LIBES="-pg" + DEFINES="$DEFINES -pg" + fi + + if test $debug_b = yes; then + DEFINES="$DEFINES -g" + fi + + # however, C++ support in mingw32 v 0.1.4 is still flaky + if test x$MINGWPREFIX != xno; then + ICFLAGS="-I$MINGWPREFIX/include" + ILDFLAGS="-$MINGWPREFIX/lib" + fi + + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1006: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - TEXPREFIX=auto + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" fi - - -# Check whether --enable-tex-dir or --disable-tex-dir was given. -if test "${enable_tex_dir+set}" = set; then - enableval="$enable_tex_dir" - TEXDIR=$enableval +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 else - TEXDIR=auto + echo "$ac_t""no" 1>&6 fi - -# Check whether --enable-mf-dir or --disable-mf-dir was given. -if test "${enable_mf_dir+set}" = set; then - enableval="$enable_mf_dir" - MFDIR=$enableval +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1035: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - MFDIR=auto + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + ac_prog_rejected=no + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 fi - -# Check whether --enable-config or --disable-config was given. -if test "${enable_config+set}" = set; then - enableval="$enable_config" - CONFIGSUFFIX=$enableval + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } fi - +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:1083: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 -if test "$printing_b" = no; then - # ugh - cat >> confdefs.h <<\EOF -#define NPRINT 1 -EOF +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross - DEFINES="$DEFINES -DNPRINT" -fi - -if test "$checking_b" = no; then - # ugh - cat >> confdefs.h <<\EOF -#define NDEBUG 1 +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* - DEFINES="$DEFINES -DNDEBUG" +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:1117: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross -if test "$optimise_b" = yes; then - DEFINES="$DEFINES -finline-functions -DSTRING_UTILS_INLINED" - OPTIMIZE="-O2" - cat >> confdefs.h <<\EOF -#define STRINGS_UTILS_INLINED 1 +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:1122: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi fi -if test "$optimise_b" = no; then - OPTIMIZE="" +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes + ac_test_CFLAGS="${CFLAGS+set}" + ac_save_CFLAGS="$CFLAGS" + CFLAGS= + echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:1146: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no fi +rm -f conftest* -if test $profile_b = yes; then - EXTRA_LIBES="-pg" - DEFINES="$DEFINES -pg" fi -if test $debug_b = yes; then - DEFINES="$DEFINES -g" +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 + if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" + elif test $ac_cv_prog_cc_g = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-O2" + fi +else + GCC= + test "${CFLAGS+set}" = set || CFLAGS="-g" fi -# however, C++ support in mingw32 v 0.1.4 is still flaky -if test x$MINGWPREFIX != xno; then - ICFLAGS="-I$MINGWPREFIX/include" - ILDFLAGS="-$MINGWPREFIX/lib" + LD='$(CC)' + + + CPPFLAGS=${CPPFLAGS:-""} + + + + + + + +# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h) + +printing_b=no +# Check whether --enable-printing or --disable-printing was given. +if test "${enable_printing+set}" = set; then + enableval="$enable_printing" + printing_b=$enableval fi -if test "x$OSTYPE" = "xWindows_NT"; then - LN=cp # hard link does not work under cygnus-nt (yet?) - ZIP="zip -r -9" # -else - LN=ln - ZIP="zip -r -9" + +if test "$optimise_b" = yes; then + DEFINES="$DEFINES -DSTRING_UTILS_INLINED" + cat >> confdefs.h <<\EOF +#define STRINGS_UTILS_INLINED 1 +EOF + fi -if test "$CONFIGSUFFIX" != "" ; then - CONFIGFILE=config-$CONFIGSUFFIX +echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 +echo "configure:1203: checking how to run the C++ preprocessor" >&5 +if test -z "$CXXCPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross + CXXCPP="${CXX-g++} -E" + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + : else - CONFIGFILE=config + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CXXCPP=/lib/cpp fi - +rm -f conftest* + ac_cv_prog_CXXCPP="$CXXCPP" +fi +fi +CXXCPP="$ac_cv_prog_CXXCPP" +echo "$ac_t""$CXXCPP" 1>&6 -AUTOGENERATE="This file was automatically generated by configure" -CPPFLAGS=${CPPFLAGS:-""} # we don't want -g -O junk -# CXXFLAGS=${CXXFLAGS:-""} # we don't want -g -O junk -CXXFLAGS="$DEFINES $OPTIMIZE" -LDFLAGS=$EXTRA_LIBES + ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross -for ac_prog in $CCC c++ g++ gcc CC cxx cc++ + for ac_prog in $CCC c++ g++ gcc CC cxx cc++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:870: checking for $ac_word" >&5 +echo "configure:1252: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -897,7 +1279,7 @@ test -n "$CXX" || CXX="gcc" echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:901: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 +echo "configure:1283: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 ac_ext=C # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -907,11 +1289,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L cross_compiling=$ac_cv_prog_cxx_cross cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1297: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then ac_cv_prog_cxx_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -931,12 +1313,12 @@ if test $ac_cv_prog_cxx_works = no; then { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:935: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1317: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 cross_compiling=$ac_cv_prog_cxx_cross echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 -echo "configure:940: checking whether we are using GNU C++" >&5 +echo "configure:1322: checking whether we are using GNU C++" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -945,7 +1327,7 @@ else yes; #endif EOF -if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:949: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1331: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gxx=yes else ac_cv_prog_gxx=no @@ -960,7 +1342,7 @@ if test $ac_cv_prog_gxx = yes; then ac_save_CXXFLAGS="$CXXFLAGS" CXXFLAGS= echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 -echo "configure:964: checking whether ${CXX-g++} accepts -g" >&5 +echo "configure:1346: checking whether ${CXX-g++} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -987,333 +1369,434 @@ else test "${CXXFLAGS+set}" = set || CXXFLAGS="-g" fi -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:994: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + + ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6 +echo "configure:1376: checking for FlexLexer.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1386: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" fi +rm -f conftest* fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + true else echo "$ac_t""no" 1>&6 -fi -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# ./install, which can be erroneously created by make from ./install.sh. -echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:1031: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - for ac_prog in ginstall installbsd scoinst install; do - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - # OSF/1 installbsd also uses dspmsg, but is usable. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" + echo "configure: warning: can"\'"t find flex header. Please install Flex headers correctly" 1>&2 + warn_b=yes fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL="$ac_cv_path_install" - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL="$ac_install_sh" - fi -fi -echo "$ac_t""$INSTALL" 1>&6 -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + CXXFLAGS="$DEFINES $OPTIMIZE" + LDFLAGS=$EXTRA_LIBES -for ac_prog in tar -do -# Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1085: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then + + + LD='$(CXX)' + + + + # ugh autoconf + if $CXX --version | grep '2\.[78]' > /dev/null || + $CXX --version | grep 'egcs' > /dev/null + then + true + else + + echo "configure: warning: can't find g++ 2.7" 1>&2 + warn_b=yes + + fi + + + echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6 +echo "configure:1435: checking whether explicit instantiation is needed" >&5 +if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$TAR"; then - ac_cv_prog_TAR="$TAR" # Let the user override the test. + cat > conftest.$ac_ext < struct foo { static int baz; }; + template int foo::baz = 1; + +int main() { + return foo::baz; +; return 0; } +EOF +if { (eval echo configure:1450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + lily_cv_need_explicit_instantiation=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + lily_cv_need_explicit_instantiation=yes +fi +rm -f conftest* +fi + +echo "$ac_t""$lily_cv_need_explicit_instantiation" 1>&6 + if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then + cat >> confdefs.h <<\EOF +#define NEED_EXPLICIT_INSTANTIATION 1 +EOF + + fi + + + # ugh, automake: we want (and check for) bison + for ac_prog in 'bison -y' byacc +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1477: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_TAR="$ac_prog" + ac_cv_prog_YACC="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi -TAR="$ac_cv_prog_TAR" -if test -n "$TAR"; then - echo "$ac_t""$TAR" 1>&6 +YACC="$ac_cv_prog_YACC" +if test -n "$YACC"; then + echo "$ac_t""$YACC" 1>&6 else echo "$ac_t""no" 1>&6 fi -test -n "$TAR" && break +test -n "$YACC" && break done -test -n "$TAR" || TAR="error" +test -n "$YACC" || YACC="yacc" + + # ugh, automake: we want (and check for) flex + # AC_PROG_LEX + # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack... + + # AC_DECL_YYTEXT + # ugh, ugh + ac_cv_prog_lex_root=lex.yy -for ac_prog in find + for ac_prog in bison do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1119: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then +echo "configure:1519: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$FIND"; then - ac_cv_prog_FIND="$FIND" # Let the user override the test. + if test -n "$BISON"; then + ac_cv_prog_BISON="$BISON" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_FIND="$ac_prog" + ac_cv_prog_BISON="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi -FIND="$ac_cv_prog_FIND" -if test -n "$FIND"; then - echo "$ac_t""$FIND" 1>&6 +BISON="$ac_cv_prog_BISON" +if test -n "$BISON"; then + echo "$ac_t""$BISON" 1>&6 else echo "$ac_t""no" 1>&6 fi -test -n "$FIND" && break +test -n "$BISON" && break done -test -n "$FIND" || FIND="error" +test -n "$BISON" || BISON="error" + + for ac_prog in flex +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1553: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$FLEX"; then + ac_cv_prog_FLEX="$FLEX" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_FLEX="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +FLEX="$ac_cv_prog_FLEX" +if test -n "$FLEX"; then + echo "$ac_t""$FLEX" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$FLEX" && break +done +test -n "$FLEX" || FLEX="error" + + result="`echo \"$BISON\" | grep echo`" + if test "x$BISON" = "xerror" -o "x$result" != "x"; then + + echo "configure: warning: can\'t find bison. Please install Bison" 1>&2 + warn_b=yes + fi - if test $FIND = "error" - then + + result="`echo \"$FLEX\" | grep echo`" + if test "x$FLEX" = "xerror" -o "x$result" != "x"; then - echo "configure: warning: can't find \`find\'. Please use --enable-tex-dir. " 1>&2 + echo "configure: warning: can\'t find flex. Please install Flex" 1>&2 warn_b=yes fi -echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:1160: checking for 8-bit clean memcmp" >&5 -if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then + if test $BISON != "error"; then + bison_version=`$BISON --version| sed 's/^.*version 1.//g' ` + if test $bison_version -lt 25; then + + echo "configure: warning: Your bison is a bit old (1.$bison_version). You might have to install 1.25" 1>&2 + warn_b=yes + + fi + fi + + + + + + for ac_prog in ar +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1620: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_clean=no + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. else - cat > conftest.$ac_ext <&6 +else + echo "$ac_t""no" 1>&6 +fi -main() -{ - char c0 = 0x40, c1 = 0x80, c2 = 0x81; - exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1); -} +test -n "$AR" && break +done +test -n "$AR" || AR="error" -EOF -if { (eval echo configure:1181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null -then - ac_cv_func_memcmp_clean=yes + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1652: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_func_memcmp_clean=no + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" fi -rm -fr conftest* fi - +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 fi -echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 -test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o" -echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:1199: checking for vprintf" >&5 -if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext < -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char vprintf(); + + -int main() { +# AC_STEPMAKE_LIBTOOL -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_vprintf) || defined (__stub___vprintf) -choke me -#else -vprintf(); -#endif + lang=English + ALL_LINGUAS="en nl" -; return 0; } -EOF -if { (eval echo configure:1230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then - rm -rf conftest* - eval "ac_cv_func_vprintf=yes" + # with/enable ?? + # Check whether --with-localedir or --without-localedir was given. +if test "${with_localedir+set}" = set; then + withval="$with_localedir" + localedir=$with_localedir else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_vprintf=no" -fi -rm -f conftest* + localedir='${prefix}/share/locale' fi -if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then - echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_VPRINTF 1 -EOF + # Check whether --with-lang or --without-lang was given. +if test "${with_lang+set}" = set; then + withval="$with_lang" + language=$with_lang else - echo "$ac_t""no" 1>&6 + language=English fi -if test "$ac_cv_func_vprintf" != yes; then -echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:1254: checking for _doprnt" >&5 -if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then + + echo $ac_n "checking language""... $ac_c" 1>&6 +echo "configure:1707: checking language" >&5 + case "$language" in + En* | en* | Am* | am* | US* | us*) + lang=English;; + NL | nl | Du* | du* | Ned* | ned*) + lang=Dutch;; + "") + lang=English;; + *) + lang=unknown;; + esac + echo "$ac_t""$lang" 1>&6 + + if test "$lang" = "unknown" ; then + + echo "configure: warning: $language not supported; available are: $ALL_LINGUAS" 1>&2 + warn_b=yes + + fi + + + + DIR_LOCALEDIR=${localedir} + presome=${prefix} + if test "$prefix" = "NONE"; then + presome=${ac_default_prefix} + fi + DIR_LOCALEDIR=`echo ${DIR_LOCALEDIR} | sed "s!\\\${prefix}!$presome!"` + + + cat >> confdefs.h <&6 +echo "configure:1743: checking for gettext in -lintl" >&5 +ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - cat > conftest.$ac_ext < conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ #ifdef __cplusplus extern "C" #endif /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char _doprnt(); +char gettext(); int main() { - -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub__doprnt) || defined (__stub____doprnt) -choke me -#else -_doprnt(); -#endif - +gettext() ; return 0; } EOF -if { (eval echo configure:1285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* - eval "ac_cv_func__doprnt=yes" + eval "ac_cv_lib_$ac_lib_var=yes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_func__doprnt=no" + eval "ac_cv_lib_$ac_lib_var=no" fi rm -f conftest* -fi +LIBS="$ac_save_LIBS" -if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - cat >> confdefs.h <<\EOF -#define HAVE_DOPRNT 1 + ac_tr_lib=HAVE_LIB`echo intl | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 fi -fi - -for ac_func in memmem snprintf + for ac_func in gettext do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1312: checking for $ac_func" >&5 +echo "configure:1795: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest; then +if { (eval echo configure:1826: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1364,560 +1847,670 @@ fi done -cat >> confdefs.h <> confdefs.h <&6 +echo "configure:1857: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$MSGFMT"; then + ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_MSGFMT="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +MSGFMT="$ac_cv_prog_MSGFMT" +if test -n "$MSGFMT"; then + echo "$ac_t""$MSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi -# ugh: produces "${prefix}/share/lilypond" -# DIR_DATADIR=$datadir/lilypond -# ugh: produces "NONE/share/lilypond" -# DIR_DATADIR=$prefix/share/lilypond +test -n "$MSGFMT" && break +done +test -n "$MSGFMT" || MSGFMT="-echo no msgfmt" -DIR_DATADIR=$prefix/share/lilypond -if test x$prefix = xNONE; then - DIR_DATADIR=/usr/local/share/lilypond -fi -cat >> confdefs.h <&6 +echo "configure:1887: checking whether msgfmt accepts -o" >&5 + msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`" + if test "$msgfmt_output" = ""; then + echo "$ac_t""yes" 1>&6 + else + # urg + MSGFMT="touch ; echo " + echo "$ac_t""no" 1>&6 + + echo "configure: warning: please install msgfmt from GNU gettext" 1>&2 + warn_b=yes + + fi -absolute_builddir="`pwd`" + # Check whether --enable-tex-prefix or --disable-tex-prefix was given. +if test "${enable_tex_prefix+set}" = set; then + enableval="$enable_tex_prefix" + TEXPREFIX=$enableval +else + TEXPREFIX=auto +fi + + # Check whether --enable-tex-dir or --disable-tex-dir was given. +if test "${enable_tex_dir+set}" = set; then + enableval="$enable_tex_dir" + TEXDIR=$enableval +else + TEXDIR=auto +fi + # Check whether --enable-mf-dir or --disable-mf-dir was given. +if test "${enable_mf_dir+set}" = set; then + enableval="$enable_mf_dir" + MFDIR=$enableval +else + MFDIR=auto +fi + if test "x$TEXPREFIX" = xauto ; then + + + echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6 +echo "configure:1934: checking TeX/MF root dir directory" >&5 + find_root_prefix="$prefix" + + test "x$find_root_prefix" = xNONE && find_root_prefix="$ac_default_prefix" + find_texpostfix=""; + for postfix in "/lib/tex/" "/lib/texmf" "/lib" "/tex" "/texmf"; do + find_texprefix="$find_root_prefix$postfix" + if test -d $find_texprefix; then + find_texpostfix=$postfix + break; + fi + done + + if test "x$find_texpostfix" = x; then + find_texpostfix='/lib/texmf/tex' + + echo "configure: warning: Cannot determine the TeX-directory. Please use --enable-tex-prefix" 1>&2 + warn_b=yes + fi + find_texprefix="$find_root_prefix/$find_texpostfix" + # only assign if variablename not empty + if test x != "x$TEXPREFIX"; then + TEXPREFIX='${prefix}'/"$find_texpostfix" + fi + echo "$ac_t""$find_texprefix" 1>&6 + else + find_texprefix=$TEXPREFIX + fi + + if test "x$MFDIR" = xauto; then + + + + echo $ac_n "checking MF input directory""... $ac_c" 1>&6 +echo "configure:1975: checking MF input directory" >&5 + find_dirdir=`(cd $find_texprefix; + $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')` + + if test "x$find_dirdir" = x; then + find_dirdir="/source"; + + echo "configure: warning: Cannot determine MF input subdirectory. Please set from command-line" 1>&2 + warn_b=yes + true + fi + MFDIR=$find_dirdir + echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6 + MFDIR="$TEXPREFIX/$MFDIR" + fi + + if test "x$TEXDIR" = xauto ; then + + + + echo $ac_n "checking TeX input directory""... $ac_c" 1>&6 +echo "configure:2000: checking TeX input directory" >&5 + find_dirdir=`(cd $find_texprefix; + $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')` + + if test "x$find_dirdir" = x; then + find_dirdir="/tex"; + + echo "configure: warning: Cannot determine TeX input subdirectory. Please set from command-line" 1>&2 + warn_b=yes + true + fi + TEXDIR=$find_dirdir + echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6 + TEXDIR="$TEXPREFIX/$TEXDIR" + fi + + + -for ac_prog in bison + if test "x$YODL" = "x"; then + for ac_prog in yodl do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1420: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then +echo "configure:2031: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$BISON"; then - ac_cv_prog_BISON="$BISON" # Let the user override the test. + if test -n "$YODL"; then + ac_cv_prog_YODL="$YODL" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_BISON="$ac_prog" + ac_cv_prog_YODL="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi -BISON="$ac_cv_prog_BISON" -if test -n "$BISON"; then - echo "$ac_t""$BISON" 1>&6 +YODL="$ac_cv_prog_YODL" +if test -n "$YODL"; then + echo "$ac_t""$YODL" 1>&6 else echo "$ac_t""no" 1>&6 fi -test -n "$BISON" && break +test -n "$YODL" && break done -test -n "$BISON" || BISON="error" +test -n "$YODL" || YODL="-echo no yodl" -for ac_prog in flex + for ac_prog in yodl2html do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1454: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then +echo "configure:2065: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$FLEX"; then - ac_cv_prog_FLEX="$FLEX" # Let the user override the test. + if test -n "$YODL2HTML"; then + ac_cv_prog_YODL2HTML="$YODL2HTML" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_FLEX="$ac_prog" + ac_cv_prog_YODL2HTML="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi -FLEX="$ac_cv_prog_FLEX" -if test -n "$FLEX"; then - echo "$ac_t""$FLEX" 1>&6 +YODL2HTML="$ac_cv_prog_YODL2HTML" +if test -n "$YODL2HTML"; then + echo "$ac_t""$YODL2HTML" 1>&6 else echo "$ac_t""no" 1>&6 fi -test -n "$FLEX" && break +test -n "$YODL2HTML" && break done -test -n "$FLEX" || FLEX="error" +test -n "$YODL2HTML" || YODL2HTML="-echo no yodl" -for ac_prog in make + for ac_prog in yodl2latex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1488: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then +echo "configure:2099: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$MAKE"; then - ac_cv_prog_MAKE="$MAKE" # Let the user override the test. + if test -n "$YODL2LATEX"; then + ac_cv_prog_YODL2LATEX="$YODL2LATEX" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_MAKE="$ac_prog" + ac_cv_prog_YODL2LATEX="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi -MAKE="$ac_cv_prog_MAKE" -if test -n "$MAKE"; then - echo "$ac_t""$MAKE" 1>&6 +YODL2LATEX="$ac_cv_prog_YODL2LATEX" +if test -n "$YODL2LATEX"; then + echo "$ac_t""$YODL2LATEX" 1>&6 else echo "$ac_t""no" 1>&6 fi -test -n "$MAKE" && break +test -n "$YODL2LATEX" && break done -test -n "$MAKE" || MAKE="error" -# Extract the first word of "perl", so it can be a program name with args. -set dummy perl; ac_word=$2 + for ac_prog in yodl2man +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1520: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then +echo "configure:2132: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - case "$PERL" in - /*) - ac_cv_path_PERL="$PERL" # Let the user override the test with a path. - ;; - *) - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in $PATH; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_path_PERL="$ac_dir/$ac_word" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="error" - ;; -esac -fi -PERL="$ac_cv_path_PERL" -if test -n "$PERL"; then - echo "$ac_t""$PERL" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -# Extract the first word of "python", so it can be a program name with args. -set dummy python; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1552: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 + if test -n "$YODL2MAN"; then + ac_cv_prog_YODL2MAN="$YODL2MAN" # Let the user override the test. else - case "$PYTHON" in - /*) - ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. - ;; - *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_path_PYTHON="$ac_dir/$ac_word" + ac_cv_prog_YODL2MAN="$ac_prog" break fi done IFS="$ac_save_ifs" - test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON="error" - ;; -esac fi -PYTHON="$ac_cv_path_PYTHON" -if test -n "$PYTHON"; then - echo "$ac_t""$PYTHON" 1>&6 +fi +YODL2MAN="$ac_cv_prog_YODL2MAN" +if test -n "$YODL2MAN"; then + echo "$ac_t""$YODL2MAN" 1>&6 else echo "$ac_t""no" 1>&6 fi -for ac_prog in pod2html +test -n "$YODL2MAN" && break +done +test -n "$YODL2MAN" || YODL2MAN="-echo no yodl" + + for ac_prog in yodl2texinfo do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1586: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_POD2HTML'+set}'`\" = set"; then +echo "configure:2166: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$POD2HTML"; then - ac_cv_prog_POD2HTML="$POD2HTML" # Let the user override the test. + if test -n "$YODL2TEXINFO"; then + ac_cv_prog_YODL2TEXINFO="$YODL2TEXINFO" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_POD2HTML="$ac_prog" + ac_cv_prog_YODL2TEXINFO="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi -POD2HTML="$ac_cv_prog_POD2HTML" -if test -n "$POD2HTML"; then - echo "$ac_t""$POD2HTML" 1>&6 +YODL2TEXINFO="$ac_cv_prog_YODL2TEXINFO" +if test -n "$YODL2TEXINFO"; then + echo "$ac_t""$YODL2TEXINFO" 1>&6 else echo "$ac_t""no" 1>&6 fi -test -n "$POD2HTML" && break +test -n "$YODL2TEXINFO" && break done -test -n "$POD2HTML" || POD2HTML="error" +test -n "$YODL2TEXINFO" || YODL2TEXINFO="-echo no yodl" -for ac_prog in pod2man + for ac_prog in yodl2txt do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1620: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_POD2MAN'+set}'`\" = set"; then +echo "configure:2200: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - if test -n "$POD2MAN"; then - ac_cv_prog_POD2MAN="$POD2MAN" # Let the user override the test. + if test -n "$YODL2TXT"; then + ac_cv_prog_YODL2TXT="$YODL2TXT" # Let the user override the test. else IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then - ac_cv_prog_POD2MAN="$ac_prog" + ac_cv_prog_YODL2TXT="$ac_prog" break fi done IFS="$ac_save_ifs" fi fi -POD2MAN="$ac_cv_prog_POD2MAN" -if test -n "$POD2MAN"; then - echo "$ac_t""$POD2MAN" 1>&6 +YODL2TXT="$ac_cv_prog_YODL2TXT" +if test -n "$YODL2TXT"; then + echo "$ac_t""$YODL2TXT" 1>&6 else echo "$ac_t""no" 1>&6 fi -test -n "$POD2MAN" && break +test -n "$YODL2TXT" && break done -test -n "$POD2MAN" || POD2MAN="error" - - - -if test "x$TEXPREFIX" = xauto ; then - - - - echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6 -echo "configure:1656: checking TeX/MF root dir directory" >&5 - - find_root_prefix="$prefix" - +test -n "$YODL2TXT" || YODL2TXT="-echo no yodl" - test "x$find_root_prefix" = xNONE && find_root_prefix="$ac_default_prefix" - find_texpostfix=""; - for postfix in "/lib/tex/" "/lib/texmf" "/lib" "/tex" "/texmf"; do - find_texprefix="$find_root_prefix$postfix" - if test -d $find_texprefix; then - find_texpostfix=$postfix - break; - fi - done - - if test "x$find_texpostfix" = x; then - find_texpostfix='/lib/texmf/tex' + else - echo "configure: warning: Cannot determine the TeX-directory. Please use --enable-tex-prefix" 1>&2 - warn_b=yes - - fi - - find_texprefix="$find_root_prefix/$find_texpostfix" - - # only assign if variablename not empty - if test x != "x$TEXPREFIX"; then - TEXPREFIX='${prefix}'/"$find_texpostfix" - fi - echo "$ac_t""$find_texprefix" 1>&6 - - -else - find_texprefix=$TEXPREFIX -fi - -if test "x$MFDIR" = xauto; then - - - - echo $ac_n "checking MF input directory""... $ac_c" 1>&6 -echo "configure:1697: checking MF input directory" >&5 - find_dirdir=`(cd $find_texprefix; - $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')` - - - if test "x$find_dirdir" = x; then - find_dirdir="/source"; - - echo "configure: warning: Cannot determine MF input subdirectory. Please set from command-line" 1>&2 - warn_b=yes - - true - fi - MFDIR=$find_dirdir - echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6 - - MFDIR="$TEXPREFIX/$MFDIR" - -fi - -if test "x$TEXDIR" = xauto ; then - - - - echo $ac_n "checking TeX input directory""... $ac_c" 1>&6 -echo "configure:1722: checking TeX input directory" >&5 - find_dirdir=`(cd $find_texprefix; - $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')` - - - if test "x$find_dirdir" = x; then - find_dirdir="/tex"; - - echo "configure: warning: Cannot determine TeX input subdirectory. Please set from command-line" 1>&2 - warn_b=yes - - true + + + + + + export YODL YODL2HTML YODL2LATEX YODL2MAN YODL2TEXINFO YODL2TXT fi - TEXDIR=$find_dirdir - echo "$ac_t""$find_texprefix/$find_dirdir" 1>&6 - - TEXDIR="$TEXPREFIX/$TEXDIR" - -fi -# AC_JUNK_ARGS( [if test "x$MFDIR" = xauto; then -# AC_MF_SUBDIR(MFDIR) -# fi] -# ) - if test $MAKE = "error" - then - - echo "configure: warning: can't find GNU make. You should install GNU make" 1>&2 - warn_b=yes - - fi - - - if test $BISON = "error" - then - - echo "configure: warning: can't find bison. Please install Bison" 1>&2 - warn_b=yes - - fi - - - if test $PERL = "error" - then - - echo "configure: warning: can't find perl. You should install Perl" 1>&2 - warn_b=yes - - fi - - - if test $PYTHON = "error" - then + result="`echo \"$FIND\" | grep echo`" + if test "x$FIND" = "xerror" -o "x$result" != "x"; then - echo "configure: warning: can't find python. You should install Python" 1>&2 + echo "configure: warning: can\'t find find. Please use --enable-tex-dir" 1>&2 warn_b=yes fi - if test $FLEX = "error" - then - - echo "configure: warning: can't find flex. Please install Flex" 1>&2 - warn_b=yes +echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 +echo "configure:2252: checking for 8-bit clean memcmp" >&5 +if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_memcmp_clean=no +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null +then + ac_cv_func_memcmp_clean=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_func_memcmp_clean=no +fi +rm -fr conftest* +fi - if test $POD2MAN = "error" - then - - echo "configure: warning: can't find pod. You should install Perl" 1>&2 - warn_b=yes +fi - fi +echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6 +test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o" +echo $ac_n "checking for vprintf""... $ac_c" 1>&6 +echo "configure:2291: checking for vprintf" >&5 +if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char vprintf(); +int main() { -if test $MAKE != "error" ; then - $MAKE -v| grep GNU > /dev/null - if test "$?" = 1 - then - - echo "configure: warning: Please install *GNU* make" 1>&2 - warn_b=yes - - fi -fi - -if test $BISON != "error"; then - bison_version=`$BISON --version| sed 's/^.*version 1.//g' ` - if test $bison_version -lt 25; then - - echo "configure: warning: Your bison is too old (1.$bison_version). Please install 1.25" 1>&2 - warn_b=yes +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_vprintf) || defined (__stub___vprintf) +choke me +#else +vprintf(); +#endif - fi +; return 0; } +EOF +if { (eval echo configure:2322: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func_vprintf=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_vprintf=no" fi - -if test "$INSTALL" = "bin/install-sh"; then - export INSTALL="\$\(depth\)/bin/install-sh" +rm -f conftest* fi -# ugh autoconf -if $CXX --version | grep '2\.[78]' > /dev/null || - $CXX --version | grep 'egcs' > /dev/null -then - true -else - - echo "configure: warning: can't find g++ 2.7" 1>&2 - warn_b=yes +if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_VPRINTF 1 +EOF +else + echo "$ac_t""no" 1>&6 fi -echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6 -echo "configure:1842: checking how to run the C++ preprocessor" >&5 -if test -z "$CXXCPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then +if test "$ac_cv_func_vprintf" != yes; then +echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 +echo "configure:2346: checking for _doprnt" >&5 +if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else - ac_ext=C -# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cxx_cross - CXXCPP="${CXX-g++} -E" cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char _doprnt(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char _doprnt(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub__doprnt) || defined (__stub____doprnt) +choke me +#else +_doprnt(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then - : +if { (eval echo configure:2377: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then + rm -rf conftest* + eval "ac_cv_func__doprnt=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - CXXCPP=/lib/cpp + eval "ac_cv_func__doprnt=no" fi rm -f conftest* - ac_cv_prog_CXXCPP="$CXXCPP" fi + +if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_DOPRNT 1 +EOF + +else + echo "$ac_t""no" 1>&6 fi -CXXCPP="$ac_cv_prog_CXXCPP" -echo "$ac_t""$CXXCPP" 1>&6 -ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6 -echo "configure:1880: checking for FlexLexer.h" >&5 -if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then +fi + +for ac_func in memmem snprintf vsnprintf gettext +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2404: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func(); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1890: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out` -if test -z "$ac_err"; then +if { (eval echo configure:2435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then rm -rf conftest* - eval "ac_cv_header_$ac_safe=yes" + eval "ac_cv_func_$ac_func=yes" else - echo "$ac_err" >&5 echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_header_$ac_safe=no" + eval "ac_cv_func_$ac_func=no" fi rm -f conftest* fi -if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then echo "$ac_t""yes" 1>&6 - true + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + +cat >> confdefs.h <> confdefs.h <&2 - warn_b=yes +for ac_prog in makeinfo +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2474: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$MAKEINFO"; then + ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_MAKEINFO="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi fi +MAKEINFO="$ac_cv_prog_MAKEINFO" +if test -n "$MAKEINFO"; then + echo "$ac_t""$MAKEINFO" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$MAKEINFO" && break +done +test -n "$MAKEINFO" || MAKEINFO="error" + + result="`echo \"$YODL2TEXINFO\" | grep echo`" + if test "x$YODL2TEXINFO" = "xerror" -o "x$result" != "x"; then + + echo "configure: warning: can\'t find yodl. You should install Yodl 1.30.pre4 or better" 1>&2 + warn_b=yes -touch stamp-h.in + fi -# first do Foobar/Makefile then Foobar/include/Makefile -trap '' 1 2 15 + trap '' 1 2 15 cat > confcache <<\EOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -2016,7 +2609,6 @@ do done ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" trap 'rm -fr `echo "$CONFIGFILE.make:config.make.in $CONFIGFILE.hh:config.hh.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 EOF @@ -2048,44 +2640,56 @@ s%@includedir@%$includedir%g s%@oldincludedir@%$oldincludedir%g s%@infodir@%$infodir%g s%@mandir@%$mandir%g +s%@package@%$package%g +s%@PACKAGE@%$PACKAGE%g +s%@PACKAGE_NAME@%$PACKAGE_NAME%g +s%@package_depth@%$package_depth%g +s%@AUTOGENERATE@%$AUTOGENERATE%g +s%@absolute_builddir@%$absolute_builddir%g +s%@stepmake@%$stepmake%g +s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g s%@host@%$host%g s%@host_alias@%$host_alias%g s%@host_cpu@%$host_cpu%g s%@host_vendor@%$host_vendor%g s%@host_os@%$host_os%g -s%@CURRENT@%$CURRENT%g -s%@REVISION@%$REVISION%g -s%@AGE@%$AGE%g -s%@YACC@%$YACC%g -s%@CXX@%$CXX%g -s%@RANLIB@%$RANLIB%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@TAR@%$TAR%g +s%@MAKE@%$MAKE%g s%@FIND@%$FIND%g -s%@LIBOBJS@%$LIBOBJS%g +s%@TAR@%$TAR%g +s%@BASH@%$BASH%g +s%@PYTHON@%$PYTHON%g +s%@DOTEXE@%$DOTEXE%g +s%@ZIP@%$ZIP%g +s%@LN@%$LN%g +s%@DIR_DATADIR@%$DIR_DATADIR%g +s%@subdirs@%$subdirs%g +s%@CC@%$CC%g +s%@LD@%$LD%g s%@ICFLAGS@%$ICFLAGS%g s%@ILDFLAGS@%$ILDFLAGS%g s%@DEFINES@%$DEFINES%g -s%@COMPILEINFO@%$COMPILEINFO%g -s%@AUTOGENERATE@%$AUTOGENERATE%g +s%@EXTRA_LIBES@%$EXTRA_LIBES%g +s%@CXX@%$CXX%g +s%@CXXCPP@%$CXXCPP%g +s%@YACC@%$YACC%g s%@BISON@%$BISON%g s%@FLEX@%$FLEX%g -s%@LN@%$LN%g -s%@PERL@%$PERL%g -s%@PYTHON@%$PYTHON%g -s%@ZIP@%$ZIP%g +s%@AR@%$AR%g +s%@RANLIB@%$RANLIB%g +s%@localedir@%$localedir%g +s%@DIR_LOCALEDIR@%$DIR_LOCALEDIR%g +s%@MSGFMT@%$MSGFMT%g s%@TEXPREFIX@%$TEXPREFIX%g s%@TEXDIR@%$TEXDIR%g s%@MFDIR@%$MFDIR%g -s%@DIR_DATADIR@%$DIR_DATADIR%g -s%@absolute_builddir@%$absolute_builddir%g -s%@EXTRA_LIBES@%$EXTRA_LIBES%g -s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g -s%@MAKE@%$MAKE%g -s%@POD2HTML@%$POD2HTML%g -s%@POD2MAN@%$POD2MAN%g -s%@CXXCPP@%$CXXCPP%g +s%@YODL@%$YODL%g +s%@YODL2HTML@%$YODL2HTML%g +s%@YODL2LATEX@%$YODL2LATEX%g +s%@YODL2MAN@%$YODL2MAN%g +s%@YODL2TEXINFO@%$YODL2TEXINFO%g +s%@YODL2TXT@%$YODL2TXT%g +s%@LIBOBJS@%$LIBOBJS%g +s%@MAKEINFO@%$MAKEINFO%g CEOF EOF @@ -2162,10 +2766,6 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then top_srcdir="$ac_dots$ac_given_srcdir" ;; esac - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac echo creating "$ac_file" rm -f "$ac_file" @@ -2181,7 +2781,6 @@ for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then s%@configure_input@%$configure_input%g s%@srcdir@%$srcdir%g s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g " $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file fi; done rm -f conftest.s* @@ -2305,8 +2904,102 @@ chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 +if test "$no_recursion" != yes; then + + # Remove --cache-file and --srcdir arguments so they do not pile up. + ac_sub_configure_args= + ac_prev= + for ac_arg in $ac_configure_args; do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case "$ac_arg" in + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; + esac + done + + for ac_config_dir in stepmake; do + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + if test ! -d $srcdir/$ac_config_dir; then + continue + fi + + echo configuring in $ac_config_dir + + case "$srcdir" in + .) ;; + *) + if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; + else + { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } + fi + ;; + esac + + ac_popdir=`pwd` + cd $ac_config_dir + + # A "../" for each directory in /$ac_config_dir. + ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` + + case "$srcdir" in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; + /*) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_config_dir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure; then + ac_sub_configure=$ac_sub_srcdir/configure + elif test -f $ac_sub_srcdir/configure.in; then + ac_sub_configure=$ac_configure + else + echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + + # Make the cache file name correct relative to the subdirectory. + case "$cache_file" in + /*) ac_sub_cache_file=$cache_file ;; + *) # Relative path. + ac_sub_cache_file="$ac_dots$cache_file" ;; + esac + + echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" + # The eval makes quoting arguments work. + if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir + then : + else + { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } + fi + fi + + cd $ac_popdir + done +fi + + + rm -f Makefile + cp make/Toplevel.make.in ./Makefile + chmod 444 Makefile -rm -f Makefile -cp make/Toplevel.make.in ./Makefile -chmod 444 Makefile diff --git a/configure.in b/configure.in index de0b59611d..c77794dc88 100644 --- a/configure.in +++ b/configure.in @@ -1,311 +1,57 @@ -dnl -*-shell-script-*- -dnl Process this file with autoconf to produce a configure script. +dnl configure.in -*-shell-script-*- +dnl Process this file with autoconf to produce a configure script. +# Bootstrap the init proces. List a file identifies your package. +AC_INIT(make/lilypond.lsm.in) +AC_CONFIG_HEADER($CONFIGFILE.hh:config.hh.in) -AC_INIT(flower/choleski.cc) -AC_CONFIG_HEADER($CONFIGFILE.hh:config.hh.in) #ugh flower/out/ -AC_CONFIG_AUX_DIR(bin) -AC_CANONICAL_HOST +# Bootstrap StepMake configure +AC_STEPMAKE_INIT +# For all packages except the StepMake package itself +AC_CONFIG_SUBDIRS(stepmake) -. $srcdir/VERSION -FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL -if test x$MY_PATCH_LEVEL != x; then - FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL -fi - - -. $srcdir/flower/VERSION -FULL_FLOWER_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL - -# libtool.info ... -# **Never** try to set library version numbers so that they correspond -# to the release number of your package. This is an abuse that only -# fosters misunderstanding of the purpose of library versions. - -REVISION=$PATCH_LEVEL -# CURRENT=$MINOR_VERSION -CURRENT=`expr $MINOR_VERSION + 1` -# AGE=$(expr $MAJOR_VERSION + 1) -AGE=$MAJOR_VERSION -AC_SUBST(CURRENT) -AC_SUBST(REVISION) -AC_SUBST(AGE) - -# turn off shared libraries by default (may be enabled using --enable-shared) -#AM_DISABLE_SHARED -#AM_PROG_LIBTOOL - -# ugh, automake: we want (and check for) bison -AC_PROG_YACC - -# ugh, automake: we want (and check for) flex -# AC_PROG_LEX -# urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack... +# Uncomment the configuration options your package needs. +AC_STEPMAKE_COMPILE +# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h) -# AC_DECL_YYTEXT -# ugh, ugh -ac_cv_prog_lex_root=lex.yy - -# -O is necessary to get inlining -OPTIMIZE="-O" printing_b=no -checking_b=yes -optimise_b=tja -profile_b=no -CONFIGSUFFIX= -debug_b=yes - - - -AC_LANG_CPLUSPLUS - -AC_CACHE_CHECK([whether explicit instantiation is needed], - lily_cv_need_explicit_instantiation, - AC_TRY_LINK([ -template struct foo { static int baz; }; -template int foo::baz = 1; -], [ return foo::baz; ], - lily_cv_need_explicit_instantiation=no, - lily_cv_need_explicit_instantiation=yes)) -if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then - AC_DEFINE(NEED_EXPLICIT_INSTANTIATION) -fi - AC_ARG_ENABLE(printing, [ enable-printing turn on debug printing. Default: off], [printing_b=$enableval]) -AC_ARG_ENABLE(checking, - [ enable-checking set runtime checks (assert calls). Default: on], - [checking_b=$enableval] ) - -AC_ARG_ENABLE(optimise, - [ enable-optimise use maximal speed optimisations. Default: off], - [optimise_b=$enableval]) - -AC_ARG_ENABLE(profiling, - [ enable-profiling compile with gprof support. Default: off], - [profile_b=$enableval]) - -AC_ARG_ENABLE(debugging, - [ enable-debugging set debug info. Default: on], - [debug_b=$enableval]) - -AC_ARG_ENABLE(mingw-prefix, - [ enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)], - [MINGWPREFIX=$enableval], - [MINGWPREFIX=no]) - -AC_ARG_ENABLE(tex-prefix, - [ enable-tex-prefix=DIR set the tex-directory to find TeX subdirectories. (default: PREFIX)], - [TEXPREFIX=$enableval], - [TEXPREFIX=auto] ) - -AC_ARG_ENABLE(tex-dir, - [ enable-tex-dir=DIR set the directory to put LilyPond TeX files in. ], - [TEXDIR=$enableval], - [TEXDIR=auto] ) - -AC_ARG_ENABLE(mf-dir, - [ enable-mf-dir=DIR set the directory to put LilyPond MetaFont files in. ], - [MFDIR=$enableval], - [MFDIR=auto]) - -AC_ARG_ENABLE(config, - [ enable-config=FILE put configure settings in config-FILE.make], - [CONFIGSUFFIX=$enableval]) - - -if test "$printing_b" = no; then - # ugh - AC_DEFINE(NPRINT) - DEFINES="$DEFINES -DNPRINT" -fi - -if test "$checking_b" = no; then - # ugh - AC_DEFINE(NDEBUG) - DEFINES="$DEFINES -DNDEBUG" -fi - if test "$optimise_b" = yes; then - DEFINES="$DEFINES -finline-functions -DSTRING_UTILS_INLINED" - OPTIMIZE="-O2" + DEFINES="$DEFINES -DSTRING_UTILS_INLINED" AC_DEFINE(STRINGS_UTILS_INLINED) fi -if test "$optimise_b" = no; then - OPTIMIZE="" -fi - -if test $profile_b = yes; then - EXTRA_LIBES="-pg" - DEFINES="$DEFINES -pg" -fi - -if test $debug_b = yes; then - DEFINES="$DEFINES -g" -fi - -# however, C++ support in mingw32 v 0.1.4 is still flaky -if test x$MINGWPREFIX != xno; then - ICFLAGS="-I$MINGWPREFIX/include" - ILDFLAGS="-$MINGWPREFIX/lib" -fi - -if test "x$OSTYPE" = "xWindows_NT"; then - LN=cp # hard link does not work under cygnus-nt (yet?) - ZIP="zip -r -9" # -else - LN=ln - ZIP="zip -r -9" -fi - -if test "$CONFIGSUFFIX" != "" ; then - CONFIGFILE=config-$CONFIGSUFFIX -else - CONFIGFILE=config -fi - - - -dnl COMPILEINFO="$HOST $host $TARGET $target" -AUTOGENERATE="This file was automatically generated by configure" -CPPFLAGS=${CPPFLAGS:-""} # we don't want -g -O junk -# CXXFLAGS=${CXXFLAGS:-""} # we don't want -g -O junk -CXXFLAGS="$DEFINES $OPTIMIZE" -LDFLAGS=$EXTRA_LIBES +AC_STEPMAKE_CXX +AC_STEPMAKE_GXX +AC_STEPMAKE_CXXTEMPLATE +AC_STEPMAKE_LEXYACC +AC_STEPMAKE_LIB +# AC_STEPMAKE_LIBTOOL +AC_STEPMAKE_LOCALE +AC_STEPMAKE_GETTEXT +AC_STEPMAKE_MSGFMT +AC_STEPMAKE_TEXMF +AC_STEPMAKE_YODL -AC_PROG_CXX -AC_PROG_RANLIB -AC_PROG_INSTALL -AC_CHECK_PROGS(TAR, tar, error) -AC_CHECK_PROGS(FIND, find, error) dnl should check out -print -AC_CHECK_SEARCH_RESULT($FIND, \`find\'. Please use --enable-tex-dir) +dnl huh? +AC_CHECK_SEARCH_RESULT($FIND, find, Please use --enable-tex-dir) AC_FUNC_MEMCMP AC_FUNC_VPRINTF -AC_CHECK_FUNCS(memmem snprintf ) +AC_CHECK_FUNCS(memmem snprintf vsnprintf gettext) AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, "${FULL_VERSION}") AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}") -# ugh: produces "${prefix}/share/lilypond" -# DIR_DATADIR=$datadir/lilypond -# ugh: produces "NONE/share/lilypond" -# DIR_DATADIR=$prefix/share/lilypond - -DIR_DATADIR=$prefix/share/lilypond -if test x$prefix = xNONE; then - DIR_DATADIR=/usr/local/share/lilypond -fi -AC_DEFINE_UNQUOTED(DIR_DATADIR, "${DIR_DATADIR}") - -absolute_builddir="`pwd`" - -AC_SUBST(CXXFLAGS) -AC_SUBST(CPPFLAGS) -AC_SUBST(LDFLAGS) -AC_SUBST(CXX) -AC_SUBST(ICFLAGS) -AC_SUBST(ILDFLAGS) -AC_SUBST(DEFINES) -AC_SUBST(RANLIB) -AC_SUBST(COMPILEINFO) -AC_SUBST(AUTOGENERATE) -AC_SUBST(BISON) -AC_SUBST(FLEX) -AC_SUBST(LN) -AC_SUBST(PERL) -AC_SUBST(PYTHON) -AC_SUBST(ZIP) -AC_SUBST(TEXPREFIX) -AC_SUBST(TEXDIR) -AC_SUBST(MFDIR) -AC_SUBST(DIR_DATADIR) -AC_SUBST(absolute_builddir) -AC_SUBST(EXTRA_LIBES) -AC_SUBST(CONFIGSUFFIX) -AC_CHECK_PROGS(BISON, bison, error) -AC_CHECK_PROGS(FLEX, flex, error) -AC_CHECK_PROGS(MAKE, make, error) -AC_PATH_PROG(PERL, perl, error) -AC_PATH_PROG(PYTHON, python, error) -AC_CHECK_PROGS(POD2HTML, pod2html, error) -AC_CHECK_PROGS(POD2MAN, pod2man, error) - - -if test "x$TEXPREFIX" = xauto ; then - AC_TEX_PREFIX(TEXPREFIX) -else - find_texprefix=$TEXPREFIX -fi - -if test "x$MFDIR" = xauto; then - AC_MF_SUBDIR(MFDIR) -fi - -if test "x$TEXDIR" = xauto ; then - AC_TEX_SUBDIR(TEXDIR) -fi - - -# AC_JUNK_ARGS( [if test "x$MFDIR" = xauto; then -# AC_MF_SUBDIR(MFDIR) -# fi] -# ) - -AC_CHECK_SEARCH_RESULT($MAKE, GNU make, You should install GNU make) -AC_CHECK_SEARCH_RESULT($BISON, bison, Please install Bison, 1.25 or better) -AC_CHECK_SEARCH_RESULT($PERL, perl, You should install Perl, version 5 or better) -AC_CHECK_SEARCH_RESULT($PYTHON, python, You should install Python) -AC_CHECK_SEARCH_RESULT($FLEX, flex, Please install Flex, 2.5 or better) -AC_CHECK_SEARCH_RESULT($POD2MAN, pod, You should install Perl, version 5 or better) - - -if test $MAKE != "error" ; then - $MAKE -v| grep GNU > /dev/null - if test "$?" = 1 - then - AC_LILY_WARN(Please install *GNU* make) - fi -fi - -if test $BISON != "error"; then - bison_version=`$BISON --version| sed 's/^.*version 1.//g' ` - if test $bison_version -lt 25; then - AC_LILY_WARN(Your bison is too old (1.$bison_version). Please install 1.25) - fi -fi - -if test "$INSTALL" = "bin/install-sh"; then - export INSTALL="\$\(depth\)/bin/install-sh" -fi - -# ugh autoconf -changequote(<<, >>)dnl -if $CXX --version | grep '2\.[78]' > /dev/null || - $CXX --version | grep 'egcs' > /dev/null -changequote([, ])dnl -then - true -else - AC_LILY_WARN(can't find g++ 2.7, 2.8 or egcs) -fi - -AC_CHECK_HEADER(FlexLexer.h, true, - AC_LILY_WARN(can't find flex header. Please install Flex headers correctly)) - -touch stamp-h.in - - -# first do Foobar/Makefile then Foobar/include/Makefile -AC_OUTPUT($CONFIGFILE.make:config.make.in) +AC_CHECK_PROGS(MAKEINFO, makeinfo, error) +AC_CHECK_SEARCH_RESULT($YODL2TEXINFO, yodl, + You should install Yodl 1.30.pre4 or better) -rm -f Makefile -cp make/Toplevel.make.in ./Makefile -chmod 444 Makefile +AC_STEPMAKE_END diff --git a/debian/Makefile b/debian/Makefile index 531f1330c4..4c736d9bb6 100644 --- a/debian/Makefile +++ b/debian/Makefile @@ -1,19 +1,32 @@ +# debian/Makefile + depth = .. NAME= debian -# generic variables: -# -include ./$(depth)/make/Variables.make -include ./$(depth)/make/Files.make -# +include $(depth)/make/Stepmake.make + +CONF_FILES=changelog copyright postinst postrm rules watch +OUTCONF_FILES=$(addprefix $(outdir)/, $(basename $(CONF_FILES))) $(OUTIN_FILES) +OUT_DIST_FILES = $(OUTIN_FILES) + +default: $(OUTCONF_FILES) + +BLURBS=BLURB +AT_FILES = $(BLURBS) # +at-dir = $(outdir)/ +at-ext = + +EXTRA_DIST_FILES = README.Debian TODO $(CONF_FILES) $(OUT_DIST_FILES) control.foka + +$(outdir)/%: % + rm -f $@ + ln $< $@ -# generic targets and rules: -# -include ./$(depth)/make/Targets.make -include ./$(depth)/make/Rules.make -# +$(outdir)/control: $(addprefix $(outdir)/, $(BLURBS)) +$(outdir)/%: $(doc-dir)/%.in + rm -f $@ + cat $< | sed 's%^% %' > $@ -EXTRA_DISTFILES = README.Debian TODO changelog control copyright \ - postinst postinst.old.sh postrm preinst rules watch +localdist: default diff --git a/debian/README.Debian b/debian/README.Debian index ba5d98e908..320703b028 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -1,22 +1,40 @@ -lilypond for DEBIAN +lilypond for Debian ------------------- -Starting with version 0.1.12, LilyPond comes with some new MF fonts. -These fonts are not currently listed in /usr/lib/texmf/fontname/special.map -(from the teTeX package), therefore the fonts will be created in a -non-standard directory somewhere under /var/spool/texmf. The problem is -usually only aesthetic. TeTeX can create and find the *.tfm and *.pk files -without any problems. - -However, if you experience any font problems (such as the note heads -not showing up, characters in the wrong places, error messages from -TeX), especially after upgrading to a new version of LilyPond, you may -need to delete the relevant *.tfm and *.pk files under the directory -/var/spool/texmf. You may also file a bug report about this if you -like. - -LilyPond is still in active development, and many things may still change. -When it is stablized in the future, these new fonts will probably be -added into the standard special.map file. - -Anthony Fok , Thu, 23 Oct 1997 16:59:32 -0600 +Dear music lover: + + Welcome to the wonderful world of music typesetting! ^_^ + This is the Debian package of GNU LilyPond. + Hope you enjoy producing beautiful music scores with GNU LilyPond + and other related packages! ^_^ + + +Old LilyPond Fonts Issue: +~~~~~~~~~~~~~~~~~~~~~~~~~ + + If you installed the lilypond_0.1.48-1 or previous versions of the + Debian GNU LilyPond package, please note the following: + + LilyPond comes with its own MF fonts starting with version 0.1.12. + + The old lilypond fonts were not listed in + /usr/lib/texmf/fontname/special.map (from the teTeX 0.4 package), + therefore the fonts were created in a non-standard directory + somewhere under /var/spool/texmf. The problem was usually only + aesthetic. TeTeX could create and find the *.tfm and *.pk files + without any problems. + + However, if you experience any font problems (such as the note + heads not showing up, characters in the wrong places, error + messages from TeX), especially after upgrading to a new version of + LilyPond, you may need to delete the relevant *.tfm and *.pk files + under the directory /var/spool/texmf. You may also file a bug + report about this if you like. + + Nonetheless, GNU LilyPond now comes with the standard "feta" fonts, + and they are already listed in the latest teTeX 0.9 / Web2C 7.2 + /usr/lib/texmf/fontname/special.map file, so there shouldn't be any + more problems! Enjoy! :-) + + +Anthony Fok , Wed, 22 Apr 1998 03:37:00 -0600 diff --git a/debian/TODO b/debian/TODO index 8a5f21bd28..25818fbb82 100644 --- a/debian/TODO +++ b/debian/TODO @@ -2,3 +2,6 @@ Fri, 6 Feb 1998 17:24:49 -0700: * Compile mudela-mode.el into mudela-mode.elc * Install /etc/emacs/site-start.d/50lilypond.el * Figure out how to make mudela-mode work on my computer. :-) + +Sun, 26 Apr 1998 21:11:32 -0600: + * Remove preinst from upstream source diff --git a/debian/changelog b/debian/changelog index 0f86127f06..c56fe5d3d1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,51 @@ +lilypond (0.1.76-1) unstable; urgency=low + + * support for 'make deb' target + + -- Jan Nieuwenhuizen Fri, 3 Jul 1998 17:53:37 +0200 + +lilypond (0.1.71-1) unstable; urgency=low + + * New upstream release. + + -- Anthony Fok Sat, 6 Jun 1998 00:00:00 -0600 + +lilypond (0.1.66-1) unstable; urgency=low + + * New upstream release. + + -- Anthony Fok Wed, 20 May 1998 06:50:12 -0600 + +lilypond (0.1.61-1) frozen unstable; urgency=low + + * New upstream release with tons of bug fixes. + Please put this in Hamm. + * Revised debian/rules w.r.t. make/lilypond.spec.in. + + -- Anthony Fok Mon, 4 May 1998 03:36:06 -0600 + +lilypond (0.1.60-1) frozen unstable; urgency=medium + + * New upstream release with lots of bug fixes, including the MIDI + generation bug in 0.1.48. Please put this in Hamm. + * debian/rules: + - Upgraded to standards version 2.4.1.0 (no changes). + - lilypond now also depends on tetex-base (>= 0.9-5) + and conflicts with tetex-base (<< 0.9). + * Modified postinst and postrm to work with teTeX 0.9 / Web2C 7.2: + - Removed all the *ugly* kludges and functions that were supposed to + deal with non-Debian teTeX installations. Those kludges were + specifically made for teTeX 0.4, but they failed to work as intended + due to the changes in teTeX 0.9. + - No longer messes with special.map because the standard + Web2C 7.2 special.map already lists the feta fonts. + - Since postinst is so much simpler, it is now a sh script! :-) + * Removed preinst which contained yet another obsolete kludge to clean + obsolete/ancient lilypond fonts. + * Updated the GNU LilyPond Home Page URIs. + + -- Anthony Fok Fri, 1 May 1998 01:14:49 -0600 + lilypond (0.1.48-1) unstable; urgency=low * New upstream release. diff --git a/debian/control b/debian/control index a99665244f..08a7805a9e 100644 --- a/debian/control +++ b/debian/control @@ -2,21 +2,21 @@ Source: lilypond Section: tex Priority: optional Maintainer: Anthony Fok -Standards-Version: 2.4.0.0 +Standards-Version: 2.4.1.0 Package: lilypond Architecture: any -Depends: ${shlibs:Depends} -Recommends: tetex-base -Conflicts: musixtex-fonts -Description: The GNU Project music typesetter. - LilyPond is the GNU Project music typesetter. The program generates - visual or auditive output from a music definition file: it can typeset - formatted sheet music to a TeX file and play (mechanical) performances - to a MIDI file. Features include multiple staffs, meters, clefs, - keys, lyrics, versatile input-language, cadenzas, beams, slurs, - triplets. It includes a nice font of musical symbols. +Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5) +Conflicts: musixtex-fonts, tetex-base (<< 0.9) +Description: The GNU Project music typesetter. + LilyPond is the GNU Project music typesetter. This program can print + beautiful sheet music from a music definition file. It can also play + mechanical performances to a MIDI file. Features include multiple + staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas, + beams, slurs, triplets, formatting scores, part extraction. It includes + a nice font of musical symbols. . - URL: http://www.stack.nl/~hanwen/lilypond/ - Authors: Han-Wen Nienhuys - Jan Nieuwenhuizen + URL: http://www.cs.ruu.nl/people/hanwen/lilypond + http://sca.uwaterloo.ca/~praetzel/lilypond/ + Authors: Han-Wen Nienhuys + Jan Nieuwenhuizen diff --git a/debian/control.foka b/debian/control.foka new file mode 100644 index 0000000000..2f98fdf549 --- /dev/null +++ b/debian/control.foka @@ -0,0 +1,30 @@ +Source: lilypond +Section: tex +Priority: optional +Maintainer: Anthony Fok +Standards-Version: 2.4.1.0 + +Package: lilypond +Architecture: any +Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5) +Conflicts: musixtex-fonts, tetex-base (<< 0.9) +Description: The GNU Project music typesetter. + LilyPond is the GNU Project music typesetter. This program can print + beautiful sheet music from a music definition file. It can also play + mechanical performances to a MIDI file. Features include multiple + staffs, meters, clefs, keys, lyrics, versatile input language, + cadenzas, beams, slurs, triplets, formatting scores, part extraction. + It includes a nice font of musical symbols. + . + LilyPond is de muziek typesetter van het GNU Project. + Het programma genereert prachtige bladmuziek uit een muziek definitie + bestand. Ook kan het (mechanische) uitvoeringen afspelen naar MIDI + bestanden. Bijzondere mogelijkheden omvatten verscheidene notenbalken, + maatsoorten, sleutels, toonsoorten, zangteksten, krachtige invoer taal, + cadensa, balken, boogjes, triolen, partituren, en losse partijen. Een + fraai font met muzikeksymbolen wordt meegeleverd. + . + URL: http://www.cs.ruu.nl/people/hanwen/lilypond/ + http://sca.uwaterloo.ca/~praetzel/lilypond/ + Authors: Han-Wen Nienhuys + Jan Nieuwenhuizen diff --git a/debian/control.in b/debian/control.in new file mode 100644 index 0000000000..c78565b29b --- /dev/null +++ b/debian/control.in @@ -0,0 +1,16 @@ +Source: lilypond +Section: tex +Priority: optional +Maintainer: Anthony Fok +Standards-Version: 2.4.1.0 + +Package: lilypond +Architecture: any +Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5) +Conflicts: musixtex-fonts, tetex-base (<< 0.9) +Description: The GNU Project music typesetter. @BLURB@ + . + URL: http://www.cs.ruu.nl/people/hanwen/lilypond + http://sca.uwaterloo.ca/~praetzel/lilypond/ + Authors: Han-Wen Nienhuys + Jan Nieuwenhuizen diff --git a/debian/copyright b/debian/copyright index 9223c27f8c..cf496990ff 100644 --- a/debian/copyright +++ b/debian/copyright @@ -2,18 +2,19 @@ This package was debianized by Anthony Fok on Wed, 6 Aug 1997 04:30:28 -0600 It was downloaded from - ftp://pcnov095.win.tue.nl/pub/lilypond/development/ - lilypond-0.1.48.tar.gz + ftp://pcnov095.win.tue.nl/pub/lilypond/development/ + lilypond-0.1.71.tar.gz It is also available from: - ftp://alpha.gnu.org/gnu/ + ftp://sca.uwaterloo.ca/pub/lilypond/development/ For more information about GNU LilyPond, please visit: - http://www.stack.nl/~hanwen/lilypond/ for more information. + http://www.cs.ruu.nl/people/hanwen/lilypond/ + or http://sca.uwaterloo.ca/~praetzel/lilypond/ Authors: - Han-Wen Nienhuys - Jan Nieuwenhuizen + Han-Wen Nienhuys + Jan Nieuwenhuizen Copyright: @@ -34,6 +35,13 @@ Copyright: along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + *** NOTE + + This license applies to all files except the included example + input files (which are in the subdirectory input/ and mutopia/ ) + + *** END NOTE + All the other scripts and control files for building and installing GNU LilyPond under Debian GNU/Linux are also under the GNU General diff --git a/debian/out/control b/debian/out/control new file mode 100644 index 0000000000..08a7805a9e --- /dev/null +++ b/debian/out/control @@ -0,0 +1,22 @@ +Source: lilypond +Section: tex +Priority: optional +Maintainer: Anthony Fok +Standards-Version: 2.4.1.0 + +Package: lilypond +Architecture: any +Depends: ${shlibs:Depends}, tetex-base (>= 0.9-5) +Conflicts: musixtex-fonts, tetex-base (<< 0.9) +Description: The GNU Project music typesetter. + LilyPond is the GNU Project music typesetter. This program can print + beautiful sheet music from a music definition file. It can also play + mechanical performances to a MIDI file. Features include multiple + staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas, + beams, slurs, triplets, formatting scores, part extraction. It includes + a nice font of musical symbols. + . + URL: http://www.cs.ruu.nl/people/hanwen/lilypond + http://sca.uwaterloo.ca/~praetzel/lilypond/ + Authors: Han-Wen Nienhuys + Jan Nieuwenhuizen diff --git a/debian/out/dummy.dep b/debian/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/debian/postinst b/debian/postinst old mode 100644 new mode 100755 index ddcc40e520..e7f9906b71 --- a/debian/postinst +++ b/debian/postinst @@ -1,244 +1,26 @@ -#!/usr/bin/perl -w +#!/bin/sh # # postinst script for the Debian GNU/Linux lilypond package # # by Anthony Fok # Initial release: Sun, 26 Oct 1997 03:23:00 -0700 -# Last modified: Mon, 5 Jan 1998 18:36:51 -0700 +# Last modified: Wed, 22 Apr 1998 03:14:10 -0600 -use strict; -use File::Copy; +set -e -my ($package, $pkg_name, $font_supplier, $font_typeface, $std_TEXMF, $TEXMF, - $TEXINPUTS, $MFINPUTS, $TFMFONTS, @fonts); +package=lilypond # This is used for filenames! Don't change it! +pkg_name="GNU LilyPond" -sub correct_opus_fonts ($$); -sub check_texmfcnf (); -sub run_texhash (); -sub add_fonts ($$$$@); -sub check_specialmap (); +std_TEXMFMAIN=/usr/lib/texmf # Debian's standard $TEXMFMAIN -$| = 1; +TEXMFMAIN=`/usr/bin/kpsewhich -expand-var '$TEXMFMAIN'` +: ${TEXMFMAIN:=$std_TEXMFMAIN} +echo " Running /usr/bin/mktexlsr ..." +/usr/bin/mktexlsr -####################### -# Variables -####################### - -$package = "lilypond"; # This is used for filenames! Don't change it! -$pkg_name = "GNU LilyPond"; - -$font_supplier = "public"; -$font_typeface = "lilypond"; -@fonts = qw( feta ); - -$std_TEXMF = "/usr/lib/texmf"; # Debian's standard $TEXMF -$TEXINPUTS = "$std_TEXMF/tex/$package//"; -$MFINPUTS = "$std_TEXMF/fonts/source/$font_supplier/$font_typeface//"; -$TFMFONTS = "$std_TEXMF/fonts/tfm/$font_supplier/$font_typeface//"; - - -####################### -# Subroutine -####################### - -#----- Fix Opus font entries in special.map (called by check_specialmap()) --- -# I goofed up the Opus font entries in special.map, hence this fix. -# Note: This is a temporary fix. Consider removing this in 1998. ^_^ - -sub correct_opus_fonts ($$) { - my $specialmap = $_[1]; - my $supplier = "opustex"; - my $typeface = "opus"; - my @opusfonts = qw( opus opusline opusnum opussps osl ); - my $font = ""; - my $entries = ""; - - if ($_[0] =~ /(^\w+\s+public\s+$typeface\n)+/m) { - print " Correcting old font entries ..."; - foreach $font (@opusfonts) { - if (length($font) < 8) { $font .= "\t"; } - $entries .= "$font\t$supplier\t\t$typeface\n"; - } - - ($_[0] =~ s/(^\w+\s+public\s+$typeface\n)+/$entries/m) - or die " Can't correct font entries in $specialmap: $!"; - - system(": \${MAKETEXDIR=$TEXMF/maketex}; " . - "test -r \$MAKETEXDIR/maketex.site && . \$MAKETEXDIR/maketex.site; " . - ": \${MT_DESTROOT=$TEXMF/fonts}; " . - "rm -rf \$MT_DESTROOT/pk/*/public/$typeface"); - - print "\n"; - return 1; - } else { - return 0; - } -} - -#-------------------- Check/Modify texmf.cnf for custom teTeX installation --- -# Edit texmf.cnf to add search path /usr/lib/texmf -# for non-Debian teTeX installation - -sub check_texmfcnf () { - my $texmfcnf; - - print "\n You have a custom teTeX installation in $TEXMF.\n"; - - chop($texmfcnf = `kpsewhich cnf texmf.cnf`); - - if ($? == 0 and $texmfcnf ne "") { - my($filebuf, $line); - my $new = "$texmfcnf.new"; - my $bak = "$texmfcnf.bak"; - - open(OLD, "< $texmfcnf") or die " Can't open $texmfcnf for reading: $!"; - - undef $/; - if ($filebuf = ) { - if ($filebuf =~ /^(TEXMFL.*)$/m) { - $line = $1; - if ($line =~ /TEXMFL\s*=.*$std_TEXMF/) { - print " Found $std_TEXMF in \$TEXMFL. Leaving $texmfcnf untouched.\n"; - } else { - print " Adding $std_TEXMF to \$TEXMFL, updating $texmfcnf ..."; - - $filebuf =~ s/^(TEXMFL\s*=\s*\S*)/$1,$std_TEXMF/m; - open(NEW, "> $new") or die "\n Can't open $new for writing: $!"; - (print NEW $filebuf) or die "\n Can't write to $new: $!"; - close(NEW); - copy($texmfcnf, $bak) or die "\n Can't backup $texmfcnf: $!"; - rename($new, $texmfcnf) - or ( copy($new, $texmfcnf), unlink($new) ) - or die "\n Can't update $texmfcnf: $!"; - print " done.\n"; - } - } - } else { - warn " **\n"; - warn " ** Can't read from $texmfcnf: $!\n"; - warn " ** Please verify the content of $texmfcnf!\n"; - warn " **\n"; - } - $/ = "\n"; - close(OLD); - } else { - warn " **\n"; - warn " ** Can't find texmf.cnf!\n"; - warn " ** Please add $std_TEXMF to \$TEXMFL in your texmf.cnf.\n"; - warn " **\n"; - } -} - -#------------------------------------------------------------- Run texhash --- - -sub run_texhash () { - print " Running texhash to update $TEXMF/ls-R ...\n"; - - if ( `which texhash` and -e "$TEXMF/ls-R" ) { - system("texhash"); - } else { - warn " Error: texhash or $TEXMF/ls-R not found!\n"; - } - print "\n"; -} - -#---------- Add font entries to special.map (called by check_specialmap()) --- - -sub add_fonts ($$$$@) { - my ($specialmap, $supplier, $typeface, $fonts) = @_[1..4]; - my $font = ""; - my $entries = ""; - foreach $font (@fonts) { - if (length($font) < 8) { $font .= "\t"; } - $entries .= "$font\t$supplier\t\t$typeface\n"; - } - - $_[0] =~ /((^\w+\s+$supplier\s+$typeface\n)+)/m; - - if ($1 ne $entries) { - ($_[0] =~ s/(^\w+\s+$supplier\s+$typeface\n)+/$entries/m) - or ($_[0] =~ s/(?=^beam\s+public\s+music\n)/$entries/m) - or die " Can't add font entries to $specialmap: $!"; - return 1; - } else { - return 0; - } -} - -#---------------------------------- Check special.map and add font entries --- - -sub check_specialmap () { - my $fontmap; - my $specialmap = "$TEXMF/fontname/special.map"; - my $new = "$specialmap.new"; - my $bak = "$specialmap.bak"; - - print " Checking font entries in $specialmap ...\n"; - - open(OLD, "< $specialmap") or die " Can't open $specialmap for reading: $!"; - undef $/; - if ($fontmap = ) { - if (correct_opus_fonts($fontmap, $specialmap) | - add_fonts($fontmap, $specialmap, $font_supplier, $font_typeface, @fonts)) - { - print " Adding $pkg_name font entries to $specialmap ...\n"; - open(NEW, "> $new") or die " Can't open $new for writing: $!"; - (print NEW $fontmap) or die " Can't write to $new: $!"; - close(NEW); - copy($specialmap, $bak) or die " Can't backup $specialmap: $!"; - rename($new, $specialmap) - or ( copy($new, $specialmap), unlink($new) ) - or die " Can't update $specialmap: $!"; - } else { - print " Entries okay. Leaving $specialmap untouched.\n"; - } - undef $fontmap; - } else { - warn " **\n"; - warn " ** Can't read from $specialmap: $!\n"; - warn " ** Please verify the content of $specialmap!\n"; - warn " **\n"; - } - $/ = "\n"; - close(OLD); - print "\n"; -} - - - -####################### -# Main program -####################### - -print " Checking teTeX directory \$TEXMF ..."; - -chop($TEXMF = `kpsetool -v '\$TEXMF'`); - -if ($? == 0 and $TEXMF ne "") { - print " okay."; -} else { - warn "\n Error: kpsetool not found or \$TEXMF not set!\n"; - warn " Assuming \$TEXMF=$std_TEXMF\n"; - $TEXMF = $std_TEXMF; - if (not -d $TEXMF) { - warn " ... but directory '$TEXMF' does not exist either!\n"; - die " Please check your teTeX configuration.\n" - } -} - -if ($TEXMF ne $std_TEXMF) { - check_texmfcnf(); -} - -print "\n"; - -run_texhash(); -check_specialmap(); - -print " $pkg_name configuration completed.\n"; -print " Please read /usr/doc/$package/README.Debian to get started.\n"; - -print << `EOF` #DEBHELPER# -EOF + +echo +echo " $pkg_name configuration completed." +echo " Please read /usr/doc/$package/README.Debian to get started." diff --git a/debian/postinst.old.sh b/debian/postinst.old.sh deleted file mode 100644 index 55188f11a9..0000000000 --- a/debian/postinst.old.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -e -# -# postinst script for the Debian GNU/Linux lilypond package -# by Anthony Fok -# This is free software; see the GNU General Public Licence -# version 2 or later for copying conditions. There is NO warranty. -# Last modified: Wed, 6 Aug 1997 13:42:45 -0600 - -std_TEXMF=/usr/lib/texmf - -if [ "`which kpsetool`" ]; then - TEXMF=`kpsetool -v '$TEXMF'` -fi -: ${TEXMF:=$std_TEXMF} - -if [ "$TEXMF" = "$std_TEXMF" -a "`which texhash`" -a -e $TEXMF/ls-R ]; then - texhash -fi diff --git a/debian/postrm b/debian/postrm old mode 100644 new mode 100755 index e3d606b1e6..e0dd95cfbc --- a/debian/postrm +++ b/debian/postrm @@ -4,52 +4,46 @@ # by Anthony Fok # This is free software; see the GNU General Public Licence # version 2 or later for copying conditions. There is NO warranty. -# Last modified: Mon, 5 Jan 1998 18:38:11 -0700 +# Last modified: Wed, 22 Apr 1998 05:55:58 -0600 set -e package=lilypond font_supplier=public font_typeface=lilypond -std_TEXMF=/usr/lib/texmf +std_TEXMFMAIN=/usr/lib/texmf +std_VARTEXFONTS=/var/spool/texmf #DEBHELPER# -if [ "`which kpsetool`" ]; then - TEXMF=`kpsetool -v '$TEXMF'` -fi -: ${TEXMF:=$std_TEXMF} - +TEXMFMAIN=`/usr/bin/kpsewhich -expand-var '$TEXMFMAIN'` +: ${TEXMFMAIN:=$std_TEXMFMAIN} +VARTEXFONTS=`/usr/bin/kpsewhich -expand-var '$VARTEXFONTS'` +: ${VARTEXFONTS=$std_VARTEXFONTS} case "$1" in remove) - if [ "`kpsetool -w tex lilyponddefs.tex 2>/dev/null`" -a "`which texhash`" ]; then - texhash - fi + /usr/bin/mktexlsr ;; upgrade) # Clear out the old TFM and PK files in case the fonts were modified - : ${MAKETEXDIR=$TEXMF/maketex} - test -r $MAKETEXDIR/maketex.site && . $MAKETEXDIR/maketex.site - : ${MT_DESTROOT=$TEXMF/fonts} - rm -rf $MT_DESTROOT/tfm/$font_supplier/$font_typeface - rm -rf $MT_DESTROOT/pk/*/$font_supplier/$font_typeface + rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface + rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface ;; purge) - : ${MAKETEXDIR=$TEXMF/maketex} - test -r $MAKETEXDIR/maketex.site && . $MAKETEXDIR/maketex.site - : ${MT_DESTROOT=$TEXMF/fonts} - rm -rf $MT_DESTROOT/tfm/$font_supplier/$font_typeface - rm -rf $MT_DESTROOT/pk/*/$font_supplier/$font_typeface + # Clear out the old TFM and PK files in case the fonts were modified + rm -rf $VARTEXFONTS/tfm/$font_supplier/$font_typeface + rm -rf $VARTEXFONTS/pk/*/$font_supplier/$font_typeface + /usr/bin/mktexlsr ;; failed-upgrade|abort-install|abort-upgrade|disappear) ;; *) - echo "postrm called with unknown argument \`$1'" >&2 - exit 0 + echo "postrm called with unknown argument \`$1'" >&2 + exit 0 ;; esac diff --git a/debian/preinst b/debian/preinst deleted file mode 100644 index fff81f284c..0000000000 --- a/debian/preinst +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/sh -# -# preinst script for the Debian GNU/Linux lilypond package -# by Anthony Fok -# This is free software; see the GNU General Public Licence -# version 2 or later for copying conditions. There is NO warranty. -# Last modified: Mon, 5 Jan 1998 18:39:30 -0700 - -set -e - -package=lilypond -font_supplier=public -font_typeface=lilypond -std_TEXMF=/usr/lib/texmf - -#DEBHELPER# - -if [ "`which kpsetool`" ]; then - TEXMF=`kpsetool -v '$TEXMF'` -fi -: ${TEXMF:=$std_TEXMF} - - -case "$1" in - - install | upgrade) - - # Prior to the Debian release of the lilypond_0.1.29-1 package, - # LilyPond's fonts were not added to teTeX's special.map, - # and so the automatically generated TFM and PK files were placed - # in the wrong directory under /var/spool/texmf (or $MT_DESTROOT). - # So, now I have to clean up after my mess to make sure those fonts - # do not interfere with the new fonts! :) - - : ${MAKETEXDIR=$TEXMF/maketex} - test -r $MAKETEXDIR/maketex.site && . $MAKETEXDIR/maketex.site - : ${MT_DESTROOT=$TEXMF/fonts} - - # Remove the "stray" old LilyPond TFM and PK files. - for i in tfm pk - do - find $MT_DESTROOT/$i \( -name 'dyn10.*'$i -o -name 'font-en-tja*.*'$i \ - -o -name 'vette-beams*.*'$i \) -print0 | - xargs --null --no-run-if-empty rm -f - done - - # Remove empty directories. - # A note to myself or the future maintainer: - # Why the "for i in 1 2" loop? Well, it seems that either - # "find some_path -depth" isn't working properly, or I - # (Anthony) don't know its proper behaviour. Please look - # into it and see if this ugly hack could be removed. - for i in 1 2 - do - find $MT_DESTROOT/tfm -depth -mindepth 1 -type d -empty -print0 2> /dev/null | - xargs -0r --null --no-run-if-empty rmdir - find $MT_DESTROOT/pk -depth -mindepth 2 -type d -empty -print0 2> /dev/null | - xargs -0r --null --no-run-if-empty rmdir - done - ;; - - abort-upgrade) - ;; - - *) - echo "$0 called with unknown argument \`$1'" >&2 - exit 0 - ;; - -esac diff --git a/debian/rules b/debian/rules old mode 100644 new mode 100755 index c0a20793c3..fb123fcfa9 --- a/debian/rules +++ b/debian/rules @@ -18,10 +18,12 @@ SHELL = /bin/bash build: build-stamp build-stamp: dh_testdir + ./configure --disable-checking --disable-debugging \ --enable-printing --prefix=/usr --enable-optimise \ --enable-shared $(MAKE) all + touch build-stamp clean: @@ -29,6 +31,12 @@ clean: dh_testroot rm -f build-stamp -$(MAKE) distclean + -$(MAKE) local-distclean + + # Remove the following line once the *.make files are fixed + rm -f bin/*.pyc + rm -f debian/preinst + dh_clean # Build architecture-independent files here. @@ -38,23 +46,29 @@ binary-indep: build binary-arch: build dh_testdir dh_testroot - dh_installdirs usr/lib/texmf/doc usr/lib/emacs/site-lisp + dh_clean -k + + dh_installdirs usr/lib/texmf/doc \ + usr/lib/emacs/site-lisp \ + usr/doc/$(package)/examples ln -fs ../../../doc/lilypond debian/tmp/usr/lib/texmf/doc/lilypond $(MAKE) prefix=`pwd`/debian/tmp/usr install cp -av mudela-mode.el debian/tmp/usr/lib/emacs/site-lisp - dh_installdocs ANNOUNCE ANNOUNCE-0.1 README NEWS ONEWS DEDICATION \ + dh_installdocs ANNOUNCEMENT ANNOUNCE-0.1 README.txt NEWS ONEWS DEDICATION \ BUGS TODO \ - Documentation/*.{doc,xpm} Documentation/out/*.txt -# Documentation/*.doc Documentation/out/*.{txt,gif} - dh_installexamples input/{*.ly,TODO} - cp -aPv `find mutopia \( -name '*.ly' -o -name '*.tex' -o -name 'TODO' \)` \ + Documentation/pictures/*.xpm \ + Documentation/out/*.txt \ + Documentation/tex/*.doc \ + Documentation/tex/*.bib +# dh_installexamples input + cp -aP `find input mutopia \( -name '*.ly' -o -name '*.tex' -o -name 'TODO' \)` \ debian/tmp/usr/doc/lilypond/examples # dh_installmenu # dh_installcron # dh_installmanpages # dh_undocumented dh_installchangelogs - dh_strip +# dh_strip dh_compress dh_fixperms dh_suidregister @@ -62,7 +76,6 @@ binary-arch: build dh_shlibdeps dh_gencontrol # dh_makeshlibs - dh_du dh_md5sums dh_builddeb diff --git a/dstreamrc b/dstreamrc new file mode 100644 index 0000000000..d8e7b6a65b --- /dev/null +++ b/dstreamrc @@ -0,0 +1,127 @@ +# This file controls which classes produce debugging output +# rename to .dstreamrc and place in the directory where you're doing +# the debugging. + +# class name silence? +Dstream 1 + +# yydebug +InitParser 1 +Parser 1 +InitDeclarations 1 +Declarations 1 +yyparse 1 +# FlexLexer debug +InitLexer 1 +Lexer 1 + +My_lily_lexer 1 + +walking 1 + +# flower lib +File_path 1 +Matrix 1 +Vector 1 + +# lily +Absolute_dynamic_req 1 +Atom 1 +Axis_group_administration 0 +Bar 1 +Bar_req 1 +Beam 0 +Bow 1 +Bezier_bow 1 +Change_iterator 1 +Chord 1 +Chord_iterator 1 +Clef_item 1 +Clef_change_req 1 +Col_configuration 1 +Col_hpositions 1 +Colinfo 1 +Colinfo 1 +Collision 1 +Column_rod 1 +Duration_identifier 1 +Engraver 0 +Engraver_group_engraver 0 +General_script_def 1 +Graphical_element 1 +Group_change_req 1 +Head_column 0 +Horizontal_align_item 1 +Idealspacing 1 +Identifier 1 +Ineq_constrained_qp 1 +Input_translator 1 +int_identifier 1 +Item 0 +Key_item 1 +Lookup 1 +Line_spacer 1 +Melodic_req 1 +Midi_def 1 +Midistrings 0 +Mixed_qp 1 +Music 1 +Musical_pitch 1 +Music_iterator 1 +Music_output_def 1 +Note_column 0 +Note_head 1 +Note_performer 1 +Note_req 1 +Paper_column 0 +Paper_score 1 +Paper_def 1 +Performer 1 +Performer_group_performer 1 +Real_identifier 1 +Request 1 +Request_iterator 1 +Rest_collision 1 +Rest_collision_engraver 0 +Rest_req 1 +Rhythmic_head 0 +Rhythmic_req 1 +Scope 1 +Score 0 +Score_column 0 +Score_elem 0 +Score_engraver 0 +Score_performer 1 +Script_column 1 +Script_def 1 +Script_req 1 +Single_malt_grouping_item 1 +Slur 1 +Spacer_rod 1 +Spacing_problem 1 +Span_req 1 +Span_dynamic_req 1 +Spanner 1 +Spring_spacer 1 +Skip_req 1 +Staff_commands 1 +Staff_symbol 1 +Stem 1 +Stem_info 0 +Stem_req 1 +Symtable 1 +Symtables 1 + +Text_def 1 +Text_req 1 +Time_description 1 +Translation_property 0 +Translator 0 +Translator_group 0 +Voice 1 +Voice_iterator 1 +Word_wrap 1 + +delete_identifiers 1 +parse_duration 1 +parse_pitchmod 1 diff --git a/flower/Makefile b/flower/Makefile index c970266bd6..e6ef878895 100644 --- a/flower/Makefile +++ b/flower/Makefile @@ -1,65 +1,20 @@ -# -# project FlowerSoft C++ library # title top level makefile for FlowerLib # file flower/Makefile -# -# Copyright (c) 1997 by -# Jan Nieuwenhuizen -# Han-Wen Nienhuys -# ...your sort order here, or how to comment-out a comment -# subdir level: -# +# should reinstate versioning if shared libs are enabled. + depth = .. -# -# identify module: -# NAME = flower MODULE_NAME = flower SUBDIRS = include -# -# list of distribution files: -# SCRIPTS = -README_FILES = ONEWS NEWS README TODO -EXTRA_DISTFILES= VERSION $(README_FILES) $(SCRIPTS) - -include ./$(depth)/VERSION -include ./$(depth)/flower/VERSION - -include ./$(depth)/make/Variables.make -include ./$(depth)/make/Files.make -include ./$(depth)/make/Targets.make -include ./$(depth)/make/Rules.make - -default: the-lib - -THE_LIB=$(outdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX) -the-lib: $(THE_LIB) - -# version: -# - -localdist: - --include /dev/null $(DEPFILES) -# - -localdistclean: - rm -f config.cache config.status config.log - -localinstall: $(LIBFLOWER) -ifeq ($(LIB_SUFFIX),.so) - $(INSTALL) -d $(libdir) - $(INSTALL) $(LIBFLOWER).$(VERSION) $(libdir) - ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX).$(MAJOR_VERSION) - ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX) -endif +README_FILES = NEWS-1.0 NEWS-1.1.46 README TODO +EXTRA_DIST_FILES= VERSION $(README_FILES) $(SCRIPTS) -localuninstall: - rm -f $(libdir)/libflower.{so*,a} +include $(depth)/make/Stepmake.make +include $(stepdir)/C++.make +include $(stepdir)/Library.make -$(outdir)/flower-version.o: $(outdir)/version.hh diff --git a/flower/NEWS b/flower/NEWS deleted file mode 100644 index e9a2005613..0000000000 --- a/flower/NEWS +++ /dev/null @@ -1,187 +0,0 @@ -pl 42.jcn1 - - String_convert::split_arr - -pl 42 - - interval.*: Slice (Interval of int) - trying to get rid of 2.8 ice: - - moved functions with loops from varray.hh to varray.cc - -pl 41 - - matrix fixes; more inlining no virtual methods - -pl 40 - - do some Complex number stuff in Offset - - included axies, offset from lily - -pl 39 - - fixes to Array - - fixes to Interval - - -pl 38 - - Rational - - Real.hh fixes -pl 37 - - various String/File_path mucking - -pl 36 - - memmem fix: bugfree and *really* conforming to /usr/include/string.h - -pl 35 - - bf: libc-extension: memmem - -pl 34 - - string.icc - - String_convert::precision_str: double to string with fixed precision - -pl 33 - - String naming - - unix style paths - -pl 32 - - Assoc::clear - - bf: Assoc[PreviouslyUsedAndDeletedKey] = foo - - -pl 31 - - removed String::bool () [Sigh], String::operator char const * -pl 30 - - Cpu_timer -pl 29 - - Dictionary_iter, Dictionary - -pl 28 - - String::bool () - - GNU indentation. - -pl 27 - - naming: macros are MACROS - -pl 26 - - Getopt_long : command -- and command - - - Getopt_long: cosmetics - -pl 25 - - unordered_substitute and unordered_del - - Full_storage inline functions - - more Diagonal_storage fixes - -pl 24 - - Diagonal_storage for band matrices. - - matrix hackings: support for other Matrix_storage - - NAME_MEMBERS(); -> DECLARE_MY_RUNTIME_TYPEINFO; - - Matrix::band_i() - -pl 23: - - virtual-methods : static_is_type_b - - Choleski checks off if not PARANOID - -pl 22: - - ACursor and PACursor to give array a List like interface. - -pl 21: -pl 20.mb - - bf: Warning about NPRINT only if debugging requested. - -pl 20 - - List::junk_links() - -pl 19 - - Array::reverse() - -pl 18 - - Path::find("/usr/..") fix - - Directed_graph_node - - some Link_array extensions - - Pointer_list::junk() - -pl 17 - - naming: Pointer->Link, IPointer->Pointer - -pl 16 - - Array::get() - - P< > doco. - -pl 15 - - #ifndef fixes (MB) - - Dstream::clear () - -pl 14 - - interval methods - -pl 13 - - better test-bed - - Heap PQueue implementation - -pl 12 - - No path search for "" and "-" - -pl 11 - - template<> class P - - assoc elem() methods - -pl 10 - - Matrix_storage naming - - Matrix_storage::try_right_multiply to help speed up - matrix multiply routines. - -pl 9 - - _C iso _c_l - - flower-debug. - -pl 8 - - -pl 7 - - PQueue blondification. - - String_convert::i2hex_str fix, unsigned eqvs introduced - - long long depreciated, now named I64 - - type I32 introduced. should be used iso int where 32 bits are - needed(or, brr, assumed...) - -pl 6-2 -Bugfix - - silly String( int... ) -> String( (char)... ) fix - really should junk ambiguous constructor overload -pl 6-1 - -Bugfix - - small but nasty include/fversion.hh fixed - -pl 6 - - all of 4-1 and 5 -Bugfix - - null_terminated -> is_binary test - -pl 5 - - memmem interface, conditional compilation - - snprintf - -pl 4-1 - - included in new make structure, as a library of lilypond; - for compiling you-ll need ../make and ../bin dirs from - lilypond... - -pl 4 - - great file-renaming. - - String cleanup (binary <-> null terminate), several bugfixes - - great renaming of String and String_convert interfaces - - more conversions moved (copied actually) to String_convert - - String indexing now all base = 0, not found = -1 - - renamed by to byte - -pl 3 - - String::mid - - memmove test code - -pl 2 - - StringConversio::bin2int_i - - dumb prioq - -pl 1 - - separated StringHandle and StringData - - String::compare - -0: - - diff --git a/flower/NEWS-1.0 b/flower/NEWS-1.0 new file mode 100644 index 0000000000..9f4df5bb07 --- /dev/null +++ b/flower/NEWS-1.0 @@ -0,0 +1,34 @@ +history of flower lib 0.0 + +version 1.1 release + +pl 27-3 + - debug memmove code + - StringData bugfix + - old String::String( char, int ) bugfix + +pl 27-1,2 (not released) + patches by JCN + - stringutils.cc included again + - bin2hex_str bugfix + - String class handles null bytes + - StringUtils inlined/outlined by #define + - StringConversion (only hex for now) + +pl 27 + - (temporarily?) removed findcursor* t*mat* + +pl 26 + - docxx 3.0 + +pl 25 + - merge sstack and Array + +pl 24 + - small fix in vector print + +pl 23 + - win32 patches (JN) + +pl 22 + - Array::add -> Array::push diff --git a/flower/NEWS-1.1.46 b/flower/NEWS-1.1.46 new file mode 100644 index 0000000000..176bced2fe --- /dev/null +++ b/flower/NEWS-1.1.46 @@ -0,0 +1,203 @@ +As of 1.1.46, FlowerLib does not have its own versioning scheme. + +May be some later time we might reinstate it. .. + + +pl 46 + - simpler double -> Rational conversion + +pl 45 + - virtual method class_size () + +pl 44 + - Data_file::gulp () + +pl 43 + - String_convert::split_arr + - varray.hh -> array.hh + + +pl 42 + - interval.*: Slice (Interval of int) + trying to get rid of 2.8 ice: + - moved functions with loops from varray.hh to varray.cc + +pl 41 + - matrix fixes; more inlining no virtual methods + +pl 40 + - do some Complex number stuff in Offset + - included axies, offset from lily + +pl 39 + - fixes to Array + - fixes to Interval + + +pl 38 + - Rational + - Real.hh fixes +pl 37 + - various String/File_path mucking + +pl 36 + - memmem fix: bugfree and *really* conforming to /usr/include/string.h + +pl 35 + - bf: libc-extension: memmem + +pl 34 + - string.icc + - String_convert::precision_str: double to string with fixed precision + +pl 33 + - String naming + - unix style paths + +pl 32 + - Assoc::clear + - bf: Assoc[PreviouslyUsedAndDeletedKey] = foo + + +pl 31 + - removed String::bool () [Sigh], String::operator char const * +pl 30 + - Cpu_timer +pl 29 + - Dictionary_iter, Dictionary + +pl 28 + - String::bool () + - GNU indentation. + +pl 27 + - naming: macros are MACROS + +pl 26 + - Getopt_long : command -- and command - + - Getopt_long: cosmetics + +pl 25 + - unordered_substitute and unordered_del + - Full_storage inline functions + - more Diagonal_storage fixes + +pl 24 + - Diagonal_storage for band matrices. + - matrix hackings: support for other Matrix_storage + - NAME_MEMBERS(); -> DECLARE_MY_RUNTIME_TYPEINFO; + - Matrix::band_i() + +pl 23: + - virtual-methods : static_is_type_b + - Choleski checks off if not PARANOID + +pl 22: + - ACursor and PACursor to give array a List like interface. + +pl 21: +pl 20.mb + - bf: Warning about NPRINT only if debugging requested. + +pl 20 + - List::junk_links() + +pl 19 + - Array::reverse() + +pl 18 + - Path::find("/usr/..") fix + - Directed_graph_node + - some Link_array extensions + - Pointer_list::junk() + +pl 17 + - naming: Pointer->Link, IPointer->Pointer + +pl 16 + - Array::get() + - P< > doco. + +pl 15 + - #ifndef fixes (MB) + - Dstream::clear () + +pl 14 + - interval methods + +pl 13 + - better test-bed + - Heap PQueue implementation + +pl 12 + - No path search for "" and "-" + +pl 11 + - template<> class P + - assoc elem() methods + +pl 10 + - Matrix_storage naming + - Matrix_storage::try_right_multiply to help speed up + matrix multiply routines. + +pl 9 + - _C iso _c_l + - flower-debug. + +pl 8 + + +pl 7 + - PQueue blondification. + - String_convert::i2hex_str fix, unsigned eqvs introduced + - long long depreciated, now named I64 + - type I32 introduced. should be used iso int where 32 bits are + needed(or, brr, assumed...) + +pl 6-2 +Bugfix + - silly String( int... ) -> String( (char)... ) fix + really should junk ambiguous constructor overload +pl 6-1 + +Bugfix + - small but nasty include/fversion.hh fixed + +pl 6 + - all of 4-1 and 5 +Bugfix + - null_terminated -> is_binary test + +pl 5 + - memmem interface, conditional compilation + - snprintf + +pl 4-1 + - included in new make structure, as a library of lilypond; + for compiling you-ll need ../make and ../bin dirs from + lilypond... + +pl 4 + - great file-renaming. + - String cleanup (binary <-> null terminate), several bugfixes + - great renaming of String and String_convert interfaces + - more conversions moved (copied actually) to String_convert + - String indexing now all base = 0, not found = -1 + - renamed by to byte + +pl 3 + - String::mid + - memmove test code + +pl 2 + - StringConversio::bin2int_i + - dumb prioq + +pl 1 + - separated StringHandle and StringData + - String::compare + +0: + + diff --git a/flower/ONEWS b/flower/ONEWS deleted file mode 100644 index 9f4df5bb07..0000000000 --- a/flower/ONEWS +++ /dev/null @@ -1,34 +0,0 @@ -history of flower lib 0.0 - -version 1.1 release - -pl 27-3 - - debug memmove code - - StringData bugfix - - old String::String( char, int ) bugfix - -pl 27-1,2 (not released) - patches by JCN - - stringutils.cc included again - - bin2hex_str bugfix - - String class handles null bytes - - StringUtils inlined/outlined by #define - - StringConversion (only hex for now) - -pl 27 - - (temporarily?) removed findcursor* t*mat* - -pl 26 - - docxx 3.0 - -pl 25 - - merge sstack and Array - -pl 24 - - small fix in vector print - -pl 23 - - win32 patches (JN) - -pl 22 - - Array::add -> Array::push diff --git a/flower/README b/flower/README index 46a01d28e5..75bc0679e7 100644 --- a/flower/README +++ b/flower/README @@ -7,6 +7,6 @@ It was written by: and - Jan Nieuwenhuizen + Jan Nieuwenhuizen -It is licensed under the GNU GPL. +It is licensed under the GNU LGPL. diff --git a/flower/VERSION b/flower/VERSION index cf5e1da91b..90f2855e7f 100644 --- a/flower/VERSION +++ b/flower/VERSION @@ -1,7 +1,9 @@ -MAJOR_VERSION=1 +PACKAGE_NAME=LilyPond +MAJOR_VERSION=0 MINOR_VERSION=1 -PATCH_LEVEL=42 +PATCH_LEVEL=83 +MY_PATCH_LEVEL=hwn5 -# use to send patches, always empty for released version: -# -MY_PATCH_LEVEL= +# use the above to send patches, always empty for released version: +# please don't move these comments up; the patch should fail if +# the previous version was wrong. diff --git a/flower/axis.cc b/flower/axis.cc index 92a1dea001..73b8a8ec1a 100644 --- a/flower/axis.cc +++ b/flower/axis.cc @@ -3,18 +3,16 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include - #include "axes.hh" -#include "string.hh" String axis_name_str (Axis a) { - return String (char(a + 'x')); + return to_str (char(a + 'x')); } /* diff --git a/flower/choleski.cc b/flower/choleski.cc index 5793fceae4..8fa18c67f5 100644 --- a/flower/choleski.cc +++ b/flower/choleski.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "choleski.hh" diff --git a/flower/cpu-timer.cc b/flower/cpu-timer.cc index a4d79a3776..f0b49b5c72 100644 --- a/flower/cpu-timer.cc +++ b/flower/cpu-timer.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "cpu-timer.hh" diff --git a/flower/data-file.cc b/flower/data-file.cc index 5a273c5dbb..996752cfce 100644 --- a/flower/data-file.cc +++ b/flower/data-file.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) '95, '96, '97 Han-Wen Nienhuys + (c) '95, '96, '97 Han-Wen Nienhuys */ #include @@ -18,8 +18,8 @@ Data_file::gobble_white() char c; while ((c=data_get()) == ' ' ||c == '\t') - if (eof()) - break; + if (eof_b()) + return; data_unget (c); } @@ -32,8 +32,11 @@ Data_file::get_word() while (1) { char c = data_get(); + + if (eof_b ()) + break; - if (isspace (c) || eof()) + if (isspace (c)) { data_unget (c); break; @@ -45,16 +48,16 @@ Data_file::get_word() rawmode= true; while ((c = data_get()) != '\"') - if (eof()) - error (_("EOF in a string")); + if (eof_b ()) + error (_ ("EOF in a string")); else - s += c; + s += to_str (c); rawmode= false; } else - s += c; + s += to_str (c); } return s; @@ -64,11 +67,12 @@ Data_file::get_word() Only class member who uses text_file::get */ char -Data_file::data_get() { +Data_file::data_get() +{ char c = get(); if (!rawmode && c == '#') // gobble comment { - while ((c = get()) != '\n' && !eof ()) + while (!eof_b () && (c = get()) != '\n') ; return '\n'; } @@ -77,13 +81,14 @@ Data_file::data_get() { } /// read line, gobble '\n' -String Data_file::get_line() +String +Data_file::get_line() { char c; String s; - while ((c = data_get()) != '\n' && !eof ()) - s += c; + while (!eof_b () && (c = data_get()) != '\n') + s += to_str (c); return s; } @@ -92,7 +97,7 @@ void Data_file::gobble_leading_white() { // eat blank lines. - while (!eof()) + while (!eof_b ()) { char c = data_get(); if (!isspace (c)) @@ -102,3 +107,40 @@ Data_file::gobble_leading_white() } } } + +Data_file::Data_file (String s) + : Text_stream (s) +{ + //*mlog << "(" << s << flush; + rawmode= false; +} + +void +Data_file::warning (String s) +{ + message (_ ("warning: ") + s); +} + +void +Data_file::error (String s) +{ + message (s); + exit (1); +} + +String +Data_file::gulp () +{ + String s; + + while (!eof_b ()) + { + s += to_str (data_get ()); + } + return s; +} + + +Data_file::~Data_file () +{ +} diff --git a/flower/dictionary.cc b/flower/dictionary.cc index d8e50282cb..3f46028fa8 100644 --- a/flower/dictionary.cc +++ b/flower/dictionary.cc @@ -3,7 +3,9 @@ /** - neuk. hsearch_* is te dom. + Dictionary implementation. Please fix me. + + (neuk. hsearch_* is te dom.) */ template class Dictionary diff --git a/flower/directed-graph.cc b/flower/directed-graph.cc index 5c61a41963..b3525e7156 100644 --- a/flower/directed-graph.cc +++ b/flower/directed-graph.cc @@ -3,7 +3,7 @@ source file FlowerLib - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "directed-graph.hh" @@ -38,7 +38,7 @@ void Directed_graph_node::copy_edges_out (Directed_graph_node const &s) { for (int i=0; i < s.edge_out_l_arr_.size(); i++) - add (s.edge_out_l_arr_[i]); + add_edge (s.edge_out_l_arr_[i]); } void @@ -132,12 +132,12 @@ Directed_graph_node::unlink() Directed_graph_node::~Directed_graph_node() { - assert (!linked_b()); + // assert (!linked_b()); // hampered by memfrobbing } void -Directed_graph_node::add (Directed_graph_node* dep_l) +Directed_graph_node::add_edge (Directed_graph_node* dep_l) { PARANOID_OK(); if (!dep_l) diff --git a/flower/dstream.cc b/flower/dstream.cc index 7857d33338..fc15680d92 100644 --- a/flower/dstream.cc +++ b/flower/dstream.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1996, 1997--1998 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ #include @@ -13,6 +13,7 @@ #include "text-db.hh" #include "string-convert.hh" #include "assoc-iter.hh" +#include "rational.hh" /// indent of each level const INDTAB = 2; @@ -79,23 +80,23 @@ Dstream::silent_b (String s) const } Dstream & -Dstream::operator<<(String s) +Dstream::operator<<(void const *v_l) { - output (s); + output (String_convert::pointer_str (v_l)); return *this; } Dstream & -Dstream::operator<<(void const *v_l) +Dstream::operator <<(Scalar s) { - output (String_convert::pointer_str (v_l)); + output (s); return *this; } Dstream & -Dstream::operator<<(char const *ch_l) +Dstream::operator <<(const char * s) { - output (ch_l); + output (String (s)); return *this; } @@ -124,7 +125,7 @@ Dstream::output (String s) break; case '\n': - *os_l_ << '\n' << String (' ', indent_level_i_) << flush; + *os_l_ << '\n' << to_str (' ', indent_level_i_) << flush; break; default: *os_l_ << *cp; @@ -145,17 +146,17 @@ Dstream::Dstream (ostream *r, char const * cfg_nm) char const * fn =cfg_nm ? cfg_nm : ".dstreamrc"; { - ifstream ifs (fn); // can't open + ifstream ifs (fn); // can 't open if (!ifs) return; } Text_db cfg (fn); - while (! cfg.eof()){ + while (!cfg.eof_b ()){ Text_record r (cfg++); if (r.size() != 2) { - r.message (_("not enough fields in Dstream init.")); + r.message (_ ("Not enough fields in Dstream init.")); continue; } (*silent_assoc_p_)[r[0]] = (bool)(int)(Scalar (r[1])); @@ -180,3 +181,4 @@ Dstream::clear_silence() i.val() = false; } } + diff --git a/flower/file-path.cc b/flower/file-path.cc index e6f9c4cff7..3b76d4b1dd 100644 --- a/flower/file-path.cc +++ b/flower/file-path.cc @@ -74,20 +74,23 @@ File_path::parse_path (String p) /** find a file. It will search in the current dir, in the construction-arg, and in any other added path, in this order. + + @return + The full path if found, or empty string if not found */ String File_path::find (String nm) const { - fdebug << _("looking for ") << nm << ": "; + fdebug << "looking for" << nm << ": "; if (!nm.length_i() || (nm == "-") ) return nm; for (int i=0; i < size(); i++) { String path = elem(i); - String sep (DIRSEP); + String sep = to_str (DIRSEP); String right(path.right_str (1)); if (path.length_i () && right != sep) - path += DIRSEP; + path += to_str (DIRSEP); path += nm; @@ -95,12 +98,12 @@ File_path::find (String nm) const FILE *f = fopen (path.ch_C(), "r"); // ugh! if (f) { - fdebug << _("found\n"); + fdebug << "found\n"; fclose (f); return path; } } - fdebug << "\n"; + fdebug << '\n'; return ""; } diff --git a/flower/flower-debug.cc b/flower/flower-debug.cc index f3131c8254..bb001511c2 100644 --- a/flower/flower-debug.cc +++ b/flower/flower-debug.cc @@ -14,7 +14,7 @@ void set_flower_debug (Dstream&ds, bool b) { #ifdef NPRINT if (b) - cout << _("Debug printout disabled. Compiled with NPRINT.") << endl; + cout << _ ("Debug output disabled. Compiled with NPRINT.") << endl; #endif flower_check_debug = b; diff --git a/flower/flower-version.cc b/flower/flower-version.cc deleted file mode 100644 index 746deacb93..0000000000 --- a/flower/flower-version.cc +++ /dev/null @@ -1,13 +0,0 @@ -#include - -#include "version.hh" - -static char *s = "FlowerLib " MAJOR_VERSION "." MINOR_VERSION "." PATCH_LEVEL "." MY_PATCH_LEVEL; -//static char *s = "FlowerLib " FLOWER_VERSION ; - - -char const * -flower_version_sz() -{ - return s; -} diff --git a/flower/full-storage.cc b/flower/full-storage.cc index 4fc5605cfb..987a98ec04 100644 --- a/flower/full-storage.cc +++ b/flower/full-storage.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1996, 1997--1998 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ #include "full-storage.hh" diff --git a/flower/getopt-long.cc b/flower/getopt-long.cc new file mode 100644 index 0000000000..e3a3176b27 --- /dev/null +++ b/flower/getopt-long.cc @@ -0,0 +1,260 @@ +/* + process command line, GNU style. + + this is (Copyleft) 1996, Han-Wen Nienhuys, + */ + +#include +#include +#include +#include "getopt-long.hh" +#include "international.hh" + +long +Getopt_long::argument_to_i() +{ + long l; + if (!optional_argument_ch_C_ + || sscanf (optional_argument_ch_C_, "%ld", &l) != 1) + report (E_ILLEGALARG); + + return l; +} + +const Long_option_init * +Getopt_long::parselong() +{ + char const *optnm = arg_value_ch_a_a_[array_index_i_] + 2 ; + assert (*optnm); + + char const *endopt = strchr (optnm, '='); + int searchlen = (endopt) ? endopt - optnm : strlen (optnm); + + found_option_l_=0; + for (int i=0; i< table_len_i_; i++) + { + char const *ln = option_a_[i].longname; + + if (ln && !strncmp (ln, optnm, searchlen)) + { + found_option_l_ = option_a_+i; + break; + } + } + + if (!found_option_l_) + { + report (E_UNKNOWNOPTION); + return 0; + } + array_index_i_++; + argument_index_i_ = 0; + + + if (found_option_l_->take_arg) + { + if (endopt) + optional_argument_ch_C_ = endopt +1; // a '=' + else + { + optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_]; + array_index_i_++; + } + if (!optional_argument_ch_C_) + report (E_ARGEXPECT); + + } + else + { + optional_argument_ch_C_ = 0; + if (endopt) + report (E_NOARGEXPECT); + } + + return found_option_l_; +} + +String +Long_option_init::str () const +{ + String str; + if (shortname) + str += "-" + shortname; + if (shortname && longname) + str += ", "; + if (longname) + str += String ("`--") + longname + "'"; + return str; +} + +// report an error, GNU style. +void +Getopt_long::report (Errorcod c) +{ + error_ = c; + if (!error_ostream_l_) + return; + + String str = arg_value_ch_a_a_[0]; + str += ": "; + switch (c) + { + case E_ARGEXPECT: + str += _f ("option `%s\' requires an argument", + found_option_l_->str ()); + break; + case E_NOARGEXPECT: + str += _f ("option `%s\' doesn't allow an argument", + found_option_l_->str ()); + break; + case E_UNKNOWNOPTION: + str += _f ("unrecognized option: `%s\'", + String (argument_index_i_ + ? String ("-" + _f("%c",arg_value_ch_a_a_[array_index_i_][argument_index_i_])) + : String (arg_value_ch_a_a_[array_index_i_]))); + break; + case E_ILLEGALARG: + str += _f ("invalid argument `%s\' to option `%s'", + optional_argument_ch_C_, found_option_l_->str ()); + default: + assert (false); + } + *error_ostream_l_ << str << endl; + exit (2); +} + +const Long_option_init * +Getopt_long::parseshort() +{ + char c=arg_value_ch_a_a_[array_index_i_][argument_index_i_]; + found_option_l_=0; + assert (c); + + for (int i=0; i < table_len_i_; i++) + if (option_a_[i].shortname == c) + { + found_option_l_ = option_a_+i; + break; + } + + if (!found_option_l_) + { + report (E_UNKNOWNOPTION); + return 0; + } + + argument_index_i_++; + if (!found_option_l_->take_arg) + { + optional_argument_ch_C_ = 0; + return found_option_l_; + } + optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_] + argument_index_i_; + + array_index_i_ ++; + argument_index_i_ = 0; + + if (!optional_argument_ch_C_[0]) + { + optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_]; + array_index_i_ ++; + } + if (!optional_argument_ch_C_) + { + report (E_ARGEXPECT); + } + + return found_option_l_; +} + +const Long_option_init * +Getopt_long::operator()() +{ + if (!ok()) + return 0; + + next(); + if (!ok ()) + return 0; + + if (argument_index_i_) + return parseshort(); + + const char * argument_C = arg_value_ch_a_a_[array_index_i_]; + + if (argument_C[0] != '-') + return 0; + + if (argument_C[1] == '-') {// what to do with "command -- bla" + if (argument_C[2]) + return parselong(); + else + return 0; + } + else + { + if (argument_C[ 1 ]) + { + argument_index_i_ = 1; + return parseshort(); + } + else + { + return 0; + } + } +} + +Getopt_long::Getopt_long (int c, char **v, Long_option_init *lo) +{ + option_a_ = lo; + error_ostream_l_ = &cerr; + arg_value_ch_a_a_ = v; + argument_count_i_ = c; + array_index_i_ = 1; + argument_index_i_ = 0; + + // reached end of option table? + table_len_i_ =0; + for (int i = 0; option_a_[i].longname ||option_a_[i].shortname; i++) + table_len_i_ ++; +} + +bool +Getopt_long::ok() const +{ + return array_index_i_ < argument_count_i_; +} + +void +Getopt_long::next() +{ + error_ = E_NOERROR; + while (array_index_i_ < argument_count_i_ + && !arg_value_ch_a_a_[array_index_i_][argument_index_i_]) + { + array_index_i_++; + argument_index_i_ = 0; + } +} + +char const * +Getopt_long::current_arg() +{ + if (array_index_i_ >= argument_count_i_) + return 0; + char const * a = arg_value_ch_a_a_[array_index_i_]; + return a + argument_index_i_; +} + +char const * +Getopt_long::get_next_arg() +{ + char const * a = current_arg(); + if (a) + { + array_index_i_ ++; + argument_index_i_= 0; + } + return a; +} diff --git a/flower/include/Makefile b/flower/include/Makefile index b7716f2676..283e1fadcd 100644 --- a/flower/include/Makefile +++ b/flower/include/Makefile @@ -1,19 +1,8 @@ # flower/lib/include/Makefile -# subdir level: -# depth = ../.. -# -# generic stuff/Makefile -# -include ./$(depth)/make/Include.make -include ./$(depth)/flower/VERSION +include $(depth)/make/Stepmake.make +include $(stepdir)/C++.make -# identify module: -# -MODULE_NAME = flower - - -# diff --git a/flower/include/acursor.hh b/flower/include/acursor.hh index d49dbd6b4e..5bb488d4db 100644 --- a/flower/include/acursor.hh +++ b/flower/include/acursor.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/arithmetic-operator.hh b/flower/include/arithmetic-operator.hh index 4a472819e3..17e67a47d4 100644 --- a/flower/include/arithmetic-operator.hh +++ b/flower/include/arithmetic-operator.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/array.hh b/flower/include/array.hh new file mode 100644 index 0000000000..c40e639817 --- /dev/null +++ b/flower/include/array.hh @@ -0,0 +1,235 @@ +/* + (c) Han-Wen Nienhuys 1995,96,97 + + Distributed under GNU GPL +*/ + +#ifndef ARRAY_H +#define ARRAY_H +#include + +#ifndef INLINE +#define INLINE inline +#endif + +/// copy a bare (C-)array from #src# to #dest# sized #count# +template void arrcpy (T*dest, T*src, int count); + +/** + Scaleable array/stack template, for a type T with default constructor. + + + This template implements a scaleable vector. With (or without) range + checking. The type T should have a default constructor. It is + best suited for simple types, such as int, double or String, it + provides a paranoidly safe replacement for the new T[int] construct. + + You should \bf{never} store pointers to objects in an Array (since + the array may be relocated without the pointer knowing it). + + It uses stack terminology, (push, pop, top), and can be used as a stack. + + + */ +template +class Array +{ +protected: + /// maximum length of array. + int max_; + + /// the data itself + T *array_p_; + + /// stretch or shrink array. + void remax (int newmax) + { + T* newarr = new T[newmax]; + size_ = (newmax < size_) ? newmax : size_; + arrcpy (newarr, array_p_, size_); + + delete[] array_p_; + array_p_ = newarr; + max_ = newmax; + } + int size_; + +public: + /// check invariants + void OK() const + { + assert (max_ >= size_ && size_ >=0); + if (max_) assert (array_p_); + } + /** report the size_. + @see + {setsize_} + */ + int size() const + { return size_; } + + /// POST: size() == 0 + void clear() + { size_ = 0; } + + Array() + { array_p_ = 0; max_ =0; size_ =0; } + + // ugh, get around gcc 2.8.1 ice; see bezier.cc + Array (int i) + { + max_ = size_ = i; + array_p_ = new T[i]; + } + + + /** set the size_ to #s#. + POST: size() == s. + Warning: contents are unspecified */ + void set_size (int s) + { + if (s >= max_) remax (s); + size_ = s; + } + + ~Array() + { delete[] array_p_; } + + /// return a "new"ed copy of array + T* copy_array() const + { + T* Tarray = new T[size_]; + arrcpy (Tarray, array_p_, size_); + return Tarray; + } + // depracated + operator T*() const + { + return copy_array(); + } + void operator=(Array const & src) + { + set_size (src.size_); + arrcpy (array_p_,src.array_p_, size_); + } + Array (Array const & src) + { + array_p_ = src.copy_array(); + max_ = size_ = src.size_; + } + + /// tighten array size_. + void precompute() { + remax (size_); + } + + T * remove_array_p () { + T * p = array_p_; + size_ = 0; + max_ = 0; + array_p_ =0; + return p; + } + + /// access element + T &operator[] (int i) + { + return elem (i); + } + /// access element + T const & operator[] (int i) const + { + return elem (i); + } + /// access element + T &elem (int i) const + { + assert (i >=0&&i=0&& i < size_); + arrcpy (array_p_+i, array_p_+i+1, size_-i-1); + size_--; + } + // quicksort. + void sort (int (*compare)(T const&,T const&), + int lower = -1, int upper = -1); + void concat (Array const &src) + { + int s = size_; + set_size (size_ + src.size_); + arrcpy (array_p_+s,src.array_p_, src.size_); + } + Array slice (int lower, int upper) + { + assert (lower >= 0 && lower <=upper&& upper <= size_); + Array r; + int s =upper-lower; + r.set_size (s); + arrcpy (r.array_p_, array_p_ + lower, s); + return r; + } + void reverse(); +}; + +#include "array.icc" + +#endif diff --git a/flower/include/array.icc b/flower/include/array.icc new file mode 100644 index 0000000000..0077a01d08 --- /dev/null +++ b/flower/include/array.icc @@ -0,0 +1,66 @@ +/* + (c) Han-Wen Nienhuys 1995,96,97,98 + + Distributed under GNU GPL +*/ + + +#if 0 +#include "array.hh" +#ifdef INLINE +#undef INLINE +#endif + +#define INLINE +#endif + +/* + functions with loops don't inline + */ + +template INLINE void +arrcpy (T*dest, T*src, int count) +{ + for (int i_shadows_local=0; i_shadows_local < count ; i_shadows_local++) + *dest++ = *src++; +} + +template INLINE void +Array::insert (T k, int j) +{ + assert (j >=0 && j<= size_); + set_size (size_+1); + for (int i=size_-1; i > j; i--) + array_p_[i] = array_p_[i-1]; + array_p_[j] = k; +} + +template INLINE void +Array::sort (int (*compare)(T const&,T const&), + int lower = -1, int upper = -1) +{ + if (lower < 0) + { + lower = 0 ; + upper = size () - 1; + } + if (lower >= upper) + return; + swap (lower, (lower+upper)/2); + int last = lower; + for (int i= lower +1; i <= upper; i++) + if (compare (array_p_[i], array_p_[lower]) < 0) + swap (++last,i); + swap (lower, last); + sort (compare, lower, last-1); + sort (compare, last+1, upper); +} + +template INLINE void +Array::reverse () +{ + int h = size_/2; + for (int i =0,j = size_-1; i < h; i++,j--) + swap (i,j); +} + diff --git a/flower/include/assoc.hh b/flower/include/assoc.hh index f4558545a1..3840b4bd5a 100644 --- a/flower/include/assoc.hh +++ b/flower/include/assoc.hh @@ -1,7 +1,7 @@ #ifndef ASSOC_HH #define ASSOC_HH -#include "varray.hh" +#include "array.hh" #include /** diff --git a/flower/include/axes.hh b/flower/include/axes.hh index 786e5157b7..1b54089c17 100644 --- a/flower/include/axes.hh +++ b/flower/include/axes.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/cpu-timer.hh b/flower/include/cpu-timer.hh index 65def573e5..f9d020dc46 100644 --- a/flower/include/cpu-timer.hh +++ b/flower/include/cpu-timer.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/cursor.icc b/flower/include/cursor.icc index a000736b1e..416faa52e8 100644 --- a/flower/include/cursor.icc +++ b/flower/include/cursor.icc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/data-file.hh b/flower/include/data-file.hh index f371c39092..56894ab50b 100644 --- a/flower/include/data-file.hh +++ b/flower/include/data-file.hh @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -20,7 +20,7 @@ public: bool rawmode; Text_stream::line; - Text_stream::eof; + Text_stream::eof_b; Text_stream::get_name; char data_get(); @@ -39,21 +39,15 @@ public: /// gobble empty stuff before first field. void gobble_leading_white(); - Data_file (String s) : Text_stream (s) { - //*mlog << "(" << s << flush; - rawmode= false; - } - - ~Data_file() { - // *mlog << ")"< -*/ - - -#ifndef DIAGONAL_STORAGE_HH -#define DIAGONAL_STORAGE_HH -#include "full-storage.hh" - -/** - Store a matrix with a single-band. - - @invariant - - Diagonal_storage (i,j) == band_(i, j-i + band_size_i()) - - band_.cols() == 2 * band_size_i () + 1 - - */ -class Diagonal_storage : public Matrix_storage { - Full_storage band_; - -public: - void set_band_size (int b); - int band_size_i() const; - - void assert_valid (int i, int j) const; - bool band_elt_b (int,int) const; - void resize_dim (int); - - virtual void resize_rows (int d) { resize_dim (d); } - virtual void resize_cols (int d) { resize_dim (d); } - virtual int dim() const; - - virtual int rows() const ; - virtual int cols() const ; - - - virtual void resize (int i, int j); - virtual void resize (int i); - - virtual Real& elem (int i,int j); - virtual Real elem (int i, int j) const; - Diagonal_storage (Matrix_storage* , int band_i); - Diagonal_storage(); - void OK() const; - - virtual void insert_row (int k); - virtual void delete_row (int k); - virtual void delete_column (int k); - - ~Diagonal_storage(); - virtual bool mult_ok (int i, int j) const; - virtual void mult_next (int &i, int &j) const ; - virtual bool trans_ok (int i, int j) const; - virtual void trans_next (int &i, int &j) const; - DECLARE_VIRTUAL_COPY_CONS(Diagonal_storage, Matrix_storage); - DECLARE_MY_RUNTIME_TYPEINFO; - virtual bool try_right_multiply (Matrix_storage * dest, Matrix_storage const *) const; -}; -#endif // DIAGONAL_STORAGE_HH diff --git a/flower/include/dictionary-iter.hh b/flower/include/dictionary-iter.hh index 414d62b77f..9183c5d585 100644 --- a/flower/include/dictionary-iter.hh +++ b/flower/include/dictionary-iter.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/dictionary.hh b/flower/include/dictionary.hh index 2e16bed201..b25fc84b49 100644 --- a/flower/include/dictionary.hh +++ b/flower/include/dictionary.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/directed-graph.hh b/flower/include/directed-graph.hh index 33c9e4ee23..af898a4028 100644 --- a/flower/include/directed-graph.hh +++ b/flower/include/directed-graph.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -29,7 +29,7 @@ public: bool linked_b() const; void unlink(); void junk_links(); - void add (Directed_graph_node*); + void add_edge (Directed_graph_node*); void remove_edge_in (Directed_graph_node *); void remove_edge_out (Directed_graph_node*); bool contains_b (Directed_graph_node const*) const; diff --git a/flower/include/dstream.hh b/flower/include/dstream.hh index c1c04f3921..a7379268eb 100644 --- a/flower/include/dstream.hh +++ b/flower/include/dstream.hh @@ -3,13 +3,14 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef DSTREAM_HH #define DSTREAM_HH #include "string.hh" +#include "scalar.hh" const char eol= '\n'; @@ -41,6 +42,7 @@ class Dstream String current_classname_str_; void output (String s); Assoc *silent_assoc_p_; + public: void clear_silence(); bool silent_b (String) const; @@ -52,9 +54,12 @@ public: virtual ~Dstream(); Dstream &identify_as (String s); - /** Output a string via the Dstream. This is the only output - interface. It delegates all conversion to String class. */ - Dstream &operator << (String s); + /** + Output a Scalar via the Dstream. This is the only output + interface. It explicitely delegates all implicit conversion + to Scalar class. + */ + Dstream &operator << (Scalar); /** Output memory locations. */ diff --git a/flower/include/file-path.hh b/flower/include/file-path.hh index 67d3129f10..d5fed491ff 100644 --- a/flower/include/file-path.hh +++ b/flower/include/file-path.hh @@ -3,13 +3,13 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef PATH_HH #define PATH_HH #include "string.hh" -#include "varray.hh" +#include "array.hh" /** diff --git a/flower/include/flower-debug.hh b/flower/include/flower-debug.hh index 5c8138e946..16bc73a007 100644 --- a/flower/include/flower-debug.hh +++ b/flower/include/flower-debug.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/full-storage.hh b/flower/include/full-storage.hh index 4d68e12828..f9de76979c 100644 --- a/flower/include/full-storage.hh +++ b/flower/include/full-storage.hh @@ -3,14 +3,14 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef FULL_STORAGE_HH #define FULL_STORAGE_HH -#include "varray.hh" +#include "array.hh" #include "real.hh" #ifndef INLINE diff --git a/flower/include/full-storage.icc b/flower/include/full-storage.icc index 008f4169f5..55cba88472 100644 --- a/flower/include/full-storage.icc +++ b/flower/include/full-storage.icc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/getopt-long.hh b/flower/include/getopt-long.hh new file mode 100644 index 0000000000..a069e28422 --- /dev/null +++ b/flower/include/getopt-long.hh @@ -0,0 +1,102 @@ +#ifndef GETOPT_LONG_HH +#define GETOPT_LONG_HH + +#include "string.hh" + +class ostream; + +/** + a struct this for initialising the commandline options. + */ +struct Long_option_init { + bool take_arg; + char const * longname; + char shortname; + + String str () const; +}; + + +/** C++ for version of long_getopt. For processing GNU style command + line arguments. No pointer (return values, arguments) contents are + copied. + + TODO: handle + command - , and command -- + + argument reordering + */ +class Getopt_long { + + /// the option info. + const Long_option_init *option_a_; + int table_len_i_; + + /// if doing short option, arg_value_ch_a_a_[optind][optindind] is processed next. + int argument_index_i_; + + /// the option found + const Long_option_init *found_option_l_; + + +public: + /** errorcodes: no error, argument expected, no argument expected, + unknown option, illegal argument (eg. int expected). */ + enum Errorcod { E_NOERROR = 0, E_ARGEXPECT, E_NOARGEXPECT, E_UNKNOWNOPTION, + E_ILLEGALARG } ; + + /// argument. Set to 0 if not present + char const * optional_argument_ch_C_; + + /// current error status + Errorcod error_; + + /// arg_value_ch_a_a_[array_index_i_] will be processed next. + int array_index_i_; + + /// the arguments + char **arg_value_ch_a_a_; + + /// the arg. count + int argument_count_i_; + + ostream *error_ostream_l_; + +public: + /// get ready for processing next error. + void next(); + const Long_option_init *parselong(); + const Long_option_init *parseshort(); + void OK() const; + bool ok() const; + + /// report an error and abort + void report (Errorcod c); + + + /// return an integer (with err. detect) + long argument_to_i(); + + + /** + What to do with errors. + report messages on #*os#, and abort. + if #os# is null, then do not report nor abort, just set #error# + */ + + void seterror (ostream *os); + + /// construct: pass arguments and option info. + Getopt_long (int c, char **v, Long_option_init *lo); + + /** get the next option. + @return pointer to next option found. + 0 if error occurred, or next argument is no option. + */ + const Long_option_init *operator()(); + + char const *current_arg(); + char const * get_next_arg(); +}; + +#endif // GETOPT_LONG_HH diff --git a/flower/include/international.hh b/flower/include/international.hh index 730b9924e6..3da5a26a27 100644 --- a/flower/include/international.hh +++ b/flower/include/international.hh @@ -3,14 +3,27 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Jan Nieuwenhuizen */ #ifndef INTERNATIONAL_HH #define INTERNATIONAL_HH -#define _(str) str +#include "string.hh" -#endif /* INTERNATIONAL_HH */ +// don't inline: get warnings only once +/** + Internationalisation: _ ("to be translated") gets "translated" by GNU gettext +*/ +String _ (char const *ch); + +/** + Internationalisation: _f ("Usage: %s [FILE]", "lilypond") gets "translated" by + GNU gettext +*/ +String _f (char const* format, ...); +String _f (char const* format, String s, String s2 = "", String s3 = ""); + +#endif // INTERNATIONAL_HH diff --git a/flower/include/interval.hh b/flower/include/interval.hh index f33bcb5aa0..9468fae487 100644 --- a/flower/include/interval.hh +++ b/flower/include/interval.hh @@ -30,9 +30,12 @@ struct Interval_t { // T center() { return (left + right) / T(2);} // and can't handle this either // anyone want to make a bug report? + // better make one soon, egcs in rh5.1 barfs on this! T center() { T two (2); - return (left + right) / two; +// return (left + right) / two; + T result ((left + right) / two); + return result; } void translate (T t) { left += t; @@ -75,6 +78,11 @@ struct Interval_t { left =m; right = M; } + Interval_t &operator -= (T r) { + *this += -r; + return *this; + } + Interval_t &operator += (T r) { left += r; right +=r; diff --git a/flower/include/interval.tcc b/flower/include/interval.tcc index d6c93b48f2..382ec67523 100644 --- a/flower/include/interval.tcc +++ b/flower/include/interval.tcc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1996, 1997--1998 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/iterate.hh b/flower/include/iterate.hh index d68226777f..c8b179e68c 100644 --- a/flower/include/iterate.hh +++ b/flower/include/iterate.hh @@ -3,7 +3,7 @@ source file of the flowerlib - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/lgetopt.hh b/flower/include/lgetopt.hh deleted file mode 100644 index fe779c39fc..0000000000 --- a/flower/include/lgetopt.hh +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef LGETOPT_HH -#define LGETOPT_HH - -#include - - -class ostream; - -/** - a struct this for initialising the commandline options. - */ -struct Long_option_init { - bool take_arg; - char const * longname; - char shortname; - - void printon (ostream &errorout) const ; -}; - - -/** C++ for version of long_getopt. For processing GNU style command - line arguments. No pointer (return values, arguments) contents are - copied. - - TODO: handle - command - , and command -- - - argument reordering - */ -class Getopt_long { - - /// the option info. - const Long_option_init *option_a_; - int table_len_i_; - - /// if doing short option, arg_value_ch_a_a_[optind][optindind] is processed next. - int argument_index_i_; - - /// the option found - const Long_option_init *found_option_l_; - - -public: - /** errorcodes: no error, argument expected, no argument expected, - unknown option, illegal argument (eg. int expected). */ - enum Errorcod { E_NOERROR = 0, E_ARGEXPECT, E_NOARGEXPECT, E_UNKNOWNOPTION, - E_ILLEGALARG } ; - - /// argument. Set to 0 if not present - char const * optional_argument_ch_C_; - - /// current error status - Errorcod error_; - - /// arg_value_ch_a_a_[array_index_i_] will be processed next. - int array_index_i_; - - /// the arguments - char **arg_value_ch_a_a_; - - /// the arg. count - int argument_count_i_; - - ostream *error_ostream_l_; - -public: - /// get ready for processing next error. - void next(); - const Long_option_init *parselong(); - const Long_option_init *parseshort(); - void OK() const; - bool ok() const; - - /// report an error and abort - void report (Errorcod c); - - - /// return an integer (with err. detect) - long argument_to_i(); - - - /** - What to do with errors. - report messages on #*os#, and abort. - if #os# is null, then do not report nor abort, just set #error# - */ - - void seterror (ostream *os); - - /// construct: pass arguments and option info. - Getopt_long (int c, char **v, Long_option_init *lo); - - /** get the next option. - @return pointer to next option found. - 0 if error occurred, or next argument is no option. - */ - const Long_option_init *operator()(); - - char const *current_arg(); - char const * get_next_arg(); -}; -#endif diff --git a/flower/include/libc-extension.hh b/flower/include/libc-extension.hh index 051077b6e7..a9f04e1e71 100644 --- a/flower/include/libc-extension.hh +++ b/flower/include/libc-extension.hh @@ -3,17 +3,17 @@ source file of the flowerlib - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef LIBC_EXTENSION_HH #define LIBC_EXTENSION_HH -#include "fproto.hh" +#include "fproto.hh" #include "config.hh" - #include +#include char* strnlwr (char* start_l ,int n); char* strnupr (char* start_l, int n); @@ -24,8 +24,11 @@ Byte *memmem (Byte const * haystack, int haystack_len, #endif HAVE_MEMMEM #if !HAVE_SNPRINTF // GNU extension. -int snprintf (char *str, size_t n, - char const *format, ...); +int snprintf (char *str, size_t n, char const *format, ...); +#endif + +#if !HAVE_VSNPRINTF // GNU extension. +int vsnprintf (char *str, size_t, char const *format, va_list args); #endif diff --git a/flower/include/list.icc b/flower/include/list.icc index 7192c4d9f6..eb1179a300 100644 --- a/flower/include/list.icc +++ b/flower/include/list.icc @@ -4,8 +4,8 @@ source file of the Flower Library (c) 1996, 1997--1998 - Jan Nieuwenhuizen - Han-Wen Nienhuys + Jan Nieuwenhuizen + Han-Wen Nienhuys */ diff --git a/flower/include/list.tcc b/flower/include/list.tcc index 6cba533848..90c150d2c9 100644 --- a/flower/include/list.tcc +++ b/flower/include/list.tcc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef LIST_CC #define LIST_CC diff --git a/flower/include/matrix-storage.hh b/flower/include/matrix-storage.hh index 581e6ee937..2dd51ba9bb 100644 --- a/flower/include/matrix-storage.hh +++ b/flower/include/matrix-storage.hh @@ -3,14 +3,14 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef MATRIX_STORAGE_HH #define MATRIX_STORAGE_HH -#include "varray.hh" +#include "array.hh" #include "real.hh" /** diff --git a/flower/include/matrix.hh b/flower/include/matrix.hh index 64ba718215..d94601a5ce 100644 --- a/flower/include/matrix.hh +++ b/flower/include/matrix.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1996, 1997--1998 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ @@ -137,7 +137,7 @@ public: Vector row (int) const; Vector col (int) const; - operator String() const; + String str () const; void print() const; ~Matrix (); }; diff --git a/flower/include/nscalar.hh b/flower/include/nscalar.hh index 774f2e7dc1..b2aa4d6283 100644 --- a/flower/include/nscalar.hh +++ b/flower/include/nscalar.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/out/dummy.dep b/flower/include/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/flower/include/parray.hh b/flower/include/parray.hh index c6caad2c2f..b737d7bb47 100644 --- a/flower/include/parray.hh +++ b/flower/include/parray.hh @@ -3,14 +3,14 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef PARRAY_HH #define PARRAY_HH -#include "varray.hh" +#include "array.hh" /** an array of pointers. diff --git a/flower/include/plist.tcc b/flower/include/plist.tcc index 794e0b0fc1..0c2e3888f7 100644 --- a/flower/include/plist.tcc +++ b/flower/include/plist.tcc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/pointer.hh b/flower/include/pointer.hh index 803af25ab9..48a86e118a 100644 --- a/flower/include/pointer.hh +++ b/flower/include/pointer.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/pointer.tcc b/flower/include/pointer.tcc index 4c82e7d27e..9829d5399c 100644 --- a/flower/include/pointer.tcc +++ b/flower/include/pointer.tcc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/pqueue.hh b/flower/include/pqueue.hh index 67726d47f1..ba48993ccb 100644 --- a/flower/include/pqueue.hh +++ b/flower/include/pqueue.hh @@ -3,13 +3,13 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef PQUEUE_HH #define PQUEUE_HH -#include "varray.hh" +#include "array.hh" template diff --git a/flower/include/priorities.hh b/flower/include/priorities.hh index 4b804ba275..7a8240b9fc 100644 --- a/flower/include/priorities.hh +++ b/flower/include/priorities.hh @@ -3,14 +3,14 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef PRIORITIES_HH #define PRIORITIES_HH -#include "varray.hh" +#include "array.hh" /** A sorted (uni)set. Should connect with PQueue diff --git a/flower/include/rational.hh b/flower/include/rational.hh index 3c15f76c4f..115d5f85c7 100644 --- a/flower/include/rational.hh +++ b/flower/include/rational.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -25,6 +25,7 @@ class Rational { unsigned int num_, den_; void normalise (); void copy (Rational const &); + public: void set_infinite (int sign); bool infty_b () const; @@ -36,7 +37,6 @@ public: operator bool () const; operator int () const; operator double () const; - operator String () const; Rational operator - () const; Rational (); Rational (int, int =1); diff --git a/flower/include/real.hh b/flower/include/real.hh index 05e214ac16..50459fb57f 100644 --- a/flower/include/real.hh +++ b/flower/include/real.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/scalar.hh b/flower/include/scalar.hh index e8c58e684e..a963a2fb2a 100644 --- a/flower/include/scalar.hh +++ b/flower/include/scalar.hh @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -12,15 +12,16 @@ #include "string.hh" #include "real.hh" +#include "matrix.hh" /// Perl -like scalar type. -struct Scalar : public String { - - Scalar (Real r) : String (r) {} - Scalar (int i) : String (i) {} - Scalar (char c) : String (c) {} +struct Scalar : public String +{ + Scalar (Real r) { *this = to_str (r); } + Scalar (int i) { *this = to_str (i); } + Scalar (char c) { *this = to_str (c); } Scalar (char const *c) : String (c) {} - Scalar (String s):String (s) {} + Scalar (String s) : String (s) {} Scalar (Rational); operator Rational(); Scalar() {} @@ -29,6 +30,13 @@ struct Scalar : public String { operator int(); bool to_bool () const; + /* + urg, these are bit silly; perhaps should make "Print_string" class + (derive from Scalar?) + */ + Scalar (Vector v) { *this = v.str (); } + Scalar (Matrix m) { *this = m.str (); } + /** perl -like string to bool conversion. */ operator bool() const; diff --git a/flower/include/string-convert.hh b/flower/include/string-convert.hh index 4842eac2d7..3feba87bf2 100644 --- a/flower/include/string-convert.hh +++ b/flower/include/string-convert.hh @@ -7,6 +7,7 @@ #ifndef STRING_CONVERT_HH #define STRING_CONVERT_HH +#include #include "fproto.hh" #include "string.hh" @@ -18,6 +19,7 @@ class String_convert { static int hex2nibble_i (Byte byte); static Byte nibble2hex_byte (Byte byte); public: + static String bool_str (bool b); static String bin2dec_str (String bin_str); static String bin2hex_str (String bin_str); static String dec2bin_str (String str); @@ -27,6 +29,8 @@ public: static int dec2_i (String dec_str); static double dec2_f (String dec_str); static String double_str (double f, char const* fmt=0); + static String form_str (char const* format, ...); + static String vform_str (char const* format, va_list args); static int hex2_i (String str); static unsigned hex2_u (String str); static String hex2bin_str (String str); diff --git a/flower/include/string-data.hh b/flower/include/string-data.hh index 7695bedde6..01de40cab7 100644 --- a/flower/include/string-data.hh +++ b/flower/include/string-data.hh @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/string-data.icc b/flower/include/string-data.icc index 599b9d82a6..0626601a35 100644 --- a/flower/include/string-data.icc +++ b/flower/include/string-data.icc @@ -3,7 +3,7 @@ source file of Flower lib - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef STRINGDATA_INL diff --git a/flower/include/string-handle.hh b/flower/include/string-handle.hh index 08b957c51f..3e39e6afbe 100644 --- a/flower/include/string-handle.hh +++ b/flower/include/string-handle.hh @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/string-handle.icc b/flower/include/string-handle.icc index 6f9d908f57..74b755b22c 100644 --- a/flower/include/string-handle.icc +++ b/flower/include/string-handle.icc @@ -4,7 +4,7 @@ source file of Flower lib - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef STRINGHANDLE_INL diff --git a/flower/include/string.hh b/flower/include/string.hh index 3b6f2266fa..fb8dec55e6 100644 --- a/flower/include/string.hh +++ b/flower/include/string.hh @@ -17,13 +17,6 @@ #include "fproto.hh" #include "string-handle.hh" -/* - technically incorrect, but lets keep it here: this is a - catch all place for this stuff. - */ - -#include "international.hh" - /* Libg++ also has a String class. Programming errors can lead to confusion about which String is in use. Uncomment the following if you have unexplained crashes after mucking with String @@ -81,16 +74,9 @@ public: String (char const* source); String (Byte const* byte_C, int length_i); - /// "ccccc" - String (char c, int n = 1); - - String (int i , char const *fmt=0); - String (double f , char const* fmt =0); - /// 'true' or 'false' - String (bool); - - /// return a "new"-ed copy of contents - Byte* copy_byte_p () const; // return a "new"-ed copy of contents + /// return "new"-ed copy of contents + Byte* copy_byte_p () const; + char* copy_ch_p() const; char const* ch_C () const; Byte const* byte_C () const; @@ -138,9 +124,8 @@ public: /// return the "esrever" of *this String reversed_str () const; - /// return a piece starting at index_i (first char = index_i 0), length n - String cut (int index_i, int n) const; + String cut_str (int index_i, int n) const; /// cut out a middle piece, return remainder String nomid_str (int index_i, int n) const; @@ -157,13 +142,15 @@ public: /// index of leftmost #c# int index_i (char c) const; - /// index of leftmost occurance of STRING int index_i (String) const; + + int index_any_i (String) const; void to_upper (); void to_lower (); + /// provide Stream output void print_on (ostream& os) const; @@ -177,6 +164,34 @@ public: double value_f () const; }; +/* + better to clutter global namespace, than suffer *ugh, ugh, ugh* + implicit conversions. + + it might be cool to have no type-checking at all in a language, + but once there is, having this silently circumvented is a nightmare. + + whenever implicit conversions seem necessary (e.g. operator << ()), + use Scalar as the generic type iso String. + */ + +/// for completeness (=handy) +inline String to_str (String s) { return s; } +/// "cccc" +String to_str (char c, int n = 1); +String to_str (int i, char const* format = 0); +String to_str (double f , char const* format = 0); +String to_str (bool b); +String to_str (char const* format, ... ); + +/* + technically incorrect, but lets keep it here: this is a + catch all place for this stuff. + */ + +#include "international.hh" + + #include "compare.hh" INSTANTIATE_COMPARE(String const &, String::compare_i); diff --git a/flower/include/string.icc b/flower/include/string.icc index 3bdbb0336e..7b4985b8c3 100644 --- a/flower/include/string.icc +++ b/flower/include/string.icc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/include/text-db.hh b/flower/include/text-db.hh index ab3e9c82b5..6e90e38c47 100644 --- a/flower/include/text-db.hh +++ b/flower/include/text-db.hh @@ -40,7 +40,7 @@ public: Text_db (String fn):Data_file (fn) { } Data_file::error; - bool eof(); + bool eof_b (); /// get next line. Text_record operator++(int) { @@ -48,7 +48,7 @@ public: } /// are we done yet? operator bool() { - return !eof(); + return !eof_b (); } }; diff --git a/flower/include/text-stream.hh b/flower/include/text-stream.hh index 4d369fdbbb..3bebb08505 100644 --- a/flower/include/text-stream.hh +++ b/flower/include/text-stream.hh @@ -5,7 +5,7 @@ #include #include #include "string.hh" -#include "varray.hh" +#include "array.hh" /** line counting input stream. @@ -28,10 +28,8 @@ class Text_stream public: Text_stream (String fn); String get_name() { return name; } - bool eof() { - return feof (f); - } - char get() { + bool eof_b(); + char get() { char c; if (pushback.empty()) @@ -49,6 +47,8 @@ public: pushback.push (c); } char peek() { + if (eof_b ()) + return -1; char c = get(); unget (c); return c; @@ -61,7 +61,7 @@ public: } ~Text_stream(){ - if (!eof()) + if (!eof_b()) cerr <<__FUNCTION__<< ": closing unended file"; fclose (f); diff --git a/flower/include/unionfind.hh b/flower/include/unionfind.hh index 94a3e9f667..4f98d8801d 100644 --- a/flower/include/unionfind.hh +++ b/flower/include/unionfind.hh @@ -1,6 +1,6 @@ #ifndef UNIONFIND_HH #define UNIONFIND_HH -#include "varray.hh" +#include "array.hh" /* which points of a graph are connected?. diff --git a/flower/include/varray.hh b/flower/include/varray.hh deleted file mode 100644 index ce9c2217e7..0000000000 --- a/flower/include/varray.hh +++ /dev/null @@ -1,235 +0,0 @@ -/* - (c) Han-Wen Nienhuys 1995,96,97 - - Distributed under GNU GPL -*/ - -#ifndef ARRAY_H -#define ARRAY_H -#include - -#ifndef INLINE -#define INLINE inline -#endif - -/// copy a bare (C-)array from #src# to #dest# sized #count# -template void arrcpy (T*dest, T*src, int count); - -/** - Scaleable array/stack template, for a type T with default constructor. - - - This template implements a scaleable vector. With (or without) range - checking. The type T should have a default constructor. It is - best suited for simple types, such as int, double or String, it - provides a paranoidly safe replacement for the new T[int] construct. - - You should \bf{never} store pointers to objects in an Array (since - the array may be relocated without the pointer knowing it). - - It uses stack terminology, (push, pop, top), and can be used as a stack. - - - */ -template -class Array -{ -protected: - /// maximum length of array. - int max_; - - /// the data itself - T *array_p_; - - /// stretch or shrink array. - void remax (int newmax) - { - T* newarr = new T[newmax]; - size_ = (newmax < size_) ? newmax : size_; - arrcpy (newarr, array_p_, size_); - - delete[] array_p_; - array_p_ = newarr; - max_ = newmax; - } - int size_; - -public: - /// check invariants - void OK() const - { - assert (max_ >= size_ && size_ >=0); - if (max_) assert (array_p_); - } - /** report the size_. - @see - {setsize_} - */ - int size() const - { return size_; } - - /// POST: size() == 0 - void clear() - { size_ = 0; } - - Array() - { array_p_ = 0; max_ =0; size_ =0; } - - // ugh, get around gcc 2.8.1 ice; see bezier.cc - Array (int i) - { - max_ = size_ = i; - array_p_ = new T[i]; - } - - - /** set the size_ to #s#. - POST: size() == s. - Warning: contents are unspecified */ - void set_size (int s) - { - if (s >= max_) remax (s); - size_ = s; - } - - ~Array() - { delete[] array_p_; } - - /// return a "new"ed copy of array - T* copy_array() const - { - T* Tarray = new T[size_]; - arrcpy (Tarray, array_p_, size_); - return Tarray; - } - // depracated - operator T*() const - { - return copy_array(); - } - void operator=(Array const & src) - { - set_size (src.size_); - arrcpy (array_p_,src.array_p_, size_); - } - Array (Array const & src) - { - array_p_ = src.copy_array(); - max_ = size_ = src.size_; - } - - /// tighten array size_. - void precompute() { - remax (size_); - } - - T * remove_array_p () { - T * p = array_p_; - size_ = 0; - max_ = 0; - array_p_ =0; - return p; - } - - /// access element - T &operator[] (int i) - { - return elem (i); - } - /// access element - T const & operator[] (int i) const - { - return elem (i); - } - /// access element - T &elem (int i) const - { - assert (i >=0&&i=0&& i < size_); - arrcpy (array_p_+i, array_p_+i+1, size_-i-1); - size_--; - } - // quicksort. - void sort (int (*compare)(T const&,T const&), - int lower = -1, int upper = -1); - void concat (Array const &src) - { - int s = size_; - set_size (size_ + src.size_); - arrcpy (array_p_+s,src.array_p_, src.size_); - } - Array slice (int lower, int upper) - { - assert (lower >= 0 && lower <=upper&& upper <= size_); - Array r; - int s =upper-lower; - r.set_size (s); - arrcpy (r.array_p_, array_p_ + lower, s); - return r; - } - void reverse(); -}; - -#include "varray.icc" - -#endif diff --git a/flower/include/varray.icc b/flower/include/varray.icc index 4d8ccb9387..ae6b315fc8 100644 --- a/flower/include/varray.icc +++ b/flower/include/varray.icc @@ -1,3 +1,4 @@ +#error /* (c) Han-Wen Nienhuys 1995,96,97,98 @@ -6,7 +7,7 @@ #if 0 -#include "varray.hh" +#include "array.hh" #ifdef INLINE #undef INLINE #endif diff --git a/flower/include/vector.hh b/flower/include/vector.hh index 1d986c53b7..8b4d280cf5 100644 --- a/flower/include/vector.hh +++ b/flower/include/vector.hh @@ -3,7 +3,7 @@ #include #include "real.hh" -#include "varray.hh" +#include "array.hh" class Dstream; class String; @@ -41,7 +41,8 @@ public: dat.insert (v,i); } void del (int i) { dat.del (i); } - operator String() const; + + String str () const; void operator +=(Vector v) { assert (v.dim() == dim ()); diff --git a/flower/include/virtual-methods.hh b/flower/include/virtual-methods.hh index 2ce3d40569..27557117e3 100644 --- a/flower/include/virtual-methods.hh +++ b/flower/include/virtual-methods.hh @@ -1,28 +1,32 @@ /* - virtual-methods.hh -- declare + virtual-methods.hh -- declare macros for our do-it-yourself RTTI source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef VIRTUAL_METHODS_HH #define VIRTUAL_METHODS_HH -/** a macro to declare the classes name as a static and virtual function. +#include "stdlib.h" // size_t + +/** Declare the classes name as a static and virtual function. The static_name() can *not* be inlined (this might have the effect that s->name() != S::static_name (). Overlapping strings need not be merged in C++ */ #define DECLARE_MY_RUNTIME_TYPEINFO \ -static char const *static_name();\ static bool static_is_type_b (const char*s);\ virtual bool is_type_b (const char *s) const { return static_is_type_b (s); } \ virtual char const *name() const{ return static_name (); } \ -int a_stupid_nonexistent_function_to_allow_the_semicolon_come_out() +virtual size_t class_size () const { return static_class_size (); }\ +static size_t static_class_size (); \ +static char const *static_name() #define IMPLEMENT_STATIC_NAME(c)\ - char const *c::static_name() { return #c; } + char const *c::static_name() { return #c; } \ + size_t c::static_class_size () { return sizeof (c); } diff --git a/flower/interval.cc b/flower/interval.cc index 2a71fea232..571d23f530 100644 --- a/flower/interval.cc +++ b/flower/interval.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -22,7 +22,7 @@ Interval_t::infinity () String Interval_t::T_to_str (Real r) { - return String (r); + return to_str (r); } template INTERVAL__INSTANTIATE (int); @@ -36,6 +36,6 @@ Interval_t::infinity () String Interval_t::T_to_str (int i) { - return String (i); + return to_str (i); } diff --git a/flower/lgetopt.cc b/flower/lgetopt.cc deleted file mode 100644 index 5aabe5f682..0000000000 --- a/flower/lgetopt.cc +++ /dev/null @@ -1,262 +0,0 @@ -/* - process command line, GNU style. - - this is (Copyleft) 1996, Han-Wen Nienhuys, - */ - -#include -#include -#include -#include "lgetopt.hh" -#include "international.hh" - -long -Getopt_long::argument_to_i() -{ - long l; - if (!optional_argument_ch_C_ - || sscanf (optional_argument_ch_C_, "%ld", &l) != 1) - report (E_ILLEGALARG); - - return l; -} - -const Long_option_init * -Getopt_long::parselong() -{ - char const *optnm = arg_value_ch_a_a_[array_index_i_] + 2 ; - assert (*optnm); - - char const *endopt = strchr (optnm, '='); - int searchlen = (endopt) ? endopt - optnm : strlen (optnm); - - found_option_l_=0; - for (int i=0; i< table_len_i_; i++) - { - char const *ln = option_a_[i].longname; - - if (ln && !strncmp (ln, optnm, searchlen)) - { - found_option_l_ = option_a_+i; - break; - } - } - - if (!found_option_l_) - { - report (E_UNKNOWNOPTION); - return 0; - } - array_index_i_++; - argument_index_i_ = 0; - - - if (found_option_l_->take_arg) - { - if (endopt) - optional_argument_ch_C_ = endopt +1; // a '=' - else - { - optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_]; - array_index_i_++; - } - if (!optional_argument_ch_C_) - report (E_ARGEXPECT); - - } - else - { - optional_argument_ch_C_ = 0; - if (endopt) - report (E_NOARGEXPECT); - } - - return found_option_l_; -} - - -void -Long_option_init::printon (ostream &errorout) const -{ - if (shortname) - errorout <<"-" << shortname; - if (shortname && longname) - errorout << ", "; - if (longname) - errorout << "`--" << longname << "'"; -} - -// report an error, GNU style. -void -Getopt_long::report (Errorcod c) -{ - error_ = c; - if (!error_ostream_l_) - return; - - *error_ostream_l_ << arg_value_ch_a_a_[0] << ": "; - switch (c) - { - case E_ARGEXPECT: - *error_ostream_l_<< _("option "); - found_option_l_->printon (*error_ostream_l_); - *error_ostream_l_ << _("requires an argument")<longname << _("' does not allow an argument")<printon (*error_ostream_l_); - *error_ostream_l_ << '\n'; - default: - assert (false); - } - exit (2); -} - -const Long_option_init * -Getopt_long::parseshort() -{ - char c=arg_value_ch_a_a_[array_index_i_][argument_index_i_]; - found_option_l_=0; - assert (c); - - for (int i=0; i < table_len_i_; i++) - if (option_a_[i].shortname == c) - { - found_option_l_ = option_a_+i; - break; - } - - if (!found_option_l_) - { - report (E_UNKNOWNOPTION); - return 0; - } - - argument_index_i_++; - if (!found_option_l_->take_arg) - { - optional_argument_ch_C_ = 0; - return found_option_l_; - } - optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_] + argument_index_i_; - - array_index_i_ ++; - argument_index_i_ = 0; - - if (!optional_argument_ch_C_[0]) - { - optional_argument_ch_C_ = arg_value_ch_a_a_[array_index_i_]; - array_index_i_ ++; - } - if (!optional_argument_ch_C_) - { - report (E_ARGEXPECT); - } - - return found_option_l_; -} - -const Long_option_init * -Getopt_long::operator()() -{ - if (!ok()) - return 0; - - next(); - if (!ok ()) - return 0; - - if (argument_index_i_) - return parseshort(); - - const char * argument_C = arg_value_ch_a_a_[array_index_i_]; - - if (argument_C[0] != '-') - return 0; - - if (argument_C[1] == '-') {// what to do with "command -- bla" - if (argument_C[2]) - return parselong(); - else - return 0; - } - else - { - if (argument_C[ 1 ]) - { - argument_index_i_ = 1; - return parseshort(); - } - else - { - return 0; - } - } -} - -Getopt_long::Getopt_long (int c, char **v, Long_option_init *lo) -{ - option_a_ = lo; - error_ostream_l_ = &cerr; - arg_value_ch_a_a_ = v; - argument_count_i_ = c; - array_index_i_ = 1; - argument_index_i_ = 0; - - // reached end of option table? - table_len_i_ =0; - for (int i = 0; option_a_[i].longname ||option_a_[i].shortname; i++) - table_len_i_ ++; -} - -bool -Getopt_long::ok() const -{ - return array_index_i_ < argument_count_i_; -} - -void -Getopt_long::next() -{ - error_ = E_NOERROR; - while (array_index_i_ < argument_count_i_ - && !arg_value_ch_a_a_[array_index_i_][argument_index_i_]) - { - array_index_i_++; - argument_index_i_ = 0; - } -} - -char const * -Getopt_long::current_arg() -{ - if (array_index_i_ >= argument_count_i_) - return 0; - char const * a = arg_value_ch_a_a_[array_index_i_]; - return a + argument_index_i_; -} - -char const * -Getopt_long::get_next_arg() -{ - char const * a = current_arg(); - if (a) - { - array_index_i_ ++; - argument_index_i_= 0; - } - return a; -} diff --git a/flower/libc-extension.cc b/flower/libc-extension.cc index c7f1b4bd08..9752c04694 100644 --- a/flower/libc-extension.cc +++ b/flower/libc-extension.cc @@ -4,15 +4,18 @@ source file of the flowerlib - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ -#include + #include #include #include #include "libc-extension.hh" - +/* + urg: why soo wierd? + */ char* strnlwr (char* start_l ,int n) { @@ -109,8 +112,8 @@ strrev (Byte* byte_l, int length_i) } #if ! HAVE_SNPRINTF -int snprintf (char *str, size_t, - char const *format, ...) +int +snprintf (char *str, size_t, char const *format, ...) { va_list ap; va_start (ap, format); @@ -119,3 +122,13 @@ int snprintf (char *str, size_t, return i; } #endif + +#if ! HAVE_VSNPRINTF +int +vsnprintf (char *str, size_t, char const *format, va_list args) +{ + int i = vsprintf (str, format, args); + return i; +} +#endif + diff --git a/flower/matrix-debug.cc b/flower/matrix-debug.cc index 82080f2a6d..d47d019367 100644 --- a/flower/matrix-debug.cc +++ b/flower/matrix-debug.cc @@ -3,24 +3,25 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "flower-debug.hh" #include "matrix.hh" -Matrix::operator String() const +String +Matrix::str () const { String s; #ifndef NPRINT Full_storage const * stor_c_l = dat_; - s=String ("matrix {"); + s = String ("matrix {"); for (int i=0; i< rows(); i++) { for (int j = 0; j < cols(); j++) { - s+= String (stor_c_l->elem (i,j), "%6f "); + s+= to_str (stor_c_l->elem (i,j), "%6f "); } s+="\n"; } @@ -31,23 +32,24 @@ Matrix::operator String() const void -Matrix::print() const +Matrix::print () const { #ifndef NPRINT fdebug << *this; #endif } -Vector::operator String() const +String +Vector::str () const { String s; #ifndef NPRINT - s=String ("vector (") + dim () + ") ["; + s = String ("vector (") + to_str (dim ()) + ") ["; for (int i=0; i < dim(); i++) { - s += String (dat[i], "%6f") + String (' '); + s += to_str (dat[i], "%6f") + to_str (' '); } - s+="]\n"; + s += "]\n"; #endif return s; } @@ -57,6 +59,6 @@ void Vector::print() const { #ifndef NDEBUG - fdebug << *this<<'\n'; + fdebug << *this << '\n'; #endif } diff --git a/flower/matrix.cc b/flower/matrix.cc index 314447220a..cdf3eccf77 100644 --- a/flower/matrix.cc +++ b/flower/matrix.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "matrix.hh" diff --git a/flower/nscalar.cc b/flower/nscalar.cc index 75bbe6bad4..2015e3ff23 100644 --- a/flower/nscalar.cc +++ b/flower/nscalar.cc @@ -3,6 +3,6 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/flower/offset.cc b/flower/offset.cc index d92c3af31a..7f0a6949e3 100644 --- a/flower/offset.cc +++ b/flower/offset.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include @@ -18,7 +18,8 @@ String Offset::str () const { String s; - s = String("(") + coordinate_a_[X_AXIS] + ", " + coordinate_a_[Y_AXIS] + ")"; + s = String("(") + to_str (coordinate_a_[X_AXIS]) + ", " + + to_str (coordinate_a_[Y_AXIS]) + ")"; return s; } #endif diff --git a/flower/out/dummy.dep b/flower/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/flower/rational.cc b/flower/rational.cc index a7b7d696c8..10b3bc9c2c 100644 --- a/flower/rational.cc +++ b/flower/rational.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include #include "rational.hh" @@ -33,8 +33,6 @@ operator << (ostream &o, Rational r) return o; } - - Rational Rational::truncated () const { @@ -166,38 +164,35 @@ Rational::operator += (Rational r) */ Rational::Rational(double x) { - num_ = 0; - den_ = 1; if (x != 0.0) { sign_ = ::sign (x); x *= sign_; - const long shift = 15; // a safe shift per step - const double width = 32768.0; // = 2^shift - const int maxiter = 20; // ought not be necessary, but just in case, - // max 300 bits of precision int expt; double mantissa = frexp(x, &expt); - long exponent = expt; - double intpart; - int k = 0; - while (mantissa != 0.0 && k++ < maxiter) - { - mantissa *= width; - mantissa = modf(mantissa, &intpart); - num_ <<= shift; - num_ += (long)intpart; - exponent -= shift; - } - if (exponent > 0) - num_ <<= exponent; - else if (exponent < 0) - den_ <<= -exponent; - } else { - sign_ = 0; + + const int FACT = 1 << 20; + + /* + FIXME + + SHOULD TEST THIS + + suck me gently with a vacuum cleaner. Thanks to Afie for this wierd idea. + */ + num_ = (unsigned int) (mantissa * FACT); + den_ = (unsigned int) FACT; + normalise (); + num_ <<= expt; + } + else + { + num_ = 0; + den_ = 1; + sign_ =0; + normalise (); } - normalise(); } @@ -262,11 +257,6 @@ Rational::Rational (Rational const &r) copy (r); } -Rational::operator String () const -{ - return str (); -} - String Rational::str () const { @@ -275,9 +265,9 @@ Rational::str () const String s (sign_ > 0 ? "" : "-" ); return String (s + "infinity"); } - String s (num ()); + String s = to_str (num ()); if (den () != 1 && num ()) - s += "/" + String (den ()); + s += "/" + to_str (den ()); return s; } diff --git a/flower/scalar.cc b/flower/scalar.cc index bdd2452ad7..c1f69eda60 100644 --- a/flower/scalar.cc +++ b/flower/scalar.cc @@ -3,7 +3,7 @@ source file of the Flower Library - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include diff --git a/flower/string-convert.cc b/flower/string-convert.cc index dd89038d09..bb293f062d 100644 --- a/flower/string-convert.cc +++ b/flower/string-convert.cc @@ -11,10 +11,10 @@ #include "string.hh" #include "string-convert.hh" #include "rational.hh" -#include "varray.hh" +#include "array.hh" /** - a safe length for stringconversion buffers + A safe length for stringconversion buffers. worst case would be %f printing HUGE (or 1/HUGE), which is approx 2e318, this number would have approx 318 zero's in its string. @@ -24,8 +24,16 @@ @see man 3 snprintf */ + +// hmm, this is shorter even than PATH_MAX static const int STRING_BUFFER_LEN=1024; +String +String_convert::bool_str (bool b) +{ + return String (b ? "true" : "false"); +} + String String_convert::bin2hex_str (String bin_str) { @@ -33,8 +41,8 @@ String_convert::bin2hex_str (String bin_str) Byte const* byte_C = bin_str.byte_C(); for (int i = 0; i < bin_str.length_i(); i++) { - str += (char)nibble2hex_byte (*byte_C >> 4); - str += (char)nibble2hex_byte (*byte_C++); + str += to_str ((char)nibble2hex_byte (*byte_C >> 4)); + str += to_str ((char)nibble2hex_byte (*byte_C++)); } return str; } @@ -109,7 +117,7 @@ String_convert::hex2bin_i (String hex_str, String& bin_str_r) int low_i = hex2nibble_i (*byte_C++); if (high_i < 0 || low_i < 0) return 1; // illegal char - bin_str_r += String ((char)(high_i << 4 | low_i), 1 ); + bin_str_r += to_str ((char)(high_i << 4 | low_i), 1 ); i += 2; } return 0; @@ -147,10 +155,10 @@ String_convert::i2dec_str (int i, int length_i, char ch) fill_ch = '0'; // ugh - String dec_str (i); + String dec_str = to_str (i); // ugh - return String (fill_ch, length_i - dec_str.length_i()) + dec_str; + return to_str (fill_ch, length_i - dec_str.length_i()) + dec_str; } @@ -165,16 +173,16 @@ String_convert::u2hex_str (unsigned u, int length_i, char fill_ch) #if 1 // both go... while (u) { - str = String ((char)((u % 16)["0123456789abcdef"] ) ) + str; + str = to_str ((char)((u % 16)["0123456789abcdef"] ) ) + str; u /= 16; } #else str += int_str (u, "%x"); // hmm. %lx vs. %x -> portability? #endif - str = String (fill_ch, length_i - str.length_i()) + str; + str = to_str (fill_ch, length_i - str.length_i()) + str; while ((str.length_i() > length_i) && (str[ 0 ] == 'f' ) ) - str = str.cut (2, INT_MAX); + str = str.cut_str (2, INT_MAX); return str; } @@ -208,6 +216,25 @@ String_convert::int_str (int i, char const* fmt) return String (buffer); } +String +String_convert::form_str (char const* format, ...) +{ + va_list args; + va_start (args, format); + char buffer[STRING_BUFFER_LEN]; + vsnprintf (buffer, STRING_BUFFER_LEN, format, args); + va_end (args); + return String (buffer); +} + +String +String_convert::vform_str (char const* format, va_list args) +{ + char buffer[STRING_BUFFER_LEN]; + vsnprintf (buffer, STRING_BUFFER_LEN, format, args); + return String (buffer); +} + /** Convert a double to a string. @@ -262,7 +289,7 @@ String_convert::pointer_str (void const *l) String String_convert::precision_str (double x, int n) { - String format = "%." + String (0 >? n - 1) + "e"; + String format = "%." + to_str (0 >? n - 1) + "e"; String str = double_str (abs (x), format.ch_C ()); int exp = str.right_str (3).value_i (); @@ -276,14 +303,14 @@ String_convert::precision_str (double x, int n) if (exp == 0) return (sign (x) > 0 ? str : "-" + str); - str = str.left_str (1) + str.cut (2, INT_MAX); + str = str.left_str (1) + str.cut_str (2, INT_MAX); int dot = 1 + exp; if (dot <= 0) - str = "0." + String ('0', -dot) + str; + str = "0." + to_str ('0', -dot) + str; else if (dot >= str.length_i ()) - str += String ('0', dot - str.length_i ()); + str += to_str ('0', dot - str.length_i ()); else if (( dot > 0) && (dot < str.length_i ())) - str = str.left_str (dot) + '.' + str.cut (dot, INT_MAX); + str = str.left_str (dot) + "." + str.cut_str (dot, INT_MAX); else assert (0); @@ -299,7 +326,9 @@ String_convert::split_arr (String str, char c) { String s = str.left_str (i); a.push (s); - str = str.cut (i + 1, INT_MAX); + while (str[++i] == c) + ; + str = str.cut_str (i, INT_MAX); i = str.index_i (c); } if (str.length_i ()) diff --git a/flower/string.cc b/flower/string.cc index 366abcd6bf..70278756b4 100644 --- a/flower/string.cc +++ b/flower/string.cc @@ -15,6 +15,7 @@ #include #include +#include #include "string.hh" #include "libc-extension.hh" @@ -27,21 +28,28 @@ void* mymemmove (void* dest, void const* src, size_t n); // return array, alloced with new. Byte* -String::copy_byte_p() const +String::copy_byte_p () const { - Byte const* src = strh_.byte_C(); - Byte* dest = new Byte[strh_.length_i() + 1]; - memcpy (dest, src, strh_.length_i() + 1); + Byte const* src = strh_.byte_C (); + Byte* dest = new Byte[strh_.length_i () + 1]; + memcpy (dest, src, strh_.length_i () + 1); return dest; } + +char* +String::copy_ch_p () const +{ + return (char*)copy_byte_p (); +} + void String::print_on (ostream& os) const { - if (!strh_.is_binary_bo()) - os << ch_C(); + if (!strh_.is_binary_bo ()) + os << ch_C (); else - for (int i = 0; i < length_i(); i++) - os << (Byte)(*this)[ i ]; + for (int i = 0; i < length_i (); i++) + os << (Byte) (*this)[ i ]; } /* @@ -54,48 +62,63 @@ String::operator = (String const&source) return *this; } -String::String (double f, char const* fmt) -{ - *this= String_convert::double_str (f,fmt); +String::String (char const* source) +{ + assert (source); + strh_ = source; } -String::String (char c, int n) -{ - *this = String_convert::char_str (c,n); +String::String (Byte const* byte_l, int length_i) +{ + strh_.set (byte_l, length_i); } /** @see - String_convert::int_str + String_convert:: */ -String::String (int i, char const * format) +String +to_str (char c, int n) { - *this = String_convert::int_str (i,format); + return String_convert::char_str (c, n); } -String::String (bool b) +String +to_str (double f, char const* format) { - *this = (char const*) (b ? "true" : "false"); + return String_convert::double_str (f, format); } -String::String (char const* source) -{ - assert (source); - strh_ = source; +String +to_str (int i, char const * format) +{ + return String_convert::int_str (i, format); } -String::String (Byte const* byte_l, int length_i) -{ - strh_.set (byte_l, length_i); +String +to_str (bool b) +{ + return String_convert::bool_str (b); +} + +String +to_str (char const* format, ... ) +{ + va_list args; + va_start (args, format); + String str = String_convert::vform_str (format, args); + va_end (args); + return str; } + void String::append (String s) { - strh_.append (s.byte_C(), s.length_i()); + strh_.append (s.byte_C (), s.length_i ()); } void -String::operator +=(String s) +String::operator += (String s) { append (s); } @@ -108,33 +131,33 @@ String::prepend (String s) } int -String::length_i() const +String::length_i () const { - return strh_.length_i(); + return strh_.length_i (); } Byte const* -String::byte_C() const +String::byte_C () const { - return strh_.byte_C(); + return strh_.byte_C (); } char const* -String::ch_C() const +String::ch_C () const { - return strh_.ch_C(); + return strh_.ch_C (); } Byte* -String::byte_l() +String::byte_l () { - return strh_.byte_l(); + return strh_.byte_l (); } char* -String::ch_l() +String::ch_l () { - return strh_.ch_l(); + return strh_.ch_l (); } bool @@ -148,28 +171,29 @@ String::empty_b () const int String::compare_i (String const& s1, String const& s2) { - Byte const* p1 = s1.byte_C(); - Byte const* p2 = s2.byte_C(); + Byte const* p1 = s1.byte_C (); + Byte const* p2 = s2.byte_C (); if (p1 == p2) return 0; /* don't forget the terminating '\0' */ - int f = (s1.length_i() = 0) { index_i += next_i; - next_i = right_str (length_i() - index_i - length).index_i (string ); + next_i = right_str (length_i () - index_i - length).index_i (string ); } return index_i; } @@ -199,16 +223,16 @@ String::index_last_i (char const* string) const // UGK! /** find a character. @return - the index of the leftmost character #c# (0 <= return < length_i()), + the index of the leftmost character #c# (0 <= return < length_i ()), or -1 if not found. - ? should return length_i()?, as in string.left_str (index_i (delimiter)) + ? should return length_i ()?, as in string.left_str (index_i (delimiter)) */ int String::index_i (char c) const { - char const* me = strh_.ch_C(); - char const* p = (char const *) memchr (me,c, length_i()); + char const* me = strh_.ch_C (); + char const* p = (char const *) memchr (me,c, length_i ()); if (p) return p - me; return -1; @@ -223,10 +247,10 @@ String::index_i (char c) const int String::index_i (String searchfor) const { - char const* me = strh_.ch_C(); + char const* me = strh_.ch_C (); char const* p = (char const *) - memmem (me, length_i(), searchfor.ch_C(), searchfor.length_i ()); + memmem (me, length_i (), searchfor.ch_C (), searchfor.length_i ()); if (p) return p - me; @@ -237,19 +261,23 @@ String::index_i (String searchfor) const /** find chars of a set. @return - the index of the leftmost occurance of an element of #set# - */ + + the index of the leftmost occurance of an element of #set#. -1 if + nothing is found. + + +*/ int String::index_any_i (String set) const { - int n = length_i(); + int n = length_i (); if (!n) return -1; - void const * me_l = (void const *) strh_.ch_C(); - for (int i=0; i < set.length_i(); i++) + void const * me_l = (void const *) strh_.ch_C (); + for (int i=0; i < set.length_i (); i++) { - char * found=(char*) memchr (me_l, set[i], n ); + char * found= (char*) memchr (me_l, set[i], n ); if (found) { return found - me_l; @@ -261,7 +289,7 @@ String::index_any_i (String set) const String String::left_str (int n) const { - if (n >= length_i()) + if (n >= length_i ()) return *this; String retval; @@ -276,13 +304,13 @@ String::left_str (int n) const String String::right_str (int n) const { - if (n > length_i()) + if (n > length_i ()) return *this; if (n < 1) return ""; - return String (strh_.byte_C() + length_i() - n, n); + return String (strh_.byte_C () + length_i () - n, n); } @@ -299,11 +327,11 @@ String::nomid_str (int index_i, int n) const return left_str (index_i) + - right_str (length_i() - index_i - n) ; + right_str (length_i () - index_i - n) ; } String -String::cut (int index_i, int n) const +String::cut_str (int index_i, int n) const { if (index_i <0) { @@ -311,60 +339,60 @@ String::cut (int index_i, int n) const index_i=0; } - if (!length_i() || (index_i < 0) || (index_i >= length_i () ) || (n < 1 ) ) - return String(); + if (!length_i () || (index_i < 0) || (index_i >= length_i () ) || (n < 1 ) ) + return String (); - if ((n > length_i()) || (index_i + n > length_i () ) ) - n = length_i() - index_i; + if ( (n > length_i ()) || (index_i + n > length_i () ) ) + n = length_i () - index_i; - return String (byte_C() + index_i, n); + return String (byte_C () + index_i, n); } String -String::upper_str() const +String::upper_str () const { String str = *this; - str.to_upper(); + str.to_upper (); return str; } void -String::to_upper() +String::to_upper () { - char *s = (char*)strh_.byte_l(); - strnupr (s ,length_i()); + char *s = (char*)strh_.byte_l (); + strnupr (s ,length_i ()); } void -String::to_lower() +String::to_lower () { - char* s = strh_.ch_l(); - strnlwr (s,length_i()); + char* s = strh_.ch_l (); + strnlwr (s,length_i ()); } String -String::lower_str() const +String::lower_str () const { String str = *this; - str.to_lower(); + str.to_lower (); return str; } String -String::reversed_str() const +String::reversed_str () const { String str = *this; - strrev (str.byte_l(), str.length_i ()); + strrev (str.byte_l (), str.length_i ()); return str; } int -String::value_i() const +String::value_i () const { return String_convert::dec2_i (*this); } double -String::value_f() const +String::value_f () const { return String_convert::dec2_f (*this); } diff --git a/flower/stringutil.cc b/flower/stringutil.cc index f10adcb623..f3c2906c27 100644 --- a/flower/stringutil.cc +++ b/flower/stringutil.cc @@ -6,7 +6,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys */ + (c) 1997--1998 Han-Wen Nienhuys */ #ifdef STRING_DEBUG #define memmove mymemmove diff --git a/flower/text-db.cc b/flower/text-db.cc index fef860eb31..e59748f665 100644 --- a/flower/text-db.cc +++ b/flower/text-db.cc @@ -1,9 +1,9 @@ #include "text-db.hh" bool -Text_db::eof() +Text_db::eof_b () { Data_file::gobble_leading_white(); - return Data_file::eof(); + return Data_file::eof_b(); } void @@ -11,41 +11,41 @@ Text_db::gobble_leading_white() { while (1) { - Data_file::gobble_leading_white(); - if (eof()) - return ; - char c; - if ((c = data_get()) !='\n') - { - data_unget (c); - return ; + Data_file::gobble_leading_white(); + if (eof_b ()) + return ; + char c; + if ((c = data_get()) !='\n') + { + data_unget (c); + return ; } - } + } } Text_record Text_db::get_record() { - while (1) - { - String s; - Array fields; - assert (!eof()); + while (1) + { + String s; + Array fields; + assert (!eof_b ()); - while ((s = get_word()) != "") - { - fields.push (s); - gobble_white(); - } + while ((s = get_word()) != "") + { + fields.push (s); + gobble_white(); + } - if (get_line() != "") - assert (false); + if (get_line() != "") + assert (false); - assert (fields.size()); - return Text_record (fields, get_name(), line ()); - } + assert (fields.size()); + return Text_record (fields, get_name(), line ()); + } } diff --git a/flower/text-stream.cc b/flower/text-stream.cc index 01d2e8ef5c..9c87211c25 100644 --- a/flower/text-stream.cc +++ b/flower/text-stream.cc @@ -4,28 +4,38 @@ Text_stream::Text_stream (String fn) { ios::sync_with_stdio(); if (fn == "") - { - name = _(""); - f = stdin; - } - - else - { - name = fn; - f = fopen (fn.ch_C (), "r"); - } + { + name = _ (""); + f = stdin; + } - if (!f) - { - cerr <<__FUNCTION__<< _(": can't open `") << fn << "'\n"; - exit (1); - } + else + { + name = fn; + f = fopen (fn.ch_C (), "r"); + } - line_no = 1; + if (!f) + { + cerr << __FUNCTION__ + << ": " << _f ("can't open file: `%s'", fn) << '\n'; + exit (1); } + line_no = 1; +} + void Text_stream::message (String s) { - cerr << "\n"< + (c) 1996-98 Han-Wen Nienhuys */ diff --git a/init/Makefile b/init/Makefile index 25c1bd56a9..8a72a4fd0e 100644 --- a/init/Makefile +++ b/init/Makefile @@ -2,15 +2,14 @@ depth = .. -# generic stuff/Makefile -# -include ./$(depth)/make/Include.make +include $(depth)/make/Stepmake.make +include $(make-dir)/Mutopia.make -INIFILES = $(wildcard *.ly) -DISTFILES = Makefile $(INIFILES) +INI_FILES = $(FLY_FILES) $(LY_FILES) +# DIST_FILES = Makefile $(INI_FILES) -INSTALLATION_DIR=$(datadir)/lilypond/ -INSTALLATION_FILES=$(INIFILES) +INSTALLATION_DIR=$(datadir) +INSTALLATION_FILES=$(INI_FILES) -include $(depth)/make/Installfiles.make +include $(stepdir)/Installfiles.make diff --git a/init/bar-numbering.ly b/init/bar-numbering.ly index e642545548..f7831b439c 100644 --- a/init/bar-numbering.ly +++ b/init/bar-numbering.ly @@ -1,13 +1,15 @@ % bar-numbering.ly % Staff = \translator { - \type "Engraver_group_engraver"; + \type "Line_group_engraver_group"; defaultclef = violin; + barColumnPriority = "0"; + marginBreakPriority = "-4"; \consists "Bar_engraver"; \consists "Clef_engraver"; \consists "Key_engraver"; - \consists "Meter_engraver"; + \consists "Time_signature_engraver"; \consists "Local_key_engraver"; \consists "Staff_sym_engraver"; \consists "Collision_engraver"; @@ -15,7 +17,6 @@ Staff = \translator { \consists "Bar_column_engraver"; \consists "Bar_number_engraver"; \consists "Separating_line_group_engraver"; - \consists "Line_group_engraver"; \accepts "Voice"; } diff --git a/init/book-fragment.ly b/init/book-fragment.ly index 4491fdbd1a..08a4a3c97a 100644 --- a/init/book-fragment.ly +++ b/init/book-fragment.ly @@ -1,6 +1,6 @@ % Toplevel initialisation file. -\version "0.1.15"; +\version "1.0.0"; \include "declarations.ly" diff --git a/init/book-init.ly b/init/book-init.ly new file mode 100644 index 0000000000..8ad5ef7a65 --- /dev/null +++ b/init/book-init.ly @@ -0,0 +1,14 @@ +% Toplevel initialisation file. + +\version "1.0.0"; + + +\include "declarations.ly"; +\include "paper16.ly" + +default_paper = \paper{ + \paper_sixteen +} + + +\maininput diff --git a/init/center-fragment.ly b/init/center-fragment.ly new file mode 100644 index 0000000000..1b4c419c10 --- /dev/null +++ b/init/center-fragment.ly @@ -0,0 +1,24 @@ +% Toplevel initialisation file. + +\version "1.0.0"; + + +\include "declarations.ly" + +\include "paper16.ly"; + +default_paper = \paper { + \paper_sixteen + linewidth = 7.\cm; +} + +\score { +% \melodic\relative c { + \melodic { + \maininput + } + \paper { + linewidth = -1.0\cm; + castingalgorithm = \Wordwrap; + } +} diff --git a/init/center.ly b/init/center.ly new file mode 100644 index 0000000000..89b32b236c --- /dev/null +++ b/init/center.ly @@ -0,0 +1,15 @@ +% Toplevel initialisation file. + +\version "1.0.0"; + + +\include "declarations.ly" +\include "paper16.ly" + +default_paper = \paper { + \paper_sixteen; +% linewidth = 7.\cm; + linewidth = 11.\cm; +} + +\maininput diff --git a/init/declarations.ly b/init/declarations.ly index e54f56738d..73ec21f886 100644 --- a/init/declarations.ly +++ b/init/declarations.ly @@ -32,3 +32,6 @@ break = { \penalty = 10000; } nobreak = { \penalty = -10000; } \include "property.ly" + +% music = "\melodic\relative c" + diff --git a/init/deutsch.ly b/init/deutsch.ly index 4de5bbf295..ef247f87f3 100644 --- a/init/deutsch.ly +++ b/init/deutsch.ly @@ -11,41 +11,41 @@ % have a rhythmic part too. This is the reason that we don't write 'note { .. }' % \notenames { - ceses = \musical_pitch { -1 0 -2 } - ces = \musical_pitch { -1 0 -1 } - c = \musical_pitch { -1 0 0 } - cis = \musical_pitch { -1 0 1 } - cisis = \musical_pitch { -1 0 2 } - deses = \musical_pitch { -1 1 -2 } - des = \musical_pitch { -1 1 -1 } - d = \musical_pitch { -1 1 0 } - dis = \musical_pitch { -1 1 1 } - disis = \musical_pitch { -1 1 2 } - eses = \musical_pitch { -1 2 -2 } - es = \musical_pitch { -1 2 -1 } - e = \musical_pitch { -1 2 0 } - eis = \musical_pitch { -1 2 1 } - eisis = \musical_pitch { -1 2 2 } - feses = \musical_pitch { -1 3 -2 } - fes = \musical_pitch { -1 3 -1 } - f = \musical_pitch { -1 3 0 } - fis = \musical_pitch { -1 3 1 } - fisis = \musical_pitch { -1 3 2 } - geses = \musical_pitch { -1 4 -2 } - ges = \musical_pitch { -1 4 -1 } - g = \musical_pitch { -1 4 0 } - gis = \musical_pitch { -1 4 1 } - gisis = \musical_pitch { -1 4 2 } - ases = \musical_pitch { -1 5 -2 } - as = \musical_pitch { -1 5 -1 } - a = \musical_pitch { -1 5 0 } - ais = \musical_pitch { -1 5 1 } - aisis = \musical_pitch { -1 5 2 } - heses = \musical_pitch { -1 6 -2 } - b = \musical_pitch { -1 6 -1 } - h = \musical_pitch { -1 6 0 } - his = \musical_pitch { -1 6 1 } - hisis = \musical_pitch { -1 6 2 } + ceses = \musicalpitch { -1 0 -2 } + ces = \musicalpitch { -1 0 -1 } + c = \musicalpitch { -1 0 0 } + cis = \musicalpitch { -1 0 1 } + cisis = \musicalpitch { -1 0 2 } + deses = \musicalpitch { -1 1 -2 } + des = \musicalpitch { -1 1 -1 } + d = \musicalpitch { -1 1 0 } + dis = \musicalpitch { -1 1 1 } + disis = \musicalpitch { -1 1 2 } + eses = \musicalpitch { -1 2 -2 } + es = \musicalpitch { -1 2 -1 } + e = \musicalpitch { -1 2 0 } + eis = \musicalpitch { -1 2 1 } + eisis = \musicalpitch { -1 2 2 } + feses = \musicalpitch { -1 3 -2 } + fes = \musicalpitch { -1 3 -1 } + f = \musicalpitch { -1 3 0 } + fis = \musicalpitch { -1 3 1 } + fisis = \musicalpitch { -1 3 2 } + geses = \musicalpitch { -1 4 -2 } + ges = \musicalpitch { -1 4 -1 } + g = \musicalpitch { -1 4 0 } + gis = \musicalpitch { -1 4 1 } + gisis = \musicalpitch { -1 4 2 } + ases = \musicalpitch { -1 5 -2 } + as = \musicalpitch { -1 5 -1 } + a = \musicalpitch { -1 5 0 } + ais = \musicalpitch { -1 5 1 } + aisis = \musicalpitch { -1 5 2 } + heses = \musicalpitch { -1 6 -2 } + b = \musicalpitch { -1 6 -1 } + h = \musicalpitch { -1 6 0 } + his = \musicalpitch { -1 6 1 } + hisis = \musicalpitch { -1 6 2 } % @@ -53,41 +53,41 @@ % - Ceses = \musical_pitch { -2 0 -2 } - Ces = \musical_pitch { -2 0 -1 } - C = \musical_pitch { -2 0 0 } - Cis = \musical_pitch { -2 0 1 } - Cisis = \musical_pitch { -2 0 2 } - Deses = \musical_pitch { -2 1 -2 } - Des = \musical_pitch { -2 1 -1 } - D = \musical_pitch { -2 1 0 } - Dis = \musical_pitch { -2 1 1 } - Disis = \musical_pitch { -2 1 2 } - Eses = \musical_pitch { -2 2 -2 } - Es = \musical_pitch { -2 2 -1 } - E = \musical_pitch { -2 2 0 } - Eis = \musical_pitch { -2 2 1 } - Eisis = \musical_pitch { -2 2 2 } - Feses = \musical_pitch { -2 3 -2 } - Fes = \musical_pitch { -2 3 -1 } - F = \musical_pitch { -2 3 0 } - Fis = \musical_pitch { -2 3 1 } - Fisis = \musical_pitch { -2 3 2 } - Geses = \musical_pitch { -2 4 -2 } - Ges = \musical_pitch { -2 4 -1 } - G = \musical_pitch { -2 4 0 } - Gis = \musical_pitch { -2 4 1 } - Gisis = \musical_pitch { -2 4 2 } - Ases = \musical_pitch { -2 5 -2 } - As = \musical_pitch { -2 5 -1 } - A = \musical_pitch { -2 5 0 } - Ais = \musical_pitch { -2 5 1 } - Aisis = \musical_pitch { -2 5 2 } - Heses = \musical_pitch { -2 6 -2 } - B = \musical_pitch { -2 6 -1 } - H = \musical_pitch { -2 6 0 } - His = \musical_pitch { -2 6 1 } - Hisis = \musical_pitch { -2 6 2 } + Ceses = \musicalpitch { -2 0 -2 } + Ces = \musicalpitch { -2 0 -1 } + C = \musicalpitch { -2 0 0 } + Cis = \musicalpitch { -2 0 1 } + Cisis = \musicalpitch { -2 0 2 } + Deses = \musicalpitch { -2 1 -2 } + Des = \musicalpitch { -2 1 -1 } + D = \musicalpitch { -2 1 0 } + Dis = \musicalpitch { -2 1 1 } + Disis = \musicalpitch { -2 1 2 } + Eses = \musicalpitch { -2 2 -2 } + Es = \musicalpitch { -2 2 -1 } + E = \musicalpitch { -2 2 0 } + Eis = \musicalpitch { -2 2 1 } + Eisis = \musicalpitch { -2 2 2 } + Feses = \musicalpitch { -2 3 -2 } + Fes = \musicalpitch { -2 3 -1 } + F = \musicalpitch { -2 3 0 } + Fis = \musicalpitch { -2 3 1 } + Fisis = \musicalpitch { -2 3 2 } + Geses = \musicalpitch { -2 4 -2 } + Ges = \musicalpitch { -2 4 -1 } + G = \musicalpitch { -2 4 0 } + Gis = \musicalpitch { -2 4 1 } + Gisis = \musicalpitch { -2 4 2 } + Ases = \musicalpitch { -2 5 -2 } + As = \musicalpitch { -2 5 -1 } + A = \musicalpitch { -2 5 0 } + Ais = \musicalpitch { -2 5 1 } + Aisis = \musicalpitch { -2 5 2 } + Heses = \musicalpitch { -2 6 -2 } + B = \musicalpitch { -2 6 -1 } + H = \musicalpitch { -2 6 0 } + His = \musicalpitch { -2 6 1 } + Hisis = \musicalpitch { -2 6 2 } } diff --git a/init/engraver.ly b/init/engraver.ly index 8e6c1a1a00..d2f6c24d2d 100644 --- a/init/engraver.ly +++ b/init/engraver.ly @@ -3,14 +3,22 @@ % Staff = \translator { - \type "Engraver_group_engraver"; + \type "Line_group_engraver_group"; +%{ + The Hara_kiri_line_group_engraver is a Line_group_engraver + that will not typeset an empty line of staff, i.e., a line + of staff with only rests in it. This is needed for orchestral + scores. Comment-out Line_group_engraver_group, and uncomment + Hara_kiri_line_group_engraver. +%} +% \type "Hara_kiri_line_group_engraver"; defaultclef = violin; \consists "Bar_engraver"; \consists "Clef_engraver"; \consists "Key_engraver"; - \consists "Meter_engraver"; \consists "Local_key_engraver"; + \consists "Time_signature_engraver"; \consists "Staff_sym_engraver"; \consists "Collision_engraver"; \consists "Rest_collision_engraver"; @@ -29,24 +37,39 @@ Staff = \translator { %{ \consists "Bar_column_engraver"; \consists "Bar_number_engraver"; +%} +%{ + The Staff_margin_engraver puts the name of the instrument + (\property Staff.instrument; Staff.instr for subsequent lines) + to the left of a staff. +%} +%{ + \consists "Staff_margin_engraver"; %} \consists "Separating_line_group_engraver"; - \consists "Line_group_engraver"; -% \consists "Hara_kiri_line_group_engraver"; \accepts "Voice"; } +ChoireStaff = \translator { + \type "Line_group_engraver_group"; + \consists "Vertical_align_engraver"; + \consists "Staff_group_bar_engraver"; + \accepts "Staff"; + \accepts "RhythmicStaff"; + \accepts "GrandStaff"; + \accepts "Lyrics"; +} + -Rhythmic_staff = \translator +RhythmicStaff = \translator { - \type "Engraver_group_engraver"; + \type "Line_group_engraver_group"; nolines = "1"; \consists "Pitch_squash_engraver"; \consists "Bar_engraver"; - \consists "Meter_engraver"; + \consists "Time_signature_engraver"; \consists "Staff_sym_engraver"; - \consists "Line_group_engraver"; \accepts "Voice"; } @@ -54,6 +77,7 @@ Voice = \translator { \type "Engraver_group_engraver"; \consists "Dynamic_engraver"; \consists "Rest_engraver"; + \consists "Dot_column_engraver"; \consists "Stem_engraver"; \consists "Plet_engraver"; \consists "Beam_engraver"; @@ -61,58 +85,58 @@ Voice = \translator { \consists "Multi_measure_rest_engraver"; \consists "Script_engraver"; \consists "Rhythmic_column_engraver"; + \consists "Font_size_engraver"; \consists "Slur_engraver"; - \accepts "Thread"; + \consists "Ties_engraver"; + \consists "Note_heads_engraver" ; + \consists "Skip_req_swallow_translator"; + %\accepts "Thread"; } Thread = \translator { \type "Engraver_group_engraver"; - \consists "Skip_req_swallow_translator"; - \consists "Note_head_engraver" ; - \consists "Tie_engraver"; +% \consists "Note_head_engraver" ; +% \consists "Tie_engraver"; } -Grand_staff = \translator { - \type "Engraver_group_engraver"; +GrandStaff = \translator { + \type "Line_group_engraver_group"; \consists "Span_bar_engraver"; \consists "Vertical_align_engraver"; \consists "Piano_bar_engraver"; % This should come last - \consists "Line_group_engraver"; \accepts "Staff"; } -Staff_group = \translator { - \type "Engraver_group_engraver"; +StaffGroup = \translator { + \type "Line_group_engraver_group"; +% \type "Hara_kiri_line_group_engraver"; \consists "Span_bar_engraver"; \consists "Vertical_align_engraver"; \consists "Staff_group_bar_engraver"; - \consists "Line_group_engraver"; -% \consists "Hara_kiri_line_group_engraver"; + \accepts "Staff"; - \accepts "Rhythmic_staff"; - \accepts "Grand_staff"; + \accepts "RhythmicStaff"; + \accepts "GrandStaff"; \accepts "Lyrics"; } -Lyric_voice = +LyricVoice = \translator{ - \type "Engraver_group_engraver"; + \type "Line_group_engraver_group"; \consists "Separating_line_group_engraver"; \consists "Lyric_engraver"; - \consists "Line_group_engraver"; \consists "Beam_req_swallow_translator"; \consists "Plet_swallow_engraver"; } Lyrics = \translator { - \type "Engraver_group_engraver"; + \type "Line_group_engraver_group"; \consists "Vertical_align_engraver"; - \consists "Line_group_engraver"; - \accepts "Lyric_voice"; + \accepts "LyricVoice"; } Score = \translator { @@ -124,20 +148,22 @@ Score = \translator { \consists "Bar_column_engraver"; \consists "Bar_number_engraver"; %} + \consists "Bar_column_engraver"; \consists "Span_score_bar_engraver"; \consists "Score_priority_engraver"; \consists "Priority_horizontal_align_engraver"; \consists "Vertical_align_engraver"; - \accepts "Staff_group"; + \accepts "StaffGroup"; \accepts "Staff"; - \accepts "Rhythmic_staff"; + \accepts "RhythmicStaff"; \accepts "Lyrics"; - \accepts "Grand_staff"; + \accepts "GrandStaff"; + \accepts "ChoireStaff"; } -Stupid_score = \translator { +StupidScore = \translator { \type Score_engraver; \consists "Staff_sym_engraver"; } diff --git a/init/fragment.ly b/init/fragment.ly new file mode 100644 index 0000000000..1b4c419c10 --- /dev/null +++ b/init/fragment.ly @@ -0,0 +1,24 @@ +% Toplevel initialisation file. + +\version "1.0.0"; + + +\include "declarations.ly" + +\include "paper16.ly"; + +default_paper = \paper { + \paper_sixteen + linewidth = 7.\cm; +} + +\score { +% \melodic\relative c { + \melodic { + \maininput + } + \paper { + linewidth = -1.0\cm; + castingalgorithm = \Wordwrap; + } +} diff --git a/init/init.fly b/init/init.fly new file mode 100644 index 0000000000..3d94ef25ed --- /dev/null +++ b/init/init.fly @@ -0,0 +1,14 @@ +% Toplevel initialisation file. + +\version "1.0.0"; + + +\include "declarations.ly" + +\score { + \melodic\relative c { + \maininput + } + \paper { } + \midi{ } +} diff --git a/init/init.ly b/init/init.ly new file mode 100644 index 0000000000..91fa45796d --- /dev/null +++ b/init/init.ly @@ -0,0 +1,8 @@ +% Toplevel initialisation file. + +\version "1.0.0"; + + +\include "declarations.ly"; + +\maininput diff --git a/init/italiano.ly b/init/italiano.ly index 0626937cef..dd600a4396 100644 --- a/init/italiano.ly +++ b/init/italiano.ly @@ -11,39 +11,39 @@ % contributed by Paolo Zuliani \notenames { - dobb = \musical_pitch { -1 0 -2 } - dob = \musical_pitch { -1 0 -1 } - do = \musical_pitch { -1 0 0 } - dod = \musical_pitch { -1 0 1 } - dodd = \musical_pitch { -1 0 2 } - rebb = \musical_pitch { -1 1 -2 } - reb = \musical_pitch { -1 1 -1 } - re = \musical_pitch { -1 1 0 } - red = \musical_pitch { -1 1 1 } - redd = \musical_pitch { -1 1 2 } - mibb = \musical_pitch { -1 2 -2 } - mib = \musical_pitch { -1 2 -1 } - mi = \musical_pitch { -1 2 0 } - mid = \musical_pitch { -1 2 1 } - midd = \musical_pitch { -1 2 2 } - fabb = \musical_pitch { -1 3 -2 } - fab = \musical_pitch { -1 3 -1 } - fa = \musical_pitch { -1 3 0 } - fad = \musical_pitch { -1 3 1 } - fadd = \musical_pitch { -1 3 2 } - solbb = \musical_pitch { -1 4 -2 } - solb = \musical_pitch { -1 4 -1 } - sol = \musical_pitch { -1 4 0 } - sold = \musical_pitch { -1 4 1 } - soldd = \musical_pitch { -1 4 2 } - labb = \musical_pitch { -1 5 -2 } - lab = \musical_pitch { -1 5 -1 } - la = \musical_pitch { -1 5 0 } - lad = \musical_pitch { -1 5 1 } - ladd = \musical_pitch { -1 5 2 } - sibb = \musical_pitch { -1 6 -2 } - sib = \musical_pitch { -1 6 -1 } - si = \musical_pitch { -1 6 0 } - sid = \musical_pitch { -1 6 1 } - sidd = \musical_pitch { -1 6 2 } + dobb = \musicalpitch { -1 0 -2 } + dob = \musicalpitch { -1 0 -1 } + do = \musicalpitch { -1 0 0 } + dod = \musicalpitch { -1 0 1 } + dodd = \musicalpitch { -1 0 2 } + rebb = \musicalpitch { -1 1 -2 } + reb = \musicalpitch { -1 1 -1 } + re = \musicalpitch { -1 1 0 } + red = \musicalpitch { -1 1 1 } + redd = \musicalpitch { -1 1 2 } + mibb = \musicalpitch { -1 2 -2 } + mib = \musicalpitch { -1 2 -1 } + mi = \musicalpitch { -1 2 0 } + mid = \musicalpitch { -1 2 1 } + midd = \musicalpitch { -1 2 2 } + fabb = \musicalpitch { -1 3 -2 } + fab = \musicalpitch { -1 3 -1 } + fa = \musicalpitch { -1 3 0 } + fad = \musicalpitch { -1 3 1 } + fadd = \musicalpitch { -1 3 2 } + solbb = \musicalpitch { -1 4 -2 } + solb = \musicalpitch { -1 4 -1 } + sol = \musicalpitch { -1 4 0 } + sold = \musicalpitch { -1 4 1 } + soldd = \musicalpitch { -1 4 2 } + labb = \musicalpitch { -1 5 -2 } + lab = \musicalpitch { -1 5 -1 } + la = \musicalpitch { -1 5 0 } + lad = \musicalpitch { -1 5 1 } + ladd = \musicalpitch { -1 5 2 } + sibb = \musicalpitch { -1 6 -2 } + sib = \musicalpitch { -1 6 -1 } + si = \musicalpitch { -1 6 0 } + sid = \musicalpitch { -1 6 1 } + sidd = \musicalpitch { -1 6 2 } } diff --git a/init/lily-init.ly b/init/lily-init.ly deleted file mode 100644 index 237dcbf423..0000000000 --- a/init/lily-init.ly +++ /dev/null @@ -1,8 +0,0 @@ -% Toplevel initialisation file. - -\version "0.1.15"; - - -\include "declarations.ly"; - -\maininput diff --git a/init/nederlands.ly b/init/nederlands.ly index bec7306600..35b568d30e 100644 --- a/init/nederlands.ly +++ b/init/nederlands.ly @@ -11,45 +11,45 @@ %} \notenames { - ceses = \musical_pitch { -1 0 -2 } - ces = \musical_pitch { -1 0 -1 } - c = \musical_pitch { -1 0 0 } - cis = \musical_pitch { -1 0 1 } - cisis = \musical_pitch { -1 0 2 } - deses = \musical_pitch { -1 1 -2 } - des = \musical_pitch { -1 1 -1 } - d = \musical_pitch { -1 1 0 } - dis = \musical_pitch { -1 1 1 } - disis = \musical_pitch { -1 1 2 } - eeses = \musical_pitch { -1 2 -2 } - eses = \musical_pitch { -1 2 -2 } - ees = \musical_pitch { -1 2 -1 } - es = \musical_pitch { -1 2 -1 } - e = \musical_pitch { -1 2 0 } - eis = \musical_pitch { -1 2 1 } - eisis = \musical_pitch { -1 2 2 } - feses = \musical_pitch { -1 3 -2 } - fes = \musical_pitch { -1 3 -1 } - f = \musical_pitch { -1 3 0 } - fis = \musical_pitch { -1 3 1 } - fisis = \musical_pitch { -1 3 2 } - geses = \musical_pitch { -1 4 -2 } - ges = \musical_pitch { -1 4 -1 } - g = \musical_pitch { -1 4 0 } - gis = \musical_pitch { -1 4 1 } - gisis = \musical_pitch { -1 4 2 } - aeses = \musical_pitch { -1 5 -2 } - ases = \musical_pitch { -1 5 -2 } - aes = \musical_pitch { -1 5 -1 } - as = \musical_pitch { -1 5 -1 } - a = \musical_pitch { -1 5 0 } - ais = \musical_pitch { -1 5 1 } - aisis = \musical_pitch { -1 5 2 } - beses = \musical_pitch { -1 6 -2 } - bes = \musical_pitch { -1 6 -1 } - b = \musical_pitch { -1 6 0 } - bis = \musical_pitch { -1 6 1 } - bisis = \musical_pitch { -1 6 2 } + ceses = \musicalpitch { -1 0 -2 } + ces = \musicalpitch { -1 0 -1 } + c = \musicalpitch { -1 0 0 } + cis = \musicalpitch { -1 0 1 } + cisis = \musicalpitch { -1 0 2 } + deses = \musicalpitch { -1 1 -2 } + des = \musicalpitch { -1 1 -1 } + d = \musicalpitch { -1 1 0 } + dis = \musicalpitch { -1 1 1 } + disis = \musicalpitch { -1 1 2 } + eeses = \musicalpitch { -1 2 -2 } + eses = \musicalpitch { -1 2 -2 } + ees = \musicalpitch { -1 2 -1 } + es = \musicalpitch { -1 2 -1 } + e = \musicalpitch { -1 2 0 } + eis = \musicalpitch { -1 2 1 } + eisis = \musicalpitch { -1 2 2 } + feses = \musicalpitch { -1 3 -2 } + fes = \musicalpitch { -1 3 -1 } + f = \musicalpitch { -1 3 0 } + fis = \musicalpitch { -1 3 1 } + fisis = \musicalpitch { -1 3 2 } + geses = \musicalpitch { -1 4 -2 } + ges = \musicalpitch { -1 4 -1 } + g = \musicalpitch { -1 4 0 } + gis = \musicalpitch { -1 4 1 } + gisis = \musicalpitch { -1 4 2 } + aeses = \musicalpitch { -1 5 -2 } + ases = \musicalpitch { -1 5 -2 } + aes = \musicalpitch { -1 5 -1 } + as = \musicalpitch { -1 5 -1 } + a = \musicalpitch { -1 5 0 } + ais = \musicalpitch { -1 5 1 } + aisis = \musicalpitch { -1 5 2 } + beses = \musicalpitch { -1 6 -2 } + bes = \musicalpitch { -1 6 -1 } + b = \musicalpitch { -1 6 0 } + bis = \musicalpitch { -1 6 1 } + bisis = \musicalpitch { -1 6 2 } % @@ -57,43 +57,43 @@ % - Ceses = \musical_pitch { -2 0 -2 } - Ces = \musical_pitch { -2 0 -1 } - C = \musical_pitch { -2 0 0 } - Cis = \musical_pitch { -2 0 1 } - Cisis = \musical_pitch { -2 0 2 } - Deses = \musical_pitch { -2 1 -2 } - Des = \musical_pitch { -2 1 -1 } - D = \musical_pitch { -2 1 0 } - Dis = \musical_pitch { -2 1 1 } - Disis = \musical_pitch { -2 1 2 } - Eses = \musical_pitch { -2 2 -2 } - Es = \musical_pitch { -2 2 -1 } - E = \musical_pitch { -2 2 0 } - Eis = \musical_pitch { -2 2 1 } - Eisis = \musical_pitch { -2 2 2 } - Feses = \musical_pitch { -2 3 -2 } - Fes = \musical_pitch { -2 3 -1 } - F = \musical_pitch { -2 3 0 } - Fis = \musical_pitch { -2 3 1 } - Fisis = \musical_pitch { -2 3 2 } - Geses = \musical_pitch { -2 4 -2 } - Ges = \musical_pitch { -2 4 -1 } - G = \musical_pitch { -2 4 0 } - Gis = \musical_pitch { -2 4 1 } - Gisis = \musical_pitch { -2 4 2 } - Aeses = \musical_pitch { -2 5 -2 } - Ases = \musical_pitch { -2 5 -2 } - Aes = \musical_pitch { -2 5 -1 } - As = \musical_pitch { -2 5 -1 } - A = \musical_pitch { -2 5 0 } - Ais = \musical_pitch { -2 5 1 } - Aisis = \musical_pitch { -2 5 2 } - Beses = \musical_pitch { -2 6 -2 } - Bes = \musical_pitch { -2 6 -1 } - B = \musical_pitch { -2 6 0 } - Bis = \musical_pitch { -2 6 1 } - Bisis = \musical_pitch { -2 6 2 } + Ceses = \musicalpitch { -2 0 -2 } + Ces = \musicalpitch { -2 0 -1 } + C = \musicalpitch { -2 0 0 } + Cis = \musicalpitch { -2 0 1 } + Cisis = \musicalpitch { -2 0 2 } + Deses = \musicalpitch { -2 1 -2 } + Des = \musicalpitch { -2 1 -1 } + D = \musicalpitch { -2 1 0 } + Dis = \musicalpitch { -2 1 1 } + Disis = \musicalpitch { -2 1 2 } + Eses = \musicalpitch { -2 2 -2 } + Es = \musicalpitch { -2 2 -1 } + E = \musicalpitch { -2 2 0 } + Eis = \musicalpitch { -2 2 1 } + Eisis = \musicalpitch { -2 2 2 } + Feses = \musicalpitch { -2 3 -2 } + Fes = \musicalpitch { -2 3 -1 } + F = \musicalpitch { -2 3 0 } + Fis = \musicalpitch { -2 3 1 } + Fisis = \musicalpitch { -2 3 2 } + Geses = \musicalpitch { -2 4 -2 } + Ges = \musicalpitch { -2 4 -1 } + G = \musicalpitch { -2 4 0 } + Gis = \musicalpitch { -2 4 1 } + Gisis = \musicalpitch { -2 4 2 } + Aeses = \musicalpitch { -2 5 -2 } + Ases = \musicalpitch { -2 5 -2 } + Aes = \musicalpitch { -2 5 -1 } + As = \musicalpitch { -2 5 -1 } + A = \musicalpitch { -2 5 0 } + Ais = \musicalpitch { -2 5 1 } + Aisis = \musicalpitch { -2 5 2 } + Beses = \musicalpitch { -2 6 -2 } + Bes = \musicalpitch { -2 6 -1 } + B = \musicalpitch { -2 6 0 } + Bis = \musicalpitch { -2 6 1 } + Bisis = \musicalpitch { -2 6 2 } } diff --git a/init/no-tape.ly b/init/no-tape.ly deleted file mode 100644 index a955fd9258..0000000000 --- a/init/no-tape.ly +++ /dev/null @@ -1,13 +0,0 @@ -% Toplevel initialisation file. - -\version "0.1.15"; - - -\include "declarations.ly" - -\score { - \melodic { - \maininput - } - \paper { } -} diff --git a/init/norsk.ly b/init/norsk.ly index 591f363c77..714eb10e46 100644 --- a/init/norsk.ly +++ b/init/norsk.ly @@ -28,78 +28,78 @@ %} \notenames { - ceses = \musical_pitch { -1 0 -2 } - cessess = \musical_pitch { -1 0 -2 } - ces = \musical_pitch { -1 0 -1 } - cess = \musical_pitch { -1 0 -1 } - c = \musical_pitch { -1 0 0 } - cis = \musical_pitch { -1 0 1 } - ciss = \musical_pitch { -1 0 1 } - cisis = \musical_pitch { -1 0 2 } - cississ = \musical_pitch { -1 0 2 } - deses = \musical_pitch { -1 1 -2 } - dessess = \musical_pitch { -1 1 -2 } - des = \musical_pitch { -1 1 -1 } - dess = \musical_pitch { -1 1 -1 } - d = \musical_pitch { -1 1 0 } - dis = \musical_pitch { -1 1 1 } - diss = \musical_pitch { -1 1 1 } - disis = \musical_pitch { -1 1 2 } - dississ = \musical_pitch { -1 1 2 } - eeses = \musical_pitch { -1 2 -2 } - eessess = \musical_pitch { -1 2 -2 } - eses = \musical_pitch { -1 2 -2 } - essess = \musical_pitch { -1 2 -2 } - ees = \musical_pitch { -1 2 -1 } - eess = \musical_pitch { -1 2 -1 } - es = \musical_pitch { -1 2 -1 } - ess = \musical_pitch { -1 2 -1 } - e = \musical_pitch { -1 2 0 } - eis = \musical_pitch { -1 2 1 } - eiss = \musical_pitch { -1 2 1 } - eisis = \musical_pitch { -1 2 2 } - eississ = \musical_pitch { -1 2 2 } - feses = \musical_pitch { -1 3 -2 } - fessess = \musical_pitch { -1 3 -2 } - fes = \musical_pitch { -1 3 -1 } - fess = \musical_pitch { -1 3 -1 } - f = \musical_pitch { -1 3 0 } - fis = \musical_pitch { -1 3 1 } - fiss = \musical_pitch { -1 3 1 } - fisis = \musical_pitch { -1 3 2 } - fississ = \musical_pitch { -1 3 2 } - geses = \musical_pitch { -1 4 -2 } - gessess = \musical_pitch { -1 4 -2 } - ges = \musical_pitch { -1 4 -1 } - gess = \musical_pitch { -1 4 -1 } - g = \musical_pitch { -1 4 0 } - g = \musical_pitch { -1 4 0 } - gis = \musical_pitch { -1 4 1 } - giss = \musical_pitch { -1 4 1 } - gisis = \musical_pitch { -1 4 2 } - gississ = \musical_pitch { -1 4 2 } - aeses = \musical_pitch { -1 5 -2 } - aessess = \musical_pitch { -1 5 -2 } - ases = \musical_pitch { -1 5 -2 } - assess = \musical_pitch { -1 5 -2 } - aes = \musical_pitch { -1 5 -1 } - aess = \musical_pitch { -1 5 -1 } - as = \musical_pitch { -1 5 -1 } - ass = \musical_pitch { -1 5 -1 } - a = \musical_pitch { -1 5 0 } - ais = \musical_pitch { -1 5 1 } - aiss = \musical_pitch { -1 5 1 } - aisis = \musical_pitch { -1 5 2 } - aississ = \musical_pitch { -1 5 2 } - bes = \musical_pitch { -1 6 -2 } - bess = \musical_pitch { -1 6 -2 } - b = \musical_pitch { -1 6 -1 } - b = \musical_pitch { -1 6 -1 } - h = \musical_pitch { -1 6 0 } - his = \musical_pitch { -1 6 1 } - hiss = \musical_pitch { -1 6 1 } - hisis = \musical_pitch { -1 6 2 } - hississ = \musical_pitch { -1 6 2 } + ceses = \musicalpitch { -1 0 -2 } + cessess = \musicalpitch { -1 0 -2 } + ces = \musicalpitch { -1 0 -1 } + cess = \musicalpitch { -1 0 -1 } + c = \musicalpitch { -1 0 0 } + cis = \musicalpitch { -1 0 1 } + ciss = \musicalpitch { -1 0 1 } + cisis = \musicalpitch { -1 0 2 } + cississ = \musicalpitch { -1 0 2 } + deses = \musicalpitch { -1 1 -2 } + dessess = \musicalpitch { -1 1 -2 } + des = \musicalpitch { -1 1 -1 } + dess = \musicalpitch { -1 1 -1 } + d = \musicalpitch { -1 1 0 } + dis = \musicalpitch { -1 1 1 } + diss = \musicalpitch { -1 1 1 } + disis = \musicalpitch { -1 1 2 } + dississ = \musicalpitch { -1 1 2 } + eeses = \musicalpitch { -1 2 -2 } + eessess = \musicalpitch { -1 2 -2 } + eses = \musicalpitch { -1 2 -2 } + essess = \musicalpitch { -1 2 -2 } + ees = \musicalpitch { -1 2 -1 } + eess = \musicalpitch { -1 2 -1 } + es = \musicalpitch { -1 2 -1 } + ess = \musicalpitch { -1 2 -1 } + e = \musicalpitch { -1 2 0 } + eis = \musicalpitch { -1 2 1 } + eiss = \musicalpitch { -1 2 1 } + eisis = \musicalpitch { -1 2 2 } + eississ = \musicalpitch { -1 2 2 } + feses = \musicalpitch { -1 3 -2 } + fessess = \musicalpitch { -1 3 -2 } + fes = \musicalpitch { -1 3 -1 } + fess = \musicalpitch { -1 3 -1 } + f = \musicalpitch { -1 3 0 } + fis = \musicalpitch { -1 3 1 } + fiss = \musicalpitch { -1 3 1 } + fisis = \musicalpitch { -1 3 2 } + fississ = \musicalpitch { -1 3 2 } + geses = \musicalpitch { -1 4 -2 } + gessess = \musicalpitch { -1 4 -2 } + ges = \musicalpitch { -1 4 -1 } + gess = \musicalpitch { -1 4 -1 } + g = \musicalpitch { -1 4 0 } + g = \musicalpitch { -1 4 0 } + gis = \musicalpitch { -1 4 1 } + giss = \musicalpitch { -1 4 1 } + gisis = \musicalpitch { -1 4 2 } + gississ = \musicalpitch { -1 4 2 } + aeses = \musicalpitch { -1 5 -2 } + aessess = \musicalpitch { -1 5 -2 } + ases = \musicalpitch { -1 5 -2 } + assess = \musicalpitch { -1 5 -2 } + aes = \musicalpitch { -1 5 -1 } + aess = \musicalpitch { -1 5 -1 } + as = \musicalpitch { -1 5 -1 } + ass = \musicalpitch { -1 5 -1 } + a = \musicalpitch { -1 5 0 } + ais = \musicalpitch { -1 5 1 } + aiss = \musicalpitch { -1 5 1 } + aisis = \musicalpitch { -1 5 2 } + aississ = \musicalpitch { -1 5 2 } + bes = \musicalpitch { -1 6 -2 } + bess = \musicalpitch { -1 6 -2 } + b = \musicalpitch { -1 6 -1 } + b = \musicalpitch { -1 6 -1 } + h = \musicalpitch { -1 6 0 } + his = \musicalpitch { -1 6 1 } + hiss = \musicalpitch { -1 6 1 } + hisis = \musicalpitch { -1 6 2 } + hississ = \musicalpitch { -1 6 2 } % @@ -107,75 +107,75 @@ % - Ceses = \musical_pitch { -2 0 -2 } - Cessess = \musical_pitch { -2 0 -2 } - Ces = \musical_pitch { -2 0 -1 } - Cess = \musical_pitch { -2 0 -1 } - C = \musical_pitch { -2 0 0 } - Cis = \musical_pitch { -2 0 1 } - Ciss = \musical_pitch { -2 0 1 } - Cisis = \musical_pitch { -2 0 2 } - Cississ = \musical_pitch { -2 0 2 } - Deses = \musical_pitch { -2 1 -2 } - Dessess = \musical_pitch { -2 1 -2 } - Des = \musical_pitch { -2 1 -1 } - Dess = \musical_pitch { -2 1 -1 } - D = \musical_pitch { -2 1 0 } - D = \musical_pitch { -2 1 0 } - Dis = \musical_pitch { -2 1 1 } - Diss = \musical_pitch { -2 1 1 } - Disis = \musical_pitch { -2 1 2 } - Dississ = \musical_pitch { -2 1 2 } - Eses = \musical_pitch { -2 2 -2 } - Essess = \musical_pitch { -2 2 -2 } - Es = \musical_pitch { -2 2 -1 } - Ess = \musical_pitch { -2 2 -1 } - E = \musical_pitch { -2 2 0 } - E = \musical_pitch { -2 2 0 } - Eis = \musical_pitch { -2 2 1 } - Eiss = \musical_pitch { -2 2 1 } - Eisis = \musical_pitch { -2 2 2 } - Eississ = \musical_pitch { -2 2 2 } - Feses = \musical_pitch { -2 3 -2 } - Fessess = \musical_pitch { -2 3 -2 } - Fes = \musical_pitch { -2 3 -1 } - Fess = \musical_pitch { -2 3 -1 } - F = \musical_pitch { -2 3 0 } - Fis = \musical_pitch { -2 3 1 } - Fiss = \musical_pitch { -2 3 1 } - Fisis = \musical_pitch { -2 3 2 } - Fississ = \musical_pitch { -2 3 2 } - Geses = \musical_pitch { -2 4 -2 } - Gessess = \musical_pitch { -2 4 -2 } - Ges = \musical_pitch { -2 4 -1 } - Gess = \musical_pitch { -2 4 -1 } - G = \musical_pitch { -2 4 0 } - Gis = \musical_pitch { -2 4 1 } - Giss = \musical_pitch { -2 4 1 } - Gisis = \musical_pitch { -2 4 2 } - Gississ = \musical_pitch { -2 4 2 } - Aeses = \musical_pitch { -2 5 -2 } - Aessess = \musical_pitch { -2 5 -2 } - Ases = \musical_pitch { -2 5 -2 } - Assess = \musical_pitch { -2 5 -2 } - Aes = \musical_pitch { -2 5 -1 } - Aess = \musical_pitch { -2 5 -1 } - As = \musical_pitch { -2 5 -1 } - Ass = \musical_pitch { -2 5 -1 } - A = \musical_pitch { -2 5 0 } - A = \musical_pitch { -2 5 0 } - Ais = \musical_pitch { -2 5 1 } - Aiss = \musical_pitch { -2 5 1 } - Aisis = \musical_pitch { -2 5 2 } - Aississ = \musical_pitch { -2 5 2 } - Bes = \musical_pitch { -2 6 -2 } - Bess = \musical_pitch { -2 6 -2 } - B = \musical_pitch { -2 6 -1 } - H = \musical_pitch { -2 6 0 } - His = \musical_pitch { -2 6 1 } - Hiss = \musical_pitch { -2 6 1 } - Hisis = \musical_pitch { -2 6 2 } - Hississ = \musical_pitch { -2 6 2 } + Ceses = \musicalpitch { -2 0 -2 } + Cessess = \musicalpitch { -2 0 -2 } + Ces = \musicalpitch { -2 0 -1 } + Cess = \musicalpitch { -2 0 -1 } + C = \musicalpitch { -2 0 0 } + Cis = \musicalpitch { -2 0 1 } + Ciss = \musicalpitch { -2 0 1 } + Cisis = \musicalpitch { -2 0 2 } + Cississ = \musicalpitch { -2 0 2 } + Deses = \musicalpitch { -2 1 -2 } + Dessess = \musicalpitch { -2 1 -2 } + Des = \musicalpitch { -2 1 -1 } + Dess = \musicalpitch { -2 1 -1 } + D = \musicalpitch { -2 1 0 } + D = \musicalpitch { -2 1 0 } + Dis = \musicalpitch { -2 1 1 } + Diss = \musicalpitch { -2 1 1 } + Disis = \musicalpitch { -2 1 2 } + Dississ = \musicalpitch { -2 1 2 } + Eses = \musicalpitch { -2 2 -2 } + Essess = \musicalpitch { -2 2 -2 } + Es = \musicalpitch { -2 2 -1 } + Ess = \musicalpitch { -2 2 -1 } + E = \musicalpitch { -2 2 0 } + E = \musicalpitch { -2 2 0 } + Eis = \musicalpitch { -2 2 1 } + Eiss = \musicalpitch { -2 2 1 } + Eisis = \musicalpitch { -2 2 2 } + Eississ = \musicalpitch { -2 2 2 } + Feses = \musicalpitch { -2 3 -2 } + Fessess = \musicalpitch { -2 3 -2 } + Fes = \musicalpitch { -2 3 -1 } + Fess = \musicalpitch { -2 3 -1 } + F = \musicalpitch { -2 3 0 } + Fis = \musicalpitch { -2 3 1 } + Fiss = \musicalpitch { -2 3 1 } + Fisis = \musicalpitch { -2 3 2 } + Fississ = \musicalpitch { -2 3 2 } + Geses = \musicalpitch { -2 4 -2 } + Gessess = \musicalpitch { -2 4 -2 } + Ges = \musicalpitch { -2 4 -1 } + Gess = \musicalpitch { -2 4 -1 } + G = \musicalpitch { -2 4 0 } + Gis = \musicalpitch { -2 4 1 } + Giss = \musicalpitch { -2 4 1 } + Gisis = \musicalpitch { -2 4 2 } + Gississ = \musicalpitch { -2 4 2 } + Aeses = \musicalpitch { -2 5 -2 } + Aessess = \musicalpitch { -2 5 -2 } + Ases = \musicalpitch { -2 5 -2 } + Assess = \musicalpitch { -2 5 -2 } + Aes = \musicalpitch { -2 5 -1 } + Aess = \musicalpitch { -2 5 -1 } + As = \musicalpitch { -2 5 -1 } + Ass = \musicalpitch { -2 5 -1 } + A = \musicalpitch { -2 5 0 } + A = \musicalpitch { -2 5 0 } + Ais = \musicalpitch { -2 5 1 } + Aiss = \musicalpitch { -2 5 1 } + Aisis = \musicalpitch { -2 5 2 } + Aississ = \musicalpitch { -2 5 2 } + Bes = \musicalpitch { -2 6 -2 } + Bess = \musicalpitch { -2 6 -2 } + B = \musicalpitch { -2 6 -1 } + H = \musicalpitch { -2 6 0 } + His = \musicalpitch { -2 6 1 } + Hiss = \musicalpitch { -2 6 1 } + Hisis = \musicalpitch { -2 6 2 } + Hississ = \musicalpitch { -2 6 2 } } diff --git a/init/out/dummy.dep b/init/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/init/paper-params16.ly b/init/paper-params16.ly deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/init/paper-params20.ly b/init/paper-params20.ly deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/init/paper11.ly b/init/paper11.ly index 2f2d86a5d4..e5f5a613be 100644 --- a/init/paper11.ly +++ b/init/paper11.ly @@ -16,7 +16,7 @@ paper_eleven = \paper { arithmetic_basicspace = 2.; arithmetic_multiplier = 4.8\pt; - \symboltables { \table_eleven } + 0=\symboltables { \table_eleven } \include "params.ly"; } diff --git a/init/paper13.ly b/init/paper13.ly index 9c1a5d1e64..104b3829fa 100644 --- a/init/paper13.ly +++ b/init/paper13.ly @@ -16,7 +16,7 @@ paper_thirteen = \paper { arithmetic_basicspace = 2.; arithmetic_multiplier = 4.8\pt; - \symboltables { \table_thirteen } + 0=\symboltables { \table_thirteen } \include "params.ly"; \include "a4.ly"; } diff --git a/init/paper16.ly b/init/paper16.ly index b9b777403d..336a7fe737 100644 --- a/init/paper16.ly +++ b/init/paper16.ly @@ -1,15 +1,12 @@ % paper16.ly +\include "table13.ly"; +\include "table11.ly"; \include "table16.ly"; -%{ -TODO make this somehow parametric. for example the linewidth was -chosen to look good on A4 paper. This probably looks less good on US -paper sizes. - -%} +\version "1.0.0"; paper_sixteen = \paper { staffheight = 16.0\pt; @@ -22,7 +19,11 @@ paper_sixteen = \paper { basicspace = 4.\pt; arithmetic_basicspace = 2.; arithmetic_multiplier = 4.8\pt; + texsetting = "\\input lilyponddefs \\musixsixteendefs "; - \symboltables { \table_sixteen } + 0 = \symboltables { \table_sixteen } + -1 = \symboltables { \table_thirteen } + -2 = \symboltables { \table_eleven } + \include "params.ly"; } diff --git a/init/paper20.ly b/init/paper20.ly index 38247adf4a..1977147a96 100644 --- a/init/paper20.ly +++ b/init/paper20.ly @@ -2,6 +2,11 @@ \include "table20.ly"; + \include "table13.ly"; + \include "table16.ly"; + +\version "1.0.0"; + paper_twenty = \paper { staffheight = 20.0\pt; % where to get papersize (e.g. a5, letter) @@ -14,8 +19,13 @@ paper_twenty = \paper { basicspace = 8.\pt; arithmetic_basicspace = 2.; arithmetic_multiplier = 6.\pt; + texsetting = "\\input lilyponddefs \\musixtwentydefs "; + + + -2 = \symboltables { \table_thirteen } + -1 = \symboltables { \table_sixteen } + 0 = \symboltables { \table_twenty } - \symboltables { \table_twenty } \include "params.ly"; } diff --git a/init/paper26.ly b/init/paper26.ly index 357e9c2b34..445506e575 100644 --- a/init/paper26.ly +++ b/init/paper26.ly @@ -3,7 +3,7 @@ \include "table26.ly"; paper_twentysix = \paper { - staffheight = 20.0\pt; + staffheight = 26.0\pt; papersize = "a4"; % ugh see table26 for sizes @@ -14,7 +14,7 @@ paper_twentysix = \paper { arithmetic_basicspace = 2.; arithmetic_multiplier = 6.\pt; - \symboltables { \table_twenty } + 0=\symboltables { \table_twentysix } \include "params.ly"; linewidth = linewidth20; textheight = textheight20; diff --git a/init/params.ly b/init/params.ly index 0dfb82e371..888ccbf9b8 100644 --- a/init/params.ly +++ b/init/params.ly @@ -2,6 +2,7 @@ % generic paper parameters paperfile = \papersize + ".ly"; +% paperfile = "a4.ly"; \include \paperfile; \include "paper.ly"; @@ -9,10 +10,33 @@ interline = \staffheight / 4.0; internote = \interline / 2.0; staffline = \interline / 10.0; -beam_thickness = 0.48 * (\interline - \staffline); +beam_thickness = 0.52 * (\interline - \staffline); interbeam = (2.0 * \interline - \beam_thickness) / 2.0; interbeam4 = (3.0 * \interline - \beam_thickness) / 3.0; +% +% stems and beams +% +% not used for beams +stem_length = 7.0*\internote; +% +% stems in unnatural (forced) direction should be shortened, +% according to [Roush & Gourlay]. Their suggestion to knock off +% a whole staffspace seems a bit drastical though? +% +forced_stem_shorten = 1.0 * \interline; +% +% there are several ways to calculate the direction of a beam +% +% * MAJORITY : number count of up or down notes +% * MEAN : mean centre distance of all notes +% * MEDIAN : mean centre distance weighted per note +% +% enum Dir_algorithm { DOWN=-1, UP=1, MAJORITY=2, MEAN, MEDIAN }; +% +beam_dir_algorithm = 2.0; +% +% % some beam-stemlength settings... % % beam_*1 : multiplicity < beam_multiple_break @@ -29,7 +53,7 @@ beam_slope_damp_correct_factor = 0.0; % OSU: suggested gap = ss / 5; slur_x_gap = \interline / 5.0; slur_x_minimum = 2.0 * \interline; -slur_slope_damping = 0.3; +slur_slope_damping = 0.5; tie_x_minimum = \slur_x_minimum; tie_x_gap = \slur_x_gap; tie_slope_damping = 0.3; diff --git a/init/part-paper.ly b/init/part-paper.ly new file mode 100644 index 0000000000..94e0351107 --- /dev/null +++ b/init/part-paper.ly @@ -0,0 +1,27 @@ +%part-paper.ly + +\paper { + % for simple testing only! +% castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn +Score = \translator { + \type Score_engraver; + + \consists "Timing_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + \consists "Mark_engraver"; + \consists "Span_score_bar_engraver"; + \consists "Score_priority_engraver"; + \consists "Priority_horizontal_align_engraver"; + \consists "Vertical_align_engraver"; + + \accepts "StaffGroup"; + \accepts "Staff"; + \accepts "RhythmicStaff"; + \accepts "Lyrics"; + \accepts "GrandStaff"; + SkipBars = "1"; +} + \include "bar-numbering.ly"; +} + diff --git a/init/performer.ly b/init/performer.ly index 7d7cd9f113..a4cee69b75 100644 --- a/init/performer.ly +++ b/init/performer.ly @@ -6,7 +6,7 @@ Staff = \translator { \type "Staff_performer"; \accepts Voice; \consists "Key_performer"; - \consists "Meter_performer"; + \consists "Time_signature_performer"; } Thread =\translator @@ -21,13 +21,13 @@ Voice = \translator \accepts Thread; } -Grand_staff = \translator +GrandStaff = \translator { \type "Performer_group_performer"; \accepts Staff; } -Lyric_voice = \translator { +LyricVoice = \translator { \type "Performer_group_performer"; \consists "Lyric_performer"; } @@ -35,11 +35,11 @@ Lyric_voice = \translator { Lyrics = \translator { \type "Staff_performer"; - \accepts Lyric_voice; - \consists "Meter_performer"; + \accepts LyricVoice; + \consists "Time_signature_performer"; } -Staff_group = \translator +StaffGroup = \translator { \type Performer_group_performer; \accepts Staff; @@ -49,9 +49,9 @@ Score = \translator { \type "Score_performer"; instrument = piano; \accepts Staff; - \accepts Grand_staff; + \accepts GrandStaff; \accepts Lyrics; - \accepts Staff_group; + \accepts StaffGroup; \consists "Swallow_performer"; } diff --git a/init/property.ly b/init/property.ly index 9520dbb86f..75d8f10669 100644 --- a/init/property.ly +++ b/init/property.ly @@ -21,6 +21,14 @@ slurdash 0 normal slurs slurdash 1 dotted slurs slurdash >1 dashed slurs +slurydirection -1 force stem down \slurdown +slurydirection 0 stem direction free \slurboth +slurydirection 1 force stem up \slurup + +slurydirection -1 force stem down \slurdown +slurydirection 0 stem direction free \slurboth +slurydirection 1 force stem up \slurup + [Score?] beamslopedamping 0 no damping \beamslopeproportional beamslopedamping 1 damping1) \beamslopedamped @@ -31,6 +39,10 @@ beamquantisation 0 no quantisations \beamposfree beamquantisation 1 quantise pos and slope \beamposnormal beamquantisation 2 quantise avoide wedge2) \beampostraditional +[Staff] +specialaccidentals 0 Accidental for all octaves \normalkey +specialaccidentals 1 Accidental only for specified octave \specialkey + [Staff?] instrument ascii midi instrument table lookup @@ -66,36 +78,83 @@ stemdown = { \skip 1*0; \property Voice.ydirection = \down } +slurup = { + \skip 1*0; + \property Voice.slurydirection = \up + } +slurboth= { + \skip 1*0; + \property Voice.slurydirection = \center +} +slurdown = { + \skip 1*0; + \property Voice.slurydirection = \down +} + +shifton = \property Voice.hshift = 1 +shiftoff = \property Voice.hshift = 0 onevoice = { - \property Voice.ydirection = \center - \property Voice.hshift = 0 + \stemboth \shiftoff } voiceone = { \type Voice = one \skip 1*0; - \property Voice.ydirection = \up + \stemup } voicetwo = { \type Voice = two \skip 1*0; - \property Voice.ydirection = \down + \stemdown } voicethree = { \type Voice = three \skip 1*0; - \property Voice.ydirection = \up - \property Voice.hshift = 1 + \stemup + } voicefour = { \type Voice = four \skip 1*0; - \property Voice.ydirection = \down - \property Voice.hshift = 1 + \stemdown + \shifton +} + +onestaff = { + \translator Staff=one + \skip 1*0; +} + +staffone = { + \translator Staff=one + \skip 1*0; + \property Staff.ydirection = \center + \property Staff.hshift = 0 +} + +stafftwo = { + \translator Staff=two + \skip 1*0; + \property Staff.ydirection = \center + \property Staff.hshift = 0 +} + +staffthree = { + \translator Staff=three + \skip 1*0; + \property Staff.ydirection = \center + \property Staff.hshift = 0 +} + +stafffour = { + \translator Staff=four + \skip 1*0; + \property Staff.ydirection = \center + \property Staff.hshift = 0 } % ugh, cluttering global namespace... @@ -139,3 +198,63 @@ slurdotted = { \property Voice.slurdash = 1 } +%{ + for grace note hack, see input/test/grace.ly +%} +pletoff = { + \property Voice.pletvisibility = 0 +} +pleton = { + \property Voice.pletvisibility = 2 +} +tiny = { + \property Voice.fontsize= "-2" + \pletoff %urg +} + +small = { + \property Voice.fontsize= "-1" +} + +normalsize = { + \property Voice.fontsize= "0" + \pleton %urg +} + +%{ + [urg: try at] temporary grace note hack + the total visible duration of the grace notes must be half + the duration of the 'at' note: e.g.: + + \grace b8 \graceat c4 \ecarg + \grace c16 b16 \graceat c4 \ecarg + +grace = { + \tiny +% it would be so cool not to have to specify these factors each time... +% :-( + \property Voice.pletvisibility = 0 + \[1/16 +} + +graceat = \melodic { + \normalsize + \property Voice.pletvisibility = 0 + \] \[31/32 +} + +ecarg = \melodic { + \property Voice.pletvisibility = 0 + \] + \property Voice.pletvisibility = 2 +} +%} + +normalkey = { + \property Staff.specialaccidentals = 0 +} + +specialkey = { + \property Staff.specialaccidentals = 1 +} + diff --git a/init/score-bar-numbering.ly b/init/score-bar-numbering.ly index 3e47d6ec89..a3da56b279 100644 --- a/init/score-bar-numbering.ly +++ b/init/score-bar-numbering.ly @@ -1,19 +1,26 @@ +% score-bar-numbering.ly + Score = \translator { \type Score_engraver; + barScriptPadding = "2.0"; % dimension \pt + markScriptPadding = "4.0"; + barColumnPriority = "-4"; + markBreakPriority = "-4"; \consists "Timing_engraver"; \consists "Bar_column_engraver"; \consists "Bar_number_engraver"; + \consists "Mark_engraver"; \consists "Span_score_bar_engraver"; \consists "Score_priority_engraver"; \consists "Priority_horizontal_align_engraver"; \consists "Vertical_align_engraver"; - - \accepts "Staff_group"; + \accepts "ChoireStaff"; + \accepts "StaffGroup"; \accepts "Staff"; - \accepts "Rhythmic_staff"; + \accepts "RhythmicStaff"; \accepts "Lyrics"; - \accepts "Grand_staff"; + \accepts "GrandStaff"; } diff --git a/init/score-paper.ly b/init/score-paper.ly new file mode 100644 index 0000000000..f0e4783822 --- /dev/null +++ b/init/score-paper.ly @@ -0,0 +1,29 @@ +%score-paper.ly + +\paper { + % for simple testing only! + castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn +Staff = \translator { + \type "Hara_kiri_line_group_engraver"; + + defaultclef = violin; + barColumnPriority = "0"; + marginBreakPriority = "-4"; + + \consists "Bar_engraver"; + \consists "Clef_engraver"; + \consists "Key_engraver"; + \consists "Time_signature_engraver"; + \consists "Local_key_engraver"; + \consists "Staff_sym_engraver"; + \consists "Collision_engraver"; + \consists "Rest_collision_engraver"; + \consists "Staff_margin_engraver"; + \consists "Separating_line_group_engraver"; + + \accepts "Voice"; +} + +\include "score-bar-numbering.ly"; + +} diff --git a/init/script.ly b/init/script.ly index d032f44a8b..2a7cd50bcc 100644 --- a/init/script.ly +++ b/init/script.ly @@ -10,7 +10,7 @@ portato= \script { "portato" 0 -1 0 1 0 } fermata = \script { "fermata" 0 1 0 1 0 } stopped = \script { "stopped" 0 0 1 0 0 } staccato = \script { "staccato" 1 -1 0 0 0 } -tenuto = \script {"tenuto" 0 -1 0 0 0 } +tenuto = \script {"tenuto" 1 -1 0 0 0 } upbow = \script { "upbow" 0 0 1 0 0 } downbow = \script { "downbow" 0 0 1 0 0 } lheel = \script { "upedalheel" 0 0 -1 0 0 } diff --git a/init/simple-init.ly b/init/simple-init.ly deleted file mode 100644 index 3b39cc6c1a..0000000000 --- a/init/simple-init.ly +++ /dev/null @@ -1,12 +0,0 @@ -% Toplevel initialisation file. -Gourlay = 1.0 -\include "nederlands.ly" - -\include "paper20.ly" - -default_paper = \paper{ - \paper_twenty -} - -\maininput - diff --git a/init/svenska.ly b/init/svenska.ly index 6b288cf3c3..6b8977fdcb 100644 --- a/init/svenska.ly +++ b/init/svenska.ly @@ -10,41 +10,41 @@ % have a rhythmic part too. This is the reason that we don't write 'note { .. }' % \notenames { - cessess = \musical_pitch { -1 0 -2 } - cess = \musical_pitch { -1 0 -1 } - c = \musical_pitch { -1 0 0 } - ciss = \musical_pitch { -1 0 1 } - cississ = \musical_pitch { -1 0 2 } - dessess = \musical_pitch { -1 1 -2 } - dess = \musical_pitch { -1 1 -1 } - d = \musical_pitch { -1 1 0 } - diss = \musical_pitch { -1 1 1 } - dississ = \musical_pitch { -1 1 2 } - essess = \musical_pitch { -1 2 -2 } - ess = \musical_pitch { -1 2 -1 } - e = \musical_pitch { -1 2 0 } - eiss = \musical_pitch { -1 2 1 } - eississ = \musical_pitch { -1 2 2 } - fessess = \musical_pitch { -1 3 -2 } - fess = \musical_pitch { -1 3 -1 } - f = \musical_pitch { -1 3 0 } - fiss = \musical_pitch { -1 3 1 } - fississ = \musical_pitch { -1 3 2 } - gessess = \musical_pitch { -1 4 -2 } - gess = \musical_pitch { -1 4 -1 } - g = \musical_pitch { -1 4 0 } - giss = \musical_pitch { -1 4 1 } - gississ = \musical_pitch { -1 4 2 } - assess = \musical_pitch { -1 5 -2 } - ass = \musical_pitch { -1 5 -1 } - a = \musical_pitch { -1 5 0 } - aiss = \musical_pitch { -1 5 1 } - aississ = \musical_pitch { -1 5 2 } - hessess = \musical_pitch { -1 6 -2 } - b = \musical_pitch { -1 6 -1 } - h = \musical_pitch { -1 6 0 } - hiss = \musical_pitch { -1 6 1 } - hississ = \musical_pitch { -1 6 2 } + cessess = \musicalpitch { -1 0 -2 } + cess = \musicalpitch { -1 0 -1 } + c = \musicalpitch { -1 0 0 } + ciss = \musicalpitch { -1 0 1 } + cississ = \musicalpitch { -1 0 2 } + dessess = \musicalpitch { -1 1 -2 } + dess = \musicalpitch { -1 1 -1 } + d = \musicalpitch { -1 1 0 } + diss = \musicalpitch { -1 1 1 } + dississ = \musicalpitch { -1 1 2 } + essess = \musicalpitch { -1 2 -2 } + ess = \musicalpitch { -1 2 -1 } + e = \musicalpitch { -1 2 0 } + eiss = \musicalpitch { -1 2 1 } + eississ = \musicalpitch { -1 2 2 } + fessess = \musicalpitch { -1 3 -2 } + fess = \musicalpitch { -1 3 -1 } + f = \musicalpitch { -1 3 0 } + fiss = \musicalpitch { -1 3 1 } + fississ = \musicalpitch { -1 3 2 } + gessess = \musicalpitch { -1 4 -2 } + gess = \musicalpitch { -1 4 -1 } + g = \musicalpitch { -1 4 0 } + giss = \musicalpitch { -1 4 1 } + gississ = \musicalpitch { -1 4 2 } + assess = \musicalpitch { -1 5 -2 } + ass = \musicalpitch { -1 5 -1 } + a = \musicalpitch { -1 5 0 } + aiss = \musicalpitch { -1 5 1 } + aississ = \musicalpitch { -1 5 2 } + hessess = \musicalpitch { -1 6 -2 } + b = \musicalpitch { -1 6 -1 } + h = \musicalpitch { -1 6 0 } + hiss = \musicalpitch { -1 6 1 } + hississ = \musicalpitch { -1 6 2 } % @@ -52,41 +52,41 @@ % - Cessess = \musical_pitch { -2 0 -2 } - Cess = \musical_pitch { -2 0 -1 } - C = \musical_pitch { -2 0 0 } - Ciss = \musical_pitch { -2 0 1 } - Cississ = \musical_pitch { -2 0 2 } - Dessess = \musical_pitch { -2 1 -2 } - Dess = \musical_pitch { -2 1 -1 } - D = \musical_pitch { -2 1 0 } - Diss = \musical_pitch { -2 1 1 } - Dississ = \musical_pitch { -2 1 2 } - Essess = \musical_pitch { -2 2 -2 } - Ess = \musical_pitch { -2 2 -1 } - E = \musical_pitch { -2 2 0 } - Eiss = \musical_pitch { -2 2 1 } - Eississ = \musical_pitch { -2 2 2 } - Fessess = \musical_pitch { -2 3 -2 } - Fess = \musical_pitch { -2 3 -1 } - F = \musical_pitch { -2 3 0 } - Fiss = \musical_pitch { -2 3 1 } - Fississ = \musical_pitch { -2 3 2 } - Gessess = \musical_pitch { -2 4 -2 } - Gess = \musical_pitch { -2 4 -1 } - G = \musical_pitch { -2 4 0 } - Giss = \musical_pitch { -2 4 1 } - Gississ = \musical_pitch { -2 4 2 } - Assess = \musical_pitch { -2 5 -2 } - Ass = \musical_pitch { -2 5 -1 } - A = \musical_pitch { -2 5 0 } - Aiss = \musical_pitch { -2 5 1 } - Aississ = \musical_pitch { -2 5 2 } - Hessess = \musical_pitch { -2 6 -2 } - B = \musical_pitch { -2 6 -1 } - H = \musical_pitch { -2 6 0 } - Hiss = \musical_pitch { -2 6 1 } - Hississ = \musical_pitch { -2 6 2 } + Cessess = \musicalpitch { -2 0 -2 } + Cess = \musicalpitch { -2 0 -1 } + C = \musicalpitch { -2 0 0 } + Ciss = \musicalpitch { -2 0 1 } + Cississ = \musicalpitch { -2 0 2 } + Dessess = \musicalpitch { -2 1 -2 } + Dess = \musicalpitch { -2 1 -1 } + D = \musicalpitch { -2 1 0 } + Diss = \musicalpitch { -2 1 1 } + Dississ = \musicalpitch { -2 1 2 } + Essess = \musicalpitch { -2 2 -2 } + Ess = \musicalpitch { -2 2 -1 } + E = \musicalpitch { -2 2 0 } + Eiss = \musicalpitch { -2 2 1 } + Eississ = \musicalpitch { -2 2 2 } + Fessess = \musicalpitch { -2 3 -2 } + Fess = \musicalpitch { -2 3 -1 } + F = \musicalpitch { -2 3 0 } + Fiss = \musicalpitch { -2 3 1 } + Fississ = \musicalpitch { -2 3 2 } + Gessess = \musicalpitch { -2 4 -2 } + Gess = \musicalpitch { -2 4 -1 } + G = \musicalpitch { -2 4 0 } + Giss = \musicalpitch { -2 4 1 } + Gississ = \musicalpitch { -2 4 2 } + Assess = \musicalpitch { -2 5 -2 } + Ass = \musicalpitch { -2 5 -1 } + A = \musicalpitch { -2 5 0 } + Aiss = \musicalpitch { -2 5 1 } + Aississ = \musicalpitch { -2 5 2 } + Hessess = \musicalpitch { -2 6 -2 } + B = \musicalpitch { -2 6 -1 } + H = \musicalpitch { -2 6 0 } + Hiss = \musicalpitch { -2 6 1 } + Hississ = \musicalpitch { -2 6 2 } } diff --git a/init/table11.ly b/init/table11.ly index 34bffcc63c..646a0b843c 100644 --- a/init/table11.ly +++ b/init/table11.ly @@ -6,72 +6,71 @@ table_eleven = \symboltables { - \texid "\input lilyponddefs \musixelevendefs" + \font "feta11.afm" % index TeXstring, xmin xmax ymin ymax "style" = \table { - "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt - "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt - "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "number" "\setnumber{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt + "bold" "\\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt + "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt + "finger" "\\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt + "italic" "\\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt + "large" "\\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt + "number" "\\setnumber{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt + "roman" "\\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt } "dynamics" = \table { - "mf" "\dynmf" - "fff" "\dynfff" - "ff" "\dynff" - "f" "\dynf" + "mf" "\\dynmf" + "fff" "\\dynfff" + "ff" "\\dynff" + "f" "\\dynf" - "mp" "\dynmp" - "p" "\dynp" - "pp" "\dynpp" - "ppp" "\dynppp" - "fp" "\dynfp" - "sf" "\dynsf" - "sfz" "\dynsfz" + "mp" "\\dynmp" + "p" "\\dynp" + "pp" "\\dynpp" + "ppp" "\\dynppp" + "fp" "\\dynfp" + "sf" "\\dynsf" + "sfz" "\\dynsfz" } "align" = \table { - "-1" "\leftalign{%}" - "0" "\centeralign{%}" - "1" "\rightalign{%}" + "-1" "\\leftalign{%}" + "0" "\\centeralign{%}" + "1" "\\rightalign{%}" } "bars" = \table { - "empty" "\emptybar" + "empty" "\\emptybar" "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt - "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt - "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt - ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt - ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt - "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt + "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt + "||" "\\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt + "|." "\\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt + ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt + ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|" "\\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt + "|:" "\\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|:" "\\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt } - "meters" = \table { - "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "foobar" = \table { + "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt } % dims ignored for this table "param" = \table { - "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt - "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "stem" "\stem{%}{%}" - "fill" "\hbox{}" - "rule" "\rulesym{%}{%}" + "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt + "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "stem" "\\stem{%}{%}" + "fill" "\\hbox{}" + "rule" "\\rulesym{%}{%}" } - % ugh what's our outdir called? - \include "feta11.ly" } diff --git a/init/table13.ly b/init/table13.ly index d8d64fff07..1432209b8e 100644 --- a/init/table13.ly +++ b/init/table13.ly @@ -6,72 +6,70 @@ table_thirteen = \symboltables { - \texid "\input lilyponddefs \musixthirteendefs" + \font "feta13.afm" % index TeXstring, xmin xmax ymin ymax "style" = \table { - "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt - "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt - "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "number" "\setnumber{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt + "bold" "\\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt + "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt + "finger" "\\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt + "italic" "\\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt + "large" "\\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt + "number" "\\setnumber{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt + "roman" "\\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt } "dynamics" = \table { - "mf" "\dynmf" - "fff" "\dynfff" - "ff" "\dynff" - "f" "\dynf" + "mf" "\\dynmf" + "fff" "\\dynfff" + "ff" "\\dynff" + "f" "\\dynf" - "mp" "\dynmp" - "p" "\dynp" - "pp" "\dynpp" - "ppp" "\dynppp" - "fp" "\dynfp" - "sf" "\dynsf" - "sfz" "\dynsfz" + "mp" "\\dynmp" + "p" "\\dynp" + "pp" "\\dynpp" + "ppp" "\\dynppp" + "fp" "\\dynfp" + "sf" "\\dynsf" + "sfz" "\\dynsfz" } "align" = \table { - "-1" "\leftalign{%}" - "0" "\centeralign{%}" - "1" "\rightalign{%}" + "-1" "\\leftalign{%}" + "0" "\\centeralign{%}" + "1" "\\rightalign{%}" } "bars" = \table { - "empty" "\emptybar" + "empty" "\\emptybar" "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt - "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt - "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt - ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt - ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt - "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt + "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt + "||" "\\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt + "|." "\\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt + ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt + ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|" "\\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt + "|:" "\\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|:" "\\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt } - "meters" = \table { - "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "time_signatures" = \table { + "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt } % dims ignored for this table "param" = \table { - "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt - "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "stem" "\stem{%}{%}" - "fill" "\hbox{}" - "rule" "\rulesym{%}{%}" + "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt + "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "stem" "\\stem{%}{%}" + "fill" "\\hbox{}" + "rule" "\\rulesym{%}{%}" } - - % ugh what's our outdir called? - \include "feta13.ly" } diff --git a/init/table16.ly b/init/table16.ly index c78d4be45a..c7ca13d246 100644 --- a/init/table16.ly +++ b/init/table16.ly @@ -7,79 +7,73 @@ table_sixteen= \symboltables { - \texid "\input lilyponddefs \musixsixteendefs" + \font "feta16.afm" + % index TeXstring, xmin xmax ymin ymax "style" = \table { - "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt - "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt - "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 4.0\pt - "italic" "\setitalic{%}" 0.0\pt 4.\pt 0.0\pt 8.0\pt - "large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 10.0\pt - "number" "\setnumber{%}" 0.0\pt 6.0\pt 0.0\pt 8.0\pt - "roman" "\settext{%}" 0.0\pt 4.0\pt 0.0\pt 8.0\pt + "bold" "\\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt + "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 8.0\pt + "finger" "\\setfinger{%}" 0.0\pt 2.0\pt 0.0\pt 4.0\pt + "italic" "\\setitalic{%}" 0.0\pt 4.\pt 0.0\pt 8.0\pt + "typewriter" "\\settypewriter{%}" 0.0\pt 4.\pt 0.0\pt 8.0\pt + "large" "\\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 10.0\pt + "number" "\\setnumber{%}" 0.0\pt 6.0\pt 0.0\pt 8.0\pt + "roman" "\\settext{%}" 0.0\pt 4.5\pt 0.0\pt 8.0\pt } "dynamics" = \table { - "mf" "\dynmf" - "fff" "\dynfff" - "ff" "\dynff" - "f" "\dynf" - "mp" "\dynmp" - "p" "\dynp" - "pp" "\dynpp" - "ppp" "\dynppp" - "fp" "\dynfp" - "sf" "\dynsf" - "sfz" "\dynsfz" + "mf" "\\dynmf" + "fff" "\\dynfff" + "ff" "\\dynff" + "f" "\\dynf" + "mp" "\\dynmp" + "p" "\\dynp" + "pp" "\\dynpp" + "ppp" "\\dynppp" + "fp" "\\dynfp" + "sf" "\\dynsf" + "sfz" "\\dynsfz" } "align" = \table { - "-1" "\leftalign{%}" - "0" "\centeralign{%}" - "1" "\rightalign{%}" + "-1" "\\leftalign{%}" + "0" "\\centeralign{%}" + "1" "\\rightalign{%}" } - "slur" = \table { - "whole" "\slurchar%{%}" - "half" "\hslurchar%{%}" - } "bars" = \table { - "empty" "\emptybar" + "empty" "\\emptybar" "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 16.0\pt - "||" "\doublebar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt - "|." "\finishbar{%}" -4.0\pt 0.0\pt 0.0\pt 16.0\pt - ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt - ":|" "\repeatbar" -8.0\pt 0.0\pt 0.0\pt 16.0\pt - "|:" "\startrepeat" 0.0\pt 8.0\pt 0.0\pt 16.0\pt - ":|:" "\repeatbarstartrepeat" 0.0\pt 16.0\pt 0.0\pt 16.0\pt + "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 16.0\pt + "||" "\\doublebar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt + "|." "\\finishbar{%}" -4.0\pt 0.0\pt 0.0\pt 16.0\pt + ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 16.0\pt + ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|" "\\repeatbar" -8.0\pt 0.0\pt 0.0\pt 16.0\pt + "|:" "\\startrepeat" 0.0\pt 8.0\pt 0.0\pt 16.0\pt + ":|:" "\\repeatbarstartrepeat" 0.0\pt 16.0\pt 0.0\pt 16.0\pt } "meters" = \table { - "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt } % dims ignored for this table "param" = \table { -% "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt - "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 80.0\pt - "bracket" "\staffbracket{%}" 0.0\pt 4.0\pt 16.0\pt 128.0\pt - "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -8.0\pt 8.0\pt - "rule" "\rulesym{%}{%}" - "stem" "\stem{%}{%}" - "fill" "\hbox{}" - % ugh. 8pt - "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -5.0\pt 5.0\pt - "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -5.0\pt 5.0\pt + "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 80.0\pt + "bracket" "\\staffbracket{%}" 0.0\pt 4.0\pt 16.0\pt 128.0\pt + "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -8.0\pt 8.0\pt + "rule" "\\rulesym{%}{%}" + "stem" "\\stem{%}{%}" + "fill" "\\hbox{}" } "beamslopes" = \table { - "slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt - "horizontal" "\rulesym{%}{%}" + "slope" "\\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt + "horizontal" "\\rulesym{%}{%}" } - \include "feta16.ly" } diff --git a/init/table20.ly b/init/table20.ly index 0ee27d15b3..483c775ef2 100644 --- a/init/table20.ly +++ b/init/table20.ly @@ -7,84 +7,77 @@ table_twenty = \symboltables { - \texid "\input lilyponddefs \musixtwentydefs" + \font "feta20.afm" % index TeXstring, xmin xmax ymin ymax "style" = \table { - "bold" "\setbold{%}" 0.0\pt 5.50\pt 0.0\pt 8.0\pt - "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt - "italic" "\setitalic{%}" 0.0\pt 5.5\pt 0.0\pt 10.0\pt - "large" "\setlarge{%}" 0.0\pt 6.50\pt 0.0\pt 12.0\pt - "number" "\setnumber{%}" 0.0\pt 8.0\pt 0.0\pt 10.0\pt - "roman" "\settext{%}" 0.0\pt 5.0\pt 0.0\pt 10.0\pt + "bold" "\\setbold{%}" 0.0\pt 5.50\pt 0.0\pt 8.0\pt + "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt + "finger" "\\setfinger{%}" 0.0\pt 4.5\pt 0.0\pt 5.0\pt + "typewriter" "\\settypewriter{%}" 0.0\pt 5.5\pt 0.0\pt 10.0\pt + "italic" "\\setitalic{%}" 0.0\pt 5.5\pt 0.0\pt 10.0\pt + "large" "\\setlarge{%}" 0.0\pt 6.50\pt 0.0\pt 12.0\pt + "Large" "\\setLarge{%}" 0.0\pt 6.50\pt 0.0\pt 12.0\pt + "mark" "\\setmark{%}" 0.0\pt 6.50\pt 0.0\pt 12.0\pt + "number" "\\setnumber{%}" 0.0\pt 8.0\pt 0.0\pt 10.0\pt + "roman" "\\settext{%}" 0.0\pt 5.6\pt 0.0\pt 10.0\pt } "dynamics" = \table { - "mf" "\dynmf" - "fff" "\dynfff" - "ff" "\dynff" - "f" "\dynf" - "mp" "\dynmp" - "p" "\dynp" - "pp" "\dynpp" - "ppp" "\dynppp" - "fp" "\dynfp" - "sf" "\dynsf" - "sfz" "\dynsfz" + "mf" "\\dynmf" + "fff" "\\dynfff" + "ff" "\\dynff" + "f" "\\dynf" + "mp" "\\dynmp" + "p" "\\dynp" + "pp" "\\dynpp" + "ppp" "\\dynppp" + "fp" "\\dynfp" + "sf" "\\dynsf" + "sfz" "\\dynsfz" } "align" = \table { - "-1" "\leftalign{%}" - "0" "\centeralign{%}" - "1" "\rightalign{%}" + "-1" "\\leftalign{%}" + "0" "\\centeralign{%}" + "1" "\\rightalign{%}" } - "slur" = \table { - "whole" "\slurchar%{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt - "half" "\hslurchar%{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt - } - "bars" = \table { - "empty" "\emptybar" + "empty" "\\emptybar" "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt - "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt - "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt - ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt - ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt - "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt + "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt + "||" "\\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt + "|." "\\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt + ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt + ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|" "\\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt + "|:" "\\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|:" "\\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt } "meters" = \table { - "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt } % dims ignored for this table "param" = \table { -% "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 0.0\pt 0.0\pt - "bracket" "\staffbracket{%}" 0.0\pt 0.0\pt 20.0\pt 160.0\pt - "rule" "\rulesym{%}{%}" - "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 40.0\pt 100.0\pt - "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "stem" "\stem{%}{%}" - "fill" "\hbox{}" - % ugh. 8\pt - "crescendosym" "\crescendosym{%}" 0.0\pt 0.0\pt -6.25\pt 6.25\pt - "decrescendosym" "\decrescendosym{%}" 0.0\pt 0.0\pt -6.25\pt 6.25\pt + "bracket" "\\staffbracket{%}" 0.0\pt 0.0\pt 20.0\pt 160.0\pt + "rule" "\\rulesym{%}{%}" + "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 40.0\pt 100.0\pt + "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "stem" "\\stem{%}{%}" + "fill" "\\hbox{}" } "beamslopes" = \table { - "slope" "\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt - "horizontal" "\rulesym{%}{%}" + "slope" "\\beamslope{%}{%}" 2.0\pt 64.0\pt 0.0\pt 0.0\pt + "horizontal" "\\rulesym{%}{%}" } - % ugh what's our outdir called? - \include "feta20.ly" } diff --git a/init/table26.ly b/init/table26.ly index 93d9bd645a..c9d7dbc412 100644 --- a/init/table26.ly +++ b/init/table26.ly @@ -6,72 +6,70 @@ table_twentysix = \symboltables { - \texid "\input lilyponddefs \musixtwentysixdefs" + \font "feta26.afm" % index TeXstring, xmin xmax ymin ymax "style" = \table { - "bold" "\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt - "dynamic" "\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "finger" "\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt - "italic" "\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt - "large" "\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt - "number" "\setnumber{%}" 0.0\pt 8.0\pt 0.0\pt 10.0\pt - "roman" "\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt + "bold" "\\setbold{%}" 0.0\pt 7.50\pt 0.0\pt 8.0\pt + "dynamic" "\\setdynamic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt + "finger" "\\setfinger{%}" 0.0\pt 0.0\pt 0.0\pt 5.0\pt + "italic" "\\setitalic{%}" 0.0\pt 0.0\pt 0.0\pt 10.0\pt + "large" "\\setlarge{%}" 0.0\pt 9.50\pt 0.0\pt 12.0\pt + "number" "\\setnumber{%}" 0.0\pt 8.0\pt 0.0\pt 10.0\pt + "roman" "\\settext{%}" 0.0\pt 7.5\pt 0.0\pt 10.0\pt } "dynamics" = \table { - "mf" "\dynmf" - "fff" "\dynfff" - "ff" "\dynff" - "f" "\dynf" + "mf" "\\dynmf" + "fff" "\\dynfff" + "ff" "\\dynff" + "f" "\\dynf" - "mp" "\dynmp" - "p" "\dynp" - "pp" "\dynpp" - "ppp" "\dynppp" - "fp" "\dynfp" - "sf" "\dynsf" - "sfz" "\dynsfz" + "mp" "\\dynmp" + "p" "\\dynp" + "pp" "\\dynpp" + "ppp" "\\dynppp" + "fp" "\\dynfp" + "sf" "\\dynsf" + "sfz" "\\dynsfz" } "align" = \table { - "-1" "\leftalign{%}" - "0" "\centeralign{%}" - "1" "\rightalign{%}" + "-1" "\\leftalign{%}" + "0" "\\centeralign{%}" + "1" "\\rightalign{%}" } "bars" = \table { - "empty" "\emptybar" + "empty" "\\emptybar" "" "" 0.0\pt 0.0\pt 0.0\pt 16.0\pt - "|" "\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt - "||" "\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt - "|." "\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt - ".|" "\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt - ":|" "\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt - "|:" "\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt - ":|:" "\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt + "|" "\\maatstreep{%}" 0.0\pt 0.64\pt 0.0\pt 20.0\pt + "||" "\\doublebar{%}" 0.0\pt 5.0\pt 0.0\pt 20.0\pt + "|." "\\finishbar{%}" -5.0\pt 0.0\pt 0.0\pt 20.0\pt + ".|" "\\startbar{%}" 0.0\pt 4.0\pt 0.0\pt 20.0\pt + ".|." "\\fatdoublebar{%}" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|" "\\repeatbar" -10.0\pt 0.0\pt 0.0\pt 20.0\pt + "|:" "\\startrepeat" 0.0\pt 10.0\pt 0.0\pt 20.0\pt + ":|:" "\\repeatbarstartrepeat" 0.0\pt 20.0\pt 0.0\pt 20.0\pt } "meters" = \table { - "C" "\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "C2" "\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "C" "\\fourfourmeter" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "C2" "\\allabreve" 0.0\pt 10.0\pt -5.0\pt 5.0\pt } % dims ignored for this table "param" = \table { - "brace" "\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt - "meter" "\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt - "stem" "\stem{%}{%}" - "fill" "\hbox{}" - "rule" "\rulesym{%}{%}" + "brace" "\\pianobrace{%}" 0.0\pt 0.0\pt 32.0\pt 96.0\pt + "time_signature" "\\generalmeter{%}{%}" 0.0\pt 10.0\pt -5.0\pt 5.0\pt + "stem" "\\stem{%}{%}" + "fill" "\\hbox{}" + "rule" "\\rulesym{%}{%}" } - - % ugh what's our outdir called? - \include "feta26.ly" } diff --git a/input/Makefile b/input/Makefile index 07f36f84d1..b557d18d4b 100644 --- a/input/Makefile +++ b/input/Makefile @@ -1,14 +1,14 @@ # input/Makefile -# subdir level: -# depth = .. -# SUBDIRS=test bugs -include $(depth)/make/Mutopia.make +include $(depth)/make/Stepmake.make +include $(make-dir)/Mutopia.make -examples=twinkle-pop praeludium-fuga-E twinkle +examples=example-3 twinkle-pop praeludium-fuga-E twinkle +flexamples=example-1 example-2 + +include $(stepdir)/WWW.make -include $(depth)/make/WWW.make diff --git a/input/bugs/Makefile b/input/bugs/Makefile index a221caa99d..369ff9045a 100644 --- a/input/bugs/Makefile +++ b/input/bugs/Makefile @@ -1,14 +1,11 @@ -# input/Makefile +# input/bugs/Makefile -# subdir level: -# depth = ../.. -# - -include $(depth)/make/Mutopia.make +include $(depth)/make/Stepmake.make +include $(make-dir)/Mutopia.make examples= #beam-bug slur-bug #why would we want to demo Lily's errors? -include $(depth)/make/WWW.make +include $(stepdir)/WWW.make diff --git a/input/bugs/a.ly b/input/bugs/a.ly deleted file mode 100644 index 45b63b199e..0000000000 --- a/input/bugs/a.ly +++ /dev/null @@ -1,56 +0,0 @@ -\header{ -enteredby = "jcn"; -copyright = "PD"; -TestedFeatures = "This file tests Feta embedded slurs" - "(Feta definitively is not an abbreviation of Font-En-TjA)"; -} - -\version "0.1.15"; - -shortlong = \melodic{ - \octave c'; - c4()c( c c | - c c c c | - c c c c | - \break; - c c c )c | -} - -sl = \melodic{ - \octave c''; -% e4()e( a e | - e4 e( a e | - e e e e | - e e e a | - \break; - e e g )e | -} - -broken = \melodic{ - \octave c''; - c c c c() - c c c c( - c )c c c( - c c )c c( - )a' a' a' a'() - a' a' a' a'() - c( c c )c - c( c c )'f - f,( c c )c - f,( c c )'f -} - -\score{ - \melodic{ -% \shortlong - \sl -% \broken - } - \paper{ - indent = 0.0\pt; - %for broken! -% linewidth= 30.\mm; - castingalgorithm = \Wordwrap; - } -} - diff --git a/input/bugs/beam-bug.ly b/input/bugs/beam-bug.ly deleted file mode 100644 index 571d981736..0000000000 --- a/input/bugs/beam-bug.ly +++ /dev/null @@ -1,35 +0,0 @@ -% silly file to test beam stem lengths -% compare to *ugly* bug in preludes-1: [e'16 c'' g' f'] -% here it's okee ?? - -one = \melodic{ - \octave c'; - [e'8 c'' g' f'] - \octave c''; - [e16-1\f c'-5( g-3 f-2] % [e-1 c'-5 g-3 e-2] - \octave c'; -% [e'16 c'' g' f'] - [e'32 c'' g' f'] - [c32 c] ['b b,] - [c8 c] - [e8 g b] - [e16 g b] c c c - [e32 g b] c - [c c c c] - c4 c4 - \onevoice; - [e'8 c'' g' f'] - [e'16 c'' g' f'] - [e'32 c'' g' f'] - [c32 c] ['b b,] - [c8 c] - [e8 g b] - [e16 g b] c - [e32 g b] c - [c c c c] - c4 -} - -\score{ - \one -} diff --git a/input/bugs/beam-length.ly b/input/bugs/beam-length.ly deleted file mode 100644 index 1297b78336..0000000000 --- a/input/bugs/beam-length.ly +++ /dev/null @@ -1,12 +0,0 @@ -% beams should look the same -\score{ - \melodic{ - \octave relative; - [d''8 d d] [d g d] - c c - c4 c c c - c c c c - c c c c - } -} - diff --git a/input/bugs/grouping.fly b/input/bugs/grouping.fly new file mode 100644 index 0000000000..ca109804ea --- /dev/null +++ b/input/bugs/grouping.fly @@ -0,0 +1,2 @@ + +[bes:16 e e e] diff --git a/input/bugs/hari-number.ly b/input/bugs/hari-number.ly new file mode 100644 index 0000000000..79bdd6050d --- /dev/null +++ b/input/bugs/hari-number.ly @@ -0,0 +1,32 @@ +\score{ + \melodic { R1 } + \paper{ + linewidth = 40.0\mm; + +Staff = \translator { + \type "Hara_kiri_line_group_engraver"; + defaultclef = violin; + + \consists "Bar_engraver"; + \consists "Clef_engraver"; + \consists "Key_engraver"; + \consists "Meter_engraver"; + \consists "Local_key_engraver"; + \consists "Staff_sym_engraver"; + \consists "Collision_engraver"; + \consists "Rest_collision_engraver"; +% { + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; +% } + \consists "Staff_margin_engraver"; + \consists "Separating_line_group_engraver"; +% \consists "Line_group_engraver"; + + \accepts "Voice"; +} + +% } + } +} + diff --git a/input/bugs/multi-slope.ly b/input/bugs/multi-slope.ly deleted file mode 100644 index 24677ef3d0..0000000000 --- a/input/bugs/multi-slope.ly +++ /dev/null @@ -1,6 +0,0 @@ -\score{ - \melodic{ - \octave c'; - [c8 c16 c16] - } -} diff --git a/input/bugs/out/dummy.dep b/input/bugs/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/input/bugs/s.ly b/input/bugs/s.ly deleted file mode 100644 index c370d88947..0000000000 --- a/input/bugs/s.ly +++ /dev/null @@ -1,15 +0,0 @@ -\header{ -% should look the same -title="symmetry"; -} -\score{ - \melodic{ - \octave relative; - [g'8( e )c' g,] - [d'( f' )a, a] - } - \paper{ - castingalgorithm = \Wordwrap; - linewidth = 50.0\mm; - } -} diff --git a/input/bugs/slur-broken.ly b/input/bugs/slur-broken.ly index dfdf22adc2..cb8391a086 100644 --- a/input/bugs/slur-broken.ly +++ b/input/bugs/slur-broken.ly @@ -2,7 +2,7 @@ shortlong = \melodic{ c4()c( c c | c c c c | c c c c | - \break; + \break c c c )c | c c c c | c c c c | diff --git a/input/bugs/slur-bug.fly b/input/bugs/slur-bug.fly new file mode 100644 index 0000000000..474bf96c23 --- /dev/null +++ b/input/bugs/slur-bug.fly @@ -0,0 +1,9 @@ +% bug +% excentric slur can't handle this ... +\score{ + \melodic{ + \octave c; + \stemdown; + \[4/5c8( c f,, c c\]1/1 c c c )c | + } +} diff --git a/input/bugs/slur-bug.ly b/input/bugs/slur-bug.ly deleted file mode 100644 index 474bf96c23..0000000000 --- a/input/bugs/slur-bug.ly +++ /dev/null @@ -1,9 +0,0 @@ -% bug -% excentric slur can't handle this ... -\score{ - \melodic{ - \octave c; - \stemdown; - \[4/5c8( c f,, c c\]1/1 c c c )c | - } -} diff --git a/input/bugs/slur-symmetry.ly b/input/bugs/slur-symmetry.ly new file mode 100644 index 0000000000..60e1ad8dc6 --- /dev/null +++ b/input/bugs/slur-symmetry.ly @@ -0,0 +1,16 @@ +\header{ +% should look the same +title="symmetry"; +} +\score{ + \melodic\relative c'{ + [g'8( e )c' g,] + [d'( f' )a, a] + [d( f )a, d'] + [g,( e, )c' c] + } + \paper{ + castingalgorithm = \Wordwrap; + linewidth = 50.0\mm; + } +} diff --git a/input/bugs/stem-length.ly b/input/bugs/stem-length.ly deleted file mode 100644 index e4cb9443c8..0000000000 --- a/input/bugs/stem-length.ly +++ /dev/null @@ -1,7 +0,0 @@ -\score{ - \melodic{ - \octave c'; - [a'16 a'] - [c16 c] - } -} diff --git a/input/bugs/tie-bug.ly b/input/bugs/tie-bug.ly deleted file mode 100644 index 61c49afdea..0000000000 --- a/input/bugs/tie-bug.ly +++ /dev/null @@ -1,13 +0,0 @@ - -\score{ - \melodic{ - \octave relative; - < - {\voicetwo f} - % this is the correct way - % {\voicetwo } - {\voiceone c' ~ c } - > - } -} - diff --git a/input/coriolan-alto.ly b/input/coriolan-alto.ly deleted file mode 100644 index 71587c72ca..0000000000 --- a/input/coriolan-alto.ly +++ /dev/null @@ -1,77 +0,0 @@ -% remark: still temporarily broken. - -\header{ -filename = "coriolan-alto.ly"; -title = "Ouverture zu Collins Trauerspiel "Coriolan" Opus 62"; -description = "a 5 bar fragment of the alto part"; -composer = "Ludwig van Beethoven (1770-1792)"; -enteredby = "JCN"; -copyright = "public domain"; - -TestedFeatures: -} - -% -% when lily can handle this, i-ll type the other 304 bars -% (maybe even sooner :-) -% - -\version "0.1.15"; - -alto1 = \melodic{ - \meter 4/4; - \key bes es as; - - \clef "alto"; - % these are chords (i.e. non-divisi) - { \octave c ; - - [ c8 c8-. ] c2.( | -%31 - [ ) c8 c8-. ] c2.( | -%32 - [ ) c8 c8-. ] c4. c8-. c4( | -%33 - [ ) c8 c8-. ] c4. c8-. c4 | - - %% divisi - \type Voice="altodivisi1" {\stemup c4:16 ^"div." c4: c2: } - \stemboth - } -%30:2 -} - -alto2 = \melodic{ - \octave c, ; - \textstyle "italic"; - % this should be a \dynamic, rather than text - [ c8 c8_"cresc. \ \ - \ \ \ \ - \ \ \ \ - \ \ \ \ - - \ \ \ \ - \ \ \ \ - \ \ \ \ - \ \ \ \ - - \ \ \ \ - \ \ \ \ - \ \ \ \ - \ \ \ \ - - \ \ \ \ - \ \ \ \ -" ] c2.( | - \textstyle "roman"; -%31:2 - [ ) c8 c-. ] c2.( | -%32:2 - [ ) c8 c-. ] c4. c8-. c4( | -%33:2 - [ ) c8 c-. ] c4. c8-. c4 | - \octave c ; - -%34 - % these are two \voices (i.e. divisi) - % the c4 and c2, however are really 16th... - % we-ll say "simile" for now... - % - \octave c, ; - \type Voice="altodivisi2" { - \stemdown - as4: as4: as2} - \stemboth -} - -\score{ - \type Voice < \alto1 \alto2 > - \paper{ - } -} diff --git a/input/example-1.fly b/input/example-1.fly new file mode 100644 index 0000000000..2a99dcd297 --- /dev/null +++ b/input/example-1.fly @@ -0,0 +1,13 @@ +c'4 d e f g a b c + +% A simple scale in Mudela. +% +% Type: +% +% ly2dvi example-1 +% xdvi example-1 # or your dvi viewer here +% +% For more elaborate examples see twinkle.ly, kortjakje.ly and mutopia/*. +% +% A docmument on Mudela is under construction: Documentation/tex/mudela.doc +% (available as .ps from the website too). diff --git a/input/example-2.fly b/input/example-2.fly new file mode 100644 index 0000000000..813fed7131 --- /dev/null +++ b/input/example-2.fly @@ -0,0 +1,13 @@ +a''2 ~ c4( [e8 )e] [a,16 a a a] + +% Some beamed and slurred notes of different taste in Mudela. +% +% Type: +% +% ly2dvi example-2 +% xdvi example-2 # or your dvi viewer here +% +% For more elaborate examples see twinkle.ly, kortjakje.ly and mutopia/*. +% +% A docmument on Mudela is under construction: Documentation/tex/mudela.doc +% (available as .ps from the website too). diff --git a/input/example-3.ly b/input/example-3.ly new file mode 100644 index 0000000000..ebd4ba1851 --- /dev/null +++ b/input/example-3.ly @@ -0,0 +1,29 @@ +one = \melodic\relative c{ + c'' d e f +} + +two = \melodic\relative c{ + \clef "bass"; + c'2 g2 +} + +\score{ + < + \one + \two + > + \paper{} + \midi{} +} + +% A full-mudala example with two staffs +% +% Type: +% +% ly2dvi example-3 +% xdvi example-3 # or your dvi viewer here +% +% For more elaborate examples see twinkle.ly, kortjakje.ly and mutopia/*. +% +% A docmument on Mudela is under construction: Documentation/tex/mudela.doc +% (available as .ps from the website too). diff --git a/input/keys.ly b/input/keys.ly index 35f27b18d0..134351df3c 100644 --- a/input/keys.ly +++ b/input/keys.ly @@ -1,19 +1,21 @@ -\version "0.1.15"; +\version "1.0.0"; -blah = \melodic{ - \meter 4/4; - \octave c'; - \key bes es as; +blah = \melodic { + +\transpose c'' { + \time 4/4; + \accidentals es; [cis8 d e f] [e! a b cis'] | es e f e a a' a a' | - \clef "bass"; \octave c; [es16 c' b a] [g f es d] [c d es d] [c Bes As G] | + \clef "bass"; } + [es16 c' b a] [g f es d] [c d es d] [c Bes As G] | \clef "violin"; - \key ; + \accidentals c; cis4 c cis cis | cis dis2 ~ | - \meter 2/4 ; + \time 2/4 ; dis4 dis ~ | c cis~ | c } diff --git a/input/kortjakje.ly b/input/kortjakje.ly index 657eeaf89f..b3f68e393f 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -1,9 +1,8 @@ - \header{ filename = "kortjakje.ly"; -title = "Ah, vous dirais-je, maman (variations)"; +title = "Ah vous dirais-je maman (variations)"; description = "bare bones version. (written down from memory :-)"; -composer = "Mozart, KV 265"; +composer = "Mozart KV 265"; enteredby = "HWN"; copyright = "public domain"; } @@ -11,55 +10,51 @@ copyright = "public domain"; Tested Features: example file with comments %} -\version "0.1.15"; +\version "1.0.0"; % the % is a comment. % declare melody (which will be in *one* staff ) for the lead voice -melodie = \melodic { +melodie = \melodic \relative c' { % switch Lilypond in note-mode \clef"violin"; - \meter 2/4 ; - \octave c'; % set the default octave - % the default note duratino is 4 + \time 2/4 ; %%% theme - c4 c | % the '|' checks if there is a new measure here. - g g| + c4 c | % the | checks if there is a new measure here. + g' g| a a| g2| % g2 means a "g-1" pitched half-note f4 f| e e| d d| c2 - g4 g| f f| e e| d d| g g| f f| e e| d d| + g'4 g| f f| e e| d d| g g| f f| e e| d d| %%% var 1 c4 r8 c % r8 means an 8th rest. (| % start a slur % NOTE: the slurstart should be directly after the note ) % end a slur. - g4 r8 g8 () a4 r8 a8 () g4 r4 + g'4 r8 g8 () a4 r8 a8 () g4 r4 f4 r8 f8 () e4 r8 e8 (|) d4 r8 d8 () c4 r4 } % more of this. -begeleiding = \melodic{ +begeleiding = \melodic \relative c { \clef "bass"; - \meter 2/4 ; - \octave c'; % default octave: 1 below the first octave. + \time 2/4 ; %%% theme - c,4 % ' before note means one octave lower. - % Similarly: ' after means one higher. - c e c f c e c d b, c a, f, g, c,2 | - \octave c ; - e4 g, d g, c g, b, g, e g, d g, c g, b, g, + c4 % before note means one octave lower. + % Similarly: after means one higher. + c' e c f c e c d b c a f g c,2 | + e'4 g, d' g, c g b g e' g, d' g, c g b g %%%% var 1 - r8 e8() c4 r8 e8() c4 r8 f8() c4 r8 e8() c4 - r8 d8() b,4 r8 c8() a,4 r8 a,8() f,4 r8 e,8() c,4 + r8 e'8() c4 r8 e8() c4 r8 f8() c4 r8 e8() c4 + r8 d8() b4 r8 c8() a4 r8 a8() f4 r8 e8() c4 } \score{ - \melodic \type Grand_staff < + \type GrandStaff < \melodie \begeleiding > diff --git a/input/minimal.ly b/input/minimal.ly deleted file mode 100644 index 58ba75e4af..0000000000 --- a/input/minimal.ly +++ /dev/null @@ -1,52 +0,0 @@ -\notenames { - c = \melodic_request { -1 0 0 } -} - -%default_paper = \paper{ -paper_minimal = \paper{ - bla = 0.0; - blo = 0.0; - - castingalgorithm = 0.0; - linewidth = 15.0\cm; - staffsize = 20.0\pt; - interline = \linewidth / 14.0; - notewidth = \interline; - internote = \interline / 2.0; - - arithmetic_basicspace = 1.0; - arithmetic_multiplier = 1.0; - geometric = 0.0; - - Score = \translator { - \type Score_engraver; - \consists "Note_head_engraver" ; - } - - bli = "hi"; - - \symboltables { - \texid "\input lilyponddefs \musixtwentydefs" - "balls" = \table { - "2" "\\quartball" 0.00\pt 3.63\pt -1.51\pt 1.51\pt - "2l" "\\quartledger" -1.65\pt 8.26\pt -0.50\pt 0.50\pt - } - "param" = \table { - "fill" "\hbox{}" -% "rule" "\rulesym{%}{%}" - } - } -} - -default_paper = \paper{ - \paper_minimal -} - -\score{ -% \melodic_request { -1 0 0 } - \melodic{ c'' } - \paper{ - bla = 0.0; - } -} - diff --git a/input/multi.ly b/input/multi.ly deleted file mode 100644 index ccd1322413..0000000000 --- a/input/multi.ly +++ /dev/null @@ -1,47 +0,0 @@ -\header{ -filename = "multi.ly"; -description = "stupid testfile for pl68 features."; -enteredby = "HWN"; -copyright = "public domain"; -} -%{ -Tested Features: \multi - - -WARNING: the \multi construct is not very intuitive. You better try -the - - \type Grand_staff < - \type Staff = treble {.. } - \type Staff = bass {.. } - > - -construct to get multiple staffs, it's cleaner - -%} - - -\version "0.1.15"; - -\score{ - \melodic - { \octave c'; c4 c4 - \multi 1 < { c2 c2 } { c'2 c'2 } > - \multi 2 < { \stemdown c2 c2 } { \stemup c'2 c'2 } > - \multi 3 < { \clef "bass"; c2 c2 } - { \meter 2/4;\bar "||"; - \key fis cis gis; c'2 c'2 } -> - c2 c1 - c1 c1 - \multi 1 < \multi 3 < - { \meter 2/4; \clef "violin"; c2 c2 } - { \meter 2/4; \clef "bass"; c2 c2 } - > - \multi 3 < - { \meter 2/4; \clef "violin"; c2 c2 } - { \meter 2/4; \clef "bass"; c2 c2 } - > - > - } -} diff --git a/input/out/dummy.dep b/input/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/input/part.ly b/input/part.ly index b2d6ad9bc2..b7beca7636 100644 --- a/input/part.ly +++ b/input/part.ly @@ -1,5 +1,4 @@ part = \melodic{ - \octave c; c-1 c c c r1*3 c4-5 c c c diff --git a/input/pedal.ly b/input/pedal.ly index 651cd94fcb..6810cfa6be 100644 --- a/input/pedal.ly +++ b/input/pedal.ly @@ -24,14 +24,13 @@ % \lbheel \lbheel \lfheel \lftoe % \rbheel \rbtoe \rfheel \rftoe -\version "0.1.15"; +\version "1.0.0"; \score{ \melodic { - \meter 4/4; - \key fis cis; + \time 4/4; + \key D; \clef bass; - \octave c; % silly chord testing... % these should be stacked... % < c,-\ltoe e,-\lheel > < c'-\rtoe e'-\rheel> diff --git a/input/praeludium-fuga-E.ly b/input/praeludium-fuga-E.ly index 48ea88df3b..b198ed23f6 100644 --- a/input/praeludium-fuga-E.ly +++ b/input/praeludium-fuga-E.ly @@ -19,32 +19,41 @@ * organ staff... %} -\version "0.1.15"; +\version "1.0.0"; -noShift = { \property Voice.hshift = 0 } -Shift = { \property Voice.hshift = 1 } praeludium_commands = \melodic { - \meter 4/4; - \key fis cis gis dis; % E-major + \time 4/4; + \key e; } -praeludium_right = \melodic { +praeludium_right = \melodic\transpose c'' { \$praeludium_commands - \octave c'; \clef violin; % 13 -- how to type -- where to split -- this more neatly? - \multi 2 < + \type Staff < { \stemup r4 dis'4 e'4. e'8 ~ | - \Shift e'4 [d'8 fis'8] \noShift gis'4 ~ [gis'8 fis'16 e'16] | + \shifton e'4 [d'8 fis'8] \shiftoff gis'4 ~ [gis'8 fis'16 e'16] | fis'4 ~ [fis'8 e'16 dis'16] e'4 r8 e'8 } - { \stemup \Shift r4 bis4 cis'4 \noShift cis'4 | - a'4 ~ [a'16 gis'16 a'16 b'16] \Shift dis'4 cis'4 ~ | + { \stemup \shifton r4 bis4 cis'4 \shiftoff cis'4 | + a'4 ~ [a'16 gis'16 a'16 b'16] \shifton dis'4 cis'4 ~ | [cis'8 dis'16 ais16] bis4 cis'4 r8 b8 } - { \stemup \Shift s4 gis4 } - { \stemdown \Shift r4 fis4 \noShift gis4 gis4 | + { + + %\stemup + %{ + this is a diversion from the Griepenkerl/Keller + edition; a hack to avoid collisions + %} + \stemdown + \shifton s4 gis4 } + + { \stemdown +% \shifton % idem + + r4 fis4 \shiftoff gis4 gis4 | a4. cis'8 gis2 | fis4 gis4 gis4 r8 e8 } > | @@ -53,19 +62,20 @@ praeludium_right = \melodic { praeludium_left = \melodic { \$praeludium_commands - \octave c; \clef bass; % 13 - \multi 2 < + \type Staff < { \stemup r4 dis'4 cis'4 cis'4 ~ | [cis'8 a8 d'8 cis'8] [bis8 gis8] cis'4 | dis'2 cis'4 r8 cis'8 } { \stemup bis2 } - { \stemup \Shift r4 gis4 ~ [gis 8 gis8] ~ \stemdown \noShift gis4 | + { \stemup \shifton r4 gis4 ~ [gis 8 gis8] ~ \stemdown \shiftoff gis4 | a4. fis8 gis4. a8 ~ | a4 gis4 gis4 r8 gis8 } - { \stemup \Shift s4 fis4 e} +% { \stemup \shifton s4 fis4 e} +% a quick hack to avoid some collisons + { \stemdown \shifton s4 fis4 e} { \stemdown s4 dis4 cis4 } > | % 16 @@ -73,7 +83,6 @@ praeludium_left = \melodic { praeludium_pedal = \melodic { \$praeludium_commands - \octave c; \clef bass; % 13 @@ -85,17 +94,16 @@ praeludium_pedal = \melodic { fuga2_commands = \melodic{ - \meter 3/4; - \key fis cis gis dis; % E-major + \time 3/4; + \key e; % E-major } -fuga2_right = \melodic { +fuga2_right = \melodic\transpose c'' { \$fuga2_commands - \octave c'; \clef violin; % 15 - \multi 2 < + \type Staff < { \stemup [b8 fis8] b4 } { \stemdown fis2 } > @@ -107,18 +115,18 @@ fuga2_right = \melodic { |x | %} - \multi 2 < - { \stemup \noShift e'4 } - { \stemup \Shift cis'4 } - { \stemup \Shift ais4 } + \type Staff < + { \stemup \shiftoff e'4 } + { \stemup \shifton cis'4 } + { \stemup \shifton ais4 } { \stemdown fis4 } > | % 16 - \multi 2 < + \type Staff < { \stemup dis'2 dis'4 | cis'2 cis'4 | b4. [cis'8 dis'8 e'8] } - { \stemup \Shift [b8 fis8] b2 ~ | + { \stemup \shifton [b8 fis8] b2 ~ | [b8 a!16 gis16] a2 ~ | a4 gis2 } { \stemdown fis2. ~ | @@ -130,11 +138,10 @@ fuga2_right = \melodic { fuga2_left = \melodic { \$fuga2_commands - \octave c; \clef bass; % 15 - \multi 2 < + \type Staff < { \stemdown b2 \stemup ais4 | b2 b4 } { \stemdown s2 e4 | @@ -147,7 +154,6 @@ fuga2_left = \melodic { fuga2_pedal = \melodic { \$fuga2_commands - \octave c; \clef bass; % 15 @@ -159,7 +165,7 @@ fuga2_pedal = \melodic { } breakmusic = \melodic { - %\meter 4/4; + %\time 4/4; r1 } @@ -167,7 +173,7 @@ breakmusic = \melodic { % these should be two separate scores... \score{ \type Score < - \type Grand_staff < + \type GrandStaff < \type Staff = treble { \praeludium_right \breakmusic \fuga2_right } \type Staff = bass { diff --git a/input/rhythm.ly b/input/rhythm.ly index e0a019dbbf..a9624effb9 100644 --- a/input/rhythm.ly +++ b/input/rhythm.ly @@ -7,26 +7,26 @@ TestedFeatures = "multiple meters, beaming, unsynced bars, userdefd engravers"; -\version "0.1.15"; +\version "1.0.0"; -ritme = \melodic{ %\octave ; +ritme = \melodic\transpose c'' { \partial 8; - \octave c'; - \meter 4/4; + + \time 4/4; c8 | [a8~ a8. a8 a16 a16 a16] c4. | % watch the beams! r32 r32 r16 r8 r4 r2 | - \meter 5/16; + \time 5/16; % divide measure in 5 equal parts. Usually it 2+3 or 3+2 \grouping 16*5 ; [c8 c16 c8 ] | % watch THIS! [5/4 c16 c16 c16 c16]1/1 | - \meter 2/8; + \time 2/8; c4 | c4 c4 c4 c4 - \meter 4/4; + \time 4/4; c1 c1 c1 % [c16 c16 c16 c16 ] | @@ -37,22 +37,22 @@ ritme = \melodic{ %\octave ; another = - \melodic{ \meter 4/4; - c1. c1. c4 c4 c4 c4 \meter 4/4; c1 c1 c1 + \melodic{ \time 4/4; + c1. c1. c4 c4 c4 c4 \time 4/4; c1 c1 c1 } yanother = - \melodic{ \meter 4/4; + \melodic{ \time 4/4; c1 c1 c1 c4 c4 c4 c4 c1 c1 c1 } \score{ - \type Staff_group < + \type StaffGroup < \ritme \another - \type Rhythmic_staff { + \type RhythmicStaff { \yanother } > @@ -71,13 +71,13 @@ yanother = \consists "Vertical_align_engraver"; - \accepts "Staff_group"; + \accepts "StaffGroup"; \accepts "Staff"; \accepts "Lyrics"; - \accepts "Grand_staff"; + \accepts "GrandStaff"; } -Rhythmic_staff = \translator +RhythmicStaff = \translator { \type "Engraver_group_engraver"; nolines = "1"; diff --git a/input/scales.ly b/input/scales.ly index 397198f53e..6c18cddc2f 100644 --- a/input/scales.ly +++ b/input/scales.ly @@ -12,26 +12,25 @@ copyright = "public domain"; % scales with accents. % -\version "0.1.15"; +\version "1.0.0"; blah = \melodic { - \meter 6/8; - \octave c, ; + \time 6/8; +\transpose c { \clef "bass"; c4. d - \octave c ; +} c d \clef "violin" ; - \octave c' ; - \transpose d { e f } - \octave c'' ; +\transpose c'' { + \transpose d { e f } } +\transpose c''' { c4. d %ugr - |[6/9 a8 \< a a a a a a \! a a \ff \> ]1/1 | - \octave c' ; - |[6/9 a a a a a a a a \! a ]1/1 | - \octave c'' ; - - [6/9'c->-.-\fermata \< g,->-.-\fermata + |[6/9 a8 \< a a a a a a \! a a \ff \> ]1/1 | } + \transpose c'' { + [6/9 a a a a a a a a \! a ]1/1 | } + \transpose c''' { + [6/9 c,->-.-\fermata \< g,->-.-\fermata d->-.-\fermata a->-.-\fermata e'->-.-\fermata b'-. f''-. c'''->-.-\fermata \! g'''->-.-\fermata \> ]1/1 @@ -40,8 +39,8 @@ blah = \melodic { f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata a->-.-\fermata d->-.-\fermata g,->-.-\fermata \! c,->-.-\fermata ]1/1 - \octave c; - [6/9'c->-.-\fermata \< g,->-.-\fermata d->-.-\fermata + + [6/9 c,->-.-\fermata \< g,->-.-\fermata d->-.-\fermata a->-.-\fermata e'->-.-\fermata b'-. f''-. c'''->-.-\fermata \! g'''->-.-\fermata \> ]1/1 @@ -49,26 +48,27 @@ blah = \melodic { f''->-.-\fermata b'->-.-\fermata e'->-.-\fermata a->-.-\fermata d->-.-\fermata g,->-.-\fermata \! c,->-.-\fermata ]1/1 - \octave c' ; - \octave c' ; + } + \transpose c'' { [2/3 c g d' ]1/1 [2/3 d' g c ]1/1 [2/3 f c' g' ]1/1 - [2/3 g' c' f ]1/1 - \octave c ; + [2/3 g' c' f ]1/1 + } + \transpose c' { [2/3 c g d' ]1/1 [2/3 d' g c ]1/1 [2/3 f c' g' ]1/1 [2/3 g' c' f ]1/1 [2/3 g' c' f ]1/1 - \meter 4/4; + \time 4/4; -c1 +c1} r8-"text" r8^. r8_. r8 r8 r8 r8 r8 [c-> d-> e-> f->][g-> a-> b-> c'->] % 1 -\octave c'; [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^] -\octave c; [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^] +\transpose c'' { [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^]} + [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^] [c-. d-. e-. f-.][g-. a-. b-. c'-.] [c'-- b-- a-- g][f-- e-- d c--] % 5 [c-\portato d-\portato e-\portato f-\portato] @@ -86,5 +86,6 @@ c1 \score{ \melodic {\blah} \paper{ + castingalgorithm = \Wordwrap; } } diff --git a/input/scripts.ly b/input/scripts.ly index 31c227d576..bce1fb13ad 100644 --- a/input/scripts.ly +++ b/input/scripts.ly @@ -1,9 +1,9 @@ -\version "0.1.15"; +\version "1.0.0"; -blah = \melodic { - \octave c'; +blah = \melodic{ \transpose c'' { + c,4 ->-.-\fermata-"text" c ->-.-\fermata-"text" c' ->-.-\fermata-"text" @@ -43,9 +43,7 @@ blah = \melodic { \stemup b,---. c---. d---. e---. f---. g---. a---. b---. c'---. \stemboth - - \meter 4/4; - \octave c'; + \time 4/4; [c8 \< d e \! f][d' \> e' f' \! g'] [c-> \< d-> e-> \! f->][d'-> \> e'-> f'-> \! g'->] [c-^ \< d-^ e-^ \! f-^][d'-^ \> e'-^ f'-^ \! g'-^] @@ -60,7 +58,8 @@ blah = \melodic { [d'-\fermata \> e'-\fermata f'-\fermata \! g'-\fermata] [c-\lheel \< d-\lheel e-\lheel \! f-\lheel] [d'-\lheel \> e'-\lheel f'-\lheel \! g'-\lheel] -} + +}} \score{ diff --git a/input/test/Makefile b/input/test/Makefile index 9f29c9f5db..e09e760108 100644 --- a/input/test/Makefile +++ b/input/test/Makefile @@ -1,12 +1,11 @@ -# input/Makefile +# input/test/Makefile -# subdir level: -# depth = ../.. -# -include $(depth)/make/Mutopia.make +include $(depth)/make/Stepmake.make +include $(make-dir)/Mutopia.make -examples=font20 denneboom +examples=font20 hara-kiri grace mark denneboom + +include $(stepdir)/WWW.make -include $(depth)/make/WWW.make diff --git a/input/test/a.ly b/input/test/a.ly new file mode 100644 index 0000000000..45c13fc8b5 --- /dev/null +++ b/input/test/a.ly @@ -0,0 +1,54 @@ +\header{ +enteredby = "jcn"; +copyright = "PD"; +TestedFeatures = "This file tests Feta embedded slurs" + "(Feta definitively is not an abbreviation of Font-En-TjA)"; +} + +\version "1.0.0"; + +shortlong = \melodic\transpose c'{ + c4()c( c c | + c c c c | + c c c c | + \break + c c c )c | +} + +sl = \melodic\transpose c''{ + +% e4()e( a e | + e4 e( a e | + e e e e | + e e e a | + \break + e e g )e | +} + +broken = \melodic\transpose c'' { + c c c c() + c c c c( + c )c c c( + c c )c c( + )a' a' a' a'() + a' a' a' a'() + c( c c )c + c( c c )f, + f,( c c )c + f,( c c )f, +} + +\score{ + \melodic{ + \shortlong + \sl + \broken + } + \paper{ + indent = 0.0\pt; + %for broken! +% linewidth= 30.\mm; + castingalgorithm = \Wordwrap; + } +} + diff --git a/input/test/abbrev.ly b/input/test/abbrev.ly index c57aeabdae..2cb2d7b141 100644 --- a/input/test/abbrev.ly +++ b/input/test/abbrev.ly @@ -1,17 +1,20 @@ -\score{\melodic { +\score{ + \melodic \transpose c'''{ + \stemup +% \stemdown % default abbreviations c4 c4: c4:32 c4: c4 c2. - 'a1 - 'a1:32 - 'c4:8 c': 'c4:16 c': - [ 'c8:16 'c 'c 'c ] [ a a a a ] - [ 'c 'f 'b e ] - [ 'c16:32 'c 'c 'c ] [ a16:32 a a a ] + a,1 + a,1:32 + c,4:8 c': c,4:16 c': + [ c,8:16 c, c, c, ] [ a a a a ] + [ c, f, b, e ] + [ c,16:32 c, c, c, ] [ a16:32 a a a ] % % there's still some hairy beam bugfixing todo - [ c'8:16 g d 'a ] - [ c'16:32 g d 'a ] - [ 'c8:32 'f 'b e ] + [ c'8:16 g d a, ] + [ c,8:32 f, b, e ] +% [ c'16:32 g d a, ] [:32 c16 e] [:32 c16 e] [:16 c8 e] @@ -19,4 +22,8 @@ [:16 e2 g] [:16 e1 g] -}} + } + \paper{ + castingalgorithm = \Wordwrap; + } +} diff --git a/input/test/bar-scripts.ly b/input/test/bar-scripts.ly new file mode 100644 index 0000000000..55b4f4ea74 --- /dev/null +++ b/input/test/bar-scripts.ly @@ -0,0 +1,78 @@ + + + +onestaff = \type Staff = foo\melodic { + \property Staff.instr = instr + \property Staff.instrument = instrument \mark "B"; + c1 \mark "A"; \break c2 c2 \break +} + +grstaff = \melodic \type GrandStaff < + \type Staff = bar { + + \property Staff.instr = instr + + \mark "B"; \break c1 \mark "A"; c2 } + \type Staff = bufl { c1 c2 } +> + +scpaper = \paper {Score = \translator { + \type Score_engraver; + barScriptPadding = "2.0"; % dimension \pt + markScriptPadding = "4.0"; + barColumnPriority = "-4"; + markBreakPriority = "-4"; + barNumberBreakPriority = "-4"; + + \consists "Timing_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + \consists "Mark_engraver"; + \consists "Span_score_bar_engraver"; + \consists "Score_priority_engraver"; + \consists "Priority_horizontal_align_engraver"; + \consists "Vertical_align_engraver"; + + \accepts "ChoireStaff"; + \accepts "StaffGroup"; + \accepts "Staff"; + \accepts "RhythmicStaff"; + \accepts "Lyrics"; + \accepts "GrandStaff"; +}} + +stpaper =\paper{ +Staff = \translator { + \type "Line_group_engraver_group"; + defaultclef = violin; + barColumnPriority = "0"; + barNumberBreakPriority = "0"; + marginBreakPriority = "-4"; + + \consists "Bar_engraver"; + \consists "Clef_engraver"; + \consists "Key_engraver"; + \consists "Time_signature_engraver"; + \consists "Local_key_engraver"; + \consists "Staff_sym_engraver"; + \consists "Mark_engraver"; + \consists "Collision_engraver"; + \consists "Rest_collision_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + \consists "Separating_line_group_engraver"; + \consists "Staff_margin_engraver"; + \accepts "Voice"; +}} + +scscore = \score { \grstaff \paper { +\scpaper +}} + + +stscore = \score { \onestaff \paper { + \stpaper +}} + +\score {\stscore} +%\score {\scscore} diff --git a/input/test/beam-abbrev.fly b/input/test/beam-abbrev.fly new file mode 100644 index 0000000000..e65abb3444 --- /dev/null +++ b/input/test/beam-abbrev.fly @@ -0,0 +1,5 @@ +c'1:16 +\stemup +c4:8 c4:16 [c8:16 c:] [c,8:16 c'':] +\stemboth +[c,,8:16 c'':] diff --git a/input/test/beam-chord.ly b/input/test/beam-chord.ly index 0f6a295ebd..e0200c2744 100644 --- a/input/test/beam-chord.ly +++ b/input/test/beam-chord.ly @@ -1,14 +1,13 @@ \score{ - \melodic{ + \melodic\transpose c'{ \property Score.beamquantisation = \none - \octave c'; [a'8 - [c + [c [a'16 - [c + [c [a'32 - [c + [c } \paper{ castingalgorithm = \Wordwrap; diff --git a/input/test/beam-length.fly b/input/test/beam-length.fly new file mode 100644 index 0000000000..5c7d7a7ffa --- /dev/null +++ b/input/test/beam-length.fly @@ -0,0 +1,3 @@ +% beams should look the same + [d''8 d d] [d g d] + c c diff --git a/input/test/beam-pos.ly b/input/test/beam-pos.ly index 76030ec43e..6d32b96ef3 100644 --- a/input/test/beam-pos.ly +++ b/input/test/beam-pos.ly @@ -1,7 +1,7 @@ \score{ - \melodic{ + \melodic\transpose c''{ \property Score.beamquantisation = 3 % TEST - \octave c'; + [c8 c] [c c] [c c] [c c] [a' a'] [a' a'] [a' a'] [a' a'] [c16 c] [c c] [c c] [c c] diff --git a/input/test/beams.ly b/input/test/beams.ly index f3bb1637dc..686dca2388 100644 --- a/input/test/beams.ly +++ b/input/test/beams.ly @@ -6,15 +6,15 @@ copyright = "PD"; TestedFeatures = "beams and beamflags"; } -\version "0.1.15"; +\version "1.0.0"; \score{ < % \property Score.beamquantisation = \none - \type Grand_staff < - \melodic { - \octave c'; - \meter 8/4; + \type GrandStaff < + \melodic\transpose c' { + + \time 8/4; \stemup [c8 c'' a' f'] \stemup [c16 c'' a' f'] \stemup [c32 c'' a' f'] @@ -29,39 +29,39 @@ TestedFeatures = "beams and beamflags"; \stemup [g128 g g g] r32 - \octave c; - \stemboth; + \transpose c{ + \stemboth [c'8 c'] [b b] [a a] [g g] [f f] [e e] [c'16 c'] [b b] [a a] [g g] [f f] [e e] [c'32 c'] [b b] [a a] [g g] [f f] [e e] - [c'64 c'] [e e] + [c'64 c'] [e e]} } > < \melodic { - \octave c'; - \meter 8/4; +\transpose c' { + \time 8/4; \stemdown [a'8 a, c e] \stemdown [a'16 a, c e] \stemdown [a'32 a, c e] \stemdown [a'64 a, c e] \stemdown [a'128 a, c e] - r32 + r32} - \octave c; + \transpose c{ \stemdown [d''8 d'' d'' d''] \stemdown [d''16 d'' d'' d''] \stemdown [d''32 d'' d'' d''] \stemdown [d''64 d'' d'' d''] \stemdown [d''128 d'' d'' d''] - r32 + r32} - \octave c''; - \stemboth; + \transpose c''{ + \stemboth [a8 a] [b b] [c' c'] [d' d'] [e' e'] [f' f'] [a16 a] [b b] [c' c'] [d' d'] [e' e'] [f' f'] [a32 a] [b b] [c' c'] [d' d'] [e' e'] [f' f'] - [a64 a] [f' f'] + [a64 a] [f' f']} } > > diff --git a/input/test/broken.ly b/input/test/broken.ly index 16b44a6f6e..8f33fb5490 100644 --- a/input/test/broken.ly +++ b/input/test/broken.ly @@ -5,18 +5,18 @@ TestedFeatures = "This file tests Feta embedded slurs" "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.15"; +\version "1.0.0"; shortlong = \melodic{ c4()c( c c | c c c c | c c c c | - \break; + \break c c c )c | } -broken = \melodic{ - \octave c''; +broken = \melodic\transpose c''{ + c c c c() c c c c( c )c c c( @@ -24,9 +24,9 @@ broken = \melodic{ )a' a' a' a'() a' a' a' a'() c( c c )c - c( c c )'f + c( c c )f, f,( c c )c - f,( c c )'f + f,( c c )f, } \score{ diff --git a/input/test/clefs.ly b/input/test/clefs.ly index 3c14564347..a49133116b 100644 --- a/input/test/clefs.ly +++ b/input/test/clefs.ly @@ -1,17 +1,17 @@ \score { - \melodic{ \octave c'; - \clef "violin"; c1^"{violin}" \bar "||"; - \clef "french";c1^"{french}" \bar "||"; - \clef "soprano";c1^"{soprano}" \bar "||"; - \clef "mezzosoprano";c1^"{mezzosoprano}" \bar "||"; - \clef "alto";c1^"{alto}" \bar "||"; - \clef "tenor";c1^"{tenor}" \bar "||"; - \clef "baritone";c1^"{baritone}" \bar "||"; - \clef "varbaritone";c1^"{varbaritone}" \bar "||"; - \clef "G_8";c1^"{sub 8?}" \bar "||"; - \clef "G^8";c1^"{sup 8?}" \bar "|."; - \clef "bass";c1^"{bass}" \bar "||"; - \clef "subbass";c1^"{subbass}" \bar "|."; + \melodic{ + \clef "violin"; c'1^"{violin}" \bar "||"; + \clef "french";c'1^"{french}" \bar "||"; + \clef "soprano";c'1^"{soprano}" \bar "||"; + \clef "mezzosoprano";c'1^"{mezzosoprano}" \bar "||"; + \clef "alto";c'1^"{alto}" \bar "||"; + \clef "tenor";c'1^"{tenor}" \bar "||"; + \clef "baritone";c'1^"{baritone}" \bar "||"; + \clef "varbaritone";c'1^"{varbaritone}" \bar "||"; + \clef "G_8";c'1^"{sub 8?}" \bar "||"; + \clef "G^8";c'1^"{sup 8?}" \bar "|."; + \clef "bass";c'1^"{bass}" \bar "||"; + \clef "subbass";c'1^"{subbass}" \bar "|."; } \paper{ } diff --git a/input/test/collisions.ly b/input/test/collisions.ly index 6ab2e5f41e..ade5a27a95 100644 --- a/input/test/collisions.ly +++ b/input/test/collisions.ly @@ -5,13 +5,13 @@ enteredby = "HWN,JCN"; copyright = "public domain"; Tested = "test the Collision resolution "; } -\version "0.1.15"; +\version "1.0.0"; two_voice = \melodic - \multi 2 < - { \stemdown \octave c'; + \type Staff < + { \stemdown c4 d e f g2~ g4 a [c8 d e f] c2| } { \stemup g4 f e g ~ g2 g2 c4 g4 g2 } @@ -19,9 +19,9 @@ two_voice = \melodic > two_voice_steminvert = \melodic - \multi 2 < + \type Staff < { - \octave c'; \stemup + \stemup % the f and g on 4th beat are exceptionally ugh. c4 d e f g2 g4 a | } { \stemdown @@ -30,7 +30,7 @@ two_voice_steminvert = \melodic > three_voice = \melodic - \multi 2 < + \type Staff < { \stemup g4 f e f g a g2 } { \stemup \property Voice.hshift = 1 @@ -41,7 +41,7 @@ three_voice = \melodic rests = \melodic - \multi 2 < + \type Staff < { \stemup | r8 r r r r r r r [c' b a g] [f e d c] @@ -53,21 +53,20 @@ rests = \melodic > restsII = \melodic { - \octave c'; - \multi 2 < + \type Staff < { \stemup g' f' e' d' c' b a g f e d c } { \stemdown r r r r r r r r r r r r } > - \multi 2 < + \type Staff < { \stemup r r r r r r r r r r r r } { \stemdown c d e f g a b c' d' e' f' g' } > r8 r4 - \multi 2 < r8 r8 > - \multi 2 < r8 r8 r8 > - \multi 2 < r8 r8 r8 r8 > - \multi 2 < r r > - \multi 2 < r r r > + \type Staff < r8 r8 > + \type Staff < r8 r8 r8 > + \type Staff < r8 r8 r8 r8 > + \type Staff < r r > + \type Staff < r r r > \stemup [c''8 r8 c''8 c''8] [c8 r8 c8 c8] @@ -77,7 +76,7 @@ restsII = \melodic { } \score{ - { \two_voice + \melodic \transpose c' { \two_voice \two_voice_steminvert \three_voice \rests diff --git a/input/test/denneboom.ly b/input/test/denneboom.ly index 23ae35e3ba..7dd60edfb8 100644 --- a/input/test/denneboom.ly +++ b/input/test/denneboom.ly @@ -7,7 +7,7 @@ TestedFeatures = "This file tests silly line shapes"; \include "paper20.ly" -\version "0.1.15"; +\version "1.0.0"; oden = \lyric{ O8 | @@ -33,8 +33,7 @@ ugloeit = \lyric{ licht8. ge-16 spreid.4 _8 } -oboom = \melodic{ - \octave c'; +oboom = \melodic\transpose c''{ g,8 | c8. c16 c4. d8 | e8. e16 e4. e8 | @@ -42,8 +41,7 @@ oboom = \melodic{ d8. c16 c4 r8 } -bos = \melodic{ - \octave c'; +bos = \melodic\transpose c''{ g8 | g e a4. g8 | g8. f16 f4 r8 f8 | @@ -52,7 +50,7 @@ bos = \melodic{ } global = \melodic{ - \meter 3/4; + \time 3/4; \partial 8; \skip 4*48; \bar "|."; diff --git a/input/test/find-quarts.ly b/input/test/find-quarts.ly new file mode 100644 index 0000000000..7952b0f1bc --- /dev/null +++ b/input/test/find-quarts.ly @@ -0,0 +1,8 @@ +\score{ + \melodic \relative c { + c d c f c g c b, c g, c f, c c'' c +% run with find-quarts should suggest: +% c d c f c g' c, b c g c f, c' c'' c,, + } +} + diff --git a/input/test/font-body.ly b/input/test/font-body.ly index c9fbb81382..be1e3f0d98 100644 --- a/input/test/font-body.ly +++ b/input/test/font-body.ly @@ -1,9 +1,9 @@ -\version "0.1.15"; -FontBody= \melodic{ - \octave c'; +\version "1.0.0"; + +FontBody= \melodic\transpose c''{ \bar "|:"; - \meter 4/4; - \multi 2 < { \stemup e'\longa a\breve | } + \time 4/4; + \type Staff < { \stemup e'\longa a\breve | } { \stemdown c1 \clef "bass"; b,, \clef "violin"; c' a' c2 \clef "alto"; g c' \clef "violin"; a' @@ -18,36 +18,38 @@ FontBody= \melodic{ [c \< d e f] [as' ges' f' e'] [cis' dis' c' des'] [cisis' disis' \! ceses' deses'] | \clef "bass"; + r\longa * 1/4 r\breve *1/2 r1 r2 r4 r8 r16 r32 r64 r128 r128 | - \multi 2 < { \stemup r2 r2} {\stemdown c c }> - \multi 2 < { \stemup c,,1 } {\stemdown r1}> + \type Staff < { \stemup r2 r2} {\stemdown c c }> + \type Staff < { \stemup c,,1 } {\stemdown r1}> \stemboth \clef "violin"; e8_. g'8-> e16^^ g'16_^ e32 _| g'32^| g''32-\ltoe g''32-\lheel e64-\rtoe g'64-\rheel c4... | - \octave c''; - \meter 4/4; - \textstyle "finger"; - c4^"1" d^"2" e^"3" f^"4" g^"5" - - % Music to the Martians! - < bes4^"6" e_"7" c_"8" > - a^"0"_"9" - - a'^\flageolet - \textstyle "roman"; - \meter 1/2; a2 | - \meter 3/2; < a1. - { s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} > - | - \meter 2/4; a2 | - \meter 5/4; a1.. | - \meter 6/8; a2. | - \meter 7/8; a2.. | - \meter 9/8; a1... | - \meter 12/8; a1. | - \meter 12/4; - r1. r2. r4. r8. r16. r32. r64. r64. | + \transpose c'{ + \time 4/4; + \property Voice . textstyle = "finger" + c4^"1" d^"2" e^"3" f^"4" g^"5" + + % Music to the Martians! + < bes4^"6" e_"7" c_"8" > + a^"0"_"9" + + a'^\flageolet + \property Voice . textstyle = "roman" + \time 1/2; a2 | + \time 3/2; < a1. + { s4 \ppp \< s4 \! s4 \fff s4 \> s4 \! s4\ppp} > + | + \time 2/4; a2 | + \time 5/4; a1.. | + \time 6/8; a2. | + \time 7/8; a2.. | + \time 9/8; a1... | + \time 12/8; a1. | + \time 12/4; + r1. r2. r4. r8. r16. r32. r64. r64. | } +} diff --git a/input/test/font.ly b/input/test/font.ly index 1b72842cd6..2063e9fb96 100644 --- a/input/test/font.ly +++ b/input/test/font.ly @@ -7,7 +7,7 @@ description = "This file tests the Feta music font"; % "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.15"; +\version "1.0.0"; \include "font-body.ly" \score{ diff --git a/input/test/font16.ly b/input/test/font16.ly index a79a64d7c4..9b2d190f79 100644 --- a/input/test/font16.ly +++ b/input/test/font16.ly @@ -7,7 +7,7 @@ description = "This file tests the Feta music font"; % "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.15"; +\version "1.0.0"; \include "font-body.ly" \score{ diff --git a/input/test/font20.ly b/input/test/font20.ly index e78f752bd4..d0884925a7 100644 --- a/input/test/font20.ly +++ b/input/test/font20.ly @@ -8,13 +8,12 @@ TestedFeatures = "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\include "paper20.ly" \include "font-body.ly" + \score{ - \FontBody + \type Staff { \FontBody} \paper{ - \paper_twenty linewidth = 17.5 \cm; gourlay_maxmeasures =5.; } - } +} diff --git a/input/test/gourlay.ly b/input/test/gourlay.ly index 0e83b364b1..9d82c7aa42 100644 --- a/input/test/gourlay.ly +++ b/input/test/gourlay.ly @@ -4,7 +4,7 @@ copyright = "PD"; TestedFeatures = "This file tests some nasty Gourlay spacings"; } -\version "0.1.15"; +\version "1.0.0"; %{ @@ -13,10 +13,9 @@ This is taken from [Gourlay]'s paper on breaking lines %} \score{ - \melodic \multi 2 < \octave c''; + \melodic \type Staff \transpose c''< { \stemup; d2 d | d d | d4 d2. | \break; c1 } - \octave c'; - { \stemdown; g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | c1 } + \transpose c, { \stemdown; g4 g g g | \[2/3 g2 g2 g2 \] | g4. g8 g2 | c1 } > \paper{ linewidth = 8.\cm; diff --git a/input/test/grace.ly b/input/test/grace.ly new file mode 100644 index 0000000000..deec5f44f3 --- /dev/null +++ b/input/test/grace.ly @@ -0,0 +1,27 @@ + +\include "table13.ly"; +\include "table16.ly"; + +\score{ + < + \type Staff = a \melodic\relative c < +% {\grace b''8 \graceat a4 \ecarg g fis2 | a2 a } + {\tiny b''8*1/16 \normalsize a4*31/32 g fis2 | a2 a } + > + \type Staff = b \melodic\relative c < +% {\grace g''16 b16 \graceat a4 \ecarg g fis2 | } + {\tiny g''16*1/16 b16*1/16 \normalsize a4*31/32 g fis2 | a1 } + > + \type Staff = c \melodic\relative c < +% {\grace [2/48 g''16 b g]/1 \graceat a4 \ecarg g fis2 | a1 } + {\tiny [2/48 g''16 b g]/1 \normalsize a4*31/32 g fis2 | a1 } + > + > + \paper { + linewidth = 120.0\mm; + -2 = \symboltables { \table_thirteen } + -1 = \symboltables { \table_sixteen } + + } +} + diff --git a/input/test/hara-kiri.ly b/input/test/hara-kiri.ly index 4a63bd9367..7913177956 100644 --- a/input/test/hara-kiri.ly +++ b/input/test/hara-kiri.ly @@ -1,36 +1,85 @@ + +toeter_i = \melodic\relative c { + \property Staff.instrument = "Toeters" + \property Staff.instr = "Ttr." + c'''4 c c c \break + d d d d \break + R1 \break + \voiceone + e4 e e e \break + \onevoice + f f f f \break + g g g g +} + +toeter_ii = \melodic \relative c { + c''4 c c c \break + d d d d \break + R1 \break + \voicetwo + e4 e e e \break + \onevoice + f f f f \break + g g g g +} + +toeters = \type StaffGroup = xtoeters < + \type Staff = toeters < + \toeter_i + \toeter_ii + > +> + +zager = \type Staff = zager \melodic \relative c { + \clef bass; + \property Staff.instrument = "Zager" + \property Staff.instr = "Zag." + c4 d e f \break + \property Staff.instr = "Zag. \& Zog." + f e d c \break + c d e f \break + \property Staff.instr = "Zag." + \voiceone + f e d c \break + \onevoice + c d e f \break + f e d c +} + +zoger = \type Staff = zoger \melodic \relative c { + \clef bass; + \property Staff.instrument = "Zoger" + \property Staff.instr = "Zog." + c4 d e f \break + \skip 1*2; +% \staffone + \translator Staff=zager + \voicetwo + c2 g2\break + \onevoice + a4 b c d \break + \skip 1*1; +} + +default_paper = \include "score-paper.ly"; + +zagers = \type GrandStaff < + \zager + \zoger +> + \score{ - \melodic{ - c4 c c c \break - d d d d \break - R1*4 \break - e4 e e e \break - f f f f \break - } + < + \type StaffGroup = toeters < + \toeters + > + \type StaffGroup = zagers < + \zagers + > + > \paper{ linewidth = 40.0\mm; - -% this is broken: edit init/engraver.ly -% -%{ -Staff = \translator { - \type "Engraver_group_engraver"; - defaultclef = violin; - - \consists "Bar_engraver"; - \consists "Clef_engraver"; - \consists "Key_engraver"; - \consists "Meter_engraver"; - \consists "Local_key_engraver"; - \consists "Staff_sym_engraver"; - \consists "Collision_engraver"; - \consists "Rest_collision_engraver"; - \consists "Bar_column_engraver"; - \consists "Bar_number_engraver"; - - \consists "Separating_line_group_engraver"; -% \consists "Line_group_engraver"; - \consists "Hara_kiri_line_group_engraver"; -%} - } } } + + diff --git a/input/test/keys.ly b/input/test/keys.ly new file mode 100644 index 0000000000..9c5bd3623b --- /dev/null +++ b/input/test/keys.ly @@ -0,0 +1,11 @@ +%{ +test key itemv breaking +%} +\score { + \melodic + { + \key bes; c1 \key c; c1 + \break + \key bes; c1 \key d;\break c1 + } +} diff --git a/input/test/knee.ly b/input/test/knee.ly index f43487c34f..eedb742039 100644 --- a/input/test/knee.ly +++ b/input/test/knee.ly @@ -1,7 +1,6 @@ -\version "0.1.15"; +\version "1.0.0"; \score{ - \melodic{ - \octave relative; + \melodic\relative c'{ [c16 \stemdown c'' \stemboth c,, d] \stemdown [d'' a \stemboth c,, g,] \stemup [g c' \stemboth a'' d'] diff --git a/input/test/mark.ly b/input/test/mark.ly new file mode 100644 index 0000000000..29fdba15fa --- /dev/null +++ b/input/test/mark.ly @@ -0,0 +1,23 @@ +global = \melodic { + s1 | \mark "A"; + s1*2 | \mark "'12"; +} + +one = \melodic\relative c{ + c'' c c c + c c c c + c c c c +} + +two = \melodic\relative c{ + b' b b b + b b b b + b b b b +} + +\score{ + < \global \one \two > + \paper { + \include "score-bar-numbering.ly"; + } +} diff --git a/input/test/multi-rest.ly b/input/test/multi-rest.ly index 691427bd49..aa41f4496c 100644 --- a/input/test/multi-rest.ly +++ b/input/test/multi-rest.ly @@ -1,4 +1,4 @@ -voice_one = \melodic { \octave c'; \stemup +voice_one = \melodic\transpose c' { \stemup R1 * 2 | f'4-. r r2 | R1 * 3 | f'4-. r r2 | R1 * 3 | es'4-. r r2 | r1 | @@ -9,7 +9,7 @@ voice_one = \melodic { \octave c'; \stemup } voice_two = \melodic - { \transpose 'c { \stemdown + { \transpose c, { \stemdown R1 * 2 | f'4-. r r2 | R1 * 3 | f'4-. r r2 | R1 * 3 | es'4-. r r2 | r1 | diff --git a/input/test/multi-slope.fly b/input/test/multi-slope.fly new file mode 100644 index 0000000000..3e63dd367f --- /dev/null +++ b/input/test/multi-slope.fly @@ -0,0 +1 @@ + [c8 c16 c16] diff --git a/input/test/ossia.ly b/input/test/ossia.ly new file mode 100644 index 0000000000..62cb305290 --- /dev/null +++ b/input/test/ossia.ly @@ -0,0 +1,3 @@ +\score { +\melodic { c1 c1 < {\clef "treble"; c1 c1 } \type Staff=stb{ c1 c1}>} +} diff --git a/input/test/out/dummy.dep b/input/test/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/input/test/score-bar-scripts.ly b/input/test/score-bar-scripts.ly new file mode 100644 index 0000000000..a27deda9f8 --- /dev/null +++ b/input/test/score-bar-scripts.ly @@ -0,0 +1,75 @@ + + + +onestaff = \type Staff = foo\melodic { + \property Staff.instr = instr + \property Staff.instrument = instrument \mark "B"; c1 \mark "A"; \break c2 c2 \break } + +grstaff = \melodic \type GrandStaff < + \type Staff = bar { + + \property Staff.instr = instr + + \mark "B"; \break c1 \mark "A"; c2 } + \type Staff = bufl { c1 c2 } > + +scpaper = \paper {Score = \translator { + \type Score_engraver; + barScriptPadding = "2.0"; % dimension \pt + markScriptPadding = "4.0"; + barColumnPriority = "-4"; + markBreakPriority = "-4"; + barNumberBreakPriority = "-4"; + + \consists "Timing_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + \consists "Mark_engraver"; + \consists "Span_score_bar_engraver"; + \consists "Score_priority_engraver"; + \consists "Priority_horizontal_align_engraver"; + \consists "Vertical_align_engraver"; + + \accepts "ChoireStaff"; + \accepts "StaffGroup"; + \accepts "Staff"; + \accepts "RhythmicStaff"; + \accepts "Lyrics"; + \accepts "GrandStaff"; +}} + +stpaper =\paper{ +Staff = \translator { + \type "Line_group_engraver_group"; + defaultclef = violin; + barColumnPriority = "0"; + + marginBreakPriority = "-4"; + + \consists "Bar_engraver"; + \consists "Clef_engraver"; + \consists "Key_engraver"; + \consists "Time_signature_engraver"; + \consists "Local_key_engraver"; + \consists "Staff_sym_engraver"; + \consists "Mark_engraver"; + \consists "Collision_engraver"; + \consists "Rest_collision_engraver"; + \consists "Bar_column_engraver"; + \consists "Bar_number_engraver"; + \consists "Separating_line_group_engraver"; + \consists "Staff_margin_engraver"; + \accepts "Voice"; +}} + +scscore = \score { \grstaff \paper { +\scpaper +}} + + +stscore = \score { \onestaff \paper { + \stpaper +}} + +%\score {\stscore} +\score {\scscore} diff --git a/input/test/sizes.fly b/input/test/sizes.fly new file mode 100644 index 0000000000..00923366a4 --- /dev/null +++ b/input/test/sizes.fly @@ -0,0 +1,10 @@ +% to see the magic: uncomment size stuff in init/paper20.ly + +c'4 c4 + +\property Voice.fontsize= "-2" +b16 * 1 / 2 ( +\property Voice.fontsize= "0" ) +g4 *31/32 + +a a g2 diff --git a/input/test/sleur.ly b/input/test/sleur.ly index d0bdc34543..7fec239ef5 100644 --- a/input/test/sleur.ly +++ b/input/test/sleur.ly @@ -5,7 +5,7 @@ TestedFeatures = "This file tests Feta embedded slurs" "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.15"; +\version "1.0.0"; shortlong = \melodic{ c4()c( c c | @@ -15,20 +15,20 @@ shortlong = \melodic{ c c c )c | } -dirs = \melodic { - \octave c'; +dirs = \melodic\transpose c' { + c'1() g' () c () g () c | } complex = \melodic{ - \octave c'; - c,16( e,( g,( b,( d( f( a( c'())))))))c4 c4 | - \octave c'''; - c,16( a( f( d( b,( g,( e,( c,())))))))c4 c4 | +\transpose c'{ + c,16( e,( g,( b,( d( f( a( c'())))))))c4 c4 |} +\transpose c'''{ + c,16( a( f( d( b,( g,( e,( c,())))))))c4 c4 |} } -over = \melodic{ - \octave c'; +over = \melodic\transpose c'{ + e( g' g' )e e( a' a' )e @@ -51,8 +51,8 @@ over = \melodic{ e( c'' f )e } -under = \melodic{ - \octave c'; +under = \melodic\transpose c'{ + \stemdown f'( \stemboth d d \stemdown )f' f'( \stemboth c c \stemdown )f' @@ -76,8 +76,8 @@ under = \melodic{ f'( e, f )f' } -eccentric = \melodic{ - \octave c'; +eccentric = \melodic\transpose c'{ + \stemup \[4/7 f( a' f f f f )f \] | \[4/7 f( f f f f a' )f \] | @@ -86,8 +86,7 @@ eccentric = \melodic{ \[4/7 e'( e' e' e' e' c )e' \] | } -tiltup = \melodic{ - \octave c'; +tiltup = \melodic\transpose c'{ e( c'' c'' )e' \stemup e( c'' c'' )e' @@ -101,8 +100,7 @@ tiltup = \melodic{ f'( a, a, )f'' } -tiltdown = \melodic{ - \octave c'; +tiltdown = \melodic\transpose c'{ e'( c'' c'' )e \stemup e'( c'' c'' )e @@ -116,8 +114,7 @@ tiltdown = \melodic{ f''( a, a, )f' } -broken = \melodic{ - \octave c''; +broken = \melodic\transpose c''{ c c c c() c c c c( c )c c c( @@ -125,13 +122,12 @@ broken = \melodic{ )a' a' a' a'() a' a' a' a'() c( c c )c - c( c c )'f + c( c c )f, f,( c c )c - f,( c c )'f + f,( c c )f, } -blend = \melodic{ - \octave c'; +blend = \melodic\transpose c'{ e( c'' c'' )e \stemup f'( c'' c'' )f' @@ -152,8 +148,8 @@ blend = \melodic{ } -bug = \melodic{ - \octave c'; +bug = \melodic\transpose c'{ + a()g( f )e b'()a'( g' )f' g( f' e' )d' @@ -161,15 +157,14 @@ bug = \melodic{ c' () b () c' c' } -clipping = \melodic{ - \octave c'; +clipping = \melodic\transpose c'{ \stemboth c( c''' c''')c c( c''' c )c'' c''( c c''' )c \stemdown c( \stemup c,,, c,,, \stemdown )c - c( \stemup c,,, c \stemdown )''c + c( \stemup c,,, c \stemdown )c,, c,,( \stemup c c,,, \stemdown )c } diff --git a/input/test/slur-bug.ly b/input/test/slur-bug.ly new file mode 100644 index 0000000000..583415ceef --- /dev/null +++ b/input/test/slur-bug.ly @@ -0,0 +1,8 @@ +% bug +% excentric slur can't handle this ... +\score{ + \melodic{ + \stemdown + \[4/5c8( c f,, c c\]1/1 c c c )c | + } +} diff --git a/input/test/slur-damping.ly b/input/test/slur-damping.ly index 663487904a..7b4f14bf87 100644 --- a/input/test/slur-damping.ly +++ b/input/test/slur-damping.ly @@ -1,9 +1,10 @@ % test damping +\version "1.0.0"; \score{ - \melodic{ - \octave relative; - c'()b' ~ 'b c + \melodic\relative c'{ + + c'()b' ~ b, c c c c c c c c c c c c c diff --git a/input/test/slur-swap.ly b/input/test/slur-swap.ly new file mode 100644 index 0000000000..6c09f424d3 --- /dev/null +++ b/input/test/slur-swap.ly @@ -0,0 +1,18 @@ +% urg, the direction of the slur gets swapped! +\score{ + \melodic\relative c{ + \slurup + \stemup + [e'8( c' a b] + \stemdown + [e c a )e] \break + \stemup + [e8( c' a b] + \stemdown + [e c a )e] e1 + } + \paper{ + indent = 0.\mm + linewidth=80.\mm + } +} diff --git a/input/test/slurs.ly b/input/test/slurs.ly index aeb78c5ac8..d723fbb618 100644 --- a/input/test/slurs.ly +++ b/input/test/slurs.ly @@ -1,33 +1,27 @@ -\version "0.1.15"; +\version "1.0.0"; \score{ - \melodic{\octave c'; + \melodic\transpose c'{ c,4 ~ c, c'' ~ c'' ~ g ~ c ~ d ~ e ~ f ~ g ~ a ~ b ~ c, ~ c < c e ( > <)d f> - \octave c''; + \transpose c'' < c e ( > <)d f> - \octave c'; + \transpose c' < c e ( > <)d' f'> < { c ~ d } { e ~ f } > -% \multi 2 < +% \type Staff < % { \stemup c'8 ~g ~e( ~c~ [c'~ g' e' )c'] c'' ~ c'' c~c } % { \stemdown c (e g )c'~( [b a g )d] r2 } % > { -% \octave c'; -% c,16( e,( g,( b,( d( f( a( c'~ )))))))c4 c4 | -% \octave c'''; -% c,16( a( f( d( b,( g,( e,( c,~ )))))))c4 c4 | -% \octave c'; -% c'1() g' () c () g () c | c4()c( c c | c c c c | diff --git a/input/test/spacing.ly b/input/test/spacing.ly index 3af80b1eb0..e8c72ce3f7 100644 --- a/input/test/spacing.ly +++ b/input/test/spacing.ly @@ -6,10 +6,10 @@ copyright = "public domain"; TestedFeatures = "This file tests various spacings"; } -\version "0.1.15"; +\version "1.0.0"; multipart = \melodic{ - \multi 3 < + \type StaffGroup < { c4 c diff --git a/input/test/stem.ly b/input/test/stem.ly index c707e14ef3..6df99dd73f 100644 --- a/input/test/stem.ly +++ b/input/test/stem.ly @@ -8,29 +8,28 @@ of beams"; } -\version "0.1.15"; +\version "1.0.0"; beamintervals = \melodic{ - \meter 7/4; + \time 7/4; \stemup - \octave c'; +\transpose c'{ [ c8 d ] [ c e ] [ c f ] [ c g ] [ c a ] [ c b ] [ c c' ] | [ c b, ] [ c a, ] [ c g, ] [ c f, ] [ c e, ] [ c d, ] [ c c, ] | - \octave c''; + }\transpose c''{ [ c b, ] [ c a, ] [ c g, ] [ c f, ] [ c e, ] [ c d, ] [ c c, ] | - \stemdown - \octave c'''; + \stemdown} + \transpose c'''{ [ c b, ] [ c a, ] [ c g, ] [ c f, ] [ c e, ] [ c d, ] [ c c, ] | - \octave c''; +} \transpose c''{ [ c b, ] [ c a, ] [ c g, ] [ c f, ] [ c e, ] [ c d, ] [ c c, ] | [ c d ] [ c e ] [ c f ] [ c g ] [ c a ] [ c b ] [ c c' ] | - } + }} \score{ - \melodic{ - \octave c'; + \melodic\transpose c'{ \stemup - \meter 17/4; + \time 17/4; g,4 a, b, c d e f g a b c' d' e' f' g' a' b' | \stemdown b' a' g' f' e' d' c' b a g f e d c b, a, g, | diff --git a/input/test/test-lyrics.ly b/input/test/test-lyrics.ly index 4d42f97030..bc65c2442e 100644 --- a/input/test/test-lyrics.ly +++ b/input/test/test-lyrics.ly @@ -40,8 +40,8 @@ $quite_long_lyrics_staff = \type Lyrics = quite < \$quite_long > -melody = \melodic{ - \octave c'; +melody = \melodic +\transpose c'{ c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4 c4 e4 g4 e4 } diff --git a/input/test/tie-bug.ly b/input/test/tie-bug.ly new file mode 100644 index 0000000000..0cdf237204 --- /dev/null +++ b/input/test/tie-bug.ly @@ -0,0 +1,8 @@ + +% middle tie is wrong +\score{ + \melodic\relative c'{ + { + } +}} + diff --git a/input/test/tie.ly b/input/test/tie.ly index 2018b00868..4a708b9eb9 100644 --- a/input/test/tie.ly +++ b/input/test/tie.ly @@ -1,11 +1,11 @@ -tie = \melodic{ - \octave c''; +tie = \melodic\transpose c''{ + e4 ~ e e e ~ | e ~ a a a ~ | a d d d ~ | e e e e | - ''g ''g ''g ''g ~ | - ''g ''g ''g ''g | + g,, g,, g,, g,, ~ | + g,, g,, g,, g,, | } \score{ diff --git a/input/test/title.ly b/input/test/title.ly index cae3d93f9f..50209186cd 100644 --- a/input/test/title.ly +++ b/input/test/title.ly @@ -3,32 +3,38 @@ filename = "title.ly"; title = "Title"; subtitle = "Subtitle"; composer= "Composer (xxxx-yyyy)"; -opus = "Opus 0"; arranger = "Arranger"; copyright = "public domain"; enteredby = "jcn"; source = "urtext"; -piece = "Piece I"; instrument= "Instrument"; } +\version "1.0.0"; + \score{ - \melodic{ - \octave relative; + \melodic + \relative c'{ c' d e f f e d c \break c d e f f e d c } + \header{ + opus = "Opus 0"; + piece = "Piece I"; + override="Overdriven"; + } } -\header{ -piece = "Piece II"; -opus = "Opus 1"; -} \score{ - \melodic{ + \melodic + \relative c' { f' e d c c d e f \break f e d c c d e f } + \header{ + piece = "Piece II"; + opus = "Opus 1"; + } } diff --git a/input/test/transposing.fly b/input/test/transposing.fly new file mode 100644 index 0000000000..1af11261b2 --- /dev/null +++ b/input/test/transposing.fly @@ -0,0 +1,10 @@ +% btw: this is not how transposing is done in mudela, +% this is a transposing performer, i.e. for midi-output only +\property Staff.transposing = 0 c +\property Staff.transposing = 2 c +\property Staff.transposing = 4 c +\property Staff.transposing = 5 c +\property Staff.transposing = 7 c +\property Staff.transposing = 9 c +\property Staff.transposing = 11 c +\property Staff.transposing = 12 c diff --git a/input/test/transposition.ly b/input/test/transposition.ly new file mode 100644 index 0000000000..3c6dac9233 --- /dev/null +++ b/input/test/transposition.ly @@ -0,0 +1,64 @@ +%{ +Hi all, + +I have extend Mats' patches to allow accidental transposition: + \accidentals bes es fis; + = \transpose d => + \accidentals gis; + +As you can see in output the example file "test.ly" there are a few problems left: +- key undo (already in the Todo) +- "wrong" transposition: e.g. \transpose d of fis-major = gis-major (better as-major?). + The solution gis=as etc. would concern both note and key transposistion + +Eric +%} + +\header{ +title = "Test it"; +description = "Transposition Test file"; +enteredby = "Eric Bullinger"; +copyright = "public domain"; +} + + +\version "1.0.0"; + +vOne = \melodic \relative c''{ + \clef"violin"; + \key d; + \time 2/4 ; + d4 d | + \key fis; + fis4 fis | + \key es; + c4 c | +} + +vTwo = \melodic \relative c''\transpose d' { \vOne } + +vThree = \melodic \relative c''{ + \clef"violin"; + \accidentals fis cis; + \time 2/4 ; + d4 d | + \accidentals bes es fis; + fis4 fis | + \accidentals fis cis gis dis ais eis; + cis4 ais4 | +} + +vFour = \melodic \relative c''\transpose d' \vThree + +\score { + \type StaffGroup < + \vOne + \vTwo + \vThree + \vFour + > + \paper { linewidth= 130.\mm; } +} + + + diff --git a/input/test/updown.fly b/input/test/updown.fly new file mode 100644 index 0000000000..dfac8a1cf6 --- /dev/null +++ b/input/test/updown.fly @@ -0,0 +1,9 @@ +% this used to work: +% <{\voiceone e} +% {\voicetwo c}> + +% now we need: +\type Staff +<{\voiceone e} +{\voicetwo c}> + diff --git a/input/test/vertical-align.ly b/input/test/vertical-align.ly new file mode 100644 index 0000000000..bb479e3cc0 --- /dev/null +++ b/input/test/vertical-align.ly @@ -0,0 +1,33 @@ + +\score { +\melodic < + \type GrandStaff < { + \property GrandStaff . maxVerticalAlign = "60." + \property GrandStaff . minVerticalAlign = "35." + + c'1 \break c'''''1 + } + { c'1 \break c,,,,1} + > + +> + +\paper{ +Staff = \translator { + \type "Line_group_engraver_group"; + defaultclef = violin; + + \consists "Bar_engraver"; + + \consists "Key_engraver"; + \consists "Local_key_engraver"; + \consists "Time_signature_engraver"; + \consists "Staff_sym_engraver"; + \consists "Collision_engraver"; + \consists "Rest_collision_engraver"; + \consists "Separating_line_group_engraver"; + + \accepts "Voice"; +} +} +} diff --git a/input/tril.ly b/input/tril.ly index a09198ee97..f7d64a5676 100644 --- a/input/tril.ly +++ b/input/tril.ly @@ -5,7 +5,7 @@ TestedFeatures = "This file tests trills" "(Feta definitively is not an abbreviation of Font-En-TjA)"; } -\version "0.1.15"; +\version "1.0.0"; \score{ \melodic{ diff --git a/input/twinkle-pop.ly b/input/twinkle-pop.ly index 599749f934..eb2cd8e9a3 100644 --- a/input/twinkle-pop.ly +++ b/input/twinkle-pop.ly @@ -12,23 +12,23 @@ copyright = "public domain"; Tested Features lyrics and chords %} -\version "0.1.15"; +\version "1.0.0"; -melodie = \melodic { +melodie = \melodic\relative c { \clef"violin"; - \meter 2/4 ; - \octave c'; + \time 2/4 ; - c4^"C" c | g g | a^"F" a | g2^"C" | + c''4^"C" c | g' g | a^"F" a | g2^"C" | f4^"F" f | e^"C" e | d^"G7" d | c2^"C" | - g4^"G" g | f^"F" f | e^"C" e | d^"G7" d | + g'4^"G" g | f^"F" f | e^"C" e | d^"G7" d | g^"G" g | f^"F" f | e^"C" e | d^"G7" d | - c4^"C" c | g g | a^"F" a | g2^"C" | + c4^"C" c | g' g | a^"F" a | g2^"C" | f4^"F" f | e^"C" e | d^"G7" d | c2^"C" | } text = \lyric{ - \textstyle "italic"; + \property Lyrics . textstyle = "italic" + Ah!4 vous dir- ai_- je ma man2 Ce4 qui cau- se mon tour- ment2 Pa-4 pa veut que je rai- so- nne diff --git a/input/twinkle.ly b/input/twinkle.ly index ed7bb618b4..926f7abafb 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -15,63 +15,60 @@ copyright = "public domain"; Tested Features: lyrics, interleaving lyrics and staffs %} -\version "0.1.15"; +\version "1.0.0"; -melody = \melodic{ +melody = \melodic \relative c'' { \clef violin; - \octave c'; \property Staff.instrument = "alto sax" - c4 c | g g | a a | g g | - f f | e e | d d8.( e16 | )c2 | % :| + c4 c | g' g | a a | g g | + f f | e e | d d8.( e16 | )c2 | - g4 g | f f | e e | d d | + g'4 g | f f | e e | d d | g g | f f | e( e8. f16 | e4 )d | - c c | g g | a a | g g | - f f | e e | d d8.( e16 | )c2 % :| - \bar ":|"; + c c | g' g | a a | g g | + f f | e e | d d8.( e16 | )c2 | } -accompany = \melodic { +accompany = \melodic \relative c { \clef "bass"; - \octave c,; - c4 c' | e' c' | f' c' | e' c' | - d' b | c' a | f g | c2 | + c4 c' | e c | f c | e c | + d b | c a | f g | c,2 | - e'4 g | d g | c' g | b g | - e' g | d' g | c' c'8.( d'16 | c'4 )b | + e'4 g, | d' g, | c g | b g | + e' g, | d' g, | c c8.( d16 | c4 )b | - c c' | e' c' | f' c' | e' c' | - d' b | c' a | f g | c2 - \bar ":|"; + c, c' | e c | f c | e c | + d b | c a | f g | c,2 } global = \melodic { - \meter 2 / 4; - \skip 2*24; -% \bar "|."; - } + \time 2/4; + \skip 2*24; + \bar ":|"; +} tekst = \lyric{ Al-4 tijd is Kort- jak- je ziek,2 -% midden4 in_de week maar s,_zon- dags niet.2 + midden4 in_de week maar s,_zon- dags niet.2 % ugly hack: insertion of empty syllables creates columns on extra % moments. The net result is more spacing. % - midden8 _8 in_de8 _8 week4 maar s,_zon- dags niet.2 +% probably not necessary anymore +% midden8 _8 in_de8 _8 week4 maar s,_zon- dags niet.2 s,_Zon-4 dags gaat ze naar de kerk,2 met4 een boek vol zil- ver werk.2 Al-4 tijd is Kort- jak- je ziek,2 midden8 _8 in_de8 _8 week4 maar s,_zon- dags niet.2 } -%{ +%{ Ja inderdaad. Dit is geen educatieve danwel muzikaal verantwoorde tekst. Mogen wij ook af en toe ergens op afgeven? - %} + hegedraagjetekst = \lyric{ Al-4 tijd zuigt Bill Gates mijn piek,2 "\TeX"4 is slecht- ser dan mu- ziek.2 @@ -82,21 +79,18 @@ hegedraagjetekst = \lyric{ } texte = \lyric{ - -% \textstyle "italic" ; - \textstyle "roman" ; + \property Lyrics . textstyle" = "italic" +% \property Lyrics . textstyle" = "roman" Ah!4 vous dir- ai_- je ma man2 Ce4 qui cau- se mon tour- ment2 Pa-4 pa veut que je rai- sonne2 Comme4 un- e grand- e per- sonne2 Moi4 je dis que les bon- bons2 Val-4 ent mieux que la rai- son2 - } texti = \lyric{ - - \textstyle "roman"; + \property "Lyrics"."textstyle" = "roman" Twin-4 kle, twin- kle, lit- tle star,2 How4 I won- der what you are.2 Up4 a- bove the world so high,2 @@ -116,18 +110,15 @@ textii = \lyric{ } textiii = \lyric{ - Then4 the tra- veler in the dark2 Thanks4 you for your ti- ny spark;2 He_could4 not see which way to go,2 If4 you did not twin- kle so.2 Twin-4 kle, twin- kle, lit- tle star,2 How4 I won- der what you are!2 - } $top_lyrics = \type Lyrics = top < - \global \tekst > @@ -142,18 +133,17 @@ $bass_staff = \type Staff = bass < > $middle_lyrics = \type Lyrics = middle < - \global \texte > $bottom_lyrics = \type Lyrics = bottom < - \global +% \global \texti \textii \textiii > -$grand_staff = \type Staff_group < +$grand_staff = \type GrandStaff < \$treble_staff \$middle_lyrics \$bass_staff @@ -168,8 +158,6 @@ $grand_staff = \type Staff_group < \$bottom_lyrics > \paper{ - % use a lot of space, to avoid clashing syllables -% arithmetic_multiplier = 8.\pt; gourlay_maxmeasures = 14.0; } \midi{ diff --git a/intl/ChangeLog b/intl/ChangeLog new file mode 100644 index 0000000000..6bda59584e --- /dev/null +++ b/intl/ChangeLog @@ -0,0 +1,693 @@ +Sat Dec 2 22:51:38 1995 Marcus Daniels + + * cat-compat.c (textdomain): + Reverse order in which files are tried you load. First + try local file, when this failed absolute path. + +Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe + + * cat-compat.c (bindtextdomain): Add missing { }. + +Sun Nov 26 18:21:41 1995 Ulrich Drepper + + * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. + + * Makefile.in: + Add dummy `all' and `dvi' goals. Reported by Tom Tromey. + +Sat Nov 25 16:12:01 1995 Franc,ois Pinard + + * hash-string.h: Capitalize arguments of macros. + +Sat Nov 25 12:01:36 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Prevent files names longer than 13 + characters. libintl.h.glibc->libintl.glibc, + libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. + +Sat Nov 25 11:31:12 1995 Eric Backus + + * dcgettext.c: Fix bug in preprocessor conditionals. + +Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe + + * libgettext.h: Solaris cc does not understand + #if !SYMBOL1 && !SYMBOL2. Sad but true. + +Thu Nov 23 16:22:14 1995 Ulrich Drepper + + * hash-string.h (hash_string): + Fix for machine with >32 bit `unsigned long's. + + * dcgettext.c (DCGETTEXT): + Fix horrible bug in loop for alternative translation. + +Thu Nov 23 01:45:29 1995 Ulrich Drepper + + * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: + Some further simplifications in message number generation. + +Mon Nov 20 21:08:43 1995 Ulrich Drepper + + * libintl.h.glibc: Use __const instead of const in prototypes. + + * Makefile.in (install-src): + Install libintl.h.install instead of libintl.h. This + is a stripped-down version. Suggested by Peter Miller. + + * libintl.h.install, libintl.h.glibc: Initial revision. + + * localealias.c (_nl_expand_alias, read_alias_file): + Protect prototypes in type casts by __P. + +Tue Nov 14 16:43:58 1995 Ulrich Drepper + + * hash-string.h: Correct prototype for hash_string. + +Sun Nov 12 12:42:30 1995 Ulrich Drepper + + * hash-string.h (hash_string): Add prototype. + + * gettextP.h: Fix copyright. + (SWAP): Add prototype. + +Wed Nov 8 22:56:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): Forgot sizeof. + Avoid calling *printf function. This introduces a big overhead. + Patch by Roland McGrath. + +Tue Nov 7 14:21:08 1995 Ulrich Drepper + + * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. + + * finddomain.c (stpcpy): + Define substitution function local. The macro was to flaky. + + * cat-compat.c: Fix typo. + + * xopen-msg.sed, linux-msg.sed: + While bringing message number to right place only accept digits. + + * linux-msg.sed, xopen-msg.sed: Now that the counter does not have + leading 0s we don't need to remove them. Reported by Marcus + Daniels. + + * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in + dependency. Reported by Marcus Daniels. + + * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. + Generally cleanup using #if instead of #ifndef. + + * Makefile.in: Correct typos in comment. By Franc,ois Pinard. + +Mon Nov 6 00:27:02 1995 Ulrich Drepper + + * Makefile.in (install-src): Don't install libintl.h and libintl.a + if we use an available gettext implementation. + +Sun Nov 5 22:02:08 1995 Ulrich Drepper + + * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported + by Franc,ois Pinard. + + * libgettext.h: Use #if instead of #ifdef/#ifndef. + + * finddomain.c: + Comments describing what has to be done should start with FIXME. + +Sun Nov 5 19:38:01 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. + DISTFILES.common names the files common to both dist goals. + DISTFILES.gettext are the files only distributed in GNU gettext. + +Sun Nov 5 17:32:54 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Correct searching in derived locales. + This was necessary since a change in _nl_find_msg several weeks + ago. I really don't know this is still not fixed. + +Sun Nov 5 12:43:12 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This + might mark a special condition. + + * finddomain.c (make_entry_rec): Don't make illegal entry as decided. + + * Makefile.in (dist): Suppress error message when ln failed. + Get files from $(srcdir) explicitly. + + * libgettext.h (gettext_const): Rename to gettext_noop. + +Fri Nov 3 07:36:50 1995 Ulrich Drepper + + * finddomain.c (make_entry_rec): + Protect against wrong locale names by testing mask. + + * libgettext.h (gettext_const): Add macro definition. + Capitalize macro arguments. + +Thu Nov 2 23:15:51 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Test for pointer != NULL before accessing value. + Reported by Tom Tromey. + + * gettext.c (NULL): + Define as (void*)0 instad of 0. Reported by Franc,ois Pinard. + +Mon Oct 30 21:28:52 1995 Ulrich Drepper + + * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. + +Sat Oct 28 23:20:47 1995 Ulrich Drepper + + * libgettext.h: Disable dcgettext optimization for Solaris 2.3. + + * localealias.c (alias_compare): + Peter Miller reported that tolower in some systems is + even dumber than I thought. Protect call by `isupper'. + +Fri Oct 27 22:22:51 1995 Ulrich Drepper + + * Makefile.in (libdir, includedir): New variables. + (install-src): Install libintl.a and libintl.h in correct dirs. + +Fri Oct 27 22:07:29 1995 Ulrich Drepper + + * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. + + * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. + + * localealias.c: + Fix typo and superflous test. Reported by Christian von Roques. + +Fri Oct 6 11:52:05 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Correct some remainder from the pre-CEN syntax. Now + we don't have a constant number of successors anymore. + +Wed Sep 27 21:41:13 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Add libintl.h.glibc. + + * Makefile.in (dist-libc): Add goal for packing sources for glibc. + (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. + + * loadmsgcat.c: Forget to continue #if line. + + * localealias.c: + [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name + space clean. + + * dcgettext.c, finddomain.c: Better comment to last change. + + * loadmsgcat.c: + [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to + __fstat, __open, __close, __read, __mmap, and __munmap resp + to keep ANSI C name space clean. + + * finddomain.c: + [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. + + * dcgettext.c: + [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to + keep ANSI C name space clean. + + * libgettext.h: + Include sys/types.h for those old SysV systems out there. + Reported by Francesco Potorti`. + + * loadmsgcat.c (use_mmap): Define if compiled for glibc. + + * bindtextdom.c: Include all those standard headers + unconditionally if _LIBC is defined. + + * finddomain.c: Fix 2 times defiend -> defined. + + * textdomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. + + * gettext.c: + Include libintl.h instead of libgettext.h when compiling for glibc. + Get NULL from stddef.h if we compile for glibc. + + * finddomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * dcgettext.c: Include all those standard headers unconditionally + if _LIBC is defined. + + * dgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. + + * dcgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. + + * bindtextdom.c: + If compiled in glibc include libintl.h instead of libgettext.h. + +Mon Sep 25 22:23:06 1995 Ulrich Drepper + + * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. + Reported by Marcus Daniels. + + * cat-compat.c (bindtextdomain): + String used in putenv must not be recycled. + Reported by Marcus Daniels. + + * libgettext.h (__USE_GNU_GETTEXT): + Additional symbol to signal that we use GNU gettext + library. + + * cat-compat.c (bindtextdomain): + Fix bug with the strange stpcpy replacement. + Reported by Nelson Beebe. + +Sat Sep 23 08:23:51 1995 Ulrich Drepper + + * cat-compat.c: Include for stpcpy prototype. + + * localealias.c (read_alias_file): + While expand strdup code temporary variable `cp' hided + higher level variable with same name. Rename to `tp'. + + * textdomain.c (textdomain): + Avoid warning by using temporary variable in strdup code. + + * finddomain.c (_nl_find_domain): Remove unused variable `application'. + +Thu Sep 21 15:51:44 1995 Ulrich Drepper + + * localealias.c (alias_compare): + Use strcasecmp() only if available. Else use + implementation in place. + + * intl-compat.c: + Wrapper functions now call *__ functions instead of __*. + + * libgettext.h: Declare prototypes for *__ functions instead for __*. + + * cat-compat.c, loadmsgcat.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + + * bindtextdom.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Rename to bindtextdomain__ if not used in GNU C Library. + + * dgettext.c: + Rename function to dgettext__ if not used in GNU C Library. + + * gettext.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Functions now called gettext__ if not used in GNU C Library. + + * dcgettext.c, localealias.c, textdomain.c, finddomain.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + +Sun Sep 17 23:14:49 1995 Ulrich Drepper + + * finddomain.c: Correct some bugs in handling of CEN standard + locale definitions. + +Thu Sep 7 01:49:28 1995 Ulrich Drepper + + * finddomain.c: Implement CEN syntax. + + * gettextP.h (loaded_domain): Extend number of successors to 31. + +Sat Aug 19 19:25:29 1995 Ulrich Drepper + + * Makefile.in (aliaspath): Remove path to X11 locale dir. + + * Makefile.in: Make install-src depend on install. This helps + gettext to install the sources and other packages can use the + install goal. + +Sat Aug 19 15:19:33 1995 Ulrich Drepper + + * Makefile.in (uninstall): Remove stuff installed by install-src. + +Tue Aug 15 13:13:53 1995 Ulrich Drepper + + * VERSION.in: Initial revision. + + * Makefile.in (DISTFILES): + Add VERSION file. This is not necessary for gettext, but + for other packages using this library. + +Tue Aug 15 06:16:44 1995 Ulrich Drepper + + * gettextP.h (_nl_find_domain): + New prototype after changing search strategy. + + * finddomain.c (_nl_find_domain): + We now try only to find a specified catalog. Fall back to other + catalogs listed in the locale list is now done in __dcgettext. + + * dcgettext.c (__dcgettext): + Now we provide message fall back even to different languages. + I.e. if a message is not available in one language all the other + in the locale list a tried. Formerly fall back was only possible + within one language. Implemented by moving one loop from + _nl_find_domain to here. + +Mon Aug 14 23:45:50 1995 Ulrich Drepper + + * Makefile.in (gettextsrcdir): + Directory where source of GNU gettext library are made + available. + (INSTALL, INSTALL_DATA): Programs used for installing sources. + (gettext-src): New. Rule to install GNU gettext sources for use in + gettextize shell script. + +Sun Aug 13 14:40:48 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): + Use mmap for loading only when munmap function is + also available. + + * Makefile.in (install): Depend on `all' goal. + +Wed Aug 9 11:04:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): + Do not overwrite '\n' when terminating alias value string. + + * localealias.c (read_alias_file): + Handle long lines. Ignore the rest not fitting in + the buffer after the initial `fgets' call. + +Wed Aug 9 00:54:29 1995 Ulrich Drepper + + * gettextP.h (_nl_load_domain): + Add prototype, replacing prototype for _nl_load_msg_cat. + + * finddomain.c (_nl_find_domain): + Remove unneeded variable filename and filename_len. + (expand_alias): Remove prototype because functions does not + exist anymore. + + * localealias.c (read_alias_file): + Change type of fname_len parameter to int. + (xmalloc): Add prototype. + + * loadmsgcat.c: Better prototypes for xmalloc. + +Tue Aug 8 22:30:39 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Allow alias name to be constructed from the four components. + + * Makefile.in (aliaspath): New variable. Set to preliminary value. + (SOURCES): Add localealias.c. + (OBJECTS): Add localealias.o. + + * gettextP.h: Add prototype for _nl_expand_alias. + + * finddomain.c: Aliasing handled in intl/localealias.c. + + * localealias.c: Aliasing for locale names. + + * bindtextdom.c: Better prototypes for xmalloc and xstrdup. + +Mon Aug 7 23:47:42 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): gettext.perl is now found in misc/. + + * cat-compat.c (bindtextdomain): + Correct implementation. dirname parameter was not used. + Reported by Marcus Daniels. + + * gettextP.h (loaded_domain): + New fields `successor' and `decided' for oo, lazy + message handling implementation. + + * dcgettext.c: + Adopt for oo, lazy message handliing. + Now we can inherit translations from less specific locales. + (find_msg): New function. + + * loadmsgcat.c, finddomain.c: + Complete rewrite. Implement oo, lazy message handling :-). + We now have an additional environment variable `LANGUAGE' with + a higher priority than LC_ALL for the LC_MESSAGE locale. + Here we can set a colon separated list of specifications each + of the form `language[_territory[.codeset]][@modifier]'. + +Sat Aug 5 09:55:42 1995 Ulrich Drepper + + * finddomain.c (unistd.h): + Include to get _PC_PATH_MAX defined on system having it. + +Fri Aug 4 22:42:00 1995 Ulrich Drepper + + * finddomain.c (stpcpy): Include prototype. + + * Makefile.in (dist): Remove `copying instead' message. + +Wed Aug 2 18:52:03 1995 Ulrich Drepper + + * Makefile.in (ID, TAGS): Do not use $^. + +Tue Aug 1 20:07:11 1995 Ulrich Drepper + + * Makefile.in (TAGS, ID): Use $^ as command argument. + (TAGS): Give etags -o option t write to current directory, + not $(srcdir). + (ID): Use $(srcdir) instead os $(top_srcdir)/src. + (distclean): Remove ID. + +Sun Jul 30 11:51:46 1995 Ulrich Drepper + + * Makefile.in (gnulocaledir): + New variable, always using share/ for data directory. + (DEFS): Add GNULOCALEDIR, used in finddomain.c. + + * finddomain.c (_nl_default_dirname): + Set to GNULOCALEDIR, because it always has to point + to the directory where GNU gettext Library writes it to. + + * intl-compat.c (textdomain, bindtextdomain): + Undefine macros before function definition. + +Sat Jul 22 01:10:02 1995 Ulrich Drepper + + * libgettext.h (_LIBINTL_H): + Protect definition in case where this file is included as + libgettext.h on Solaris machines. Add comment about this. + +Wed Jul 19 02:36:42 1995 Ulrich Drepper + + * intl-compat.c (textdomain): Correct typo. + +Wed Jul 19 01:51:35 1995 Ulrich Drepper + + * dcgettext.c (dcgettext): Function now called __dcgettext. + + * dgettext.c (dgettext): Now called __dgettext and calls + __dcgettext. + + * gettext.c (gettext): + Function now called __gettext and calls __dgettext. + + * textdomain.c (textdomain): Function now called __textdomain. + + * bindtextdom.c (bindtextdomain): Function now called + __bindtextdomain. + + * intl-compat.c: Initial revision. + + * Makefile.in (SOURCES): Add intl-compat.c. + (OBJECTS): We always compile the GNU gettext library functions. + OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, + and intl-compat.o. + (GETTOBJS): Contains now only intl-compat.o. + + * libgettext.h: + Re-include protection matches dualistic character of libgettext.h. + For all functions in GNU gettext library define __ counter part. + + * finddomain.c (strchr): Define as index if not found in C library. + (_nl_find_domain): For relative paths paste / in between. + +Tue Jul 18 16:37:45 1995 Ulrich Drepper + + * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. + + * xopen-msg.sed: Fix bug with `msgstr ""' lines. + A little bit better comments. + +Tue Jul 18 01:18:27 1995 Ulrich Drepper + + * Makefile.in: + po-mode.el, makelinks, combine-sh are now found in ../misc. + + * po-mode.el, makelinks, combine-sh, elisp-comp: + Moved to ../misc/. + + * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. + +Sun Jul 16 22:33:02 1995 Ulrich Drepper + + * Makefile.in (INSTALL, INSTALL_DATA): New variables. + (install-data, uninstall): Install/uninstall .elc file. + + * po-mode.el (Installation comment): + Add .pox as possible extension of .po files. + +Sun Jul 16 13:23:27 1995 Ulrich Drepper + + * elisp-comp: Complete new version by Franc,ois: This does not + fail when not compiling in the source directory. + +Sun Jul 16 00:12:17 1995 Ulrich Drepper + + * Makefile.in (../po/cat-id-tbl.o): + Use $(MAKE) instead of make for recursive make. + + * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. + (install-exec): Add missing dummy goal. + (install-data, uninstall): @ in multi-line shell command at + beginning, not in front of echo. Reported by Eric Backus. + +Sat Jul 15 00:21:28 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): + Rename libgettext.perl to gettext.perl to fit in 14 chars + file systems. + + * gettext.perl: + Rename to gettext.perl to fit in 14 chars file systems. + +Thu Jul 13 23:17:20 1995 Ulrich Drepper + + * cat-compat.c: If !STDC_HEADERS try to include malloc.h. + +Thu Jul 13 20:55:02 1995 Ulrich Drepper + + * po2tbl.sed.in: Pretty printing. + + * linux-msg.sed, xopen-msg.sed: + Correct bugs with handling substitute flags in branches. + + * hash-string.h (hash_string): + Old K&R compilers don't under stand `unsigned char'. + + * gettext.h (nls_uint32): + Some old K&R compilers (eg HP) don't understand `unsigned int'. + + * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. + +Thu Jul 13 01:34:33 1995 Ulrich Drepper + + * Makefile.in (ELCFILES): New variable. + (DISTFILES): Add elisp-comp. + Add implicit rule for .el -> .elc compilation. + (install-data): install $ELCFILES + (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. + + * elisp-comp: Initial revision + +Wed Jul 12 16:14:52 1995 Ulrich Drepper + + * Makefile.in: + cat-id-tbl.c is now found in po/. This enables us to use an identical + intl/ directory in all packages. + + * dcgettext.c (dcgettext): hashing does not work for table size <= 2. + + * textdomain.c: fix typo (#if def -> #if defined) + +Tue Jul 11 18:44:43 1995 Ulrich Drepper + + * Makefile.in (stamp-cat-id): use top_srcdir to address source files + (DISTFILES,distclean): move tupdate.perl to src/ + + * po-to-tbl.sed.in: + add additional jump to clear change flag to recognize multiline strings + +Tue Jul 11 01:32:50 1995 Ulrich Drepper + + * textdomain.c: Protect inclusion of stdlib.h and string.h. + + * loadmsgcat.c: Protect inclusion of stdlib.h. + + * libgettext.h: Protect inclusion of locale.h. + Allow use in C++ programs. + Define NULL is not happened already. + + * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of + po-to-tbl.sed. + (distclean): remove po-to-tbl.sed and tupdate.perl. + + * tupdate.perl.in: Substitute Perl path even in exec line. + Don't include entries without translation from old .po file. + +Tue Jul 4 00:41:51 1995 Ulrich Drepper + + * tupdate.perl.in: use "Updated: " in msgid "". + + * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). + Define getenv if !__STDC__. + + * bindtextdom.c: Protect stdlib.h and string.h inclusion. + Define free if !__STDC__. + + * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + Define free if !__STDC__. + + * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + +Mon Jul 3 23:56:30 1995 Ulrich Drepper + + * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. + Remove unneeded $(srcdir) from Makefile.in dependency. + + * makelinks: Add copyright and short description. + + * po-mode.el: Last version for 0.7. + + * tupdate.perl.in: Fix die message. + + * dcgettext.c: Protect include of string.h. + + * gettext.c: Protect include of stdlib.h and further tries to get NULL. + + * finddomain.c: Some corrections in includes. + + * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. + + * po-to-tbl.sed: Adopt for new .po file format. + + * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. + +Sun Jul 2 23:55:03 1995 Ulrich Drepper + + * tupdate.perl.in: Complete rewrite for new .po file format. + +Sun Jul 2 02:06:50 1995 Ulrich Drepper + + * First official release. This directory contains all the code + needed to internationalize own packages. It provides functions + which allow to use the X/Open catgets function with an interface + like the Uniforum gettext function. For system which does not + have neither of those a complete implementation is provided. + + diff --git a/intl/Makefile b/intl/Makefile new file mode 100644 index 0000000000..7679393f40 --- /dev/null +++ b/intl/Makefile @@ -0,0 +1,48 @@ +# intl/Makefile + +depth = .. + +NAME = intl + +include $(depth)/make/Stepmake.make +include $(stepdir)/C.make + + +# MODULE_CXXFLAGS += -D_REENTRANT +MAINTARGET = $(LIBRARY)# huh? + +SED_FILES = $(wildcard *.sed) + +# should be set by configure... +URG_DEFINES = -DGNULOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(localedir):\" +EXTRA_CFLAGS = -I. $(URG_DEFINES) + +EXTRA_DIST_FILES = Makefile.in.dist cat-compat.c.dist ChangeLog libintl.inst $(SED_FILES) + +default: + @echo "to install libintl type 'make lib; make install-lib'" + +lib: $(LIBRARY) +LIBINTL = $(LIBRARY) + +install-lib: $(LIBINTL) +# localinstall: $(LIBINTL) + $(INSTALL) -d $(includedir) +# $(INSTALL) libintl.h $(includedir) + $(INSTALL) libintl.inst $(includedir)/libintl.h +ifeq ($(LIB_SUFFIX),.so) + $(INSTALL) -d $(libdir) + $(INSTALL) $(LIBINTL).$(VERSION) $(libdir) + ln -s $(LIB_PREFIX)intl$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)intl$(LIB_SUFFIX).$(MAJOR_VERSION) + ln -s $(LIB_PREFIX)intl$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)intl$(LIB_SUFFIX) +else + $(INSTALL) -d $(libdir) + echo libintl: $(LIBINTL) + echo libdir: $(libdir) + $(INSTALL) $(LIBINTL) $(libdir) +endif + +localuninstall: + rm -f $(inludedir)/libintl.h + rm -f $(libdir)/libintl.{so*,a} + diff --git a/intl/Makefile.in.dist b/intl/Makefile.in.dist new file mode 100644 index 0000000000..2a05735516 --- /dev/null +++ b/intl/Makefile.in.dist @@ -0,0 +1,166 @@ +# Makefile for directory with message catalog handling in GNU NLS Utilities. +# Copyright (C) 1995 Free Software Foundation, Inc. +# +# This program 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 2, or (at your option) +# any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = $(prefix)/lib +includedir = $(prefix)/include +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext +aliaspath = $(localedir):. +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +AR = ar +CC = @CC@ +RANLIB = @RANLIB@ + +DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \ +-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@ +CFLAGS = @CFLAGS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = $(COMHDRS) libgettext.h +COMHDRS = gettext.h gettextP.h hash-string.h +SOURCES = $(COMSRCS) intl-compat.c cat-compat.c +COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ +finddomain.c loadmsgcat.c localealias.c textdomain.c +OBJECTS = @INTLOBJS@ bindtextdom.o dcgettext.o dgettext.o gettext.o \ +finddomain.o loadmsgcat.o localealias.o textdomain.o +CATOBJS = cat-compat.o ../po/cat-id-tbl.o +GETTOBJS = intl-compat.o +DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ +xopen-msg.sed $(HEADERS) $(SOURCES) +DISTFILES = $(DISTFILES.common) VERSION +DISTFILES.gettext = $(DISTFILES.common) libintl.glibc libintl.inst + +.SUFFIXES: +.SUFFIXES: .c .o +.c.o: + $(COMPILE) $< + +INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib + +all: libintl.a + + +libintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +../po/cat-id-tbl.o: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot + cd ../po && $(MAKE) cat-id-tbl.o + +check install: all + +# This installation goal is only used in GNU gettext. Packages which +# only use the library should use install instead. +# +# We must not install the libintl.h/libintl.a files if we are on a system +# which has the gettext() function in its C library or in a separate +# library. A special case is where configure found a previously installed +# GNU gettext library. If you want to use the one which comes with this +# version of the package, you have to use `configure --with-gnu-gettext'. +install-src: install + $(top_srcdir)/mkinstalldirs $(libdir) $(includedir) $(gettextsrcdir) + if test -f libintl.h; then \ + $(INSTALL_DATA) $(srcdir)/libintl.inst \ + $(includedir)/libintl.h; \ + $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ + fi + cd $(srcdir) && \ + for file in $(DISTFILES.common); do \ + $(INSTALL_DATA) $$file $(gettextsrcdir)/intl-$$file; \ + done + $(INSTALL_DATA) VERSION $(gettextsrcdir)/intl-VERSION + +uninstall: + for file in $(DISTFILES); do \ + rm -f $(gettextsrcdir)/intl-$$file; \ + done + +info dvi: + +$(OBJECTS): ../config.h libgettext.h +bindtextdom.o finddomain.o loadmsgcat.o: gettextP.h gettext.h +dcgettext.o: gettextP.h gettext.h hash-string.h + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.o core core.* + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS po2msg.sed po2tbl.sed libintl.h + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist: Makefile $(DISTFILES) + for file in $(DISTFILES); do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +# This dist goal is only used in GNU gettext. GNU gettext needs not contain +# the file `VERSION' but contains some other files which should not be +# distributed in other packages. +dist-gettext: Makefile $(DISTFILES.gettext) + for file in $(DISTFILES.gettext); do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +dist-libc: + tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc + +Makefile: Makefile.in ../config.status + cd .. && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/intl/bindtextdom.c b/intl/bindtextdom.c new file mode 100644 index 0000000000..bd9f422654 --- /dev/null +++ b/intl/bindtextdom.c @@ -0,0 +1,172 @@ +/* bindtextdom.c -- implementation of the bindtextdomain(3) function + Copyright (C) 1995 Free Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +#else +# define BINDTEXTDOMAIN bindtextdomain__ +#endif + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (domainname, dirname) + const char *domainname; + const char *dirname; +{ + struct binding *binding; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + return NULL; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (dirname == NULL) + /* The current binding has be to returned. */ + return binding == NULL ? (char *) _nl_default_dirname : binding->dirname; + + if (binding != NULL) + { + /* The domain is already bound. Replace the old binding. */ + char *new_dirname; + + if (strcmp (dirname, _nl_default_dirname) == 0) + new_dirname = (char *) _nl_default_dirname; + else + { + size_t len = strlen (dirname) + 1; + new_dirname = (char *) malloc (len); + if (new_dirname == NULL) + return NULL; + + memcpy (new_dirname, dirname, len); + } + + if (strcmp (binding->dirname, _nl_default_dirname) != 0) + free (binding->dirname); + + binding->dirname = new_dirname; + } + else + { + /* We have to create a new binding. */ + size_t len; + struct binding *new_binding = + (struct binding *) malloc (sizeof (*new_binding)); + + if (new_binding == NULL) + return NULL; + + len = strlen (domainname) + 1; + new_binding->domainname = (char *) malloc (len); + if (new_binding->domainname == NULL) + return NULL; + memcpy (new_binding->domainname, domainname, len); + + if (strcmp (dirname, _nl_default_dirname) == 0) + new_binding->dirname = (char *) _nl_default_dirname; + else + { + len = strlen (dirname) + 1; + new_binding->dirname = (char *) malloc (len); + if (new_binding->dirname == NULL) + return NULL; + memcpy (new_binding->dirname, dirname, len); + } + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + binding = new_binding; + } + + return binding->dirname; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +#endif diff --git a/intl/cat-compat.c.dist b/intl/cat-compat.c.dist new file mode 100644 index 0000000000..39fcfb43a0 --- /dev/null +++ b/intl/cat-compat.c.dist @@ -0,0 +1,252 @@ +/* Compatibility code for gettext-using-catgets interface. + Copyright (C) 1995 Free Software Foundation, Inc. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library 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 +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef STDC_HEADERS +# include +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# endif +#endif + +#ifdef HAVE_NL_TYPES_H +# include +#endif + +#include "libgettext.h" + +/* @@ end of prolog @@ */ + +/* The catalog descriptor. */ +static nl_catd catalog = (nl_catd) -1; + +/* Name of the default catalog. */ +static const char default_catalog_name[] = "messages"; + +/* Name of currently used catalog. */ +static const char *catalog_name = default_catalog_name; + +/* Get ID for given string. If not found return -1. */ +static int msg_to_cat_id __P ((const char *msg)); + +/* Substitution for systems lacking this function in their C library. */ +#if !_LIBC && !HAVE_STPCPY +static char *stpcpy __P ((char *dest, const char *src)); +#endif + + +/* Set currently used domain/catalog. */ +char * +textdomain (domainname) + const char *domainname; +{ + nl_catd new_catalog; + char *new_name; + size_t new_name_len; + char *lang; + +#if HAVE_SETLOCALE && HAVE_LC_MESSAGES && HAVE_SETLOCALE_NULL + lang = setlocale (LC_MESSAGES, NULL); +#else + lang = getenv ("LC_ALL"); + if (lang == NULL || lang[0] == '\0') + { + lang = getenv ("LC_MESSAGES"); + if (lang == NULL || lang[0] == '\0') + lang = getenv ("LANG"); + } +#endif + if (lang == NULL || lang[0] == '\0') + lang = "C"; + + /* See whether name of currently used domain is asked. */ + if (domainname == NULL) + return (char *) catalog_name; + + if (domainname[0] == '\0') + domainname = default_catalog_name; + + /* Compute length of added path element. */ + new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang) + + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1 + + sizeof (".cat"); + + new_name = (char *) malloc (new_name_len); + if (new_name == NULL) + return NULL; + + strcpy (new_name, PACKAGE); + new_catalog = catopen (new_name, 0); + + if (new_catalog == (nl_catd) -1) + { + /* NLSPATH search didn't work, try absolute path */ + sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang, + PACKAGE); + new_catalog = catopen (new_name, 0); + + if (new_catalog == (nl_catd) -1) + { + free (new_name); + return (char *) catalog_name; + } + } + + /* Close old catalog. */ + if (catalog != (nl_catd) -1) + catclose (catalog); + if (catalog_name != default_catalog_name) + free ((char *) catalog_name); + + catalog = new_catalog; + catalog_name = new_name; + + return (char *) catalog_name; +} + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ +#if HAVE_SETENV || HAVE_PUTENV + char *old_val, *new_val, *cp; + size_t new_val_len; + + /* This does not make much sense here but to be compatible do it. */ + if (domainname == NULL) + return NULL; + + /* Compute length of added path element. If we use setenv we don't need + the first byts for NLSPATH=, but why complicate the code for this + peanuts. */ + new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname) + + sizeof ("/%L/LC_MESSAGES/%N.cat"); + + old_val = getenv ("NLSPATH"); + if (old_val == NULL || old_val[0] == '\0') + { + old_val = NULL; + new_val_len += 1 + sizeof (LOCALEDIR) - 1 + + sizeof ("/%L/LC_MESSAGES/%N.cat"); + } + else + new_val_len += strlen (old_val); + + new_val = (char *) malloc (new_val_len); + if (new_val == NULL) + return NULL; + +# if HAVE_SETENV + cp = new_val; +# else + cp = stpcpy (new_val, "NLSPATH="); +# endif + + cp = stpcpy (cp, dirname); + cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:"); + + if (old_val == NULL) + { +# if __STDC__ + stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat"); +# else + + cp = stpcpy (cp, LOCALEDIR); + stpcpy (cp, "/%L/LC_MESSAGES/%N.cat"); +# endif + } + else + stpcpy (cp, old_val); + +# if HAVE_SETENV + setenv ("NLSPATH", new_val, 1); + free (new_val); +# else + putenv (new_val); + /* Do *not* free the environment entry we just entered. It is used + from now on. */ +# endif + +#endif + + return (char *) domainname; +} + +#undef gettext +char * +gettext (msg) + const char *msg; +{ + int msgid; + + if (msg == NULL || catalog == (nl_catd) -1) + return (char *) msg; + + /* Get the message from the catalog. We always use set number 1. + The message ID is computed by the function `msg_to_cat_id' + which works on the table generated by `po-to-tbl'. */ + msgid = msg_to_cat_id (msg); + if (msgid == -1) + return (char *) msg; + + return catgets (catalog, 1, msgid, (char *) msg); +} + +/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries + for the one equal to msg. If it is found return the ID. In case when + the string is not found return -1. */ +static int +msg_to_cat_id (msg) + const char *msg; +{ + int cnt; + + for (cnt = 0; cnt < _msg_tbl_length; ++cnt) + if (strcmp (msg, _msg_tbl[cnt]._msg) == 0) + return _msg_tbl[cnt]._msg_number; + + return -1; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/intl/config.h b/intl/config.h new file mode 100644 index 0000000000..8f99f31f53 --- /dev/null +++ b/intl/config.h @@ -0,0 +1,18 @@ +/* urg */ + +#include "config.hh" + +/* urg */ +#ifdef PACKAGE +#undef PACKAGE +#endif +/* Define to the name of the distribution. */ +#define PACKAGE "gettext" + +/* urg */ +#ifdef VERSION +#undef VERSION +#endif +/* Define to the version of the distribution. */ +#define VERSION "0.10" + diff --git a/intl/dcgettext.c b/intl/dcgettext.c new file mode 100644 index 0000000000..911bc5c788 --- /dev/null +++ b/intl/dcgettext.c @@ -0,0 +1,522 @@ +/* dcgettext.c -- implemenatation of the dcgettext(3) function + Copyright (C) 1995 Free Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif +#include "hash-string.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# define stpcpy __stpcpy +#endif + +#if !defined HAVE_GETCWD && !defined _LIBC +char *getwd (); +# define getcwd(buf, max) getwd (buf) +#else +char *getcwd (); +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined(PATH_MAX) && defined(_PC_PATH_MAX) +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) +# include +#endif + +#if !defined(PATH_MAX) && defined(MAXPATHLEN) +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* XPG3 defines the result of `setlocale (category, NULL)' as: + ``Directs `setlocale()' to query `category' and return the current + setting of `local'.'' + However it does not specify the exact format. And even worse: POSIX + defines this not at all. So we can use this feature only on selected + system (e.g. those using GNU C Library). */ +#ifdef _LIBC +# define HAVE_LOCALE_NULL +#endif + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] = "messages"; + +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain = _nl_default_default_domain; + +/* Contains the default location of the message catalogs. */ +const char _nl_default_dirname[] = GNULOCALEDIR; + +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; + +/* Prototypes for local functions. */ +static char *find_msg __P ((struct loaded_domain *domain, const char *msgid)); +static const char *category_to_name __P((int category)); +static const char *guess_category_value __P((int category, + const char *categoryname)); + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +#else +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + struct loaded_domain *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + char *dirname, *xdomainname; + char *single_locale; + char *retval; + + /* If no real MSGID is given return NULL. */ + if (msgid == NULL) + return NULL; + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + defintion left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + + /* First find matching binding. */ + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = (char *) _nl_default_dirname; + else if (binding->dirname[0] == '/') + dirname = binding->dirname; + else + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (binding->dirname) + 1; + size_t path_max; + char *ret; + + path_max = (unsigned) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + dirname = (char *) alloca (path_max + dirname_len); + + errno = 0; + while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE) + { + path_max += PATH_INCR; + dirname = (char *) alloca (path_max + dirname_len); + errno = 0; + } + + if (ret == NULL) + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + return (char *) msgid; + + /* We don't want libintl.a to depend on any other library. So + we avoid the non-standard function stpcpy. In GNU C Library + this function is available, though. Also allow the symbol + HAVE_STPCPY to be defined. */ +#if defined _LIBC || defined HAVE_STPCPY + stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); +#else + strcat (dirname, "/"); + strcat (dirname, binding->dirname); +#endif + } + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); + categoryvalue = guess_category_value (category, categoryname); + + xdomainname = (char *) alloca (strlen (categoryname) + + strlen (domainname) + 5); + /* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if defined _LIBC || defined HAVE_STPCPY + stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname), + ".mo"); +#else + strcpy (xdomainname, categoryname); + strcat (xdomainname, "/"); + strcat (xdomainname, domainname); + strcat (xdomainname, ".mo"); +#endif + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for th translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitely appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + return (char *) msgid; + + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname); + + if (domain != NULL) + { + retval = find_msg (domain, msgid); + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { + retval = find_msg (domain->successor[cnt], msgid); + + if (retval != NULL) + break; + } + } + + if (retval != NULL) + return retval; + } + } + /* NOTREACHED */ +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcgettext, dcgettext); +#endif + + +static char * +find_msg (domain, msgid) + struct loaded_domain *domain; + const char *msgid; +{ + size_t top, act, bottom; + + if (domain->decided == 0) + _nl_load_domain (domain); + + if (domain->data == NULL) + return NULL; + + /* Locate the MSGID and its translation. */ + if (domain->hash_size > 2 && domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len + && strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) == 0) + return (char *) domain->data + W (domain->must_swap, + domain->trans_tab[nstr - 1].offset); + + while (1) + { + if (idx >= W (domain->must_swap, domain->hash_size) - incr) + idx -= W (domain->must_swap, domain->hash_size) - incr; + else + idx += incr; + + nstr = W (domain->must_swap, domain->hash_tab[idx]); + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len + && strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) + == 0) + return (char *) domain->data + + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); + } + /* NOTREACHED */ + } + + /* Now we try the default method: binary search in the sorted + array of messages. */ + bottom = 0; + top = domain->nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset)); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + break; + } + + /* If an translation is found return this. */ + return bottom >= top ? NULL : (char *) domain->data + + W (domain->must_swap, + domain->trans_tab[act].offset); +} + + +/* Return string representation of locale CATEGORY. */ +static const char *category_to_name (category) + int category; +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} + +/* Guess value of current locale from value of the environment variables. */ +static const char *guess_category_value (category, categoryname) + int category; + const char *categoryname; +{ + const char *retval; + + /* The highest priority value is the `LANGUAGE' environment + variable. This is a GNU extension. */ + retval = getenv ("LANGUAGE"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* `LANGUAGE' is not set. So we have to proceed with the POSIX + methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some + systems this can be done by the `setlocale' function itself. */ +#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + return setlocale (category, NULL); +#else + /* Setting of LC_ALL overwrites all other. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* We use C as the default domain. POSIX says this is implementation + defined. */ + return "C"; +#endif +} diff --git a/intl/dgettext.c b/intl/dgettext.c new file mode 100644 index 0000000000..2fde6770f7 --- /dev/null +++ b/intl/dgettext.c @@ -0,0 +1,59 @@ +/* dgettext.c -- implementation of the dgettext(3) function + Copyright (C) 1995 Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined HAVE_LOCALE_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT __dcgettext +#else +# define DGETTEXT dgettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/intl/finddomain.c b/intl/finddomain.c new file mode 100644 index 0000000000..007a87e075 --- /dev/null +++ b/intl/finddomain.c @@ -0,0 +1,503 @@ +/* finddomain.c -- handle list of needed message catalogs + Copyright (C) 1995 Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define stpcpy __stpcpy +#endif + +/* Encoding of locale name parts. */ +#define CEN_REVISION 1 +#define CEN_SPONSOR 2 +#define CEN_SPECIAL 4 +#define XPG_CODESET 8 +#define TERRITORY 16 +#define CEN_AUDIENCE 32 +#define XPG_MODIFIER 64 + +#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) +#define XPG_SPECIFIC (XPG_CODESET|XPG_MODIFIER) + + +/* List of already loaded domains. */ +static struct loaded_domain *_nl_loaded_domains; + +/* Prototypes for local functions. */ +static struct loaded_domain *make_entry_rec __P ((const char *dirname, + int mask, + const char *language, + const char *territory, + const char *codeset, + const char *modifier, + const char *special, + const char *sponsor, + const char *revision, + const char *domainname, + int do_allocate)); + +/* Substitution for systems lacking this function in their C library. */ +#if !_LIBC && !HAVE_STPCPY +static char *stpcpy __P ((char *dest, const char *src)); +#endif + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_domain * +_nl_find_domain (dirname, locale, domainname) + const char *dirname; + char *locale; + const char *domainname; +{ + enum { undecided, xpg, cen } syntax; + struct loaded_domain *retval; + const char *language; + const char *modifier = NULL; + const char *territory = NULL; + const char *codeset = NULL; + const char *special = NULL; + const char *sponsor = NULL; + const char *revision = NULL; + const char *alias_value = NULL; + char *cp; + int mask; + + /* CATEGORYVALUE now possibly contains a colon separated list of + locales. Each single locale can consist of up to four recognized + parts for the XPG syntax: + + language[_territory[.codeset]][@modifier] + + and six parts for the CEN syntax: + + language[_territory][+audience][+special][,sponsor][_revision] + + Beside the first all of them are allowed to be missing. If the + full specified locale is not found, the less specific one are + looked for. The various part will be stripped of according to + the following order: + (1) revision + (2) sponsor + (3) special + (4) codeset + (5) territory + (6) audience/modifier + */ + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = make_entry_rec (dirname, 0, locale, NULL, NULL, NULL, + NULL, NULL, NULL, domainname, 0); + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided == 0) + _nl_load_domain (retval); /* @@@ */ + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt]); + + if (retval->successor[cnt]->data != NULL) + break; + } + + /* We really found some usable information. */ + return cnt >= 0 ? retval : NULL; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = 0; + syntax = undecided; + language = cp = locale; + while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',') + ++cp; + + if (language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (language, '\0'); + else if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= TERRITORY; + + if (cp[0] == '.') + { + /* Next is the codeset. */ + syntax = xpg; + cp[0] = '\0'; + codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + } + } + + if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) + { + /* Next is the modifier. */ + syntax = cp[0] == '@' ? xpg : cen; + cp[0] = '\0'; + modifier = ++cp; + + while (syntax == cen && cp[0] != '\0' && cp[0] != '+' + && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= XPG_MODIFIER | CEN_AUDIENCE; + } + + if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) + { + syntax = cen; + + if (cp[0] == '+') + { + /* Next is special application (CEN syntax). */ + cp[0] = '\0'; + special = ++cp; + + while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= CEN_SPECIAL; + } + + if (cp[0] == ',') + { + /* Next is sponsor (CEN syntax). */ + cp[0] = '\0'; + sponsor = ++cp; + + while (cp[0] != '\0' && cp[0] != '_') + ++cp; + + mask |= CEN_SPONSOR; + } + + if (cp[0] == '_') + { + /* Next is revision (CEN syntax). */ + cp[0] = '\0'; + revision = ++cp; + + mask |= CEN_REVISION; + } + } + + /* For CEN sytnax values it might be important to have the + separator character in the file name, not for XPG syntax. */ + if (syntax == xpg) + { + if (territory != NULL && territory[0] == '\0') + mask &= ~TERRITORY; + + if (codeset != NULL && codeset[0] == '\0') + mask &= ~XPG_CODESET; + + if (modifier != NULL && modifier[0] == '\0') + mask &= ~XPG_MODIFIER; + } + + /* Create all possible locale entries which might be interested in + generalzation. */ + retval = make_entry_rec (dirname, mask, language, territory, codeset, + modifier, special, sponsor, revision, + domainname, 1); + if (retval == NULL) + /* This means we are out of core. */ + return NULL; + + if (retval->decided == 0) + _nl_load_domain (retval); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt]); + if (retval->successor[cnt]->data != NULL) + break; + + /* Signal that locale is not available. */ + retval->successor[cnt] = NULL; + } + if (retval->successor[cnt] == NULL) + retval = NULL; + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + + return retval; +} + + +static struct loaded_domain * +make_entry_rec (dirname, mask, language, territory, codeset, modifier, + special, sponsor, revision, domain, do_allocate) + const char *dirname; + int mask; + const char *language; + const char *territory; + const char *codeset; + const char *modifier; + const char *special; + const char *sponsor; + const char *revision; + const char *domain; + int do_allocate; +{ + char *filename = NULL; + struct loaded_domain *last = NULL; + struct loaded_domain *retval; + char *cp; + size_t entries; + int cnt; + + + /* Process the current entry described by the MASK only when it is + valid. Because the mask can have in the first call bits from + both syntaces set this is necessary to prevent constructing + illegal local names. */ + /* FIXME: Rewrite because test is necessary only in first round. */ + if ((mask & CEN_SPECIFIC) == 0 || (mask & XPG_SPECIFIC) == 0) + { + /* Allocate room for the full file name. */ + filename = (char *) malloc (strlen (dirname) + 1 + + strlen (language) + + ((mask & TERRITORY) != 0 + ? strlen (territory) : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) : 0) + + ((mask & XPG_MODIFIER) != 0 ? + strlen (modifier) : 0) + + ((mask & CEN_SPECIAL) != 0 + ? strlen (special) : 0) + + ((mask & CEN_SPONSOR) != 0 + ? strlen (sponsor) : 0) + + ((mask & CEN_REVISION) != 0 + ? strlen (revision) : 0) + 1 + + strlen (domain) + 1); + + if (filename == NULL) + return NULL; + + retval = NULL; + last = NULL; + + /* Construct file name. */ + cp = stpcpy (filename, dirname); + *cp++ = '/'; + cp = stpcpy (cp, language); + + if ((mask & TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) + { + /* This component can be part of both syntaces but has different + leading characters. For CEN we use `+', else `@'. */ + *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; + cp = stpcpy (cp, modifier); + } + if ((mask & CEN_SPECIAL) != 0) + { + *cp++ = '+'; + cp = stpcpy (cp, special); + } + if ((mask & CEN_SPONSOR) != 0) + { + *cp++ = ','; + cp = stpcpy (cp, sponsor); + } + if ((mask & CEN_REVISION) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, revision); + } + + *cp++ = '/'; + stpcpy (cp, domain); + + /* Look in list of already loaded domains whether it is already + available. */ + last = NULL; + for (retval = _nl_loaded_domains; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + last = retval; + } + + if (retval != NULL || do_allocate == 0) + { + free (filename); + return retval; + } + } + + retval = (struct loaded_domain *) malloc (sizeof (*retval)); + if (retval == NULL) + return NULL; + + retval->filename = filename; + retval->decided = 0; + + if (last == NULL) + { + retval->next = _nl_loaded_domains; + _nl_loaded_domains = retval; + } + else + { + retval->next = last->next; + last->next = retval; + } + + entries = 0; + for (cnt = 126; cnt >= 0; --cnt) + if (cnt < mask && (cnt & ~mask) == 0 + && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0)) + retval->successor[entries++] = make_entry_rec (dirname, cnt, + language, territory, + codeset, modifier, + special, sponsor, + revision, domain, 1); + retval->successor[entries] = NULL; + + return retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/intl/gettext.c b/intl/gettext.c new file mode 100644 index 0000000000..7bed6369b4 --- /dev/null +++ b/intl/gettext.c @@ -0,0 +1,70 @@ +/* gettext.c -- implementation of gettext(3) function + Copyright (C) 1995 Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# ifdef STDC_HEADERS +# include /* Just for NULL. */ +# else +# ifdef HAVE_STRING_H +# include +# else +# define NULL ((void *) 0) +# endif +# endif +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DGETTEXT __dgettext +#else +# define GETTEXT gettext__ +# define DGETTEXT dgettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (msgid) + const char *msgid; +{ + return DGETTEXT (NULL, msgid); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/intl/gettext.h b/intl/gettext.h new file mode 100644 index 0000000000..5190f09447 --- /dev/null +++ b/intl/gettext.h @@ -0,0 +1,105 @@ +/* gettext.h - internal header for GNU gettext internationalization functions + Copyright (C) 1995 Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +#if HAVE_LIMITS_H || _LIBC +# include +#endif + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + doing that would require that the configure script compile and *run* + the resulting executable. Locally running cross-compiled executables + is usually not possible. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translation strings. */ + nls_uint32 trans_tab_offset; + /* Size of hashing table. */ + nls_uint32 hash_tab_size; + /* Offset of first hashing entry. */ + nls_uint32 hash_tab_offset; +}; + +struct string_desc +{ + /* Length of addressed string. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/intl/gettextP.h b/intl/gettextP.h new file mode 100644 index 0000000000..6d53ac1a15 --- /dev/null +++ b/intl/gettextP.h @@ -0,0 +1,79 @@ +/* gettextP.h -- header describing internals of gettext library + Copyright (C) 1995 Free Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +/* @@ end of prolog @@ */ + +#ifndef __P +# if __STDC__ +# define __P(args) args +# else +# define __P(args) () +# endif +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +static nls_uint32 SWAP __P ((nls_uint32 i)); + +static inline nls_uint32 +SWAP (i) + nls_uint32 i; +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} + + +struct loaded_domain +{ + struct loaded_domain *next; + struct loaded_domain *successor[31]; + + const char *filename; + int decided; + + const char *data; + int must_swap; + nls_uint32 nstrings; + struct string_desc *orig_tab; + struct string_desc *trans_tab; + nls_uint32 hash_size; + nls_uint32 *hash_tab; +}; + +struct binding +{ + struct binding *next; + char *domainname; + char *dirname; +}; + +struct loaded_domain *_nl_find_domain __P ((const char *__dirname, + char *__locale, + const char *__domainname)); +void _nl_load_domain __P ((struct loaded_domain *__domain)); + +const char *_nl_expand_alias __P ((const char *__name)); + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/intl/hash-string.h b/intl/hash-string.h new file mode 100644 index 0000000000..3b38bd115c --- /dev/null +++ b/intl/hash-string.h @@ -0,0 +1,62 @@ +/* hash-string - Implements a string hashing function. + Copyright (C) 1995 Free Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_VALUES_H +# include +#endif + +/* @@ end of prolog @@ */ + +#ifndef __P +# if __STDC__ +# define __P(Args) Args +# else +# define __P(Args) () +# endif +#endif + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +static unsigned long hash_string __P ((const char *__str_param)); + +static inline unsigned long +hash_string (str_param) + const char *str_param; +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned long) *str++; + g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/intl/intl-compat.c b/intl/intl-compat.c new file mode 100644 index 0000000000..503efa0fa9 --- /dev/null +++ b/intl/intl-compat.c @@ -0,0 +1,76 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995 Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgettext.h" + +/* @@ end of prolog @@ */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef textdomain +#undef bindtextdomain + + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ + return bindtextdomain__ (domainname, dirname); +} + + +char * +dcgettext (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return dcgettext__ (domainname, msgid, category); +} + + +char * +dgettext (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return dgettext__ (domainname, msgid); +} + + +char * +gettext (msgid) + const char *msgid; +{ + return gettext__ (msgid); +} + + +char * +textdomain (domainname) + const char *domainname; +{ + return textdomain__ (domainname); +} diff --git a/intl/libgettext.h b/intl/libgettext.h new file mode 100644 index 0000000000..4570cdf4b5 --- /dev/null +++ b/intl/libgettext.h @@ -0,0 +1,177 @@ +/* libgettext.h -- Message catalogs for internationalization. + Copyright (C) 1995 Free Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Because on some systems (e.g. Solaris) we sometimes have to include + the systems libintl.h as well as this file we have more complex + include protection above. But the systems header might perhaps also + define _LIBINTL_H and therefore we have to protect the definition here. */ + +#if !defined (_LIBINTL_H) || !defined (_LIBGETTEXT_H) +#if !_LIBINTL_H +# define _LIBINTL_H 1 +#endif +#define _LIBGETTEXT_H 1 + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +#include + +#if HAVE_LOCALE_H +# include +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +/* @@ end of prolog @@ */ + +#ifndef __P +# if __STDC__ +# define __P(args) args +# else +# define __P(args) () +# endif +#endif + +#ifndef NULL +# if !defined __cplusplus || defined __GNUC__ +# define NULL ((void *) 0) +# else +# define NULL (0) +# endif +#endif + +#if !HAVE_LC_MESSAGES +/* This value determines the behaviour of the gettext() and dgettext() + function. But some system does not have this defined. Define it + to a default value. */ +# define LC_MESSAGES (-1) +#endif + + +/* Declarations for gettext-using-catgets interface. Derived from + Jim Meyering's libintl.h. */ +struct _msg_ent +{ + const char *_msg; + int _msg_number; +}; + + +#if HAVE_CATGETS +/* These two variables are defined in the automatically by po-to-tbl.sed + generated file `cat-id-tbl.c'. */ +extern const struct _msg_ent _msg_tbl[]; +extern int _msg_tbl_length; +#endif + + +/* For automatical extraction of messages sometimes no real + translation is needed. Instead the string itself is the result. */ +#define gettext_noop(Str) (Str) + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext __P ((const char *__msgid)); +extern char *gettext__ __P ((const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext __P ((const char *__domainname, const char *__msgid)); +extern char *dgettext__ __P ((const char *__domainname, const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext __P ((const char *__domainname, const char *__msgid, + int __category)); +extern char *dcgettext__ __P ((const char *__domainname, const char *__msgid, + int __category)); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain __P ((const char *__domainname)); +extern char *textdomain__ __P ((const char *__domainname)); + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain __P ((const char *__domainname, + const char *__dirname)); +extern char *bindtextdomain__ __P ((const char *__domainname, + const char *__dirname)); + +#if ENABLE_NLS + +/* Solaris 2.3 has the gettext function but dcgettext is missing. + So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4 + has dcgettext. */ +# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT) + +# define gettext(Msgid) \ + dgettext (NULL, Msgid) + +# define dgettext(Domainname, Msgid) \ + dcgettext (Domainname, Msgid, LC_MESSAGES) + +# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7 +# define dcgettext(Domainname, Msgid, Category) \ + (__extension__ \ + ({ \ + char *result; \ + if (__builtin_constant_p (Msgid)) \ + { \ + extern int _nl_msg_cat_cntr; \ + static char *__translation__; \ + static int __catalog_counter__; \ + if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \ + { \ + __translation__ = \ + dcgettext__ ((Domainname), (Msgid), (Category)); \ + __catalog_counter__ = _nl_msg_cat_cntr; \ + } \ + result = __translation__; \ + } \ + else \ + result = dcgettext__ ((Domainname), (Msgid), (Category)); \ + result; \ + })) +# endif +# endif + +#else + +# define gettext(Msgid) (Msgid) +# define dgettext(Domainname, Msgid) (Msgid) +# define dcgettext(Domainname, Msgid, Category) (Msgid) +# define textdomain(Domainname) while (0) /* nothing */ +# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ + +#endif + +/* @@ begin of epilog @@ */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/intl/libintl.inst b/intl/libintl.inst new file mode 100644 index 0000000000..4b91230f88 --- /dev/null +++ b/intl/libintl.inst @@ -0,0 +1,108 @@ +/* libintl.h -- Message catalogs for internationalization. +Copyright (C) 1995 Free Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _LIBINTL_H +#define _LIBINTL_H 1 + +#ifdef HAVE_LOCALE_H +# include +#endif + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +#ifndef __P +# if __STDC__ +# define __P(args) args +# else +# define __P(args) () +# endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext __P ((const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext __P ((const char *__domainname, const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext __P ((const char *__domainname, const char *__msgid, + int __category)); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain __P ((const char *__domainname)); + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain __P ((const char *__domainname, + const char *__dirname)); + + +/* Optimized version of the functions above. */ +#if defined __OPTIMIZED +/* These must be a macro. Inlined functions are useless because the + `__builtin_constant_p' predicate in dcgettext would always return + false. */ + +# define gettext(msgid) dgettext ((char *) 0, msgid) + +# define dgettext(domainname, msgid) \ + dcgettext (domainname, msgid, LC_MESSAGES) + +# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) +# define dcgettext(domainname, msgid, category) \ + (__extension__ \ + ({ \ + char *result; \ + if (__builtin_constant_p (msgid)) \ + { \ + extern int _nl_msg_cat_cntr; \ + static char *__translation__; \ + static int __catalog_counter__; \ + if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \ + { \ + __translation__ = \ + (dcgettext) ((domainname), (msgid), (category)); \ + __catalog_counter__ = _nl_msg_cat_cntr; \ + } \ + result = __translation__; \ + } \ + else \ + result = (dcgettext) ((domainname), (msgid), (category)); \ + result; \ + })) +# endif +#endif /* Optimizing. */ + + +#ifdef __cplusplus +} +#endif + +#endif /* libintl.h */ diff --git a/intl/linux-msg.sed b/intl/linux-msg.sed new file mode 100755 index 0000000000..5918e720a9 --- /dev/null +++ b/intl/linux-msg.sed @@ -0,0 +1,100 @@ +# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# This program 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 2, or (at your option) +# any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +# The first directive in the .msg should be the definition of the +# message set number. We use always set number 1. +# +1 { + i\ +$set 1 # Automatically created by po2msg.sed + h + s/.*/0/ + x +} +# +# Mitch's old catalog format does not allow comments. +# +# We copy the original message as a comment into the .msg file. +# +/^msgid/ { + s/msgid[ ]*"// +# +# This does not work now with the new format. +# /"$/! { +# s/\\$// +# s/$/ ... (more lines following)"/ +# } + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x + G + s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p +} +# +# The .msg file contains, other then the .po file, only the translations +# but each given a unique ID. Starting from 1 and incrementing by 1 for +# each message we assign them to the messages. +# It is important that the .po file used to generate the cat-id-tbl.c file +# (with po-to-tbl) is the same as the one used here. (At least the order +# of declarations must not be changed.) +# +/^msgstr/ { + s/msgstr[ ]*"\(.*\)"/# \1/ +# Clear substitution flag. + tb +# Append the next line. + :b + N +# Look whether second part is continuation line. + s/\(.*\n\)"\(.*\)"/\1\2/ +# Yes, then branch. + ta + P + D +# Note that D includes a jump to the start!! +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use D here. + s/.*\n\(.*\)/\1/ + tb +} +d diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c new file mode 100644 index 0000000000..d98f365bf9 --- /dev/null +++ b/intl/loadmsgcat.c @@ -0,0 +1,191 @@ +/* loadmsgcat.c -- load needed message catalogs + Copyright (C) 1995 Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define fstat __fstat +# define open __open +# define close __close +# define read __read +# define mmap __mmap +# define munmap __munmap +#endif + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr; + + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +_nl_load_domain (domain) + struct loaded_domain *domain; +{ + int fd; + struct stat st; + struct mo_file_header *data = (struct mo_file_header *) -1; +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + int use_mmap = 0; +#endif + + domain->decided = 1; + domain->data = NULL; + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain->filename == NULL) + return; + + /* Try to open the addressed file. */ + fd = open (domain->filename, O_RDONLY); + if (fd == -1) + return; + + /* We must know about the size of the file. */ + if (fstat (fd, &st) != 0 + && st.st_size < (off_t) sizeof (struct mo_file_header)) + { + /* Something went wrong. */ + close (fd); + return; + } + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, st.st_size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (data != (struct mo_file_header *) -1) + { + /* mmap() call was successful. */ + close (fd); + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + off_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (st.st_size); + if (data == NULL) + return; + + to_read = st.st_size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb == -1) + { + close (fd); + return; + } + + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED) + { + /* The magic number is wrong: not a message catalog file. */ +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + if (use_mmap) + munmap ((caddr_t) data, st.st_size); + else +#endif + free (data); + return; + } + + domain->data = (char *) data; + domain->must_swap = data->magic != _MAGIC; + + /* Fill in the information about the available tables. */ + switch (W (domain->must_swap, data->revision)) + { + case 0: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = (nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)); + break; + default: + /* This is an illegal revision. */ +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + if (use_mmap) + munmap ((caddr_t) data, st.st_size); + else +#endif + free (data); + domain->data = NULL; + return; + } + + /* Show that one domain is changed. This might make some cached + translation invalid. */ + ++_nl_msg_cat_cntr; +} diff --git a/intl/localealias.c b/intl/localealias.c new file mode 100644 index 0000000000..b432e91150 --- /dev/null +++ b/intl/localealias.c @@ -0,0 +1,317 @@ +/* localealias.c -- handle aliases for locale names + Copyright (C) 1995 Free Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp +#endif + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +static struct alias_map *map; +static size_t nmap = 0; +static size_t maxmap = 0; + + +/* Prototypes for local functions. */ +static size_t read_alias_file __P ((const char *fname, int fname_len)); +static void extend_alias_table __P ((void)); +static int alias_compare __P ((const struct alias_map *map1, + const struct alias_map *map2)); + + +const char * +_nl_expand_alias (name) + const char *name; +{ + static const char *locale_alias_path = LOCALE_ALIAS_PATH; + struct alias_map *retval; + size_t added; + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) __P ((const void *, + const void *))) + alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + return retval->value; + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == ':') + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':') + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + + return NULL; +} + + +static size_t +read_alias_file (fname, fname_len) + const char *fname; + int fname_len; +{ + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); + + fp = fopen (full_fname, "r"); + if (fp == NULL) + return 0; + + added = 0; + while (!feof (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + */ + char buf[BUFSIZ]; + char *alias; + char *value; + char *cp; + + if (fgets (buf, BUFSIZ, fp) == NULL) + /* EOF reached. */ + break; + + cp = buf; + /* Ignore leading white space. */ + while (isspace (cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace (cp[0])) + ++cp; + + if (cp[0] != '\0') + { + char *tp; + size_t len; + + value = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + + if (nmap >= maxmap) + extend_alias_table (); + + /* We cannot depend on strdup available in the libc. Sigh! */ + len = strlen (alias) + 1; + tp = (char *) malloc (len); + if (tp == NULL) + return added; + memcpy (tp, alias, len); + map[nmap].alias = tp; + + len = strlen (value) + 1; + tp = (char *) malloc (len); + if (tp == NULL) + return added; + memcpy (tp, value, len); + map[nmap].value = tp; + + ++nmap; + ++added; + } + } + + /* Possibily not the whole line fitted into the buffer. Ignore + the rest of the line. */ + while (strchr (cp, '\n') == NULL) + { + cp = buf; + if (fgets (buf, BUFSIZ, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + *cp = '\n'; + } + } + + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) __P ((const void *, const void *))) alias_compare); + + return added; +} + + +static void +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) malloc (new_size + * sizeof (struct alias_map)); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return; + + memcpy (new_map, map, nmap * sizeof (struct alias_map)); + + if (maxmap != 0) + free (map); + + map = new_map; + maxmap = new_size; +} + + +static int +alias_compare (map1, map2) + const struct alias_map *map1; + const struct alias_map *map2; +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/intl/po2tbl.sed.in b/intl/po2tbl.sed.in new file mode 100755 index 0000000000..b3bcca4d73 --- /dev/null +++ b/intl/po2tbl.sed.in @@ -0,0 +1,102 @@ +# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# This program 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 2, or (at your option) +# any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +1 { + i\ +/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ +\ +#if HAVE_CONFIG_H\ +# include \ +#endif\ +\ +#include "libgettext.h"\ +\ +const struct _msg_ent _msg_tbl[] = { + h + s/.*/0/ + x +} +# +# Write msgid entries in C array form. +# +/^msgid/ { + s/msgid[ ]*\(".*"\)/ {\1/ + tb +# Append the next line + :b + N +# Look whether second part is continuation line. + s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ +# Yes, then branch. + ta +# Because we assume that the input file correctly formed the line +# just read cannot be again be a msgid line. So it's safe to ignore +# it. + s/\(.*\)\n.*/\1/ + bc +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use D here. + s/.*\n\(.*\)/\1/ +# Some buggy seds do not clear the `successful substitution since last ``t''' +# flag on `N', so we do a `t' here to clear it. + tb +# Not reached + :c + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x + G + s/\(.*\)\n\([0-9]*\)/\1, \2},/ + s/\(.*\)"$/\1/ + p +} +# +# Last line. +# +$ { + i\ +};\ + + g + s/0*\(.*\)/int _msg_tbl_length = \1;/p +} +d diff --git a/intl/textdomain.c b/intl/textdomain.c new file mode 100644 index 0000000000..c06642b268 --- /dev/null +++ b/intl/textdomain.c @@ -0,0 +1,97 @@ +/* textdomain.c -- implementation of the textdomain(3) function + Copyright (C) 1995 Software Foundation, Inc. + +This program 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 2, or (at your option) +any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[]; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +#else +# define TEXTDOMAIN textdomain__ +#endif + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (domainname) + const char *domainname; +{ + char *old; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + old = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + _nl_current_default_domain = _nl_default_default_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ + size_t len = strlen (domainname) + 1; + char *cp = (char *) malloc (len); + if (cp != NULL) + memcpy (cp, domainname, len); + _nl_current_default_domain = cp; + } + + if (old != _nl_default_default_domain) + free (old); + + return (char *) _nl_current_default_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/intl/xopen-msg.sed b/intl/xopen-msg.sed new file mode 100755 index 0000000000..b19c0bbd0e --- /dev/null +++ b/intl/xopen-msg.sed @@ -0,0 +1,104 @@ +# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# This program 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 2, or (at your option) +# any later version. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +# The first directive in the .msg should be the definition of the +# message set number. We use always set number 1. +# +1 { + i\ +$set 1 # Automatically created by po2msg.sed + h + s/.*/0/ + x +} +# +# We copy all comments into the .msg file. Perhaps they can help. +# +/^#/ s/^#[ ]*/$ /p +# +# We copy the original message as a comment into the .msg file. +# +/^msgid/ { +# Does not work now +# /"$/! { +# s/\\$// +# s/$/ ... (more lines following)"/ +# } + s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/ + p +} +# +# The .msg file contains, other then the .po file, only the translations +# but each given a unique ID. Starting from 1 and incrementing by 1 for +# each message we assign them to the messages. +# It is important that the .po file used to generate the cat-id-tbl.c file +# (with po-to-tbl) is the same as the one used here. (At least the order +# of declarations must not be changed.) +# +/^msgstr/ { + s/msgstr[ ]*"\(.*\)"/\1/ + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x +# Bring the line in the format ` ' + G + s/^[^\n]*$/& / + s/\(.*\)\n\([0-9]*\)/\2 \1/ +# Clear flag from last substitution. + tb +# Append the next line. + :b + N +# Look whether second part is a continuation line. + s/\(.*\n\)"\(.*\)"/\1\2/ +# Yes, then branch. + ta + P + D +# Note that `D' includes a jump to the start!! +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use the sed command `D' here + s/.*\n\(.*\)/\1/ + tb +} +d diff --git a/lib/Makefile b/lib/Makefile index e1593fcd69..8b95c0a8c1 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,24 +1,14 @@ -# subdir level: -# -depth = .. +# lib/Makefile -include ./$(depth)/make/Variables.make -include ./$(depth)/make/Files.make -include ./$(depth)/make/Version.make -# +depth = .. NAME = lily SUBDIRS = include - +# MODULE_LIBS= $(depth)/flower MODULE_CXXFLAGS += -D_REENTRANT -MAINTARGET = $(LIBRARY)# huh? - -default: $(LIBRARY) - -# generic targets and rules: -# -include ./$(depth)/make/Targets.make -include ./$(depth)/make/Rules.make +include $(depth)/make/Stepmake.make +include $(stepdir)/C++.make +include $(stepdir)/Library.make diff --git a/lib/binary-source-file.cc b/lib/binary-source-file.cc index 971d4d0c21..9bcf0e5f70 100644 --- a/lib/binary-source-file.cc +++ b/lib/binary-source-file.cc @@ -39,15 +39,15 @@ Binary_source_file::error_str (char const* pos_ch_c_l) const String pre_str ((Byte const*)begin_ch_c_l, pos_ch_c_l - begin_ch_c_l); pre_str = String_convert::bin2hex_str (pre_str); for (int i = 2; i < pre_str.length_i (); i += 3) - pre_str = pre_str.left_str (i) + " " + pre_str.cut (i, INT_MAX); + pre_str = pre_str.left_str (i) + " " + pre_str.cut_str (i, INT_MAX); String post_str ((Byte const*)pos_ch_c_l, end_ch_c_l - pos_ch_c_l); post_str = String_convert::bin2hex_str (post_str); for (int i = 2; i < post_str.length_i (); i += 3) - post_str = post_str.left_str (i) + " " + post_str.cut (i, INT_MAX); + post_str = post_str.left_str (i) + " " + post_str.cut_str (i, INT_MAX); String str = pre_str - + String ('\n') - + String (' ', pre_str.length_i () + 1) + + to_str ('\n') + + to_str (' ', pre_str.length_i () + 1) + post_str; return str; } diff --git a/lib/duration-convert.cc b/lib/duration-convert.cc index 1fc42aa3be..c1240f3cdd 100644 --- a/lib/duration-convert.cc +++ b/lib/duration-convert.cc @@ -3,8 +3,8 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ #include #include "duration-convert.hh" @@ -23,19 +23,19 @@ String Duration_convert::dur2_str (Duration dur) { if (dur.ticks_i_) - return String ("[") + String (dur.ticks_i_) + "]"; + return String ("[") + to_str (dur.ticks_i_) + "]"; String str; if (dur.durlog_i_ >= 0) - str = String ( type2_i (dur.durlog_i_) ); + str = to_str ( type2_i (dur.durlog_i_) ); else if (dur.durlog_i_ == -1) str = "\\breve"; else if (dur.durlog_i_ == -2) str = "\\longa"; - str += String ('.', dur.dots_i_); + str += to_str ('.', dur.dots_i_); if (dur.plet_b ()) - str += String ("*") + String (dur.plet_.iso_i_) - + String ("/") + String (dur.plet_.type_i_); + str += String ("*") + to_str (dur.plet_.iso_i_) + + String ("/") + to_str (dur.plet_.type_i_); return str; } @@ -47,12 +47,11 @@ Duration_convert::dur2ticks_i (Duration dur) return dur2_mom (dur) * Moment (Duration::division_1_i_s); } - int Duration_convert::i2_type (int i) { int t=0; - while (!(i & 1)) { + while (i && !(i & 1)) { i >>= 1; t++; } diff --git a/lib/duration-iter.cc b/lib/duration-iter.cc index b1af3fd8dd..eac7a759ab 100644 --- a/lib/duration-iter.cc +++ b/lib/duration-iter.cc @@ -3,8 +3,8 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ #include #include "duration-convert.hh" diff --git a/lib/duration.cc b/lib/duration.cc index 95e056b789..7bdf8d00dc 100644 --- a/lib/duration.cc +++ b/lib/duration.cc @@ -3,8 +3,8 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Jan Nieuwenhuizen - Han-Wen Nienhuys + (c) 1997--1998 Jan Nieuwenhuizen + Han-Wen Nienhuys */ #include @@ -82,3 +82,4 @@ Duration::plet_b () { return !plet_.unit_b (); } + diff --git a/lib/include/Makefile b/lib/include/Makefile index 43a98084f3..5dba771ec9 100644 --- a/lib/include/Makefile +++ b/lib/include/Makefile @@ -1,17 +1,8 @@ # lib/include/Makefile -# subdir level: -# depth = ../.. -# -# identify module: -# -MODULE_NAME = lilypond - -# generic stuff/Makefile -# - -include ./$(depth)/make/Include.make +include $(depth)/make/Stepmake.make +include $(stepdir)/C++.make diff --git a/lib/include/binary-source-file.hh b/lib/include/binary-source-file.hh index 33ee6bd784..a6f252a1da 100644 --- a/lib/include/binary-source-file.hh +++ b/lib/include/binary-source-file.hh @@ -1,7 +1,7 @@ // // binary-source-file.hh -- declare Binary_source_file // -// copyright 1997 Jan Nieuwenhuizen +// copyright 1997 Jan Nieuwenhuizen #ifndef BINARY_SOURCE_FILE_HH #define BINARY_SOURCE_FILE_HH diff --git a/lib/include/duration-convert.hh b/lib/include/duration-convert.hh index 82e102d4c8..fc7ee51d97 100644 --- a/lib/include/duration-convert.hh +++ b/lib/include/duration-convert.hh @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -12,7 +12,7 @@ #include "duration.hh" #include "string.hh" //#include "array.hh" -#include "varray.hh" +#include "array.hh" /** Duration_convert handles all conversions to -n fro Duration (dur). diff --git a/lib/include/duration.hh b/lib/include/duration.hh index 59c968f751..367672ac4e 100644 --- a/lib/include/duration.hh +++ b/lib/include/duration.hh @@ -1,9 +1,9 @@ /* - duration.hh -- declare Duration Plet - + duration.hh -- declare Duration + source file of the LilyPond music typesetter - (c) 1997--1998 Jan Nieuwenhuizen + (c) 1997--1998 Jan Nieuwenhuizen */ @@ -17,7 +17,7 @@ #include "plet.hh" /** - Class to handle "musical" durations. This means: balltype 1,2,4,etc. and dots. + Handle "musical" durations. This means: balltype 1,2,4,etc. and dots. (dur) */ diff --git a/lib/include/file-storage.hh b/lib/include/file-storage.hh index b2e679bb57..4e6fca65ef 100644 --- a/lib/include/file-storage.hh +++ b/lib/include/file-storage.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lib/include/input.hh b/lib/include/input.hh index ac0780b21d..afdf6eff22 100644 --- a/lib/include/input.hh +++ b/lib/include/input.hh @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lib/include/mapped-file-storage.hh b/lib/include/mapped-file-storage.hh index 506bbc978f..50b12f5178 100644 --- a/lib/include/mapped-file-storage.hh +++ b/lib/include/mapped-file-storage.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lib/include/out/dummy.dep b/lib/include/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/include/plet.hh b/lib/include/plet.hh index de32eb1753..05b6297704 100644 --- a/lib/include/plet.hh +++ b/lib/include/plet.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lib/include/simple-file-storage.hh b/lib/include/simple-file-storage.hh index 4f4bd59199..1fe0136c50 100644 --- a/lib/include/simple-file-storage.hh +++ b/lib/include/simple-file-storage.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lib/include/source-file.hh b/lib/include/source-file.hh index 0983a829a4..ee671c785a 100644 --- a/lib/include/source-file.hh +++ b/lib/include/source-file.hh @@ -1,7 +1,7 @@ // // source-file.hh -- declare Source_file // -// copyright 1997 Jan Nieuwenhuizen +// copyright 1997 Jan Nieuwenhuizen #ifndef SOURCE_FILE_HH #define SOURCE_FILE_HH @@ -20,6 +20,7 @@ public: /** Ugh! filename gets changed! The path to the opened file may change, since it might be searched in multiple directories. */ Source_file (String filename_str_r ); + Source_file (String name_str, String data_str); virtual ~Source_file (); char const* ch_C () const; diff --git a/lib/include/source.hh b/lib/include/source.hh index f6a824fa70..395a9d8bb4 100644 --- a/lib/include/source.hh +++ b/lib/include/source.hh @@ -1,7 +1,7 @@ // // source.hh -- part of LilyPond // -// copyright 1997 Jan Nieuwenhuizen +// copyright 1997 Jan Nieuwenhuizen #ifndef SOURCE_HH #define SOURCE_HH @@ -16,12 +16,12 @@ public: Source_file * get_file_l (String &filename ); Source_file* sourcefile_l (char const* ch_C ); + void add (Source_file* sourcefile_p ); void set_path (File_path*p_C); void set_binary (bool); private: const File_path * path_C_; - void add (Source_file* sourcefile_p ); Pointer_list sourcefile_p_list_; bool binary_b_ ; }; diff --git a/lib/include/thank-you-cygnus.hh b/lib/include/thank-you-cygnus.hh new file mode 100644 index 0000000000..95d60bfc33 --- /dev/null +++ b/lib/include/thank-you-cygnus.hh @@ -0,0 +1,15 @@ +// +// windhoos-suck-suck-suck-thank-you-cygnus.hh +// +// mmap () should work now (cygnus beta 18), but let's keep it here +// for people using old cygnus releases +#if 0 //def _WINDOWS32 +#ifndef WINDHOOS_SUCK_SUCK_SUCK_HH +#define WINDHOOS_SUCK_SUCK_SUCK_HH + +caddr_t mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset); + +int munmap (caddr_t addr, size_t len); + +#endif // WINDHOOS_SUCK_SUCK_SUCK_HH +#endif // _WINDOWS32 // diff --git a/lib/include/warn.hh b/lib/include/warn.hh index 27bc4ff759..e22d320f33 100644 --- a/lib/include/warn.hh +++ b/lib/include/warn.hh @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh b/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh deleted file mode 100644 index 95d60bfc33..0000000000 --- a/lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh +++ /dev/null @@ -1,15 +0,0 @@ -// -// windhoos-suck-suck-suck-thank-you-cygnus.hh -// -// mmap () should work now (cygnus beta 18), but let's keep it here -// for people using old cygnus releases -#if 0 //def _WINDOWS32 -#ifndef WINDHOOS_SUCK_SUCK_SUCK_HH -#define WINDHOOS_SUCK_SUCK_SUCK_HH - -caddr_t mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset); - -int munmap (caddr_t addr, size_t len); - -#endif // WINDHOOS_SUCK_SUCK_SUCK_HH -#endif // _WINDOWS32 // diff --git a/lib/input.cc b/lib/input.cc index 46ddcb2ca6..4283783f8d 100644 --- a/lib/input.cc +++ b/lib/input.cc @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "proto.hh" #include "input.hh" @@ -94,7 +94,7 @@ Input::error (String s) const void Input::non_fatal_error (String s) const { - message (_ ("Non fatal error: ")+ s); + message (_ ("Non fatal error: ") + s); } String Input::location_str () const @@ -102,5 +102,5 @@ Input::location_str () const if (source_file_l_) return source_file_l_->file_line_column_str (defined_ch_C_); else - return _("(location unknown)"); + return "(" + _ ("position unknown") + ")"; } diff --git a/lib/mapped-file-storage.cc b/lib/mapped-file-storage.cc index 17d451d1a6..f9e6d88cbb 100644 --- a/lib/mapped-file-storage.cc +++ b/lib/mapped-file-storage.cc @@ -5,8 +5,8 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen . + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen . Nextstep fixes by tiggr@ics.ele.tue.nl */ @@ -71,7 +71,7 @@ Mapped_file_storage::map () data_caddr_ = (caddr_t)mmap ((void*)0, size_off_, PROT_READ, MAP_SHARED, fildes_i_, 0); if ((int)data_caddr_ == -1) - warning (String (_ ("can't map: error no: ")) + strerror (errno)); + warning (_ ("can't map file") + ": " + strerror (errno)); #endif } @@ -84,7 +84,8 @@ Mapped_file_storage::open (String name_str) if (fildes_i_ == -1) { - warning (String (_ ("can't open: ")) + name_str + String (": ") + strerror (errno)); + warning (_f ("can't open file: `%s\'", name_str) + + ": " + strerror (errno)); return; } diff --git a/lib/moment.cc b/lib/moment.cc index d29ce9065b..0f49d0aa21 100644 --- a/lib/moment.cc +++ b/lib/moment.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1996, 1997--1998 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ #include diff --git a/lib/out/dummy.dep b/lib/out/dummy.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/plet.cc b/lib/plet.cc index 9a098cc4c9..b27ecc9c0b 100644 --- a/lib/plet.cc +++ b/lib/plet.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "plet.hh" diff --git a/lib/simple-file-storage.cc b/lib/simple-file-storage.cc index 561ab838c9..1fd7ea7fc9 100644 --- a/lib/simple-file-storage.cc +++ b/lib/simple-file-storage.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include @@ -13,14 +13,13 @@ #endif #include "simple-file-storage.hh" -#include "varray.hh" +#include "array.hh" #include "string.hh" #include "warn.hh" void Simple_file_storage::load_stdin () { - int data_len = 0; len_i_ = 0; int c; @@ -42,7 +41,7 @@ Simple_file_storage::load_file (String s) if (!f) { - warning (_ ("can't open file `") + s + "'"); + warning (_f ("can't open file: `%s\'", s)); return ; } @@ -54,8 +53,7 @@ Simple_file_storage::load_file (String s) ret = fread (data_p_, sizeof (char), len_i_, f); if (ret!=len_i_) - warning (_ ("Huh? got ") + String (ret) + _ (", expected ") - + String (len_i_) + _ (" characters")); + warning (_f ("Huh? got %d, expected %d characters", ret, len_i_)); fclose (f); } @@ -80,7 +78,7 @@ Simple_file_storage::Simple_file_storage (String s) data_p_ = 0; len_i_ = 0; - if (!s.length_i ()) + if (!s.length_i () || (s == "-")) load_stdin (); else load_file (s); diff --git a/lib/source-file.cc b/lib/source-file.cc index 14fabe7959..5403abb517 100644 --- a/lib/source-file.cc +++ b/lib/source-file.cc @@ -3,8 +3,8 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Jan Nieuwenhuizen - & Han-Wen Nienhuys + (c) 1997--1998 Jan Nieuwenhuizen + & Han-Wen Nienhuys */ @@ -15,9 +15,10 @@ #include "proto.hh" #include "plist.hh" #include "warn.hh" -#include "windhoos-suck-suck-suck-thank-you-cygnus.hh" +#include "thank-you-cygnus.hh" #include "source-file.hh" #include "simple-file-storage.hh" +#include "string-storage.hh" Source_file::Source_file (String filename_str) { @@ -26,6 +27,13 @@ Source_file::Source_file (String filename_str) storage_p_ = new Simple_file_storage (filename_str); } +Source_file::Source_file (String name_str, String data_str) +{ + name_str_ = name_str; + istream_p_ = 0; + storage_p_ = new String_storage (data_str); +} + istream* Source_file::istream_l () { @@ -51,10 +59,10 @@ String Source_file::file_line_column_str (char const *context_ch_C) const { if (!ch_C ()) - return _ ("(unknown)"); + return "(" + _ ("position unknown") + ")"; else - return name_str () + ":" + String (line_i (context_ch_C)) - + ":" + String (char_i (context_ch_C)); + return name_str () + ":" + to_str (line_i (context_ch_C)) + + ":" + to_str (char_i (context_ch_C)); } String @@ -144,14 +152,14 @@ String Source_file::error_str (char const* pos_ch_C) const { if (!in_b (pos_ch_C)) - return _ ("(position unknown)"); + return "(" + _ ("position unknown") + ")"; int ch_i = char_i (pos_ch_C); String line = line_str (pos_ch_C); String context = line.left_str (ch_i) - + String ('\n') - + String (' ', column_i (pos_ch_C)) - + line.cut (ch_i, INT_MAX); + + to_str ('\n') + + to_str (' ', column_i (pos_ch_C)) + + line.cut_str (ch_i, INT_MAX); return context; } diff --git a/lib/source.cc b/lib/source.cc index 5d384f757e..81423bb1cb 100644 --- a/lib/source.cc +++ b/lib/source.cc @@ -3,7 +3,7 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -46,14 +46,14 @@ Sources::set_path (File_path *f_C) Source_file* Sources::get_file_l (String &file_str) //UGH { - if (path_C_) + if ((file_str != "-") && path_C_) { String file_str_o = path_C_->find (file_str); if ((file_str_o == "") && (file_str != "")) return 0; file_str = file_str_o; } - Source_file * f_p= (!binary_b_) ? + Source_file * f_p = (!binary_b_) ? new Source_file (file_str) : new Binary_source_file (file_str); add (f_p); return f_p; diff --git a/lib/template.cc b/lib/template.cc index 4ebec57399..7b7a3c229a 100644 --- a/lib/template.cc +++ b/lib/template.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "config.hh" diff --git a/lib/thank-you-cygnus.cc b/lib/thank-you-cygnus.cc new file mode 100644 index 0000000000..22cbb9d834 --- /dev/null +++ b/lib/thank-you-cygnus.cc @@ -0,0 +1,105 @@ +// +// windhoos.cc +// +// mmap () should work now (cygnus beta 18), but let's keep it here +// for people using old cygnus releases +#if 0 // def _WINDOWS32 + +#include +#include +#include +#include "thank-you-cygnus.hh" + +/* +HANDLE CreateFileMapping ( + HANDLE hFile, // handle to file to map + LPSECURITY_ATTRIBUTES lpFileMappingAttributes, // optional security attributes + DWORD flProtect, // protection for mapping object + DWORD dwMaximumSizeHigh, // high-order 32 bits of object size + DWORD dwMaximumSizeLow, // low-order 32 bits of object size + LPCTSTR lpName // name of file-mapping object +); + + +LPVOID MapViewOfFile ( + HANDLE hFileMappingObject, // file-mapping object to map into address space + DWORD dwDesiredAccess, // access mode + DWORD dwFileOffsetHigh, // high-order 32 bits of file offset + DWORD dwFileOffsetLow, // low-order 32 bits of file offset + DWORD dwNumberOfBytesToMap // number of bytes to map +); + + +io.h: +long _get_osfhandle (int filehandle); +*/ + +// cygnus's gnu-win32-b17.1 does not have _get_osfhandle +// however, after some hacking, it turns out that: + +static const int OSF_OFFSET_i = 72; +static const int OSF_BASE_i = -3; +static const int OSF_FACTOR_i = 8; +// let-s hope bill doesn-t change his mind any time soon :-) + +// so that, while waiting for cygnus's mmap, we can write: + +// #define HAVE_GET_OSFHANDLE // no we still cannot; works only with cl.exe +long +_get_osfhandle (int filedes_i) +{ + return (long)(OSF_OFFSET_i + (filedes_i + OSF_BASE_i) * OSF_FACTOR_i); +} + +#ifdef HAVE_GET_OSFHANDLE + +#include + +caddr_t +mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) +{ + (void)flags; + (void)prot; + (void)addr; + HANDLE osf = (HANDLE)_get_osfhandle (fd); + HANDLE file_handle = CreateFileMapping (osf, (void*)0, PAGE_READONLY, + 0, len, 0); + return (caddr_t)MapViewOfFile (file_handle, FILE_MAP_READ, 0, offset, len); +} + + +int +munmap (caddr_t addr, size_t len) +{ + (void)len; + return UnmapViewOfFile (addr); +} + +#else // ! HAVE_GET_OSFHANDLE // + +caddr_t +mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) +{ + (void)flags; + (void)prot; + (void)addr; + (void)offset; + char* ch_p = new char[ len ]; + if (ch_p) + read (fd, (void*)ch_p, len); + return ch_p; +} + + +int +munmap (caddr_t addr, size_t len) +{ + (void)len; + delete (char*)addr; + return 0; +} + +#endif // !HAVE_GET_OSFHANDLE // + + +#endif // _WINDOWS32 // diff --git a/lib/warn.cc b/lib/warn.cc index afdbd97f4f..afc6f7b9ce 100644 --- a/lib/warn.cc +++ b/lib/warn.cc @@ -4,7 +4,7 @@ void error (String s) { - cerr << _ ("error: ") << s << "\n"; + cerr << _ ("error: ") << s << '\n'; exit (1); } @@ -12,7 +12,7 @@ error (String s) void non_fatal_error (String s) { - cerr << _ ("error: ") << s << "\n"; + cerr << _ ("error: ") << s << '\n'; } void diff --git a/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc b/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc deleted file mode 100644 index c0aaab91ff..0000000000 --- a/lib/windhoos-suck-suck-suck-thank-you-cygnus.cc +++ /dev/null @@ -1,105 +0,0 @@ -// -// windhoos.cc -// -// mmap () should work now (cygnus beta 18), but let's keep it here -// for people using old cygnus releases -#if 0 // def _WINDOWS32 - -#include -#include -#include -#include "windhoos-suck-suck-suck-thank-you-cygnus.hh" - -/* -HANDLE CreateFileMapping ( - HANDLE hFile, // handle to file to map - LPSECURITY_ATTRIBUTES lpFileMappingAttributes, // optional security attributes - DWORD flProtect, // protection for mapping object - DWORD dwMaximumSizeHigh, // high-order 32 bits of object size - DWORD dwMaximumSizeLow, // low-order 32 bits of object size - LPCTSTR lpName // name of file-mapping object -); - - -LPVOID MapViewOfFile ( - HANDLE hFileMappingObject, // file-mapping object to map into address space - DWORD dwDesiredAccess, // access mode - DWORD dwFileOffsetHigh, // high-order 32 bits of file offset - DWORD dwFileOffsetLow, // low-order 32 bits of file offset - DWORD dwNumberOfBytesToMap // number of bytes to map -); - - -io.h: -long _get_osfhandle (int filehandle); -*/ - -// cygnus's gnu-win32-b17.1 does not have _get_osfhandle -// however, after some hacking, it turns out that: - -static const int OSF_OFFSET_i = 72; -static const int OSF_BASE_i = -3; -static const int OSF_FACTOR_i = 8; -// let-s hope bill doesn-t change his mind any time soon :-) - -// so that, while waiting for cygnus's mmap, we can write: - -// #define HAVE_GET_OSFHANDLE // no we still cannot; works only with cl.exe -long -_get_osfhandle (int filedes_i) -{ - return (long)(OSF_OFFSET_i + (filedes_i + OSF_BASE_i) * OSF_FACTOR_i); -} - -#ifdef HAVE_GET_OSFHANDLE - -#include - -caddr_t -mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) -{ - (void)flags; - (void)prot; - (void)addr; - HANDLE osf = (HANDLE)_get_osfhandle (fd); - HANDLE file_handle = CreateFileMapping (osf, (void*)0, PAGE_READONLY, - 0, len, 0); - return (caddr_t)MapViewOfFile (file_handle, FILE_MAP_READ, 0, offset, len); -} - - -int -munmap (caddr_t addr, size_t len) -{ - (void)len; - return UnmapViewOfFile (addr); -} - -#else // ! HAVE_GET_OSFHANDLE // - -caddr_t -mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset) -{ - (void)flags; - (void)prot; - (void)addr; - (void)offset; - char* ch_p = new char[ len ]; - if (ch_p) - read (fd, (void*)ch_p, len); - return ch_p; -} - - -int -munmap (caddr_t addr, size_t len) -{ - (void)len; - delete (char*)addr; - return 0; -} - -#endif // !HAVE_GET_OSFHANDLE // - - -#endif // _WINDOWS32 // diff --git a/lily/Makefile b/lily/Makefile index d94ae0d93a..7da45565b8 100644 --- a/lily/Makefile +++ b/lily/Makefile @@ -1,48 +1,30 @@ -# project LilyPond -- the musical typesetter # title makefile for lilypond # file lily/Makefile -# -# Copyright (c) 1997 by -# Jan Nieuwenhuizen -# Han-Wen Nienhuys -# - -# subdir level: -# + depth = .. -# -# identify module: -# NAME = lilypond SUBDIRS = include +EXTRA_DIST_FILES = VERSION +MODULE_LIBS=$(depth)/lib $(depth)/flower + +include $(depth)/make/Stepmake.make +include $(stepdir)/C++.make +include $(stepdir)/Executable.make -# generic variables: include Stable.make -include ./$(depth)/make/Variables.make include VERSION -# list of distribution files: -# -EXTRA_DISTFILES = VERSION -MODULE_LIBDEPS= check-flower-deps check-lib-deps -MODULE_LIBES= -llily -lflower - -# main target of this module: -# -default: $(EXECUTABLE) -include ./$(depth)/make/Files.make -include ./$(depth)/make/Targets.make -include ./$(depth)/make/Rules.make - # force these: Make can't know these have to be generated in advance my-lily-lexer.cc: $(outdir)/parser.hh -$(outdir)/lexer.cc: $(outdir)/parser.hh +$(outdir)/lexer.o: $(outdir)/parser.hh -EXECUTABLES=lilypond -include $(depth)/make/Executable.make - $(outdir)/lily-version.o: $(outdir)/version.hh +$(outdir)/main.o: $(outdir)/BLURB.hh $(outdir)/COPERTINA.hh $(outdir)/FLAPTEKST.hh + + +VERSION: $(depth)/VERSION + cp $< $@ diff --git a/lily/VERSION b/lily/VERSION index c7309d695e..522667c82e 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,5 +1,9 @@ -MAJOR_VERSION=0 -MINOR_VERSION=1 -PATCH_LEVEL=65 +PACKAGE_NAME=LilyPond +MAJOR_VERSION=1 +MINOR_VERSION=0 +PATCH_LEVEL=1 MY_PATCH_LEVEL= +# use the above to send patches, always empty for released version: +# please don't move these comments up; the patch should fail if +# the previous version was wrong. diff --git a/lily/abbrev.cc b/lily/abbrev.cc index 977c1307c6..323bf8ddd8 100644 --- a/lily/abbrev.cc +++ b/lily/abbrev.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -13,7 +13,7 @@ #include "paper-def.hh" #include "lookup.hh" #include "stem.hh" -#include "dimen.hh" +#include "dimension.hh" Abbreviation::Abbreviation () { @@ -30,63 +30,108 @@ Abbreviation::do_print () const Molecule* Abbreviation::brew_molecule_p () const { - Real dy = paper ()->interbeam_f (stem_l_->mult_i_); - Real w = 1.5 * paper ()->lookup_l ()->ball (2).dim_.x ().length (); + Real interbeam_f = paper ()->interbeam_f (stem_l_->mult_i_); + Real w = 1.5 * lookup_l ()->ball (2).dim_.x ().length (); + Real internote_f = paper ()->internote_f (); Real interline_f = paper ()->interline_f (); + Real beam_f = paper ()->beam_thickness_f (); int beams_i = 0; - Real slope_f = paper ()->internote_f () / 4; + Real slope_f = internote_f / 4 / internote_f; if (stem_l_ && stem_l_->beam_l_) { - // huh? - slope_f = 2 * stem_l_->beam_l_->slope_f_; + slope_f = stem_l_->beam_l_->slope_f_; // ugh, rather calc from Abbreviation_req beams_i = stem_l_->beams_right_i_ >? stem_l_->beams_left_i_; - } - paper ()->lookup_l ()->beam (slope_f, 20 PT, 1 PT); + } + Real sl = slope_f * internote_f; - Atom a (paper ()->lookup_l ()->beam (slope_f, w, .48 * interline_f)); + Atom a (lookup_l ()->beam (sl, w, beam_f)); a.translate (Offset (-w/2, w / 2 * slope_f)); Molecule *beams= new Molecule; for (int i = 0; i < abbrev_flags_i_; i++) { Atom b (a); - b.translate_axis (dy * i, Y_AXIS); - beams->add (b); + b.translate_axis (interbeam_f * i, Y_AXIS); + beams->add_atom (b); } +#define EGCS_ICE +#ifndef EGCS_ICE beams->translate_axis (-beams->extent ()[Y_AXIS].center (), Y_AXIS); +#else + beams->translate_axis (-(beams->extent ()[Y_AXIS].min () + + beams->extent ()[Y_AXIS].max ()) / 2 , Y_AXIS); +#endif if (stem_l_) - { - /* Try to be in the middle of the open part of the stem and - between on the staff. - - (urgh) - */ - Direction sd = stem_l_->dir_; - Interval empty_stem (stem_l_->chord_start_f () * sd , - (stem_l_->stem_end_f ()* sd) - beams_i * dy); - empty_stem *= sd; - - Interval instaff = empty_stem; - instaff.intersect (interline_f * Interval (-2,2)); - if (instaff.empty_b ()) - instaff = empty_stem; - - instaff.print (); - beams->translate (Offset(stem_l_->hpos_f () - hpos_f (), - instaff.center ())); + { + if (stem_l_->beam_l_) + { + beams->translate (Offset(stem_l_->hpos_f () - hpos_f (), + stem_l_->stem_end_f () * internote_f - + stem_l_->beam_l_->dir_ * beams_i * interbeam_f)); + } + else +#if 1 + { + /* + Beams should intersect one beamthickness below staff end + */ + Real dy = - beams->extent ()[Y_AXIS].length () / 2 * stem_l_->dir_; + dy /= internote_f; + dy += stem_l_->stem_end_f (); + dy *= internote_f; +// urg: can't: stem should be stetched first +// dy -= paper ()->beam_thickness_f () * stem_l_->dir_; + beams->translate (Offset(stem_l_->hpos_f () - hpos_f (), dy)); + } +#else + { + /* + urg: this is wrong, even if coded correctly + + Try to be in the middle of the open part of the stem and + between on the staff. + + (urgh) + */ + Direction sd = stem_l_->dir_; + // watch out: chord_start_f is (the only one) not in dim(internote) + Interval empty_stem (stem_l_->chord_start_f () / internote_f * sd + + interline_f, (stem_l_->stem_end_f ()* sd)); + empty_stem *= sd; + + Interval instaff = empty_stem; + /* + huh? i don't understand, hw + what about: + .fly= \stemup d'''2:16 + instaff.intersect (Interval (-4,4)); + */ + // hmm, let's try + if (stem_l_->get_default_dir () == stem_l_->dir_) + instaff.intersect (Interval (-4,4)); + + if (instaff.empty_b ()) + instaff = empty_stem; + + instaff.print (); + instaff *= internote_f; + beams->translate (Offset(stem_l_->hpos_f () - hpos_f (), + instaff.center ())); + } +#endif } return beams; } void -Abbreviation::do_substitute_dependent (Score_elem*o, Score_elem*n) +Abbreviation::do_substitute_dependent (Score_element*o, Score_element*n) { if (stem_l_ == o) - stem_l_ = n ? (Stem*)n->item () : 0; + stem_l_ = n ? (Stem*)n->access_Item () : 0; } diff --git a/lily/abbreviation-beam-engraver.cc b/lily/abbreviation-beam-engraver.cc index f2a69f5504..67c09cb7fc 100644 --- a/lily/abbreviation-beam-engraver.cc +++ b/lily/abbreviation-beam-engraver.cc @@ -3,8 +3,8 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ #include "duration-convert.hh" @@ -27,11 +27,11 @@ Abbreviation_beam_engraver::Abbreviation_beam_engraver () bool Abbreviation_beam_engraver::do_try_request (Request*r) { - Musical_req* mus_l = r->musical (); + Musical_req* mus_l = r->access_Musical_req (); if (!mus_l) return false; - Abbreviation_beam_req * b = mus_l->abbrev_beam (); + Abbreviation_beam_req * b = mus_l->access_Abbreviation_beam_req (); if (!b) return false; @@ -52,7 +52,7 @@ Abbreviation_beam_engraver::do_process_requests () { if (!abeam_p_ && span_reqs_drul_[LEFT]) { abeam_p_ = new Abbreviation_beam; - announce_element (Score_elem_info (abeam_p_, span_reqs_drul_[LEFT])); + announce_element (Score_element_info (abeam_p_, span_reqs_drul_[LEFT])); } } @@ -80,12 +80,12 @@ Abbreviation_beam_engraver::do_removal_processing () } void -Abbreviation_beam_engraver::acknowledge_element (Score_elem_info i) +Abbreviation_beam_engraver::acknowledge_element (Score_element_info i) { if (!abeam_p_ || !i.elem_l_->is_type_b (Stem::static_name ())) return; - Stem* s = (Stem*)i.elem_l_->item (); + Stem* s = (Stem*)i.elem_l_->access_Item (); int type_i = span_reqs_drul_[LEFT]->type_i_; s->flag_i_ = intlog2 (type_i) - 2; @@ -98,5 +98,5 @@ Abbreviation_beam_engraver::acknowledge_element (Score_elem_info i) if (s->type_i () != 1) // no abbrev gaps on half note s->beam_gap_i_ = s->flag_i_ - ((s->type_i () >? 2) - 2); - abeam_p_->add (s); + abeam_p_->add_stem (s); } diff --git a/lily/abbreviation-beam.cc b/lily/abbreviation-beam.cc index 6637d19f0f..91f4ff21f9 100644 --- a/lily/abbreviation-beam.cc +++ b/lily/abbreviation-beam.cc @@ -3,14 +3,14 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ #include "p-col.hh" -#include "varray.hh" +#include "array.hh" #include "proto.hh" -#include "dimen.hh" +#include "dimension.hh" #include "abbreviation-beam.hh" #include "misc.hh" #include "debug.hh" diff --git a/lily/afm-reader.cc b/lily/afm-reader.cc new file mode 100644 index 0000000000..ba3adae70f --- /dev/null +++ b/lily/afm-reader.cc @@ -0,0 +1,154 @@ +/* + afm-reader.cc -- implement Adobe_font_metric_file + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#include "direction.hh" +#include "afm.hh" +#include "data-file.hh" +#include "string-convert.hh" + + +Box +parse_box (Array a) +{ + Box b; + int i=0; + b[X_AXIS][SMALLER] = a[i++].value_f (); + b[Y_AXIS][SMALLER] = a[i++].value_f (); + b[X_AXIS][BIGGER] = a[i++].value_f (); + b[Y_AXIS][BIGGER] = a[i++].value_f (); + return b; +} + +String +strip_leading_white (String c) +{ + int i=0; + while (c[i] == ' ') + i++; + c = c.cut_str (i, INT_MAX); + return c; +} + +Adobe_font_char_metric +read_char_metric (String s) +{ + Adobe_font_char_metric char_metric; + Array a= String_convert::split_arr (s, ';'); + for (int i=0; i < a.size (); i++) + { + String c = strip_leading_white (a[i]); + + Array b = String_convert::split_arr (c, ' '); + if (b[0] == "C") + char_metric.C_ = b[1].value_i (); + if (b[0] == "WX") + char_metric.WX_ = b[1].value_f (); + if (b[0] == "N") + char_metric.N_ = strip_leading_white (b[1]); + if (b[0] == "B") + char_metric.B_ = parse_box (b.slice (1, b.size())); + } + return char_metric; +} + +void +read_char_metrics (Array &mets, Data_file &input) +{ + while (!input.eof_b ()) + { + input.gobble_leading_white (); + String s= input.get_line (); + if (s == "EndCharMetrics") + return ; + mets.push (read_char_metric (s)); + } +} + +#define READSTRING(k) if (key == #k) { \ + afm.k ## _ = input.get_line (); continue; } +#define READBOX(b) if (key == #b) { \ + afm.b ## _ = read_box (input); continue; } +#define READREAL(r) if (key == #r) { \ + afm.r ## _ = read_real (input); continue; } + +Real +read_real(Data_file &d) +{ + String s = d.get_word (); + d.gobble_white (); + return s.value_f (); +} + + +Box +read_box ( Data_file &d) +{ + Box b; + b[X_AXIS][SMALLER] = read_real (d); + b[Y_AXIS][SMALLER] = read_real (d); + b[X_AXIS][BIGGER] = read_real (d); + b[Y_AXIS][BIGGER] = read_real (d); + return b; +} + +Adobe_font_metric +read_afm (String fn) +{ + Data_file input (fn); + + assert (!input.eof_b ()); + + Adobe_font_metric afm; + + while (!input.eof_b ()) + { + input.gobble_leading_white (); + String w = input.get_word (); + if (w == "StartFontMetrics") + break; + input.get_line (); + } + + while (!input.eof_b ()) + { + input.gobble_leading_white (); + String key = input.get_word (); + if (key == "Comment") + continue; + + READSTRING(FontName); + READSTRING(FullName); + READSTRING(FamilyName); + READSTRING(Weight); + READSTRING(Version); + READSTRING(Notice); + READSTRING(EncodingScheme); + READREAL(ItalicAngle); + READREAL(UnderlineThickness); + READREAL(UnderlinePosition); + READBOX(FontBBox); + if (key == "StartCharMetrics") + { + input.get_line (); + read_char_metrics (afm.char_metrics_, input); + } + if (key == "EndFontMetrics") + break; + + } + + /* + read to EOF + */ + input.gulp (); + + return afm; +} + + diff --git a/lily/afm.cc b/lily/afm.cc new file mode 100644 index 0000000000..2935a8a967 --- /dev/null +++ b/lily/afm.cc @@ -0,0 +1,118 @@ +/* + afm.cc -- implement Adobe_font_metric + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#include "afm.hh" +#include "box.hh" +#include "direction.hh" +#include "debug.hh" + +Box & +Adobe_font_char_metric::bbox () +{ + return B_; +} + +String & +Adobe_font_char_metric::name () +{ + return N_; + +} + +int & +Adobe_font_char_metric::code () +{ + return C_; +} + +Real & +Adobe_font_char_metric::width () +{ + return WX_; +} + +Adobe_font_char_metric::Adobe_font_char_metric () +{ + C_ = 0; +} + +Adobe_font_metric::Adobe_font_metric () +{ + ItalicAngle_ = 0.0; + IsFixedPitch_ = false; + UnderlinePosition_ =0.; + UnderlineThickness_=0.; +} + + +#define APPEND_CHAR_METRIC_ELT(k) outstr += to_str (#k) + " " + to_str (k ## _) + "; " + +String +box_str (Box b) +{ + return to_str (b[X_AXIS][SMALLER]) + " " + + to_str(b[Y_AXIS][SMALLER]) + " " + + to_str (b[X_AXIS][BIGGER]) + " "+ + to_str (b[Y_AXIS][BIGGER]); +} + +#define APPEND_BOX(k) outstr += to_str (#k) + " " + box_str (k ## _) + ";" + +String +Adobe_font_char_metric::str () const +{ + String outstr ; + + APPEND_CHAR_METRIC_ELT (C); + APPEND_CHAR_METRIC_ELT(N); + APPEND_CHAR_METRIC_ELT(WX); + + APPEND_BOX(B); + return outstr + "\n"; +} + +#define WRITESTRING(k) outstr += String (#k) + " " + to_str (k ## _) + "\n" + +String +Adobe_font_metric::str () const +{ + String outstr; + WRITESTRING(FontName); + WRITESTRING(FullName); + WRITESTRING(FamilyName); + WRITESTRING(Weight); + WRITESTRING(Version); + WRITESTRING(Notice); + WRITESTRING(EncodingScheme); + WRITESTRING(ItalicAngle); + WRITESTRING(UnderlineThickness); + WRITESTRING(UnderlinePosition); + outstr += "FontBBox " + box_str (FontBBox_) + "\n"; + + for (int i=0; i < char_metrics_.size (); i++) + outstr += char_metrics_[i].str (); + + return outstr; +} + +/* + UGH. should have hashtable. + */ +Adobe_font_char_metric +Adobe_font_metric::find_char (String nm) const +{ + for (int i=0; i < char_metrics_.size (); i++) + if (char_metrics_[i].N_ == nm) + return char_metrics_[i]; + + warning (_f ("can't find character called `%s'", nm.ch_C())); + + Adobe_font_char_metric a; + return a; +} diff --git a/lily/align-element.cc b/lily/align-element.cc new file mode 100644 index 0000000000..4f80841a66 --- /dev/null +++ b/lily/align-element.cc @@ -0,0 +1,187 @@ +/* + align-elem.cc -- implement Align_elem + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + +#include "align-element.hh" +#include "interval.hh" +#include "direction.hh" + + +struct Align_element_content { + Score_element * elem_l_; + int priority_i_; + + static int compare (Align_element_content const &h1, + Align_element_content const &h2) + { + return h1.priority_i_ - h2.priority_i_; + } + Align_element_content (Score_element *elem_l, int p) + { + priority_i_ = p; + elem_l_ = elem_l; + } + Align_element_content () { + elem_l_ = 0; + priority_i_ = 0; + } +}; + + + +void +Align_element::add_element (Score_element*el_l) +{ + int p = priority_i_arr_.size (); + add_element_priority (el_l, p); +} + +void +Align_element::add_element_priority (Score_element *el, int p) +{ + assert (! contains_b (el)); + elem_l_arr_.push (el); + priority_i_arr_.push (p); + add_dependency (el); +} + +void +Align_element::do_substitute_dependency (Score_element*o, + Score_element*n) +{ + int i; + while ((i = elem_l_arr_.find_i (o))>=0) + if (n) + elem_l_arr_[i] = n; + else + elem_l_arr_.del (i); + + if (o == center_l_) + { + center_l_ = n; + } +} + +/** + Align elements top to bottom. + The first element has its top at y = 0.0 afterwards + + TODO configurable, like Horizontal_align_item + + TODO should parametrise in direction and coordinate. + */ +void +Align_element::do_post_processing() +{ + if (axis_ == Y_AXIS) + do_side_processing (); +} + +void +Align_element::do_pre_processing () +{ + if (axis_ == X_AXIS) + do_side_processing (); +} + +void +Align_element::do_side_processing () +{ + sort_elements (); + Array dims; + + for (int i=0; i < elem_l_arr_.size(); i++) + { + Interval y = elem_l_arr_[i]->extent(axis_) ; + if (y.empty_b()) + y = Interval (0,0); + + dims.push (y); + } + + Real where_f=0; + Real center_f = 0.0; + for (int i=0 ; i < elem_l_arr_.size(); i++) + { + Real dy = - stacking_dir_ * dims[i][-stacking_dir_]; + if (i) + dy += stacking_dir_ * dims[i-1][stacking_dir_]; + + if (i) + { + dy = (dy >? threshold_interval_[SMALLER] ) + translate_axis (where_f, axis_); + } + + if (align_dir_ == RIGHT) + center_f = where_f; + + if (center_f) + for (int i=0 ; i < elem_l_arr_.size(); i++) + elem_l_arr_[i]->translate_axis (- center_f, axis_); +} + +Align_element::Align_element() +{ + threshold_interval_ = Interval (0, Interval::infinity ()); + transparent_b_ = true; + set_empty (true); + stacking_dir_ = DOWN; + align_dir_ = LEFT; + axis_ = X_AXIS; + center_l_ =0; +} + + +bool +Align_element::contains_b (Score_element const *e) const +{ + return elem_l_arr_.find_l (e); +} + + +IMPLEMENT_IS_TYPE_B1(Align_element, Score_element); + +void +Align_element::sort_elements () +{ + Array content; + for (int i =0; i < elem_l_arr_.size(); i++) + content.push (Align_element_content (elem_l_arr_[i], priority_i_arr_[i])); + content.sort (Align_element_content::compare); + + elem_l_arr_.clear(); + priority_i_arr_.clear(); + + for (int i =0; i < content.size(); i++) + { + elem_l_arr_.push (content[i].elem_l_); + priority_i_arr_.push (content[i].priority_i_); + } +} + +void +Align_element::do_print () const +{ +#if 0 + DOUT << "contains: "; + for (int i=0 ; i < item_l_arr_.size(); i++) + DOUT << item_l_arr_[i]->name () << ", "; +#endif +} diff --git a/lily/atom.cc b/lily/atom.cc index eba9660c92..48b5c73720 100644 --- a/lily/atom.cc +++ b/lily/atom.cc @@ -3,14 +3,16 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ + + #include "atom.hh" #include "tex.hh" #include "interval.hh" -#include "dimen.hh" +#include "dimension.hh" #include "string.hh" -#include "varray.hh" +#include "array.hh" #include "debug.hh" #include "main.hh" @@ -26,8 +28,8 @@ Atom::check_infinity_b ()const Axis ax = (Axis)a; if (abs (off_[ax]) >= 100 CM) { - warning (_("ridiculous dimension ") + axis_name_str (ax) + ", " - +print_dimen(off_[ax])); + warning (_f ("ridiculous dimension: %s, %s", axis_name_str (ax), + print_dimen(off_[ax]))); if (experimental_features_global_b) assert (false); @@ -45,11 +47,11 @@ void Atom::print() const { #ifndef NPRINT - DOUT << "texstring: " < + (c) 1997--1998 Jan Nieuwenhuizen */ #include "audio-column.hh" @@ -19,7 +19,7 @@ Audio_column::Audio_column (Moment at_mom) } void -Audio_column::add (Audio_item* l) +Audio_column::add_audio_item (Audio_item* l) { audio_item_l_list_.bottom().add (l); l->audio_column_l_ = this; diff --git a/lily/audio-element.cc b/lily/audio-element.cc index 18f265c46e..bffe351af4 100644 --- a/lily/audio-element.cc +++ b/lily/audio-element.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "audio-element.hh" diff --git a/lily/audio-item.cc b/lily/audio-item.cc index 81b0285ba6..71757314a7 100644 --- a/lily/audio-item.cc +++ b/lily/audio-item.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Jan Nieuwenhuizen + (c) 1997--1998 Jan Nieuwenhuizen */ #include "debug.hh" #include "audio-item.hh" @@ -42,9 +42,10 @@ Audio_key::midi_item_p() } IMPLEMENT_IS_TYPE_B1 (Audio_key, Audio_item); -Audio_note::Audio_note (Request* req_l) +Audio_note::Audio_note (Request* req_l, int transposing_i) : Audio_item (req_l) { + transposing_i_ = transposing_i; } Midi_item* @@ -69,17 +70,17 @@ Audio_tempo::midi_item_p() IMPLEMENT_IS_TYPE_B1(Audio_tempo, Audio_item); -Audio_meter::Audio_meter (Request* req_l) +Audio_time_signature::Audio_time_signature (Request* req_l) : Audio_item (req_l) { } Midi_item* -Audio_meter::midi_item_p() +Audio_time_signature::midi_item_p() { - return new Midi_meter (this); + return new Midi_time_signature (this); } -IMPLEMENT_IS_TYPE_B1(Audio_meter, Audio_item); +IMPLEMENT_IS_TYPE_B1(Audio_time_signature, Audio_item); Audio_text::Audio_text (Audio_text::Type type, String text_str) : Audio_item (0) diff --git a/lily/audio-staff.cc b/lily/audio-staff.cc index d35fb23a58..235de874de 100644 --- a/lily/audio-staff.cc +++ b/lily/audio-staff.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Jan Nieuwenhuizen + (c) 1997--1998 Jan Nieuwenhuizen */ #include "audio-staff.hh" @@ -13,7 +13,7 @@ #include "midi-walker.hh" void -Audio_staff::add (Audio_item* l) +Audio_staff::add_audio_item (Audio_item* l) { audio_item_l_list_.bottom().add (l); } diff --git a/lily/axis-group-administration.cc b/lily/axis-group-administration.cc deleted file mode 100644 index bf42295aee..0000000000 --- a/lily/axis-group-administration.cc +++ /dev/null @@ -1,83 +0,0 @@ -/* - axis-group.cc -- implement Axis_group_administration - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ -#include "interval.hh" -#include "axis-group-administration.hh" -#include "axis-group-element.hh" -#include "graphical-element.hh" -#include "debug.hh" - -/** don't copy anything: an element can only be in one - Axis_group_element at one time. */ -Axis_group_administration::Axis_group_administration (Axis_group_administration const&) -{ -} - -bool -Axis_group_administration::contains_b (Graphical_element const *e) const -{ - return elem_l_arr_.find_l (e); -} - -Interval -Axis_group_administration::extent (Axis axis) const -{ - Interval r; - for (int i=0; i < elem_l_arr_.size(); i++) - r.unite (elem_l_arr_[i]->extent (axis)); - return r; -} - -void -Axis_group_administration::add_element (Graphical_element*e, - Axis_group_element*g, Axis a1, Axis a2) -{ - // don't add self to self. - assert (e != g); - Axis_group_element *& g1 = e->axis_group_l_a_[a1]; - Axis_group_element *& g2 = e->axis_group_l_a_[a2]; - - assert (!g1 || g1 == g); - assert (!g2 || g2 == g); - g1 = g; - g2 = g; - elem_l_arr_.push (e); -} - - - -void -Axis_group_administration::remove_element (Graphical_element*e, Axis a1, Axis a2) -{ - assert (contains_b (e)); - elem_l_arr_.unordered_substitute (e,0); - - e->axis_group_l_a_[a1] = 0; - e->axis_group_l_a_[a2] = 0; -} - -void -Axis_group_administration::remove_all (Axis a1, Axis a2) -{ - for (int i=0; i < elem_l_arr_.size(); i++) - { - Graphical_element*e=elem_l_arr_[i]; - e->axis_group_l_a_[a1] = 0; - e->axis_group_l_a_[a2] = 0; - } - elem_l_arr_.clear (); -} - - -void -Axis_group_administration::print() const -{ -#ifndef NPRINT - for (int i=0; i < elem_l_arr_.size(); i++) - DOUT << elem_l_arr_[i]->name () << ' '; -#endif -} diff --git a/lily/axis-group-element.cc b/lily/axis-group-element.cc index b4061af7f5..8aa8263668 100644 --- a/lily/axis-group-element.cc +++ b/lily/axis-group-element.cc @@ -3,10 +3,11 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "axis-group-element.hh" +#include "graphical-axis-group.hh" void Axis_group_element::do_unlink() @@ -17,45 +18,69 @@ Axis_group_element::do_unlink() void Axis_group_element::do_junk_links() { - axis_admin_.elem_l_arr_.set_size (0); + elem_l_arr_.set_size (0); } -bool -Axis_group_element::contains_b (Graphical_element const*e) const -{ - return axis_admin_.contains_b (e); -} - -Link_array +Link_array Axis_group_element::get_extra_dependencies() const { return elem_l_arr (); } -Link_array +Link_array Axis_group_element::elem_l_arr () const { /* ugh. I know - */ - Link_array r; - for (int i=0; i < axis_admin_.elem_l_arr_.size (); i++) - r.push ((Score_elem*)axis_admin_.elem_l_arr_[i]); + */ + Link_array r; + for (int i=0; i < elem_l_arr_.size (); i++) + r.push (elem_l_arr_[i]->access_Score_element()); return r; } +Link_array +Axis_group_element::get_children () +{ + Link_array childs; + Link_array elems = elem_l_arr (); + for (int i=0; i < elems.size (); i++) + { + Score_element* e = elems[i]; + childs.push (e) ; + Axis_group_element * axis_group= e->access_Axis_group_element (); + if (axis_group) + childs.concat (axis_group->get_children ()); + } + + return childs; +} + void Axis_group_element::do_print() const { - axis_admin_.print(); + Graphical_axis_group::do_print(); } +Axis_group_element::Axis_group_element(Axis a1, Axis a2) + : Graphical_axis_group (a1,a2) +{ + transparent_b_ = true; +} -Axis_group_element::Axis_group_element() +Axis_group_element::Axis_group_element () + : Graphical_axis_group (X_AXIS, Y_AXIS) { transparent_b_ = true; } +Axis_group_element* +Axis_group_element::access_Axis_group_element () +{ + return this; +} + + -IMPLEMENT_IS_TYPE_B1(Axis_group_element, Score_elem); +IMPLEMENT_IS_TYPE_B2(Axis_group_element, Score_element, Graphical_axis_group); diff --git a/lily/axis-group-item.cc b/lily/axis-group-item.cc index 2706fa8faa..33dfdceba9 100644 --- a/lily/axis-group-item.cc +++ b/lily/axis-group-item.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "axis-group-item.hh" #include "p-col.hh" @@ -13,10 +13,10 @@ IMPLEMENT_IS_TYPE_B2(Axis_group_item, Axis_group_element, Item); void Axis_group_item::OK() const { - Link_array elems = elem_l_arr (); + Link_array elems = elem_l_arr (); for (int i=0; i < elems.size(); i++) { - Item * it_l = elems[i]->item(); + Item * it_l = elems[i]->access_Item (); assert (it_l); } } @@ -31,15 +31,15 @@ Axis_group_item::do_breakable_col_processing() copy_breakable_items(); - Link_array elems = elem_l_arr (); + Link_array elems = elem_l_arr (); for (int i=0; i < elems.size(); i++) { - Item* it_l = elems[i]->item(); + Item* it_l = elems[i]->access_Item (); Direction j=LEFT; do { Item *new_l = - it_l->find_prebroken_piece (broken_to_drul_[j]->break_status_i_); + it_l->find_prebroken_piece (broken_to_drul_[j]->break_status_dir_); ((Axis_group_item*)broken_to_drul_[j])->add_element (new_l); } while (flip(&j)!=LEFT); diff --git a/lily/axis-group-spanner.cc b/lily/axis-group-spanner.cc index 344b4060cc..64a28da895 100644 --- a/lily/axis-group-spanner.cc +++ b/lily/axis-group-spanner.cc @@ -3,10 +3,11 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "axis-group-spanner.hh" +#include "debug.hh" #include "item.hh" #include "p-col.hh" @@ -17,16 +18,16 @@ void Axis_group_spanner::do_break_processing_if_unbroken() { - Link_array elems = elem_l_arr (); + Link_array elems = elem_l_arr (); Line_of_score *my_line = line_l(); for (int i=0; i < elems.size(); i++) { if (!elems[i]->line_l()) { - Item * item_l = elems[i]->item(); + Item * item_l = elems[i]->access_Item (); if (item_l && item_l->breakable_b_ - && item_l->break_status_i() == 0) + && item_l->break_status_dir() == 0) { // last two checks are paranoia Item * broken_item_l = @@ -37,9 +38,11 @@ Axis_group_spanner::do_break_processing_if_unbroken() } } } + void Axis_group_spanner::do_break_processing() { + DOUT << "do_break_processing ()\n"; bool breaking_self_b = ! Spanner::line_l(); if (!breaking_self_b) { @@ -49,12 +52,12 @@ Axis_group_spanner::do_break_processing() } break_into_pieces (); - Link_array loose_elems = elem_l_arr (); + Link_array loose_elems = elem_l_arr (); remove_all(); for (int i=0; i < loose_elems.size(); i++) { - Score_elem * elt = loose_elems[i]; + Score_element * elt = loose_elems[i]; Line_of_score *elt_line = elt->line_l(); if (! elt_line) @@ -62,9 +65,9 @@ Axis_group_spanner::do_break_processing() /* this piece doesn't know where it belongs. Find out if it was broken, and use the broken remains */ - if (elt->spanner()) + if (elt->access_Spanner ()) { - Spanner * sp = elt->spanner(); + Spanner * sp = elt->access_Spanner (); for (int j =0; j < broken_into_l_arr_.size(); j++) { @@ -73,22 +76,22 @@ Axis_group_spanner::do_break_processing() Spanner * broken_span_l = sp->find_broken_piece ( - ((Score_elem*)my_broken_l)->line_l()); + ((Score_element*)my_broken_l)->line_l()); if (broken_span_l) my_broken_l->add_element (broken_span_l); } } - else if (elt->item() - && elt->item()->breakable_b_ - && elt->item()->break_status_i () == 0) + else if (elt->access_Item () + && elt->access_Item ()->breakable_b_ + && elt->access_Item ()->break_status_dir () == 0) { // broken items Direction j=LEFT; do { - Item * my_item = elt->item()->broken_to_drul_[j]; + Item * my_item = elt->access_Item ()->broken_to_drul_[j]; Line_of_score * item_line_l = my_item->line_l() ; if (! item_line_l) continue; @@ -97,6 +100,14 @@ Axis_group_spanner::do_break_processing() = (Axis_group_spanner*)find_broken_piece (item_line_l); if (v) v->add_element (my_item); + else + { + my_item->transparent_b_ = true; + my_item->set_empty (true); + /*my_item->unlink (); + delete my_item;*/ + } + } while (flip(&j) != LEFT); } @@ -119,6 +130,8 @@ void Axis_group_spanner::do_print() const { Axis_group_element::do_print(); + + Spanner::do_print (); } diff --git a/lily/bar-column-engraver.cc b/lily/bar-column-engraver.cc new file mode 100644 index 0000000000..2f1d760fa5 --- /dev/null +++ b/lily/bar-column-engraver.cc @@ -0,0 +1,103 @@ +/* + bar-column-grav.cc -- implement Bar_column_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + + +#include "bar-column-engraver.hh" +#include "bar-column.hh" +#include "request.hh" +#include "script.hh" +#include "bar.hh" + +Bar_column_engraver::Bar_column_engraver() +{ + bar_l_ =0; + barcol_p_ =0; + break_priority_i_ = 0; +} + +void +Bar_column_engraver::do_creation_processing () +{ +} + + +void +Bar_column_engraver::do_process_requests () +{ + Scalar pri = get_property ("barColumnPriority"); + if (pri.length_i() && pri.isnum_b ()) + { + break_priority_i_ = int(pri); + } +} + +void +Bar_column_engraver::create_column () +{ + if (!barcol_p_) + { + barcol_p_ = new Bar_column; + barcol_p_->breakable_b_ =true; + barcol_p_->break_priority_i_ = break_priority_i_; + announce_element (Score_element_info (barcol_p_, 0)); + } +} + + +void +Bar_column_engraver::acknowledge_element (Score_element_info info) +{ + Item * it = info.elem_l_->access_Item (); + if (!it) + return; + + if (it->is_type_b (Script::static_name()) + && it->breakable_b_ + && info.origin_grav_l_arr_.size() == 1 + && it->break_priority_i_ == break_priority_i_) + { + create_column (); + barcol_p_->add_script ((Script*)it); + } + else if (info.origin_grav_l_arr_.size() == 1 + && it->break_priority_i_ == break_priority_i_ + && it->breakable_b_ + && it->is_type_b (Bar::static_name())) + { + create_column (); + barcol_p_->set_bar ( (Bar*)it); + } +} + + +void +Bar_column_engraver::process_acknowledged () +{ +} + + + +void +Bar_column_engraver::do_pre_move_processing() +{ + if (barcol_p_) + { + typeset_element (barcol_p_); + barcol_p_ =0; + } +} + +void +Bar_column_engraver::do_post_move_processing() +{ + script_l_arr_.clear(); + bar_l_ =0; +} + +IMPLEMENT_IS_TYPE_B1(Bar_column_engraver, Engraver); +ADD_THIS_TRANSLATOR(Bar_column_engraver); diff --git a/lily/bar-column-grav.cc b/lily/bar-column-grav.cc deleted file mode 100644 index 7afced803a..0000000000 --- a/lily/bar-column-grav.cc +++ /dev/null @@ -1,76 +0,0 @@ -/* - bar-column-grav.cc -- implement Bar_column_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#include "bar-column-grav.hh" -#include "bar-column.hh" -#include "request.hh" -#include "script.hh" -#include "bar.hh" - -Bar_column_engraver::Bar_column_engraver() -{ - bar_l_ =0; - barcol_p_ =0; -} - - -void -Bar_column_engraver::acknowledge_element (Score_elem_info info) -{ - if (info.elem_l_->is_type_b (Script::static_name()) - && info.req_l_->command() - && info.origin_grav_l_arr_.size() == 1) - { - script_l_arr_.push ((Script*)info.elem_l_->item()); - } - else if (info.origin_grav_l_arr_.size() == 1 - && info.elem_l_->is_type_b (Bar::static_name())) - bar_l_ = (Bar*)info.elem_l_->item(); - - if (bar_l_ && !barcol_p_) - { - barcol_p_ = new Bar_column; - barcol_p_->breakable_b_ =true; - barcol_p_->break_priority_i_ = bar_l_ -> break_priority_i_; - barcol_p_->set_bar (bar_l_); - - announce_element (Score_elem_info (barcol_p_, 0)); - } - - if (barcol_p_) - { - for (int i=0; i < script_l_arr_.size(); i++) - { - script_l_arr_[i]->breakable_b_ = true; - script_l_arr_[i]->break_priority_i_ = barcol_p_-> break_priority_i_; - barcol_p_->add (script_l_arr_[i]); - } - script_l_arr_.clear(); - } -} - -void -Bar_column_engraver::do_pre_move_processing() -{ - if (barcol_p_) - { - typeset_element (barcol_p_); - barcol_p_ =0; - } -} - -void -Bar_column_engraver::do_post_move_processing() -{ - script_l_arr_.clear(); - bar_l_ =0; -} - -IMPLEMENT_IS_TYPE_B1(Bar_column_engraver, Engraver); -ADD_THIS_TRANSLATOR(Bar_column_engraver); diff --git a/lily/bar-column.cc b/lily/bar-column.cc index 57bf47660d..e61c398900 100644 --- a/lily/bar-column.cc +++ b/lily/bar-column.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "bar.hh" @@ -23,12 +23,12 @@ Bar_column::set_bar (Bar*b) } void -Bar_column::do_substitute_dependency (Score_elem*o,Score_elem*n) +Bar_column::do_substitute_dependency (Score_element*o,Score_element*n) { Script_column::do_substitute_dependency (o,n); if (o == bar_l_) { - bar_l_ = n ? (Bar*)n->item() : 0; + bar_l_ = n ? (Bar*)n->access_Item () : 0; } } diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc new file mode 100644 index 0000000000..7ed4bad871 --- /dev/null +++ b/lily/bar-engraver.cc @@ -0,0 +1,113 @@ +/* + bar-reg.cc -- implement Bar_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + +#include "bar-engraver.hh" +#include "bar.hh" +#include "musical-request.hh" +#include "multi-measure-rest.hh" +#include "command-request.hh" +#include "time-description.hh" +#include "engraver-group.hh" + +Bar_engraver::Bar_engraver() +{ + bar_p_ =0; + do_post_move_processing(); +} + +bool +Bar_engraver::do_try_request (Request*r_l) +{ + Command_req* c_l = r_l->access_Command_req (); + if (!c_l|| !c_l->access_Bar_req ()) + return false; + Bar_req * b= c_l->access_Bar_req (); + if (bar_req_l_ && bar_req_l_->equal_b (b)) + return false; + + bar_req_l_ = b; + + return true; +} + +void +Bar_engraver::create_bar () +{ + if (!bar_p_) + { + bar_p_ = new Bar; + bar_p_->break_priority_i_ = 0; + announce_element (Score_element_info (bar_p_, bar_req_l_)); + } +} + + +void +Bar_engraver::do_creation_processing () +{ + create_bar (); + bar_p_->type_str_ = ""; +} + +void +Bar_engraver::do_removal_processing () +{ + if (bar_p_) + { + typeset_element (bar_p_); + bar_p_ =0; + } +} + +void +Bar_engraver::do_process_requests() +{ + if (bar_req_l_) + { + if (!bar_p_) + create_bar (); + + bar_p_->type_str_ = bar_req_l_->type_str_; + } + else + { + Time_description const *time = get_staff_info().time_C_; + if (time && !time->whole_in_measure_) + create_bar (); + } + + if (!bar_p_) + { + Break_req r; + r.penalty_i_ = Break_req::DISALLOW; + daddy_grav_l ()->try_request (&r); + } +} + + +void +Bar_engraver::do_pre_move_processing() +{ + if (bar_p_) + { + typeset_element (bar_p_); + bar_p_ =0; + } +} + +void +Bar_engraver::do_post_move_processing() +{ + bar_req_l_ = 0; +} + + +IMPLEMENT_IS_TYPE_B1(Bar_engraver,Engraver); +ADD_THIS_TRANSLATOR(Bar_engraver); + + diff --git a/lily/bar-grav.cc b/lily/bar-grav.cc deleted file mode 100644 index 33e62ad6a9..0000000000 --- a/lily/bar-grav.cc +++ /dev/null @@ -1,113 +0,0 @@ -/* - bar-reg.cc -- implement Bar_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - -#include "bar-grav.hh" -#include "bar.hh" -#include "musical-request.hh" -#include "multi-measure-rest.hh" -#include "command-request.hh" -#include "time-description.hh" -#include "engraver-group.hh" - -Bar_engraver::Bar_engraver() -{ - bar_p_ =0; - do_post_move_processing(); -} - -bool -Bar_engraver::do_try_request (Request*r_l) -{ - Command_req* c_l = r_l->command(); - if (!c_l|| !c_l->bar()) - return false; - Bar_req * b= c_l->bar(); - if (bar_req_l_ && bar_req_l_->equal_b (b)) - return false; - - bar_req_l_ = b; - - return true; -} - -void -Bar_engraver::create_bar () -{ - if (!bar_p_) - { - bar_p_ = new Bar; - bar_p_->break_priority_i_ = 0; - announce_element (Score_elem_info (bar_p_, bar_req_l_)); - } -} - - -void -Bar_engraver::do_creation_processing () -{ - create_bar (); - bar_p_->type_str_ = ""; -} - -void -Bar_engraver::do_removal_processing () -{ - if (bar_p_) - { - typeset_element (bar_p_); - bar_p_ =0; - } -} - -void -Bar_engraver::do_process_requests() -{ - if (bar_req_l_) - { - if (!bar_p_) - create_bar (); - - bar_p_->type_str_ = bar_req_l_->type_str_; - } - else - { - Time_description const *time = get_staff_info().time_C_; - if (time && !time->whole_in_measure_) - create_bar (); - } - - if (!bar_p_) - { - Break_req r; - r.penalty_i_ = Break_req::DISALLOW; - daddy_grav_l ()->try_request (&r); - } -} - - -void -Bar_engraver::do_pre_move_processing() -{ - if (bar_p_) - { - typeset_element (bar_p_); - bar_p_ =0; - } -} - -void -Bar_engraver::do_post_move_processing() -{ - bar_req_l_ = 0; -} - - -IMPLEMENT_IS_TYPE_B1(Bar_engraver,Engraver); -ADD_THIS_TRANSLATOR(Bar_engraver); - - diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc new file mode 100644 index 0000000000..8a79324621 --- /dev/null +++ b/lily/bar-number-engraver.cc @@ -0,0 +1,84 @@ +/* + bar-number-grav.cc -- implement Bar_number_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + + +#include "bar-number-engraver.hh" +#include "script.hh" +#include "text-def.hh" +#include "paper-def.hh" +#include "command-request.hh" +#include "bar.hh" +#include "span-bar.hh" +#include "stem.hh" +#include "time-description.hh" +#include "dimension.hh" + +Bar_number_engraver::Bar_number_engraver() +{ + script_p_ =0; +} + +void +Bar_number_engraver::acknowledge_element (Score_element_info i) +{ + + Item *it=i.elem_l_->access_Item (); + if (script_p_ + || !it || !it->is_type_b (Bar::static_name())) + return; + + /* Only put numbers on bars that are at our own level (don't put + numbers over the staffs of a GrandStaff, only over the GrandStaff + itself */ + if (i.origin_grav_l_arr_.size() != 1) + return; + + Time_description const * time = get_staff_info().time_C_; + if (!time || time->cadenza_b_) + return; + + script_p_ = new Script; + Text_def *td_p = new Text_def; + td_p->text_str_ = to_str (time->bars_i_); + + td_p->align_dir_ = LEFT; + + script_p_->dir_ = UP; + script_p_->axis_ = Y_AXIS; + script_p_->specs_p_ = td_p->clone (); + script_p_->breakable_b_ = true; + + Scalar pri = get_property ("barNumberBreakPriority"); + if (pri.length_i () && pri.isnum_b ()) + { + script_p_->break_priority_i_ = int (pri); + } + else + script_p_->break_priority_i_ = it->break_priority_i_; + + Scalar padding = get_property ("barScriptPadding"); + if (padding.length_i() && padding.isnum_b ()) + { + script_p_->padding_f_ = Real(padding); + } + + announce_element (Score_element_info (script_p_,0)); +} + +void +Bar_number_engraver::do_pre_move_processing() +{ + if (script_p_) + { + typeset_element (script_p_); + script_p_ =0; + } +} + +IMPLEMENT_IS_TYPE_B1(Bar_number_engraver,Engraver); +ADD_THIS_TRANSLATOR(Bar_number_engraver); diff --git a/lily/bar-number-grav.cc b/lily/bar-number-grav.cc deleted file mode 100644 index be49f69b3f..0000000000 --- a/lily/bar-number-grav.cc +++ /dev/null @@ -1,68 +0,0 @@ -/* - bar-number-grav.cc -- implement Bar_number_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#include "bar-number-grav.hh" -#include "script.hh" -#include "text-def.hh" -#include "command-request.hh" -#include "bar.hh" -#include "stem.hh" -#include "time-description.hh" - -Bar_number_engraver::Bar_number_engraver() -{ - script_p_ =0; -} - -static Command_script_req dummy; -static Stem support; - -void -Bar_number_engraver::acknowledge_element (Score_elem_info i) -{ - if (i.origin_grav_l_arr_.size() == 1 && - i.elem_l_->is_type_b (Bar::static_name()) && !script_p_) - { - Time_description const * time = get_staff_info().time_C_; - if (!time || time->cadenza_b_) - return ; - - script_p_ = new Script; - Text_def *td_p =new Text_def; - td_p->text_str_ = time->bars_i_; - td_p->align_i_ = LEFT; - - script_p_->specs_l_ = td_p; - script_p_->breakable_b_ = true; - - // ugh, howto move this up? - script_p_->dir_ = UP; -//// script_p_->y_ += 2; - script_p_->y_ = 10; - - support.dir_ = UP; - support.set_stemend (10); - script_p_->set_stem (&support); - - announce_element (Score_elem_info (script_p_, &dummy)); - } -} - -void -Bar_number_engraver::do_pre_move_processing() -{ - if (script_p_) - { - typeset_element (script_p_); - script_p_ =0; - } -} - -IMPLEMENT_IS_TYPE_B1(Bar_number_engraver,Engraver); -ADD_THIS_TRANSLATOR(Bar_number_engraver); diff --git a/lily/bar.cc b/lily/bar.cc index 701bbd7b86..32120fa1bf 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "bar.hh" @@ -13,18 +13,16 @@ #include "lookup.hh" #include "debug.hh" -Bar::Bar() +IMPLEMENT_IS_TYPE_B1 (Bar,Item); + +Bar::Bar () { breakable_b_ = true; type_str_ = "|"; } - - -IMPLEMENT_IS_TYPE_B1(Bar,Item); - void -Bar::do_print() const +Bar::do_print () const { #ifndef NPRINT DOUT << type_str_; @@ -32,11 +30,10 @@ Bar::do_print() const } Molecule* -Bar::brew_molecule_p() const +Bar::brew_molecule_p () const { - Paper_def *p = paper(); - Atom s = p->lookup_l()->bar (type_str_, - p->get_var ("barsize")); + Paper_def *p = paper (); + Atom s = lookup_l ()->bar (type_str_, p->get_var ("barsize")); Molecule*output = new Molecule (Atom (s)); return output; @@ -51,19 +48,20 @@ static char const *bar_breaks[][3] ={ {"|", "|", ""}, {"", "|s", "|"}, {"", "|:", "|:"}, - {"||.", "||.", ""}, + {"|.", "|.", ""}, {":|", ":|", ""}, {"||", "||", ""}, + {".|.", ".|.", ""}, {0,0,0} }; void -Bar::do_pre_processing() +Bar::do_pre_processing () { for (int i=0; bar_breaks[i][0]; i++) { if (bar_breaks[i][1] == type_str_) - type_str_ = bar_breaks[i][break_status_i()+1]; + type_str_ = bar_breaks[i][break_status_dir ()+1]; } /* diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc new file mode 100644 index 0000000000..6ef0ba09fc --- /dev/null +++ b/lily/beam-engraver.cc @@ -0,0 +1,139 @@ +/* + beam-grav.cc -- implement Beam_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ +#include "duration-convert.hh" +#include "time-description.hh" +#include "beam-engraver.hh" +#include "stem.hh" +#include "beam.hh" +#include "musical-request.hh" +#include "grouping.hh" +#include "p-col.hh" +#include "warn.hh" + +Beam_engraver::Beam_engraver() +{ + span_reqs_drul_[LEFT] = span_reqs_drul_[RIGHT] =0; + beam_p_ =0; + current_grouping_p_ =0; +} + +bool +Beam_engraver::do_try_request(Request*r) +{ + Musical_req* mus_l = r->access_Musical_req (); + if (!mus_l) + return false; + + Beam_req* b = mus_l->access_Beam_req (); + if (!b) + return false; + + if (bool (beam_p_) == bool (b->spantype == Span_req::START)) + return false; + + Direction d = (!beam_p_) ? LEFT : RIGHT; + if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (mus_l)) + return false; + + span_reqs_drul_[d] = b; + return true; +} + +void +Beam_engraver::do_process_requests() +{ + if (beam_p_ || !span_reqs_drul_[LEFT]) + return; + + current_grouping_p_ = new Rhythmic_grouping; + beam_p_ = new Beam; + + Scalar prop = get_property ("beamslopedamping"); + if (prop.isnum_b ()) + beam_p_->damping_i_ = prop; + + prop = get_property ("beamquantisation"); + if (prop.isnum_b ()) + beam_p_->quantisation_ = (Beam::Quantisation)(int)prop; + + announce_element (Score_element_info (beam_p_, span_reqs_drul_[LEFT])); +} + +void +Beam_engraver::do_pre_move_processing() +{ + if (!beam_p_ || !span_reqs_drul_[RIGHT]) + return; + + Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_; + rg_C->extend (current_grouping_p_->interval()); + beam_p_->set_grouping (*rg_C, *current_grouping_p_); + typeset_element (beam_p_); + beam_p_ = 0; + + delete current_grouping_p_; + current_grouping_p_ = 0; + + span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0; +} + +void +Beam_engraver::do_removal_processing() +{ + if (beam_p_) + { + span_reqs_drul_[LEFT]->warning (_("unterminated beam")); + typeset_element (beam_p_); + beam_p_ =0; + } +} + + +void +Beam_engraver::acknowledge_element (Score_element_info i) +{ + if (!beam_p_ || !i.elem_l_->is_type_b (Stem::static_name ())) + return; + + Stem* s = (Stem*)i.elem_l_->access_Item (); + if (!i.req_l_ || !i.req_l_->access_Musical_req () || !i.req_l_->access_Musical_req ()->access_Rhythmic_req ()) + { + ::warning ( _("Stem must have Rhythmic structure.")); + return; + } + + Rhythmic_req *rhythmic_req = i.req_l_->access_Musical_req ()->access_Rhythmic_req (); + if (rhythmic_req->duration_.durlog_i_<= 2) + { + rhythmic_req->warning (_ ("stem doesn't fit in beam")); + return; + } + + /* + TODO: do something sensible if it doesn't fit in the beam. + */ + Moment start = get_staff_info().time_C_->whole_in_measure_; + + if (!current_grouping_p_->child_fit_b (start)) + { + String s (_("please fix me") + ": " + + _f ("stem at %s doesn't fit in beam", now_moment ().str ())); + if (i.req_l_) + i.req_l_->warning(s); + else + warning (s); + } + else + { + current_grouping_p_->add_child (start, rhythmic_req->duration ()); + s->flag_i_ = rhythmic_req->duration_.durlog_i_; + beam_p_->add_stem (s); + } +} +IMPLEMENT_IS_TYPE_B1(Beam_engraver, Engraver); +ADD_THIS_TRANSLATOR(Beam_engraver); diff --git a/lily/beam-grav.cc b/lily/beam-grav.cc deleted file mode 100644 index 9a3f9586c2..0000000000 --- a/lily/beam-grav.cc +++ /dev/null @@ -1,133 +0,0 @@ -/* - beam-grav.cc -- implement Beam_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ -#include "duration-convert.hh" -#include "time-description.hh" -#include "beam-grav.hh" -#include "stem.hh" -#include "beam.hh" -#include "musical-request.hh" -#include "grouping.hh" -#include "p-col.hh" - -Beam_engraver::Beam_engraver() -{ - span_reqs_drul_[LEFT] = span_reqs_drul_[RIGHT] =0; - beam_p_ =0; - current_grouping_p_ =0; -} - -bool -Beam_engraver::do_try_request(Request*r) -{ - Musical_req* mus_l = r->musical(); - if (!mus_l) - return false; - - Beam_req* b = mus_l->beam (); - if (!b) - return false; - - if (bool (beam_p_) == bool (b->spantype == Span_req::START)) - return false; - - Direction d = (!beam_p_) ? LEFT : RIGHT; - if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (mus_l)) - return false; - - span_reqs_drul_[d] = b; - return true; -} - -void -Beam_engraver::do_process_requests() -{ - if (beam_p_ || !span_reqs_drul_[LEFT]) - return; - - current_grouping_p_ = new Rhythmic_grouping; - beam_p_ = new Beam; - - Scalar prop = get_property ("beamslopedamping"); - if (prop.isnum_b ()) - beam_p_->damping_i_ = prop; - - prop = get_property ("beamquantisation"); - if (prop.isnum_b ()) - beam_p_->quantisation_ = (Beam::Quantisation)(int)prop; - - announce_element (Score_elem_info (beam_p_, span_reqs_drul_[LEFT])); -} - -void -Beam_engraver::do_pre_move_processing() -{ - if (!beam_p_ || !span_reqs_drul_[RIGHT]) - return; - - Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_; - rg_C->extend (current_grouping_p_->interval()); - beam_p_->set_grouping (*rg_C, *current_grouping_p_); - typeset_element (beam_p_); - beam_p_ = 0; - - delete current_grouping_p_; - current_grouping_p_ = 0; - - span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0; -} - -void -Beam_engraver::do_removal_processing() -{ - if (beam_p_) - { - span_reqs_drul_[LEFT]->warning (_("unterminated beam")); - typeset_element (beam_p_); - beam_p_ =0; - } -} - - -void -Beam_engraver::acknowledge_element (Score_elem_info i) -{ - if (!beam_p_ || !i.elem_l_->is_type_b (Stem::static_name ())) - return; - - Stem* s = (Stem*)i.elem_l_->item(); - Rhythmic_req *rhythmic_req = i.req_l_->musical ()->rhythmic (); - if (rhythmic_req->duration_.durlog_i_<= 2) - { - rhythmic_req->warning (_("Stem doesn't fit in Beam")); - return; - } - - /* - TODO: do something sensible if it doesn't fit in the beam. - */ - Moment start = get_staff_info().time_C_->whole_in_measure_; - - if (!current_grouping_p_->child_fit_b (start)) - { - String s (_("please fix me: Stem at ") - + now_moment ().str () - + _(" does not fit in beam")); - if (i.req_l_) - i.req_l_->warning(s); - else - warning (s); - } - else - { - current_grouping_p_->add_child (start, rhythmic_req->duration ()); - s->flag_i_ = rhythmic_req->duration_.durlog_i_; - beam_p_->add (s); - } -} -IMPLEMENT_IS_TYPE_B1(Beam_engraver, Engraver); -ADD_THIS_TRANSLATOR(Beam_engraver); diff --git a/lily/beam-swallow-trans.cc b/lily/beam-swallow-trans.cc index 38418fc333..f6a4194ca7 100644 --- a/lily/beam-swallow-trans.cc +++ b/lily/beam-swallow-trans.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lily/beam.cc b/lily/beam.cc index 55256fdd5b..dea856499b 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -3,8 +3,8 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998, 1998 Han-Wen Nienhuys - Jan Nieuwenhuizen + (c) 1997--1998, 1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ @@ -19,9 +19,9 @@ #include #include "p-col.hh" -#include "varray.hh" +#include "array.hh" #include "proto.hh" -#include "dimen.hh" +#include "dimension.hh" #include "beam.hh" #include "abbreviation-beam.hh" #include "misc.hh" @@ -34,7 +34,6 @@ #include "lookup.hh" #include "grouping.hh" #include "stem-info.hh" -#include "main.hh" // experimental features IMPLEMENT_IS_TYPE_B1 (Beam, Spanner); @@ -50,7 +49,7 @@ Beam::Beam () } void -Beam::add (Stem*s) +Beam::add_stem (Stem*s) { stems_.push (s); s->add_dependency (this); @@ -79,7 +78,7 @@ Beam::brew_molecule_p () const Molecule sb = stem_beams (i, next, prev); Real x = i->hpos_f ()-x0; sb.translate (Offset (x, (x * slope_f_ + left_y_) * internote_f)); - mol_p->add (sb); + mol_p->add_molecule (sb); } mol_p->translate_axis (x0 - spanned_drul_[LEFT]->absolute_coordinate (X_AXIS), X_AXIS); @@ -105,7 +104,7 @@ void Beam::do_print () const { #ifndef NPRINT - DOUT << "slope_f_ " <is_type_b (Stem::static_name ())) - stems_.substitute ((Stem*)o->item (), n? (Stem*) n->item ():0); + stems_.substitute ((Stem*)o->access_Item (), n? (Stem*) n->access_Item ():0); } Interval @@ -173,15 +172,30 @@ Beam::set_default_dir () But is that because it really looks better, or because he wants to provide some real simple hands-on rules. - We have our doubts. + We have our doubts, so we simply provide all sensible alternatives. */ - // fixme. make runtime. - // majority - // dir_ = (count[UP] > count[DOWN]) ? UP : DOWN; - - // mean centre distance - dir_ = (total[UP] > total[DOWN]) ? UP : DOWN; + Dir_algorithm a = (Dir_algorithm)rint(paper ()->get_var ("beam_dir_algorithm")); + switch (a) + { + case MAJORITY: + dir_ = (count[UP] > count[DOWN]) ? UP : DOWN; + break; + case MEAN: + // mean centre distance + dir_ = (total[UP] > total[DOWN]) ? UP : DOWN; + break; + default: + case MEDIAN: + // median centre distance + if (!count[UP]) + dir_ = DOWN; + else if (!count[DOWN]) + dir_ = UP; + else + dir_ = (total[UP] / count[UP] > total[DOWN] / count[DOWN]) ? UP : DOWN; + break; + } for (int i=0; i ? info.miny_f_ - y; } } @@ -621,7 +635,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const Real dy = interbeam_f; Real stemdx = staffline_f; Real sl = slope_f_* internote_f; - paper ()->lookup_l ()->beam (sl, 20 PT, 1 PT); + lookup_l ()->beam (sl, 20 PT, 1 PT); Molecule leftbeams; Molecule rightbeams; @@ -631,16 +645,21 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const { int lhalfs= lhalfs = here->beams_left_i_ - prev->beams_right_i_ ; int lwholebeams= here->beams_left_i_ beams_right_i_ ; - Real w = (here->hpos_f () - prev->hpos_f ())/4 note_width ();; + /* + Half beam should be one note-width, + but let's make sure two half-beams never touch + */ + Real w = here->hpos_f () - prev->hpos_f (); + w = w/2 note_width (); Atom a; if (lhalfs) // generates warnings if not - a = paper ()->lookup_l ()->beam (sl, w, beam_f); + a = lookup_l ()->beam (sl, w, beam_f); a.translate (Offset (-w, -w * sl)); for (int j = 0; j < lhalfs; j++) { Atom b (a); b.translate_axis (-dir_ * dy * (lwholebeams+j), Y_AXIS); - leftbeams.add (b); + leftbeams.add_atom (b); } } @@ -650,7 +669,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const int rwholebeams = here->beams_right_i_ beams_left_i_; Real w = next->hpos_f () - here->hpos_f (); - Atom a = paper ()->lookup_l ()->beam (sl, w + stemdx, beam_f); + Atom a = lookup_l ()->beam (sl, w + stemdx, beam_f); a.translate_axis( - stemdx/2, X_AXIS); int j = 0; Real gap_f = 0; @@ -661,34 +680,34 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const { Atom b (a); b.translate_axis (-dir_ * dy * j, Y_AXIS); - rightbeams.add (b); + rightbeams.add_atom (b); } // TODO: notehead widths differ for different types gap_f = paper ()->note_width () / 2; w -= 2 * gap_f; - a = paper ()->lookup_l ()->beam (sl, w + stemdx, beam_f); + a = lookup_l ()->beam (sl, w + stemdx, beam_f); } for (; j < rwholebeams; j++) { Atom b (a); b.translate (Offset (gap_f, -dir_ * dy * j)); - rightbeams.add (b); + rightbeams.add_atom (b); } - w = w/4 note_width (); + w = w/2 note_width (); if (rhalfs) - a = paper ()->lookup_l ()->beam (sl, w, beam_f); + a = lookup_l ()->beam (sl, w, beam_f); for (; j < rwholebeams + rhalfs; j++) { Atom b (a); b.translate_axis (-dir_ * dy * j, Y_AXIS); - rightbeams.add (b); + rightbeams.add_atom (b); } } - leftbeams.add (rightbeams); + leftbeams.add_molecule (rightbeams); /* Does beam quanting think of the asymetry of beams? diff --git a/lily/bezier.cc b/lily/bezier.cc index 2242c4ffa5..e851e74f03 100644 --- a/lily/bezier.cc +++ b/lily/bezier.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1998 Jan Nieuwenhuizen + (c) 1998 Jan Nieuwenhuizen */ #include @@ -12,7 +12,7 @@ #ifndef STANDALONE #include "direction.hh" -#include "dimen.hh" +#include "dimension.hh" #include "paper-def.hh" #include "debug.hh" #include "main.hh" @@ -168,6 +168,12 @@ Bezier_bow::blow_fit () Real b = dy1; Real h = -b / a; + if (sign (h) != sign (h1)) + return; + + if (sign (h) != sign (h1)) + return; + control_[1].y () += -h1 +h; control_[2].y () += -h1 +h; return_[1].y () += -h1 +h; diff --git a/lily/bow.cc b/lily/bow.cc index b986debd30..04a09d7bc9 100644 --- a/lily/bow.cc +++ b/lily/bow.cc @@ -3,8 +3,8 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ #include "bow.hh" @@ -33,9 +33,9 @@ Bow::brew_molecule_p () const Atom a; if (!dash_i_) - a = paper ()->lookup_l ()->slur (c); + a = lookup_l ()->slur (c); else - a = paper ()->lookup_l ()->dashed_slur (c, thick, dash_i_); + a = lookup_l ()->dashed_slur (c, thick, dash_i_); if (check_debug && !monitor->silent_b ("Bow")) { @@ -53,7 +53,7 @@ Bow::brew_molecule_p () const a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT])); Molecule* mol_p = new Molecule; - mol_p->add (a); + mol_p->add_atom (a); return mol_p; } @@ -68,6 +68,26 @@ Bow::center () const return Offset (dx / 2, dy); } + + +/* + + ugh . Control points are too crude measures. + */ +Interval +Bow::do_height () const +{ + Array c (get_controls()); + + Interval iv; + for (int i=0; i < c.size (); i++) + { + Real y = c[i][Y_AXIS]; + iv.unite (Interval (y,y)); + } + return iv; +} + Interval Bow::do_width () const { diff --git a/lily/boxes.cc b/lily/boxes.cc index 0e9befcad2..92c8fa6c5a 100644 --- a/lily/boxes.cc +++ b/lily/boxes.cc @@ -3,11 +3,11 @@ source file of the GNU LilyPond music typesetter - (c) 1996, 1997--1998 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ -#include "boxes.hh" -#include "varray.hh" +#include "box.hh" +#include "array.hh" void Box::translate (Offset o) diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index b95f5fd41e..f973976774 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -3,16 +3,18 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "break-align-item.hh" +#include "dimension.hh" void Break_align_item::do_pre_processing() { - - align_i_ = break_status_i(); + align_dir_ = break_status_dir(); + threshold_interval_[SMALLER] = 1.5 PT; + flip (&align_dir_); Horizontal_align_item::do_pre_processing(); } diff --git a/lily/break.cc b/lily/break.cc index cc5c6f92a4..f6c374dce5 100644 --- a/lily/break.cc +++ b/lily/break.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1996, 1997--1998 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ #include "score-column.hh" @@ -11,7 +11,7 @@ #include "paper-def.hh" #include "spring-spacer.hh" #include "debug.hh" -#include "scoreline.hh" +#include "line-of-score.hh" #include "p-score.hh" #include "p-col.hh" #include "cpu-timer.hh" @@ -20,11 +20,14 @@ String Col_stats::str () const { - String s (count_i_); - s += _ (" lines"); - if (count_i_) - s += String (Real (cols_i_)/count_i_, _(", (with an average of %.1f columns)")); - + String s; + if (!count_i_) + s = _ ("0 lines"); + else if (count_i_ == 1) + s = _f ("1 line (of %.0f columns)", (Real)cols_i_/count_i_); + else + s = _f ("%d lines (with an average of %.1f columns)", + count_i_, (Real)cols_i_/count_i_); return s; } @@ -103,7 +106,7 @@ Break_algorithm::generate_spacing_problem (Line_of_cols curline, Interval line) Spring_spacer * sp= (Spring_spacer*) (*get_line_spacer) (); // ugh sp->paper_l_ = pscore_l_->paper_l_; - sp->add_column (curline[0], true, line.min ()); + sp->add_column (curline[0], true, line[LEFT]); for (int i=1; i< curline.size ()-1; i++) sp->add_column (curline[i]); @@ -153,7 +156,7 @@ void Break_algorithm::problem_OK () const { if (!pscore_l_->col_p_list_.size ()) - error (_("Score does not have any columns")); + error (_("score does not have any columns")); OK (); } @@ -169,18 +172,18 @@ Break_algorithm::OK () const #endif } -Array +Array Break_algorithm::solve () const { Cpu_timer timer; - Array h= do_solve (); + Array h= do_solve (); if (approx_stats_.count_i_) - *mlog << _ ("\n(Approximated: ") << approx_stats_.str () << ")\n"; + *mlog << '\n' << _f ("approximated: %s", approx_stats_.str ()) << endl; if (exact_stats_.count_i_) - *mlog << _ ("(Calculated exactly: ") << exact_stats_.str () << ")\n"; - *mlog << _ ("Time: ") << String (timer.read (), "%.2f") << _ (" seconds\n"); + *mlog << _f ("calculated exactly: %s", exact_stats_.str ()) << endl; + *mlog << _f ("time: %.2f seconds", timer.read ()) << endl; return h; } diff --git a/lily/change-iterator.cc b/lily/change-iterator.cc index 681ac2ae0f..4f97c77fd7 100644 --- a/lily/change-iterator.cc +++ b/lily/change-iterator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "change-iterator.hh" @@ -22,10 +22,10 @@ Change_iterator::error (String reason) String to_type = change_l_->change_to_type_str_; String to_id = change_l_->change_to_id_str_; - String warn1 = - _ ("Can't change ") + to_type - + _(" to ") + "`" + to_id + "\': " + reason; - String warn2= "Change_iterator::process_and_next (): " + report_to_l ()->type_str_ + " = `" + String warn1 = _f ("can't change `%s\' to `%s\'", to_type, to_id) + + ": " + reason; + String warn2= "Change_iterator::process_and_next (): " + + report_to_l ()->type_str_ + " = `" + report_to_l ()->id_str_ + "\': "; warning (warn2); change_l_->warning (warn1); diff --git a/lily/change-translator.cc b/lily/change-translator.cc index 54bbed8e81..771e8d43b1 100644 --- a/lily/change-translator.cc +++ b/lily/change-translator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "change-translator.hh" diff --git a/lily/chord-iterator.cc b/lily/chord-iterator.cc index 1629d3fb37..777a9bcb44 100644 --- a/lily/chord-iterator.cc +++ b/lily/chord-iterator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "translator-group.hh" diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc new file mode 100644 index 0000000000..f6ebe58409 --- /dev/null +++ b/lily/clef-engraver.cc @@ -0,0 +1,256 @@ +/* + clef.cc -- implement Clef_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys , + Mats Bengtsson +*/ + +#include +#include "bar.hh" +#include "clef-engraver.hh" +#include "clef-item.hh" +#include "debug.hh" +#include "command-request.hh" +#include "time-description.hh" + + +#include "note-head.hh" +#include "key-item.hh" +#include "local-key-item.hh" + +Clef_engraver::Clef_engraver() +{ + clef_p_ = 0; + clef_req_l_ = 0; + clef_type_str_ = ""; + c0_position_i_ = 0; + clef_position_i_ = 0; + octave_dir_ = CENTER; +} + +/* + Ugh. Should have support for Dictionaries in mudela. + */ +bool +Clef_engraver::set_type (String s) +{ + if (s.right_str(2) == "_8") // Down one octave + { + octave_dir_ = DOWN; + s = s.left_str(s.length_i() - 2); + } + else if (s.right_str(2) == "^8") // Up one octave + { + octave_dir_ = UP; + s = s.left_str(s.length_i() - 2); + } + else + octave_dir_ = CENTER; + if (s == "treble" || + s == "violin" || + s == "G" || s == "G2") + { + clef_type_str_ = "violin"; + clef_position_i_ = -2; + } + else if (s == "french") + { + clef_type_str_ = "violin"; + clef_position_i_ = -4; + } + else if (s == "soprano") + { + clef_type_str_ = "alto"; + clef_position_i_ = -4; + } + else if (s == "mezzosoprano") + { + clef_type_str_ = "alto"; + clef_position_i_ = -2; + } + else if (s == "alto") + { + clef_type_str_ = "alto"; + clef_position_i_ = 0; + } + else if (s == "tenor") + { + clef_type_str_ = "alto"; + clef_position_i_ = 2; + } + else if (s == "baritone") + { + clef_type_str_ = "alto"; + clef_position_i_ = 4; + } + else if (s == "varbaritone") + { + clef_type_str_ = "bass"; + clef_position_i_ = 0; + } + else if (s == "bass" || s == "F") + { + clef_type_str_ = "bass"; + clef_position_i_ = 2; + } + else if (s == "subbass") + { + clef_type_str_ = "bass"; + clef_position_i_ = 4; + } + else + { + switch(toupper (s[0])) + { + case 'F': + clef_type_str_ = "bass"; + break; + case 'G': + clef_type_str_ = "violin"; + break; + case 'C': + clef_type_str_ = "alto"; + break; + default: + return false; + } + clef_position_i_ = 2 * (s[1] - '0') - 6; + } + if (clef_type_str_ == "violin") + c0_position_i_ = clef_position_i_ - 4; + else if (clef_type_str_ == "alto") + c0_position_i_ = clef_position_i_; + else if (clef_type_str_ == "bass") + c0_position_i_ = clef_position_i_ + 4; + else + assert (false); + + + c0_position_i_ -= (int) octave_dir_ * 7; + + return true; +} + +void +Clef_engraver::read_req (Clef_change_req*c_l) +{ + if (!set_type (c_l->clef_str_)) + c_l->error (_ ("unknown clef type ")); +} + + +/** + Generate a clef at the start of a measure. (when you see a Bar, + ie. a breakpoint) + */ +void +Clef_engraver::acknowledge_element (Score_element_info info) +{ + if (info.elem_l_->is_type_b (Bar::static_name ()) + && clef_type_str_.length_i()) + { + create_clef(); + if (!clef_req_l_) + clef_p_->default_b_ = true; + } + + /* ugh; should make Clef_referenced baseclass */ + Item * it_l =info.elem_l_->access_Item (); +if (it_l) + { + if (it_l->is_type_b (Note_head::static_name ())) + { + Note_head * h = (Note_head*)it_l; + h->position_i_ += c0_position_i_; + } + else if (it_l->is_type_b (Local_key_item::static_name ())) + { + Local_key_item *i = (Local_key_item*)it_l; + i->c0_position_i_ =c0_position_i_; + } + else if (it_l->is_type_b (Key_item::static_name ())) + { + Key_item *k = (Key_item*)it_l; + k-> set_c_position (c0_position_i_); + } + } +} + +void +Clef_engraver::do_creation_processing() +{ + Scalar def = get_property ("defaultclef"); + if (def.operator bool ()) // egcs: Scalar to bool is ambiguous + set_type (def); + if (clef_type_str_.length_i ()) + { + create_clef(); + clef_p_->default_b_ = false; + } +} + +bool +Clef_engraver::do_try_request (Request * r_l) +{ + Command_req* creq_l= r_l->access_Command_req (); + if (!creq_l || !creq_l->access_Clef_change_req ()) + return false; + + clef_req_l_ = creq_l->access_Clef_change_req (); + read_req (clef_req_l_); + return true; +} + +void +Clef_engraver::create_clef() +{ + if (!clef_p_) + { + clef_p_ = new Clef_item; + clef_p_->break_priority_i_ = -2; // ugh + announce_element (Score_element_info (clef_p_,clef_req_l_)); + } + clef_p_->read (*this); +} + +void +Clef_engraver::do_process_requests() +{ + if (clef_req_l_) + { + create_clef(); + clef_p_->default_b_ = false; + } +} + +void +Clef_engraver::do_pre_move_processing() +{ + if (clef_p_) + { + typeset_element (clef_p_); + clef_p_ = 0; + } +} +void +Clef_engraver::do_post_move_processing() +{ + clef_req_l_ = 0; +} + +void +Clef_engraver::do_removal_processing() +{ + if (clef_p_) + { + clef_p_->unlink (); + delete clef_p_; + clef_p_ =0; + } +} + + +IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver); +ADD_THIS_TRANSLATOR(Clef_engraver); diff --git a/lily/clef-grav.cc b/lily/clef-grav.cc deleted file mode 100644 index bc981272a4..0000000000 --- a/lily/clef-grav.cc +++ /dev/null @@ -1,184 +0,0 @@ -/* - clef.cc -- implement Clef_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys , - Mats Bengtsson -*/ - -#include "bar.hh" -#include "clef-grav.hh" -#include "clef-item.hh" -#include "debug.hh" -#include "command-request.hh" -#include "time-description.hh" - -Clef_engraver::Clef_engraver() -{ - clef_p_ = 0; - clef_req_l_ =0; - clef_type_str_ = 0; - c0_position_i_ =0; - octave_dir_ = CENTER; -} - -/* - Ugh. Should have support for Dictionaries in mudela. - */ -bool -Clef_engraver::set_type (String s) -{ - if (s.right_str(2) == "_8") // Down one octave - { - octave_dir_ = DOWN; - s = s.left_str(s.length_i() - 2); - } - else if (s.right_str(2) == "^8") // Up one octave - { - octave_dir_ = UP; - s = s.left_str(s.length_i() - 2); - } - else - octave_dir_ = CENTER; - clef_type_str_ = s; - if (clef_type_str_ == "violin" || clef_type_str_ == "G" || clef_type_str_ == "G2") - c0_position_i_= -6; - else if (clef_type_str_ == "french") - c0_position_i_= -8; - else if (clef_type_str_ == "soprano") - c0_position_i_= -4; - else if (clef_type_str_ == "mezzosoprano") - c0_position_i_ = -2; - else if (clef_type_str_ == "alto") - c0_position_i_= 0; - else if (clef_type_str_ == "tenor") - c0_position_i_= 2; - else if (clef_type_str_ == "baritone") - c0_position_i_ = 4; - else if (clef_type_str_ == "varbaritone") - c0_position_i_ = 4; - else if (clef_type_str_ == "bass" || clef_type_str_ == "F") - c0_position_i_= 6; - else if (clef_type_str_ == "subbass") - c0_position_i_ = 8; - else - switch(clef_type_str_[0]) - { - case 'F': case 'f': - c0_position_i_ = 2 * (clef_type_str_[1] - '0') - 2; - break; - case 'G': case 'g': - c0_position_i_ = 2 * (clef_type_str_[1] - '0') - 10; - break; - case 'C': case 'c': - c0_position_i_ = 2 * (clef_type_str_[1] - '0') - 6; - break; - default: - return false; - } - c0_position_i_ -= (int) octave_dir_ * 7; - - return true; -} - -void -Clef_engraver::fill_staff_info (Staff_info &i) -{ - i.c0_position_i_l_ = &c0_position_i_; -} - -void -Clef_engraver::read_req (Clef_change_req*c_l) -{ - if (!set_type (c_l->clef_str_)) - c_l->error (_("unknown clef type ")); -} - - -/** - Generate a clef at the start of a measure. (when you see a Bar, - ie. a breakpoint) - */ -void -Clef_engraver::acknowledge_element (Score_elem_info info) -{ - if (info.elem_l_->is_type_b (Bar::static_name ()) - && clef_type_str_.length_i()) - { - create_clef(); - if (!clef_req_l_) - clef_p_->default_b_ = true; - } -} - -void -Clef_engraver::do_creation_processing() -{ - Scalar def = get_property ("defaultclef"); - if (def.operator bool ()) // egcs: Scalar to bool is ambiguous - set_type (def); - if (clef_type_str_.length_i ()) - create_clef(); - clef_p_->default_b_ = false; -} - -bool -Clef_engraver::do_try_request (Request * r_l) -{ - Command_req* creq_l= r_l->command(); - if (!creq_l || !creq_l->clefchange()) - return false; - - clef_req_l_ = creq_l->clefchange(); - read_req (clef_req_l_); - return true; -} - -void -Clef_engraver::create_clef() -{ - if (!clef_p_) - { - clef_p_ = new Clef_item; - clef_p_->break_priority_i_ = -2; // ugh - announce_element (Score_elem_info (clef_p_,clef_req_l_)); - } - clef_p_->read (*this); -} - -void -Clef_engraver::do_process_requests() -{ - if (clef_req_l_) - { - create_clef(); - clef_p_->default_b_ = false; - } -} - -void -Clef_engraver::do_pre_move_processing() -{ - if (clef_p_) - { - typeset_element (clef_p_); - clef_p_ = 0; - } -} -void -Clef_engraver::do_post_move_processing() -{ - clef_req_l_ = 0; -} - -void -Clef_engraver::do_removal_processing() -{ - delete clef_p_; - clef_p_ =0; -} - - -IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver); -ADD_THIS_TRANSLATOR(Clef_engraver); diff --git a/lily/clef-item.cc b/lily/clef-item.cc index 234b85fbb4..285d904a09 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include @@ -12,18 +12,19 @@ #include "molecule.hh" #include "paper-def.hh" #include "lookup.hh" -#include "clef-grav.hh" +#include "clef-engraver.hh" #include "text-item.hh" void Clef_item::do_pre_processing() { - change_b_ = ! (break_status_i() == 1); + bool b= (break_status_dir() != RIGHT); + change_b_ = b; if (default_b_) { - set_empty(break_status_i() != 1); - transparent_b_ = (break_status_i() != 1); + set_empty(b); + transparent_b_ = b; } } @@ -33,107 +34,21 @@ Clef_item::Clef_item() default_b_ = false; change_b_ = true; octave_dir_ = CENTER; - read ("violin"); + symbol_ = "violin"; + y_position_i_ = -2; + // Ugh: This should be const, I guess. - octave_marker_td_p_ = new Text_def(); + octave_marker_td_p_.set_p (new Text_def()); octave_marker_td_p_->text_str_ = "8"; octave_marker_td_p_->style_str_ = "italic"; } -/* - * Convert input clef string to - * a clef symbol and a line position. - * This would be better done in the lexer (more efficient) - * or as a table-lookup. - */ -void -Clef_item::read (String t) -{ - symbol_= t; - if (t == "violin") - { - y_position_i_ = -2; - } - else if (t == "bass") - { - y_position_i_ = 2; - } - else if (t == "G" || t == "G2" || t == "treble") - { - symbol_ = "violin"; - y_position_i_ = -2; - } - else if (t == "french" || t == "G1") - { - symbol_="violin"; - y_position_i_ = -4; - } - else if (t == "soprano" || t == "C1") - { - symbol_="alto"; - y_position_i_ = -4; - } - else if (t == "mezzosoprano" || t == "C2") - { - symbol_ = "alto"; - y_position_i_ = -2; - } - else if (t == "alto") - { - symbol_ = "alto"; - y_position_i_ = 0; - } - else if (t == "C3") - { - symbol_ = "alto"; - y_position_i_ = 0; - } - else if (t == "tenor" || t == "C4") - { - symbol_ = "alto"; - y_position_i_ = 2; - } - else if (t == "baritone" || t == "C5") - { - symbol_ = "alto"; - y_position_i_ = 4; - } - else if (t == "varbaritone" || t == "F3") - { - symbol_ = "bass"; - y_position_i_ = 0; - } - else if (t == "F" || t == "F4") - { - symbol_ = "bass"; - y_position_i_ = 2; - } - else if (t == "subbass") - { - symbol_ = "bass"; - y_position_i_ = 4; - } - else if (isdigit(t[1])) - switch (t[0]) - { // we've already dealt with plain F, G or C clef - // position 0 is line 3. - case 'G': - case 'g': - symbol_ = "violin"; - y_position_i_ = 2 * (t[1] - '0') - 6; - break; - case 'F': - case 'f': - symbol_ = "bass"; - y_position_i_ = 2 * (t[1] - '0') - 6; - break; - } -} void Clef_item::read (Clef_engraver const &k) { - read (k.clef_type_str_); + symbol_ = k.clef_type_str_; + y_position_i_ = k.clef_position_i_; octave_dir_ = k.octave_dir_; } @@ -143,16 +58,26 @@ Clef_item::brew_molecule_p() const String t = symbol_; if (change_b_) t += "_change"; - Atom s = paper()->lookup_l ()->clef (t); + Atom s = lookup_l ()->clef (t); Molecule*output = new Molecule (Atom (s)); output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS); - if (octave_dir_) - output->add_at_edge (Y_AXIS, - octave_dir_, - Molecule(octave_marker_td_p_->get_atom(paper(), - CENTER))); + if (octave_dir_) { + Molecule octave_marker = Molecule(octave_marker_td_p_->get_atom(paper(), + CENTER)); + Real offset = output->extent()[Y_AXIS][octave_dir_] + - octave_marker.extent()[Y_AXIS][- octave_dir_]; + if (octave_dir_ == DOWN) + offset += octave_marker.extent()[Y_AXIS][UP] * 0.35 ; + octave_marker.translate_axis (offset, Y_AXIS); + output->add_molecule (octave_marker); + } return output; } IMPLEMENT_IS_TYPE_B1(Clef_item,Item); + +#include "pointer.tcc" +template class P; // ugh + + diff --git a/lily/col-info.cc b/lily/col-info.cc index 85287257b0..581a9491b7 100644 --- a/lily/col-info.cc +++ b/lily/col-info.cc @@ -1,9 +1,9 @@ /* - col-info.cc -- implement Colinfo + col-info.cc -- implement Column_info source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "p-col.hh" @@ -11,12 +11,12 @@ #include "debug.hh" void -Colinfo::print() const +Column_info::print() const { #ifndef NPRINT DOUT << "column { "; if (fixed_b()) - DOUT << "fixed at " << fixed_position()<<", "; + DOUT << "fixed at " << fixed_position() << ", "; assert (pcol_l_); DOUT << width_.str(); Direction d = LEFT; @@ -29,7 +29,7 @@ Colinfo::print() const #endif } -Colinfo::Colinfo (Paper_column *col_l, Real const *fixed_C) +Column_info::Column_info (Paper_column *col_l, Real const *fixed_C) { if (fixed_C) fixpos_p_.set_l (fixed_C); @@ -41,26 +41,26 @@ Colinfo::Colinfo (Paper_column *col_l, Real const *fixed_C) } -Colinfo::Colinfo() +Column_info::Column_info() { ugh_b_ = false; pcol_l_ =0; } bool -Colinfo::fixed_b () const +Column_info::fixed_b () const { return fixpos_p_.get_C(); } Real -Colinfo::fixed_position () const +Column_info::fixed_position () const { return *fixpos_p_; } int -Colinfo::rank_i () const +Column_info::rank_i () const { return pcol_l_->rank_i (); } diff --git a/lily/colhpos.cc b/lily/colhpos.cc index 1e90ffeb37..8e37871558 100644 --- a/lily/colhpos.cc +++ b/lily/colhpos.cc @@ -1,9 +1,9 @@ /* - colhpos.cc -- implement Col_hpositions + colhpos.cc -- implement Column_x_positions source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "colhpos.hh" @@ -12,7 +12,7 @@ #include "vector.hh" #include "line-spacer.hh" -Col_hpositions::Col_hpositions() +Column_x_positions::Column_x_positions() { energy_f_ = infinity_f; ugh_b_ = false; @@ -20,19 +20,19 @@ Col_hpositions::Col_hpositions() spacer_l_ =0; } -Col_hpositions::~Col_hpositions() +Column_x_positions::~Column_x_positions() { } void -Col_hpositions::add (Paper_column*c) +Column_x_positions::add_paper_column (Paper_column*c) { cols.push (c); } void -Col_hpositions::print() const +Column_x_positions::print() const { #ifndef NPRINT DOUT << "energy : " << energy_f_ << '\n'; @@ -43,7 +43,7 @@ Col_hpositions::print() const } void -Col_hpositions::OK() const +Column_x_positions::OK() const { #ifndef NDEBUG assert (config.size() == cols.size ()); @@ -51,7 +51,7 @@ Col_hpositions::OK() const } void -Col_hpositions::set_stupid_solution(Vector v) +Column_x_positions::set_stupid_solution(Vector v) { energy_f_ = infinity_f; ugh_b_ = true; @@ -59,20 +59,20 @@ Col_hpositions::set_stupid_solution(Vector v) } void -Col_hpositions::stupid_solution() +Column_x_positions::stupid_solution() { set_stupid_solution (spacer_l_->default_solution()); } void -Col_hpositions::solve_line() +Column_x_positions::solve_line() { spacer_l_->solve (this); } void -Col_hpositions::approximate_solve_line() +Column_x_positions::approximate_solve_line() { spacer_l_->lower_bound_solution (this); } diff --git a/lily/collision-engraver.cc b/lily/collision-engraver.cc new file mode 100644 index 0000000000..be5ab22866 --- /dev/null +++ b/lily/collision-engraver.cc @@ -0,0 +1,59 @@ +/* + collision-reg.cc -- implement Collision_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + +#include "note-column.hh" +#include "collision-engraver.hh" +#include "collision.hh" + +void +Collision_engraver::process_acknowledged () +{ + + if (col_p_ || note_column_l_arr_.size () < 2) + return ; + if (!col_p_) + { + col_p_ = new Collision; + announce_element (Score_element_info (col_p_,0)); + } + for (int i=0; i< note_column_l_arr_.size (); i++) + col_p_->add_column (note_column_l_arr_[i]); +} + +void +Collision_engraver::acknowledge_element (Score_element_info i) +{ + if (i.elem_l_->is_type_b (Note_column::static_name ())) + { + Note_column * c = (Note_column*) i.elem_l_->access_Item (); + if (c->rest_b ()) + return ; + + note_column_l_arr_.push (c); + } +} + +void +Collision_engraver::do_pre_move_processing() +{ + if (col_p_) + { + typeset_element (col_p_); + col_p_ =0; + } + note_column_l_arr_.clear (); +} + +Collision_engraver::Collision_engraver() +{ + col_p_ =0; +} + + +IMPLEMENT_IS_TYPE_B1(Collision_engraver,Engraver); +ADD_THIS_TRANSLATOR(Collision_engraver); diff --git a/lily/collision-grav.cc b/lily/collision-grav.cc deleted file mode 100644 index 6a6dcef13c..0000000000 --- a/lily/collision-grav.cc +++ /dev/null @@ -1,45 +0,0 @@ -/* - collision-reg.cc -- implement Collision_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - -#include "note-column.hh" -#include "collision-grav.hh" -#include "collision.hh" - -void -Collision_engraver::acknowledge_element (Score_elem_info i) -{ - if (i.elem_l_->is_type_b (Note_column::static_name ())) - { - Note_column * c = (Note_column*) i.elem_l_->item (); - if (c->rest_b ()) - return ; - if (!col_p_) - { - col_p_ = new Collision; - announce_element (Score_elem_info (col_p_,0)); - } - col_p_->add (c); - } -} -void -Collision_engraver::do_pre_move_processing() -{ - if (col_p_) - { - typeset_element (col_p_); - col_p_ =0; - } -} -Collision_engraver::Collision_engraver() -{ - col_p_ =0; -} - - -IMPLEMENT_IS_TYPE_B1(Collision_engraver,Engraver); -ADD_THIS_TRANSLATOR(Collision_engraver); diff --git a/lily/collision.cc b/lily/collision.cc index 2da1e0ddae..c63c71747c 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "debug.hh" #include "collision.hh" @@ -16,7 +16,7 @@ Collision::Collision() } void -Collision::add (Note_column* ncol_l) +Collision::add_column (Note_column* ncol_l) { clash_l_arr_.push (ncol_l); add_element (ncol_l); @@ -59,7 +59,7 @@ Collision::do_pre_processing() Note_column* c_l = clash_l_arr_[i]; if (! c_l->dir_) { - warning (_("No stem direction set. Ignoring column in clash. ")); + warning (_ ("No stem direction set. Ignoring column in clash.")); continue; } int d = (c_l->dir_); @@ -72,7 +72,7 @@ Collision::do_pre_processing() { if (clash_group_arr_a[j].size() > 1) { - warning (_("Too many clashing notecolumns. Ignoring them.")); + warning (_ ("Too many clashing notecolumns. Ignoring them.")); return; } } @@ -154,7 +154,7 @@ Collision::do_pre_processing() (shaddup) */ Offset o (x_off[j] * wid_f, y_off[j] * inter_f); - ((Score_elem*)col_l_a[j])->translate (o); + ((Score_element*)col_l_a[j])->translate (o); } } } @@ -163,8 +163,8 @@ Collision::do_pre_processing() IMPLEMENT_IS_TYPE_B1(Collision, Item); void -Collision::do_substitute_dependency (Score_elem*o_l,Score_elem*n_l) +Collision::do_substitute_dependency (Score_element*o_l,Score_element*n_l) { - clash_l_arr_.substitute ((Note_column*)o_l->item(), - (Note_column*)(n_l?n_l->item():0)); + clash_l_arr_.substitute ((Note_column*)o_l->access_Item (), + (Note_column*)(n_l?n_l->access_Item ():0)); } diff --git a/lily/command-request.cc b/lily/command-request.cc index 5cc36319bf..24f2fee50b 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "command-request.hh" @@ -32,7 +32,7 @@ Cadenza_req::do_print() const bool Cadenza_req::do_equal_b (Request*r) const { - Cadenza_req*cad = r->command()->timing ()->cadenza (); + Cadenza_req*cad = r->access_Command_req ()->access_Timing_req ()->access_Cadenza_req (); return cad->on_b_ == on_b_; } @@ -41,13 +41,13 @@ Cadenza_req::Cadenza_req (bool b) { on_b_ =b; } -/* *************** */ + bool Bar_req::do_equal_b (Request*r) const { - Bar_req * b = r->command()->bar (); + Bar_req * b = r->access_Command_req ()->access_Bar_req (); return type_str_ == b->type_str_; } @@ -73,7 +73,7 @@ Partial_measure_req::Partial_measure_req (Moment m) bool Partial_measure_req::do_equal_b (Request* r) const { - Partial_measure_req *p = r->command()->timing ()->partial (); + Partial_measure_req *p = r->access_Command_req ()->access_Timing_req ()->access_Partial_measure_req (); return p->duration_ == duration_; } @@ -100,7 +100,7 @@ Barcheck_req::do_equal_b (Request*) const { return true; } -/* *************** */ + IMPLEMENT_IS_TYPE_B1(Clef_change_req,Command_req); @@ -117,7 +117,7 @@ Clef_change_req::Clef_change_req (String s) clef_str_ = s; } -/* *************** */ + IMPLEMENT_IS_TYPE_B1(Partial_measure_req,Timing_req); @@ -129,10 +129,10 @@ Partial_measure_req::do_print() const } -IMPLEMENT_IS_TYPE_B1(Meter_change_req,Timing_req); +IMPLEMENT_IS_TYPE_B1(Time_signature_change_req,Timing_req); void -Meter_change_req::do_print() const +Time_signature_change_req::do_print() const { #ifndef NPRINT DOUT << beats_i_ << "/" << one_beat_i_; @@ -140,27 +140,20 @@ Meter_change_req::do_print() const } bool -Meter_change_req::do_equal_b (Request * r) const +Time_signature_change_req::do_equal_b (Request * r) const { - Meter_change_req * m = r->command()->timing ()->meterchange (); + Time_signature_change_req * m = r->access_Command_req ()->access_Timing_req ()->access_Time_signature_change_req (); return m->beats_i_ == beats_i_ && one_beat_i_ == m->one_beat_i_; } -Meter_change_req::Meter_change_req() +Time_signature_change_req::Time_signature_change_req() { beats_i_ = 0; one_beat_i_ =0; } -void -Meter_change_req::set (int b,int o) -{ - beats_i_=b; - one_beat_i_=o; -} - Tempo_req::Tempo_req() { @@ -171,19 +164,19 @@ Tempo_req::Tempo_req() void Tempo_req::do_print() const { - DOUT << dur_.str() << " = " < 0) + pitch_arr_[0].transpose(d); + else + { + warning(_ ("don't know how handle empty keys")); // TODO + } + } + else + { + Array old_pitch_arr_; + for (int i = 0; i < pitch_arr_.size(); i++) + { + old_pitch_arr_.push(pitch_arr_[i]); + } + // set accidentals for \key d (as in Key_engraver::read_req) + // (later called "new accidentals") + int p = d.semitone_pitch (); + /* Solve the equation 7*no_of_acc mod 12 = p, -6 <= no_of_acc <= 5 */ + int no_of_acc = (7*p) % 12; + no_of_acc = (no_of_acc + 18) % 12 -6; + + /* Correct from flats to sharps or vice versa */ + if (no_of_acc * d.accidental_i_ < 0) + no_of_acc += 12 * sign (d.accidental_i_); + + pitch_arr_.clear (); + if (no_of_acc < 0) + { + int accidental = 6 ; // First accidental: bes + for ( ; no_of_acc < 0 ; no_of_acc++ ) + { + Musical_pitch m; + m.accidental_i_ = -1; + m.notename_i_ = accidental; + pitch_arr_.push(m); + + accidental = (accidental + 3) % 7 ; + } + } + else + { + int accidental = 3 ; // First accidental: fis + for ( ; no_of_acc > 0 ; no_of_acc-- ) + { + Musical_pitch m; + m.accidental_i_ = 1; + m.notename_i_ = accidental; + pitch_arr_.push(m); + + accidental = (accidental + 4) % 7 ; + } + } + // Check if transposed old accidentals and the new ones coincide + no_of_acc = pitch_arr_.size(); + int acc_found; + Musical_pitch mm; + for (int i=0; i < old_pitch_arr_.size(); i++) + { + acc_found = 0; + mm = old_pitch_arr_[i]; + mm.transpose(d); + for (int j=0; ((j < no_of_acc) && (acc_found == 0)); j++) + { + if (pitch_arr_[j].notename_i_ == mm.notename_i_) + { + if (mm.accidental_i_ == 0) + { + // remove new accidental + pitch_arr_.del(j); + no_of_acc--; + acc_found = 1; + } + else + { + // change new accidental + pitch_arr_[j].accidental_i_ = mm.accidental_i_; + acc_found = 1; + } + } + } + if (acc_found == 0) + { + // add transposed old accidental + pitch_arr_.push(mm); + } + } + } } - IMPLEMENT_IS_TYPE_B1(Key_change_req,Command_req); void Key_change_req::squash_octaves() @@ -237,7 +315,7 @@ Key_change_req::do_print() const Key_change_req::Key_change_req() { minor_b_ = false; - multi_octave_b_= false; + ordinary_key_b_= false; } IMPLEMENT_IS_TYPE_B1(Break_req, Command_req); @@ -252,6 +330,19 @@ Break_req::do_print () const { } +IMPLEMENT_IS_TYPE_B1 (Mark_req, Command_req); + +Mark_req::Mark_req (String s) +{ + str_ = s; +} + +void +Mark_req::do_print () const +{ + DOUT << str_; +} + int Key_change_req::flats_i() { @@ -264,8 +355,8 @@ Key_change_req::flats_i() return flats_i; } -int -Key_change_req::minor_b() +bool +Key_change_req::minor_b() const { return minor_b_; } @@ -276,7 +367,7 @@ Key_change_req::sharps_i() int sharps_i = 0; for (int i = 0; i < pitch_arr_.size(); i++) { - if (pitch_arr_[i].accidental_i_ < 0) + if (pitch_arr_[i].accidental_i_ > 0) sharps_i += pitch_arr_[i].accidental_i_; } return sharps_i; diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 0dee71825b..4b59b529ad 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -3,11 +3,11 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "molecule.hh" -#include "dimen.hh" +#include "dimension.hh" #include "crescendo.hh" #include "lookup.hh" #include "paper-def.hh" @@ -44,7 +44,7 @@ Crescendo::get_symbol() const if (w_dim < 0) { - warning (_("Crescendo too small")); + warning (_ ("crescendo") + " " + _("too small")); w_dim = 0; } @@ -57,7 +57,7 @@ Crescendo::get_symbol() const bool continued = broken[(Direction)-grow_dir_]; - return Atom (paper()->lookup_l ()->hairpin (w_dim, grow_dir_ < 0, continued)); + return Atom (lookup_l ()->hairpin (w_dim, grow_dir_ < 0, continued)); } Molecule* @@ -70,8 +70,8 @@ Crescendo::brew_molecule_p() const m_p = new Molecule; Atom s (get_symbol()); - m_p->add (Atom (s)); - m_p->translate (Offset (x_off_dim, y_)); + m_p->add_atom (s); + m_p->translate (Offset (x_off_dim, coordinate_offset_f_)); return m_p; } diff --git a/lily/debug.cc b/lily/debug.cc index 8fcb8eba4b..200af4ec32 100644 --- a/lily/debug.cc +++ b/lily/debug.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1996,98 Han-Wen Nienhuys + (c) 1996,98 Han-Wen Nienhuys */ #include @@ -12,12 +12,15 @@ // libg++ 2.8.0 // #include #include + + #include "debug.hh" #include "dstream.hh" #include "flower-debug.hh" #include "moment.hh" - +#include "misc.hh" #include "main.hh" + Dstream *monitor=0; ostream * nulldev =0; @@ -50,7 +53,7 @@ mynewhandler() void float_handler (int) { - cerr << _("Floating point exception .. \n")<< flush; + cerr << _ ("Floating point exception") << endl; assert (false); } @@ -72,30 +75,54 @@ bool check_debug=false; bool check_malloc_b = false; -//#define MEMORY_PARANOID +// #define MEMORY_PARANOID #ifdef MEMORY_PARANOID #include +void +frobnify (void *p, size_t s) +{ + char *cp = (char*)p; + char *e = cp + s; + while (cp < e) + { + *cp++ ^=42; + } +} + + void * operator new (size_t size) { void *result; result = malloc (size); if (check_malloc_b) - memfrob (result, size); + frobnify (result, size); return result; } +void *to_frob; int frob_size; + +void +set_frobnify (void * p, size_t sz) +{ + to_frob = p; + frob_size = sz; +} void operator delete (void *p) { if (!p) return ; - if (check_malloc_b) - memfrob (p, 8); // ugh. Need the blocksize. 8 is sysdependant + if (p == to_frob) + { + frobnify (p, frob_size); + to_frob = 0; + frob_size=0; + } free (p); } @@ -106,11 +133,10 @@ set_debug (bool b) { check_debug =b; set_flower_debug (*monitor, check_debug); - check_malloc_b = experimental_features_global_b; #ifdef MEMORY_PARANOID if (check_malloc_b) if (mcheck (0)) - warning ("Can't set mem-checking!"); + warning (_ ("can't set mem-checking") + "!"); #endif } diff --git a/lily/dimen.cc b/lily/dimen.cc index 5e85f4992d..d309241e23 100644 --- a/lily/dimen.cc +++ b/lily/dimen.cc @@ -1,5 +1,5 @@ #include -#include "dimen.hh" +#include "dimension.hh" #include "debug.hh" #include "string.hh" @@ -28,13 +28,19 @@ convert_dimen (Real quant, String unit) return quant*CM_TO_PT/10; if (unit == "in") return quant * INCH_TO_PT; - error (_("unknown length unit: `") + unit+"'"); + error (_f ("unknown length unit: `%s\'", unit)); } String print_dimen (Real r) { - String s (r, "%.3f"); + String s = to_str (r, "%.3f"); + if (s.index_i ("NaN") != -1) + { + warning (_ ("NaN")); + s = "0.0"; + } s += "pt "; return s; } + diff --git a/lily/direction.cc b/lily/direction.cc index 802418fce5..1c2481953f 100644 --- a/lily/direction.cc +++ b/lily/direction.cc @@ -4,7 +4,7 @@ source file of the GNU LilyPond music typesetter - (c) 1998 Han-Wen Nienhuys + (c) 1998 Han-Wen Nienhuys */ diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc new file mode 100644 index 0000000000..04ae0bfba4 --- /dev/null +++ b/lily/dot-column-engraver.cc @@ -0,0 +1,54 @@ +/* + dot-column-engraver.cc -- implement Dot_column_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#include "dot-column-engraver.hh" +#include "rhythmic-head.hh" +#include "dot-column.hh" + +Dot_column_engraver::Dot_column_engraver () +{ + dotcol_p_ =0; +} + +void +Dot_column_engraver::do_pre_move_processing () +{ + if (dotcol_p_) + { + typeset_element (dotcol_p_); + dotcol_p_ =0; + } + head_l_arr_.clear (); +} + +void +Dot_column_engraver::acknowledge_element (Score_element_info info) +{ + Item * i=info.elem_l_->access_Item (); + + if (! (i && i->is_type_b (Rhythmic_head::static_name ()))) + return; + + Rhythmic_head * h = (Rhythmic_head*)i; + + if (!h->dots_l_) + return; + + if (!dotcol_p_) + { + dotcol_p_ = new Dot_column; + announce_element (Score_element_info (dotcol_p_, 0)); + } + + dotcol_p_->add_head (h); +} + + +ADD_THIS_TRANSLATOR(Dot_column_engraver); +IMPLEMENT_IS_TYPE_B1(Dot_column_engraver,Engraver); diff --git a/lily/dot-column.cc b/lily/dot-column.cc index 4c44095826..bb1885ca88 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "dots.hh" @@ -11,7 +11,7 @@ #include "rhythmic-head.hh" void -Dot_column::add (Dots *d) +Dot_column::add_dots (Dots *d) { dot_l_arr_.push (d); add_dependency (d); @@ -19,21 +19,21 @@ Dot_column::add (Dots *d) } void -Dot_column::add (Rhythmic_head *r) +Dot_column::add_head (Rhythmic_head *r) { if (!r->dots_l_) return ; head_l_arr_.push (r); add_dependency (r); - add (r->dots_l_); + add_dots (r->dots_l_); } void -Dot_column::do_substitute_dependency (Score_elem*o,Score_elem*n) +Dot_column::do_substitute_dependency (Score_element*o,Score_element*n) { - Item *oi =o->item (); - Item *ni = n?n->item ():0; + Item *oi =o->access_Item (); + Item *ni = n?n->access_Item ():0; if (oi&&oi->is_type_b (Rhythmic_head::static_name ())) head_l_arr_.substitute ((Rhythmic_head*)oi, (Rhythmic_head*)ni); diff --git a/lily/dots.cc b/lily/dots.cc index 20cf87a515..370ea3dbe7 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "dots.hh" @@ -33,18 +33,18 @@ Molecule* Dots::brew_molecule_p () const { Molecule *out = new Molecule; - Atom fill = paper ()->lookup_l ()->fill (Box (Interval (0,0), + Atom fill = lookup_l ()->fill (Box (Interval (0,0), Interval (0,0))); - out->add(fill); + out->add_atom (fill); - Atom d = paper ()->lookup_l ()->dots (); + Atom d = lookup_l ()->dots (); Real dw = d.dim_[X_AXIS].length (); d.translate_axis (-dw, X_AXIS); for (int i=no_dots_i_; i--; ) { d.translate_axis (2*dw,X_AXIS); - out->add (d); + out->add_atom (d); } Real inter_f = paper ()->internote_f (); out->translate_axis (inter_f * position_i_, Y_AXIS); diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc new file mode 100644 index 0000000000..9fc4704f2c --- /dev/null +++ b/lily/dynamic-engraver.cc @@ -0,0 +1,202 @@ +/* + dynamic-reg.cc -- implement Dynamic_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ +#include "debug.hh" +#include "crescendo.hh" +#include "dynamic-engraver.hh" +#include "musical-request.hh" +#include "text-item.hh" +#include "lookup.hh" +#include "paper-def.hh" +#include "score-column.hh" +#include "staff-sym.hh" +#include "note-column.hh" + +Dynamic_engraver::Dynamic_engraver() +{ + do_post_move_processing(); + dir_ = CENTER; + dynamic_p_ =0; + to_end_cresc_p_ = cresc_p_ = 0; + cresc_req_l_ = 0; +} + +void +Dynamic_engraver::do_post_move_processing() +{ + dynamic_req_l_arr_.clear(); +} + +bool +Dynamic_engraver::do_try_request (Request * r) +{ + Musical_req * m = r->access_Musical_req (); + if (!m) + return false; + Dynamic_req * d = m->access_Dynamic_req (); + if (!d) + return false; + +#if 0 + if (cresc_p_ && d->access_Span_dynamic_req () + && d->access_Span_dynamic_req ()->spantype == Span_req::START) + return false; +#endif + for (int i=0; i < dynamic_req_l_arr_.size (); i++) + if (d->equal_b (dynamic_req_l_arr_[i])) + return true; + + dynamic_req_l_arr_.push (m->access_Dynamic_req ()); + return true; +} +void +Dynamic_engraver::do_process_requests() +{ + Crescendo* new_cresc_p=0; + for (int i=0; i < dynamic_req_l_arr_.size(); i++) + { + Dynamic_req *dreq_l = dynamic_req_l_arr_[i]; + if (dreq_l->access_Absolute_dynamic_req ()) + { + + if (dynamic_p_) + { + dynamic_req_l_arr_[i]->warning (_("Got a dynamic already. Continuing dazed and confused")); + continue; + } + + Text_def * td_p = new Text_def; + td_p->align_dir_ = CENTER; + String loud = dreq_l->access_Absolute_dynamic_req ()->loudness_str (); + td_p->text_str_ = paper ()->lookup_l (0)->dynamic (loud).tex_; + td_p->style_str_ = "dynamic"; + + + + dynamic_p_ = new Text_item (td_p); + announce_element (Score_element_info (dynamic_p_, dreq_l)); + } + else if (dreq_l->access_Span_dynamic_req ()) + { + Span_dynamic_req* span_l = dreq_l->access_Span_dynamic_req (); + if (span_l->spantype == Span_req::STOP) + { + if (!cresc_p_) + { + span_l->warning (_ ("can't find (de)crescendo to end")); + } + else + { + assert (!to_end_cresc_p_); + to_end_cresc_p_ =cresc_p_; + cresc_p_ = 0; + } + } + else if (span_l->spantype == Span_req::START) + { + cresc_req_l_ = span_l; + assert (!new_cresc_p); + new_cresc_p = new Crescendo; + new_cresc_p->grow_dir_ = span_l->dynamic_dir_; + announce_element (Score_element_info (new_cresc_p, span_l)); + } + } + } + + if (new_cresc_p) + { + if (cresc_p_) + { + ::warning (_ ("Too many crescendi here")); + typeset_element (cresc_p_); + cresc_p_ = 0; + } + + cresc_p_ = new_cresc_p; + cresc_p_->set_bounds(LEFT,get_staff_info().musical_l ()); + if (dynamic_p_) + { + cresc_p_->dyn_b_drul_[LEFT] = true; + } + } +} + +void +Dynamic_engraver::do_pre_move_processing() +{ + Staff_symbol* s_l = get_staff_info().staff_sym_l_; + if (to_end_cresc_p_) + { + if (dynamic_p_) + to_end_cresc_p_->dyn_b_drul_[RIGHT]=true; + + + Scalar prop = get_property ("dynamicdir"); + if (prop.isnum_b ()) + { + to_end_cresc_p_->dir_ = (Direction) (int) prop; + } + to_end_cresc_p_->set_bounds(RIGHT,get_staff_info().musical_l ()); + to_end_cresc_p_->add_support (s_l); + typeset_element (to_end_cresc_p_); + to_end_cresc_p_ = 0; + } + if (dynamic_p_) + { + Scalar prop = get_property ("dynamicdir"); + if (prop.isnum_b ()) + { + dynamic_p_->dir_ = (Direction) (int) prop; + } + + dynamic_p_->add_support (s_l); + typeset_element (dynamic_p_); + dynamic_p_ = 0; + } +} + + +IMPLEMENT_IS_TYPE_B1(Dynamic_engraver,Engraver); +ADD_THIS_TRANSLATOR(Dynamic_engraver); + +void +Dynamic_engraver::do_removal_processing () +{ + if (cresc_p_) + { + typeset_element (cresc_p_ ); + + cresc_req_l_->warning (_ ("unended crescendo")); + cresc_p_ =0; + } + if (to_end_cresc_p_) + { + typeset_element (to_end_cresc_p_); + to_end_cresc_p_ =0; + } + if (dynamic_p_) + { + typeset_element (dynamic_p_); + dynamic_p_ =0; + } +} + +void +Dynamic_engraver::acknowledge_element (Score_element_info i) +{ + if (i.elem_l_->is_type_b (Note_column::static_name ())) + { + if (dynamic_p_) + dynamic_p_->add_support (i.elem_l_); + + if (to_end_cresc_p_) + to_end_cresc_p_->add_support (i.elem_l_); + + if (cresc_p_) + cresc_p_->add_support (i.elem_l_); + } +} diff --git a/lily/dynamic-grav.cc b/lily/dynamic-grav.cc deleted file mode 100644 index 9a0913c129..0000000000 --- a/lily/dynamic-grav.cc +++ /dev/null @@ -1,179 +0,0 @@ -/* - dynamic-reg.cc -- implement Dynamic_engraver - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ -#include "debug.hh" -#include "crescendo.hh" -#include "dynamic-grav.hh" -#include "musical-request.hh" -#include "text-item.hh" -#include "lookup.hh" -#include "paper-def.hh" -#include "score-column.hh" -#include "staff-sym.hh" -#include "note-column.hh" - -Dynamic_engraver::Dynamic_engraver() -{ - do_post_move_processing(); - dir_ = CENTER; - dynamic_p_ =0; - to_end_cresc_p_ = cresc_p_ = 0; - cresc_req_l_ = 0; -} - -void -Dynamic_engraver::do_post_move_processing() -{ - dynamic_req_l_arr_.clear(); -} - -bool -Dynamic_engraver::do_try_request (Request * r) -{ - Musical_req * m = r->musical(); - if (!m) - return false; - Dynamic_req * d = m->dynamic (); - if (!d) - return false; - - if (cresc_p_ && d->span_dynamic () - && d->span_dynamic ()->spantype == Span_req::START) - return false; - if (d->absdynamic ()) - { - for (int i=0; i < dynamic_req_l_arr_.size (); i++) - if (d->equal_b (dynamic_req_l_arr_[i])) - return true; - } - - dynamic_req_l_arr_.push (m->dynamic()); - return true; -} -void -Dynamic_engraver::do_process_requests() -{ - Crescendo* new_cresc_p=0; - for (int i=0; i < dynamic_req_l_arr_.size(); i++) - { - Dynamic_req *dreq_l = dynamic_req_l_arr_[i]; - if (dreq_l->absdynamic()) - { - Text_def * td_p = new Text_def; - td_p->align_i_ = CENTER; - String loud = dreq_l->absdynamic()->loudness_str (); - td_p->text_str_ = paper()->lookup_l ()->dynamic (loud).tex_; - td_p->style_str_ = "dynamic"; - - assert (!dynamic_p_) ; // TODO - - dynamic_p_ = new Text_item (td_p); - announce_element (Score_elem_info (dynamic_p_, dreq_l)); - } - else if (dreq_l->span_dynamic()) - { - - Span_dynamic_req* span_l = dreq_l->span_dynamic(); - if (span_l->spantype == Span_req::STOP) - { - if (!cresc_p_) - { - span_l->warning (_("Can't find cresc to end ")); - } - else - { - assert (!to_end_cresc_p_); - to_end_cresc_p_ =cresc_p_; - cresc_p_ = 0; - } - } - else if (span_l->spantype == Span_req::START) - { - cresc_req_l_ = span_l; - assert (!new_cresc_p); - new_cresc_p = new Crescendo; - new_cresc_p->grow_dir_ = span_l->dynamic_dir_; - announce_element (Score_elem_info (new_cresc_p, span_l)); - } - } - } - - if (new_cresc_p) - { - cresc_p_ = new_cresc_p; - cresc_p_->set_bounds(LEFT,get_staff_info().musical_l ()); - if (dynamic_p_) - { - cresc_p_->dyn_b_drul_[LEFT] = true; - } - } -} - -void -Dynamic_engraver::do_pre_move_processing() -{ - Staff_symbol* s_l = get_staff_info().staff_sym_l_; - if (to_end_cresc_p_) - { - if (dynamic_p_) - to_end_cresc_p_->dyn_b_drul_[RIGHT]=true; - - to_end_cresc_p_->set_bounds(RIGHT,get_staff_info().musical_l ()); - to_end_cresc_p_->add_support (s_l); - typeset_element (to_end_cresc_p_); - to_end_cresc_p_ = 0; - } - if (dynamic_p_) - { - - dynamic_p_->add_support (s_l); - typeset_element (dynamic_p_); - dynamic_p_ = 0; - } -} - - -IMPLEMENT_IS_TYPE_B1(Dynamic_engraver,Engraver); -ADD_THIS_TRANSLATOR(Dynamic_engraver); - -void -Dynamic_engraver::do_removal_processing () -{ - if (cresc_p_) - { - typeset_element (cresc_p_ ); - - cresc_req_l_->warning (_("unended crescendo")); - cresc_p_ =0; - } - if (to_end_cresc_p_) - { - typeset_element (to_end_cresc_p_); - to_end_cresc_p_ =0; - } - if (dynamic_p_) - { - typeset_element (dynamic_p_); - dynamic_p_ =0; - } -} - -void -Dynamic_engraver::acknowledge_element (Score_elem_info i) -{ - if (i.elem_l_->is_type_b (Note_column::static_name ())) - { - if (dynamic_p_) - dynamic_p_->add_support (i.elem_l_); - - if (to_end_cresc_p_) - to_end_cresc_p_->add_support (i.elem_l_); - - if (cresc_p_) - cresc_p_->add_support (i.elem_l_); - } -} diff --git a/lily/encompass-info.cc b/lily/encompass-info.cc index 193ef482b5..3da2c28559 100644 --- a/lily/encompass-info.cc +++ b/lily/encompass-info.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1998 Jan Nieuwenhuizen + (c) 1998 Jan Nieuwenhuizen */ diff --git a/lily/engraver-group.cc b/lily/engraver-group.cc index bd6873d0d2..8ac916b547 100644 --- a/lily/engraver-group.cc +++ b/lily/engraver-group.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "proto.hh" @@ -12,13 +12,13 @@ #include "engraver.hh" #include "debug.hh" #include "p-score.hh" -#include "score-elem.hh" +#include "score-element.hh" IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator_group); ADD_THIS_TRANSLATOR(Engraver_group_engraver); void -Engraver_group_engraver::announce_element (Score_elem_info info) +Engraver_group_engraver::announce_element (Score_element_info info) { announce_info_arr_.push (info); Engraver::announce_element (info); @@ -46,7 +46,7 @@ Engraver_group_engraver::do_announces() { for (int j =0; j < announce_info_arr_.size(); j++) { - Score_elem_info info = announce_info_arr_[j]; + Score_element_info info = announce_info_arr_[j]; if (!info.req_l_) info.req_l_ = &dummy_req; diff --git a/lily/engraver.cc b/lily/engraver.cc index 2ccf335069..696bedcf2e 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -3,7 +3,7 @@ Sourcefile of GNU LilyPond musictypesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "music-list.hh" @@ -20,7 +20,7 @@ Engraver::fill_staff_info (Staff_info&) void -Engraver::announce_element (Score_elem_info i) +Engraver::announce_element (Score_element_info i) { i.origin_grav_l_arr_.push (this); daddy_grav_l()->announce_element (i); @@ -28,7 +28,7 @@ Engraver::announce_element (Score_elem_info i) void -Engraver::typeset_element (Score_elem*p) +Engraver::typeset_element (Score_element*p) { daddy_grav_l()->typeset_element (p); } diff --git a/lily/font-size-engraver.cc b/lily/font-size-engraver.cc new file mode 100644 index 0000000000..6689e91eac --- /dev/null +++ b/lily/font-size-engraver.cc @@ -0,0 +1,36 @@ +/* + font-size-grav.cc -- implement Font_size_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#include "font-size-engraver.hh" +#include "score-element.hh" + +Font_size_engraver::Font_size_engraver () +{ + size_i_ = 0; +} + +void +Font_size_engraver::do_process_requests () +{ + Scalar s (get_property ("fontsize")); + + if (s.length_i () && s.isnum_b ()) + { + size_i_ = int (s); + } +} + +void +Font_size_engraver::acknowledge_element (Score_element_info e) +{ + e.elem_l_->size_i_ = size_i_; +} + +ADD_THIS_TRANSLATOR (Font_size_engraver); +IMPLEMENT_IS_TYPE_B1(Font_size_engraver,Engraver); diff --git a/lily/general-script-def.cc b/lily/general-script-def.cc index 9d7b657880..ba7da733e2 100644 --- a/lily/general-script-def.cc +++ b/lily/general-script-def.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lily/global-translator.cc b/lily/global-translator.cc index 3620c52d69..1c8179441f 100644 --- a/lily/global-translator.cc +++ b/lily/global-translator.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "global-translator.hh" diff --git a/lily/gourlay-breaking.cc b/lily/gourlay-breaking.cc index 58e08b959c..d8fda8415c 100644 --- a/lily/gourlay-breaking.cc +++ b/lily/gourlay-breaking.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "gourlay-breaking.hh" @@ -27,7 +27,7 @@ struct Break_node { int prev_break_i_; int line_i_; Real energy_f_; - Col_hpositions line_config_; + Column_x_positions line_config_; Break_node () { prev_break_i_ = -1; @@ -39,7 +39,7 @@ struct Break_node { This algorithms is adapted from */ -Array +Array Gourlay_breaking::do_solve () const { Array optimal_paths; @@ -60,7 +60,7 @@ Gourlay_breaking::do_solve () const for (; break_idx< breaks.size (); break_idx++) { Array candidates; - Array candidate_lines; + Array candidate_lines; Pointer_list spacer_p_list; /* @@ -85,7 +85,7 @@ Gourlay_breaking::do_solve () const if (!feasible (line)) break; - Col_hpositions approx; + Column_x_positions approx; approx.cols = line; approx.spacer_l_ = generate_spacing_problem (line, @@ -148,15 +148,15 @@ Gourlay_breaking::do_solve () const } if (! (break_idx % HAPPY_DOTS_I)) - *mlog << "[" << break_idx << "]"< final_breaks; - Array lines; + Array lines; /* skip 0-th element, since it is a "dummy" elt*/ for (int i = optimal_paths.size ()-1; i> 0;) diff --git a/lily/graphical-axis-group.cc b/lily/graphical-axis-group.cc new file mode 100644 index 0000000000..b0aab89df0 --- /dev/null +++ b/lily/graphical-axis-group.cc @@ -0,0 +1,90 @@ +/* + axis-group.cc -- implement Graphical_axis_group + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ +#include "interval.hh" +#include "graphical-axis-group.hh" +#include "axis-group-element.hh" +#include "graphical-element.hh" +#include "debug.hh" + +/** don't copy anything: an element can only be in one + Graphical_axis_group at one time. */ +Graphical_axis_group::Graphical_axis_group (Graphical_axis_group const&s) +{ + axis1_ = s.axis1_; + axis2_ = s.axis2_; +} + +bool +Graphical_axis_group::contains_b (Graphical_element const *e) const +{ + return elem_l_arr_.find_l (e); +} + +Interval +Graphical_axis_group::extent (Axis axis) const +{ + Interval r; + for (int i=0; i < elem_l_arr_.size(); i++) + r.unite (elem_l_arr_[i]->extent (axis)); + return r; +} + +void +Graphical_axis_group::add_element (Graphical_element*e) +{ + Graphical_axis_group *& g1 = e->axis_group_l_a_[axis1_]; + Graphical_axis_group *& g2 = e->axis_group_l_a_[axis2_]; + + assert (!g1 || g1 == this); + assert (!g2 || g2 == this); + g1 = this; + g2 = this; + elem_l_arr_.push (e); +} + + + +void +Graphical_axis_group::remove_element (Graphical_element*e) +{ + assert (contains_b (e)); + elem_l_arr_.unordered_substitute (e,0); + + e->axis_group_l_a_[axis1_] = 0; + e->axis_group_l_a_[axis2_] = 0; +} + +void +Graphical_axis_group::remove_all () +{ + for (int i=0; i < elem_l_arr_.size(); i++) + { + Graphical_element*e=elem_l_arr_[i]; + e->axis_group_l_a_[axis1_] = 0; + e->axis_group_l_a_[axis2_] = 0; + } + elem_l_arr_.clear (); +} + + +void +Graphical_axis_group::do_print() const +{ +#ifndef NPRINT + for (int i=0; i < elem_l_arr_.size(); i++) + DOUT << elem_l_arr_[i]->name () << " "; +#endif +} + +Graphical_axis_group::Graphical_axis_group (Axis a1, Axis a2) +{ + axis1_ =a1; + axis2_ = a2; +} + +IMPLEMENT_IS_TYPE_B1(Graphical_axis_group, Graphical_element); diff --git a/lily/graphical-element.cc b/lily/graphical-element.cc index f9273f0ee3..d604fba9c3 100644 --- a/lily/graphical-element.cc +++ b/lily/graphical-element.cc @@ -3,11 +3,11 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "graphical-element.hh" -#include "axis-group-element.hh" +#include "graphical-axis-group.hh" #include "debug.hh" bool @@ -26,14 +26,9 @@ Graphical_element::Graphical_element (Graphical_element const &s) init (); empty_b_ = s.empty_b_; axis_group_l_a_[0] = axis_group_l_a_[1] =0; - offset_ = Offset (0,0); + offset_ = Offset (0,0); // Hmmmm.... Should copy? } -Graphical_element::~Graphical_element () -{ - -} - void Graphical_element::init () { @@ -58,7 +53,7 @@ Real Graphical_element::absolute_coordinate (Axis a) const { Real r = offset_[a]; - for (Axis_group_element * axis_group_l = axis_group_l_a_[a]; + for (Graphical_axis_group * axis_group_l = axis_group_l_a_[a]; axis_group_l; axis_group_l = axis_group_l->axis_group_l_a_[a]) r += axis_group_l->offset_[a]; @@ -81,10 +76,10 @@ Graphical_element::translate_axis (Real y, Axis a) } Real -Graphical_element::relative_coordinate (Axis_group_element*e, Axis a) const +Graphical_element::relative_coordinate (Graphical_axis_group*e, Axis a) const { Real r =0.0; - for (Axis_group_element * axis_group_l = axis_group_l_a_[a]; + for (Graphical_axis_group * axis_group_l = axis_group_l_a_[a]; axis_group_l != e; axis_group_l = axis_group_l->axis_group_l_a_[a]) r += axis_group_l->offset_[a]; @@ -92,17 +87,17 @@ Graphical_element::relative_coordinate (Axis_group_element*e, Axis a) const return r; } -Axis_group_element* +Graphical_axis_group* Graphical_element::common_group (Graphical_element const* s, Axis a) const { - Link_array my_groups; - for (Axis_group_element * axis_group_l = axis_group_l_a_[a]; + Link_array my_groups; + for (Graphical_axis_group * axis_group_l = axis_group_l_a_[a]; axis_group_l; axis_group_l = axis_group_l->axis_group_l_a_[a]) my_groups.push (axis_group_l); - Axis_group_element* common_l=0; - for (Axis_group_element * axis_group_l = s->axis_group_l_a_[a]; + Graphical_axis_group* common_l=0; + for (Graphical_axis_group * axis_group_l = s->axis_group_l_a_[a]; !common_l && axis_group_l; axis_group_l = axis_group_l->axis_group_l_a_[a]) common_l = my_groups.find_l (axis_group_l); @@ -169,7 +164,7 @@ Graphical_element::height() const void Graphical_element::unlink () { - for (int j=0; j < 2; j++) + for (int j=0; j < 2; j++) if (axis_group_l_a_[j]) axis_group_l_a_[j]->remove_element (this); } @@ -181,12 +176,12 @@ Graphical_element::junk_links () } void -Graphical_element::print () const +Graphical_element::do_print () const { #ifndef NPRINT if (offset_.x() || offset_.y ()) DOUT << "offset: " << offset_.str() ; - DOUT << "\n"; + DOUT << '\n'; #endif } diff --git a/lily/grouping.cc b/lily/grouping.cc index 2bdaed7db1..af7d234bf4 100644 --- a/lily/grouping.cc +++ b/lily/grouping.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "debug.hh" diff --git a/lily/hara-kiri-line-group-engraver.cc b/lily/hara-kiri-line-group-engraver.cc index fecde2402d..ab12bf8780 100644 --- a/lily/hara-kiri-line-group-engraver.cc +++ b/lily/hara-kiri-line-group-engraver.cc @@ -3,16 +3,16 @@ source file of the GNU LilyPond music typesetter - (c) 1998 Jan Nieuwenhuizen + (c) 1998 Jan Nieuwenhuizen */ #include "staff-sym.hh" #include "command-request.hh" -#include "p-col.hh" +#include "note-head.hh" #include "hara-kiri-vertical-group-spanner.hh" #include "hara-kiri-line-group-engraver.hh" -IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Engraver); +IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Line_group_engraver_group); ADD_THIS_TRANSLATOR (Hara_kiri_line_group_engraver); void @@ -20,3 +20,14 @@ Hara_kiri_line_group_engraver::create_line_spanner () { staffline_p_ = new Hara_kiri_vertical_group_spanner; } + +void +Hara_kiri_line_group_engraver::typeset_element(Score_element * e) +{ + if (e->is_type_b (Note_head::static_name ())) + ((Hara_kiri_vertical_group_spanner*)staffline_p_)->add_note + ((Note_head*)e->access_Item ()); + + Line_group_engraver_group::typeset_element (e); +} + diff --git a/lily/hara-kiri-vertical-group-spanner.cc b/lily/hara-kiri-vertical-group-spanner.cc index 92fc9e29ee..849a2552fa 100644 --- a/lily/hara-kiri-vertical-group-spanner.cc +++ b/lily/hara-kiri-vertical-group-spanner.cc @@ -4,51 +4,53 @@ source file of the GNU LilyPond music typesetter - (c) 1998 Jan Nieuwenhuizen + (c) 1998 Jan Nieuwenhuizen */ #include "hara-kiri-vertical-group-spanner.hh" -#include "item.hh" +#include "debug.hh" #include "note-head.hh" -#include "p-col.hh" -#include "molecule.hh" +#include "bar.hh" IMPLEMENT_IS_TYPE_B1 (Hara_kiri_vertical_group_spanner, Vertical_group_spanner); -void -Hara_kiri_vertical_group_spanner::add_element (Graphical_element* e) +Hara_kiri_vertical_group_spanner::Hara_kiri_vertical_group_spanner() { - if (e->is_type_b (Note_head::static_name ())) - add_dependency ((Score_elem*)e); - Vertical_group_spanner::add_element (e); } -// we never get here, or indeed in axis-group-spanner::do_break_processing? void -Hara_kiri_vertical_group_spanner::do_break_processing () +Hara_kiri_vertical_group_spanner::add_note (Note_head* n) { - Vertical_group_spanner::do_break_processing (); - if (dependency_size ()) - return; - transparent_b_ = true; + add_dependency (n); + head_l_arr_.push (n); } -// too late ? void Hara_kiri_vertical_group_spanner::do_post_processing () { - if (dependency_size ()) + if (!head_l_arr_.empty ()) return; - transparent_b_ = true; + + Link_array childs = get_children (); + for (int i = 0; i < childs.size (); i++) + { + childs[i]->transparent_b_ = true; + childs[i]->set_empty (true); + } + set_empty (true); } -Molecule* -Hara_kiri_vertical_group_spanner::brew_molecule_p() const +void +Hara_kiri_vertical_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n) { - // aaarg: go away - if (1) // transparent_b_) - return new Molecule; - return Vertical_group_spanner::brew_molecule_p (); + if (o->is_type_b (Note_head::static_name ())) + head_l_arr_.substitute ((Note_head*)o->access_Item (), + (n)? (Note_head*)n->access_Item () : 0); } +void +Hara_kiri_vertical_group_spanner::do_print () const +{ + Axis_group_spanner::do_print (); +} diff --git a/lily/head-engraver.cc b/lily/head-engraver.cc new file mode 100644 index 0000000000..c8c5e79248 --- /dev/null +++ b/lily/head-engraver.cc @@ -0,0 +1,79 @@ +/* + head-grav.cc -- part of GNU LilyPond + + (c) 1997--1998 Han-Wen Nienhuys +*/ + +#include "note-head.hh" +#include "head-engraver.hh" +#include "paper-def.hh" +#include "musical-request.hh" +#include "dots.hh" + +Note_head_engraver::Note_head_engraver() +{ + dot_p_=0; + note_p_ = 0; + note_req_l_ =0; +} + +bool +Note_head_engraver::do_try_request (Request *req_l) +{ + if (note_req_l_) + return false; + + if (!(req_l->access_Musical_req () && req_l->access_Musical_req ()->access_Note_req ())) + + return false; + + note_req_l_=req_l->access_Musical_req ()->access_Rhythmic_req (); + return true; +} + +void +Note_head_engraver::do_process_requests() +{ + if (!note_req_l_ || note_p_) + return; + + note_p_ = new Note_head; + note_p_->balltype_i_ = note_req_l_->duration_.durlog_i_; + note_p_->dots_i_ = note_req_l_->duration_.dots_i_; + if (note_p_->dots_i_) + { + dot_p_ = new Dots; + note_p_->dots_l_ = dot_p_; + announce_element (Score_element_info (dot_p_,0)); + } + + note_p_->position_i_ = note_req_l_->access_Note_req ()->pitch_.steps (); + + + Score_element_info itinf (note_p_,note_req_l_); + announce_element (itinf); +} + +void +Note_head_engraver::do_pre_move_processing() +{ + if (note_p_) + { + typeset_element (note_p_); + note_p_ = 0; + } + if (dot_p_) + { + typeset_element (dot_p_); + dot_p_ =0; + } +} +void +Note_head_engraver::do_post_move_processing() +{ + note_req_l_ = 0; +} + + +IMPLEMENT_IS_TYPE_B1(Note_head_engraver,Engraver); +ADD_THIS_TRANSLATOR(Note_head_engraver); diff --git a/lily/head-grav.cc b/lily/head-grav.cc deleted file mode 100644 index 5820c5fa5f..0000000000 --- a/lily/head-grav.cc +++ /dev/null @@ -1,83 +0,0 @@ -/* - head-grav.cc -- part of GNU LilyPond - - (c) 1997--1998 Han-Wen Nienhuys -*/ - -#include "note-head.hh" -#include "head-grav.hh" -#include "paper-def.hh" -#include "musical-request.hh" -#include "dots.hh" - -Note_head_engraver::Note_head_engraver() -{ - dot_p_=0; - note_p_ = 0; - note_req_l_ =0; -} - -bool -Note_head_engraver::do_try_request (Request *req_l) -{ - if (note_req_l_) - return false; - - if (!(req_l->musical() && req_l->musical ()->note ())) - - return false; - - note_req_l_=req_l->musical()->rhythmic (); - return true; -} - -void -Note_head_engraver::do_process_requests() -{ - if (!note_req_l_ || note_p_) - return; - - note_p_ = new Note_head; - note_p_->balltype_i_ = note_req_l_->duration_.durlog_i_; - note_p_->dots_i_ = note_req_l_->duration_.dots_i_; - if (note_p_->dots_i_) - { - dot_p_ = new Dots; - note_p_->dots_l_ = dot_p_; - announce_element (Score_elem_info (dot_p_,0)); - } - - note_p_->position_i_ = note_req_l_->note()->pitch_.steps (); - - Staff_info inf = get_staff_info(); - if (inf.c0_position_i_l_) - note_p_->position_i_ += *inf.c0_position_i_l_; - - - Score_elem_info itinf (note_p_,note_req_l_); - announce_element (itinf); -} - -void -Note_head_engraver::do_pre_move_processing() -{ - if (note_p_) - { - typeset_element (note_p_); - note_p_ = 0; - } - if (dot_p_) - { - typeset_element (dot_p_); - dot_p_ =0; - } -} -void -Note_head_engraver::do_post_move_processing() -{ - note_req_l_ = 0; -} - - -IMPLEMENT_IS_TYPE_B1(Note_head_engraver,Engraver); -ADD_THIS_TRANSLATOR(Note_head_engraver); diff --git a/lily/header.cc b/lily/header.cc index 39dffd5dbf..2a38c5e597 100644 --- a/lily/header.cc +++ b/lily/header.cc @@ -3,12 +3,16 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "string.hh" #include "dictionary-iter.hh" #include "header.hh" +#include "main.hh" + +extern char const *lily_version_number_sz(); + String Header::TeX_string() const @@ -23,3 +27,9 @@ Header::TeX_string() const } return s; } + +Header::Header () +{ + lily_id_str_ = "Lily was here, " + + String (lily_version_number_sz ()); +} diff --git a/lily/heads-engraver.cc b/lily/heads-engraver.cc new file mode 100644 index 0000000000..63e192ea06 --- /dev/null +++ b/lily/heads-engraver.cc @@ -0,0 +1,86 @@ +/* + head-grav.cc -- part of GNU LilyPond + + (c) 1997--1998 Han-Wen Nienhuys +*/ + +#include "note-head.hh" +#include "heads-engraver.hh" +#include "paper-def.hh" +#include "musical-request.hh" +#include "dots.hh" +#include "dot-column.hh" + +Note_heads_engraver::Note_heads_engraver() +{ +} + +bool +Note_heads_engraver::do_try_request (Request *req_l) +{ + if (!req_l->access_Musical_req ()) + return false; + + Note_req * n =req_l->access_Musical_req ()->access_Note_req (); + if (!n) + return false; + + note_req_l_arr_.push (n); + return true; +} + +void +Note_heads_engraver::do_process_requests() +{ + if (note_p_arr_.size ()) + return ; + + for (int i=0; i < note_req_l_arr_.size (); i++) + { + Note_head *note_p = new Note_head; + Note_req * note_req_l = note_req_l_arr_[i]; + note_p->balltype_i_ = note_req_l->duration_.durlog_i_; + note_p->dots_i_ = note_req_l->duration_.dots_i_; + if (note_p->dots_i_) + { + Dots * d = new Dots; + note_p->dots_l_ = d; + announce_element (Score_element_info (d,0)); + dot_p_arr_.push (d); + } + + note_p->position_i_ = note_req_l->access_Note_req ()->pitch_.steps (); + + + Score_element_info itinf (note_p,note_req_l); + announce_element (itinf); + note_p_arr_.push (note_p); + } +} + +void +Note_heads_engraver::do_pre_move_processing() +{ + for (int i=0; i < note_p_arr_.size (); i++) + { + typeset_element (note_p_arr_[i]); + } + note_p_arr_.clear (); + for (int i=0; i < dot_p_arr_.size (); i++) + { + typeset_element (dot_p_arr_[i]); + } + dot_p_arr_.clear (); + + note_req_l_arr_.clear (); +} + +void +Note_heads_engraver::do_post_move_processing() +{ + +} + + +IMPLEMENT_IS_TYPE_B1(Note_heads_engraver,Engraver); +ADD_THIS_TRANSLATOR(Note_heads_engraver); diff --git a/lily/horizontal-align-item.cc b/lily/horizontal-align-item.cc index 82a81c2300..a22f30eb5e 100644 --- a/lily/horizontal-align-item.cc +++ b/lily/horizontal-align-item.cc @@ -3,112 +3,18 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "horizontal-align-item.hh" #include "debug.hh" -IMPLEMENT_IS_TYPE_B1(Horizontal_align_item,Item); - -bool -Horizontal_align_item::contains_b (Item *i) const -{ - return item_l_arr_.find_l (i); -} - -void -Horizontal_align_item::add (Item *i,int p) -{ - assert (! contains_b (i)); - priority_i_arr_.push (p); - item_l_arr_.push (i); - add_dependency (i); -} - -void -Horizontal_align_item::do_substitute_dependency (Score_elem*o,Score_elem*n) -{ - int i; - while ((i = item_l_arr_.find_i (o->item())) >=0) - { - if (n) - item_l_arr_[i] = n->item(); - else - item_l_arr_.del (i); - } -} - -struct Horizontal_align_item_content { - Item * item_l_; - int priority_i_; - static int compare (Horizontal_align_item_content const &h1, - Horizontal_align_item_content const &h2) - { - return h1.priority_i_ - h2.priority_i_; - } - Horizontal_align_item_content (Item*i, int p) - { - priority_i_ = p; - item_l_ = i; - } - Horizontal_align_item_content(){item_l_ =0; priority_i_ =0; } -}; - +IMPLEMENT_IS_TYPE_B2(Horizontal_align_item,Align_element,Item); void -Horizontal_align_item::do_pre_processing() +Horizontal_align_item::add_item (Item *i,int p) { - { - Array content; - for (int i =0; i < item_l_arr_.size(); i++) - content.push ( - Horizontal_align_item_content ( - item_l_arr_[i], priority_i_arr_[i])); - content.sort (Horizontal_align_item_content::compare); - item_l_arr_.clear(); - priority_i_arr_.clear(); - for (int i =0; i < content.size(); i++) - { - item_l_arr_.push (content[i].item_l_); - priority_i_arr_.push (content[i].priority_i_); - } - } - - Array dims; - Real total =0; - for (int i =0; i < item_l_arr_.size(); i++) - { - - Interval item_width= item_l_arr_[i]->width(); - if (item_width.empty_b()) - { - item_width = Interval (0,0); - } - dims.push (item_width); - total += item_width.length(); - } - - Real where_f= total * (align_i_-1.0)/2.0; - Real center_dx_f = 0; - for (int i=0 ; i < item_l_arr_.size(); i++) - { - Real dx = where_f -dims[i][-1]; - item_l_arr_[i]->translate_axis (dx , X_AXIS); - if (item_l_arr_[i] == center_l_) - center_dx_f = where_f; - where_f += dims[i].length(); - } - if (center_dx_f && !align_i_) - for (int i=0 ; i < item_l_arr_.size(); i++) - item_l_arr_[i]->translate_axis (- center_dx_f , X_AXIS); - -} - -Interval -Horizontal_align_item::do_width() const -{ - return Interval (0,0); + add_element_priority (i,p); } void @@ -116,16 +22,14 @@ Horizontal_align_item::do_print() const { #ifndef NPRINT Item::do_print (); - DOUT << "contains: "; - for (int i=0 ; i < item_l_arr_.size(); i++) - DOUT << item_l_arr_[i]->name () << ", "; + Align_element::do_print (); #endif } -Horizontal_align_item::Horizontal_align_item() + +Horizontal_align_item::Horizontal_align_item () { - center_l_ = 0; - align_i_ = 0; - set_empty (true); - transparent_b_ = true; + align_dir_ = CENTER; + stacking_dir_ = RIGHT; + axis_ = X_AXIS; } diff --git a/lily/horizontal-group-elem.cc b/lily/horizontal-group-elem.cc index 85ca745509..804dd6d9b3 100644 --- a/lily/horizontal-group-elem.cc +++ b/lily/horizontal-group-elem.cc @@ -1,5 +1,4 @@ - -#include "horizontal-group-elem.hh" +#include "horizontal-group-element.hh" #include "interval.hh" #include "item.hh" #include "debug.hh" @@ -7,28 +6,14 @@ IMPLEMENT_IS_TYPE_B1(Horizontal_group_element, Axis_group_element); -void -Horizontal_group_element::remove_all() -{ - axis_admin_.remove_all (X_AXIS,X_AXIS); -} - -void -Horizontal_group_element::add_element (Graphical_element*e) +Horizontal_group_element::Horizontal_group_element () + : Axis_group_element (X_AXIS,X_AXIS) { - axis_admin_.add_element (e,this, X_AXIS,X_AXIS); } -void -Horizontal_group_element::remove_element (Graphical_element*e) -{ - axis_admin_.remove_element (e,X_AXIS,X_AXIS); -} - - Interval Horizontal_group_element::do_width() const { - return axis_admin_.extent (X_AXIS); + return Graphical_axis_group::extent (X_AXIS); } diff --git a/lily/horizontal-group-item.cc b/lily/horizontal-group-item.cc index a894ba5214..4e4d559495 100644 --- a/lily/horizontal-group-item.cc +++ b/lily/horizontal-group-item.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "p-col.hh" @@ -16,3 +16,8 @@ Horizontal_group_item::do_print() const { Axis_group_item::do_print(); } + +Horizontal_group_item::Horizontal_group_item () +{ + axis1_ = axis2_ = X_AXIS; +} diff --git a/lily/horizontal-vertical-group-elem.cc b/lily/horizontal-vertical-group-elem.cc index 6b5ddd79b6..9021d88da6 100644 --- a/lily/horizontal-vertical-group-elem.cc +++ b/lily/horizontal-vertical-group-elem.cc @@ -1,24 +1,13 @@ -#include "horizontal-vertical-group-elem.hh" +#include "horizontal-vertical-group-element.hh" #include "interval.hh" #include "item.hh" #include "debug.hh" -void -Horizontal_vertical_group_element::remove_all() +Horizontal_vertical_group_element::Horizontal_vertical_group_element() { - axis_admin_.remove_all (X_AXIS,Y_AXIS); -} -void -Horizontal_vertical_group_element::add_element (Graphical_element *e) -{ - axis_admin_.add_element (e, this, X_AXIS, Y_AXIS); -} - -void -Horizontal_vertical_group_element::remove_element (Graphical_element*e) -{ - axis_admin_.remove_element (e, X_AXIS, Y_AXIS); + axis1_ = X_AXIS; + axis2_ = Y_AXIS; } diff --git a/lily/horizontal-vertical-group-item.cc b/lily/horizontal-vertical-group-item.cc index dd40fb8182..cf1917228c 100644 --- a/lily/horizontal-vertical-group-item.cc +++ b/lily/horizontal-vertical-group-item.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ @@ -17,3 +17,9 @@ Horizontal_vertical_group_item::do_print() const } IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_item,Horizontal_vertical_group_element,Item); + +Horizontal_vertical_group_item::Horizontal_vertical_group_item () +{ + axis1_ = X_AXIS; + axis2_ = Y_AXIS; +} diff --git a/lily/idealspacing.cc b/lily/idealspacing.cc index 64c1866fd8..f2638e0603 100644 --- a/lily/idealspacing.cc +++ b/lily/idealspacing.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1996, 1997--1998 Han-Wen Nienhuys + (c) 1996, 1997--1998 Han-Wen Nienhuys */ #include "idealspacing.hh" @@ -16,7 +16,7 @@ Idealspacing::print() const { #ifndef NPRINT DOUT << "idealspacing {" ; - DOUT << "distance "< + (c) 1997--1998 Han-Wen Nienhuys */ #include @@ -47,7 +47,7 @@ void Identifier::error (String expect) const { String e (_("Wrong identifier type: ")); - e += String (name()) + _("(expected ") + expect + ")"; + e += _f ("%s expected", expect); ::error (e); } @@ -75,26 +75,24 @@ Identifier::do_print () const } /* ugh. */ -/* UGH MEMORY LEAK! */ -#define DEFAULT_PRINT(Class, accessor) \ +#define DEFAULT_PRINT(Class) \ void \ Class ## _identifier::do_print () const { \ - Class *cl = ((Class ## _identifier *)this)->accessor();\ + Class *cl = ((Class ## _identifier *)this)->access_ ## Class(false);\ cl->print (); \ - delete cl; \ } -DEFAULT_PRINT(General_script_def, script); -DEFAULT_PRINT(Lookup, lookup); -DEFAULT_PRINT(Translator, translator); -DEFAULT_PRINT(Symtables, symtables); -DEFAULT_PRINT(Music, music); -DEFAULT_PRINT(Request, request); -DEFAULT_PRINT(Score, score); -DEFAULT_PRINT(Midi_def, mididef); -DEFAULT_PRINT(Paper_def, paperdef); +DEFAULT_PRINT(General_script_def); +DEFAULT_PRINT(Lookup); +DEFAULT_PRINT(Translator); +DEFAULT_PRINT(Symtables); +DEFAULT_PRINT(Music); +DEFAULT_PRINT(Request); +DEFAULT_PRINT(Score); +DEFAULT_PRINT(Midi_def); +DEFAULT_PRINT(Paper_def); /* ugh. */ #define DUMMY_STR(Class) \ @@ -120,7 +118,7 @@ DUMMY_STR(Duration); void \ Class ## _identifier::do_print () const\ {\ - DOUT << do_str () << "\n";\ + DOUT << do_str () << '\n';\ }\ @@ -133,7 +131,7 @@ STRING_PRINT(String); String \ Class ## _identifier::do_str () const\ {\ - return String (*data_p_);\ + return to_str (*data_p_);\ } DEFAULT_STR(int); @@ -145,57 +143,61 @@ DEFAULT_STR(String); fucking C++ blows me. */ -#define DEFAULT_ACCESSOR(Class, accessor)\ +#define DEFAULT_ACCESSOR(Class)\ Class*\ -Class ## _identifier::accessor () const {\ +Class ## _identifier::access_ ## Class (bool copy_b) const {\ ((Class ## _identifier*)this)->accessed_b_ = true;\ - return new Class (*data_p_);\ + return copy_b ? new Class (*data_p_) : data_p_;\ } -#define VIRTUAL_ACCESSOR(Class, accessor)\ +#define VIRTUAL_ACCESSOR(Class)\ Class*\ -Class ## _identifier::accessor () const{\ +Class ## _identifier::access_ ## Class (bool copy_b) const{\ ((Class ## _identifier*)this)->accessed_b_ = true;\ - return (Class*)data_p_->clone();\ + return copy_b ? (Class*)data_p_->clone() : data_p_;\ } -#define IMPLEMENT_ID_CLASS(Class, accessor) \ +#define IMPLEMENT_ID_CLASS(Class) \ IMPLEMENT_IS_TYPE_B1(Class ## _identifier,Identifier)\ Class ## _identifier::~Class ## _identifier() { delete data_p_; }\ - Class ## _identifier::Class ## _identifier (Class*st, int code):Identifier (code) { data_p_ = st; }\ + Class ## _identifier::Class ## _identifier (Class*st, int code) \ + :Identifier (code)\ + {\ + data_p_ = st;\ + }\ Class ## _identifier::Class ## _identifier (Class ## _identifier const &s) \ -: Identifier (s)\ + : Identifier (s)\ {\ - data_p_ = s.accessor ();\ + data_p_ = s.access_ ## Class (true);\ } -IMPLEMENT_ID_CLASS(Duration, duration); -IMPLEMENT_ID_CLASS(Translator, translator); -IMPLEMENT_ID_CLASS(int, intid); -IMPLEMENT_ID_CLASS(Real, real); -IMPLEMENT_ID_CLASS(String, string); -IMPLEMENT_ID_CLASS(General_script_def, script); -IMPLEMENT_ID_CLASS(Lookup, lookup); -IMPLEMENT_ID_CLASS(Symtables, symtables); -IMPLEMENT_ID_CLASS(Music, music); -IMPLEMENT_ID_CLASS(Score, score); -IMPLEMENT_ID_CLASS(Request, request); -IMPLEMENT_ID_CLASS(Midi_def, mididef); -IMPLEMENT_ID_CLASS(Paper_def, paperdef); - -VIRTUAL_ACCESSOR(Music, music); -VIRTUAL_ACCESSOR(Request, request); -VIRTUAL_ACCESSOR(Translator, translator); -VIRTUAL_ACCESSOR(General_script_def, script); - -DEFAULT_ACCESSOR(Duration, duration); -DEFAULT_ACCESSOR(int, intid); -DEFAULT_ACCESSOR(Real, real); -DEFAULT_ACCESSOR(String, string); -DEFAULT_ACCESSOR(Lookup, lookup); -DEFAULT_ACCESSOR(Symtables, symtables); -DEFAULT_ACCESSOR(Score, score); -DEFAULT_ACCESSOR(Midi_def, mididef); -DEFAULT_ACCESSOR(Paper_def, paperdef); +IMPLEMENT_ID_CLASS(Duration); +IMPLEMENT_ID_CLASS(Translator); +IMPLEMENT_ID_CLASS(int); +IMPLEMENT_ID_CLASS(Real); +IMPLEMENT_ID_CLASS(String); +IMPLEMENT_ID_CLASS(General_script_def); +IMPLEMENT_ID_CLASS(Lookup); +IMPLEMENT_ID_CLASS(Symtables); +IMPLEMENT_ID_CLASS(Music); +IMPLEMENT_ID_CLASS(Score); +IMPLEMENT_ID_CLASS(Request); +IMPLEMENT_ID_CLASS(Midi_def); +IMPLEMENT_ID_CLASS(Paper_def); + +VIRTUAL_ACCESSOR(Music); +VIRTUAL_ACCESSOR(Request); +VIRTUAL_ACCESSOR(Translator); +VIRTUAL_ACCESSOR(General_script_def); + +DEFAULT_ACCESSOR(Duration); +DEFAULT_ACCESSOR(int); +DEFAULT_ACCESSOR(Real); +DEFAULT_ACCESSOR(String); +DEFAULT_ACCESSOR(Lookup); +DEFAULT_ACCESSOR(Symtables); +DEFAULT_ACCESSOR(Score); +DEFAULT_ACCESSOR(Midi_def); +DEFAULT_ACCESSOR(Paper_def); diff --git a/lily/includable-lexer.cc b/lily/includable-lexer.cc index 2d3b45597d..1adf85425d 100644 --- a/lily/includable-lexer.cc +++ b/lily/includable-lexer.cc @@ -3,16 +3,25 @@ source file of the LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ + +#include + #include "includable-lexer.hh" #include "source-file.hh" #include "source.hh" +#include "debug.hh" #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif +#ifndef YY_START +#define YY_START ((yy_start - 1) / 2) +#define YYSTATE YY_START +#endif + Includable_lexer::Includable_lexer () { yy_current_buffer = 0; @@ -26,7 +35,7 @@ Includable_lexer::new_input (String s, Sources * global_sources) Source_file * sl = global_sources->get_file_l (s); if (!sl) { - String msg =_ ("Can't find file `") + s+ "'"; + String msg = _f ("can't find file: `%s\'", s); LexerError (msg.ch_C ()); return; } @@ -35,7 +44,7 @@ Includable_lexer::new_input (String s, Sources * global_sources) char_count_stack_.push (0); if (yy_current_buffer) state_stack_.push (yy_current_buffer); - cout << "[" << s<istream_l (), YY_BUF_SIZE)); } +void +Includable_lexer::new_input (String name, String data, Sources* sources) +{ + Source_file* file = new Source_file (name, data); + sources->add (file); + filename_str_arr_.push (name); + + char_count_stack_.push (0); + if (yy_current_buffer) + state_stack_.push (yy_current_buffer); + *mlog << "[" << name << flush; + include_stack_.push (file); + + yy_switch_to_buffer (yy_create_buffer (file->istream_l (), YY_BUF_SIZE)); +} /** pop the inputstack. conceptually this is a destructor, but it does not destruct the Source_file that Includable_lexer::new_input creates. */ @@ -56,11 +80,12 @@ Includable_lexer::close_input () { include_stack_.pop (); char_count_stack_.pop (); - cout << "]"< + (c) 1997--1998 Han-Wen Nienhuys */ @@ -16,7 +16,7 @@ class Abbreviation : public Item { protected: virtual void do_print () const; virtual Molecule *brew_molecule_p () const; - virtual void do_substitute_dependent (Score_elem*, Score_elem*); + virtual void do_substitute_dependent (Score_element*, Score_element*); public: int abbrev_flags_i_; Abbreviation (); diff --git a/lily/include/abbreviation-beam-engraver.hh b/lily/include/abbreviation-beam-engraver.hh index df3244e4dd..2a25c89d44 100644 --- a/lily/include/abbreviation-beam-engraver.hh +++ b/lily/include/abbreviation-beam-engraver.hh @@ -3,8 +3,8 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ @@ -29,7 +29,7 @@ protected: virtual void do_removal_processing(); virtual void do_process_requests(); virtual bool do_try_request (Request*); - virtual void acknowledge_element (Score_elem_info); + virtual void acknowledge_element (Score_element_info); virtual void do_pre_move_processing(); private: diff --git a/lily/include/abbreviation-beam.hh b/lily/include/abbreviation-beam.hh index f6eb933e70..629fb0286e 100644 --- a/lily/include/abbreviation-beam.hh +++ b/lily/include/abbreviation-beam.hh @@ -3,8 +3,8 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys - Jan Nieuwenhuizen + (c) 1997--1998 Han-Wen Nienhuys + Jan Nieuwenhuizen */ #ifndef ABBREVIATION_BEAM_HH @@ -21,7 +21,7 @@ public: Abbreviation_beam(); - SCORE_ELEM_CLONE(Abbreviation_beam); + SCORE_ELEMENT_CLONE(Abbreviation_beam); protected: virtual void do_print() const; diff --git a/lily/include/afm-reader.hh b/lily/include/afm-reader.hh new file mode 100644 index 0000000000..64faa2afa1 --- /dev/null +++ b/lily/include/afm-reader.hh @@ -0,0 +1,22 @@ + +/* + afm-reader.hh -- declare + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#ifndef AFM_READER_HH +#define AFM_READER_HH + +class Adobe_font_metric_file +{ + Adobe_font_metric_file + +}; + + +#endif /* AFM_READER_HH */ + diff --git a/lily/include/afm.hh b/lily/include/afm.hh new file mode 100644 index 0000000000..8a932d05fc --- /dev/null +++ b/lily/include/afm.hh @@ -0,0 +1,56 @@ +/* + afm.hh -- declare Adobe_font_metric + + source file of the GNU LilyPond music typesetter + + (c) 1998 Han-Wen Nienhuys + + */ + +#ifndef AFM_HH +#define AFM_HH + +#include "string.hh" +#include "box.hh" +#include "array.hh" + +struct Adobe_font_char_metric { + int C_; + Real WX_; + String N_; + Box B_; + Box &bbox(); + String &name(); + Real &width(); + int &code (); + + String str () const; + Adobe_font_char_metric (); +}; + +struct Adobe_font_metric { + String FontName_; + String FullName_; + String FamilyName_; + String Weight_; + Real ItalicAngle_; + bool IsFixedPitch_; + Box FontBBox_; + Real UnderlinePosition_; + Real UnderlineThickness_; + String Version_; + String Notice_; + String EncodingScheme_; + Array char_metrics_; + + Adobe_font_char_metric find_char (String name) const; + String str () const; + Adobe_font_metric (); +}; + +Adobe_font_metric read_afm (String fn); + + + +#endif /* AFM_HH */ + diff --git a/lily/include/align-element.hh b/lily/include/align-element.hh new file mode 100644 index 0000000000..0b18f18f54 --- /dev/null +++ b/lily/include/align-element.hh @@ -0,0 +1,58 @@ +/* + align-item.hh -- declare Align_elem + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + + +#ifndef VERTICAL_ALIGN_ITEM_HH +#define VERTICAL_ALIGN_ITEM_HH + +#include "score-element.hh" +#include "interval.hh" +#include "direction.hh" +#include "axes.hh" + +/** + Order elements top to bottom. + + TODO: merge with Horizontal_align_item + */ +class Align_element : virtual public Score_element { + Link_array elem_l_arr_; + Array priority_i_arr_; + void sort_elements (); +public: + Interval threshold_interval_ ; + + /** + Should high priorities be first or last? + */ + + Direction stacking_dir_; + + /** + Which side to align? + -1: left side, 0: centered (around center_l_ if not nil), 1: right side + */ + + Direction align_dir_; + + Axis axis_; + Score_element * center_l_; + + Align_element (); + void add_element (Score_element*); + void add_element_priority (Score_element*, int); + bool contains_b (Score_element const*) const; + DECLARE_MY_RUNTIME_TYPEINFO; +protected: + virtual void do_print() const; + virtual void do_substitute_dependency (Score_element*,Score_element*); + virtual void do_post_processing() ; + virtual void do_pre_processing (); + virtual void do_side_processing (); +}; +#endif // VERTICAL_ALIGN_ITEM_HH diff --git a/lily/include/atom.hh b/lily/include/atom.hh index b145383d7d..d7c31ee35c 100644 --- a/lily/include/atom.hh +++ b/lily/include/atom.hh @@ -3,14 +3,14 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef ATOM_HH #define ATOM_HH #include "string.hh" -#include "boxes.hh" +#include "box.hh" #include "lily-proto.hh" @@ -19,8 +19,10 @@ class Atom { Offset off_; public: String tex_; + String font_; Box dim_; + Offset offset () const; String str() const; // for printing. Atom (String, Box); Atom (); @@ -29,7 +31,6 @@ public: /// how big is #this#? Box extent() const; void print() const; - String TeX_string() const; bool check_infinity_b () const; }; #endif diff --git a/lily/include/audio-column.hh b/lily/include/audio-column.hh index 6065e43a68..9b60c3eb7d 100644 --- a/lily/include/audio-column.hh +++ b/lily/include/audio-column.hh @@ -1,7 +1,7 @@ /* audio-column.hh -- declare Audio_column - (c) 1997--1998 Jan Nieuwenhuizen + (c) 1997--1998 Jan Nieuwenhuizen */ #ifndef AUDIO_COLUMN_HH @@ -21,7 +21,7 @@ class Audio_column { public: Audio_column (Moment at_mom); - void add (Audio_item* i_l); + void add_audio_item (Audio_item* i_l); Moment at_mom() const; void print() const; diff --git a/lily/include/audio-element.hh b/lily/include/audio-element.hh index 6fe2a8e068..db7e4097d3 100644 --- a/lily/include/audio-element.hh +++ b/lily/include/audio-element.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lily/include/audio-item.hh b/lily/include/audio-item.hh index 3edfa01e48..b745c5b931 100644 --- a/lily/include/audio-item.hh +++ b/lily/include/audio-item.hh @@ -1,7 +1,7 @@ /* audio-item.hh -- declare Audio_items - (c) 1996, 1997--1998 Jan Nieuwenhuizen + (c) 1996, 1997--1998 Jan Nieuwenhuizen */ #ifndef AUDIO_ITEM_HH @@ -58,8 +58,9 @@ struct Audio_instrument : public Audio_item { struct Audio_note : public Audio_item { DECLARE_MY_RUNTIME_TYPEINFO; - Audio_note (Request* req_l); + Audio_note (Request* req_l, int transposing_i = 0); virtual Midi_item* midi_item_p(); + int transposing_i_; }; struct Audio_text : Audio_item { @@ -82,8 +83,8 @@ struct Audio_tempo : Audio_item { int per_minute_4_i_; }; -struct Audio_meter : Audio_item { - Audio_meter (Request* req_l); +struct Audio_time_signature : Audio_item { + Audio_time_signature (Request* req_l); virtual Midi_item* midi_item_p(); DECLARE_MY_RUNTIME_TYPEINFO; }; diff --git a/lily/include/audio-staff.hh b/lily/include/audio-staff.hh index 12f3d9c1e8..3d13b28d61 100644 --- a/lily/include/audio-staff.hh +++ b/lily/include/audio-staff.hh @@ -1,7 +1,7 @@ /* audio-staff.hh -- declare Audio_staff - (c) 1996, 1997--1998 Jan Nieuwenhuizen + (c) 1996, 1997--1998 Jan Nieuwenhuizen */ #ifndef AUDIO_STAFF_HH @@ -13,7 +13,7 @@ #include "audio-element.hh" struct Audio_staff : public Audio_element { - void add (Audio_item* l); + void add_audio_item (Audio_item* l); void output (Midi_stream& midi_stream_r, int track_i); Link_list audio_item_l_list_; diff --git a/lily/include/axis-group-administration.hh b/lily/include/axis-group-administration.hh deleted file mode 100644 index 7933590884..0000000000 --- a/lily/include/axis-group-administration.hh +++ /dev/null @@ -1,36 +0,0 @@ -/* - axis-group-administration.hh -- declare Axis_group_administration - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#ifndef AXIS_GROUP_ADMINISTRATION_HH -#define AXIS_GROUP_ADMINISTRATION_HH - - -#include "parray.hh" -#include "axes.hh" -#include "real.hh" -#include "lily-proto.hh" - -/** - Do the dirty work for Axis_group_element. - */ -struct Axis_group_administration { - Link_array elem_l_arr_; - - Interval extent (Axis) const; - void print() const ; - Axis_group_administration (Axis_group_administration const&); - Axis_group_administration(){} - void remove_all (Axis a1, Axis a2); - - bool contains_b (Graphical_element const *) const; - void add_element (Graphical_element*, Axis_group_element*, Axis a1, Axis a2); - void remove_element (Graphical_element*, Axis a1, Axis a2); -}; - -#endif // AXIS_GROUP_ADMINISTRATION_HH diff --git a/lily/include/axis-group-element.hh b/lily/include/axis-group-element.hh index f3bfb3f702..f1389deebd 100644 --- a/lily/include/axis-group-element.hh +++ b/lily/include/axis-group-element.hh @@ -3,34 +3,35 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #ifndef AXIS_GROUP_ELEMENT_HH #define AXIS_GROUP_ELEMENT_HH -#include "score-elem.hh" -#include "axis-group-administration.hh" +#include "score-element.hh" +#include "graphical-axis-group.hh" + /** Treat a group of elements a unity in either or both axis sense . This is a wrapper around Axis_group_administration */ -class Axis_group_element : public virtual Score_elem { +class Axis_group_element : public virtual Score_element, + public Graphical_axis_group { protected: - Axis_group_administration axis_admin_; virtual void do_print() const; - virtual Link_array get_extra_dependencies() const; + virtual Link_array get_extra_dependencies() const; virtual void do_unlink(); virtual void do_junk_links(); + virtual Axis_group_element * access_Axis_group_element (); public: - virtual Link_array elem_l_arr() const; - Axis_group_element(); - virtual void remove_all()=0; - virtual void add_element (Graphical_element*)=0; - virtual void remove_element (Graphical_element*)=0; - virtual bool contains_b (Graphical_element const *) const; + virtual Link_array elem_l_arr() const; + Axis_group_element(Axis,Axis); + Axis_group_element(); + virtual Link_array get_children (); + DECLARE_MY_RUNTIME_TYPEINFO; }; diff --git a/lily/include/axis-group-item.hh b/lily/include/axis-group-item.hh index c61a081020..be1a78b6ca 100644 --- a/lily/include/axis-group-item.hh +++ b/lily/include/axis-group-item.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lily/include/axis-group-spanner.hh b/lily/include/axis-group-spanner.hh index 64c2df98b2..15022e2d80 100644 --- a/lily/include/axis-group-spanner.hh +++ b/lily/include/axis-group-spanner.hh @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ diff --git a/lily/include/bar-align-engraver.hh b/lily/include/bar-align-engraver.hh new file mode 100644 index 0000000000..a0ff903543 --- /dev/null +++ b/lily/include/bar-align-engraver.hh @@ -0,0 +1,13 @@ +/* + bar-align-engraver.hh -- declare + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + + +#ifndef BAR_ALIGN_GRAV_HH +#define BAR_ALIGN_GRAV_HH + +#endif // BAR_ALIGN_GRAV_HH diff --git a/lily/include/bar-align-grav.hh b/lily/include/bar-align-grav.hh deleted file mode 100644 index a6579db197..0000000000 --- a/lily/include/bar-align-grav.hh +++ /dev/null @@ -1,13 +0,0 @@ -/* - bar-align-grav.hh -- declare - - source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - - -#ifndef BAR_ALIGN_GRAV_HH -#define BAR_ALIGN_GRAV_HH - -#endif // BAR_ALIGN_GRAV_HH diff --git a/lily/include/bar-column-engraver.hh b/lily/include/bar-column-engraver.hh new file mode 100644 index 0000000000..1c186b6385 --- /dev/null +++ b/lily/include/bar-column-engraver.hh @@ -0,0 +1,37 @@ +/* + bar-column-engraver.hh -- declare Bar_column_engraver + + source file of the GNU LilyPond music typesetter + + (c) 1997--1998 Han-Wen Nienhuys +*/ + + +#ifndef BAR_COLUMN_GRAV_HH +#define BAR_COLUMN_GRAV_HH + +#include "engraver.hh" +#include "parray.hh" + +/// couple bars and appropriate scripts +class Bar_column_engraver :public Engraver { + Bar_column *barcol_p_; + Link_array