]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 1.0.1 release/1.0.1
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 10 Aug 1998 23:45:43 +0000 (01:45 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 10 Aug 1998 23:45:43 +0000 (01:45 +0200)
1268 files changed:
.dstreamrc [deleted file]
ANNOUNCE [deleted file]
ANNOUNCE-0.1
ANNOUNCEMENT [new file with mode: 0644]
AUTHORS.txt
BUGS
DEDICATION
Documentation/AUTHORS.pod [deleted file]
Documentation/BLURB.in [new file with mode: 0644]
Documentation/COPERTINA.in [new file with mode: 0644]
Documentation/COPERTINA.yo [new file with mode: 0644]
Documentation/CodingStyle.pod [deleted file]
Documentation/CodingStyle.yo [new file with mode: 0644]
Documentation/FLAPTEKST.in [new file with mode: 0644]
Documentation/FLAPTEKST.yo [new file with mode: 0644]
Documentation/INSTALL.pod [deleted file]
Documentation/MANIFESTO.pod [deleted file]
Documentation/MANIFESTO.yo [new file with mode: 0644]
Documentation/Makefile
Documentation/PATCHES.pod [deleted file]
Documentation/README-W32.yo [new file with mode: 0644]
Documentation/TODO [new file with mode: 0644]
Documentation/automake.urgh [deleted file]
Documentation/disclaimer-w32.yo [new file with mode: 0644]
Documentation/faq.pod [deleted file]
Documentation/faq.yo [new file with mode: 0644]
Documentation/gnu-music.pod [deleted file]
Documentation/gnu-music.yo [new file with mode: 0644]
Documentation/index.pod [deleted file]
Documentation/index.yo [new file with mode: 0644]
Documentation/internals.pod [deleted file]
Documentation/internals.yo [new file with mode: 0644]
Documentation/language.pod [deleted file]
Documentation/lelie_icon.xpm [deleted file]
Documentation/lelie_logo.xpm [deleted file]
Documentation/lelieblond.xpm [deleted file]
Documentation/links.pod [deleted file]
Documentation/links.yo [new file with mode: 0644]
Documentation/literature.pod [deleted file]
Documentation/man/Makefile
Documentation/man/convert-mudela.pod [deleted file]
Documentation/man/convert-mudela.yo [new file with mode: 0644]
Documentation/man/lilypond.pod [deleted file]
Documentation/man/lilypond.yo [new file with mode: 0644]
Documentation/man/ly2dvi.pod [deleted file]
Documentation/man/ly2dvi.yo [new file with mode: 0644]
Documentation/man/mi2mu.pod [deleted file]
Documentation/man/mi2mu.yo [new file with mode: 0644]
Documentation/man/mudela-book.pod [deleted file]
Documentation/man/mudela-book.yo [new file with mode: 0644]
Documentation/man/out/dummy.dep [deleted file]
Documentation/mutopia.pod [deleted file]
Documentation/mutopia.yo [new file with mode: 0644]
Documentation/other-packages.pod [deleted file]
Documentation/out/dummy.dep [deleted file]
Documentation/pictures/Makefile [new file with mode: 0644]
Documentation/pictures/lelie_icon.xpm [new file with mode: 0644]
Documentation/pictures/lelie_logo.xpm [new file with mode: 0644]
Documentation/pictures/lelieblond.xpm [new file with mode: 0644]
Documentation/pictures/screenshot.xpm [new file with mode: 0644]
Documentation/relative-octaves.pod [deleted file]
Documentation/relative-octaves.yo [new file with mode: 0644]
Documentation/scherm.in [new file with mode: 0644]
Documentation/schermo.in [new file with mode: 0644]
Documentation/tex/Makefile
Documentation/tex/colorado.bib
Documentation/tex/computer-forms.el [new file with mode: 0644]
Documentation/tex/computer-notation.bib [new file with mode: 0644]
Documentation/tex/computer.data [new file with mode: 0644]
Documentation/tex/engraving.bib
Documentation/tex/mudela.doc [deleted file]
Documentation/tex/mudela.yo [new file with mode: 0644]
Documentation/tex/other-packages.bib [new file with mode: 0644]
Documentation/tex/out/dummy.dep [deleted file]
Documentation/tex/vocabulary-forms.el [new file with mode: 0644]
Documentation/tex/vocabulary.data [new file with mode: 0644]
Documentation/topdocs/AUTHORS.yo [new file with mode: 0644]
Documentation/topdocs/INSTALL.yo [new file with mode: 0644]
Documentation/topdocs/Makefile [new file with mode: 0644]
Documentation/topdocs/PATCHES.yo [new file with mode: 0644]
Documentation/topdocs/README.yo [new file with mode: 0644]
Documentation/topdocs/index.yo [new file with mode: 0644]
Documentation/topdocs/scherm.in [new file with mode: 0644]
Documentation/topdocs/schermo.in [new file with mode: 0644]
Documentation/topdocs/topweb.yo [new file with mode: 0644]
Documentation/topinfo.yo [new file with mode: 0644]
Documentation/topweb.pod [deleted file]
Documentation/vocabulary-forms.el [deleted file]
Documentation/vocabulary.data [deleted file]
INSTALL.txt
NEWS
NEWS-0.0 [new file with mode: 0644]
NEWS-0.1 [new file with mode: 0644]
ONEWS [deleted file]
PATCHES.txt
README [deleted file]
README.txt [new file with mode: 0644]
TODO
VERSION
aclocal.m4
bin/Makefile [deleted file]
bin/add-URLs.sh [deleted file]
bin/add-html-footer.py [deleted file]
bin/clean-diaper.sh [deleted file]
bin/clean-embeds.sh [deleted file]
bin/clean-fonts.sh [deleted file]
bin/config.guess [deleted file]
bin/config.sub [deleted file]
bin/conflily.sh [deleted file]
bin/convert-mudela.pl [deleted file]
bin/doos-dist.sh [deleted file]
bin/find-typenames.pl [deleted file]
bin/flower.py [deleted file]
bin/genheader.py [deleted file]
bin/install-sh [deleted file]
bin/lilypython.py [deleted file]
bin/ls-latex.py [deleted file]
bin/ltconfig [deleted file]
bin/ltmain.sh [deleted file]
bin/ly2dvi.sh [deleted file]
bin/mail-address.sh [deleted file]
bin/make-patch.py [deleted file]
bin/make-version.sh [deleted file]
bin/mf-to-table.py [deleted file]
bin/mudela-book.pl [deleted file]
bin/mutopia-index.py [deleted file]
bin/out/dummy.dep [deleted file]
bin/profile-conf.sh [deleted file]
bin/ps-to-gifs.sh [deleted file]
bin/release.py [deleted file]
bin/rpm-dist.sh [deleted file]
bin/show-latest.pl [deleted file]
bin/table-to-html.py [deleted file]
bin/tar-docxx.sh [deleted file]
buildscripts/Makefile [new file with mode: 0644]
buildscripts/clean-diaper.sh [new file with mode: 0755]
buildscripts/clean-fonts.sh [new file with mode: 0755]
buildscripts/docxx-lily.sh [new file with mode: 0644]
buildscripts/find-typenames.pl [new file with mode: 0644]
buildscripts/gen-sitemap.sh [new file with mode: 0644]
buildscripts/genheader.py [new file with mode: 0644]
buildscripts/html-accents.py [new file with mode: 0644]
buildscripts/localpackage.py [new file with mode: 0644]
buildscripts/ltconfig [new file with mode: 0644]
buildscripts/ltmain.sh [new file with mode: 0644]
buildscripts/mail-address.sh [new file with mode: 0644]
buildscripts/mf-to-table.py [new file with mode: 0644]
buildscripts/mutopia-index.py [new file with mode: 0644]
buildscripts/profile-conf.sh [new file with mode: 0644]
buildscripts/ps-to-gifs.sh [new file with mode: 0755]
buildscripts/run-lilypond.sh [new file with mode: 0644]
buildscripts/set-lily.sh [new file with mode: 0755]
buildscripts/show-current.sh [new file with mode: 0644]
buildscripts/template.py [new file with mode: 0644]
config.hh.in
config.make.in
configure
configure.in
debian/Makefile
debian/README.Debian
debian/TODO
debian/changelog
debian/control
debian/control.foka [new file with mode: 0644]
debian/control.in [new file with mode: 0644]
debian/copyright
debian/out/control [new file with mode: 0644]
debian/out/dummy.dep [deleted file]
debian/postinst [changed mode: 0644->0755]
debian/postinst.old.sh [deleted file]
debian/postrm [changed mode: 0644->0755]
debian/preinst [deleted file]
debian/rules [changed mode: 0644->0755]
dstreamrc [new file with mode: 0644]
flower/Makefile
flower/NEWS [deleted file]
flower/NEWS-1.0 [new file with mode: 0644]
flower/NEWS-1.1.46 [new file with mode: 0644]
flower/ONEWS [deleted file]
flower/README
flower/VERSION
flower/axis.cc
flower/choleski.cc
flower/cpu-timer.cc
flower/data-file.cc
flower/dictionary.cc
flower/directed-graph.cc
flower/dstream.cc
flower/file-path.cc
flower/flower-debug.cc
flower/flower-version.cc [deleted file]
flower/full-storage.cc
flower/getopt-long.cc [new file with mode: 0644]
flower/include/Makefile
flower/include/acursor.hh
flower/include/arithmetic-operator.hh
flower/include/array.hh [new file with mode: 0644]
flower/include/array.icc [new file with mode: 0644]
flower/include/assoc.hh
flower/include/axes.hh
flower/include/cpu-timer.hh
flower/include/cursor.icc
flower/include/data-file.hh
flower/include/diagonal-storage.hh [deleted file]
flower/include/dictionary-iter.hh
flower/include/dictionary.hh
flower/include/directed-graph.hh
flower/include/dstream.hh
flower/include/file-path.hh
flower/include/flower-debug.hh
flower/include/full-storage.hh
flower/include/full-storage.icc
flower/include/getopt-long.hh [new file with mode: 0644]
flower/include/international.hh
flower/include/interval.hh
flower/include/interval.tcc
flower/include/iterate.hh
flower/include/lgetopt.hh [deleted file]
flower/include/libc-extension.hh
flower/include/list.icc
flower/include/list.tcc
flower/include/matrix-storage.hh
flower/include/matrix.hh
flower/include/nscalar.hh
flower/include/out/dummy.dep [deleted file]
flower/include/parray.hh
flower/include/plist.tcc
flower/include/pointer.hh
flower/include/pointer.tcc
flower/include/pqueue.hh
flower/include/priorities.hh
flower/include/rational.hh
flower/include/real.hh
flower/include/scalar.hh
flower/include/string-convert.hh
flower/include/string-data.hh
flower/include/string-data.icc
flower/include/string-handle.hh
flower/include/string-handle.icc
flower/include/string.hh
flower/include/string.icc
flower/include/text-db.hh
flower/include/text-stream.hh
flower/include/unionfind.hh
flower/include/varray.hh [deleted file]
flower/include/varray.icc
flower/include/vector.hh
flower/include/virtual-methods.hh
flower/interval.cc
flower/lgetopt.cc [deleted file]
flower/libc-extension.cc
flower/matrix-debug.cc
flower/matrix.cc
flower/nscalar.cc
flower/offset.cc
flower/out/dummy.dep [deleted file]
flower/rational.cc
flower/scalar.cc
flower/string-convert.cc
flower/string.cc
flower/stringutil.cc
flower/text-db.cc
flower/text-stream.cc
flower/vector.cc
init/Makefile
init/bar-numbering.ly
init/book-fragment.ly
init/book-init.ly [new file with mode: 0644]
init/center-fragment.ly [new file with mode: 0644]
init/center.ly [new file with mode: 0644]
init/declarations.ly
init/deutsch.ly
init/engraver.ly
init/fragment.ly [new file with mode: 0644]
init/init.fly [new file with mode: 0644]
init/init.ly [new file with mode: 0644]
init/italiano.ly
init/lily-init.ly [deleted file]
init/nederlands.ly
init/no-tape.ly [deleted file]
init/norsk.ly
init/out/dummy.dep [deleted file]
init/paper-params16.ly [deleted file]
init/paper-params20.ly [deleted file]
init/paper11.ly
init/paper13.ly
init/paper16.ly
init/paper20.ly
init/paper26.ly
init/params.ly
init/part-paper.ly [new file with mode: 0644]
init/performer.ly
init/property.ly
init/score-bar-numbering.ly
init/score-paper.ly [new file with mode: 0644]
init/script.ly
init/simple-init.ly [deleted file]
init/svenska.ly
init/table11.ly
init/table13.ly
init/table16.ly
init/table20.ly
init/table26.ly
input/Makefile
input/bugs/Makefile
input/bugs/a.ly [deleted file]
input/bugs/beam-bug.ly [deleted file]
input/bugs/beam-length.ly [deleted file]
input/bugs/grouping.fly [new file with mode: 0644]
input/bugs/hari-number.ly [new file with mode: 0644]
input/bugs/multi-slope.ly [deleted file]
input/bugs/out/dummy.dep [deleted file]
input/bugs/s.ly [deleted file]
input/bugs/slur-broken.ly
input/bugs/slur-bug.fly [new file with mode: 0644]
input/bugs/slur-bug.ly [deleted file]
input/bugs/slur-symmetry.ly [new file with mode: 0644]
input/bugs/stem-length.ly [deleted file]
input/bugs/tie-bug.ly [deleted file]
input/coriolan-alto.ly [deleted file]
input/example-1.fly [new file with mode: 0644]
input/example-2.fly [new file with mode: 0644]
input/example-3.ly [new file with mode: 0644]
input/keys.ly
input/kortjakje.ly
input/minimal.ly [deleted file]
input/multi.ly [deleted file]
input/out/dummy.dep [deleted file]
input/part.ly
input/pedal.ly
input/praeludium-fuga-E.ly
input/rhythm.ly
input/scales.ly
input/scripts.ly
input/test/Makefile
input/test/a.ly [new file with mode: 0644]
input/test/abbrev.ly
input/test/bar-scripts.ly [new file with mode: 0644]
input/test/beam-abbrev.fly [new file with mode: 0644]
input/test/beam-chord.ly
input/test/beam-length.fly [new file with mode: 0644]
input/test/beam-pos.ly
input/test/beams.ly
input/test/broken.ly
input/test/clefs.ly
input/test/collisions.ly
input/test/denneboom.ly
input/test/find-quarts.ly [new file with mode: 0644]
input/test/font-body.ly
input/test/font.ly
input/test/font16.ly
input/test/font20.ly
input/test/gourlay.ly
input/test/grace.ly [new file with mode: 0644]
input/test/hara-kiri.ly
input/test/keys.ly [new file with mode: 0644]
input/test/knee.ly
input/test/mark.ly [new file with mode: 0644]
input/test/multi-rest.ly
input/test/multi-slope.fly [new file with mode: 0644]
input/test/ossia.ly [new file with mode: 0644]
input/test/out/dummy.dep [deleted file]
input/test/score-bar-scripts.ly [new file with mode: 0644]
input/test/sizes.fly [new file with mode: 0644]
input/test/sleur.ly
input/test/slur-bug.ly [new file with mode: 0644]
input/test/slur-damping.ly
input/test/slur-swap.ly [new file with mode: 0644]
input/test/slurs.ly
input/test/spacing.ly
input/test/stem.ly
input/test/test-lyrics.ly
input/test/tie-bug.ly [new file with mode: 0644]
input/test/tie.ly
input/test/title.ly
input/test/transposing.fly [new file with mode: 0644]
input/test/transposition.ly [new file with mode: 0644]
input/test/updown.fly [new file with mode: 0644]
input/test/vertical-align.ly [new file with mode: 0644]
input/tril.ly
input/twinkle-pop.ly
input/twinkle.ly
intl/ChangeLog [new file with mode: 0644]
intl/Makefile [new file with mode: 0644]
intl/Makefile.in.dist [new file with mode: 0644]
intl/bindtextdom.c [new file with mode: 0644]
intl/cat-compat.c.dist [new file with mode: 0644]
intl/config.h [new file with mode: 0644]
intl/dcgettext.c [new file with mode: 0644]
intl/dgettext.c [new file with mode: 0644]
intl/finddomain.c [new file with mode: 0644]
intl/gettext.c [new file with mode: 0644]
intl/gettext.h [new file with mode: 0644]
intl/gettextP.h [new file with mode: 0644]
intl/hash-string.h [new file with mode: 0644]
intl/intl-compat.c [new file with mode: 0644]
intl/libgettext.h [new file with mode: 0644]
intl/libintl.inst [new file with mode: 0644]
intl/linux-msg.sed [new file with mode: 0755]
intl/loadmsgcat.c [new file with mode: 0644]
intl/localealias.c [new file with mode: 0644]
intl/po2tbl.sed.in [new file with mode: 0755]
intl/textdomain.c [new file with mode: 0644]
intl/xopen-msg.sed [new file with mode: 0755]
lib/Makefile
lib/binary-source-file.cc
lib/duration-convert.cc
lib/duration-iter.cc
lib/duration.cc
lib/include/Makefile
lib/include/binary-source-file.hh
lib/include/duration-convert.hh
lib/include/duration.hh
lib/include/file-storage.hh
lib/include/input.hh
lib/include/mapped-file-storage.hh
lib/include/out/dummy.dep [deleted file]
lib/include/plet.hh
lib/include/simple-file-storage.hh
lib/include/source-file.hh
lib/include/source.hh
lib/include/thank-you-cygnus.hh [new file with mode: 0644]
lib/include/warn.hh
lib/include/windhoos-suck-suck-suck-thank-you-cygnus.hh [deleted file]
lib/input.cc
lib/mapped-file-storage.cc
lib/moment.cc
lib/out/dummy.dep [deleted file]
lib/plet.cc
lib/simple-file-storage.cc
lib/source-file.cc
lib/source.cc
lib/template.cc
lib/thank-you-cygnus.cc [new file with mode: 0644]
lib/warn.cc
lib/windhoos-suck-suck-suck-thank-you-cygnus.cc [deleted file]
lily/Makefile
lily/VERSION
lily/abbrev.cc
lily/abbreviation-beam-engraver.cc
lily/abbreviation-beam.cc
lily/afm-reader.cc [new file with mode: 0644]
lily/afm.cc [new file with mode: 0644]
lily/align-element.cc [new file with mode: 0644]
lily/atom.cc
lily/audio-column.cc
lily/audio-element.cc
lily/audio-item.cc
lily/audio-staff.cc
lily/axis-group-administration.cc [deleted file]
lily/axis-group-element.cc
lily/axis-group-item.cc
lily/axis-group-spanner.cc
lily/bar-column-engraver.cc [new file with mode: 0644]
lily/bar-column-grav.cc [deleted file]
lily/bar-column.cc
lily/bar-engraver.cc [new file with mode: 0644]
lily/bar-grav.cc [deleted file]
lily/bar-number-engraver.cc [new file with mode: 0644]
lily/bar-number-grav.cc [deleted file]
lily/bar.cc
lily/beam-engraver.cc [new file with mode: 0644]
lily/beam-grav.cc [deleted file]
lily/beam-swallow-trans.cc
lily/beam.cc
lily/bezier.cc
lily/bow.cc
lily/boxes.cc
lily/break-align-item.cc
lily/break.cc
lily/change-iterator.cc
lily/change-translator.cc
lily/chord-iterator.cc
lily/clef-engraver.cc [new file with mode: 0644]
lily/clef-grav.cc [deleted file]
lily/clef-item.cc
lily/col-info.cc
lily/colhpos.cc
lily/collision-engraver.cc [new file with mode: 0644]
lily/collision-grav.cc [deleted file]
lily/collision.cc
lily/command-request.cc
lily/crescendo.cc
lily/debug.cc
lily/dimen.cc
lily/direction.cc
lily/dot-column-engraver.cc [new file with mode: 0644]
lily/dot-column.cc
lily/dots.cc
lily/dynamic-engraver.cc [new file with mode: 0644]
lily/dynamic-grav.cc [deleted file]
lily/encompass-info.cc
lily/engraver-group.cc
lily/engraver.cc
lily/font-size-engraver.cc [new file with mode: 0644]
lily/general-script-def.cc
lily/global-translator.cc
lily/gourlay-breaking.cc
lily/graphical-axis-group.cc [new file with mode: 0644]
lily/graphical-element.cc
lily/grouping.cc
lily/hara-kiri-line-group-engraver.cc
lily/hara-kiri-vertical-group-spanner.cc
lily/head-engraver.cc [new file with mode: 0644]
lily/head-grav.cc [deleted file]
lily/header.cc
lily/heads-engraver.cc [new file with mode: 0644]
lily/horizontal-align-item.cc
lily/horizontal-group-elem.cc
lily/horizontal-group-item.cc
lily/horizontal-vertical-group-elem.cc
lily/horizontal-vertical-group-item.cc
lily/idealspacing.cc
lily/identifier.cc
lily/includable-lexer.cc
lily/include/Makefile
lily/include/abbrev.hh
lily/include/abbreviation-beam-engraver.hh
lily/include/abbreviation-beam.hh
lily/include/afm-reader.hh [new file with mode: 0644]
lily/include/afm.hh [new file with mode: 0644]
lily/include/align-element.hh [new file with mode: 0644]
lily/include/atom.hh
lily/include/audio-column.hh
lily/include/audio-element.hh
lily/include/audio-item.hh
lily/include/audio-staff.hh
lily/include/axis-group-administration.hh [deleted file]
lily/include/axis-group-element.hh
lily/include/axis-group-item.hh
lily/include/axis-group-spanner.hh
lily/include/bar-align-engraver.hh [new file with mode: 0644]
lily/include/bar-align-grav.hh [deleted file]
lily/include/bar-column-engraver.hh [new file with mode: 0644]
lily/include/bar-column-grav.hh [deleted file]
lily/include/bar-column.hh
lily/include/bar-engraver.hh [new file with mode: 0644]
lily/include/bar-grav.hh [deleted file]
lily/include/bar-number-engraver.hh [new file with mode: 0644]
lily/include/bar-number-grav.hh [deleted file]
lily/include/bar.hh
lily/include/beam-engraver.hh [new file with mode: 0644]
lily/include/beam-grav.hh [deleted file]
lily/include/beam-swallow-trans.hh
lily/include/beam.hh
lily/include/bezier.hh
lily/include/bow.hh
lily/include/box.hh [new file with mode: 0644]
lily/include/boxes.hh [deleted file]
lily/include/break-align-item.hh
lily/include/break-caching.hh
lily/include/break.hh
lily/include/cf-basic.hh [deleted file]
lily/include/cf-string.hh [deleted file]
lily/include/change-iterator.hh
lily/include/change-translator.hh
lily/include/chord-iterator.hh
lily/include/clef-engraver.hh [new file with mode: 0644]
lily/include/clef-grav.hh [deleted file]
lily/include/clef-item.hh
lily/include/col-info.hh
lily/include/colhpos.hh
lily/include/collision-engraver.hh [new file with mode: 0644]
lily/include/collision-grav.hh [deleted file]
lily/include/collision.hh
lily/include/command-request.hh
lily/include/crescendo.hh
lily/include/curve.hh
lily/include/dimen.hh [deleted file]
lily/include/dimension.hh [new file with mode: 0644]
lily/include/direction.hh
lily/include/directional-spanner.hh
lily/include/dot-column-engraver.hh [new file with mode: 0644]
lily/include/dot-column-grav.hh [deleted file]
lily/include/dot-column.hh
lily/include/dots.hh
lily/include/drul-array.hh
lily/include/dynamic-engraver.hh [new file with mode: 0644]
lily/include/dynamic-grav.hh [deleted file]
lily/include/elem-group.hh
lily/include/encompass-info.hh
lily/include/engraver-group.hh
lily/include/engraver.hh
lily/include/file-results.hh
lily/include/font-size-engraver.hh [new file with mode: 0644]
lily/include/general-script-def.hh
lily/include/global-translator.hh
lily/include/gourlay-breaking.hh
lily/include/graphical-axis-group.hh [new file with mode: 0644]
lily/include/graphical-element.hh
lily/include/grouping.hh
lily/include/hara-kiri-line-group-engraver.hh
lily/include/hara-kiri-vertical-group-spanner.hh
lily/include/head-engraver.hh [new file with mode: 0644]
lily/include/head-grav.hh [deleted file]
lily/include/header.hh
lily/include/heads-engraver.hh [new file with mode: 0644]
lily/include/horizontal-align-item.hh
lily/include/horizontal-group-elem.hh [deleted file]
lily/include/horizontal-group-element.hh [new file with mode: 0644]
lily/include/horizontal-group-item.hh
lily/include/horizontal-vertical-group-elem.hh [deleted file]
lily/include/horizontal-vertical-group-element.hh [new file with mode: 0644]
lily/include/horizontal-vertical-group-item.hh
lily/include/idealspacing.hh
lily/include/identifier.hh
lily/include/includable-lexer.hh
lily/include/ineq-constrained-qp.hh
lily/include/item.hh
lily/include/key-engraver.hh [new file with mode: 0644]
lily/include/key-grav.hh [deleted file]
lily/include/key-item.hh
lily/include/key-performer.hh
lily/include/key.hh
lily/include/keyword.hh
lily/include/leastsquares.hh
lily/include/lily-proto.hh
lily/include/line-group-grav.hh [deleted file]
lily/include/line-group-group-engraver.hh [new file with mode: 0644]
lily/include/line-of-score.hh [new file with mode: 0644]
lily/include/line-spacer.hh
lily/include/linear-programming.hh
lily/include/linespace.hh
lily/include/local-key-engraver.hh [new file with mode: 0644]
lily/include/local-key-grav.hh [deleted file]
lily/include/local-key-item.hh
lily/include/lookup.hh
lily/include/lyric-engraver.hh
lily/include/lyric-performer.hh
lily/include/main.hh
lily/include/meter-grav.hh [deleted file]
lily/include/meter-performer.hh [deleted file]
lily/include/meter.hh [deleted file]
lily/include/midi-def.hh
lily/include/midi-item.hh
lily/include/midi-stream.hh
lily/include/midi-walker.hh
lily/include/minterval.hh
lily/include/misc.hh
lily/include/molecule.hh
lily/include/mudela-version.hh
lily/include/multi-measure-rest-engraver.hh
lily/include/multi-measure-rest.hh
lily/include/music-iterator.hh
lily/include/music-list.hh
lily/include/music-output-def.hh
lily/include/music-output.hh
lily/include/music-wrapper-iterator.hh
lily/include/music-wrapper.hh
lily/include/music.hh
lily/include/musical-pitch.hh
lily/include/musical-request.hh
lily/include/my-lily-lexer.hh
lily/include/my-lily-parser.hh
lily/include/note-column.hh
lily/include/note-head.hh
lily/include/note-performer.hh
lily/include/notename-table.hh
lily/include/notename.hh
lily/include/out/dummy.dep [deleted file]
lily/include/outputter.hh [deleted file]
lily/include/p-col.hh
lily/include/p-score.hh
lily/include/paper-def.hh
lily/include/parseconstruct.hh
lily/include/performance.hh
lily/include/performer-group-performer.hh
lily/include/performer.hh
lily/include/piano-brace.hh [new file with mode: 0644]
lily/include/pitch-squash-engraver.hh [new file with mode: 0644]
lily/include/pitch-squash-grav.hh [deleted file]
lily/include/plet-engraver.hh
lily/include/plet-spanner.hh
lily/include/plet-swallow-engraver.hh
lily/include/priority-halign-engraver.hh [new file with mode: 0644]
lily/include/priority-halign-grav.hh [deleted file]
lily/include/property-iterator.hh
lily/include/qlp.hh
lily/include/qlpsolve.hh
lily/include/relative-music-iterator.hh
lily/include/relative-music.hh
lily/include/request-iterator.hh
lily/include/request.hh
lily/include/rest-collision-engraver.hh [new file with mode: 0644]
lily/include/rest-collision-grav.hh [deleted file]
lily/include/rest-collision.hh
lily/include/rest-column-engraver.hh [new file with mode: 0644]
lily/include/rest-column-grav.hh [deleted file]
lily/include/rest-engraver.hh [new file with mode: 0644]
lily/include/rest-grav.hh [deleted file]
lily/include/rest.hh
lily/include/rhythmic-column-engraver.hh [new file with mode: 0644]
lily/include/rhythmic-column-grav.hh [deleted file]
lily/include/rhythmic-head.hh
lily/include/rod.hh
lily/include/scope.hh
lily/include/score-bar.hh
lily/include/score-column.hh
lily/include/score-elem-info.hh [deleted file]
lily/include/score-elem.hh [deleted file]
lily/include/score-element-info.hh [new file with mode: 0644]
lily/include/score-element.hh [new file with mode: 0644]
lily/include/score-engraver.hh [new file with mode: 0644]
lily/include/score-grav.hh [deleted file]
lily/include/score-performer.hh
lily/include/score-priority-engraver.hh [new file with mode: 0644]
lily/include/score-priority-grav.hh [deleted file]
lily/include/score.hh
lily/include/scoreline.hh [deleted file]
lily/include/script-column.hh
lily/include/script-def.hh
lily/include/script-engraver.hh [new file with mode: 0644]
lily/include/script-grav.hh [deleted file]
lily/include/script.hh
lily/include/separating-group-spanner.hh
lily/include/separating-line-group-engraver.hh [new file with mode: 0644]
lily/include/separating-line-group-grav.hh [deleted file]
lily/include/single-malt-grouping-item.hh
lily/include/slur-engraver.hh [new file with mode: 0644]
lily/include/slur-grav.hh [deleted file]
lily/include/slur.hh
lily/include/span-bar-engraver.hh [new file with mode: 0644]
lily/include/span-bar-grav.hh [deleted file]
lily/include/span-bar.hh
lily/include/span-score-bar-engraver.hh [new file with mode: 0644]
lily/include/span-score-bar-grav.hh [deleted file]
lily/include/span-score-bar.hh
lily/include/spanner.hh
lily/include/spring-spacer.hh
lily/include/staff-bracket.hh [new file with mode: 0644]
lily/include/staff-info.hh
lily/include/staff-performer.hh
lily/include/staff-side.hh
lily/include/staff-sym-engraver.hh [new file with mode: 0644]
lily/include/staff-sym-grav.hh [deleted file]
lily/include/staff-sym.hh
lily/include/stem-engraver.hh [new file with mode: 0644]
lily/include/stem-grav.hh [deleted file]
lily/include/stem-info.hh
lily/include/stem.hh
lily/include/super-elem.hh [deleted file]
lily/include/super-element.hh [new file with mode: 0644]
lily/include/swallow-engraver.hh [new file with mode: 0644]
lily/include/swallow-grav.hh [deleted file]
lily/include/swallow-perf.hh
lily/include/symtable.hh
lily/include/tex-outputter.hh [new file with mode: 0644]
lily/include/tex-stream.hh
lily/include/tex.hh
lily/include/text-def.hh
lily/include/text-item.hh
lily/include/text-spanner.hh
lily/include/tie-engraver.hh [new file with mode: 0644]
lily/include/tie-grav.hh [deleted file]
lily/include/tie.hh
lily/include/ties-engraver.hh [new file with mode: 0644]
lily/include/time-description.hh
lily/include/time-signature-engraver.hh [new file with mode: 0644]
lily/include/time-signature.hh [new file with mode: 0644]
lily/include/timing-engraver.hh [new file with mode: 0644]
lily/include/timing-grav.hh [deleted file]
lily/include/timing-translator.hh
lily/include/translation-property.hh
lily/include/translator-change.hh
lily/include/translator-group.hh
lily/include/translator.hh
lily/include/type-swallow-trans.hh
lily/include/vertical-align-elem.hh [deleted file]
lily/include/vertical-align-engraver.hh [new file with mode: 0644]
lily/include/vertical-align-grav.hh [deleted file]
lily/include/vertical-align-spanner.hh
lily/include/vertical-group-elem.hh [deleted file]
lily/include/vertical-group-element.hh [new file with mode: 0644]
lily/include/vertical-group-spanner.hh
lily/include/voice-iterator.hh
lily/include/word-wrap.hh
lily/ineq-constrained-qp.cc
lily/item.cc
lily/key-engraver.cc [new file with mode: 0644]
lily/key-grav.cc [deleted file]
lily/key-item.cc
lily/key-performer.cc
lily/key.cc
lily/keyword.cc
lily/lexer.ll
lily/lexerinit.cc
lily/lily-version.cc
lily/line-group-grav.cc [deleted file]
lily/line-group-group-engraver.cc [new file with mode: 0644]
lily/line-of-score.cc [new file with mode: 0644]
lily/line-spacer.cc
lily/linear-programming.cc
lily/local-key-engraver.cc [new file with mode: 0644]
lily/local-key-grav.cc [deleted file]
lily/local-key-item.cc
lily/lookup.cc
lily/lyric-engraver.cc [new file with mode: 0644]
lily/lyric-grav.cc [deleted file]
lily/lyric-performer.cc
lily/main.cc
lily/meter-grav.cc [deleted file]
lily/meter-performer.cc [deleted file]
lily/meter.cc [deleted file]
lily/midi-def.cc
lily/midi-item.cc
lily/midi-stream.cc
lily/midi-walker.cc
lily/misc.cc
lily/mixed-qp.cc [new file with mode: 0644]
lily/molecule.cc
lily/mudela-version.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/music-iterator.cc
lily/music-list.cc
lily/music-output-def.cc
lily/music-wrapper-iterator.cc
lily/music-wrapper.cc
lily/music.cc
lily/musical-pitch.cc
lily/musical-request.cc
lily/my-lily-lexer.cc
lily/my-lily-parser.cc
lily/note-column.cc
lily/note-head.cc
lily/note-performer.cc
lily/note.cc
lily/notename-table.cc
lily/out/dummy.dep [deleted file]
lily/outputter.cc [deleted file]
lily/p-col.cc
lily/p-score.cc
lily/paper-def.cc
lily/parser.yy
lily/performance.cc
lily/performer-group-performer.cc
lily/performer.cc
lily/piano-brace.cc [new file with mode: 0644]
lily/pitch-squash-engraver.cc [new file with mode: 0644]
lily/pitch-squash-grav.cc [deleted file]
lily/plet-engraver.cc
lily/plet-spanner.cc
lily/plet-swallow-engraver.cc
lily/priority-halign-engraver.cc [new file with mode: 0644]
lily/priority-halign-grav.cc [deleted file]
lily/property-iterator.cc
lily/ps-plet.cc
lily/qlp.cc [deleted file]
lily/qlpsolve.cc
lily/relative-octave-music.cc
lily/request-iterator.cc
lily/request.cc
lily/rest-collision-engraver.cc [new file with mode: 0644]
lily/rest-collision-grav.cc [deleted file]
lily/rest-collision.cc
lily/rest-engraver.cc [new file with mode: 0644]
lily/rest-grav.cc [deleted file]
lily/rest.cc
lily/rhythmic-column-engraver.cc [new file with mode: 0644]
lily/rhythmic-column-grav.cc [deleted file]
lily/rhythmic-head.cc
lily/rod.cc
lily/scope.cc
lily/score-bar.cc
lily/score-column.cc
lily/score-elem-info.cc [deleted file]
lily/score-elem.cc [deleted file]
lily/score-element-info.cc [new file with mode: 0644]
lily/score-element.cc [new file with mode: 0644]
lily/score-engraver.cc [new file with mode: 0644]
lily/score-grav.cc [deleted file]
lily/score-performer.cc
lily/score-priority-engraver.cc [new file with mode: 0644]
lily/score-priority-grav.cc [deleted file]
lily/score.cc
lily/scoreline.cc [deleted file]
lily/scores.cc
lily/script-column.cc
lily/script-def.cc
lily/script-engraver.cc [new file with mode: 0644]
lily/script-grav.cc [deleted file]
lily/script.cc
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc [new file with mode: 0644]
lily/separating-line-group-grav.cc [deleted file]
lily/single-malt-grouping-item.cc
lily/slur-engraver.cc [new file with mode: 0644]
lily/slur-grav.cc [deleted file]
lily/slur.cc
lily/span-bar-engraver.cc [new file with mode: 0644]
lily/span-bar-grav.cc [deleted file]
lily/span-bar.cc
lily/span-score-bar-engraver.cc [new file with mode: 0644]
lily/span-score-bar-grav.cc [deleted file]
lily/span-score-bar.cc
lily/spanner.cc
lily/spring-spacer.cc
lily/staff-bracket.cc [new file with mode: 0644]
lily/staff-info.cc
lily/staff-performer.cc
lily/staff-side.cc
lily/staff-sym-engraver.cc [new file with mode: 0644]
lily/staff-sym-grav.cc [deleted file]
lily/staff-sym.cc
lily/stem-engraver.cc [new file with mode: 0644]
lily/stem-grav.cc [deleted file]
lily/stem-info.cc
lily/stem.cc
lily/super-elem.cc
lily/swallow-engraver.cc [new file with mode: 0644]
lily/swallow-grav.cc [deleted file]
lily/swallow-perf.cc
lily/symtable.cc
lily/template1.cc
lily/template2.cc
lily/template3.cc
lily/template4.cc
lily/template5.cc
lily/template7.cc
lily/template8.cc
lily/tex-beam.cc
lily/tex-outputter.cc [new file with mode: 0644]
lily/tex-stream.cc
lily/tex.cc
lily/text-def.cc
lily/text-item.cc
lily/text-spanner.cc
lily/tie-engraver.cc [new file with mode: 0644]
lily/tie-grav.cc [deleted file]
lily/tie.cc
lily/ties-engraver.cc [new file with mode: 0644]
lily/time-description.cc
lily/time-signature-engraver.cc [new file with mode: 0644]
lily/time-signature.cc [new file with mode: 0644]
lily/timing-engraver.cc [new file with mode: 0644]
lily/timing-grav.cc [deleted file]
lily/timing-translator.cc
lily/translation-property.cc
lily/translator-ctors.cc
lily/translator-group.cc
lily/translator.cc
lily/type-swallow-trans.cc
lily/version.cc
lily/vertical-align-elem.cc [deleted file]
lily/vertical-align-engraver.cc [new file with mode: 0644]
lily/vertical-align-grav.cc [deleted file]
lily/vertical-align-spanner.cc
lily/vertical-group-elem.cc
lily/vertical-group-spanner.cc
lily/voice-iterator.cc
lily/warn.cc
lily/word-wrap.cc
make/Docrules.make
make/Executable.make [deleted file]
make/Files.make [deleted file]
make/Include.make [deleted file]
make/Initial.make [deleted file]
make/Install_outfiles.make [deleted file]
make/Install_outfiles.sub.make [deleted file]
make/Installfiles.make [deleted file]
make/Lilypond.make [new file with mode: 0644]
make/Makefile
make/Manual.make [deleted file]
make/Mudela_rules.make [new file with mode: 0644]
make/Mutopia.make
make/Rules.make
make/STATE-VECTOR [new file with mode: 0644]
make/Scripts.make [deleted file]
make/Stepmake.make [new file with mode: 0644]
make/Substitute.make [new file with mode: 0644]
make/Targets.make
make/Template.make [deleted file]
make/Toplevel.make.in
make/Toplevel_version.make
make/User.make
make/Variables.make
make/Version.make [deleted file]
make/WWW.make [deleted file]
make/lelievijver.lsm.in
make/lilypond.lsm.in
make/lilypond.spec.in
make/out/dummy.dep [deleted file]
make/out/lelievijver.lsm
make/out/lilypond.lsm
make/out/lilypond.spec
make/out/zlilypond-docs.spec [new file with mode: 0644]
make/rpmrc.in [deleted file]
make/zlilypond-docs.spec.in [new file with mode: 0644]
mf/Makefile
mf/Rules.make [deleted file]
mf/TODO
mf/feta-autometric.mf
mf/feta-beum.mf
mf/feta-bolletjes.mf
mf/feta-brackets16.mf
mf/feta-brackets20.mf
mf/feta-eindelijk.mf
mf/feta-klef.mf
mf/feta-schrift.mf
mf/feta-slag.mf
mf/feta-sleur.mf
mf/out/dummy.dep [deleted file]
mi2mu/Makefile
mi2mu/VERSION [deleted file]
mi2mu/include/Makefile
mi2mu/include/mi2mu-global.hh
mi2mu/include/mi2mu-proto.hh
mi2mu/include/midi-parser.hh
mi2mu/include/midi-score-parser.hh
mi2mu/include/midi-track-parser.hh
mi2mu/include/mudela-column.hh
mi2mu/include/mudela-item.hh
mi2mu/include/mudela-score.hh
mi2mu/include/mudela-staff.hh
mi2mu/include/mudela-stream.hh
mi2mu/include/mudela-voice.hh
mi2mu/include/out/dummy.dep [deleted file]
mi2mu/main.cc
mi2mu/mi2mu-version.cc
mi2mu/midi-parser.cc
mi2mu/midi-score-parser.cc
mi2mu/midi-track-parser.cc
mi2mu/mudela-column.cc
mi2mu/mudela-item.cc
mi2mu/mudela-score.cc
mi2mu/mudela-staff.cc
mi2mu/mudela-stream.cc
mi2mu/mudela-voice.cc
mi2mu/out/dummy.dep [deleted file]
mi2mu/template9.cc
mi2mu/version.cc
mudela-mode.el
mutopia/Coriolan/Makefile
mutopia/Coriolan/bassi-part.ly [new file with mode: 0644]
mutopia/Coriolan/clarinetti-part.ly
mutopia/Coriolan/clarinetti.ly
mutopia/Coriolan/clarinetto-1.ly
mutopia/Coriolan/clarinetto-2.ly
mutopia/Coriolan/contrabasso-part.ly [new file with mode: 0644]
mutopia/Coriolan/contrabasso.ly
mutopia/Coriolan/coriolan.ly
mutopia/Coriolan/corni-part.ly
mutopia/Coriolan/corni.ly
mutopia/Coriolan/corno-1.ly
mutopia/Coriolan/corno-2.ly
mutopia/Coriolan/fagotti-part.ly
mutopia/Coriolan/fagotti.ly
mutopia/Coriolan/fagotto-1.ly
mutopia/Coriolan/fagotto-2.ly
mutopia/Coriolan/flauti-part.ly
mutopia/Coriolan/flauti.ly
mutopia/Coriolan/flauto-1.ly
mutopia/Coriolan/flauto-2.ly
mutopia/Coriolan/global.ly
mutopia/Coriolan/oboe-1.ly
mutopia/Coriolan/oboe-2.ly
mutopia/Coriolan/oboi-part.ly
mutopia/Coriolan/oboi.ly
mutopia/Coriolan/out/dummy.dep [deleted file]
mutopia/Coriolan/part-paper.ly [deleted file]
mutopia/Coriolan/timpani.ly
mutopia/Coriolan/trombe-part.ly
mutopia/Coriolan/trombe.ly
mutopia/Coriolan/trombo-1.ly
mutopia/Coriolan/trombo-2.ly
mutopia/Coriolan/viola-1.ly [new file with mode: 0644]
mutopia/Coriolan/viola-2.ly [new file with mode: 0644]
mutopia/Coriolan/viola-part.ly [new file with mode: 0644]
mutopia/Coriolan/viola.ly [deleted file]
mutopia/Coriolan/violino-1-part.ly [new file with mode: 0644]
mutopia/Coriolan/violino-1.ly
mutopia/Coriolan/violino-2-part.ly [new file with mode: 0644]
mutopia/Coriolan/violino-2.ly
mutopia/Coriolan/violoncello-part.ly [new file with mode: 0644]
mutopia/Coriolan/violoncello.ly
mutopia/J.S.Bach/Makefile
mutopia/J.S.Bach/Petites-Preludes/Makefile [new file with mode: 0644]
mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly [new file with mode: 0644]
mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly [new file with mode: 0644]
mutopia/J.S.Bach/Petites-Preludes/preludes-3.lym4 [new file with mode: 0644]
mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly [new file with mode: 0644]
mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly [new file with mode: 0644]
mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly [new file with mode: 0644]
mutopia/J.S.Bach/Petites-Preludes/preludes-paper.ly [new file with mode: 0644]
mutopia/J.S.Bach/Petites-Preludes/preludes.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/Makefile [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/allemande-alto.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/courante-alto.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/gigue-alto.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-alto.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/prelude-alto.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-alto.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/scsii-alto.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly [new file with mode: 0644]
mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly [new file with mode: 0644]
mutopia/J.S.Bach/allemande-alto.ly [deleted file]
mutopia/J.S.Bach/allemande-cello.ly [deleted file]
mutopia/J.S.Bach/allemande-urtext.ly [deleted file]
mutopia/J.S.Bach/courante-alto.ly [deleted file]
mutopia/J.S.Bach/courante-cello.ly [deleted file]
mutopia/J.S.Bach/courante-urtext.ly [deleted file]
mutopia/J.S.Bach/menuetto-alto.ly [deleted file]
mutopia/J.S.Bach/menuetto-cello.ly [deleted file]
mutopia/J.S.Bach/menuetto-urtext.ly [deleted file]
mutopia/J.S.Bach/out/dummy.dep [deleted file]
mutopia/J.S.Bach/prelude-alto.ly [deleted file]
mutopia/J.S.Bach/prelude-cello.ly [deleted file]
mutopia/J.S.Bach/prelude-urtext.ly [deleted file]
mutopia/J.S.Bach/preludes-1.ly [deleted file]
mutopia/J.S.Bach/preludes-2.ly [deleted file]
mutopia/J.S.Bach/preludes-3.lym4 [deleted file]
mutopia/J.S.Bach/preludes-4.ly [deleted file]
mutopia/J.S.Bach/preludes-5.ly [deleted file]
mutopia/J.S.Bach/preludes-6.ly [deleted file]
mutopia/J.S.Bach/preludes.ly [deleted file]
mutopia/J.S.Bach/sarabande-alto.ly [deleted file]
mutopia/J.S.Bach/sarabande-cello.ly [deleted file]
mutopia/J.S.Bach/sarabande-urtext.ly [deleted file]
mutopia/J.S.Bach/scs-paper.ly [deleted file]
mutopia/J.S.Bach/scsii-alto.ly [deleted file]
mutopia/J.S.Bach/scsii-cello.ly [deleted file]
mutopia/J.S.Bach/solo-cello-suite-ii.ly [deleted file]
mutopia/J.S.Bach/wtk1-fugue1.ly
mutopia/J.S.Bach/wtk1-fugue2.ly
mutopia/J.S.Bach/wtk1-prelude1.ly
mutopia/J.S.Bach/wtk1-prelude2.ly.m4
mutopia/Makefile
mutopia/TODO
mutopia/W.A.Mozart/Makefile
mutopia/W.A.Mozart/cadenza.ly
mutopia/W.A.Mozart/horn-concerto-3.ly
mutopia/W.A.Mozart/out/dummy.dep [deleted file]
mutopia/gallina.ly
mutopia/los-toros-oboe.ly
mutopia/out/dummy.dep [deleted file]
mutopia/standchen-16.ly
mutopia/standchen-20.ly
mutopia/standchen.ly
out/dummy.dep [deleted file]
po/Makefile [new file with mode: 0644]
po/TODO [new file with mode: 0644]
po/it.po [new file with mode: 0644]
po/lilypond.po [new file with mode: 0644]
po/nl.po [new file with mode: 0644]
scripts/Makefile [new file with mode: 0644]
scripts/convert-mudela.py [new file with mode: 0644]
scripts/ly2dvi.sh [new file with mode: 0644]
scripts/mudela-book.py [new file with mode: 0644]
stepmake/AUTHORS.txt [new file with mode: 0644]
stepmake/Documentation/Makefile [new file with mode: 0644]
stepmake/Documentation/automake.yo [new file with mode: 0644]
stepmake/Documentation/layout.yo [new file with mode: 0644]
stepmake/Documentation/topdocs/AUTHORS.yo [new file with mode: 0644]
stepmake/Documentation/topdocs/BLURB.in [new file with mode: 0644]
stepmake/Documentation/topdocs/INSTALL.yo [new file with mode: 0644]
stepmake/Documentation/topdocs/Makefile [new file with mode: 0644]
stepmake/INSTALL.txt [new file with mode: 0644]
stepmake/NEWS [new file with mode: 0644]
stepmake/README [new file with mode: 0644]
stepmake/TODO [new file with mode: 0644]
stepmake/VERSION [new file with mode: 0644]
stepmake/aclocal.m4 [new file with mode: 0644]
stepmake/bin/Makefile [new file with mode: 0644]
stepmake/bin/add-html-footer.py [new file with mode: 0644]
stepmake/bin/config.guess [new file with mode: 0755]
stepmake/bin/config.sub [new file with mode: 0755]
stepmake/bin/fake-yodl.sh [new file with mode: 0644]
stepmake/bin/flower.py [new file with mode: 0755]
stepmake/bin/install-dot-exe.sh [new file with mode: 0755]
stepmake/bin/install-layout.sh [new file with mode: 0644]
stepmake/bin/install-sh [new file with mode: 0755]
stepmake/bin/latex2yodl.sh [new file with mode: 0644]
stepmake/bin/ls-latex.py [new file with mode: 0644]
stepmake/bin/make-version.sh [new file with mode: 0755]
stepmake/bin/ntpwd.py [new file with mode: 0644]
stepmake/bin/package-diff.py [new file with mode: 0644]
stepmake/bin/package-zet.sh [new file with mode: 0755]
stepmake/bin/package-zip.sh [new file with mode: 0644]
stepmake/bin/packagepython.py [new file with mode: 0755]
stepmake/bin/pod2yodl.sh [new file with mode: 0644]
stepmake/bin/release.py [new file with mode: 0755]
stepmake/bin/show-latest.sh [new file with mode: 0644]
stepmake/bin/stepdirs.sh [new file with mode: 0755]
stepmake/bin/stepmakeise.sh [new file with mode: 0755]
stepmake/bin/tar-docxx.sh [new file with mode: 0644]
stepmake/bin/template.py [new file with mode: 0644]
stepmake/bin/texi2man.sh [new file with mode: 0644]
stepmake/bin/text2html.sh [new file with mode: 0644]
stepmake/bin/zet-step.sh [new file with mode: 0755]
stepmake/config.hh.in [new file with mode: 0644]
stepmake/config.make.in [new file with mode: 0644]
stepmake/configure [new file with mode: 0755]
stepmake/configure.in [new file with mode: 0644]
stepmake/make/Makefile [new file with mode: 0644]
stepmake/make/Rules.make [new file with mode: 0644]
stepmake/make/STATE-VECTOR [new file with mode: 0644]
stepmake/make/Stepmake.make [new file with mode: 0644]
stepmake/make/Substitute.make [new file with mode: 0644]
stepmake/make/Targets.make [new file with mode: 0644]
stepmake/make/Toplevel.make.in [new file with mode: 0644]
stepmake/make/Toplevel_version.make [new file with mode: 0644]
stepmake/make/User.make [new file with mode: 0644]
stepmake/make/Variables.make [new file with mode: 0644]
stepmake/make/out/stepmake.lsm [new file with mode: 0644]
stepmake/make/out/stepmake.spec [new file with mode: 0644]
stepmake/make/stepmake.lsm.in [new file with mode: 0644]
stepmake/make/stepmake.spec.in [new file with mode: 0644]
stepmake/stepmake/C++.make [new file with mode: 0644]
stepmake/stepmake/C++_files.make [new file with mode: 0644]
stepmake/stepmake/C++_rules.make [new file with mode: 0644]
stepmake/stepmake/C++_vars.make [new file with mode: 0644]
stepmake/stepmake/C.make [new file with mode: 0644]
stepmake/stepmake/C_rules.make [new file with mode: 0644]
stepmake/stepmake/Documentation.shared.make [new file with mode: 0644]
stepmake/stepmake/Documentation.vars.make [new file with mode: 0644]
stepmake/stepmake/Documentation_rules.make [new file with mode: 0644]
stepmake/stepmake/Executable.make [new file with mode: 0644]
stepmake/stepmake/Files.make [new file with mode: 0644]
stepmake/stepmake/Include.make [new file with mode: 0644]
stepmake/stepmake/Install_outfiles.make [new file with mode: 0644]
stepmake/stepmake/Install_outfiles.sub.make [new file with mode: 0644]
stepmake/stepmake/Installfiles.make [new file with mode: 0644]
stepmake/stepmake/Intlrules.make [new file with mode: 0644]
stepmake/stepmake/Library.make [new file with mode: 0644]
stepmake/stepmake/Library_targets.make [new file with mode: 0644]
stepmake/stepmake/Library_vars.make [new file with mode: 0644]
stepmake/stepmake/Makedir.shared.make [new file with mode: 0644]
stepmake/stepmake/Makefile [new file with mode: 0644]
stepmake/stepmake/Manual.make [new file with mode: 0644]
stepmake/stepmake/Metafont.make [new file with mode: 0644]
stepmake/stepmake/Package.make [new file with mode: 0644]
stepmake/stepmake/Po_rules.make [new file with mode: 0644]
stepmake/stepmake/Pod_rules.make [new file with mode: 0644]
stepmake/stepmake/Rules.make [new file with mode: 0644]
stepmake/stepmake/Script_files.make [new file with mode: 0644]
stepmake/stepmake/Scripts.make [new file with mode: 0644]
stepmake/stepmake/Substitute.make [new file with mode: 0644]
stepmake/stepmake/Targets.make [new file with mode: 0644]
stepmake/stepmake/Template.make [new file with mode: 0644]
stepmake/stepmake/Texinfo_rules.make [new file with mode: 0644]
stepmake/stepmake/Toplevel.make [new file with mode: 0644]
stepmake/stepmake/Variables.make [new file with mode: 0644]
stepmake/stepmake/WWW.make [new file with mode: 0644]
stepmake/stepmake/Yodl_rules.make [new file with mode: 0644]
test/Makefile
test/VERSION [new file with mode: 0644]
test/out/dummy.dep [deleted file]
tex/Makefile
tex/fetdefs.tex
tex/lily-ps-defs.tex
tex/lilyponddefs.tex
tex/mudela-book.tex [new file with mode: 0644]
tex/out/dummy.dep [deleted file]
tex/titledefs.tex
vimrc

diff --git a/.dstreamrc b/.dstreamrc
deleted file mode 100644 (file)
index 253955b..0000000
+++ /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 (file)
index 3b3c6fb..0000000
--- 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
-
index 9f7d6e2e37180202b7390af6079bdac7d69244f8..8ed22c92be1798ca7ae7eabb37da38a2e8326312 100644 (file)
@@ -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 (file)
index 0000000..33190c9
--- /dev/null
@@ -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
+
index 41e559eb68b3ccab68d3314b8c19cd697a83000d..ebf1db1135c275d8ddfbe8953a635ae14f72e8f5 100644 (file)
 
-
-
-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 <hanwen@cs.ruu.nl>,
-           http://www.cs.ruu.nl/people/hanwen
-           Main author.
-
-       o Jan Nieuwenhuizen <jan@digicash.com>,
-           http://www.digicash.com/~jan
-           Main author
-
-CONTRIBUTORS
-       o Mats Bengtsson <matsb@s3.kth.se>,
-           parts of clef-reg.cc, clef-item.cc swedish notenames,
-           testing, general comments, duration logs/longa/brevis
-           etc
-
-       o Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
-           TeX titling and lytodvi.sh
-
-       o Shay Rojanski
-           Some mudela source.
-
-       o Werner Lemberg <xlwy01@uxp1.hrz.uni-dortmund.de>,
-           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 <oliva@dcc.unicamp.br>,
-           http://sunsite.unicamp.br/~oliva
-           testing
-
-       o Anthony Fok <foka@debian.org>,
-           debian package: debian/*
-
-       o Franc,ois Pinard <pinard@iro.umontreal.ca>,
-           Documentation/Vocab*, internationalization stuff
-
-       o  Neil Jerram <nj104@cus.cam.ac.uk>.
-           Documentation/Vocab*
-
-       o David R. Linn <drl@vuse.vanderbilt.edu>,
-           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 <matsb@s3.kth.se>,
+    http://www.s3.kth.se/~matsb
+    clef stuff, key stuff, swedish notenames, testing, general
+    comments.
+o Eric Bullinger <eric@aut.ee.ethz.ch>,
+    accidental transposition.
+o Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
+    TeX titling and lytodvi.sh
+o Anthony Fok <foka@debian.org>, 
+    debian package: debian/*
+o Neil Jerram <nj104@cus.cam.ac.uk>. 
+    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 <xlwy01@uxp1.hrz.uni-dortmund.de>,
+    misc bugfixes, some Beam and Stem code. 
+o David R. Linn <drl@vuse.vanderbilt.edu>,
+    Mailing list maintenance.
+o Han-Wen Nienhuys <hanwen@cs.uu.nl>, 
+    http://www.cs.uu.nl/~hanwen
+
+    Main author.
+o Jan Nieuwenhuizen <janneke@gnu.org>, 
+    http://www.digicash.com/~jan
+
+    Main author
+o Alexandre Oliva <oliva@dcc.unicamp.br>, 
+    http://sunsite.unicamp.br/~oliva
+    testing
+o Franc,ois Pinard <pinard@iro.umontreal.ca>, 
+    Documentation/Vocab*, started internationalization stuff
+o Jeffrey B. Reed <daboys@bga.com>,
+    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 f7da705fa8b60c598cce7c13bb5d0bd96db3dbd6..36b24a234a9ddebfa81bd49e02d02e33ce658096 100644 (file)
--- 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<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_' failed.
-Aborted (core dumped)
-*********
-\score{
-       \melodic{
-               [c]
+
+
+[All platforms] 
+
+When dealing with beaming that is not correct (eg quarter notes in
+beams.), you can get the following assert.  This is a serious bug, but
+a good solution is quite a lot of work.
+
+       \score{
+               \melodic{
+                       [c2 c]
+               }
        }
-}
-lilypond: ../flower/include/cursor.tcc:104: int Cursor<void *>::operator -(class Cursor<void *>) const: Assertion `c.ok()' failed.
-Aborted (core dumped)
 
+results in
 
+       lilypond: ../flower/include/varray.hh:141: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_' failed.
 
-[GNU libc]
+And this
 
-The GNU extension memmem() is known to be buggy on linux libc 5.0.9
-and before. Glibc upto 2.0.5 also has problems with memmem (), but
-these should not affect LilyPond.
+       \score{
+               \melodic{
+                       [c]
+               }
+       }
 
+in
 
-[Linux Intel]
+       lilypond: ../flower/include/cursor.tcc:104: int Cursor<void *>::operator -(class Cursor<void *>) 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]
index 895b59cc0c8a15d2c6090729ad63bdfc5baf9d4b..b6a224e0b3d8eac3346e52811ca733ceed7ac133 100644 (file)
@@ -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 (file)
index 538b9c1..0000000
+++ /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 <hanwen@cs.ruu.nl>, http://www.cs.ruu.nl/people/hanwen
-
-Main author.
-
-=item * Jan Nieuwenhuizen <jan@digicash.com>, http://www.digicash.com/~jan
-
-Main author
-
-=back
-
-=head1 CONTRIBUTORS
-
-=over 4
-
-=item * Mats Bengtsson <matsb@s3.kth.se>,
-
-parts of clef-reg.cc, clef-item.cc swedish notenames, testing, general
-comments, duration logs/longa/brevis etc
-
-=item * Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>,
-
-TeX titling and lytodvi.sh
-
-=item * Shay Rojanski
-
-Some mudela source.
-
-=item * Werner Lemberg <xlwy01@uxp1.hrz.uni-dortmund.de>,
-
-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 <oliva@dcc.unicamp.br>, http://sunsite.unicamp.br/~oliva
-
-testing
-
-=item * Anthony Fok <foka@debian.org>, 
-
-debian package: debian/*
-
-=item * Franc,ois Pinard <pinard@iro.umontreal.ca>, 
-
-Documentation/Vocab*, internationalization stuff
-
-=item *  Neil Jerram <nj104@cus.cam.ac.uk>. 
-
-Documentation/Vocab*
-
-=item * David R. Linn <drl@vuse.vanderbilt.edu>,
-
-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<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/BLURB.in b/Documentation/BLURB.in
new file mode 100644 (file)
index 0000000..68ca4dc
--- /dev/null
@@ -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 (file)
index 0000000..664aec8
--- /dev/null
@@ -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 (file)
index 0000000..b4e0e0a
--- /dev/null
@@ -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 (file)
index 0f57d3e..0000000
+++ /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<class-name-abbr.*>
-
-
-=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<type> is a Hungarian notation postfix for C<Type>. 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<Hungarian
-Notation>.
-
-=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<get_slu_p()>
-
-=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<very large> (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<identifier_name_type_modifier[_modifier]>
-
-=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, C<enum>s and C<const>s are all uppercase,
-with the parts of the names separated by underscores.
-
-=head2 Types
-
-=over 5
-
-=item C<byte>
-
-
-unsigned char. (The postfix _by is ambiguous)
-
-=item C<b>
-
-
-bool
-
-=item C<bi>
-
-bit
-
-=item C<ch>
-
-char
-
-=item C<f>
-
-float
-
-=item C<i>
-
-signed integer
-
-=item C<str>
-
-string class
-
-=item C<sz>
-
-Zero terminated c string
-
-=item C<u>
-
-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<a>
-
-array
-
-=item C<array>
-
-user built array.
-
-=item C<c>
-
-const. Note that the proper order is C<Type const> i.s.o. C<const Type>
-
-=item C<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<l>
-
-temporary pointer to object (link)
-
-=item C<p>
-
-pointer to newed object
-
-=item C<r>
-
-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<loop_i>
-
-Variable loop: an integer
-
-=item C<u>
-
-Temporary variable: an unsigned integer
-
-=item C<test_ch>
-
-Variable test: a character
-
-=item C<first_name_str>
-
-Variable first_name: a String class object
-
-=item C<last_name_ch_a>
-
-Variable last_name: a C<char> array
-
-=item C<foo_i_p>
-
-Variable foo: an C<Int*> that you must delete
-
-=item C<bar_i_l>
-
-Variable bar: an C<Int*> 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<int*> foo
-
-C<foo> 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 (file)
index 0000000..fb74fdf
--- /dev/null
@@ -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<int*> 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 (file)
index 0000000..90ee5e5
--- /dev/null
@@ -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 (file)
index 0000000..4513c04
--- /dev/null
@@ -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 (file)
index 741db8d..0000000
+++ /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<CPPFLAGS> 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</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:
-
-=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</usr/lib/texmf/texmf/tex/generic//>.
-
-=item B<--enable-mf-dir>
-
-Set the directory mf input is in (idem).   On my system the best
-choice would be F</usr/lib/texmf/texmf/fonts/source/public/>.
-
-=item B<--enable-config>
-
-Output to different configuration files.  Needed for multi-platform
-builds
-
-
-=back
-
-All options are documented in the F<configure> 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<out/> (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<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 F<bin/clean-fonts.sh>.
-
-=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<make/out/lilypond.spec>.  You should install a gif file called
-F<lelie_icon.gif> along with the sources.  You can generate this gif
-file by typing
-
-     make gifs
-
-in the directory F<Documentation>.
-
-
-
-=head1 DEBIAN GNU/LINUX
-
-A Debian package is also available; contact Anthony Fok
-<foka@debian.org>.  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<Note> If you rely on broken DOS/Windows tools such as pkzip/WinZIP 
-to unpack the distribution, make sure the B<entire> source tree 
-is unpacked correctly, in particular the empty out directories 
-(F<flower/out>, F<lib/out> et. al.)
-
-=head1 AUTHORS
-
-Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-
-Jan Nieuwenhuizen <jan@digicash.com>
-
-
-Have fun!
diff --git a/Documentation/MANIFESTO.pod b/Documentation/MANIFESTO.pod
deleted file mode 100644 (file)
index 58847a4..0000000
+++ /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<gnu-music> 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 (file)
index 0000000..0bb3533
--- /dev/null
@@ -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.
+)
+
index e8fe751ce96a2fdd846bbc78e8319634991afac6..5b2a1f602392aa26d02623f3b2070202cdd83bf0 100644 (file)
@@ -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 (file)
index 723bd87..0000000
+++ /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<VERSION>, set TOPLEVEL_MY_PATCH_LEVEL:
-
-    VERSION:
-       ...
-       TOPLEVEL_MY_PATCH_LEVEL = jcn1
-
-In F<NEWS>, 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<INSTALL>.  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<configure>
-   and files generated by F<configure>.
-
-=head1 MAINTAINER
-
-Han-Wen Nienhuys <hanwen@cs.uu.nl>
-
-Just keep on sending those patches!
diff --git a/Documentation/README-W32.yo b/Documentation/README-W32.yo
new file mode 100644 (file)
index 0000000..1523309
--- /dev/null
@@ -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(<version>).tar.gz 
+it() cd yodl-em(<version>)
+it() ./configure --prefix=/gnuwin32/yodl-em(<version>) --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(<version>).tar.gz 
+it() cd lilypond-em(<version>)
+it() ./configure --prefix=/gnuwin32/lilypond-em(<version>) \ nl()
+        --srcdir=. \ nl()
+        --enable-tex-prefix=/gnuwin32/lilypond-em(<version>)/texmf \ nl()
+        --enable-tex-dir=/gnuwin32/lilypond-em(<version>)/texmf/tex \ nl()
+        --enable-mf-dir=/gnuwin32/lilypond-em(<version>)/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(<version>).tar.gz 
+it() cd python-em(<version>)
+it() configure --prefix=/gnuwin32/python-em(<version>)
+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(<version>).em(<patchlevel>)
+it() use your normal configure
+it() make edits
+it() Change file(VERSION) to increment em(<patchlevel>)
+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 <Enter>
+)
+)
+
+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 (file)
index 0000000..060d0c3
--- /dev/null
@@ -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 (file)
index 4d811d1..0000000
+++ /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 (file)
index 0000000..b487322
--- /dev/null
@@ -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 (file)
index 93edc38..0000000
+++ /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<mailing list>, 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<not> 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<parser.cc>
-
-A: LilyPond uses features of bison version 1.25. Please confirm that
-you are using a version 1.25 or better, that is B<GNU> bison
-B<1.25>. Don't forget to do "make clean" after installing it. Don't
-forget to remove the stale F<bison.simple> 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<configure>
-   and files generated by F<configure>.  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<make install>, 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<cis> ?
-
-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<cis> anyway
-
-A: C<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.
-
-Q: I can type
-
-       <a c> <e g>
-
-to make a few chords, but why do I have to type
-
-
-       < { a~ e } { c ~ g } >
-
-instead of
-
-       <a~ c~> <e g>
-
-to generate ties between the chords?
-
-A: When you type 
-
-       <a c> <e g>
-
-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<twinkle-pop> 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<standchen.ly> for an example.
-
-
-=head2 How do I ....
-
-Q: How do I change the TeX layout?
-
-A: See F<lilyponddefs.tex>, it has some comments.
-
-Q: How do I place lyrics under I<each> 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<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 F<init/rhythm.ly>.
-
-=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<bin/make-patch.py>.  Don't forget to put
-your name and e-mail address in the F<AUTHORS.pod> file.
-
-Q: How do I learn the C++ code?
-
-A: The entry point is in C<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 C<less lily/include/*.hh>. 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<Documentation/automake.urgh>)
-
-
-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<lot> 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<all>
-previous fonts, including the F<.pk> and F<.tfm> fonts in
-F</var/lib/texmf>.  A script automating this has been included, see
-F<bin/clean-fonts.sh>
-
-
-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<libflower.so>
-
-=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<make>. (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<with> 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 <colin@bird.fu.is.saga-u.ac.jp>
-
-[...]
-
-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 (file)
index 0000000..968fbb6
--- /dev/null
@@ -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 (file)
index 97656da..0000000
+++ /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 (file)
index 0000000..5e57da7
--- /dev/null
@@ -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 (file)
index 0d3cc36..0000000
+++ /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<development snapshots>
-of LilyPond.  You can look at the bottom if you want to know which
-version this was.
-
-
-=head2 Documentation: Introduction
-
-=over 4
-
-=item *
-<a href=ANNOUNCE-0.1
->
-The announcement of 0.1
-</a
->
-
-
-=item *
-<a href=DEDICATION
->
-DEDICATION
-</a
->
-
-=item *
-<a href=faq.html
->
-FAQs
-</a
->
-
-=item *
-<a href=INSTALL.html
->
-The installation instructions.
-</a
->
-
-=back
-
-=head2 Why: Background Information 
-
-=over 4
-
-=item *
-<a href=MANIFESTO.html
->
-Design criteria
-</a
->
-
-=item *
-<a href=gnu-music.html
->
-The GNU Music project
-</a
->
-
-=item *
-<a href=mutopia.html
->
-Mutopia -- Music To the People
-</a
->
-
-=item *
-<a href=lelieblond.gif
->
-The lilypond logo (Big, format: .gif)
-</a
->
-
-=item *
-<a href=lelie_logo.gif
->
-The lilypond logo (medium size, format: .gif)
-</a
->
-
-
-=back
-
-=head2 Documentation: manuals
-
-
-=over 4
-
-=item *
-<a href=../tex/out-www/index.html
->
-TeX documents about LilyPond
-</a
->
-
-=item *
-<a href=../man/out-www/index.html
->
-Manual pages
-</a
->
-
-=item *
-<a href=vocabulary.html
->
-Musical vocabulary.
-</a
->
-
-=back
-
-=head2 The program
-
-=over 5
-
-=item *
-<a href=TODO
->
-The TODO list.
-</a
->
-
-=item *
-<a href=NEWS
->
-The Change log
-</a
->
-
-=item *
-<a href=internals.html
->
-internal structures.
-</a
->
-
-=item *
-<a href=CodingStyle.html
->
-The coding standards of the lilypond project.
-</a
->
-
-=item *
-<a href=AUTHORS.html
->
-AUTHORS
-</a
->
-
-=back
-
-=head2 Links
-
-=over 5
-
-=item *
-<a href=literature.html
->
-Papers, books and online-resources on music typesetting
-</a
->
-
-=item *
-<a href=other-packages.html
->
-Other packages for printing music.
-</a
->
-
-=item *
-<a href=links.html
->
-B<download> LilyPond and other interesting links
-</a
->
-
-
-
-=back
-
-
diff --git a/Documentation/index.yo b/Documentation/index.yo
new file mode 100644 (file)
index 0000000..b906687
--- /dev/null
@@ -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 (file)
index c3653bc..0000000
+++ /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<Scores>, which each contain C<Music> 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<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.
-
-=item C<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.
-
-=item C<Rest_req>
-
-Typeset a rest.
-
-=item C<Span_req>
-
-This type of request typically results in the creation of a C<Spanner>
-
-=item C<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.
-
-=item  C<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  C<Dynamic> 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<Request_engraver> to do most of the work.  For each request
-C<Complex_staff> queries so-called C<Request_engraver>s if they want
-to accept a request eg, the C<Notehead_engraver> will accept
-C<Note_req>s, and turn down C<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 C<Item> or
-C<Spanner>). If a C<Request_engraver> 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<Notehead_engraver>, stem_request
-will be taken by a C<Stem_beam_engraver>. C<Notehead_engraver> creates
-a C<Notehead>, C<Stem_beam_engraver> creates a C<Stem>. Both announce
-this to the Staff_engraver. Staff_engraver will tell
-C<Stem_beam_engraver> about the C<Notehead>, which will add the
-C<Notehead> to the C<Stem> it just created.
-
-To decide on merging, several engravers have been grouped. Please
-check F<init/engraver.ly>.
-
-
-=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<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.
-
-=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 (file)
index 0000000..4cb8d0a
--- /dev/null
@@ -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 (file)
index 0757778..0000000
+++ /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 (file)
index 0ad7f75..0000000
+++ /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 (file)
index 96be267..0000000
+++ /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 (file)
index b63f794..0000000
+++ /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 (file)
index ebc316f..0000000
+++ /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 (file)
index 0000000..acabea0
--- /dev/null
@@ -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 (file)
index 37fb180..0000000
+++ /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 <Howard.Wright@ed.ac.uk>, ``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
-
index 1dc4f661ec44cfce2760ef9b2652042826e0bba2..a3157a3eb9c6334d689a50e4a615af1bb2b1ec17 100644 (file)
@@ -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 (file)
index 8ba3d04..0000000
+++ /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 <hanwen@gnu.org>
diff --git a/Documentation/man/convert-mudela.yo b/Documentation/man/convert-mudela.yo
new file mode 100644 (file)
index 0000000..a9640b8
--- /dev/null
@@ -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 (file)
index 9ba489d..0000000
+++ /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<FILE>,
-
-add F<FILE> 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<NO
-WARRANTY>!)
-
-=item B<-o,--output=>F<FILE>,
-
-Set the default output file to F<FILE>.
-
-=item B<-h,--help>,
-
-Show a summary of usage.
-
-=item B<-i,--init=>F<FILE>,
-
-Set init file to F<FILE> (default: F<lily-init.ly>).
-
-=item B<--include, -I>=F<DIRECTORY>,
-
-Add F<DIRECTORY> 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<COPYING>.
-
-=head1 AUTHORS
-
-Please consult the documentation file AUTHORS for more detailed
-information, and small contributions. 
-
-=over 4
-
-=item *
-
-Han-Wen Nienhuys <hanwen@cs.ruu.nl>, http://www.cs.ruu.nl/people/hanwen
-
-=item *
-
-Jan Nieuwenhuizen <jan@digicash.com>,  http://www.digicash.com/~jan.
-
-=back
-
-
-=head1 PROBLEMS
-
-
-There is an extensive list of todoes and bugs.  See F<TODO>.  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<TODO> and F<BUGS>.
-
-=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<print *this> or use LilyPond C<print()> methods).
-
-
-=head1 FILES
-
-=over 5
-
-=item F<lily-init.ly>
-
-The initialisation file with symbol tables etc.  It
-includes files from the directory F<init/>.
-
-=back
-
-=head1 ENVIRONMENT
-
-B<LILYINCLUDE> an (one) additional directory for finding lilypond data.
-
-=head1 BUGS
-
-Lots of them.  See F<TODO> and F<BUGS>
-
-=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<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.
-
diff --git a/Documentation/man/lilypond.yo b/Documentation/man/lilypond.yo
new file mode 100644 (file)
index 0000000..c027f6c
--- /dev/null
@@ -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 (file)
index 0fcbfb9..0000000
+++ /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<set -x> 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<language="";>
-
-Specify LaTeX language
-
-=item B<latexheaders="";>
-
-Specify additional LaTeX headers file
-
-=item B<orientation="";>
-
-Set orientation.
-
-=item B<paperlinewidth="";>
-
-Specify the width (pt, mm or cm) of the printed lines.
-
-=item B<papersize="";>
-
-Specify name of papersize.
-
-=back
-
-=head1 ENVIRONMENT
-
-=over 5
-
-=item B<LILYINCLUDE>
-
-Additional directories for input files.
-
-=item B<TMP>
-
-Temporary directory name. Default is /tmp
-
-=back
-
-=head1 FILES
-
-F<titledefs.tex> 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<title>
-
-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 (file)
index 0000000..d0a0c6d
--- /dev/null
@@ -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 (file)
index 6ee3e13..0000000
+++ /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 (file)
index 0000000..85decf2
--- /dev/null
@@ -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 (file)
index f44c60b..0000000
+++ /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 (file)
index 0000000..4f19075
--- /dev/null
@@ -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 (file)
index e69de29..0000000
diff --git a/Documentation/mutopia.pod b/Documentation/mutopia.pod
deleted file mode 100644 (file)
index 57c0f30..0000000
+++ /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 (file)
index 0000000..28e1bf4
--- /dev/null
@@ -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 (file)
index 5d5d587..0000000
+++ /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 (file)
index e69de29..0000000
diff --git a/Documentation/pictures/Makefile b/Documentation/pictures/Makefile
new file mode 100644 (file)
index 0000000..e1c4186
--- /dev/null
@@ -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 (file)
index 0000000..0ad7f75
--- /dev/null
@@ -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 (file)
index 0000000..96be267
--- /dev/null
@@ -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 (file)
index 0000000..b63f794
--- /dev/null
@@ -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 (file)
index 0000000..c30a283
--- /dev/null
@@ -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 (file)
index b6b3150..0000000
+++ /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 (file)
index 0000000..a1c21cf
--- /dev/null
@@ -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 (file)
index 0000000..005b645
--- /dev/null
@@ -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 (file)
index 0000000..b4fb407
--- /dev/null
@@ -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...
index e9f4cb59f23be676f511d7f354fc0e81fd96e57d..8cde48019ce65673f5886c0711ca890744b58e6d 100644 (file)
@@ -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 $< $@
index 890592063ec73c28e5d0af6bc8153bdd5269d970..9aa8871ac40bc5a95ef2114d999e5ec7bec70e86 100644 (file)
@@ -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 (file)
index 0000000..bc750e9
--- /dev/null
@@ -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 (file)
index 0000000..ca31424
--- /dev/null
@@ -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 (file)
index 0000000..3732093
--- /dev/null
@@ -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::
index ca83827b1a87f3cb05ef442ba2f00b4b925313a2..a234775e2e2078f3531f3df2d2db69bdcf336b95 100644 (file)
@@ -4,6 +4,8 @@
 %
 
 
+
+
 @Book{rastall,
   author =      {Richard Rastall},
   ALTeditor =   {},
   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},
   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},
   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 [..]}
 }
 
 
   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},
 }
 
 
   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 (file)
index 3215961..0000000
+++ /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 (file)
index 0000000..87407df
--- /dev/null
@@ -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 (file)
index 0000000..07ab38a
--- /dev/null
@@ -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 (file)
index e69de29..0000000
diff --git a/Documentation/tex/vocabulary-forms.el b/Documentation/tex/vocabulary-forms.el
new file mode 100644 (file)
index 0000000..e948938
--- /dev/null
@@ -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 (file)
index 0000000..d62f72b
--- /dev/null
@@ -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 (file)
index 0000000..b1c6ec6
--- /dev/null
@@ -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 (file)
index 0000000..19716b5
--- /dev/null
@@ -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 (file)
index 0000000..c8c180d
--- /dev/null
@@ -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 (file)
index 0000000..87a328b
--- /dev/null
@@ -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 (file)
index 0000000..9b6b21d
--- /dev/null
@@ -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 (file)
index 0000000..04eef03
--- /dev/null
@@ -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 (file)
index 0000000..005b645
--- /dev/null
@@ -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 (file)
index 0000000..b4fb407
--- /dev/null
@@ -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 (file)
index 0000000..64bd836
--- /dev/null
@@ -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 (file)
index 0000000..0174868
--- /dev/null
@@ -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 (file)
index def6a75..0000000
+++ /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 (file)
index 98a9647..0000000
+++ /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 (file)
index e9e616a..0000000
+++ /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:: :
index 12c297b46c7081c35432c26879ebdd91ceae5bff..11572c9d443fa50d34fae16a7285944fccdc1882 100644 (file)
 
+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 97fce166d19cbcc4acfad4df2f1ae1bd180d5798..9decb579073a9a3f2392ca4b648e27e33ce5e66b 100644 (file)
--- a/NEWS
+++ b/NEWS
-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 (file)
index 0000000..f936254
--- /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 (file)
index 0000000..f5e3562
--- /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 (file)
index f936254..0000000
--- 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
index 5618b5882065c6788b8728f1368dc476a1af433c..76bceea8418b0668294aaedae8f63dae6fb77520 100644 (file)
 
-
-
-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 (file)
index a172ebc..0000000
--- 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 (file)
index 0000000..2008fc4
--- /dev/null
@@ -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 7f9b738c65c41f91cae4624ce14c54f3e80c1091..893aa58eac5524fb9a561ea9ae05c1b42fd18e23 100644 (file)
--- a/TODO
+++ b/TODO
 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 ed7ea2f3052ea21cd8d36e1df5be132876ca44a1..522667c82e68199bfcaa0644c48fa49306db242e 100644 (file)
--- 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:
index d1ec16c75ec30b1001061d99b8d3792dd23fcb08..0f54b68df8b877e0ac02d4f08e78a27ecd618f05 100644 (file)
-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, &micro) != 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 (file)
index b7a8c3a..0000000
+++ /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 (executable)
index a32e6f9..0000000
+++ /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 (file)
index e18d5d2..0000000
+++ /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>&lt<!bla>%s</a>&gt</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 (executable)
index 47c2a06..0000000
+++ /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 (executable)
index 1b53f85..0000000
+++ /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 (executable)
index 202a873..0000000
+++ /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 (executable)
index 413ed41..0000000
+++ /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 (executable)
index 213a6d4..0000000
+++ /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 (executable)
index 0f4fda0..0000000
+++ /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 (executable)
index 3787efc..0000000
+++ /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 (file)
index baef3fc..0000000
+++ /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 (executable)
index 890f9ca..0000000
+++ /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 (executable)
index 768a56e..0000000
+++ /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 (executable)
index ca45f07..0000000
+++ /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 (executable)
index 398f7f8..0000000
+++ /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 (executable)
index 210865b..0000000
+++ /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 (file)
index ef9977a..0000000
+++ /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</title><h1> %s</h1><ul>\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 ('</ul></html>')
diff --git a/bin/ltconfig b/bin/ltconfig
deleted file mode 100644 (file)
index 2347e69..0000000
+++ /dev/null
@@ -1,1512 +0,0 @@
-#! /bin/sh
-
-# ltconfig - Create a system-specific libtool.
-# Copyright (C) 1996-1998 Free Software Foundation, Inc.
-# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 <<EOM
-Usage: $progname [OPTION]... LTMAIN [HOST]
-
-Generate a system-specific libtool script.
-
-    --disable-shared       do not build shared libraries
-    --disable-static       do not build static libraries
-    --help                 display this help and exit
-    --no-verify            do not verify that HOST is a valid host type
-    --quiet                same as \`--silent'
-    --silent               do not print informational messages
-    --srcdir=DIR           find \`config.guess' in DIR
-    --version              output version information and exit
-    --with-gcc             assume that the GNU C compiler will be used
-    --with-gnu-ld          assume that the C compiler uses the GNU linker
-
-LTMAIN is the \`ltmain.sh' shell script fragment that provides basic libtool
-functionality.
-
-HOST is the canonical host system name [default=guessed].
-EOM
-  exit 0
-  ;;
-
-  --disable-shared) enable_shared=no ;;
-
-  --disable-static) enable_static=no ;;
-
-  --quiet | --silent) silent=yes ;;
-
-  --srcdir) prev=srcdir ;;
-  --srcdir=*) srcdir="$optarg" ;;
-
-  --no-verify) verify_host=no ;;
-
-  --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;;
-
-  --with-gcc) with_gcc=yes ;;
-  --with-gnu-ld) with_gnu_ld=yes ;;
-
-  -*)
-    echo "$progname: unrecognized option \`$option'" 1>&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 <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:432: \"$ac_try\") 1>&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 </dev/null | egrep '(GNU|with BFD)' 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 <<EOF
-#ifdef __cplusplus
-extern "C" {
-#endif
-char nm_test_var;
-void nm_test_func(){}
-#ifdef __cplusplus
-}
-#endif
-main(){nm_test_var='a';nm_test_func();return(0);}
-EOF
-
-echo "$progname:971: checking if global_symbol_pipe works" >&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 <<EOF > conftest.c
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-EOF
-        # Now generate the symbol file.
-        sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c
-
-       cat <<EOF >> 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 <<EOF > $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 <gord@gnu.ai.mit.edu>, 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 (file)
index e9350b3..0000000
+++ /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 <gord@gnu.ai.mit.edu>, 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 (executable)
index 447f29e..0000000
+++ /dev/null
@@ -1,920 +0,0 @@
-#!/bin/sh
-#
-# Script to make a LaTeX file for Lilypond
-#
-# Written by Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>
-#  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 <jvromans@squirrel.nl> 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 (file)
index 37e1141..0000000
+++ /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 (executable)
index 9909bf9..0000000
+++ /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 (executable)
index 3be1435..0000000
+++ /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 (executable)
index 0db3593..0000000
+++ /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 <hanwen@stack.nl>
-# 
-
-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 (executable)
index 09e52f2..0000000
+++ /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 (<INFILE>) {
-       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 (file)
index 485578f..0000000
+++ /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 ('<html><TITLE>Rendered Examples</TITLE>\n')
-    list.write ('<body>')
-    if len(subdirs):
-       list.write  ('<h2>subdirectories</h2>')
-       list.write  ('<ul>')    
-        for ex in subdirs:
-           print 'subdir %s ' % ex
-           list.write ('<li><a href=%s/index.html>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
-
-       list.write ('</ul>')
-
-    list.write('<h2>Contents of this directory</h2>\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('<hr>')
-       list.write('<h1>example file: %s</h1>' % head);
-       if composer <> '':
-           list.write('<h2>%s</h2>\n' % composer)
-       if desc <> '':
-           list.write('%s<p>' % desc)
-       list.write ('<ul>')
-       def list_item(filename, desc, l = list):
-           if file_exist_b(filename):
-               l.write ('<li><a href=%s>%s</a>\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 ("</ul>");
-
-    list.write( "</BODY></HTML>");
-    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 (file)
index e69de29..0000000
diff --git a/bin/profile-conf.sh b/bin/profile-conf.sh
deleted file mode 100644 (file)
index 79dbd73..0000000
+++ /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 (executable)
index c276406..0000000
+++ /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 (executable)
index 731a2ee..0000000
+++ /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 (file)
index a10b49f..0000000
+++ /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 (executable)
index 2b2c994..0000000
+++ /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 (<LS>) {
-    $_ =~ /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 = <NEWS>;
-    chop ($desc);
-    close NEWS;
-
-    print $desc;
-}
diff --git a/bin/table-to-html.py b/bin/table-to-html.py
deleted file mode 100755 (executable)
index bc4bc71..0000000
+++ /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 <jan@digicash.com>
-# 
-
-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 ('<body><table cellspacing=10>')
-
-def footer (html):
-    html.write ('</table></body>')
-
-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 = '<tr><td>' + join (columns, '</td><td>') + '</td></tr>'
-       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 (file)
index c6d33a9..0000000
+++ /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 (file)
index 0000000..7832495
--- /dev/null
@@ -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 (executable)
index 0000000..47c2a06
--- /dev/null
@@ -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 (executable)
index 0000000..a57dc7f
--- /dev/null
@@ -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 (file)
index 0000000..82407ed
--- /dev/null
@@ -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 (file)
index 0000000..890f9ca
--- /dev/null
@@ -0,0 +1,20 @@
+#!@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/buildscripts/gen-sitemap.sh b/buildscripts/gen-sitemap.sh
new file mode 100644 (file)
index 0000000..7f9bcbc
--- /dev/null
@@ -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 (file)
index 0000000..8e6f396
--- /dev/null
@@ -0,0 +1,146 @@
+#!@PYTHON@
+
+# genheader.py -- do headers (like these) 
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+
+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 (file)
index 0000000..228ed74
--- /dev/null
@@ -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 <janneke@gnu.org>
+
+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 = {'è':'&egrave;', }
+chars = { 
+'á':'&aacute;',
+'â':'&acirc;', 
+'æ':'&aelig;',
+'à':'&agrave;', 
+'Ã¥':'&aring;', 
+'ã':'&atilde;',
+'ä':'&auml;',
+
+'ç':'&ccedil;',
+
+'é':'&eacute;', 
+'ê':'&ecirc;',
+'è':'&egrave;', 
+'ë':'&euml;',
+
+'í':'&iacute;',
+'î':'&icirc;',
+'ì':'&igrave;', 
+'ï':'&iuml;',
+
+'ñ':'&ntilde;',
+
+'ó':'&oacute;',
+'ô':'&ocirc;',
+'ò':'&ograve;', 
+'ø':'&oslash;',
+'õ':'&otilde;',
+'ö':'&ouml;',
+
+'ú':'&uacute;',
+'û':'&ucirc;',
+'ù':'&ugrave;', 
+'ü':'&uuml;' 
+}
+
+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 (file)
index 0000000..f37fc82
--- /dev/null
@@ -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 (file)
index 0000000..2347e69
--- /dev/null
@@ -0,0 +1,1512 @@
+#! /bin/sh
+
+# ltconfig - Create a system-specific libtool.
+# Copyright (C) 1996-1998 Free Software Foundation, Inc.
+# Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 <<EOM
+Usage: $progname [OPTION]... LTMAIN [HOST]
+
+Generate a system-specific libtool script.
+
+    --disable-shared       do not build shared libraries
+    --disable-static       do not build static libraries
+    --help                 display this help and exit
+    --no-verify            do not verify that HOST is a valid host type
+    --quiet                same as \`--silent'
+    --silent               do not print informational messages
+    --srcdir=DIR           find \`config.guess' in DIR
+    --version              output version information and exit
+    --with-gcc             assume that the GNU C compiler will be used
+    --with-gnu-ld          assume that the C compiler uses the GNU linker
+
+LTMAIN is the \`ltmain.sh' shell script fragment that provides basic libtool
+functionality.
+
+HOST is the canonical host system name [default=guessed].
+EOM
+  exit 0
+  ;;
+
+  --disable-shared) enable_shared=no ;;
+
+  --disable-static) enable_static=no ;;
+
+  --quiet | --silent) silent=yes ;;
+
+  --srcdir) prev=srcdir ;;
+  --srcdir=*) srcdir="$optarg" ;;
+
+  --no-verify) verify_host=no ;;
+
+  --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION"; exit 0 ;;
+
+  --with-gcc) with_gcc=yes ;;
+  --with-gnu-ld) with_gnu_ld=yes ;;
+
+  -*)
+    echo "$progname: unrecognized option \`$option'" 1>&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 <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
+EOF
+  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:432: \"$ac_try\") 1>&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 </dev/null | egrep '(GNU|with BFD)' 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 <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+echo "$progname:971: checking if global_symbol_pipe works" >&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 <<EOF > conftest.c
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+        # Now generate the symbol file.
+        sed 's/^.* \(.*\)$/extern char \1;/' < "$nlist" >> conftest.c
+
+       cat <<EOF >> 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 <<EOF > $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 <gord@gnu.ai.mit.edu>, 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 (file)
index 0000000..e9350b3
--- /dev/null
@@ -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 <gord@gnu.ai.mit.edu>, 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 (file)
index 0000000..37e1141
--- /dev/null
@@ -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 (file)
index 0000000..3f4d990
--- /dev/null
@@ -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 <hanwen@stack.nl>
+
+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 (file)
index 0000000..bf7ed7a
--- /dev/null
@@ -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 ('<html><TITLE>Rendered Examples</TITLE>\n')
+    list.write ('<body bgcolor=white>')
+    if len(subdirs):
+       list.write  ('<h2>subdirectories</h2>')
+       list.write  ('<ul>')    
+        for ex in subdirs:
+           print 'subdir %s ' % ex
+           list.write ('<li><a href=%s/index.html>Subdirectory: %s</a></li>\n' % (pre + ex + post , ex))
+
+       list.write ('</ul>')
+
+    list.write('<h2>Contents of this directory</h2>\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('<hr>')
+       list.write('<h1>example file: %s</h1>' % head);
+       if composer <> '':
+           list.write('<h2>%s</h2>\n' % composer)
+       if desc <> '':
+           list.write('%s<p>' % desc)
+       list.write ('<ul>')
+       def list_item(filename, desc, l = list):
+           if file_exist_b(filename):
+               l.write ('<li><a href=%s>%s</a>\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 ("</ul>");
+
+    list.write( "</BODY></HTML>");
+    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 (file)
index 0000000..79dbd73
--- /dev/null
@@ -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 (executable)
index 0000000..a2e9e26
--- /dev/null
@@ -0,0 +1,77 @@
+#!/bin/bash
+# ps-to-gifs, convert PS to multiple gifs
+  
+usage()
+{
+    cat <<EOF
+Usage: ps-to-gifs.sh [OPTION]... [FILE]
+Options:
+  -h, --help         this help
+  -c, --crop         crop output
+  -o, --output=NAME  set output base
+  -t, --transparent  change white to transparent
+EOF
+}
+
+if [ $# -lt 1 ]; then
+    usage;
+    exit 2;
+fi
+CROP=cat
+
+while [ $# -gt 0 ]; do
+opt=$1
+shift
+    case $opt in
+    -t|--t*)
+       color='-transparent white'
+       ;;
+    -h|--h*)
+       usage;
+       exit 0
+       ;;
+    -c|--c*)
+       CROP=" pnmcrop "
+       ;;
+    -o) OUTFILE=$2; shift
+        ;;
+    --o*=*) OUTFILE=`echo $opt | sed -e s/"^.*="//`
+        ;;
+    -*)
+        echo "ps-to-gifs: unknown option: \`$opt'"
+       exit 1
+       ;;
+    *)
+       FILE=$opt
+       ;;
+    esac
+done
+
+if [ "x$TRANSPARENT_IS_BROKEN" != "x" ]; then
+       color=
+fi
+
+if [ "x$OUTFILE" = "x" ]; then
+       BASE=`dirname $FILE`/`basename $FILE .ps`
+else
+       BASE=`dirname $OUTFILE`/`basename $OUTFILE .gif`
+fi
+
+# urg, pipe breaks
+rm -f $BASE{.ppm,.gif} $BASE-page*{.ppm,.gif}
+
+# generate the pixmap at twice the size, then rescale (for antialiasing)
+cat $FILE | gs -sDEVICE=ppmraw -sOutputFile="$BASE-page%d.ppm" -r200 -dNOPAUSE - -c quit $FILE
+# quant is soo slow
+# cat $PPMFILE | ppmquant 2 | pnmscale 0.3333 | pnmcrop | ppmtogif $color > $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 (file)
index 0000000..2a69e5a
--- /dev/null
@@ -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 (executable)
index 0000000..087ad63
--- /dev/null
@@ -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:
+#
+# <SEE PATCHES.txt>
+#
+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 <<EOF
+       LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/mf/out
+       MFINPUTS=\$MFINPUTS:\$LILYPOND_SOURCEDIR/mf
+       TEXINPUTS=\$TEXINPUTS:\$LILYPOND_SOURCEDIR/mf/out
+       export LILYINCLUDE MFINPUTS TEXINPUTS
+EOF
+
+fi
+
+ln -sf $LILYPOND_SOURCEDIR/lily/out/lilypond $prefix/bin/lilypond
+ln -sf $LILYPOND_SOURCEDIR/mi2mu/out/mi2mu $prefix/bin/mi2mu
+ln -sf $LILYPOND_SOURCEDIR/scripts/ly2dvi.sh $prefix/bin/ly2dvi
+chmod 755 $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh
+ln -sf $LILYPOND_SOURCEDIR/buildscripts/ps-to-gifs.sh $prefix/bin/ps-to-gifs
+
+if [ -f ../.gdbinit ];
+then
+    ln ../.gdbinit .
+fi
+
+if [ -f ../.dstreamrc ]
+then
+    ln ../.dstreamrc .
+fi
+
+./configure --prefix=$prefix --enable-debugging --enable-printing --enable-checking --disable-optimise
+
diff --git a/buildscripts/show-current.sh b/buildscripts/show-current.sh
new file mode 100644 (file)
index 0000000..7ae9c3f
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+# show-current.sh
+
+. $LILYPOND_SOURCEDIR/VERSION 
+VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+if [ "$MY_PATCH_LEVEL" != "" ]; then
+  VERSION=$VERSION.$MY_PATCH_LEVEL
+fi
+echo $VERSION
diff --git a/buildscripts/template.py b/buildscripts/template.py
new file mode 100644 (file)
index 0000000..f1a45e0
--- /dev/null
@@ -0,0 +1,59 @@
+#!@PYTHON@
+
+# template.py -- 
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1998 
+
+program_name = 'template'
+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: %s [options] [files]\n"
+                      "I'm not a program, use me as a template to create one\n\n"
+                      + "Options:\n"
+                      + "  -h, --help             print this help\n"
+                      % (program_name)
+                     )
+    sys.exit (0)
+
+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 *
+
index c0862703283cea782a385c74db25b1648ebb50b7..69939cf55ae35344c98fc10f0152f26b4b3f9dee 100644 (file)
@@ -1,14 +1,26 @@
 /* @configure_input@ */
 
+/* Hmm */
+#define PACKAGE "@package@"
 
 /* default lilypond init and input dir */
 #define  DIR_DATADIR "@DIR_DATADIR@"
 
+/* default lilypond locale dir */
+#define  DIR_LOCALEDIR "@DIR_LOCALEDIR@"
+
 /* define if you have memmem */
 #define HAVE_MEMMEM 0
 
 /* define if you have snprintf */
 #define HAVE_SNPRINTF 0
 
+/* define if you have vsnprintf */
+#define HAVE_VSNPRINTF 0
+
+/* define if you have gettext */
+#define HAVE_GETTEXT 0
+
 /* define if explicit instantiation is needed */
 #undef NEED_EXPLICIT_INSTANTIATION
+
index 08f8af85239381b571b35e7bf60ff1ce2dee8699..9aecaf66f248a2f78a10fc6ffd1f1f8ee58abca2 100644 (file)
@@ -2,38 +2,57 @@
 
 # @configure_input@
 
-INSTALL = @INSTALL@
+package-depth = @package_depth@
+
 USER_CXXFLAGS = @CXXFLAGS@ @CPPFLAGS@
-USER_LDFLAGS =
+USER_LDFLAGS = 
 
+CC = @CC@
 CXX = @CXX@
-POD2HTML= @POD2HTML@
-POD2MAN = @POD2MAN@
+GCC = @GCC@
+LD = @LD@
+PACKAGE = @PACKAGE@
+package = @package@
+PACKAGE_NAME = @PACKAGE_NAME@
+stepmake = @stepmake@
+CONFIGSUFFIX = @CONFIGSUFFIX@
+MAKEINFO = @MAKEINFO@
 ICFLAGS = @ICFLAGS@
 ILDFLAGS = @ILDFLAGS@
 libdir = @libdir@
 prefix = @prefix@
 TEXPREFIX = @TEXPREFIX@
 TEXDIR = @TEXDIR@
-TAR= @TAR@
 MFDIR = @MFDIR@
-mandir  =  @mandir@
+mandir = @mandir@
+infodir = @infodir@
 exec_prefix = @exec_prefix@
 bindir = @bindir@
 includedir = @includedir@
 datadir = @datadir@
-EXTRA_LIBES = @EXTRA_LIBES@
+localedir = @localedir@
+EXTRA_LIBES = @EXTRA_LIBES@ @LIBS@
 RANLIB = @RANLIB@
 DEFS = @DEFS@
 #SET_MAKE = @SET_MAKE@
 DEFINES = @DEFS@ @DEFINES@
-FIND = @FIND@
 COMPILEINFO = @COMPILEINFO@
+DOTEXE = @DOTEXE@
+BASH = @BASH@
 BISON = @BISON@
+FIND = @FIND@
 FLEX = @FLEX@
 LN = @LN@
-ZIP = @ZIP@
+MSGFMT = @MSGFMT@
 PERL = @PERL@
 PYTHON = @PYTHON@
-CONFIGSUFFIX = @CONFIGSUFFIX@
+TAR= @TAR@
+TROFF = @TROFF@
+YODL= @YODL@
+YODL2HTML= @YODL2HTML@
+YODL2LATEX= @YODL2LATEX@
+YODL2MAN= @YODL2MAN@
+YODL2TEXINFO= @YODL2TEXINFO@
+YODL2TXT= @YODL2TXT@
+ZIP = @ZIP@
 
index c501bd403ef9ba2ab33d8bf732d65117524f9820..2dd916582db48ceb18bb43beeeb592bded22456c 100755 (executable)
--- a/configure
+++ b/configure
@@ -12,7 +12,7 @@ ac_help=
 ac_default_prefix=/usr/local
 # Any additions from configure.in:
 ac_help="$ac_help
-  enable-printing         turn on debug printing. Default: off"
+  enable-config=FILE      put configure settings in config-FILE.make"
 ac_help="$ac_help
   enable-checking         set runtime checks (assert calls). Default: on"
 ac_help="$ac_help
@@ -22,15 +22,19 @@ ac_help="$ac_help
 ac_help="$ac_help
   enable-debugging        set debug info. Default: on"
 ac_help="$ac_help
-  enable-mingw-prefix=DIR        set the mingw32 directory (standalone windows32 exes)"
+  enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)"
+ac_help="$ac_help
+  enable-printing         turn on debug printing. Default: off"
+ac_help="$ac_help
+  with-localedir=LOCALE   use LOCALE as locale dir. Default: PREFIX/share/locale "
 ac_help="$ac_help
-  enable-tex-prefix=DIR          set the tex-directory to find TeX subdirectories. (default: PREFIX)"
+  with-lang=LANG          use LANG as language to emit messages"
 ac_help="$ac_help
-  enable-tex-dir=DIR             set the directory to put LilyPond TeX files in. "
+  enable-tex-prefix=DIR   set the tex-directory to find TeX subdirectories. (default: PREFIX)"
 ac_help="$ac_help
-  enable-mf-dir=DIR             set the directory to put LilyPond MetaFont files in. "
+  enable-tex-dir=DIR      set the directory to put $PACKAGE_NAME TeX files in. "
 ac_help="$ac_help
-  enable-config=FILE            put configure settings in config-FILE.make"
+  enable-mf-dir=DIR       set the directory to put $PACKAGE_NAME MetaFont files in. "
 
 # Initialize some variables set by options.
 # The variables have the same names as the options, with
@@ -470,7 +474,7 @@ echo > 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 <<EOF
+#define PACKAGE "${PACKAGE_NAME}"
+EOF
+
+    cat >> confdefs.h <<EOF
+#define TOPLEVEL_VERSION "${FULL_VERSION}"
+EOF
+
+
+    package_depth=`dirname $cache_file`
+    
+
+    AUTOGENERATE="This file was automatically generated by configure"
+    
+    absolute_builddir="`pwd`"
+    
+
+    # No versioning on directory names of sub-packages 
+    stepmake=stepmake
+    
+
+    CONFIGSUFFIX=
+    # Check whether --enable-config or --disable-config was given.
+if test "${enable_config+set}" = set; then
+  enableval="$enable_config"
+  CONFIGSUFFIX=$enableval
+fi
+
 
+    if test "$CONFIGSUFFIX" != "" ; then
+       CONFIGFILE=config-$CONFIGSUFFIX
+    else
+       CONFIGFILE=config
+    fi
+    
+     
+    
 # Make sure we can run config.sub.
 if $ac_config_sub sun4 >/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 <<EOF
-#line 688 "configure"
-#include "confdefs.h"
+       fi
 
-template <class T> struct foo { static int baz; };
-template <class T> int foo<T>::baz = 1;
 
-int main() {
- return foo<int>::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 <<EOF
+#define DIR_DATADIR "${DIR_DATADIR}"
 EOF
 
-fi
 
-# Check whether --enable-printing or --disable-printing was given.
-if test "${enable_printing+set}" = set; then
-  enableval="$enable_printing"
-  printing_b=$enableval
-fi
 
 
-# Check whether --enable-checking or --disable-checking was given.
+# For all packages except the StepMake package itself
+subdirs="stepmake"
+
+
+# Uncomment the configuration options your package needs.
+
+    # -O is necessary to get inlining
+    OPTIMIZE="-O"
+    checking_b=yes
+    optimise_b=tja
+    profile_b=no
+    debug_b=yes
+
+    # Check whether --enable-checking or --disable-checking was given.
 if test "${enable_checking+set}" = set; then
   enableval="$enable_checking"
   checking_b=$enableval 
 fi
 
 
-# Check whether --enable-optimise or --disable-optimise was given.
+    # actually, the default is: tja='-O' to get inlining...
+    # off=''
+    # Check whether --enable-optimise or --disable-optimise was given.
 if test "${enable_optimise+set}" = set; then
   enableval="$enable_optimise"
   optimise_b=$enableval
 fi
 
     
-# Check whether --enable-profiling or --disable-profiling was given.
+    # Check whether --enable-profiling or --disable-profiling was given.
 if test "${enable_profiling+set}" = set; then
   enableval="$enable_profiling"
   profile_b=$enableval
 fi
 
     
-# Check whether --enable-debugging or --disable-debugging was given.
+    # Check whether --enable-debugging or --disable-debugging was given.
 if test "${enable_debugging+set}" = set; then
   enableval="$enable_debugging"
   debug_b=$enableval
 fi
 
 
-# Check whether --enable-mingw-prefix or --disable-mingw-prefix was given.
+    # Check whether --enable-mingw-prefix or --disable-mingw-prefix was given.
 if test "${enable_mingw_prefix+set}" = set; then
   enableval="$enable_mingw_prefix"
   MINGWPREFIX=$enableval
@@ -757,116 +956,299 @@ else
   MINGWPREFIX=no
 fi
 
-    
-# 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
+
+    if test "$printing_b" = no; then
+       # ugh
+       cat >> 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 <<EOF
+#line 1093 "configure"
+#include "confdefs.h"
+main(){return(0);}
 EOF
+if { (eval echo configure:1097: \"$ac_link\") 1>&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 <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
 EOF
-
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1131: \"$ac_try\") 1>&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
+#line 1216 "configure"
+#include "confdefs.h"
+#include <stdlib.h>
+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 <<EOF
-#line 911 "configure"
+#line 1293 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:915: \"$ac_link\") 1>&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
+#line 1381 "configure"
+#include "confdefs.h"
+#include <FlexLexer.h>
+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 <<EOF
+#line 1440 "configure"
+#include "confdefs.h"
+
+    template <class T> struct foo { static int baz; };
+    template <class T> int foo<T>::baz = 1;
+    
+int main() {
+ return foo<int>::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 <<EOF
-#line 1168 "configure"
-#include "confdefs.h"
-#ifdef __cplusplus
-extern "C" void exit(int);
-#endif
+  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_AR="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+AR="$ac_cv_prog_AR"
+if test -n "$AR"; then
+  echo "$ac_t""$AR" 1>&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 <<EOF
-#line 1204 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char vprintf(); below.  */
-#include <assert.h>
-/* 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 <<EOF
+#define DIR_LOCALEDIR "${DIR_LOCALEDIR}"
+EOF
+
+
+    echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&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 <<EOF
-#line 1259 "configure"
+  ac_save_LIBS="$LIBS"
+LIBS="-lintl  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1751 "configure"
 #include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt(); below.  */
-#include <assert.h>
 /* 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 <<EOF
+#define $ac_tr_lib 1
 EOF
 
+  LIBS="-lintl $LIBS"
+
 else
   echo "$ac_t""no" 1>&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 <<EOF
-#line 1317 "configure"
+#line 1800 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -1339,7 +1822,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:1343: \"$ac_link\") 1>&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
 done
 
 
-cat >> confdefs.h <<EOF
-#define TOPLEVEL_VERSION "${FULL_VERSION}"
-EOF
 
-cat >> confdefs.h <<EOF
-#define FLOWER_VERSION "${FULL_FLOWER_VERSION}"
-EOF
+    for ac_prog in msgfmt
+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: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 <<EOF
-#define DIR_DATADIR "${DIR_DATADIR}"
-EOF
+    echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&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 <<EOF
+#line 2260 "configure"
+#include "confdefs.h"
+#ifdef __cplusplus
+extern "C" void exit(int);
+#endif
 
-       fi
+main()
+{
+  char c0 = 0x40, c1 = 0x80, c2 = 0x81;
+  exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1);
+}
 
+EOF
+if { (eval echo configure:2273: \"$ac_link\") 1>&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 <<EOF
+#line 2296 "configure"
+#include "confdefs.h"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char vprintf(); below.  */
+#include <assert.h>
+/* 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 <<EOF
-#line 1855 "configure"
+#line 2351 "configure"
 #include "confdefs.h"
-#include <stdlib.h>
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char _doprnt(); below.  */
+#include <assert.h>
+/* 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 <<EOF
-#line 1885 "configure"
+#line 2409 "configure"
 #include "confdefs.h"
-#include <FlexLexer.h>
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func(); below.  */
+#include <assert.h>
+/* 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 <<EOF
+#define $ac_tr_func 1
+EOF
 else
   echo "$ac_t""no" 1>&6
+fi
+done
+
+
+cat >> confdefs.h <<EOF
+#define TOPLEVEL_VERSION "${FULL_VERSION}"
+EOF
+
+cat >> confdefs.h <<EOF
+#define FLOWER_VERSION "${FULL_FLOWER_VERSION}"
+EOF
 
-    echo "configure: warning: can't find flex header. Please install Flex headers correctly" 1>&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
 
index de0b59611d8dece2342c1edcad800a73cfb504ca..c77794dc885a8f6a8f79f348edae23af1e985244 100644 (file)
-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 <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
-
 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
 
index 531f1330c4337334f7eefb731d630ebcefba2a4f..4c736d9bb697618af72addb259b878da1a3e3410 100644 (file)
@@ -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
index ba5d98e90876687fc9cb0aeb9e2f9a90a086b6d5..320703b02825a0afd085c09bae0f6b883bc70447 100644 (file)
@@ -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 <foka@debian.org>, 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 <foka@debian.org>, Wed, 22 Apr 1998 03:37:00 -0600
index 8a5f21bd28b23f155445023369ce331a06a6f692..25818fbb824da39829057ade111bdcd146e5a328 100644 (file)
@@ -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
index 0f86127f06610391a0bb8da93c0d099f12332568..c56fe5d3d164bec960fce23cf660040b6c9694c7 100644 (file)
@@ -1,3 +1,51 @@
+lilypond (0.1.76-1) unstable; urgency=low
+
+  * support for 'make deb' target
+
+ -- Jan Nieuwenhuizen <janneke@gnu.org> Fri,  3 Jul 1998 17:53:37 +0200
+
+lilypond (0.1.71-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Anthony Fok <foka@debian.org>  Sat,  6 Jun 1998 00:00:00 -0600
+
+lilypond (0.1.66-1) unstable; urgency=low
+
+  * New upstream release.
+
+ -- Anthony Fok <foka@debian.org>  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 <foka@debian.org>  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 <foka@debian.org>  Fri,  1 May 1998 01:14:49 -0600
+
 lilypond (0.1.48-1) unstable; urgency=low
 
   * New upstream release.
index a99665244f634132b3cfb038ad1b3e9b6c10f539..08a7805a9ee0a3261cac747c460492a0f117e9c3 100644 (file)
@@ -2,21 +2,21 @@ Source: lilypond
 Section: tex
 Priority: optional
 Maintainer: Anthony Fok <foka@debian.org>
-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 <hanwen@stack.nl>
-           Jan Nieuwenhuizen <jan@digicash.com>
+  URL: http://www.cs.ruu.nl/people/hanwen/lilypond
+       http://sca.uwaterloo.ca/~praetzel/lilypond/
+  Authors: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+           Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/debian/control.foka b/debian/control.foka
new file mode 100644 (file)
index 0000000..2f98fdf
--- /dev/null
@@ -0,0 +1,30 @@
+Source: lilypond
+Section: tex
+Priority: optional
+Maintainer: Anthony Fok <foka@debian.org>
+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 <hanwen@stack.nl>
+           Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/debian/control.in b/debian/control.in
new file mode 100644 (file)
index 0000000..c78565b
--- /dev/null
@@ -0,0 +1,16 @@
+Source: lilypond
+Section: tex
+Priority: optional
+Maintainer: Anthony Fok <foka@debian.org>
+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 <hanwen@cs.uu.nl>
+           Jan Nieuwenhuizen <janneke@gnu.org>
index 9223c27f8c896fe584a2cbe7bbbfd09cc4465d87..cf496990ff07d2d3ce81ede8d31f12fff89449a4 100644 (file)
@@ -2,18 +2,19 @@ This package was debianized by Anthony Fok <foka@debian.org> 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 <hanwen@stack.nl>
-    Jan Nieuwenhuizen <jan@digicash.com>
+      Han-Wen Nienhuys <hanwen@stack.nl>
+      Jan Nieuwenhuizen <janneke@gnu.org>
  
 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 (file)
index 0000000..08a7805
--- /dev/null
@@ -0,0 +1,22 @@
+Source: lilypond
+Section: tex
+Priority: optional
+Maintainer: Anthony Fok <foka@debian.org>
+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 <hanwen@cs.uu.nl>
+           Jan Nieuwenhuizen <janneke@gnu.org>
diff --git a/debian/out/dummy.dep b/debian/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
old mode 100644 (file)
new mode 100755 (executable)
index ddcc40e..e7f9906
-#!/usr/bin/perl -w
+#!/bin/sh
 #
 # postinst script for the Debian GNU/Linux lilypond package
 #
 #   by Anthony Fok <foka@debian.org>
 #   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 = <OLD>) {
-           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 = <OLD>) {
-       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 (file)
index 55188f1..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/bash -e
-#
-# postinst script for the Debian GNU/Linux lilypond package
-#   by Anthony Fok <foka@debian.org>
-#   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
old mode 100644 (file)
new mode 100755 (executable)
index e3d606b..e0dd95c
@@ -4,52 +4,46 @@
 #   by Anthony Fok <foka@debian.org>
 #   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 (file)
index fff81f2..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/sh
-#
-# preinst script for the Debian GNU/Linux lilypond package
-#   by Anthony Fok <foka@debian.org>
-#   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
old mode 100644 (file)
new mode 100755 (executable)
index c0a2079..fb123fc
@@ -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 (file)
index 0000000..d8e7b6a
--- /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
index c970266bd6440c2d1f9f3caf00e0a81cda864612..e6ef878895d51b10fb898e4a95acd931d382e7a7 100644 (file)
@@ -1,65 +1,20 @@
-#
-# project  FlowerSoft C++ library
 # title           top level makefile for FlowerLib
 # file    flower/Makefile
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-#              ...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 (file)
index e9a2005..0000000
+++ /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 (file)
index 0000000..9f4df5b
--- /dev/null
@@ -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 (file)
index 0000000..176bced
--- /dev/null
@@ -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 (file)
index 9f4df5b..0000000
+++ /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
index 46a01d28e5333f571636739ec9b8e2ecea1a66f1..75bc0679e724aedc20692f69d1c4da468b87b570 100644 (file)
@@ -7,6 +7,6 @@ It was written by:
 
 and
 
-       Jan Nieuwenhuizen <jan@digicash.com>
+       Jan Nieuwenhuizen <janneke@gnu.org>
 
-It is licensed under the GNU GPL.
+It is licensed under the GNU LGPL.
index cf5e1da91bb29ec3edd9010163366c4dbc3c3d53..90f2855e7f9391c14c0dfb2f54d9767ac4757825 100644 (file)
@@ -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.
index 92a1dea00132502821aab0de46c46c1dfcab457a..73b8a8ec1a735af8bd147e633f2de9ce56088606 100644 (file)
@@ -3,18 +3,16 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <assert.h>
-
 #include "axes.hh"
-#include "string.hh"
 
 String
 axis_name_str (Axis a)
 {
-  return String (char(a + 'x'));
+  return to_str (char(a + 'x'));
 }
 
 /*
index 5793fceae4e968ef7baa89a53c3268fad8dd3338..8fa18c67f52433881da099ae157871c8cc633701 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "choleski.hh"
index a4d79a37761431289d85258b77a72928c1945923..f0b49b5c72c47a86f611c1aec35bd0a9caba9875 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "cpu-timer.hh"
index 5a273c5dbb6b33b5f022b289a05f3a26d8266169..996752cfce34d48e6f8d6d22f8a1e7a7aab2d291 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the Flower Library
   
-  (c) '95, '96, '97 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) '95, '96, '97 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
   */
 #include <fstream.h>
@@ -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 ()
+{
+}
index d8e50282cb49a19c3fbae7719b1be5955df1a08d..3f46028fa82c2b91ff69252ca12c7fe36e4c9445 100644 (file)
@@ -3,7 +3,9 @@
 
 
 /**
-   neuk. hsearch_* is te dom.
+   Dictionary implementation.  Please fix me.
+
+   (neuk. hsearch_* is te dom.)
  */
 template<class T>
 class Dictionary<T>
index 5c61a41963119a28b6dd1e56c09da66c34c5bf16..b3525e71568529d9fafc7594bf6f01f8182427e0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file FlowerLib
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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)
index 7857d33338a7e36841d430054e82776ec1947b1f..fc15680d92af70110fefa5f34929bea4d0dccdde 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <fstream.h>
@@ -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;
     }
 }
+
index e6f9c4cff7b565a722f94b20d350c6e535ef8599..3b76d4b1dd927aa5fa2aba58a87664249fad2b7e 100644 (file)
@@ -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 "";
 }
 
index f3131c8254f8f287dfa53df7c0ad5189515cc78d..bb001511c2dab053ba9384125afa2f3eca92a7e7 100644 (file)
@@ -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 (file)
index 746deac..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#include <stdio.h>
-
-#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;
-}
index 4fc5605cfb01b5d8f0e706bca174369b9b329362..987a98ec042b147508a50ca8d272d39109638034 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "full-storage.hh"
diff --git a/flower/getopt-long.cc b/flower/getopt-long.cc
new file mode 100644 (file)
index 0000000..e3a3176
--- /dev/null
@@ -0,0 +1,260 @@
+/*
+   process command line, GNU style.
+
+   this is (Copyleft) 1996, Han-Wen Nienhuys, <hanwen@cs.uu.nl>
+ */
+
+#include <stdio.h>
+#include <iostream.h>
+#include <assert.h>
+#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;
+}
index b7716f26767acbb1ae0d20f436fae75118016b85..283e1fadcd27004634c4385ee0171e88266df70c 100644 (file)
@@ -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
-
-
-#
 
index d49dbd6b4ef3950f412f0f0cbe4980b7eab5a815..5bb488d4dbbd52c15b8ca5dc595c2596fbc3f107 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 4a472819e3d9507a45bb990e8496c7e9e0a5baff..17e67a47d4cf2af8fc9b92343609a2bb3063c9b8 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the Flower Library
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
diff --git a/flower/include/array.hh b/flower/include/array.hh
new file mode 100644 (file)
index 0000000..c40e639
--- /dev/null
@@ -0,0 +1,235 @@
+/*
+  (c) Han-Wen Nienhuys 1995,96,97
+
+  Distributed under GNU GPL  
+*/
+
+#ifndef ARRAY_H
+#define ARRAY_H
+#include <assert.h>
+
+#ifndef INLINE
+#define INLINE inline
+#endif
+
+/// copy a bare (C-)array from #src# to #dest# sized  #count#
+template<class T> 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 T>
+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<size_);
+      return ((T*)array_p_)[i];        
+    }
+
+  /// add to the end of array
+    void push (T x) 
+    {
+      if (size_ == max_)
+       remax (2*max_ + 1);
+
+      // T::operator=(T &) is called here. Safe to use with automatic
+      // vars
+      array_p_[size_++] = x;
+    }
+  /// remove and return last entry 
+    T pop() 
+    {
+      assert (!empty());
+      T l = top (0);
+      set_size (size()-1);
+      return l;
+    }
+  /// access last entry
+    T& top (int j=0) 
+    {
+      return (*this)[size_-j-1];
+    }
+  /// return last entry
+    T top (int j=0) const 
+    {
+      return (*this)[size_-j-1];
+    }
+
+
+  void swap (int i,int j) 
+    {
+      T t ((*this)[i]);
+      (*this)[i]=(*this)[j];
+      (*this)[j]=t;
+    }
+  bool empty() const 
+    { return !size_; }
+
+  void insert (T k, int j);
+  /**
+     remove  i-th element, and return it.
+  */
+  T get (int i) 
+    {
+      T t = elem (i);
+      del (i);
+      return t;
+    }
+  void unordered_del (int i)
+    
+    {
+      elem (i) = top();
+      set_size (size() -1);
+    }
+  void del (int i) 
+    {
+      assert (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<T> const &src) 
+    {
+      int s = size_;
+      set_size (size_ + src.size_);
+      arrcpy (array_p_+s,src.array_p_, src.size_);     
+    }
+  Array<T> slice (int lower, int upper) 
+    {
+      assert (lower >= 0 && lower <=upper&& upper <= size_);
+      Array<T> 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 (file)
index 0000000..0077a01
--- /dev/null
@@ -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<class T> 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<class T> INLINE void
+Array<T>::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<class T> INLINE void
+Array<T>::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<class T> INLINE void
+Array<T>::reverse () 
+{
+  int h = size_/2;
+  for (int i =0,j = size_-1; i < h; i++,j--)
+    swap (i,j);
+}
+
index f4558545a1e972d0a0bbab3bd4c176aa8834360c..3840b4bd5aa765f01902836ae8314a84b0d27d33 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ASSOC_HH
 #define ASSOC_HH
 
-#include "varray.hh"
+#include "array.hh"
 #include <assert.h>
 
 /**
index 786e5157b76130201ce1396344e756cadf8803c2..1b54089c17aa52a1ddeabcadd93901176844fa68 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 65def573e533f87d465175048a24692a1f3ec8a4..f9d020dc4673a9a9a10ffc20ab2fd466d4d078aa 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index a000736b1e4955bcba29b9b8017c8a78f4832900..416faa52e8494568b06f4ce267b629ae6493017e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index f371c39092553fc33cb3bbc9577df5585557a391..56894ab50b91b04f964dbd7f03f235cf49b64f0f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -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 << ")"<<flush;    
-  }    
-
-  warning (String s) {
-    message ("warning: " + s);
-  }
-  error (String s){
-    message (s);
-    exit (1);    
-  }
+  Data_file (String);
+  ~Data_file();
+  /**
+     eat complete file
+     @post
+     eof () is true
+  */
+  String gulp ();
+  void warning (String s);
+  void error (String s);
 };
 #endif // DATAFILE_HH
diff --git a/flower/include/diagonal-storage.hh b/flower/include/diagonal-storage.hh
deleted file mode 100644 (file)
index ae9572d..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-  diagonal-storage.hh -- declare Diagonal_storage
-
-  source file of the Flower Library
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#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
index 414d62b77f51f0d39432df1e374df10528987add..9183c5d585934581b5d0fea755c105bb83fffb81 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 2e16bed20112658b951c65422f225ad664340820..b25fc84b49ac106368bb0d94eb288b66a4df993c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 33c9e4ee236ad8b405c1d65af29ac9688dbe21dd..af898a4028a1504a04f6e44f3e4f00958a6e5348 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -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;
index c1c04f39219ca21326269df3a63d63a98bef59f8..a7379268ebcfae2c71f3ae4189ff871155680625 100644 (file)
@@ -3,13 +3,14 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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<String, bool> *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.
   */
index 67d3129f10589ff9176840a795881ca4aadc7bde..d5fed491ff4ff45a895727b164fe1ba8505ae83d 100644 (file)
@@ -3,13 +3,13 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef PATH_HH
 #define PATH_HH
 #include "string.hh"
-#include "varray.hh"
+#include "array.hh"
 
 
 /**    
index 5c8138e94625e438c288302e3bdcd2908f6179c1..16bc73a00758c7d962cf6164df0c738a34a2d101 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 4d68e128288df554312db85a0556245e956bba05..f9de76979c44bcf8d6bf2d13aeda479cac996f28 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef FULL_STORAGE_HH
 #define FULL_STORAGE_HH
 
-#include "varray.hh"
+#include "array.hh"
 #include "real.hh"
 
 #ifndef INLINE
index 008f4169f5c5c58f4814679fe0571b641e7555a4..55cba88472fb07d83c8b60de75f0c486856d151c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/flower/include/getopt-long.hh b/flower/include/getopt-long.hh
new file mode 100644 (file)
index 0000000..a069e28
--- /dev/null
@@ -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
index 730b9924e6e38511733763ef734f8aa63a155b86..3da5a26a2754a54ffdcda3b909603c9521169179 100644 (file)
@@ -3,14 +3,27 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
 #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
 
index f33bcb5aa06de2366420bc17a585306aa78771a7..9468fae4871024d00e32720a364ebfdfa3aa696b 100644 (file)
@@ -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<T> &operator -= (T r) {
+    *this += -r;
+    return *this;
+  }
+
   Interval_t<T> &operator += (T r) {
     left += r;
     right +=r;
index d6c93b48f2e136d73ef6d70700f081a2de5fae32..382ec67523e5f11424213cd75ee869fad79a8f28 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index d68226777fd8b2ee41f63bce0776a866fe212ebc..c8b179e68ccd01ad74b4cb75bfaf1e306efe09b4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the flowerlib
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/flower/include/lgetopt.hh b/flower/include/lgetopt.hh
deleted file mode 100644 (file)
index fe779c3..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef LGETOPT_HH
-#define LGETOPT_HH
-
-#include <string.h>
-
-
-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
index 051077b6e771620794a8083e302e721560468b92..a9f04e1e7199391ca3a77c63178ea521cb60382a 100644 (file)
@@ -3,17 +3,17 @@
 
   source file of the flowerlib
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef LIBC_EXTENSION_HH
 #define LIBC_EXTENSION_HH
-#include "fproto.hh"
 
+#include "fproto.hh"
 #include "config.hh"
-
 #include <cstddef>
+#include <stdarg.h>
 
 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
 
 
index 7192c4d9f6749353ba2e52c1ad7fa22095a223a5..eb1179a300c5c19476251109cd8cfc164634085d 100644 (file)
@@ -4,8 +4,8 @@
   source file of the Flower Library
 
   (c) 1996, 1997--1998
-  Jan Nieuwenhuizen <jan@digicash.com>
-  Han-Wen Nienhuys <hanwen@stack.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
+  Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 6cba5338489c2a78859a10e5359327ee15d2b9ea..90c150d2c92254e83609674b38ad768e68b623e4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef LIST_CC
 #define LIST_CC
index 581e6ee937f5659c897bedc6b8b9e3e33ebbaf1f..2dd51ba9bb70dd23fa381c46591b8dabd4e40077 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef MATRIX_STORAGE_HH
 #define MATRIX_STORAGE_HH
 
-#include "varray.hh"
+#include "array.hh"
 #include "real.hh"
 
 /** 
index 64ba718215d17eb38eb6cca4a7c27a7a6c830753..d94601a5ce76fb3290cdfe46e2b92f917a3fb44c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -137,7 +137,7 @@ public:
   Vector row (int) const;
   Vector col (int) const;
 
-  operator String() const;
+  String str () const;
   void print() const;
   ~Matrix ();
 };
index 774f2e7dc1221062edae664739890fcb75817f1a..b2aa4d62839b8220c81052387a51d3b40a53a3de 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/flower/include/out/dummy.dep b/flower/include/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index c6caad2c2f0846e32efe2c494ebc74ad8ceccd70..b737d7bb47ce2e4ae8d5b25b7efb1e3b0db27441 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef PARRAY_HH
 #define PARRAY_HH
 
-#include "varray.hh"
+#include "array.hh"
 
 /**
   an array of pointers.
index 794e0b0fc1f0a03faf180b2d60b9b7a015116acd..0c2e3888f7cd703f97b56021017512662e85ec2c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 803af25ab91661bfd2dbf8c455894f3fabdb0fa0..48a86e118ada25405866ec4638917f2ca6d551b8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 4c82e7d27ed5e008c0ee1ffdd7e33feda612cce1..9829d5399cfa12fd2f12dd8147a9e3448c504406 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 67726d47f1feb2ffa71195bb92350dc9021cd27d..ba48993ccb94028f4e24adb171dc2512b8a78733 100644 (file)
@@ -3,13 +3,13 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef PQUEUE_HH
 #define PQUEUE_HH
-#include "varray.hh"
+#include "array.hh"
 
 
 template<class K, class T>
index 4b804ba275ab4b6ec60f571cd16e5ef37564bd20..7a8240b9fc260da6d1144f66465dae14adfc76d2 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef PRIORITIES_HH
 #define PRIORITIES_HH
 
-#include "varray.hh"
+#include "array.hh"
 
 /**
   A sorted (uni)set. Should connect with PQueue
index 3c15f76c4f5749c4d9f4e23cf770daac0d9d573f..115d5f85c7555fc34ff59d00f5ac69dab1379d92 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -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);
index 05e214ac16d0667379a62707678f4b5d13b6ea06..50459fb57fe1e4818de4534b3015f61264041467 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index e8c58e684e06f106930f219865f8b9c492a4c52e..a963a2fb2a4a620af96ac17bf576841b79efadec 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 
 #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;
index 4842eac2d7add955f6844c9f923eba1755f8c396..3feba87bf271ab5c2810d40479b04425c72a2f15 100644 (file)
@@ -7,6 +7,7 @@
 #ifndef STRING_CONVERT_HH
 #define STRING_CONVERT_HH
 
+#include <stdarg.h>
 #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);
index 7695bedde6c8c234be48cdff422aaf2cb19284a2..01de40cab7c6a7aa531f2c26ccefe12b0e9fe678 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 599b9d82a632b01bd62a2e24d16f50eeeaa972de..0626601a35ba37832e48ddd130e7b9df17045aeb 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of Flower lib
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef STRINGDATA_INL
index 08b957c51f9aae49bec85087077f51e463027849..3e39e6afbeab86347e5dcf50ed2baaec95508388 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 6f9d908f57d3c4dd5a569b1b66c5cba65aa04bfb..74b755b22c414d1f011274f88b4d96bb6713f2e7 100644 (file)
@@ -4,7 +4,7 @@
 
   source file of Flower lib
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef STRINGHANDLE_INL
index 3b6f2266faa1f026b6afdf1e0585ad409e38215a..fb8dec55e66030da13c5d5b8622494d7989a4f5c 100644 (file)
 #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);
 
index 3bdbb0336e5ff3df41e64d07ae641aa5b6a0f590..7b4985b8c3cd1da14ee9b5d96d3f2ad21e89954f 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the Flower Library
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index ab3e9c82b515ef24250ce250a73c2278fb83dd87..6e90e38c47ff3b3fb5186a96ef45a406ad3886bb 100644 (file)
@@ -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 ();
     }
 };
 
index 4d369fdbbb8d2c81a0a2ea50cb610207313f7e2f..3bebb08505d844b04acb0f1ed8575cfece910fa1 100644 (file)
@@ -5,7 +5,7 @@
 #include <stdio.h>
 #include <ctype.h>
 #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);
index 94a3e9f667bc73d22f3b62615adf6d451f7777ec..4f98d8801d157fd70faf6038a6eaaaf38c87655f 100644 (file)
@@ -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 (file)
index ce9c221..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
-  (c) Han-Wen Nienhuys 1995,96,97
-
-  Distributed under GNU GPL  
-*/
-
-#ifndef ARRAY_H
-#define ARRAY_H
-#include <assert.h>
-
-#ifndef INLINE
-#define INLINE inline
-#endif
-
-/// copy a bare (C-)array from #src# to #dest# sized  #count#
-template<class T> 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 T>
-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<size_);
-      return ((T*)array_p_)[i];        
-    }
-
-  /// add to the end of array
-    void push (T x) 
-    {
-      if (size_ == max_)
-       remax (2*max_ + 1);
-
-      // T::operator=(T &) is called here. Safe to use with automatic
-      // vars
-      array_p_[size_++] = x;
-    }
-  /// remove and return last entry 
-    T pop() 
-    {
-      assert (!empty());
-      T l = top (0);
-      set_size (size()-1);
-      return l;
-    }
-  /// access last entry
-    T& top (int j=0) 
-    {
-      return (*this)[size_-j-1];
-    }
-  /// return last entry
-    T top (int j=0) const 
-    {
-      return (*this)[size_-j-1];
-    }
-
-
-  void swap (int i,int j) 
-    {
-      T t ((*this)[i]);
-      (*this)[i]=(*this)[j];
-      (*this)[j]=t;
-    }
-  bool empty() const 
-    { return !size_; }
-
-  void insert (T k, int j);
-  /**
-     remove  i-th element, and return it.
-  */
-  T get (int i) 
-    {
-      T t = elem (i);
-      del (i);
-      return t;
-    }
-  void unordered_del (int i)
-    
-    {
-      elem (i) = top();
-      set_size (size() -1);
-    }
-  void del (int i) 
-    {
-      assert (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<T> const &src) 
-    {
-      int s = size_;
-      set_size (size_ + src.size_);
-      arrcpy (array_p_+s,src.array_p_, src.size_);     
-    }
-  Array<T> slice (int lower, int upper) 
-    {
-      assert (lower >= 0 && lower <=upper&& upper <= size_);
-      Array<T> 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
index 4d8ccb938717179da51ce14c5a02a8517b3c08a4..ae6b315fc88ff688fd56627fef7f46f16bc76ea6 100644 (file)
@@ -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
index 1d986c53b751c52c8e6ab2c94d6cb81a40f2c1ff..8b4d280cf5e940783692facc1198103b8a1d1e18 100644 (file)
@@ -3,7 +3,7 @@
 
 #include <math.h>
 #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 ());
index 2ce3d4056989ab9af030b5814f126b3be7d40727..27557117e3c84fc2fe18934968ee38c6495863b7 100644 (file)
@@ -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 <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #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); }
 
 
 
index 2a71fea2327574039165014c90910f5aeebbb4d6..571d23f530514c241a11b2ae6b016056a4859fcd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -22,7 +22,7 @@ Interval_t<Real>::infinity ()
 String
 Interval_t<Real>::T_to_str (Real r)
 {
-  return String (r);
+  return to_str (r);
 }
 
 template INTERVAL__INSTANTIATE (int);
@@ -36,6 +36,6 @@ Interval_t<int>::infinity ()
 String
 Interval_t<int>::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 (file)
index 5aabe5f..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
-   process command line, GNU style.
-
-   this is (Copyleft) 1996, Han-Wen Nienhuys, <hanwen@stack.nl>
- */
-
-#include <stdio.h>
-#include <iostream.h>
-#include <assert.h>
-#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")<<endl;
-      break;
-    case  E_NOARGEXPECT:
-      *error_ostream_l_ << _("option `--") <<
-       found_option_l_->longname << _("' does not allow an argument")<<endl;
-      break;
-
-    case E_UNKNOWNOPTION:
-      *error_ostream_l_ << _("unrecognized option ");
-      if (argument_index_i_)
-       *error_ostream_l_ << "-" << arg_value_ch_a_a_[array_index_i_][argument_index_i_] << endl;
-      else
-       *error_ostream_l_ << arg_value_ch_a_a_[array_index_i_] << endl;
-
-      break;
-    case E_ILLEGALARG:
-      *error_ostream_l_ << _("illegal argument `") << optional_argument_ch_C_ << _("\'to option ");
-      found_option_l_->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;
-}
index c7f1b4bd0851e8ab404b03db02e9f4bbcf0843ed..9752c046942257efd560d9a7e114815091afbf84 100644 (file)
@@ -4,15 +4,18 @@
 
   source file of the flowerlib
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+         Jan Nieuwenhuizen <janneke@gnu.org>
 */
-#include <stdarg.h>
+
 #include <stdio.h>
 #include <string.h>
 #include <ctype.h>
 #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
+
index 82080f2a6d8a560930ba15498a5ef22c4bbc99d1..d47d019367a36a833bb73e6df15e91cc05352fac 100644 (file)
@@ -3,24 +3,25 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #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
 }
index 314447220a3ec3ff000205cc54f7df233c03cec4..cdf3eccf7708bfe9422fbd88f4327cd019715675 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "matrix.hh"
index 75bbe6bad468109dbd2ff48d602cb6af17069e8a..2015e3ff239becef73ab6ece5fbda5de9df9eb3e 100644 (file)
@@ -3,6 +3,6 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
index d92c3af31ac0ccaf2ae8414d4d7084005224cdd4..7f0a6949e38054783a3dd17b3804c4bebdd096f0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <math.h>
 
@@ -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 (file)
index e69de29..0000000
index a7b7d696c8b2d59860a1bc2259c15fcf1c9aa2b8..10b3bc9c2c3a2d46d26c6be05ff70bf9f32daf87 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <stdlib.h>
 #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;
 }
 
index bdd2452ad7b5216ac23afc71f617b621172bb491..c1f69eda6002d6ad4caf797d0ff752358997932e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the Flower Library
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <assert.h>
index dd89038d09d0e2caa309cdd08ad567e555b858e7..bb293f062dc4e5e67f27d6bf56c3860bc8741b87 100644 (file)
 #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.
    @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 ())
index 366abcd6bff7c95452a478ecb78ca9c33e1f7f99..70278756b450177380b29f69e8ae5ee72f99fd3d 100644 (file)
@@ -15,6 +15,7 @@
 
 #include <assert.h>
 #include <string.h>
+#include <stdarg.h>
 
 #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 ];
 }
 \f
 /*
@@ -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;
 }
+
 \f
 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() <? s2.length_i());
+  int f = (s1.length_i () <? s2.length_i ());
   int cmp_length = 1+ f;
-  return memcmp (p1, p2, cmp_length);
+  int i = memcmp (p1, p2, cmp_length);
+  return i;
 }
 
 \f
 int
 String::index_last_i (char const c) const
 {
-  if (!length_i()) 
+  if (!length_i ()) 
     return -1;
 
-  char const* me = strh_.ch_C();
-  char const* p = memrchr ((Byte*)me, length_i(), c);
+  char const* me = strh_.ch_C ();
+  char const* p = (char const*)memrchr ( (Byte*)me, length_i (), c);
   if (p)
     return p - me;
   return -1;
@@ -180,7 +204,7 @@ String::index_last_i (char const* string) const // UGK!
 {
   assert (false);              // broken
   int length = strlen (string); // ugrh
-  if (!length_i() || !length) 
+  if (!length_i () || !length) 
     return -1;
   
   int next_i = index_i (string);
@@ -191,7 +215,7 @@ String::index_last_i (char const* string) const // UGK!
   while (next_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);
 }
 \f
 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);
 }
index f10adcb623915706ef93aa150515df4a8eb046ba..f3c2906c2797f7eb9f05962125db269378c88e80 100644 (file)
@@ -6,7 +6,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl> */
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl> */
 
 #ifdef STRING_DEBUG 
 #define memmove mymemmove
index fef860eb31cb77de92c87d64b973130d60d0fab9..e59748f665629698ff945a7ee210ed980650e5d2 100644 (file)
@@ -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<String> fields;
-       assert (!eof());
+  while (1) 
+    {
+      String s;
+      Array<String> 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 ());
+    }
 }
 
 
index 01d2e8ef5cc24dba9b930ec3ea2aeb9b8042d9f7..9c87211c252e02ff06cf9f9c60733936cff49731 100644 (file)
@@ -4,28 +4,38 @@ Text_stream::Text_stream (String fn)
 {
   ios::sync_with_stdio();
   if (fn == "")
-           {
-           name = _("<STDIN>");
-           f = stdin;
-             }
-
-       else
-           {
-           name = fn;
-           f = fopen (fn.ch_C (), "r");
-             }
+    {
+      name = _ ("<stdin>");
+      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"<<get_name() << ": " << line ()<<": "<<s<<endl;
+  cerr << '\n'<<get_name() << ": " << line ()<<": "<<s<<endl;
+}
+
+bool
+Text_stream::eof_b ()
+{
+  /* UGH UGH ugh*/
+    return
+      // !pushback.size () && 
+      feof (f);
 }
index fafa47a97e7f111cff3778a38be149984da4fcdb..e4eb654d6904d98059153bea38fafa1655d9d580 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the Flower Library
   
-  (c) 1996-98 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1996-98 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 25c1bd56a996e382eb44131364ce715883517300..8a72a4fd0e9e7da21534aed580d6fc215d5eb450 100644 (file)
@@ -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
 
index e642545548ed933b30c37d72f8ac476ab5491145..f7831b439caff484f69cea36da85b5fd5a80848c 100644 (file)
@@ -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";
 }
index 4491fdbd1a3beff565dae4f340532f3f3c0888ee..08a4a3c97ab7cf50b76d8947fe83c2d05ea27561 100644 (file)
@@ -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 (file)
index 0000000..8ad5ef7
--- /dev/null
@@ -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 (file)
index 0000000..1b4c419
--- /dev/null
@@ -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 (file)
index 0000000..89b32b2
--- /dev/null
@@ -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
index e54f56738d7bd997d65aaa81879df1ebea21c1d1..73ec21f886f6f9698c8fc15d26d96bd256afdeef 100644 (file)
@@ -32,3 +32,6 @@ break = { \penalty = 10000; }
 nobreak = { \penalty = -10000; }
 
 \include "property.ly"
+
+% music = "\melodic\relative c"
+
index 4de5bbf2956066bb7b33d11f2d972c3ae89f26ea..ef247f87f3bfe8e43aedfd94ff4b1d084d814e9e 100644 (file)
 % 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 }
 
 
        %
        %
 
 
-       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 }
 
 
 }
index 8e6c1a1a0076de93a51bb03a2b3b3472931f1a5d..d2f6c24d2dc6efa0db7b9a71140bcb25a71930f2 100644 (file)
@@ -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 (file)
index 0000000..1b4c419
--- /dev/null
@@ -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 (file)
index 0000000..3d94ef2
--- /dev/null
@@ -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 (file)
index 0000000..91fa457
--- /dev/null
@@ -0,0 +1,8 @@
+% Toplevel initialisation file. 
+       
+\version "1.0.0";
+
+
+\include "declarations.ly";
+
+\maininput
index 0626937cefe9a5a73c6e7a5dbca133541d3f38e1..dd600a43963a95396ef5ca1f2053a534680e26c9 100644 (file)
 % contributed by Paolo Zuliani <zuliap@easynet.it>
 
 \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 (file)
index 237dcbf..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-% Toplevel initialisation file. 
-       
-\version "0.1.15";
-
-
-\include "declarations.ly";
-
-\maininput
index bec7306600eb90e079d7501c94335666af5a11c9..35b568d30e83352c16c7c9c99898defa5cec7248 100644 (file)
 %}
 
 \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 }
 
 
        %
        %
 
 
-       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 (file)
index a955fd9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-% Toplevel initialisation file. 
-       
-\version "0.1.15";
-
-
-\include "declarations.ly"
-
-\score { 
-  \melodic {
-    \maininput
-  }
-  \paper { }  
-}
index 591f363c7715d5e768d9fc261b0e0ac297b714e0..714eb10e46843d5539171148217c9a156e6f5e7c 100644 (file)
 %}
 
 \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 }
 
 
        %
        %
 
 
-       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 (file)
index e69de29..0000000
diff --git a/init/paper-params16.ly b/init/paper-params16.ly
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/init/paper-params20.ly b/init/paper-params20.ly
deleted file mode 100644 (file)
index e69de29..0000000
index 2f2d86a5d4a287acf5f86d3677bdf3c01b01b34e..e5f5a613be6c15eea34cc78779f50487944d0e60 100644 (file)
@@ -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";
 }
 
index 9c1a5d1e64bc96569679f916e93a1ba124763a80..104b3829faec618bceee1e98cbef64d15704074c 100644 (file)
@@ -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";
 }
index b9b777403d1c0fb2b7b4fffd9c546c9923c7281c..336a7fe737b00efc5bdfe7fe5a33b9f0aabc47b5 100644 (file)
@@ -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";
 }
index 38247adf4a13ba1cca60751d8c86b904e8fad84c..1977147a96ffbcdafdef07746dde825429e3c28d 100644 (file)
@@ -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";
 }
 
index 357e9c2b347cf18780e3c7a5d11aef8f8f46404c..445506e575b51093c7fa60f6443c35d7be89296d 100644 (file)
@@ -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;
index 0dfb82e37124d39dc2f6daaf4b38ba5dc5a6a0cf..888ccbf9b87184fcd29a2bec8041d827b6e3c973 100644 (file)
@@ -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 (file)
index 0000000..94e0351
--- /dev/null
@@ -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";
+}
+
index 7d7cd9f11342546053818236a2f81610526d12ae..a4cee69b750736003218f723fd211218d9c8156a 100644 (file)
@@ -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";
 }
 
index 9520dbb86f8b59d77a3b41e368dfcc309faef5b7..75d8f106697595b561a776ae657372faea32f4fb 100644 (file)
@@ -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
+}
+
index 3e47d6ec8990538f3f7c45d4b1fa8f42b9ff93eb..a3da56b279788c78f00909d00ee33eebeb364e42 100644 (file)
@@ -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 (file)
index 0000000..f0e4783
--- /dev/null
@@ -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";
+
+}
index d032f44a8b817357b5168c0be548d9c85cf55ad9..2a7cd50bccf961de04b19a881177179440e4ca62 100644 (file)
@@ -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 (file)
index 3b39cc6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-% Toplevel initialisation file. 
-Gourlay = 1.0
-\include "nederlands.ly" 
-
-\include "paper20.ly"
-
-default_paper = \paper{
-       \paper_twenty
-}
-
-\maininput
-
index 6b288cf3c34719803e456b8b4b90107d3d9f7237..6b8977fdcb4d529ca57adf2c72ecceac2b27eda6 100644 (file)
 % 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 }
 
 
        %
        %
 
 
-       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 }
 
 
 }
index 34bffcc63c2bc12e9d67b0d028e0b14b9a898d55..646a0b843ccf3da95be9b86002c2f2275623b7cc 100644 (file)
@@ -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"
 }
 
index d8d64fff07a5823ed99f9ff1c2f4b1f4f77a3c9c..1432209b8e538ce685878fe429bb5b7928f1358d 100644 (file)
@@ -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"
 }
 
index c78d4be45a7bc8a74a9429648d6bbf4a1c1c3a9c..c7ca13d24652d4faf99b5fa4d8bdbc73a7d6285e 100644 (file)
@@ -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"
 }
 
index 0ee27d15b3ce6a1860ef2a42b369169e3b638561..483c775ef2a720400a6f351b7dc591a7c82bc4d3 100644 (file)
@@ -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"
 }
 
index 93d9bd645a0aaf99e85122759c671f96b9bcc588..c9d7dbc412c3008a80b3489521d28153ccc25dfb 100644 (file)
@@ -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"
 }
 
index 07f36f84d16456b43c98e190e58fd5c118122a4e..b557d18d4bec4b1279957d963056d4371fa623f2 100644 (file)
@@ -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
index a221caa99d8f9cc0ef31a712889d50a2100f8cb4..369ff9045af7ce9d4d773d7141376c69a275750c 100644 (file)
@@ -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 (file)
index 45b63b1..0000000
+++ /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 (file)
index 571d981..0000000
+++ /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 (file)
index 1297b78..0000000
+++ /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 (file)
index 0000000..ca10980
--- /dev/null
@@ -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 (file)
index 0000000..79bdd60
--- /dev/null
@@ -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 (file)
index 24677ef..0000000
+++ /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 (file)
index e69de29..0000000
diff --git a/input/bugs/s.ly b/input/bugs/s.ly
deleted file mode 100644 (file)
index c370d88..0000000
+++ /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;
-       }
-}
index dfdf22adc2a01117b1cbc4283cbe21e702dc9ee1..cb8391a086a4ecba7a52cb96c1263b200a9dbb3f 100644 (file)
@@ -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 (file)
index 0000000..474bf96
--- /dev/null
@@ -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 (file)
index 474bf96..0000000
+++ /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 (file)
index 0000000..60e1ad8
--- /dev/null
@@ -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 (file)
index e4cb944..0000000
+++ /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 (file)
index 61c49af..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-
-\score{
-       \melodic{
-               \octave relative;
-               <
-                 {\voicetwo <g'4 f'~> f} 
-                 % this is the correct way
-                 % {\voicetwo <g'4 {f'~ f }> } 
-                 {\voiceone c' ~ c }
-               >
-       }
-}
-
diff --git a/input/coriolan-alto.ly b/input/coriolan-alto.ly
deleted file mode 100644 (file)
index 71587c7..0000000
+++ /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 (file)
index 0000000..2a99dcd
--- /dev/null
@@ -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 (file)
index 0000000..813fed7
--- /dev/null
@@ -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 (file)
index 0000000..ebd4ba1
--- /dev/null
@@ -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).
index 35f27b18d0cd9e95d9a312541bf967656e85bd4b..134351df3c4f4cfd4375b483ee6a80f265c42d11 100644 (file)
@@ -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 dis eis fes ges> cis dis2 ~ | 
-               \meter 2/4 ;
+               \time 2/4 ;
        dis4 dis ~ | c cis~ | c
 }
 
index 657eeaf89f56a132c485e239911718ca9df2fc93..b3f68e393f7bb6b4a5ecdb8f281257583accd65e 100644 (file)
@@ -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 (file)
index 58ba75e..0000000
+++ /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 (file)
index ccd1322..0000000
+++ /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 (file)
index e69de29..0000000
index b2d6ad9bc22f2c6a4771aedefb69870428fd2482..b7beca7636512e7f08259468536877bd83e263b6 100644 (file)
@@ -1,5 +1,4 @@
 part = \melodic{
-       \octave c;
        c-1 c c c
        r1*3
        c4-5 c c c
index 651cd94fcb12d7aa19a7f0e0c807ae3332a0d1f9..6810cfa6be5d163b138044ce7452feb8498e9bc3 100644 (file)
 % \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>
index 48ea88df3bfdda7b8068dbefa7661dcb865c10bf..b198ed23f6cab4085636411edb52bcc41679fe1a 100644 (file)
    * 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 { 
index e0a019dbbf9aabe661133922b7a83a2a61b3afe5..a9624effb9a3413988c4b5162b661efc7aa02d0d 100644 (file)
@@ -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";
index 397198f53ed9ebd6db5f02d9cf09fb84e44a0a0d..6c18cddc2f1f588447e82ee0f252ff1c8b0359a7 100644 (file)
@@ -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;
        }
 }
index 31c227d576f9ae428a3d572ecf21fc7971c28d21..bce1fb13ad70aae9e3aa3d97b8e4a8fedc88cfc8 100644 (file)
@@ -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{
index 9f29c9f5dba8fa9adec086e05062483cc8b0f55d..e09e760108fd9aad2188ab304ef55e3c453cfffb 100644 (file)
@@ -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 (file)
index 0000000..45c13fc
--- /dev/null
@@ -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;
+       }
+}
+
index c57aeabdae631c3ca62431a6b6c30e9d38a7898f..2cb2d7b1410dba76dbe4b9efad43f006ec554d5c 100644 (file)
@@ -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 (file)
index 0000000..55b4f4e
--- /dev/null
@@ -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 (file)
index 0000000..e65abb3
--- /dev/null
@@ -0,0 +1,5 @@
+c'1:16 
+\stemup
+c4:8 c4:16 [c8:16 c:] [c,8:16 c'':]
+\stemboth
+[c,,8:16 c'':]
index 0f6a295ebd083c5152874231cc143bd456a57c11..e0200c2744d628d78e0a330b9c6414b663c85388 100644 (file)
@@ -1,14 +1,13 @@
 \score{
-       \melodic{
+       \melodic\transpose c'{
                \property Score.beamquantisation = \none
 
-               \octave c';
                [a'8 <a' g'']>
-               [c <c 'e]>
+               [c <c e,]>
                [a'16 <a' g'']>
-               [c <c 'e]>
+               [c <c e,]>
                [a'32 <a' g'']>
-               [c <c 'e]>
+               [c <c e,]>
        }
        \paper{
                castingalgorithm = \Wordwrap;
diff --git a/input/test/beam-length.fly b/input/test/beam-length.fly
new file mode 100644 (file)
index 0000000..5c7d7a7
--- /dev/null
@@ -0,0 +1,3 @@
+% beams should look the same
+               [d''8 d d] [d g d]
+               c c
index 76030ec43e5c944f932f96c0858471aacb1dd28f..6d32b96ef3e905e2579c807bd7e58dc07eafa77b 100644 (file)
@@ -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]
index f3bb1637dce24364b82ce3b5b57cdced52aaceaa..686dca23880c58d0d49bc60317cd48ef80b70e94 100644 (file)
@@ -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']} 
                }
        >
        >
index 16b44a6f6edc87fb8c7fa7111689abd8c1cb11aa..8f33fb5490d5fff36f93751c95fb528166917f9e 100644 (file)
@@ -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{
index 3c14564347d60d111c36b00f2605e349957bf25c..a49133116b3844156075b2ea6e318d8e01881a92 100644 (file)
@@ -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{
          }
index 6ab2e5f41ee68519bd4ca7d1a5b2ae5404bdd51e..ade5a27a9559606046249f4ab240096fa39d8828 100644 (file)
@@ -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 
index 23ae35e3ba2af955952a8e730635f2e351e22634..7dd60edfb81d42b1f539aa909d11bbbfc8c31988 100644 (file)
@@ -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 (file)
index 0000000..7952b0f
--- /dev/null
@@ -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,,
+       }
+}
+
index c9fbb81382484980488be95f39df53e00908d857..be1e3f0d98395ee805c81c08a334b72e25085121 100644 (file)
@@ -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. |
                }
+}
index 1b72842cd6536da566c75a8ff5184cba25d6337c..2063e9fb9670929517ec227026c839b99634c953 100644 (file)
@@ -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{
index a79a64d7c46c662a5aaf6b9f44ed2154a4ee2126..9b2d190f79608e3028e83c1ab5419013b320102f 100644 (file)
@@ -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{
index e78f752bd460bc213d6a51cf0630263bca3db7aa..d0884925a73402bb3ad8f0e99b58cf63abc93ce7 100644 (file)
@@ -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.;
        }
-       }
+}
index 0e83b364b1c4fa698acf61f50893086199e0bf98..9d82c7aa421abbd6d7c2751627eb0db98ef29f04 100644 (file)
@@ -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 (file)
index 0000000..deec5f4
--- /dev/null
@@ -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 }
+
+       }
+}
+
index 4a63bd93674d402b970a7f31e22858a568673119..79131779561b1a70118dff12095903cbc1102a5e 100644 (file)
@@ -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 (file)
index 0000000..9c5bd36
--- /dev/null
@@ -0,0 +1,11 @@
+%{
+test key itemv breaking
+%}
+\score {
+  \melodic
+  {
+    \key bes; c1 \key c;  c1
+    \break
+    \key bes; c1 \key d;\break c1
+  }
+}
index f43487c34f0bf46804f8c231c87fa8baf5b434cb..eedb7420397c7773575a7b16eb25c4678458b0e1 100644 (file)
@@ -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 (file)
index 0000000..29fdba1
--- /dev/null
@@ -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";
+       }
+}
index 691427bd49a008bc7005748e9bab11707d4f0a31..aa41f4496c9c0807af27db8e32f694dfb6c64450 100644 (file)
@@ -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 (file)
index 0000000..3e63dd3
--- /dev/null
@@ -0,0 +1 @@
+               [c8 c16 c16]
diff --git a/input/test/ossia.ly b/input/test/ossia.ly
new file mode 100644 (file)
index 0000000..62cb305
--- /dev/null
@@ -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 (file)
index e69de29..0000000
diff --git a/input/test/score-bar-scripts.ly b/input/test/score-bar-scripts.ly
new file mode 100644 (file)
index 0000000..a27deda
--- /dev/null
@@ -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 (file)
index 0000000..0092336
--- /dev/null
@@ -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
index d0bdc34543c85e1c211a0b0b251e8359e9bb8794..7fec239ef5098413789b03f8868f8541a9cdc469 100644 (file)
@@ -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 (file)
index 0000000..583415c
--- /dev/null
@@ -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 |
+       }
+}
index 663487904a958251668b6b465fe35cce64a03ac2..7b4f14bf87553facb073d83217407bb743017498 100644 (file)
@@ -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 (file)
index 0000000..6c09f42
--- /dev/null
@@ -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
+       }
+}
index aeb78c5ac82d6a89a1e86bd07c26c3238ec52e57..d723fbb6180e94d7de1189dea3cd65f1ccf44f00 100644 (file)
@@ -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 |
index 3af80b1eb03fc548e7912ea08dca55369971f45a..e8c72ce3f7d8a1aa5c3840be6c09a1381ad881e8 100644 (file)
@@ -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 
index c707e14ef355ffd5885aad349843bd0313de8b1a..6df99dd73fa76c8e2894781c5bdc598b077e53b8 100644 (file)
@@ -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, |
index 4d42f97030ae0ef44167830e68866a85453011ac..bc65c2442ea806cf68fb30063def89d9e7cc181e 100644 (file)
@@ -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 (file)
index 0000000..0cdf237
--- /dev/null
@@ -0,0 +1,8 @@
+
+%  middle tie is wrong
+\score{
+       \melodic\relative c'{
+       {               <c4 e g~ > <d f a>
+       }
+}}
+
index 2018b00868138e96136a481fd27f7f178b0685ef..4a708b9eb9b07f86f523cc77b8f9b4f5d799e245 100644 (file)
@@ -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{
index cae3d93f9f4b9a86a8bb658c278e24360cf131df..50209186cd48cc9c166773526674d37c49580ba2 100644 (file)
@@ -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 (file)
index 0000000..1af1126
--- /dev/null
@@ -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 (file)
index 0000000..3c6dac9
--- /dev/null
@@ -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 (file)
index 0000000..dfac8a1
--- /dev/null
@@ -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 (file)
index 0000000..bb479e3
--- /dev/null
@@ -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";
+}
+}
+}
index a09198ee978ae14f98733673872f6b2a5f89c3f1..f7d64a567650df02fe1f62ef6545c6eddfa6f588 100644 (file)
@@ -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{ 
index 599749f93418b6064687f41675cbb544f4910a62..eb2cd8e9a390a9e043ca7efcbc15bf302dd6892c 100644 (file)
@@ -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
index ed7bb618b42cdcd1bd7e6d0e0277bb893a2b259d..926f7abafb9d1d5a233881151a70bd1dea44bbc9 100644 (file)
@@ -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 (file)
index 0000000..6bda595
--- /dev/null
@@ -0,0 +1,693 @@
+Sat Dec  2 22:51:38 1995  Marcus Daniels  <marcus@sysc.pdx.edu>
+
+       * 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  <beebe@math.utah.edu>
+
+       * cat-compat.c (bindtextdomain): Add missing { }.
+
+Sun Nov 26 18:21:41 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <pinard@iro.umontreal.ca>
+
+       * hash-string.h: Capitalize arguments of macros.
+
+Sat Nov 25 12:01:36 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <ericb@lsid.hp.com>
+
+       * dcgettext.c: Fix bug in preprocessor conditionals.
+
+Sat Nov 25 02:35:27 1995  Nelson H. F. Beebe  <beebe@math.utah.edu>
+
+       * libgettext.h: Solaris cc does not understand
+        #if !SYMBOL1 && !SYMBOL2.  Sad but true.
+
+Thu Nov 23 16:22:14 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * hash-string.h: Correct prototype for hash_string.
+
+Sun Nov 12 12:42:30 1995  Ulrich Drepper  <drepper@myware>
+
+       * hash-string.h (hash_string): Add prototype.
+
+       * gettextP.h: Fix copyright.
+       (SWAP): Add prototype.
+
+Wed Nov  8 22:56:33 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
+
+Sat Oct 28 23:20:47 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * cat-compat.c: Include <string.h> 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * finddomain.c: Correct some bugs in handling of CEN standard
+       locale definitions.
+
+Thu Sep  7 01:49:28 1995  Ulrich Drepper  <drepper@myware>
+
+       * finddomain.c: Implement CEN syntax.
+
+       * gettextP.h (loaded_domain): Extend number of successors to 31.
+
+Sat Aug 19 19:25:29 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * Makefile.in (uninstall): Remove stuff installed by install-src.
+
+Tue Aug 15 13:13:53 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * finddomain.c (unistd.h):
+       Include to get _PC_PATH_MAX defined on system having it.
+
+Fri Aug  4 22:42:00 1995  Ulrich Drepper  <drepper@myware>
+
+       * finddomain.c (stpcpy): Include prototype.
+
+       * Makefile.in (dist): Remove `copying instead' message.
+
+Wed Aug  2 18:52:03 1995  Ulrich Drepper  <drepper@myware>
+
+       * Makefile.in (ID, TAGS): Do not use $^.
+
+Tue Aug  1 20:07:11 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * intl-compat.c (textdomain): Correct typo.
+
+Wed Jul 19 01:51:35 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * cat-compat.c: If !STDC_HEADERS try to include malloc.h.
+
+Thu Jul 13 20:55:02 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * 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  <drepper@myware>
+
+       * tupdate.perl.in: Complete rewrite for new .po file format.
+
+Sun Jul  2 02:06:50 1995  Ulrich Drepper  <drepper@myware>
+
+       * 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 (file)
index 0000000..7679393
--- /dev/null
@@ -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 (file)
index 0000000..2a05735
--- /dev/null
@@ -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 (file)
index 0000000..bd9f422
--- /dev/null
@@ -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 <config.h>
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+# ifdef HAVE_MALLOC_H
+#  include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#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 (file)
index 0000000..39fcfb4
--- /dev/null
@@ -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 <config.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <string.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+#  include <malloc.h>
+# endif
+#endif
+
+#ifdef HAVE_NL_TYPES_H
+# include <nl_types.h>
+#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 (file)
index 0000000..8f99f31
--- /dev/null
@@ -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 (file)
index 0000000..911bc5c
--- /dev/null
@@ -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 <config.h>
+#endif
+
+#include <sys/types.h>
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+#  include <alloca.h>
+# else
+#  ifdef _AIX
+ #pragma alloca
+#  else
+#   ifndef alloca
+char *alloca ();
+#   endif
+#  endif
+# endif
+#endif
+
+#include <errno.h>
+#ifndef errno
+extern int errno;
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+#  include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+#  define strchr index
+# endif
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+#ifdef _LIBC
+# include <libintl.h>
+#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 <limits.h>
+#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 <sys/param.h>
+#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 (file)
index 0000000..2fde677
--- /dev/null
@@ -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 <config.h>
+#endif
+
+#if defined HAVE_LOCALE_H || defined _LIBC
+# include <locale.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#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 (file)
index 0000000..007a87e
--- /dev/null
@@ -0,0 +1,503 @@
+/* finddomain.c -- handle list of needed message catalogs
+   Copyright (C) 1995 Software Foundation, Inc.
+   Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 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 <config.h>
+#endif
+
+#include <errno.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+# ifdef HAVE_MALLOC_H
+#  include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#if !HAVE_STRCHR && !defined _LIBC
+# ifndef strchr
+#  define strchr index
+# endif
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#include "gettext.h"
+#include "gettextP.h"
+#ifdef _LIBC
+# include <libintl.h>
+#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 (file)
index 0000000..7bed636
--- /dev/null
@@ -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 <config.h>
+#endif
+
+#ifdef _LIBC
+# define __need_NULL
+# include <stddef.h>
+#else
+# ifdef STDC_HEADERS
+#  include <stdlib.h>          /* Just for NULL.  */
+# else
+#  ifdef HAVE_STRING_H
+#   include <string.h>
+#  else
+#   define NULL ((void *) 0)
+#  endif
+# endif
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#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 (file)
index 0000000..5190f09
--- /dev/null
@@ -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 <stdio.h>
+
+#if HAVE_LIMITS_H || _LIBC
+# include <limits.h>
+#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 <limits.h>) 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 (file)
index 0000000..6d53ac1
--- /dev/null
@@ -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 (file)
index 0000000..3b38bd1
--- /dev/null
@@ -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 <values.h>
+#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 (file)
index 0000000..503efa0
--- /dev/null
@@ -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 <config.h>
+#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 (file)
index 0000000..4570cdf
--- /dev/null
@@ -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 <sys/types.h>
+
+#if HAVE_LOCALE_H
+# include <locale.h>
+#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 (file)
index 0000000..4b91230
--- /dev/null
@@ -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 <locale.h>
+#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 (executable)
index 0000000..5918e72
--- /dev/null
@@ -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 <drepper@gnu.ai.mit.edu>, 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 <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+  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 (file)
index 0000000..d98f365
--- /dev/null
@@ -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 <config.h>
+#endif
+
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined HAVE_UNISTD_H || defined _LIBC
+# include <unistd.h>
+#endif
+
+#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
+# include <sys/mman.h>
+#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 (file)
index 0000000..b432e91
--- /dev/null
@@ -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 <config.h>
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# if defined HAVE_ALLOCA_H || defined _LIBC
+#  include <alloca.h>
+# else
+#  ifdef _AIX
+ #pragma alloca
+#  else
+#   ifndef alloca
+char *alloca ();
+#   endif
+#  endif
+# endif
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#else
+char *getenv ();
+# ifdef HAVE_MALLOC_H
+#  include <malloc.h>
+# else
+void free ();
+# endif
+#endif
+
+#if defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#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 (executable)
index 0000000..b3bcca4
--- /dev/null
@@ -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 <drepper@gnu.ai.mit.edu>, 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 <config.h>\
+#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 <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+  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 (file)
index 0000000..c06642b
--- /dev/null
@@ -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 <config.h>
+#endif
+
+#if defined STDC_HEADERS || defined _LIBC
+# include <stdlib.h>
+#endif
+
+#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+
+#ifdef _LIBC
+# include <libintl.h>
+#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 (executable)
index 0000000..b19c0bb
--- /dev/null
@@ -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 <drepper@gnu.ai.mit.edu>, 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 <Haible@ma2s2.mathematik.uni-karlsruhe.de>
+  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 `<number> <message>'
+  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
index e1593fcd69b288b00180c626e0674bd810cf58ee..8b95c0a8c1eb46d81f85ed6e9d23dfa9a3a33656 100644 (file)
@@ -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 
 
 
index 971d4d0c21dfc58d63bf9cc5bfda6608d7132ae3..9bcf0e5f70fa1ab4dffd161c8c12755534548494 100644 (file)
@@ -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;
 }
index 1fc42aa3becccc27e5eb6ecd7969677e8340f2c1..c1240f3cddf73bd3320e56fb9a75490a53647b01 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include <assert.h>
 #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++;
   }
index b1af3fd8dde1505b815a79ca0ee4ef98536ccfc1..eac7a759ab5d270045926fa59617667dcb3c4ce7 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #include <assert.h>
 #include "duration-convert.hh"
index 95e056b7899cca83be869eed18079f5f72b14a89..7bdf8d00dccf0822f3b7bec7d4ea266124099ca7 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
-           Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+           Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <assert.h>
@@ -82,3 +82,4 @@ Duration::plet_b ()
 {
   return !plet_.unit_b ();
 }
+
index 43a98084f3ca4e548a45ec90bd5c90ca11531bf0..5dba771ec97238ee97f27822cfe1a8ecb611ab04 100644 (file)
@@ -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
 
 
index 33ee6bd784348c53d33e7239b533916e286a56f7..a6f252a1dac18ce2331311999d317b6d59bfc60f 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  binary-source-file.hh -- declare Binary_source_file
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+//  copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef BINARY_SOURCE_FILE_HH
 #define BINARY_SOURCE_FILE_HH
index 82e102d4c89577474cfb4c5fbd3d19c934961043..fc7ee51d970b69a30e9a4b67cc083e93ba5cc563 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -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).
index 59c968f75126ae8ef0a3db8ab5fa2ebbd6743745..367672ac4e1b53cefc4998cf6710807315ab9d2b 100644 (file)
@@ -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 <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
@@ -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)
   */
index b2e679bb574bf76b7d658470ef4f3292f1f79d91..4e6fca65ef22d3aa5178077401d1105c2764d079 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index ac0780b21d39f110bf3b03f127561f5dcfc55972..afdf6eff224290617fee9f414a5a8204894436dd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 506bbc978f8d3ba33dc302dbf221e689de7c239e..50b12f51784cddaf3c0f3f8fe738c7b981312dab 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
diff --git a/lib/include/out/dummy.dep b/lib/include/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index de32eb1753cfa2802e491f51bda933ad40d16587..05b6297704b4aa987f72febc7c191d662a49591c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 4f4bd591999f455c14dc17640d1da1cfa6d1fc5a..1fe0136c508627b9c950e3ffe440b8d6fbc02385 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 0983a829a4e0dc8012bae0da794b32e10b210d85..ee671c785a3bfee41bffeefce3e400c13a3412cb 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  source-file.hh -- declare Source_file
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+//  copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #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;
index f6a824fa70376e2bae81db7f248506c08ff2cbe4..395a9d8bb46602c215e39c75a72f5213a537897a 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  source.hh -- part of LilyPond
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+//  copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #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<Source_file*> 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 (file)
index 0000000..95d60bf
--- /dev/null
@@ -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 //
index 27bc4ff75953894cd2fad01d8c9b1d5e2d5ede6f..e22d320f334e50eec098124e679c58a00f591897 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
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 (file)
index 95d60bf..0000000
+++ /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 //
index 46ddcb2ca60f8073ac7decafe65cf46fd8caf564..4283783f8de03376e105a31ca39fc79402c5caf9 100644 (file)
@@ -3,7 +3,7 @@
 
  source file of the LilyPond music typesetter
 
- (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #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") + ")";
 }
index 17d451d1a66c2fee42291629c709f902ad5ca7ae..f9e6d88cbb149d80a654274410f9403afc4c154a 100644 (file)
@@ -5,8 +5,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-  Jan Nieuwenhuizen <jan@digicash.com>.
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>.
 
   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;
     }
 
index d29ce9065bc9d91e1820f39e51525e14586421de..0f49d0aa211f7e267bea220851fd52d0c98507d1 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <iostream.h>
diff --git a/lib/out/dummy.dep b/lib/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 9a098cc4c9b7c4ce60fe90f4ac0b1264f66eaf45..b27ecc9c0be7aa5b207defb03b5dad96f043d7d0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "plet.hh"
index 561ab838c960c30270ee29b1378035b88efa457a..1fd7ea7fc963c7a946fff5c5208e7f875e88dac8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <stdio.h>
 #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);
index 14fabe795911d66e2084c95dae716e7e64e3eed5..5403abb5179b3452b862a8305b01d469cd11182c 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
-  & Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+  & Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #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;
 }
index 5d384f757e5bbb1246d441833e0e707bf8cd329c..81423bb1cb95b01a5a4b063628dbcd4f128f1bc1 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -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;
index 4ebec57399ddf78d49b899db6be38ad9332a78ca..7b7a3c229a004764aa850903ade94899a56b2697 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "config.hh"
diff --git a/lib/thank-you-cygnus.cc b/lib/thank-you-cygnus.cc
new file mode 100644 (file)
index 0000000..22cbb9d
--- /dev/null
@@ -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 <sys/types.h>
+#include <sys/mman.h>
+#include <winbase.h>
+#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 <iostream.h>
+
+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 //
index afdbd97f4f6e33e4b39b140101cb78195b09e087..afc6f7b9ceef32314c8303f0b4fd139d44061c8d 100644 (file)
@@ -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 (file)
index c0aaab9..0000000
+++ /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 <sys/types.h>
-#include <sys/mman.h>
-#include <winbase.h>
-#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 <iostream.h>
-
-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 //
index d94ae0d93ac0c56f52a1afa8d4df294d085a265b..7da45565b8ccabb3b3f7aecbd96c0bd19b58e62e 100644 (file)
@@ -1,48 +1,30 @@
-# project  LilyPond -- the musical typesetter
 # title           makefile for lilypond
 # file    lily/Makefile 
-#
-# Copyright (c) 1997 by
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-# 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 $< $@
index c7309d695ef166330e130887b74576e27a361eb9..522667c82e68199bfcaa0644c48fa49306db242e 100644 (file)
@@ -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.
index 977c1307c68ccf20ef1ce25451a1b6abbd5ad5c8..323bf8ddd8b4a09f8ec8942db190bf826d9040d0 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -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;
 }
 
 
index f2a69f5504cafd124308ea2c3d6c845ad2a4cc6f..67c09cb7fcbd097e50eed7929202c4d2e3402074 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-           Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+           Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #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);
 }
index 6637d19f0f3527c04b616648f454df9e6c079775..91f4ff21f978921ff24b646382613fd829292095 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #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 (file)
index 0000000..ba3adae
--- /dev/null
@@ -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 <hanwen@cs.uu.nl>
+  
+ */
+
+#include "direction.hh"
+#include "afm.hh"
+#include "data-file.hh"
+#include "string-convert.hh"
+
+
+Box
+parse_box (Array<String> 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<String> a= String_convert::split_arr (s, ';');
+  for (int i=0; i < a.size (); i++)
+    {
+      String c = strip_leading_white (a[i]);
+
+      Array<String> 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<Adobe_font_char_metric> &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 (file)
index 0000000..2935a8a
--- /dev/null
@@ -0,0 +1,118 @@
+/*   
+  afm.cc --  implement Adobe_font_metric
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#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 (file)
index 0000000..4f80841
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+  align-elem.cc -- implement Align_elem
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#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<Interval> 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] )
+           <? threshold_interval_[BIGGER];
+       }
+
+      
+      if (!i && align_dir_ == LEFT)
+       center_f = where_f;
+      else if (align_dir_ == CENTER && elem_l_arr_[i] == center_l_)
+       center_f = where_f;
+
+      where_f += stacking_dir_ * dy;
+
+            
+      elem_l_arr_[i]->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<Align_element_content> 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
+}
index eba9660c922c8e1fb3cfdeece3e20509e4162363..48b5c737202b1b126d42d32321c13942750ebe57 100644 (file)
@@ -3,14 +3,16 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
+
+
 #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: " <<tex_<<"\n";
+  DOUT << "texstring: " << tex_ << '\n';
 
   DOUT << "dim:";
-    for (Axis i=X_AXIS; i < NO_AXES; incr(i))
-      DOUT << axis_name_str(i) << " = " << dim_[i].str();
+  for (Axis i=X_AXIS; i < NO_AXES; incr(i))
+    DOUT << axis_name_str(i) << " = " << dim_[i].str();
 
   DOUT << "\noffset: " << off_.str ();
 #endif
@@ -80,26 +82,18 @@ Atom::Atom (String s, Box b)
 String
 Atom::str() const
 {
-  return "Atom (\'"+tex_+"\', (" + dim_.x().str () + ", "
+  return String ("Atom (\'") + tex_ + "\', (" + dim_.x().str () + ", "
     + dim_.y ().str () + "))";
 }
 
-
-String
-Atom::TeX_string() const
+Offset
+Atom::offset () const
 {
-  String tex_str = tex_;
-  if (check_infinity_b ())
-    tex_str += "\errormark";
-  
-   // whugh.. Hard coded...
-  String s ("\\placebox{");
-  s += print_dimen (off_[Y_AXIS])+"}{";
-  s += print_dimen (off_[X_AXIS]) + "}{";
-  s += tex_str + "}";
-  return s;
+  return off_;
 }
 
+
+
 void
 Atom::translate_axis (Real r, Axis a)
 {
index 2f5ad611a68dc778118d1deb8961cf742951e7c3..5b6717c01519a952cc9cc4a296d3393e8a79a46d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #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; 
index 18f265c46edd46915791a0ba6fe0049cd25f3f85..bffe351af4fe60fa0b79d69ae8638fbec18a612d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "audio-element.hh"
index 81b0285ba6356e13f6fc480992435529356b397c..71757314a7c75e82dd1a8bfd2687dad2f060a5ba 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 #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)
index d35fb23a58c65b1b78c2bf5f15da92bd3247a493..235de874dedaa398b94fc4f52db23f10801dac73 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #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 (file)
index bf42295..0000000
+++ /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 <hanwen@stack.nl>
-*/
-#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
-}
index b4061af7f5b5c94ff293d33cb6f3463047eb7936..8aa8263668e3f13dfc3cb3b6442d782e13ac9db0 100644 (file)
@@ -3,10 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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<Score_elem>
+Link_array<Score_element>
 Axis_group_element::get_extra_dependencies() const
 {
   return elem_l_arr ();
 }
 
-Link_array<Score_elem>
+Link_array<Score_element>
 Axis_group_element::elem_l_arr () const
 {  
   /*
     ugh. I know
-   */
-  Link_array<Score_elem> 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<Score_element> r;
+  for (int i=0; i < elem_l_arr_.size (); i++)
+    r.push (elem_l_arr_[i]->access_Score_element());
   return r;
 }
 
+Link_array<Score_element> 
+Axis_group_element::get_children ()
+{
+  Link_array<Score_element> childs;
+  Link_array<Score_element> 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);
index 2706fa8faa658fc8dffcd57fa05489f8bab009f0..33dfdceba995273b38f630275febd21a58654d6f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #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<Score_elem> elems = elem_l_arr ();
+  Link_array<Score_element> 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<Score_elem> elems = elem_l_arr ();
+  Link_array<Score_element> 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);
index 344b4060cce15e9f96d5ab215973486fd5710bca..64a28da895b44eeb6d0a3a6bf22b1695edc96924 100644 (file)
@@ -3,10 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "axis-group-spanner.hh"
+#include "debug.hh"
 #include "item.hh"
 #include "p-col.hh"
 
 void
 Axis_group_spanner::do_break_processing_if_unbroken()
 {
-  Link_array<Score_elem> elems = elem_l_arr ();
+  Link_array<Score_element> 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<Score_elem> loose_elems = elem_l_arr ();
+  Link_array<Score_element> 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 (file)
index 0000000..2f1d760
--- /dev/null
@@ -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 <hanwen@cs.uu.nl>
+*/
+
+
+#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 (file)
index 7afced8..0000000
+++ /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 <hanwen@stack.nl>
-*/
-
-
-#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);
index 57bf47660d8665d62442b41010950fa4bf97fbff..e61c398900b5d1cb9bb36fa580b3133354e6e63c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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 (file)
index 0000000..7ed4bad
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+  bar-reg.cc -- implement Bar_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#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 (file)
index 33e62ad..0000000
+++ /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 <hanwen@stack.nl>
-*/
-
-#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 (file)
index 0000000..8a79324
--- /dev/null
@@ -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 <hanwen@cs.uu.nl>
+*/
+
+
+#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 (file)
index be49f69..0000000
+++ /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 <hanwen@stack.nl>
-*/
-
-
-#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);
index 701bbd7b86bd90f5ecf9122182d353cabb5759ae..32120fa1bf72ee0db17fba6092807936f9342008 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "bar.hh"
 #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 (file)
index 0000000..6ef0ba0
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+  beam-grav.cc -- implement Beam_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+#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 (file)
index 9a3f958..0000000
+++ /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 <hanwen@stack.nl>
-*/
-#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);
index 38418fc3330dadd1b9a6f3b79b0b5070bf6f1d2b..f6a4194ca7ff27ac1c627b05e72e2b75c978d8f3 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 55256fdd5b78321bf93ed65398adcb24e3a353d9..dea856499bc00ce6f59d42c0dd87c9d277487330 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
-    Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+    Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
@@ -19,9 +19,9 @@
 #include <math.h>
 
 #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_ " <<slope_f_ << "left ypos " << left_y_;
+  DOUT << "slope_f_ " << slope_f_ << "left ypos " << left_y_;
   Spanner::do_print ();
 #endif
 }
@@ -115,7 +114,7 @@ Beam::do_post_processing ()
 {
   if (stems_.size () < 2)
     {
-      warning (_ ("Beam with less than 2 stems"));
+      warning (_ ("beam with less than two stems"));
       transparent_b_ = true;
       return ;
     }
@@ -124,10 +123,10 @@ Beam::do_post_processing ()
 }
 
 void
-Beam::do_substitute_dependent (Score_elem*o,Score_elem*n)
+Beam::do_substitute_dependent (Score_element*o,Score_element*n)
 {
   if (o->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 <stems_.size (); i++)
     {
@@ -545,7 +559,7 @@ Beam::set_stemlens ()
            { 
              // when all too short, normal stems win..
              if (dy_f < -epsilon_f)
-               warning ( _("Weird beam shift, check your knees."));
+               warning (_ ("weird beam shift, check your knees"));
              dy_f = dy_f >? 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_ <? prev->beams_right_i_ ;
-      Real w = (here->hpos_f () - prev->hpos_f ())/4 <? paper ()->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 <? paper ()->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_ <? next->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 <? paper ()->note_width ();
+      w = w/2 <? paper ()->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? 
index 2242c4ffa5b2f1518067cb487d12890f5f7842c9..e851e74f031b72e8274bbbcdf8c761dbb587d07f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <math.h>
@@ -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;
index b986debd303d301679687daccb5e0c2047310692..04a09d7bc95968a6d9c90ecc8048291e3d1c3191 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-      Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+      Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #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<Offset> 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    
 {
index 0e9befcad228af92749c6a6523ece36e0ce17c7f..92c8fa6c5aab8f5d7484a2dc2d3d897c4095afce 100644 (file)
@@ -3,11 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "boxes.hh"
-#include "varray.hh"
+#include "box.hh"
+#include "array.hh"
 
 void
 Box::translate (Offset o)
index b95f5fd41e5ece0bace135b2c4e70c3298789deb..f97397677438c8f96da45fec89cbb8da244a4036 100644 (file)
@@ -3,16 +3,18 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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();
 }
 
index cc5c6f92a420487135a4c47b9c07496b01f34129..f6c374dce5c88f3cdb745131398adb0190422ba3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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"
 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<Col_hpositions>
+Array<Column_x_positions>
 Break_algorithm::solve () const
 {
   Cpu_timer timer;
 
-  Array<Col_hpositions> h= do_solve ();
+  Array<Column_x_positions> 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;
 }
index 681ac2ae0fd48c419b84f23d6c4fa51f48987d4d..4f97c77fd78bf52b9a486a776a73b93956bcd395 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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);
index 54bbed8e814a31fd9a7ca43af674a32bb98450d5..771e8d43b1fe0ee098e4a8869f64bba383085e77 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "change-translator.hh"
index 1629d3fb377cebcc44e09eab5bfef08fb219625b..777a9bcb4431e59ca2da1c23035733fa8337f14a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translator-group.hh"
diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc
new file mode 100644 (file)
index 0000000..f6ebe58
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+  clef.cc -- implement Clef_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>,
+  Mats Bengtsson <matsb@s3.kth.se>
+*/
+
+#include <ctype.h>
+#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 (file)
index bc98127..0000000
+++ /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 <hanwen@stack.nl>,
-  Mats Bengtsson <matsb@s3.kth.se>
-*/
-
-#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);
index 234b85fbb4af1963ba0466d896e7f5903255bc42..285d904a099bdfc45a0ca707b1b5a4c0cd851bd8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <ctype.h>
 #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<Text_def>;    // ugh
+
+
index 85287257b0647f6ac480ea90a9db72a010e19fd5..581a9491b74db9a14cee9babe7a2179000cb2e59 100644 (file)
@@ -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 <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "p-col.hh"
 #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 ();
 }
index 1e90ffeb373813a13e43174bf9d75321f1a52e51..8e37871558d60de740afe0d684898cd19a39b6ef 100644 (file)
@@ -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 <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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 (file)
index 0000000..be5ab22
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+  collision-reg.cc -- implement Collision_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#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 (file)
index 6a6dcef..0000000
+++ /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 <hanwen@stack.nl>
-*/
-
-#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);
index 2da1e0ddae97e26025df1f96f85ab5d10c9c5975..c63c71747c1f300c1971ff94b6ea3acd0ce846dc 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #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));
 }
index 5cc36319bf48aa426b045857f9232dc3405796bf..24f2fee50bdbf9bbabb8b829ecb0fdf63062e9fe 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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() << " = " <<metronome_i_ ;
+  DOUT << dur_.str() << " = " << metronome_i_;
 }
 IMPLEMENT_IS_TYPE_B1(Tempo_req, Timing_req);
 
 bool
 Tempo_req::do_equal_b (Request *r) const
 {
-  Tempo_req *t = r->command()->timing ()->tempo ();
+  Tempo_req *t = r->access_Command_req ()->access_Timing_req ()->access_Tempo_req ();
 
   return t->dur_.length()== dur_.length () && metronome_i_ == t->metronome_i_;
 }
 
-/* *************** */
+
 
 
 IMPLEMENT_IS_TYPE_B1(Measure_grouping_req,Timing_req);
@@ -193,7 +186,7 @@ Measure_grouping_req::do_print() const
 {
   for (int i=0; i < elt_length_arr_.size(); i++)
     {
-      DOUT << beat_i_arr_[i] <<"*" << elt_length_arr_[i]<<" ";
+      DOUT << beat_i_arr_[i] << "*" << elt_length_arr_[i].str () << " ";
     }
 }
 
@@ -204,15 +197,100 @@ Measure_grouping_req::do_equal_b (Request*) const
   return false;                // todo
 }
 
-/* *************** */
-
 void
-Key_change_req::transpose (Musical_pitch  d) const
+Key_change_req::transpose (Musical_pitch d) 
 {
-  WARN << _("don't know how to transpose a key. \n"); //  TODO!
+  if (ordinary_key_b_ ) 
+    { 
+      if (pitch_arr_.size () > 0) 
+        pitch_arr_[0].transpose(d);
+      else
+        {
+          warning(_ ("don't know how handle empty keys")); // TODO 
+        }
+    }
+  else
+    {
+      Array<Musical_pitch> 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;
index 0dee71825b0d00460808363c74b578cefb0a6974..4b59b529ad24f80403de4308c1ab415de6081f53 100644 (file)
@@ -3,11 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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;
 }
 
index 8fcb8eba4bf9bd09e46cf2e9d202d1f18eb74040..200af4ec3296defbbe6c4396f322cf2c350174e7 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1996,98 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996,98 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include <fstream.h>
 // libg++ 2.8.0
 // #include <std/new.h>
 #include <stdlib.h>
+
+
 #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 <malloc.h>
 
+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
 }
 
index 5e85f4992d5b0157bc798ea4dff7d589c3a7d10b..d309241e23e94b7c62b34d37a33fdad713bf9bf6 100644 (file)
@@ -1,5 +1,5 @@
 #include <ctype.h>
-#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;
 }
+
index 802418fce5ef7371d596ffc953d63e3e606499a8..1c2481953f20e1cca6cde3c4420b191b6f77f660 100644 (file)
@@ -4,7 +4,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc
new file mode 100644 (file)
index 0000000..04ae0bf
--- /dev/null
@@ -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 <hanwen@cs.uu.nl>
+  
+ */
+
+#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);
index 4c44095826f217b81fb5745260afa0d0a6408960..bb1885ca88e5660373978cb81aa139bf4dcc5f5d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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);
index 20cf87a51508fd23bc007abdc36f056c3915478f..370ea3dbe7ae46272e2fe5efe0564bf8b09a0238 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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 (file)
index 0000000..9fc4704
--- /dev/null
@@ -0,0 +1,202 @@
+/*
+  dynamic-reg.cc -- implement Dynamic_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+#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 (file)
index 9a0913c..0000000
+++ /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 <hanwen@stack.nl>
-*/
-#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_);
-    }
-}
index 193ef482b5d815d7dd2ac9c1104ad34f8e916a11..3da2c28559a74edb3e05f721e77475629fea2fa5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
index bd6873d0d227ef63a0bea59b627520f09fe6009d..8ac916b54737a96f862efc9e849ff12e2ecfdb8a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
 #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;
index 2ccf33506924ee75afc90f7ccff9c9f2ea6985e2..696bedcf2e26b2a2cf039a9975ef8f9b7ca7f3d7 100644 (file)
@@ -3,7 +3,7 @@
 
   Sourcefile of GNU LilyPond musictypesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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 (file)
index 0000000..6689e91
--- /dev/null
@@ -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 <hanwen@cs.uu.nl>
+  
+ */
+
+#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);
index 9d7b657880b52566f13350ed907966232c5d7ee2..ba7da733e29d57ecf9db91fd57d86ac2ed3e470c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 3620c52d694457812d6a7de919e55347b5faf173..1c8179441f5dcc95ffa9d10674983b51a5a6f2b0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "global-translator.hh"
index 58e08b959c4f473e40840ec97d5bb2e26feb24f7..d8fda8415c363d96d14973201049b74e1e4d4178 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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<Col_hpositions>
+Array<Column_x_positions>
 Gourlay_breaking::do_solve () const
 {
   Array<Break_node> optimal_paths;
@@ -60,7 +60,7 @@ Gourlay_breaking::do_solve () const
   for (; break_idx< breaks.size (); break_idx++) 
     {
       Array<int> candidates;
-      Array<Col_hpositions> candidate_lines;
+      Array<Column_x_positions> candidate_lines;
       Pointer_list<Line_spacer*> 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 << "]"<<flush;
+       *mlog << "[" << break_idx << "]" << flush;
     }
 
   if  (break_idx % HAPPY_DOTS_I) 
-    *mlog << "[" << break_idx << "]"<<flush;
+    *mlog << "[" << break_idx << "]" << flush;
 
   Array<int> final_breaks;
 
-  Array<Col_hpositions> lines;
+  Array<Column_x_positions> 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 (file)
index 0000000..b0aab89
--- /dev/null
@@ -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 <hanwen@cs.uu.nl>
+*/
+#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);
index f9273f0ee37a0e5b1e8db4e800cd075bf23d2be7..d604fba9c3731a75796aceba11f307cfd9a801a9 100644 (file)
@@ -3,11 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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<Axis_group_element> my_groups;
-  for (Axis_group_element * axis_group_l = axis_group_l_a_[a];
+  Link_array<Graphical_axis_group> 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
 }
 
index 2bdaed7db17be9beff9b8a860acb57dada0df9a1..af7d234bf4032d5ad41ae9b874cc3f1152f9c5a9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "debug.hh"
index fecde2402d07be5dd5fc2a64805d6b32293844e0..ab12bf878026534798043651112d0f578277e04c 100644 (file)
@@ -3,16 +3,16 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #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);
+}
+
index 92fc9e29ee3bbac06e451ca81ffc5ca123c08503..849a2552fa181a6ce70db8a52fea20d5f90bedb5 100644 (file)
@@ -4,51 +4,53 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #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<Score_element> 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 (file)
index 0000000..c8c5e79
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+  head-grav.cc -- part of GNU LilyPond
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#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 (file)
index 5820c5f..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-  head-grav.cc -- part of GNU LilyPond
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#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);
index 39dffd5dbffaf846b6be97ffcdd66d1e840a8ede..2a38c5e5976e751583d2ba9579bc16973e14f6c2 100644 (file)
@@ -3,12 +3,16 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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 (file)
index 0000000..63e192e
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+  head-grav.cc -- part of GNU LilyPond
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#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);
index 82a81c230095d4da921619f49b59296710e495cd..a22f30eb5ece14cc240af320ba35e5874a05b832 100644 (file)
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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<Horizontal_align_item_content> 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<Interval> 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;
 }
index 85ca74550954aeaeb6b5074553427f51f9e5d759..804dd6d9b3a8b69f214ad42b95271d869d6ae11c 100644 (file)
@@ -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);
 }
 
index a894ba521465dadbc47889e79a9cb435a1a10bb6..4e4d5594956ff59d289da10b0f55a13c83325a37 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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;
+}
index 6b5ddd79b67840b2d4ce01961b61bba789587fab..9021d88da6bfc5cb99183cbe64478e7c28c3343c 100644 (file)
@@ -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;    
 }
 
 
index dd40fb8182f5d8037c5497a41fdad021add053d2..cf1917228c4837dfca35ff63d32e8c6eb28a4c07 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -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;    
+}
index 64c1866fd8b3a95a71ece28c1db826e31d51a873..f2638e0603e13cc6f8a9e6641e2ec1f70cf609a5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "idealspacing.hh"
@@ -16,7 +16,7 @@ Idealspacing::print() const
 {
 #ifndef NPRINT
   DOUT << "idealspacing {" ;
-  DOUT << "distance "<<space_f_<< " strength " << hooke_f_ ;
+  DOUT << "distance " << space_f_ << " strength " << hooke_f_;
   DOUT << "left " << left_i_ << " right " << right_i_ << "}\n";
 #endif
 }
index 69b3ca1c4030cdba12d4d1cd0269971d32c371d8..71f093fdfef0fa6fdcf59bb2da7ff204eaa5561f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <assert.h>
@@ -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);
 
index 2d3b45597d2496496b57dc6a0342f8fa63dcf60e..1adf85425d4d6f5eef95fc944d10e19ec41a1083 100644 (file)
@@ -3,16 +3,25 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
+
+#include <strstream.h>
+
 #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<<flush;
+  *mlog << "[" << s<<flush;
   include_stack_.push (sl);
 
   /*
@@ -48,6 +57,21 @@ Includable_lexer::new_input (String s, Sources  * global_sources)
   yy_switch_to_buffer (yy_create_buffer (sl->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 << "]"<<flush;
+  *mlog << "]"<<flush;
   yy_delete_buffer (yy_current_buffer);
   yy_current_buffer = 0;
   if (state_stack_.empty ())
     {
+      yy_current_buffer = 0;
       return false;
     }
   else
index da392fe30fbfcbdd1e480ef9c888bf9baf6aa252..828589fd9480875f277e553e5a9324b1228ad891 100644 (file)
@@ -1,12 +1,7 @@
 # lily/include/Makefile
 
-# subdir level:
-#
 depth = ../..
-#
 
-# identify module:
-#
-MODULE_NAME = lilypond
-include ./$(depth)/make/Include.make
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
 
index ace2cffa532b72124bb4991714578675c95440d4..f0df714af25cf9be8825d5515fef1dca67fe0fc3 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -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 ();
index df3244e4dd089766c5f25442ebdeda6270909c86..2a25c89d44913f99a4c1518fa4766b470f34e8c1 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
@@ -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:
index f6eb933e704aa88bc54be3d50054f1836168700a..629fb0286ecf0368c2cf026b4847ffc635efab3f 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-          Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+          Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #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 (file)
index 0000000..64faa2a
--- /dev/null
@@ -0,0 +1,22 @@
+
+/*   
+  afm-reader.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#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 (file)
index 0000000..8a932d0
--- /dev/null
@@ -0,0 +1,56 @@
+/*   
+  afm.hh -- declare Adobe_font_metric
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#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<Adobe_font_char_metric> 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 (file)
index 0000000..0b18f18
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+  align-item.hh -- declare Align_elem
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#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<Score_element> elem_l_arr_;
+  Array<int> 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
index b145383d7dc578066fd9c1d310fa34721169dcbb..d7c31ee35ce2589ef87f2bec24fe3c3680c478c5 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #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
index 6065e43a68c2d5783496f640d21cfae7a3ff4d11..9b60c3eb7d50f8c816a36e44d52fe5c96ea3025f 100644 (file)
@@ -1,7 +1,7 @@
 /*
   audio-column.hh -- declare Audio_column
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #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;
 
index 6fe2a8e068603903cd89d78f3a48406c474dd78b..db7e4097d3b12780fcd0688f14f0d39a55d55345 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 3edfa01e48de848f0faac8853f391af598f4153b..b745c5b931bfab198c0afe982e5fb68f1b7113e4 100644 (file)
@@ -1,7 +1,7 @@
 /*
   audio-item.hh -- declare Audio_items
 
-  (c) 1996,  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #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;
 };
index 12f3d9c1e8ad1ec419300d6ec9c50358990028f3..3d13b28d6196ecfc38dbd36a7c580cce9b5b2059 100644 (file)
@@ -1,7 +1,7 @@
 /*
   audio-staff.hh -- declare Audio_staff
 
-  (c) 1996,  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #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*> audio_item_l_list_;
diff --git a/lily/include/axis-group-administration.hh b/lily/include/axis-group-administration.hh
deleted file mode 100644 (file)
index 7933590..0000000
+++ /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 <hanwen@stack.nl>
-*/
-
-
-#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<Graphical_element> 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
index f3bfb3f7025553a9f9074607f8916f7c4564b4e4..f1389deebdb33d28d018f6468f24ffeed92dd208 100644 (file)
@@ -3,34 +3,35 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #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<Score_elem> get_extra_dependencies() const;
+  virtual Link_array<Score_element> 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<Score_elem> 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<Score_element> elem_l_arr() const;
+  Axis_group_element(Axis,Axis);
+  Axis_group_element();  
+  virtual Link_array<Score_element> get_children ();
+
   DECLARE_MY_RUNTIME_TYPEINFO;
 };
 
index c61a0810201bc63fbb3c055cddff429c27c761eb..be1a78b6ca0fcf9955b2d8effc5a5ab67a9233c6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 64c2df98b2cd6bc964774969baf292ff4faa9618..15022e2d800c20110a4bb86b8d068724c7b1cd82 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/lily/include/bar-align-engraver.hh b/lily/include/bar-align-engraver.hh
new file mode 100644 (file)
index 0000000..a0ff903
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+  bar-align-engraver.hh -- declare 
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#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 (file)
index a6579db..0000000
+++ /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 <hanwen@stack.nl>
-*/
-
-
-#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 (file)
index 0000000..1c186b6
--- /dev/null
@@ -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 <hanwen@cs.uu.nl>
+*/
+
+
+#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<Script>  script_l_arr_;
+  int break_priority_i_;
+
+  Bar *bar_l_;
+  void create_column ();
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void process_acknowledged ();
+  virtual void do_pre_move_processing ();
+  virtual void do_creation_processing ();
+  virtual void do_process_requests ();
+  virtual void do_post_move_processing();
+public:
+  TRANSLATOR_CLONE(Bar_column_engraver);
+  Bar_column_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // BAR_COLUMN_GRAV_HH
diff --git a/lily/include/bar-column-grav.hh b/lily/include/bar-column-grav.hh
deleted file mode 100644 (file)
index 9e05898..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  bar-column-grav.hh -- declare Bar_column_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#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<Script>  script_l_arr_;
-
-  Bar *bar_l_;
-    
-protected:
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-public:
-  TRANSLATOR_CLONE(Bar_column_engraver);
-  Bar_column_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // BAR_COLUMN_GRAV_HH
index 84c32113eace328d2898d483459f3bfcb3556504..2db6cbe2640080fd5c32d8aa22363a3a813a8140 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -22,8 +22,8 @@ public:
     Bar_column();
     void set_bar (Bar*);
 protected:
-    SCORE_ELEM_CLONE(Bar_column);
-    void do_substitute_dependency (Score_elem*,Score_elem*);
+    SCORE_ELEMENT_CLONE(Bar_column);
+    void do_substitute_dependency (Score_element*,Score_element*);
     DECLARE_MY_RUNTIME_TYPEINFO;
 };
 
diff --git a/lily/include/bar-engraver.hh b/lily/include/bar-engraver.hh
new file mode 100644 (file)
index 0000000..151adf2
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+  bar-engraver.hh -- declare Bar_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef BARGRAV_HH
+#define BARGRAV_HH
+#include "engraver.hh"
+
+/**
+  generate bars. Either user ("|:"), or default (new measure)
+  */
+class Bar_engraver : public Engraver {
+  Bar_req * bar_req_l_;
+  Bar * bar_p_;
+
+  void create_bar ();
+public:
+  TRANSLATOR_CLONE(Bar_engraver);
+  Bar_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+
+     
+protected:
+  virtual void do_creation_processing ();
+  virtual void do_removal_processing ();
+  virtual bool do_try_request (Request *req_l);
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+};
+
+#endif // BARGRAV_HH
diff --git a/lily/include/bar-grav.hh b/lily/include/bar-grav.hh
deleted file mode 100644 (file)
index b513e3e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-  bar-grav.hh -- declare Bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef BARGRAV_HH
-#define BARGRAV_HH
-#include "engraver.hh"
-
-/**
-  generate bars. Either user ("|:"), or default (new measure)
-  */
-class Bar_engraver : public Engraver {
-  Bar_req * bar_req_l_;
-  Bar * bar_p_;
-
-  void create_bar ();
-public:
-  TRANSLATOR_CLONE(Bar_engraver);
-  Bar_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-
-     
-protected:
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
-  virtual bool do_try_request (Request *req_l);
-  virtual void do_process_requests();
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-};
-
-#endif // BARGRAV_HH
diff --git a/lily/include/bar-number-engraver.hh b/lily/include/bar-number-engraver.hh
new file mode 100644 (file)
index 0000000..69caa55
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+  bar-number-engraver.hh -- declare Bar_number_grav
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef BAR_NUMBER_GRAV_HH
+#define BAR_NUMBER_GRAV_HH
+
+#include "engraver.hh"
+
+/**
+  catch bars, and put a number over them.
+ */
+class Bar_number_engraver : public Engraver {
+  Script * script_p_;
+protected:
+
+  void acknowledge_element (Score_element_info);
+  void do_pre_move_processing();
+public:
+  TRANSLATOR_CLONE(Bar_number_engraver);
+  Bar_number_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+#endif // BAR_NUMBER_GRAV_HH
diff --git a/lily/include/bar-number-grav.hh b/lily/include/bar-number-grav.hh
deleted file mode 100644 (file)
index b57a804..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  bar-number-grav.hh -- declare Bar_number_grav
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef BAR_NUMBER_GRAV_HH
-#define BAR_NUMBER_GRAV_HH
-
-#include "engraver.hh"
-
-/**
-  catch bars, and put a number over them.
- */
-class Bar_number_engraver : public Engraver {
-  Script * script_p_;
-protected:
-
-  void acknowledge_element (Score_elem_info);
-  void do_pre_move_processing();
-public:
-  TRANSLATOR_CLONE(Bar_number_engraver);
-  Bar_number_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-#endif // BAR_NUMBER_GRAV_HH
index df39cea3893077da0331539ecb3cd1018c5972f3..c00677cc0fdb5d25d27c54633759d3012d20668e 100644 (file)
@@ -1,7 +1,7 @@
 /*
   bar.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef BAR_HH
@@ -17,13 +17,15 @@ public:
   String type_str_;
 
   DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Bar);
-  Bar();
-private:
-  void do_print() const;
+  SCORE_ELEMENT_CLONE (Bar);
+  Bar ();
+
 protected:
-  virtual void do_pre_processing();
-  Molecule*brew_molecule_p() const;
+  virtual void do_pre_processing ();
+  Molecule* brew_molecule_p () const;
+
+private:
+  void do_print () const;
 };
 #endif // BAR_HH
 
diff --git a/lily/include/beam-engraver.hh b/lily/include/beam-engraver.hh
new file mode 100644 (file)
index 0000000..ccb96d1
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+  beam-engraver.hh -- declare Beam_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef BEAM_GRAV_HH
+#define BEAM_GRAV_HH
+
+#include "engraver.hh"
+#include "drul-array.hh"
+
+/**
+  Generate a beam. Eats stems.
+ */
+class Beam_engraver : public Engraver
+{
+  Drul_array<Beam_req *> span_reqs_drul_;
+  Beam *beam_p_;
+  Rhythmic_grouping *current_grouping_p_;
+
+public:
+  TRANSLATOR_CLONE(Beam_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Beam_engraver();
+protected:
+  virtual void do_removal_processing();
+  virtual void do_process_requests();
+  virtual bool do_try_request (Request*);
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing();
+};
+
+#endif // BEAM_GRAV_HH
diff --git a/lily/include/beam-grav.hh b/lily/include/beam-grav.hh
deleted file mode 100644 (file)
index cbfe1bb..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-  beam-grav.hh -- declare Beam_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef BEAM_GRAV_HH
-#define BEAM_GRAV_HH
-
-#include "engraver.hh"
-#include "drul-array.hh"
-
-/**
-  Generate a beam. Eats stems.
- */
-class Beam_engraver : public Engraver
-{
-  Drul_array<Beam_req *> span_reqs_drul_;
-  Beam *beam_p_;
-  Rhythmic_grouping *current_grouping_p_;
-
-public:
-  TRANSLATOR_CLONE(Beam_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  Beam_engraver();
-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 do_pre_move_processing();
-};
-
-#endif // BEAM_GRAV_HH
index 760704fc50cfce0aa9f22b970f016d842185afdb..9165b6d813e66b5ea5ed96a11965d103d12a50f6 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index e4bad88c1caee13781d2ac97578eff4037ad654c..f6f59c8c9eb24f178eefdd837ee5966479073eb3 100644 (file)
@@ -1,7 +1,7 @@
 /*
   beam.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef BEAM_HH
@@ -21,6 +21,7 @@ public:
     especially at small slopes.
     */
   enum Quantisation { NONE, NORMAL, TRADITIONAL, TEST };
+  enum Dir_algorithm { /* DOWN=-1, UP=1, */ MAJORITY=2, MEAN, MEDIAN };
 
   Link_array<Stem> stems_;
   /// the slope of the beam in posns / point (dimension)   
@@ -40,11 +41,11 @@ public:
 
   DECLARE_MY_RUNTIME_TYPEINFO;
   Beam();
-  void add (Stem*);
+  void add_stem (Stem*);
 
   void set_grouping (Rhythmic_grouping def, Rhythmic_grouping current);
   void set_stemlens ();
-  SCORE_ELEM_CLONE (Beam);
+  SCORE_ELEMENT_CLONE (Beam);
 
 protected:
   virtual Interval do_width () const;    
@@ -52,7 +53,7 @@ protected:
   void set_default_dir ();
   virtual void do_pre_processing ();
   virtual void do_post_processing ();
-  virtual void do_substitute_dependent (Score_elem*, Score_elem*);
+  virtual void do_substitute_dependent (Score_element*, Score_element*);
 
   virtual void do_print() const;
 
index ea8c1ed00de0a24900d4f418af06ab93f5b470bf..80140377009c23682c838a9772dbb6d79991301d 100644 (file)
@@ -1,7 +1,7 @@
 /*
   bezier.hh -- declare Bezier and Bezier_bow
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef BEZIER_HH
@@ -47,7 +47,7 @@ public:
   Bezier_bow (Paper_def* paper_l);
 
   /**
-   Calculate bezier curve for bow from bow parameters.
+   Calculate bezier curve for bow from bow paratime_signatures.
    */
   void blow_fit ();
   void calc ();
index e7e3e912cc13ace2bc9ff0515288b45dade68775..107cff07892b91a1229bf4537a735b05278ac8d5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -32,6 +32,7 @@ protected:
   virtual Interval do_width () const;    
   Array<Offset> get_controls () const;
   virtual Array<Offset> get_encompass_offset_arr () const;
+  virtual Interval do_height () const;
 
   Drul_array<Real> dy_f_drul_;
   Drul_array<Real> dx_f_drul_;
diff --git a/lily/include/box.hh b/lily/include/box.hh
new file mode 100644 (file)
index 0000000..b26c6e3
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+    some 2D geometrical concepts
+*/
+
+#ifndef BOXES_HH
+#define BOXES_HH
+
+#include "fproto.hh"
+#include "real.hh"
+#include "interval.hh"
+#include "offset.hh"
+#include "axes.hh"
+
+
+struct Box {
+  Interval interval_a_[NO_AXES];
+    
+  Interval &x() {return interval_a_[X_AXIS]; }
+  Interval &y(){ return interval_a_[Y_AXIS]; }
+  Interval x() const{ return interval_a_[X_AXIS]; }
+  Interval y() const{return interval_a_[Y_AXIS]; }
+  Interval operator[](Axis a) const;
+  Interval &operator[] (Axis a);
+    
+  void translate (Offset o);
+  /// smallest box enclosing #b#
+  void unite (Box b);
+  Box();
+  Box (Interval ix, Interval iy);
+};
+
+
+#endif
diff --git a/lily/include/boxes.hh b/lily/include/boxes.hh
deleted file mode 100644 (file)
index 0e5addc..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-    some 2D geometrical concepts
-*/
-
-#ifndef BOXES_HH
-#define BOXES_HH
-
-#include "fproto.hh"
-#include "real.hh"
-#include "interval.hh"
-#include "offset.hh"
-#include "axes.hh"
-
-struct Box {
-  Interval interval_a_[NO_AXES];
-    
-  Interval &x() {return interval_a_[X_AXIS]; }
-  Interval &y(){ return interval_a_[Y_AXIS]; }
-  Interval x() const{ return interval_a_[X_AXIS]; }
-  Interval y() const{return interval_a_[Y_AXIS]; }
-  Interval operator[](Axis a) const;
-  Interval &operator[] (Axis a);
-    
-  void translate (Offset o);
-  /// smallest box enclosing #b#
-  void unite (Box b);
-  Box();
-  Box (Interval ix, Interval iy);
-};
-
-
-#endif
index 9d800f8ca6d89f6386fdcd2fa5cb483e40bd2e42..6b5a1e4014b46adc2e539923cfed4f28e816e148 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -19,7 +19,7 @@ protected:
     virtual void do_pre_processing();
 public:
     DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Break_align_item);
+    SCORE_ELEMENT_CLONE(Break_align_item);
        
 };
 #endif // BREAK_ALIGN_ITEM_HH
index 188360d0132c20abf74a39ebed9a4c0d84d3e7db..706c5c3dfcfd1ad84b552f9acd25679fc4bea406 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -16,7 +16,7 @@
 struct Break_caching : Break_algorithm
 {
     void do_set_pscore();
-    Array<Col_hpositions> do_solve() const;
+    Array<Column_x_positions> do_solve() const;
 };
 
     
index 4499686f1060e2818e47045fe0d23db0e03a1ab1..f3b3deb18b1b58de4aaa3481494d5e00809df993 100644 (file)
@@ -3,13 +3,13 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef BREAK_HH
 #define BREAK_HH
-#include "varray.hh"
+#include "array.hh"
 #include "interval.hh"
 #include "lily-proto.hh"
 #include "colhpos.hh"
@@ -47,10 +47,10 @@ protected:
     
 
   /// helper: solve for the columns in #curline#.
-  void solve_line (Col_hpositions*) const;
+  void solve_line (Column_x_positions*) const;
 
   /// helper: approximate the energyv
-  void approximate_solve_line (Col_hpositions*) const;
+  void approximate_solve_line (Column_x_positions*) const;
 
   /// does curline fit on the paper?    
   bool feasible (Line_of_cols) const;
@@ -58,7 +58,7 @@ protected:
 
   Line_spacer* generate_spacing_problem (Line_of_cols, Interval) const;
 
-  virtual Array<Col_hpositions> do_solve() const=0;
+  virtual Array<Column_x_positions> do_solve() const=0;
   virtual void do_set_pscore();
 
 public:
@@ -73,7 +73,7 @@ public:
   /// check if the spacing/breaking problem is well-stated
   void problem_OK() const;
   void OK() const;
-  Array<Col_hpositions> solve() const;
+  Array<Column_x_positions> solve() const;
 };
 
 #endif // BREAK_HH
diff --git a/lily/include/cf-basic.hh b/lily/include/cf-basic.hh
deleted file mode 100644 (file)
index d201ece..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*   
-  cf-basic.hh -- declare 
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-  
- */
-
-#ifndef CF_BASIC_HH
-#define CF_BASIC_HH
-#endif /* CF_BASIC_HH */
-
diff --git a/lily/include/cf-string.hh b/lily/include/cf-string.hh
deleted file mode 100644 (file)
index 8b13789..0000000
+++ /dev/null
@@ -1 +0,0 @@
-
index e4adf804e1944c75c8f1e363ae2ac5587535ffd6..a4d435be5b9b46f59c762b2091871778832f09ac 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 8c759717ed5d55697c04aae650c99f708dcd8d33..b369462ca2b5c1c9c383337e5076e1ea5f7db392 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0a3c9fa64a7e38f2c516aaed2b0e26de595e09ca..1dea4149614e7f38b2d95057d0350c261247bccc 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/lily/include/clef-engraver.hh b/lily/include/clef-engraver.hh
new file mode 100644 (file)
index 0000000..56c4fbc
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+  clef-engraver.hh -- declare Clef_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef CLEF_GRAV_HH
+#define CLEF_GRAV_HH
+
+#include "scalar.hh"
+#include "array.hh"
+#include "engraver.hh"
+#include "direction.hh"
+
+/// where is c-0 in the staff?
+class Clef_engraver : public  Engraver {
+  Clef_item *clef_p_;
+  Clef_change_req * clef_req_l_;
+  void create_clef();
+  void read_req (Clef_change_req*);
+  bool set_type (String);
+protected:
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+  virtual void do_removal_processing();
+  virtual void do_creation_processing();
+  virtual void do_post_move_processing();
+  virtual bool do_try_request (Request*);
+  virtual void acknowledge_element (Score_element_info);
+public:
+  TRANSLATOR_CLONE(Clef_engraver);
+  int c0_position_i_;
+  int clef_position_i_;
+  Direction octave_dir_;
+  String clef_type_str_;
+
+  /* ************** */
+   
+  Clef_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+   
+};
+#endif 
diff --git a/lily/include/clef-grav.hh b/lily/include/clef-grav.hh
deleted file mode 100644 (file)
index ec4702c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-  clef-grav.hh -- declare Clef_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef CLEF_GRAV_HH
-#define CLEF_GRAV_HH
-
-#include "scalar.hh"
-#include "varray.hh"
-#include "engraver.hh"
-#include "direction.hh"
-
-/// where is c-0 in the staff?
-class Clef_engraver : public  Engraver {
-  Clef_item *clef_p_;
-  Clef_change_req * clef_req_l_;
-  void create_clef();
-  void read_req (Clef_change_req*);
-  bool set_type (String);
-protected:
-  virtual void do_process_requests();
-  virtual void fill_staff_info (Staff_info&);
-  virtual void do_pre_move_processing();
-  virtual void do_removal_processing();
-  virtual void do_creation_processing();
-  virtual void do_post_move_processing();
-  virtual bool do_try_request (Request*);
-  virtual void acknowledge_element (Score_elem_info);
-public:
-  TRANSLATOR_CLONE(Clef_engraver);
-  int c0_position_i_;
-  Direction octave_dir_;
-  String clef_type_str_;
-
-  /* ************** */
-   
-  Clef_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-   
-};
-#endif 
index 3b82f9d426e77d994707d7cb8bca3033e752d883..54c5bf1a0ce268bacb747ebf74168ab18e515505 100644 (file)
@@ -1,7 +1,7 @@
 /*
   clef-item.hh -- declare Clef_item
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef CLEFITEM_HH
@@ -9,37 +9,36 @@
 #include "item.hh"
 #include "text-def.hh"
 #include "direction.hh"
+#include "pointer.hh"
 
 /**
   Set a clef in a staff.
  */
 class Clef_item : public Item {
 protected:
-    virtual void do_pre_processing();
-    Molecule* brew_molecule_p() const;
+  virtual void do_pre_processing();
+  virtual Molecule* brew_molecule_p() const;
 public:
     
-    String symbol_;
-    int y_position_i_;
+  String symbol_;
+  int y_position_i_;
 
-    /// is this a change clef (smaller size)?
-    bool change_b_;
+  /// is this a change clef (smaller size)?
+  bool change_b_;
     
-    /// set because of existence of a bar
-    bool default_b_;
-
-    /// should we print an octave symbol (8), and where? (up=1, down=1)?
-    Direction octave_dir_;
-
-    /// text def to put above/below clef (ugh: should be const)
-    Text_def * octave_marker_td_p_;
-  
-    /* *************** */
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Clef_item);
-    Clef_item();
-    void read (Clef_engraver const&);
-    void read (String);
+  /// set because of existence of a bar
+  bool default_b_;
+
+  /// should we print an octave symbol (8), and where? (up=1, down=-1)?
+  Direction octave_dir_;
+
+  /// text def to put above/below clef?
+  P<Text_def> octave_marker_td_p_;
+
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  SCORE_ELEMENT_CLONE(Clef_item);
+  Clef_item();
+  void read (Clef_engraver const&);
 };
 
 #endif // CLEFITEM_HH
index 49694352d091316dc5a67626e157925daf0e1942..a01afd3c746d30dbc3f34d6273028fd126590c60 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  col-info.hh -- declare Colinfo
+  col-info.hh -- declare Column_info
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -23,7 +23,7 @@ struct Spacer_rod {
 
 
 /// helper struct for #Spacing_problem#
-struct Colinfo {
+struct Column_info {
   Paper_column *pcol_l_;
   P<Real> fixpos_p_;
 
@@ -35,8 +35,8 @@ struct Colinfo {
   Drul_array< Array<Spacer_rod> > rods_;
   
   /* *************** */
-  Colinfo();
-  Colinfo (Paper_column *,Real const *);
+  Column_info();
+  Column_info (Paper_column *,Real const *);
 
   int rank_i () const;
   void print() const;
index 01a87167ba10fef873a082c095eba138f7949598..e46991dc33f33ad74bab582494d6fb3f5562ae08 100644 (file)
@@ -1,18 +1,18 @@
 /*
   colhpos.hh -- part of GNU LilyPond
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef COLHPOS_HH
 #define COLHPOS_HH
 
-#include "varray.hh"
+#include "array.hh"
 #include "lily-proto.hh"
 
 typedef Array<Paper_column*>  Line_of_cols;
 
-struct Col_hpositions {
+struct Column_x_positions {
   Line_spacer * spacer_l_;
   bool ugh_b_;
   Line_of_cols error_col_l_arr_;
@@ -23,15 +23,15 @@ struct Col_hpositions {
 
   /* ************** */
   void OK() const;
-  ~Col_hpositions();
+  ~Column_x_positions();
   void solve_line();
   void approximate_solve_line();
   /** generate a solution with no regard to idealspacings or
     constraints.  should always work */
   void stupid_solution();
   void set_stupid_solution (Vector);
-  Col_hpositions();
-  void add (Paper_column*c);
+  Column_x_positions();
+  void add_paper_column (Paper_column*c);
   void print() const;
 };
 
diff --git a/lily/include/collision-engraver.hh b/lily/include/collision-engraver.hh
new file mode 100644 (file)
index 0000000..d4a674f
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+  collision-engraver.hh -- declare Collision_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef COLLISION_GRAV_HH
+#define COLLISION_GRAV_HH
+
+#include "engraver.hh"
+
+class Collision_engraver : public Engraver {
+  Collision* col_p_;
+  Link_array<Note_column> note_column_l_arr_;
+
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void process_acknowledged ();
+  virtual void do_pre_move_processing();
+public:
+  TRANSLATOR_CLONE(Collision_engraver);
+  Collision_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+#endif // COLLISION_GRAV_HH
diff --git a/lily/include/collision-grav.hh b/lily/include/collision-grav.hh
deleted file mode 100644 (file)
index 6cf18d7..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  collision-grav.hh -- declare Collision_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef COLLISION_GRAV_HH
-#define COLLISION_GRAV_HH
-
-#include "engraver.hh"
-
-class Collision_engraver : public Engraver {
-  Collision* col_p_;
-
-protected:
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-public:
-  TRANSLATOR_CLONE(Collision_engraver);
-  Collision_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-#endif // COLLISION_GRAV_HH
index 9d47efb5139e42c5ec5798440e9f5d243eb44b12..9a7505163bc38867a7cdf46d852e71fb3bbb3c8b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 */
 class Collision : public Horizontal_vertical_group_item {
 protected:
-    virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+    virtual void do_substitute_dependency (Score_element*,Score_element*);
     virtual void do_pre_processing();
 public:
     Link_array<Note_column> clash_l_arr_;
     DECLARE_MY_RUNTIME_TYPEINFO;
-    void add (Note_column*ncol_l);
+    void add_column (Note_column*ncol_l);
     Collision();
 };
 #endif // COLLISION_HH
index 8085fd6621ef2807603dbd0e6cd6faac9a289917..3e187487f3895eee0d4dd0c9dc4fadac1b2fa07f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -11,7 +11,7 @@
 #define COMMANDREQUEST_HH
 
 #include "request.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "duration.hh"
 #include "musical-pitch.hh"
 
   musical requests. */
 class Command_req  : public virtual Request  {
 public:
-  REQUESTMETHODS(Command_req, command);
-  virtual Measure_grouping_req * measuregrouping() { return 0; }
-  virtual Clef_change_req * clefchange() { return 0; }
-  virtual Key_change_req * keychange() { return 0; }
-  virtual Partial_measure_req * partial() { return 0; }
-  virtual Meter_change_req * meterchange() { return 0; }
-  virtual Bar_req *bar() { return 0; }
-  virtual Cadenza_req *cadenza() { return 0; }
-  virtual Timing_req*timing() {  return 0; }
-  virtual Command_script_req*commandscript() { return 0;}
-  virtual Break_req *linebreak () { return 0; }
+  REQUESTMETHODS(Command_req);
+
+    DEFAULTACCESSOR(Measure_grouping_req)
+    DEFAULTACCESSOR(Clef_change_req)
+    DEFAULTACCESSOR(Key_change_req)
+    DEFAULTACCESSOR(Partial_measure_req)
+    DEFAULTACCESSOR(Time_signature_change_req)
+    DEFAULTACCESSOR(Bar_req)
+    DEFAULTACCESSOR(Cadenza_req)
+    DEFAULTACCESSOR(Timing_req)
+    DEFAULTACCESSOR(Command_script_req)
+    DEFAULTACCESSOR(Break_req)
+    DEFAULTACCESSOR(Mark_req)
 };
 
 
@@ -38,7 +40,14 @@ public:
   enum { DISALLOW = -10000, FORCE = 10000 };
   int penalty_i_;
   Break_req ();
-  REQUESTMETHODS (Break_req, linebreak);
+  REQUESTMETHODS (Break_req);
+};
+
+class Mark_req : public Command_req {
+public:
+  Mark_req (String);
+  String str_;
+  REQUESTMETHODS (Mark_req);
 };
 
 class Command_script_req : public Command_req,  public Script_req {
@@ -46,15 +55,15 @@ public:
   // huh? 
   Command_script_req();
   ~Command_script_req();
-  REQUESTMETHODS(Command_script_req, commandscript);
+  REQUESTMETHODS(Command_script_req);
 };
 
-/** Baseclass for meter/partial req. It has to be handled by
+/** Baseclass for time_signature/partial req. It has to be handled by
   Staff_{walker,column} baseclass.  */
 class Timing_req  : public Command_req  {
 public:
-  REQUESTMETHODS(Timing_req, timing);
-  virtual Tempo_req * tempo(){return 0; }
+  REQUESTMETHODS(Timing_req);
+  DEFAULTACCESSOR(Tempo_req)
 };
 
 
@@ -65,7 +74,7 @@ public:
   int metronome_i_;
 
   Tempo_req();
-  REQUESTMETHODS(Tempo_req, tempo);
+  REQUESTMETHODS(Tempo_req);
   bool do_equal_b (Request *) const;
 };
 
@@ -74,21 +83,20 @@ public:
   Moment duration_;
 
   Partial_measure_req (Moment);
-  REQUESTMETHODS(Partial_measure_req, partial);
+  REQUESTMETHODS(Partial_measure_req);
   bool do_equal_b (Request*) const;
 };
 
 /**
-  todo: allow C meter
+  todo: allow C time_signature
  */
-class Meter_change_req  : public Timing_req  {
+class Time_signature_change_req  : public Timing_req  {
 public:
   int beats_i_, one_beat_i_;
 
-  Meter_change_req();
-  void set (int,int);
+  Time_signature_change_req();
   bool do_equal_b (Request*) const;
-  REQUESTMETHODS(Meter_change_req, meterchange);
+  REQUESTMETHODS(Time_signature_change_req);
 };
 
 /// toggle Cadenza mode
@@ -98,14 +106,14 @@ public:
   bool on_b_;
   bool do_equal_b (Request*) const;
   Cadenza_req (bool);
-  REQUESTMETHODS(Cadenza_req,cadenza);
+  REQUESTMETHODS(Cadenza_req);
 };
 
 /// check if we're at start of a  measure.
 class Barcheck_req  : public Timing_req  {
 public:
   bool do_equal_b (Request *) const;
-  REQUESTMETHODS(Barcheck_req,barcheck);
+  REQUESTMETHODS(Barcheck_req);
 };
 
 class Measure_grouping_req : public Timing_req  {
@@ -113,7 +121,7 @@ public:
   Array<int> beat_i_arr_;
   Array<Moment> elt_length_arr_;
   bool do_equal_b (Request *) const;
-  REQUESTMETHODS(Measure_grouping_req, measuregrouping);
+  REQUESTMETHODS(Measure_grouping_req);
 };
 
 /** draw a (repeat)-bar. This something different than #Barcheck_req#,
@@ -124,7 +132,7 @@ public:
   Bar_req (String);
   bool do_equal_b (Request*) const;
 
-  REQUESTMETHODS(Bar_req,bar);
+  REQUESTMETHODS(Bar_req);
 };
 
 
@@ -137,11 +145,10 @@ class Key_change_req  : public Command_req  {
 public:
   Array<Musical_pitch> pitch_arr_;
   bool minor_b_;
+  bool ordinary_key_b_;
 
-  /// don't ignore the  octaves in #melodic_p_arr_#?
-  bool multi_octave_b_;
   Key_change_req();
-  REQUESTMETHODS(Key_change_req, keychange);
+  REQUESTMETHODS(Key_change_req);
 
   /// squash the octaves to 1
   void squash_octaves();
@@ -151,16 +158,16 @@ public:
   /// return number of sharps in key
   int sharps_i();
 
-  void transpose (Musical_pitch  d) const;
+  void transpose (Musical_pitch  d);
   /// is minor key?
-  int minor_b();
+  bool minor_b() const;
 };
 
 class Clef_change_req  : public Command_req  {
 public:
   String clef_str_;
   Clef_change_req (String);
-  REQUESTMETHODS(Clef_change_req, clefchange);
+  REQUESTMETHODS(Clef_change_req);
 };
 
 #endif // COMMANDREQUEST_HH
index 0b62f658102dde03cd4fb64e3c987c9c8a783ebc..02a311c60efdd1b2366609d3c9691ee9da90b107 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -24,7 +24,7 @@ public:
 
   Crescendo();
 protected:
-  SCORE_ELEM_CLONE(Crescendo);
+  SCORE_ELEMENT_CLONE(Crescendo);
   virtual Molecule*brew_molecule_p() const;
   virtual Interval symbol_height() const;
   DECLARE_MY_RUNTIME_TYPEINFO;
index a37be5c6690f7eff82744212512d0825cd149ea9..caa59895145701319df6310624685f9e69e2ab86 100644 (file)
@@ -1,7 +1,7 @@
 /*
   curve.hh -- declare point and curve
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef CURVE_HH
@@ -14,7 +14,7 @@
 #include "real.hh"
 
 #include "offset.hh"
-#include "varray.hh"
+#include "array.hh"
 
 class Curve : public Array<Offset>
 {
diff --git a/lily/include/dimen.hh b/lily/include/dimen.hh
deleted file mode 100644 (file)
index ac8267f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef DIMEN_HH
-#define DIMEN_HH
-
-#include "real.hh"
-#include "string.hh"
-
-const Real INCH_TO_PT=72.270;
-const Real CM_TO_PT=INCH_TO_PT/2.54;
-const Real MM_TO_PT=CM_TO_PT/10;
-const Real PT_TO_PT =1.0;
-
-#define PT  *PT_TO_PT
-#define MM  *MM_TO_PT
-#define CM  *CM_TO_PT
-#define INCH *INCH_TO_PT
-
-Real parse_dimen (String);
-String print_dimen (Real);
-Real convert_dimen (Real, String);
-#endif
-
diff --git a/lily/include/dimension.hh b/lily/include/dimension.hh
new file mode 100644 (file)
index 0000000..ac8267f
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef DIMEN_HH
+#define DIMEN_HH
+
+#include "real.hh"
+#include "string.hh"
+
+const Real INCH_TO_PT=72.270;
+const Real CM_TO_PT=INCH_TO_PT/2.54;
+const Real MM_TO_PT=CM_TO_PT/10;
+const Real PT_TO_PT =1.0;
+
+#define PT  *PT_TO_PT
+#define MM  *MM_TO_PT
+#define CM  *CM_TO_PT
+#define INCH *INCH_TO_PT
+
+Real parse_dimen (String);
+String print_dimen (Real);
+Real convert_dimen (Real, String);
+#endif
+
index 416b3fc33f1efc895a960f6df8b392231e422d26..8afa94ce43eefad662952bb06e7dd55a64c8d705 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 7854a348cea4184797ef3a0c5ef637401636825d..99594b12ce037a257f80e80502db4f34d9636594 100644 (file)
@@ -1,7 +1,7 @@
 /*
   directional-spanner.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef DIRECTIONALSPANNER_HH
diff --git a/lily/include/dot-column-engraver.hh b/lily/include/dot-column-engraver.hh
new file mode 100644 (file)
index 0000000..0454e41
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+  dot-column-engraver.hh -- declare Dot_column_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef DOT_COLUMN_GRAV_HH
+#define DOT_COLUMN_GRAV_HH
+
+#include "engraver.hh"
+
+class Dot_column_engraver : public Engraver
+{
+  Dot_column *dotcol_p_ ;
+  Link_array<Rhythmic_head> head_l_arr_;
+public:
+  TRANSLATOR_CLONE(Dot_column_engraver);
+  Dot_column_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing ();  
+};
+
+#endif // DOT_COLUMN_GRAV_HH
diff --git a/lily/include/dot-column-grav.hh b/lily/include/dot-column-grav.hh
deleted file mode 100644 (file)
index e2e3b66..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-  dot-column-grav.hh -- declare Dot_column_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef DOT_COLUMN_GRAV_HH
-#define DOT_COLUMN_GRAV_HH
-
-#include "engraver.hh"
-
-class Dot_column_engraver : public Engraver
-{
-  
-};
-
-#endif // DOT_COLUMN_GRAV_HH
index 9d8d5e552a4a679b8f591742c2b92995d7d3eb13..aa197cd7a327bdb69252f0ef786ef21420e720a9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -19,13 +19,14 @@ class Dot_column : public Horizontal_group_item
 {
   Link_array<Rhythmic_head> head_l_arr_;
   Link_array<Dots> dot_l_arr_;
-  void add (Dots*);
 
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
-  void add (Rhythmic_head*);
+  void add_head (Rhythmic_head*);
+  void add_dots (Dots*);
+
 protected:
   virtual void do_pre_processing ();
-  virtual void do_substitute_dependency (Score_elem *o, Score_elem*n);
+  virtual void do_substitute_dependency (Score_element *o, Score_element*n);
 };
 #endif // DOT_COLUMN_HH
index 846cf0364f4eafbdf5e936f51fe4a1a4b153969c..4c17ab42c100693e239b1bfb90d36c91907c7424 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 9169a5782876790a23bf02b7931c3da97d1a580f..efc611f76fb1d916757d8dbef443694623b507a3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/lily/include/dynamic-engraver.hh b/lily/include/dynamic-engraver.hh
new file mode 100644 (file)
index 0000000..1c2a574
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+  dynamic-engraver.hh -- declare Dynamic_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef DYNAMIC_GRAV_HH
+#define DYNAMIC_GRAV_HH
+
+#include "engraver.hh"
+
+class Dynamic_engraver : public Engraver {
+  Direction dir_;
+  Text_item * dynamic_p_;
+  Crescendo * to_end_cresc_p_;
+  Crescendo * cresc_p_;
+  Span_dynamic_req * cresc_req_l_;
+  Array<Dynamic_req*> dynamic_req_l_arr_;
+  /* ************** */
+public:
+  TRANSLATOR_CLONE(Dynamic_engraver);
+  Dynamic_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+  virtual void do_removal_processing ();
+  virtual void acknowledge_element (Score_element_info);
+  virtual bool do_try_request (Request *req_l);
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+};
+
+#endif // DYNAMIC_GRAV_HH
diff --git a/lily/include/dynamic-grav.hh b/lily/include/dynamic-grav.hh
deleted file mode 100644 (file)
index 29d3e2f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-  dynamic-grav.hh -- declare Dynamic_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef DYNAMIC_GRAV_HH
-#define DYNAMIC_GRAV_HH
-
-#include "engraver.hh"
-
-class Dynamic_engraver : public Engraver {
-  Direction dir_;
-  Text_item * dynamic_p_;
-  Crescendo * to_end_cresc_p_;
-  Crescendo * cresc_p_;
-  Span_dynamic_req * cresc_req_l_;
-  Array<Dynamic_req*> dynamic_req_l_arr_;
-  /* ************** */
-public:
-  TRANSLATOR_CLONE(Dynamic_engraver);
-  Dynamic_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-protected:
-  virtual void do_removal_processing ();
-  virtual void acknowledge_element (Score_elem_info);
-  virtual bool do_try_request (Request *req_l);
-  virtual void do_process_requests();
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-};
-
-#endif // DYNAMIC_GRAV_HH
index 6ad1d1d24371e35b7482a8f65b506afd77b163c3..d1092d98bd875fc7beed3067bef9b563287b512b 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef ELEM_GROUP_HH
 #define ELEM_GROUP_HH
 
-#include "score-elem.hh"
+#include "score-element.hh"
 #include "axis-group-element.hh"
 
 
index 6180ba36775ef48c79e9edb2fa1777c32df285f9..511a24404d96046e0f7a66dbf59485f3f799b5ec 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
index 125021cdf6122e088bea994d61709be35aa3c1bb..636842ce77c8e358ba57027d939085ceb7e4c629 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -13,7 +13,7 @@
 #include "lily-proto.hh"
 #include "parray.hh"
 #include "plist.hh"
-#include "score-elem-info.hh"
+#include "score-element-info.hh"
 #include "engraver.hh"
 #include "translator-group.hh"
 
@@ -26,7 +26,7 @@ class Engraver_group_engraver : public Engraver,
                                public virtual Translator_group
 {
 protected:
-  Array<Score_elem_info> announce_info_arr_;
+  Array<Score_element_info> announce_info_arr_;
 public:
   TRANSLATOR_CLONE(Engraver_group_engraver);
   Engraver_group_engraver();
@@ -36,7 +36,7 @@ public:
     
   virtual Staff_info get_staff_info() const;
   virtual void do_announces();
-  virtual void announce_element (Score_elem_info);
+  virtual void announce_element (Score_element_info);
 };
 
 #endif // ENGRAVERGROUP_HH
index f6b4f6bafa82b7cca2256b1f5e6cc1461a0a92d1..e6e5b7fe7665e4ece53207c6f559320c6421d17d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #define ENGRAVER_HH
 
 #include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "request.hh"
-#include "score-elem-info.hh"
+#include "score-element-info.hh"
 #include "staff-info.hh"
 #include "translator.hh"
 
 
 /**
-  a struct which processes requests, and creates the #Score_elem#s.
+  a struct which processes requests, and creates the #Score_element#s.
   It may use derived classes. Hungarian postfix: grav
   
   */
@@ -35,7 +35,7 @@ protected:
   /**
     Invoke walker method to typeset element. Default: pass on to daddy.
     */
-  virtual void typeset_element (Score_elem*elem_p);
+  virtual void typeset_element (Score_element*elem_p);
     
   /**
     take note of item/spanner
@@ -43,7 +43,7 @@ protected:
 
     Default: ignore the info
     */
-  virtual void acknowledge_element (Score_elem_info) {}
+  virtual void acknowledge_element (Score_element_info) {}
 
   /** Do things with stuff found in acknowledge_element. Ugh. Should
      be looped with acknowledge_element.
@@ -53,7 +53,7 @@ protected:
   /**
     Announce element. Default: pass on to daddy. Utility
     */
-  virtual void announce_element (Score_elem_info);
+  virtual void announce_element (Score_element_info);
    
   /**
     Get information on the staff. Default: ask daddy.
index 3d6df5e9d6884c9d6bc663fd8da8d33a5da76437..f4cf779c174e6124ec2731782b903c0dd79899d8 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -12,7 +12,7 @@
 #include "fproto.hh"
 
 void do_one_file (String init_str, String file_str);
-
+extern Header *header_global_p;
 extern Array<String> target_str_global_array;
 extern Array<String> inclusion_global_array;
 extern Link_array<Score> score_global_array;
diff --git a/lily/include/font-size-engraver.hh b/lily/include/font-size-engraver.hh
new file mode 100644 (file)
index 0000000..a108408
--- /dev/null
@@ -0,0 +1,27 @@
+/*   
+  font-size-engraver.hh -- declare Font_size_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef FONT_SIZE_GRAV_HH
+#define FONT_SIZE_GRAV_HH
+
+#include "engraver.hh"
+
+class Font_size_engraver : public Engraver {
+  int size_i_;
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void  do_process_requests ();
+public:
+  Font_size_engraver ();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  TRANSLATOR_CLONE (Font_size_engraver);
+};
+
+#endif /* FONT_SIZE_GRAV_HH */
+
index 024468e3436a3f4f2486a793a93ee669b7f8eb61..cc6b1e6adcb55c0cea200fd7a39831095a74e75c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index dddfacb0b2d1b4d1a9d451d957340c131ff03a9e..b4381eb70341e3b72a3d54a10ee2601623e94c6b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index f01df2384885b2bd63adbb3e9f4ddedced21aef7..cc5ed6c38558af9d531fc69f8f038b920b0c7cce 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -22,7 +22,7 @@ struct Gourlay_breaking : public Break_algorithm
     /// maximum number of measures in a line
     int max_measures_i_;
     void do_set_pscore();
-    Array<Col_hpositions> do_solve() const;
+    Array<Column_x_positions> do_solve() const;
     Gourlay_breaking();
 };
 #endif // GOURLAY_BREAKING_HH
diff --git a/lily/include/graphical-axis-group.hh b/lily/include/graphical-axis-group.hh
new file mode 100644 (file)
index 0000000..17ac4b9
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+  axis-group-administration.hh -- declare Graphical_axis_group
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef GRAPHICAL_AXIS_GROUP_HH
+#define GRAPHICAL_AXIS_GROUP_HH
+
+
+#include "parray.hh"
+#include "axes.hh"
+#include "real.hh"
+#include "lily-proto.hh"
+#include "graphical-element.hh"
+
+/**
+  Treat a group of graphical elements as an aggegrate.
+ */
+class Graphical_axis_group : public virtual Graphical_element {
+public:
+  Link_array<Graphical_element> elem_l_arr_;
+  Axis axis1_, axis2_;
+    
+  Interval extent (Axis) const;
+  virtual void do_print() const;
+  Graphical_axis_group (Graphical_axis_group const&);
+  Graphical_axis_group (Axis,Axis);
+  void remove_all ();
+
+  bool contains_b (Graphical_element const *) const;
+  void add_element (Graphical_element*);
+  void remove_element (Graphical_element*);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // Graphical_axis_group_HH
index 6dce57708b5e1f6dd23a55d9fb5cfc6f2e5bb468..3a57588a7d3e9162af42a1da6d23df9a4448cff2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -16,7 +16,7 @@
 #include "virtual-methods.hh"
 
 /** The 2d geometric aspects of a score-element.  It was put in a
-  separate class, because Score_elem got quite big.
+  separate class, because Score_element got quite big.
 
   */
 class Graphical_element 
@@ -27,24 +27,23 @@ class Graphical_element
    */
   bool empty_b_;
   
+  Offset offset_;
+  Interval cached_dimension_a_[NO_AXES];
+  bool cached_valid_b_a_[NO_AXES];
 public:
+
+  // suck me plenty
+  virtual Score_element* access_Score_element () { return 0; }
   void set_empty (bool);
+
   bool empty_b () const;
   
   DECLARE_MY_RUNTIME_TYPEINFO;
-  /**
-    This is  needed, because #output# may still be
-    NULL.
-    */
-  Offset offset_;
   
-  Axis_group_element * axis_group_l_a_[NO_AXES];
-  Interval cached_dimension_a_[NO_AXES];
-  bool cached_valid_b_a_[NO_AXES];
+  Graphical_axis_group * axis_group_l_a_[NO_AXES];
   
   Graphical_element ();
   Graphical_element (Graphical_element const&);
-  virtual ~Graphical_element ();
   
   void invalidate_cache (Axis);
   Interval extent (Axis) const;
@@ -61,16 +60,16 @@ public:
     
   void translate_axis (Real, Axis);
 
-  Real relative_coordinate (Axis_group_element*group, Axis) const;
+  Real relative_coordinate (Graphical_axis_group*group, Axis) const;
   Offset absolute_offset() const;
   Real absolute_coordinate (Axis) const;
   /**
     Find the group-element which has both #this# and #s#
    */
-  Axis_group_element*common_group (Graphical_element const* s, Axis a) const;
+  Graphical_axis_group*common_group (Graphical_element const* s, Axis a) const;
   void unlink ();
   void junk_links ();
-  void print () const;
+  virtual void do_print () const;
 protected:
   virtual Interval do_height () const=0;
   virtual Interval do_width () const=0;
index d88ed2876b5f0b8e9c4d3f7407b37818e6733d3e..b0bff2363d17563c0b140ffcff6976dd29d9a59f 100644 (file)
@@ -1,14 +1,14 @@
 /*
   grouping.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef GROUPING_HH
 #define GROUPING_HH
 
 #include "minterval.hh"
-#include "varray.hh"
+#include "array.hh"
 
 /** data structure which represents rhythmic units   this is a tree. It groupes notes according to rules
 
index 21ca5197d6f99648787534d177978feb717e9729..e1d21bcdc15e0fce55cd5df84aeca4c399d65556 100644 (file)
@@ -1,22 +1,22 @@
 /*
-  hara-kiri-line-group-grav.hh -- declare Hara_kiri_line_group_engraver
+  hara-kiri-line-group-engraver.hh -- declare Hara_kiri_line_group_engraver
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
 #ifndef HARA_KIRI_LINE_GROUP_GRAV_HH
 #define HARA_KIRI_LINE_GROUP_GRAV_HH
 
-#include "line-group-grav.hh"
+#include "line-group-group-engraver.hh"
 
 /**
   Just as Line_group_engraver, but won't disgrace Lily by typesetting 
   an empty line (for orchestral scores).
   */
-class Hara_kiri_line_group_engraver : public Line_group_engraver
+class Hara_kiri_line_group_engraver : public Line_group_engraver_group
 {
 public:
   TRANSLATOR_CLONE (Hara_kiri_line_group_engraver);
@@ -24,6 +24,7 @@ public:
 
 protected:
   virtual void create_line_spanner ();
+  void typeset_element (Score_element*);
 };
 
 
index d861e7c235f5433550d97535481144d9843fccd7..8492d976f687a35d96388f26f9e6cfa2c332ce68 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
@@ -20,14 +20,17 @@ class Hara_kiri_vertical_group_spanner : public Vertical_group_spanner
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
 
+  Hara_kiri_vertical_group_spanner ();
   virtual void do_post_processing ();
-  virtual void add_element (Graphical_element* e);
+  void add_note (Note_head* n);
 
 protected:
-  SCORE_ELEM_CLONE (Hara_kiri_vertical_group_spanner);
+  SCORE_ELEMENT_CLONE (Hara_kiri_vertical_group_spanner);
 
-  virtual void do_break_processing ();
-  virtual Molecule* brew_molecule_p () const;
+  virtual void do_substitute_dependency (Score_element*, Score_element*);
+  virtual void do_print ()const;
+
+  Link_array<Note_head> head_l_arr_;
 };
 
 
diff --git a/lily/include/head-engraver.hh b/lily/include/head-engraver.hh
new file mode 100644 (file)
index 0000000..0890183
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+  head-engraver.hh -- part of GNU LilyPond
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef HEADGRAV_HH
+#define HEADGRAV_HH
+#include "engraver.hh"
+
+/**
+  make balls and rests
+ */
+class Note_head_engraver : public Engraver {
+  Note_head* note_p_;
+  Dots * dot_p_;
+  Rhythmic_req * note_req_l_;
+    
+public:
+  TRANSLATOR_CLONE(Note_head_engraver);
+  Note_head_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+  virtual bool do_try_request (Request *req_l) ;
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+
+};
+
+
+#endif // HEADGRAV_HH
diff --git a/lily/include/head-grav.hh b/lily/include/head-grav.hh
deleted file mode 100644 (file)
index 8841f4e..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  head-grav.hh -- part of GNU LilyPond
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef HEADGRAV_HH
-#define HEADGRAV_HH
-#include "engraver.hh"
-
-/**
-  make balls and rests
- */
-class Note_head_engraver : public Engraver {
-  Note_head* note_p_;
-  Dots * dot_p_;
-  Rhythmic_req * note_req_l_;
-    
-public:
-  TRANSLATOR_CLONE(Note_head_engraver);
-  Note_head_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-protected:
-  virtual bool do_try_request (Request *req_l) ;
-  virtual void do_process_requests();
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-
-};
-
-
-#endif // HEADGRAV_HH
index 4877f396f61507cd9a8450297559639448025e1c..a6b37dba9f521ae5ca8a8c6facf7e363b8185eb0 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  header.hh -- declare 
+  header.hh -- declare Header
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #include "dictionary.hh"
 
 
+/** Store bibliographical information.  The information in the \header
+   block is read into this struct.  Lily does not process this
+   information.  */
 struct Header : Dictionary<String>
 {
   String lily_id_str_;
   String TeX_string() const;
+  Header ();
 };
 
 #endif // HEADER_HH
diff --git a/lily/include/heads-engraver.hh b/lily/include/heads-engraver.hh
new file mode 100644 (file)
index 0000000..c00d46f
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+  head-engraver.hh -- part of GNU LilyPond
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef HEADSGRAV_HH
+#define HEADSGRAV_HH
+#include "engraver.hh"
+
+/**
+  make balls and rests
+ */
+class Note_heads_engraver : public Engraver {
+  Link_array<Note_head> note_p_arr_;
+  Link_array<Dots> dot_p_arr_;
+  Link_array<Note_req> note_req_l_arr_;
+
+public:
+  TRANSLATOR_CLONE(Note_heads_engraver);
+  Note_heads_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+  virtual bool do_try_request (Request *req_l) ;
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+};
+
+
+#endif // HEADSGRAV_HH
index da0794d760e1b595f9a39978f20219fae6e84499..20ef3a43364d3797e462d1273a28393b0c0d57a1 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #define HORIZONTAL_ALIGN_ITEM_HH
 
 #include "item.hh"
+#include "align-element.hh"
 
 /**
   Order elems left to right.
 
-  
-
   TODO: insert (order, elem)
   */
-class Horizontal_align_item : public Item {
-protected:
-    Link_array<Item> item_l_arr_;
-    Array<int> priority_i_arr_;
-    
+class Horizontal_align_item : public Item , public Align_element {
 public:
-    Item * center_l_;
-    /**
-      Which side to align? 
-      -1: left side, 0: centered (around center_l_ if not nil), 1: right side
-     */
-    int align_i_;
-        
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Horizontal_align_item);
-    void add (Item*, int p);
-    Horizontal_align_item();
-protected:
-    
-    virtual void do_substitute_dependency (Score_elem * , Score_elem *);
-    /// do calculations before determining horizontal spacing
-    virtual void do_pre_processing();
-    virtual void do_print() const;
-    virtual Interval do_width() const;
-    bool contains_b (Item*) const;
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  SCORE_ELEMENT_CLONE(Horizontal_align_item);
+  void add_item (Item*, int p);
+  Horizontal_align_item();
+  virtual void do_print() const;
+
 };
 #endif // HORIZONTAL_ALIGN_ITEM_HH
diff --git a/lily/include/horizontal-group-elem.hh b/lily/include/horizontal-group-elem.hh
deleted file mode 100644 (file)
index db85158..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*   
-  horizontal-group-elem.hh -- declare 
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-  
- */
-
-#ifndef HORIZONTAL_GROUP_ELEM_HH
-#define HORIZONTAL_GROUP_ELEM_HH
-
-#include "axis-group-element.hh"
-
-/**
-  Treat a group of elements a unity in horizontal sense .
-  A column is a typical Vertical_group.
- */
-class Horizontal_group_element : public virtual Axis_group_element {
-protected:
-    virtual void remove_all();
-    virtual Interval do_width() const;
-
-public:
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    virtual void add_element (Graphical_element*);
-    virtual void remove_element (Graphical_element*);
-
-};
-
-
-#endif /* HORIZONTAL_GROUP_ELEM_HH */
-
diff --git a/lily/include/horizontal-group-element.hh b/lily/include/horizontal-group-element.hh
new file mode 100644 (file)
index 0000000..f3c5d58
--- /dev/null
@@ -0,0 +1,30 @@
+/*   
+  horizontal-group-element.hh -- declare Horizontal_group_element      
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef HORIZONTAL_GROUP_ELEM_HH
+#define HORIZONTAL_GROUP_ELEM_HH
+
+#include "axis-group-element.hh"
+
+/**
+  Treat a group of elements a unity in horizontal sense .
+  A column is a typical Vertical_group.
+ */
+class Horizontal_group_element : public virtual Axis_group_element {
+protected:
+  virtual Interval do_width() const;
+
+public:
+  Horizontal_group_element ();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+
+#endif /* HORIZONTAL_GROUP_ELEM_HH */
+
index d94e0df1a4291acf4cde10a52628c0110940ce91..8c6f9ea7b98c8afc5606e79456e1f5391dd6eb78 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef HORIZONTAL_GROUP_ITEM_HH
 #define HORIZONTAL_GROUP_ITEM_HH
 
-#include "horizontal-group-elem.hh"
+#include "horizontal-group-element.hh"
 #include "axis-group-item.hh"
 
 /**
@@ -18,7 +18,6 @@
  */
 class Horizontal_group_item : public Axis_group_item, public Horizontal_group_element {
 protected:
-  virtual void remove_all() { Horizontal_group_element::remove_all (); }
   virtual void do_unlink () { 
     Axis_group_item::do_unlink ();
   }
@@ -27,10 +26,9 @@ protected:
   }
   virtual void do_print() const;
 public:
-  virtual void add_element (Graphical_element*e) { Horizontal_group_element::add_element (e); }
-  virtual void remove_element (Graphical_element*e) { Horizontal_group_element::remove_element (e); }
+  Horizontal_group_item ();
   DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Horizontal_group_item);
+  SCORE_ELEMENT_CLONE(Horizontal_group_item);
 };
 
 #endif // HORIZONTAL_GROUP_ITEM_HH
diff --git a/lily/include/horizontal-vertical-group-elem.hh b/lily/include/horizontal-vertical-group-elem.hh
deleted file mode 100644 (file)
index ed4c3a7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*   
-  horizontal-vertical-group-elem.hh -- declare 
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-  
- */
-
-#ifndef HORIZONTAL_VERTICAL_GROUP_ELEM_HH
-#define HORIZONTAL_VERTICAL_GROUP_ELEM_HH
-
-#include "vertical-group-elem.hh"
-#include "horizontal-group-elem.hh"
-
-/** A class to treat a group of elements as a single entity. The
-  dimensions are the unions of the dimensions of what it contains.
-  Translation means translating the contents.
-  */
-class Horizontal_vertical_group_element : public Vertical_group_element, 
-                                 public Horizontal_group_element 
-{  
-protected:
-    virtual void remove_all();
-public:
-    virtual void add_element (Graphical_element*);
-    virtual void remove_element (Graphical_element*);
-    
-    DECLARE_MY_RUNTIME_TYPEINFO;    
-};
-
-
-#endif /* HORIZONTAL_VERTICAL_GROUP_ELEM_HH */
-
-
diff --git a/lily/include/horizontal-vertical-group-element.hh b/lily/include/horizontal-vertical-group-element.hh
new file mode 100644 (file)
index 0000000..520170b
--- /dev/null
@@ -0,0 +1,33 @@
+/*   
+  horizontal-vertical-group-element.hh -- declare Horizontal_vertical_group_element
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef HORIZONTAL_VERTICAL_GROUP_ELEM_HH
+#define HORIZONTAL_VERTICAL_GROUP_ELEM_HH
+
+#include "vertical-group-element.hh"
+#include "horizontal-group-element.hh"
+
+/** A class to treat a group of elements as a single entity. The
+  dimensions are the unions of the dimensions of what it contains.
+  Translation means translating the contents.
+  */
+class Horizontal_vertical_group_element : public Vertical_group_element, 
+                                         public Horizontal_group_element 
+{  
+protected:
+public:
+  Horizontal_vertical_group_element ();
+  
+  DECLARE_MY_RUNTIME_TYPEINFO;    
+};
+
+
+#endif /* HORIZONTAL_VERTICAL_GROUP_ELEM_HH */
+
+
index 50e1e9ef562564f5650992e127399ae67ac87eb1..2a6a0bf42503be3da3bb053f0818708743de3cbf 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -11,7 +11,7 @@
 #define HORIZONTAL_VERTICAL_GROUP_ITEM_HH
 
 #include "axis-group-item.hh"
-#include "horizontal-vertical-group-elem.hh"
+#include "horizontal-vertical-group-element.hh"
 
 
 /**
 class Horizontal_vertical_group_item  : public Axis_group_item, public Horizontal_vertical_group_element {
 protected:
   virtual void do_print() const;
-  virtual void remove_all() { Horizontal_vertical_group_element::remove_all (); }
   virtual void do_unlink () { Horizontal_vertical_group_element::do_unlink (); }
-  SCORE_HORIZONTAL_VERTICAL_CLONE(Horizontal_vertical_group_item);
+  SCORE_ELEMENT_CLONE(Horizontal_vertical_group_item);
 public:
-  virtual void add_element (Graphical_element*e) { Horizontal_vertical_group_element::add_element (e); }
-  virtual void remove_element (Graphical_element*e) { Horizontal_vertical_group_element::remove_element (e); }
+  Horizontal_vertical_group_item ();
 
   DECLARE_MY_RUNTIME_TYPEINFO;
 };
index 198b7e000b5f59f78df0de2b1561165dc58cd76f..20ff60fee5bf6f8673c096d13c0e9f5779f287b5 100644 (file)
@@ -1,7 +1,7 @@
 /*
   idealspacing.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef IDEALSPACING_HH
index 85a398ae0eb2bc8c9352f93653c76e8814722856..56898a043ee23d11d86f67776ecc36ffd1c50776 100644 (file)
@@ -1,7 +1,7 @@
 /*
   identifier.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef IDENTIFIER_HH
@@ -12,8 +12,8 @@
 #include "input.hh"
 #include "virtual-methods.hh"
 
-#define IDACCESSOR(Class, accessor)\
-virtual Class * accessor () const { error (#Class  + String ("_identifier")); return 0; }
+#define IDACCESSOR(Class)\
+virtual Class *  access_ ## Class (bool=true) const { error (#Class  + String ("_identifier")); return 0; }
 
 /**
    A declarable data structure in mudela. 
@@ -33,19 +33,19 @@ struct Identifier : public Input {
   DECLARE_MY_RUNTIME_TYPEINFO;
   void error (String) const;
   String str () const;
-  IDACCESSOR(Translator, translator)
-  IDACCESSOR(Music, music)
-  IDACCESSOR(General_script_def, script)
-  IDACCESSOR(Symtables, symtables)
-  IDACCESSOR(Midi_def, mididef)
-  IDACCESSOR(Paper_def, paperdef)
-  IDACCESSOR(Lookup,lookup)
-  IDACCESSOR(Real,real)
-  IDACCESSOR(String,string)
-  IDACCESSOR(Request, request)
-  IDACCESSOR(Score, score)
-  IDACCESSOR(int, intid)
-  IDACCESSOR(Duration, duration)
+  IDACCESSOR(Translator)
+  IDACCESSOR(Music)
+  IDACCESSOR(General_script_def)
+  IDACCESSOR(Symtables)
+  IDACCESSOR(Midi_def)
+  IDACCESSOR(Paper_def)
+  IDACCESSOR(Lookup)
+  IDACCESSOR(Real)
+  IDACCESSOR(String)
+  IDACCESSOR(Request)
+  IDACCESSOR(Score)
+  IDACCESSOR(int)
+  IDACCESSOR(Duration)
   VIRTUAL_COPY_CONS (Identifier, Identifier);
 
 protected:
@@ -53,33 +53,33 @@ protected:
   virtual String do_str () const;
 };
 
-#define DECLARE_ID_CLASS(Class, accessor)      \
+#define DECLARE_ID_CLASS(Class)        \
 struct Class ## _identifier : Identifier {\
                             Class *data_p_;                 \
                             DECLARE_MY_RUNTIME_TYPEINFO; \
                             Class ## _identifier (Class ## _identifier const&);\
                             Class ## _identifier (Class*st, int code);\
                             VIRTUAL_COPY_CONS (Class ## _identifier, Identifier);\
-                            virtual Class* accessor () const;\
+                            virtual Class* access_ ## Class (bool copy_b = true) const;\
                             ~Class ## _identifier();\
                             virtual void do_print () const; \
                             virtual String do_str () const; \
 }\
 
 
-DECLARE_ID_CLASS(Translator, translator);
-DECLARE_ID_CLASS(Duration, duration);
-DECLARE_ID_CLASS(Real, real);
-DECLARE_ID_CLASS(String, string);
-DECLARE_ID_CLASS(General_script_def, script);
-DECLARE_ID_CLASS(Lookup, lookup);
-DECLARE_ID_CLASS(Symtables, symtables);
-DECLARE_ID_CLASS(Music, music);
-DECLARE_ID_CLASS(int, intid);
-DECLARE_ID_CLASS(Score, score);
-DECLARE_ID_CLASS(Request, request);
-DECLARE_ID_CLASS(Paper_def, paperdef);
-DECLARE_ID_CLASS(Midi_def, mididef);
+DECLARE_ID_CLASS(Translator);
+DECLARE_ID_CLASS(Duration);
+DECLARE_ID_CLASS(Real);
+DECLARE_ID_CLASS(String);
+DECLARE_ID_CLASS(General_script_def);
+DECLARE_ID_CLASS(Lookup);
+DECLARE_ID_CLASS(Symtables);
+DECLARE_ID_CLASS(Music);
+DECLARE_ID_CLASS(int);
+DECLARE_ID_CLASS(Score);
+DECLARE_ID_CLASS(Request);
+DECLARE_ID_CLASS(Paper_def);
+DECLARE_ID_CLASS(Midi_def);
 
 #endif // IDENTIFIER_HH
 
index 9cf7087369832046e9946caea707284992c46baf..6837efc1f5fa1b44ae6d57095687062b2be5c500 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -13,7 +13,7 @@
 #include <FlexLexer.h>
 
 #include "string.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "fproto.hh"
 #include "proto.hh"
 
@@ -23,20 +23,26 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE;
 /**
   an yyFlexLexer child with provisions for inclusion.
  */
-class Includable_lexer : public yyFlexLexer {
+class Includable_lexer : public yyFlexLexer 
+{
   Array<YY_BUFFER_STATE> state_stack_;
+
 protected:
   bool  close_input ();
   Array<Source_file*> include_stack_;
   Array<int> char_count_stack_;
+
 public:
+  Includable_lexer ();
+  ~Includable_lexer ();
+
   /// store dependencies for Makefile stuff.
   Array<String> filename_str_arr_;
 
   Source_file* source_file_l () const;
-  void new_input (String s,Sources*);
-  Includable_lexer ();
-  ~Includable_lexer ();
+  void new_input (String s, Sources*);
+  void new_input (String name, String data, Sources*);
+
   void add_lexed_char (int);
   char const * here_ch_C ();
 };
index 3b23cb898f2d4a86df817911859fe1f913ec1c06..5686d9e361efa94fe244457aeeb7ea828647fa37 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0a20e7614844d1db6d35ff12b4cdfab90d579633..32010298298543c90cc93fc90593b9332cd673f5 100644 (file)
@@ -3,15 +3,15 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef ITEM_HH
 #define ITEM_HH
 
 
-#include "boxes.hh"
+#include "box.hh"
 #include "string.hh"
-#include "score-elem.hh"
+#include "score-element.hh"
 #include "drul-array.hh"
 
 /**
   spacing calculation. 
   
 */
-class Item : public virtual Score_elem {
+class Item : public virtual Score_element {
 public:
   Link_array<Spanner> attached_span_l_arr_;
   Drul_array<Item*> broken_to_drul_;
 
   /// should be put in a breakable col.
   bool breakable_b_;
-  Direction break_status_i_;
+  Direction break_status_dir_;
   int break_priority_i_;
   
   /// nobreak = 0, pre = -1, post = 1
-  int break_status_i() const;
+  Direction break_status_dir() const;
   Item * find_prebroken_piece (Direction) const;
   Item * find_prebroken_piece (Line_of_score*) const;    
 
-  virtual Item *item() { return this; }
+  virtual Item *access_Item() ;
   Item();
   Real hpos_f() const;
   DECLARE_MY_RUNTIME_TYPEINFO;
@@ -47,6 +47,8 @@ public:
   virtual Paper_column * column_l () const;
     
   static int left_right_compare (Item const *, Item const*);
+  
+  Item (Item const &);
 protected:
   virtual void do_unlink ();
   virtual void do_junk_links();
diff --git a/lily/include/key-engraver.hh b/lily/include/key-engraver.hh
new file mode 100644 (file)
index 0000000..ce154b1
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+  key-engraver.hh -- declare Key_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef KEYGRAV_HH
+#define KEYGRAV_HH
+
+#include "engraver.hh"
+#include "key.hh"
+#include "musical-pitch.hh"
+
+/**
+  Make the key signature.
+ */
+class Key_engraver : public Engraver {
+  void create_key();
+  void read_req (Key_change_req const * r);
+
+public:
+  Key_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  TRANSLATOR_CLONE(Key_engraver);
+  Key key_;
+  Key_change_req * keyreq_l_;
+  Key_item * kit_p_;
+  Array<Musical_pitch> accidental_idx_arr_;
+  Array<Musical_pitch> old_accidental_idx_arr_;
+  bool default_key_b_;
+  bool change_key_b_;
+    
+protected:
+  virtual bool do_try_request (Request *req_l);
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+  virtual void acknowledge_element (Score_element_info);
+};
+
+#endif // KEYGRAV_HH
diff --git a/lily/include/key-grav.hh b/lily/include/key-grav.hh
deleted file mode 100644 (file)
index b895af1..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-  key-grav.hh -- declare Key_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef KEYGRAV_HH
-#define KEYGRAV_HH
-
-#include "engraver.hh"
-#include "key.hh"
-
-/**
-  Make the key signature.
- */
-class Key_engraver : public Engraver {
-  void create_key();
-  void read_req (Key_change_req const * r);
-
-public:
-  Key_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  TRANSLATOR_CLONE(Key_engraver);
-  Key key_;
-  Key_change_req * keyreq_l_;
-  Key_item * kit_p_;
-  Array<int> accidental_idx_arr_;
-  bool default_key_b_;
-  bool change_key_b_;
-    
-protected:
-  virtual bool do_try_request (Request *req_l);
-  virtual void do_process_requests();
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-  virtual void acknowledge_element (Score_elem_info);
-};
-
-#endif // KEYGRAV_HH
index 3f4b7f30e067d962b82add51a2f885c102ad938b..9056db33b8761c2e813d93daba8c79145dd0b1e9 100644 (file)
@@ -1,34 +1,42 @@
 /*
   key-item.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef KEYITEM_HH
 #define KEYITEM_HH
 
 #include "item.hh"
-#include "varray.hh"
+#include "array.hh"
 
 
 /// An item which places accidentals at the start of the line
 struct Key_item : Item {
-    Array<int> pitch;
-    Array<int> acc;
-    int c_position;
-    bool default_b_;
-
+  Array<int> pitch;
+  Array<int> acc;
+  Array<int> old_pitch;
+  Array<int> old_acc;
+  int c_position;
+  int c0_position;
+  bool default_b_;
+  bool multi_octave_b_;
     
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Key_item);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  SCORE_ELEMENT_CLONE(Key_item);
+
+  Key_item ();
+  void add (int pitch, int acc);
+  void add (const Musical_pitch&);
+  void add_old (int pitch, int acc);
+  void add_old (const Musical_pitch&);
+  void read (const Key_engraver&);
+  void set_c_position (int);
+  int Key_item::calculate_position(int p, int a) const;
 
-    Key_item (int cposition);
-    void add (int pitch, int acc);
-    void read (const Key_engraver&);
-    void set_c_position (int);
 protected:
-    virtual void do_pre_processing();
-    Molecule* brew_molecule_p() const;
+  virtual void do_pre_processing();
+  Molecule* brew_molecule_p() const;
 };
 
 #endif // KEYITEM_HH
index f76b9e11fde996e2408fdfd8c72f39a6f61e879b..406ae94aebacf46ea634828868ca641c66c4a531 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef KEY_PERFOMER_HH
index 90c14792353fc710aa69f8f7d1d0e12bf537803b..b00b1723c12a8c6e0d47fbc764c6fa71ce7e8ca0 100644 (file)
@@ -1,13 +1,13 @@
 /*
   key.hh -- declare Key, Octave_key
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef KEY_HH
 #define KEY_HH
 
-#include "varray.hh"
+#include "array.hh"
 #include "scalar.hh"
 #include "lily-proto.hh"
 
index 4b40a979fcfc85a1f0bf986bcca23593721ab05a..1f01b93d60dbdca2ddfc190e258d110a441f8d96 100644 (file)
@@ -1,7 +1,7 @@
 /*
   keyword.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef KEYWORD_HH
index c813f36bc465a2a03b89348a954e5e854e25f62c..63f88b6097474b5baa8312a4f95b29e1588045dd 100644 (file)
@@ -1,12 +1,12 @@
 /*
   leastsquare.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef LEASTSQUARE_HH
 #define LEASTSQUARE_HH
-#include "varray.hh"
+#include "array.hh"
 #include "offset.hh"
 
 
index 319f0544323f30a40d40343023f024aa191d9157..d84e7bc27c61451cb3dcda5cd5ad39da33f57819 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef LILY_PROTO_HH
@@ -25,7 +25,7 @@ struct Audio_element;
 struct Audio_column;
 struct Audio_item;
 struct Audio_key;
-struct Audio_meter;
+struct Audio_time_signature;
 struct Audio_note;
 struct Audio_note_off;
 struct Performance;
@@ -55,9 +55,9 @@ struct Clef_change_req;
 struct Clef_item;
 struct Clef_engraver;
 struct Clef_performer;
-struct Col_hpositions;
+struct Column_x_positions;
 struct Chord;
-struct Colinfo;
+struct Column_info;
 struct Collision;
 struct Collision_engraver;
 struct Command_req;
@@ -76,6 +76,8 @@ struct Element_group;
 struct Element_group_item;
 struct General_script_def;
 struct Graphical_element;
+struct Graphical_axis_group;
+struct Mark_req;
 struct Music_output;
 struct Musical_pitch;
 struct Music_output_def;
@@ -115,16 +117,16 @@ struct Lyric_req;
 struct My_lily_lexer;
 struct Measure_grouping_req;
 struct Melodic_req;
-struct Meter;
-struct Meter_change_req;
-struct Meter_engraver;
-struct Meter_performer;
+struct Time_signature;
+struct Time_signature_change_req;
+struct Time_signature_engraver;
+struct Time_signature_performer;
 struct Midi_def;
 struct Midi_duration;
 struct Midi_header;
 struct Midi_item;
 struct Midi_key;
-struct Midi_meter;
+struct Midi_time_signature;
 struct Midi_note;
 struct Midi_note_event;
 struct Midi_note_off;
@@ -164,13 +166,12 @@ struct Plet;
 struct Plet_engraver;
 struct Plet_req;
 struct Plet_spanner;
-struct Pulk_voice;
-struct Pulk_voices;
 struct Rational;
 struct Music_wrapper_iterator;
 struct Music_wrapper;
 struct Relative_octave_music;
 struct Engraver_group_engraver;
+struct Piano_brace;
 struct Performer;
 struct Performer_group_performer;
 struct Property_iterator;
@@ -190,8 +191,8 @@ struct Scope;
 struct Separating_group_spanner;
 struct Score;
 struct Score_column;
-struct Score_elem;
-struct Score_elem_info;
+struct Score_element;
+struct Score_element_info;
 struct Score_performer;
 struct Script;
 struct Script_column;
@@ -203,11 +204,14 @@ struct Skip_req;
 struct Slur;
 struct Slur_engraver;
 struct Slur_req;
-struct Spacing_req ;
+struct Spacing_req;
+struct Span_bar;
+struct Span_score_bar;
 struct Span_dynamic_req;
 struct Span_req;
 struct Spanner;
 struct Spring_spacer;
+struct Staff_bracket;
 struct Staff_performer;
 struct Staff_side;
 struct Staff_symbol;
@@ -215,12 +219,10 @@ struct Stem;
 struct Stem_beam_engraver;
 struct Stem_req;
 struct String;
-struct Subtle_req;
 struct Atom;
 struct Symtable;
 struct Symtables;
 struct Super_elem;
-struct Terminate_voice_req;
 struct Translation_property;
 struct Tempo_req;
 struct Tex_stream;
@@ -241,14 +243,10 @@ struct Vertical_group_element;
 struct Vertical_group_spanner;
 struct Vertical_align_spanner;
 struct Vertical_align_engraver;
-struct Vertical_align_element;
+struct Align_element;
 struct Voice;
 struct Request_chord;
-struct Voice_group_engravers;
 struct Voice_group_performer;
 struct Voice_list;
-struct Voice_engravers;
-struct Voicegroup;
-struct Walker_engravers;
 typedef Rational Moment;
 #endif // LILY_PROTO_HH
diff --git a/lily/include/line-group-grav.hh b/lily/include/line-group-grav.hh
deleted file mode 100644 (file)
index f6d4e6b..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-  line-group-grav.hh -- declare Line_group_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef LINE_GROUP_GRAV_HH
-#define LINE_GROUP_GRAV_HH
-
-#include "engraver.hh"
-#include "lily-proto.hh"
-
-/**
-  Engravers put elements on the same or lowel level in a line
-  */
-class Line_group_engraver : public Engraver{
-protected:
-
-  Vertical_group_spanner *staffline_p_;   
-
-
-  virtual void create_line_spanner ();
-  virtual void do_creation_processing();
-  virtual void do_removal_processing();
-  virtual void acknowledge_element (Score_elem_info);
-
-public:
-  TRANSLATOR_CLONE(Line_group_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  Line_group_engraver();
-};
-
-
-#endif // LINE_GROUP_GRAV_HH
-
diff --git a/lily/include/line-group-group-engraver.hh b/lily/include/line-group-group-engraver.hh
new file mode 100644 (file)
index 0000000..c31fc75
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+  line-group-engraver.hh -- declare Line_group_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef LINE_GROUP_GRAV_HH
+#define LINE_GROUP_GRAV_HH
+
+#include "engraver-group.hh"
+#include "lily-proto.hh"
+
+/**
+  Engravers put elements on the same or lowel level in a line
+  */
+class Line_group_engraver_group : public Engraver_group_engraver {
+protected:
+  Vertical_group_spanner *staffline_p_;   
+
+  virtual void create_line_spanner ();
+  virtual void do_creation_processing();
+  virtual void do_removal_processing();
+  virtual void typeset_element (Score_element*);
+virtual void do_announces ();
+
+public:
+  TRANSLATOR_CLONE(Line_group_engraver_group);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Line_group_engraver_group();
+};
+
+
+#endif // LINE_GROUP_GRAV_HH
+
diff --git a/lily/include/line-of-score.hh b/lily/include/line-of-score.hh
new file mode 100644 (file)
index 0000000..894b39a
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+  scoreline.hh -- part of GNU LilyPond
+
+  (c) 1996--1998 Han-Wen Nienhuys
+*/
+
+#ifndef SCORELINE_HH
+#define SCORELINE_HH
+
+#include "colhpos.hh"
+#include "spanner.hh"
+
+/// the columns of a score that form one line.
+class Line_of_score : public Spanner 
+{
+public:
+  Link_array<Paper_column> cols;
+  bool error_mark_b_;
+
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Line_of_score();
+    
+  void add_element (Score_element *);
+
+  /// is #c# contained in #*this#?
+  bool contains_b (Paper_column const *c) const;
+    
+  Link_array<Line_of_score> get_lines() const;
+  void set_breaking (Array<Column_x_positions> const&);
+
+protected:
+  virtual Link_array<Score_element> get_extra_dependencies () const;
+
+  virtual void do_unlink ();
+  virtual void do_junk_links ();
+  virtual void break_into_pieces (bool);
+  virtual Interval do_width() const;
+  virtual void do_print() const;
+  SCORE_ELEMENT_CLONE(Line_of_score);
+};
+
+#endif
+
index 1bc88f52c2df68e8143860e38080825ad9adff4f..a61ac4d9e84e7feb7dd7e38ae1d21b955ba27e83 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef LINE_SPACER_HH
 #define LINE_SPACER_HH
 #include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "vector.hh"
 #include "interval.hh"
 
@@ -31,13 +31,13 @@ public:
     
   /** solve the spacing problem
    */
-  virtual void solve (Col_hpositions *) const=0;
+  virtual void solve (Column_x_positions *) const=0;
 
   /**
     Approximate the spacing problem:
     return a lower bound on the energy
     */
-  virtual void lower_bound_solution (Col_hpositions *) const=0;
+  virtual void lower_bound_solution (Column_x_positions *) const=0;
     
   /** add a col to the problem. columns have to be added left to
     right. The column contains info on it's minimum width.  */
index 08eefad8230e3f17ac6b387a694bda05e00b83ff..c0648e8b26732320cee2ae416239d3d808af8c37 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index a468fad24f1e732fc9884fda408a520d20795c72..8b230ff5161035ef9c9c1518678e5380f814b0ea 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  linespace.hh -- declare Colinfo, Spacing_problem
+  linespace.hh -- declare  Spacing_problem
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #error
@@ -12,7 +12,7 @@
 #define LINESPACE_HH
 
 #include "plist.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "vector.hh"
 #include "interval.hh"
 #include "pointer.hh"
@@ -42,8 +42,8 @@
 */
 class Spacing_problem {
     PointerList<Idealspacing *> ideal_p_list_;
-    Array<Colinfo> cols;
-    Array<Colinfo> loose_col_arr_;
+    Array<Column_info> cols;
+    Array<Column_info> loose_col_arr_;
     
     /// mark column #i# as being loose.
     void loosen_column (int i);
@@ -81,7 +81,7 @@ public:
     Array<Paper_column*> error_pcol_l_arr() const;
 
     virtual   Array<Real> solve() const;
-    virtual  void add_column (Paper_column  *, bool fixed=false, Real fixpos=0.0);
+    virtual void add_column (Paper_column  *, bool fixed=false, Real fixpos=0.0);
  
 
     virtual Vector default_solution() contains { 
diff --git a/lily/include/local-key-engraver.hh b/lily/include/local-key-engraver.hh
new file mode 100644 (file)
index 0000000..7599d08
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+  local-key-engraver.hh -- declare Local_key_engraver
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef LOCALKEYGRAV_HH
+#define LOCALKEYGRAV_HH
+
+#include "engraver.hh"
+#include "key.hh"
+#include "parray.hh"
+
+struct Local_key_engraver : Engraver {
+    Local_key_item *key_item_p_;
+protected:
+  TRANSLATOR_CLONE(Local_key_engraver);
+  virtual void do_process_requests();
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing();
+  virtual void do_creation_processing ();
+  virtual void process_acknowledged ();
+public:
+  
+  Key local_key_;
+  Key const *key_C_;
+  Array<Note_req* > mel_l_arr_;
+  Array<Item* > support_l_arr_;
+  Link_array<Item  > forced_l_arr_;
+  Link_array<Item > tied_l_arr_;
+  Local_key_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // LOCALKEYGRAV_HH
diff --git a/lily/include/local-key-grav.hh b/lily/include/local-key-grav.hh
deleted file mode 100644 (file)
index b61446b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-  local-key-grav.hh -- declare Local_key_engraver
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef LOCALKEYGRAV_HH
-#define LOCALKEYGRAV_HH
-
-#include "engraver.hh"
-#include "key.hh"
-#include "parray.hh"
-
-struct Local_key_engraver : Engraver {
-    Local_key_item *key_item_p_;
-protected:
-  TRANSLATOR_CLONE(Local_key_engraver);
-  virtual void do_process_requests();
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-  virtual void do_creation_processing ();
-  virtual void process_acknowledged ();
-public:
-  
-  Key local_key_;
-  Key const *key_C_;
-  Array<Note_req* > mel_l_arr_;
-  Array<Item* > support_l_arr_;
-  Link_array<Item  > forced_l_arr_;
-  Link_array<Item > tied_l_arr_;
-  Local_key_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // LOCALKEYGRAV_HH
index ec41cb3a54252b3399026858b4aeaa4c50faea89..d08ca2b4905faed98be685b7addff73b924e9d00 100644 (file)
@@ -1,13 +1,13 @@
 /*
   local-key-item.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef LOCALKEYITEM_HH
 #define LOCALKEYITEM_HH
 #include "item.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "musical-pitch.hh"
 
 /**
@@ -26,16 +26,14 @@ public:
     DECLARE_MY_RUNTIME_TYPEINFO;
     Array<Musical_pitch> accs;
     Link_array<Item> support_items_;
-    int c0_position;
-
-
+    int c0_position_i_;
     
-    Local_key_item (int c0position);
+    Local_key_item ();
     void add_support (Item*);
     void add (Musical_pitch);
 protected:
     virtual void do_pre_processing();    
-    virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+    virtual void do_substitute_dependency (Score_element*,Score_element*);
     virtual Molecule* brew_molecule_p() const;
 };
 #endif // LOCALKEYITEM_HH
index 292363bb9c056cae9ef0fd598278d1906806d94f..763beb8d42f60762fa3a698018c032a50c687b70 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef LOOKUPSYMS_HH
 #include "scalar.hh"
 #include "direction.hh"
 #include "curve.hh"
+#include "afm.hh"
 
 /** handy interface to symbol table
  */
 struct Lookup {
   Paper_def * paper_l_;
   Symtables *symtables_p_;
-  String texsetting;
-
+  String font_;
+  String font_path_;  
+  Adobe_font_metric * afm_p_;
+  
+  
   Lookup();
   Lookup (Lookup const &);
   ~Lookup();
   
   void add (String, Symtable*);
   void print() const;
+  Atom afm_find (String) const; 
 
   Atom fill (Box b) const;
-  Atom beam_element (int,int,Real=0) const;
-
   Atom beam (Real,Real, Real) const;
   Atom ps_beam (Real, Real, Real) const;
-
   Atom streepje (int type) const;
-
   Atom vbrace (Real &dy) const;
   Atom vbracket (Real &dy) const;
-  Atom meter (Array<Scalar>) const;
+  Atom time_signature (Array<Scalar>) const;
   Atom stem (Real y1_pos, Real y2_pos) const;
   Atom rule_symbol (Real height, Real width) const;
   Atom accidental (int) const;
@@ -48,12 +49,11 @@ struct Lookup {
   Atom rest (int, bool outside) const;
   Atom clef (String) const;
   Atom bar (String, Real height) const;
-    
   Atom dots () const;
   Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
   Atom slur (Array<Offset> controls) const;
   Atom plet (Real dy, Real dx, Direction dir) const;
-  Atom text (String style, String text, int align = 1) const;
+  Atom text (String style, String text) const;
   Atom script (String idx) const;
   Atom hairpin (Real width, bool decresc, bool continued) const;
   Atom dynamic (String) const;
index 195e4f92dca6fbaf6bdb5a6bf8a05b9cbdd9ad49..ec85670f73ce1b7e65d29454e7dccad2507f1d3c 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef LYRIC_ENGRAVER_HH
 #define LYRIC_ENGRAVER_HH
 #include "engraver.hh"
-#include "varray.hh"
+#include "array.hh"
 
 #include "lily-proto.hh"
 
index 2660f890021e0c329e5eec18f061621904d33162..29a5f92390160778e235800a20f1dd40dde73cd0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
@@ -12,7 +12,7 @@
 
 #include "lily-proto.hh"
 #include "performer.hh"
-#include "varray.hh"
+#include "array.hh"
 
 class Lyric_performer : public Performer {
 public:
index b96b62df56a8ab2521f4d17d4425210b3b85fa04..da5e0a53ef9822c32e46cc8167937a3ff02e3e24 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef MAIN_HH
 #define MAIN_HH
@@ -17,7 +17,6 @@ void add_score (Score* s);
 void set_default_output (String s);
 String find_file (String);
 String get_version_str();
-String get_version_number_str();
 void call_constructors ();
 extern Sources* source_global_l;
 extern bool no_paper_global_b;
@@ -28,9 +27,12 @@ extern bool experimental_features_global_b;
 extern bool dependency_global_b;
 extern bool version_ignore_global_b;
 
+
 extern Array<String> get_inclusion_names ();
 extern void set_inclusion_names (Array<String>);
 
+extern File_path global_path;
+
 extern String default_outname_base_global;
 extern String default_outname_suffix_global;
 extern int default_count_global;
diff --git a/lily/include/meter-grav.hh b/lily/include/meter-grav.hh
deleted file mode 100644 (file)
index 3abe462..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  meter-grav.hh -- declare  Meter_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef METERGRAV_HH
-#define METERGRAV_HH
-#include "engraver.hh"
-#include "time-description.hh"
-#include "grouping.hh"
-
-/**
-  generate meters. 
-  */
-class Meter_engraver : public Engraver {
-protected:
-  virtual void do_process_requests();
-  virtual void do_pre_move_processing();
-public:
-  TRANSLATOR_CLONE(Meter_engraver);
-  Meter * meter_p_;
-
-  Meter_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-#endif // METERGRAV_HH
diff --git a/lily/include/meter-performer.hh b/lily/include/meter-performer.hh
deleted file mode 100644 (file)
index f3fe174..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-  meter-performer.hh -- declare Meter_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
-*/
-
-#ifndef METER_PERFOMER_HH
-#define METER_PERFOMER_HH
-
-#include "lily-proto.hh"
-#include "performer.hh"
-
-class Meter_performer : public Performer {
-public:
-  TRANSLATOR_CLONE(Meter_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  Meter_performer();
-  ~Meter_performer();
-
-protected:
-  void do_print() const;
-  virtual bool do_try_request (Request* req_l);
-  virtual void do_process_requests();
-
-private:
-  Meter_change_req* meter_req_l_;
-};
-
-#endif // METER_PERFOMER_HH
diff --git a/lily/include/meter.hh b/lily/include/meter.hh
deleted file mode 100644 (file)
index 8347b3f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  meter.hh -- declare Meter
-
-  (c) 1996,97 Han-Wen Nienhuys
-*/
-
-#ifndef METER_HH
-#define METER_HH
-#include "item.hh"
-#include "varray.hh"
-#include "scalar.hh"
-
-/**
-  TODO:
-
-  C style meters, 2+3+2/8 meters, alla breve.
-  
- */
-class Meter: public Item {
-    Array<Scalar> args;
-    /* *************** */
-protected:
-    Molecule*brew_molecule_p() const;
-public:
-    Meter (Array<Scalar> args) ;
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Meter);
-};
-#endif // METER_HH
-
index 98951c10f17401cedd01df3a55839022a15b2d82..dcf0a9819dc7e7806e22b48a331b59584ec05ce4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index ca89bacec17cb4722dfb1cd45e37f81336b9f583..dc40138d137a46b7d0ddcf152d3a8b9f8ce57348 100644 (file)
@@ -1,7 +1,7 @@
 /*
   midi-item.hh -- declare Midi items
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef MIDI_ITEM_HH
@@ -96,10 +96,10 @@ struct Midi_key : public Midi_item {
   virtual String str () const;
 };
 
-struct Midi_meter : Midi_item {
+struct Midi_time_signature : Midi_item {
 
   DECLARE_MY_RUNTIME_TYPEINFO;
-  Midi_meter (Audio_item* audio_item_l); 
+  Midi_time_signature (Audio_item* audio_item_l); 
   
   virtual String str () const;
   int clocks_per_1_i_;
index f3a3781ed3c72662ae7136cee87c411745012a75..464bfba9e6756b3d8cae3546d1210c41e2d59805 100644 (file)
@@ -1,7 +1,7 @@
 /*
   midi-stream.hh -- declare Midi_stream
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef MIDI_STREAM_HH
index c7a20f76ace44ee60a397c26da9ae26c9336799f..3be3395e621f2a75b9530708b4380a0788fdadb5 100644 (file)
@@ -1,8 +1,8 @@
 /*
   midi-walker.hh -- declare Midi_walker
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys  <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys  <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef MIDI_WALKER_HH
index bb56394a7d40221c63f3c96ffa6ad8266dfaab63..e7f2cf605ae72b7758a158cdb7590f16c2c58580 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 35a10dfaf94e264457525fe83d2d6c58f69b378c..e659602e991497492d17a7611972426150918e2d 100644 (file)
@@ -1,18 +1,23 @@
 #ifndef MISC_HH
 #define MISC_HH
 
+#include <stdlib.h>
+
 #include "real.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "interval.hh"
 
 double log_2(double x) ;
 int intlog2(int d);
-#if ! defined(_ABS_)
+
+#if 0
+                               // defined in real.hh
 inline int
 abs (int i){
     return (i < 0)?-i:i;
 }
 #endif
+
 inline int
 sign (int i) {
     if (i<0) return -1;
@@ -25,6 +30,7 @@ sign (int i) {
 Interval itemlist_width (const Array<Item*> &its);
 #endif
 
+void set_frobnify (void*, size_t);
 int get_lower_bound (Array<Real> const& positions, Real x);
 Slice get_bounds_slice (Array<Real> const& positions, Real x);
 Interval get_bounds_iv (Array<Real> const& positions, Real x);
index 3faccc45f8ec84e2f6a427d1dc145c6c0e691a90..f8edc37c2520b6fa1b1c731eda0949848f35b905 100644 (file)
@@ -3,37 +3,36 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef MOLECULE_HH
 #define MOLECULE_HH
 
 #include "lily-proto.hh"
 #include "plist.hh"
-#include "boxes.hh"
+#include "box.hh"
 #include "axes.hh"
 #include "direction.hh"
 
 /** a group of individually translated symbols. You can add molecules
     to the top, to the right, etc.  */
 struct Molecule {
-  Pointer_list<Atom*> ats;     // change to List<Atom>? 
+  Pointer_list<Atom*> atoms_;  // change to List<Atom>? 
 
   /* *************** */
     
   Molecule() { }
-  Molecule (Atom const &a) { add (a) ;}
+  Molecule (Atom const &a);
 
   void add_at_edge (Axis a, Direction d, const Molecule &m);
   
-  void add (Molecule const &m);
+  void add_molecule (Molecule const &m);
   void translate (Offset);
   void translate_axis (Real,Axis);
-  void add (Atom const & a) ;
+  void add_atom (Atom const & a) ;
   /// how big is #this#? 
   Box extent() const;
 
-  String TeX_string() const;
 
   Molecule (const Molecule&s);
   void print() const;
index 0858c8178a9aa3980e1a698223edcd5c55e08069..4fc6104a4ea2f528fc7d80bad922e445058dfaea 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
index 067ff3eae18059c86bacfac2565d2ae3bdb94e0f..abb17be6e4178562d1f63bc0337d09edfeda40cc 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef MULTI_MEASURE_REST_ENGRAVER_HH
index afaeaf777040d7b6a92aa165a69eda93c8c40fe9..66cf89d004c6a86674a12a0b8b001dd103c310dc 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
index f3f6b4e155932ae4513fb3fb72a7dde8f94f7eb8..f5e04126f86630e76c5f251510c5a7fa6db13f78 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -12,7 +12,7 @@
 
 #include "lily-proto.hh"
 #include "plist.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "moment.hh"
 #include "virtual-methods.hh"
 
index 018832f7732bce40c27a3cc3cebb86a273ec855a..78a2ac1a6b5fc6b6fc9eec27dc186389198f7668 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index b4cd413412da25941eee67ad3592d71ebc90929e..29f4c11aaeaa225d7a1af7adb9bd3ff7ed342c64 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 6f2807ff2cb5983806ced1cde181c2e8937ffd8e..04a16e5d8d998466b676b81f60ba74f1bec1b5c8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index cd5ad0a9866175e7af43baf7ee8258e3ea744d1c..4437d461ed209f3696f3aeef55297db5687ce01a 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 989fb5fd0c4186b5f2ef7d3a9d9e67bd53cc556c..cdecc0b5bafdaad4ddb24354c6da80ef46a0b6fe 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index b5e85ff184c72d3958e80bf99df9cdd50ca7dca7..083e476f734a9c7c2747cf1f79569037ae411f77 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 643cf046784f3762435b29a1d01f3189fda8acfe..ed3e8ed015bf89904c9723a602d5d93efb1c9e12 100644 (file)
@@ -3,27 +3,32 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
 #ifndef MUSICAL_PITCH_HH
 #define MUSICAL_PITCH_HH
+
 #include "lily-proto.hh"
+#include "input.hh"
 
 /** The pitch as it figures in diatonal western music (12 semitones in
    an octave).
 
    It is not Music because, it has to duration associated
 */
-struct Musical_pitch {
+struct Musical_pitch : public Input
+{
+  Musical_pitch ();
+
   /// 0 is c, 6 is b
   int notename_i_;
   /// 0 is central c
   int octave_i_;
-
-    /// 0 natural, 1 sharp, etc
+  /// 0 natural, 1 sharp, etc
   int accidental_i_;
+
   void init () ;
   Musical_pitch to_relative_octave (Musical_pitch);
   void transpose (Musical_pitch);
@@ -32,7 +37,6 @@ struct Musical_pitch {
   int steps() const;
   /// return pitch from central c (in halfnotes)
   int semitone_pitch() const; 
-  Musical_pitch ();
   void up_to (int);
   void down_to (int);
   String str () const;
index 2b3bf0fc58fe7a04e7ba34f5857578e4f1c75408..f6bb89cec550bbb5959444a51fbd243aaface993 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
  */
 class Musical_req  : public virtual Request  {
 public:
-    
-  virtual Lyric_req* lreq_l() { return 0; }
-  virtual Note_req *note() { return 0;}
-  virtual Stem_req *stem() { return 0;}
-  virtual Melodic_req *melodic() { return 0; }
-  virtual Slur_req *slur() { return 0 ; }
-  virtual Beam_req *beam() { return 0 ; }
-  virtual Abbreviation_beam_req* abbrev_beam() { return 0 ; }
-  virtual Rhythmic_req*rhythmic() { return 0; }
-  virtual Musical_script_req*musicalscript() { return 0; }
-  virtual Text_req*text() { return 0; }
-  virtual Rest_req *rest() { return 0; }
-  virtual Skip_req* skip() { return 0; }
-  virtual Dynamic_req* dynamic() { return 0; }
-  virtual Absolute_dynamic_req * absdynamic() { return 0; }
-  virtual Tie_req * tie() { return 0; }
-  virtual Plet_req* plet() { return 0; }
-  virtual Span_dynamic_req * span_dynamic() { return 0; }
-  virtual Abbreviation_req* abbrev() { return 0; }
-  virtual Multi_measure_rest_req* multi_measure() { return 0; }
-  REQUESTMETHODS(Musical_req, musical);
+
+  DEFAULTACCESSOR(Lyric_req)
+  DEFAULTACCESSOR(Note_req )
+  DEFAULTACCESSOR(Stem_req )
+  DEFAULTACCESSOR(Melodic_req )
+  DEFAULTACCESSOR(Slur_req )
+  DEFAULTACCESSOR(Beam_req )
+  DEFAULTACCESSOR(Abbreviation_beam_req)
+  DEFAULTACCESSOR(Rhythmic_req)
+  DEFAULTACCESSOR(Musical_script_req)
+  DEFAULTACCESSOR(Text_req)
+  DEFAULTACCESSOR(Rest_req )
+  DEFAULTACCESSOR(Skip_req)
+  DEFAULTACCESSOR(Dynamic_req)
+  DEFAULTACCESSOR(Absolute_dynamic_req )
+  DEFAULTACCESSOR(Tie_req )
+  DEFAULTACCESSOR(Plet_req)
+  DEFAULTACCESSOR(Span_dynamic_req )
+  DEFAULTACCESSOR(Abbreviation_req)
+  DEFAULTACCESSOR(Multi_measure_rest_req)
+  REQUESTMETHODS(Musical_req);
 };
 
 
@@ -59,12 +59,12 @@ public:
   virtual Moment duration() const;
   Rhythmic_req();
   static int compare (Rhythmic_req const&,Rhythmic_req const&);
-  REQUESTMETHODS(Rhythmic_req, rhythmic);
+  REQUESTMETHODS(Rhythmic_req);
 };
 
 class Skip_req  : public Rhythmic_req  {
 public:
-  REQUESTMETHODS(Skip_req, skip);
+  REQUESTMETHODS(Skip_req);
 };
 
 struct Spacing_req :virtual Request {
@@ -73,18 +73,18 @@ struct Spacing_req :virtual Request {
   Real strength;
   /* *************** */
   Spacing_req();
-  REQUESTMETHODS(Spacing_req, spacing);
+  REQUESTMETHODS(Spacing_req);
 };
 
 struct Abbreviation_req : public Musical_req {
-  REQUESTMETHODS (Abbreviation_req, abbrev);
+  REQUESTMETHODS (Abbreviation_req);
   Abbreviation_req ();
   int type_i_;
 };
 
 class Blank_req  : public Spacing_req, Rhythmic_req  {
 public:
-  REQUESTMETHODS(Spacing_req, spacing);
+  REQUESTMETHODS(Spacing_req);
 };
 
 /// Put a text above or below (?) this staff.
@@ -100,16 +100,15 @@ public:
   ~Text_req();
   Text_req (Text_req const&);
 
-  REQUESTMETHODS(Text_req,text);
+  REQUESTMETHODS(Text_req);
 };
 
-/** Put a text in lyric_staff
-  @see Lyric_staff
+/** a syllable  or lyric is a string with rhythm.
   */
-class Lyric_req  : public  Rhythmic_req, public Text_req  {
+class Lyric_req  : public  Rhythmic_req  {
 public:
-  Lyric_req (Text_def* t_p);
-  REQUESTMETHODS(Lyric_req, lreq_l);
+  String text_str_;
+  REQUESTMETHODS(Lyric_req);
 };
 
 
@@ -123,7 +122,7 @@ struct Melodic_req :virtual Musical_req
   Melodic_req();
   bool do_equal_b (Request*) const;
   static int compare (Melodic_req const&,Melodic_req const&);
-  REQUESTMETHODS(Melodic_req,melodic);
+  REQUESTMETHODS(Melodic_req);
 };
 
 /// Put a note of specified type, height, and with accidental on the staff.
@@ -134,8 +133,8 @@ public:
   bool forceacc_b_;
   Note_req();
   bool do_equal_b (Request*) const;
-  Rhythmic_req* rhythmic() { return Rhythmic_req::rhythmic (); }
-  REQUESTMETHODS(Note_req, note);
+  Rhythmic_req* access_Rhythmic_req () { return Rhythmic_req::access_Rhythmic_req (); }
+  REQUESTMETHODS(Note_req);
 };
 
 /**
@@ -143,7 +142,7 @@ Put a rest on the staff. Why a request? It might be a good idea to not typeset t
 */
 class Rest_req : public Rhythmic_req {
 public:
-  REQUESTMETHODS(Rest_req,rest);
+  REQUESTMETHODS(Rest_req);
 };
 
 /**
@@ -152,7 +151,7 @@ public:
  */
 class Multi_measure_rest_req : public Rhythmic_req  {
 public:
-  REQUESTMETHODS(Multi_measure_rest_req, multi_measure);
+  REQUESTMETHODS(Multi_measure_rest_req);
 
 };
 
@@ -167,7 +166,7 @@ public:
     NOSPAN, START, STOP
   } spantype;
   bool do_equal_b (Request*) const;
-  REQUESTMETHODS(Span_req,span);
+  REQUESTMETHODS(Span_req);
 
   Span_req();
   
@@ -177,7 +176,7 @@ public:
 class Beam_req  : public Span_req  {
 public:
   /* *************** */
-  REQUESTMETHODS(Beam_req,beam);
+  REQUESTMETHODS(Beam_req);
 
   Beam_req();
 };
@@ -187,7 +186,7 @@ public:
  */
 class Abbreviation_beam_req : public Span_req  {
 public:
-  REQUESTMETHODS (Abbreviation_beam_req, abbrev_beam);
+  REQUESTMETHODS (Abbreviation_beam_req);
 
   Abbreviation_beam_req ();
 
@@ -199,13 +198,13 @@ public:
  */
 class Tie_req : public Musical_req {
 public:
-  REQUESTMETHODS(Tie_req, tie);
+  REQUESTMETHODS(Tie_req);
 };
 
 /// a slur
 class Slur_req  : public Span_req  {
 public:
-  REQUESTMETHODS(Slur_req,slur);
+  REQUESTMETHODS(Slur_req);
 
 };
 
@@ -214,14 +213,13 @@ class Plet_req : public Span_req  {
 public:
   int plet_i_;
 
-  REQUESTMETHODS(Plet_req,plet);
-
+  REQUESTMETHODS(Plet_req);
   Plet_req ();
 };
 
 class Musical_script_req : public Musical_req,  public Script_req {
 public:
-  REQUESTMETHODS(Musical_script_req, musicalscript);
+  REQUESTMETHODS(Musical_script_req);
 };
 
 
@@ -237,7 +235,7 @@ public:
     FFF, FF, F, MF, MP, P, PP, PPP, FP, SF, SFZ
   };
   static String loudness_static_str (Loudness);
-  REQUESTMETHODS(Dynamic_req, dynamic);
+  REQUESTMETHODS(Dynamic_req);
 };
 
 class Absolute_dynamic_req  : public Dynamic_req  {
@@ -246,15 +244,16 @@ public:
   virtual bool do_equal_b (Request*) const;
   String loudness_str () const;
   Absolute_dynamic_req();
-  REQUESTMETHODS(Absolute_dynamic_req, absdynamic);
+  REQUESTMETHODS(Absolute_dynamic_req);
 };
 
 class Span_dynamic_req  : public Dynamic_req, public Span_req  {
 public:
+  virtual bool do_equal_b (Request*) const;
   /// Grow or shrink the volume: 1=cresc, -1 = decresc 
   Direction dynamic_dir_;
   Span_dynamic_req();
-  REQUESTMETHODS(Span_dynamic_req, span_dynamic);
+  REQUESTMETHODS(Span_dynamic_req);
 };
 
 #endif // MUSICALREQUESTS_HH
index 42ac85949fc10d6a6bf1eb9730915649e2ee89f3..e4e3d293ed09b1daae8109b1367e5ecae427316b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef LEXER_HH
@@ -15,7 +15,7 @@
 #include "lily-proto.hh"
 #include "lily-proto.hh"
 #include "fproto.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "string.hh"
 #include "includable-lexer.hh"
 #include "duration.hh"
index 0dd977dca95f2dfafd44efaecba3168acbe02c5a..04e187130503187385a04f6b63e876ef997da694 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #define MY_LILY_PARSER_HH
 #include "lily-proto.hh"
 #include "string.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "lily-proto.hh"
 #include "lily-proto.hh"
 #include "duration.hh"
 #include "string.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "input.hh"
 
 class My_lily_parser {
@@ -27,8 +27,8 @@ class My_lily_parser {
   void add_requests (Chord*v);
 
   Chord * get_note_element (Note_req * ,Duration *);
-  Chord* get_rest_element (String,Duration *);
-  Chord* get_word_element (Text_def*, Duration*);
+  Chord* get_rest_element (String, Duration *);
+  Chord* get_word_element (String, Duration*);
   Melodic_req* get_melodic_req (Melodic_req* melodic, int quotes);
   String notename_str (Melodic_req* melodic);
   void set_last_duration (Duration const *);
@@ -37,12 +37,11 @@ class My_lily_parser {
 
 public:
   int abbrev_beam_type_i_;
-  int default_octave_i_;
+  int default_abbrev_i_;
   Duration default_duration_;
   Plet plet_;
   Header *default_header_p_;
     
-  String textstyle_str_;
   bool first_b_;
 
   Array<Request*> pre_reqs, post_reqs;
index dfcc1cc7ab4c48ecb798b1eb55036801e404bf16..2dd32433559f56440438fe6a4cd738804c771f6c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -19,7 +19,7 @@ class Note_column : public Script_column {
 protected:
   virtual void do_pre_processing();
   virtual void do_print () const;
-  virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
 public:
   /** The relative position of the "voice" containing this
     chord. Normally this would be the same as the stem direction,
@@ -40,11 +40,11 @@ public:
         
   DECLARE_MY_RUNTIME_TYPEINFO;
   Note_column ();
-  void set (Stem*);
-  void set (Dot_column*);
-  void add (Rhythmic_head*);
+  void set_stem (Stem*);
+  void set_dotcol (Dot_column*);
+  void add_head (Rhythmic_head*);
   bool rest_b () const;
-  virtual void add (Script*s);
+  virtual void add_script (Script*s);
   void sort ();
 };
 
index 6ed35ce26357a38ed33972d8b87d1dfc09acc089..07d3185a065e0d3ae691d7480f71e3258553a583 100644 (file)
@@ -1,7 +1,7 @@
 /*
   note-head.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef NOTEHEAD_HH
index c3b77ea415af9e5526b7c0c09ffa076676412f46..057f61c4e7d84f83154d3e38c4c183f133d8af48 100644 (file)
@@ -1,8 +1,8 @@
 /*
   note-performer.hh -- declare Note_performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef NOTE_PERFORMER_HH
index a9181e9d900acb035c456ec8cbd1714f173ae08f..56dd7c3927c9a4dc3e0ad2636237817440f3b7c3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 426f7e45649c085d4bb7873f6924a4456cb6a2af..716217ef84985176ca486020986cfb9c802f39b7 100644 (file)
@@ -1,7 +1,7 @@
 /*
   notename.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef NOTENAME_HH
diff --git a/lily/include/out/dummy.dep b/lily/include/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lily/include/outputter.hh b/lily/include/outputter.hh
deleted file mode 100644 (file)
index cb842e4..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-  outputter.hh -- declare Outputter
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef OUTPUTTER_HH
-#define OUTPUTTER_HH
-
-#include "lily-proto.hh"
-
-/**
-  Abstract interface for a Score_elem to output itself.
- */
-struct Outputter
-{
-  virtual ~Outputter(){}
-  virtual void start_line ()=0;
-  virtual void output_molecule (Molecule const *, Offset)=0;
-  virtual void stop_line ()=0;
-};
-
-/**
-  Output a line of score using  TeX strings
- */
-struct Tex_outputter : Outputter
-{
-  Tex_outputter (Tex_stream *);
-  Tex_stream * outstream_l_;
-  virtual void output_molecule (Molecule const*, Offset);
-  virtual void start_line ();
-  virtual void stop_line ();
-};
-
-#endif // OUTPUTTER_HH
index 5ab02c841037af26c22ee4c99daa6b8e3589ff9c..674139c14973d805a98f2651c85309938798d174 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -31,7 +31,7 @@
 class Paper_column : public Horizontal_group_item { 
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Paper_column);
+  SCORE_ELEMENT_CLONE(Paper_column);
   Drul_array< Array<Column_rod> > minimal_dists_arr_drul_;
 
   void preprocess ();
@@ -64,7 +64,7 @@ public:
   bool used_b() const;
   bool breakpoint_b() const;
     
-  void add (Item *i);
+  void add_item (Item *i);
 
   Paper_column();
 
index 60ebda08cd8be2cb042b76800b703fb62c888b0f..a6b4dc2a9d9c104be18b307faccb8e74fa697d58 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -33,14 +33,14 @@ public:
   Pointer_list<Spanner *> span_p_list_;
 
   /// other elements
-  Pointer_list<Score_elem*> elem_p_list_;
+  Pointer_list<Score_element*> elem_p_list_;
   
   Outputter *outputter_l_;  
   Super_elem *super_elem_l_;
     
   Paper_score ();
   /// add a line to the broken stuff. Positions given in #config#
-  void set_breaking (Array<Col_hpositions> const &);
+  void set_breaking (Array<Column_x_positions> const &);
 
 
   /// add to bottom of pcols
@@ -59,7 +59,7 @@ public:
   /* STANDARD ROUTINES */
   void print() const;
   
-  void typeset_element (Score_elem*);
+  void typeset_element (Score_element*);
   void typeset_broken_spanner (Spanner*);
   /// add a Spanner
   void typeset_unbroken_spanner (Spanner*);
index ea7b9d39e329421ae2e86b328c14e75386cc7d14..aa8973d8a8b7042a46763f260274b93716ef5b00 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -14,7 +14,7 @@
 #include "real.hh"
 
 #include "moment.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "interval.hh"
 #include "music-output-def.hh"
 
@@ -36,7 +36,7 @@
  */
 class Paper_def : public Music_output_def 
 {
-  Lookup *lookup_p_;
+  Assoc<int, Lookup *> *lookup_p_assoc_p_;
   Scope* scope_p_;
   static int default_count_i_;
 
@@ -52,7 +52,7 @@ public:
   Real get_var (String) const;
   void reinit ();
   Paper_def ();
-  void set (Lookup*);
+  void set_lookup (int, Lookup*);
 
   Paper_def (Paper_def const&);
   /// The distance between beams of multiplicity_i
@@ -82,10 +82,10 @@ public:
   Real note_width () const;
   void print () const;
 
-  Lookup const * lookup_l ();  // TODO naming
+  Lookup const * lookup_l (int sz) const;      // TODO naming
 
   /** convert a duration to an idealspacing
-    influence using the geometric_ and  parameters.
+    influence using the geometric_ and  paratime_signatures.
     */
   Real duration_to_dist (Moment, Real) const;
   Real geometric_spacing (Moment) const;
index a48ce2c022c1085cfb64feeb8ac16d39727a3201..7a8510484678b71197410afa2d8d33f009d49667 100644 (file)
@@ -1,7 +1,7 @@
 /*
   parseconstruct.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef PARSECONSTRUCT_HH
index 923575769d2f439bdde6b79da30558554547ce5b..bc7067a4af6fc6de155b46a90b34a85f0a64dc7c 100644 (file)
@@ -1,7 +1,7 @@
 /*
   performance.hh -- declare Performance
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef PERFORMANCE_HH
@@ -20,9 +20,9 @@ public:
   Performance ();
   ~Performance () {}
 
-  void add (Audio_column*);
+  void add_column (Audio_column*);
   void add_staff (Audio_staff* l);
-  void add (Audio_element*p);
+  void add_element (Audio_element*p);
 
     
   void output (Midi_stream& midi_stream_r);
index f5bcb61b4a27bc52568d226f4ac673e851882692..8c9c8aa8d865d479023cedcf8b4e92f18ccd69dc 100644 (file)
@@ -1,8 +1,8 @@
 /*
   performer-group-performer.hh -- declare Performer_group_performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef PERFORMER_GROUP_PERFORMER_HH
index 5d17b6afef9a3daf791be342cadc7d12f7712921..11fbdbb397ca986781351ab51a41633ee2765397 100644 (file)
@@ -1,17 +1,17 @@
 /*
   performer.hh -- declare Performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef PERFORMER_HH
 #define PERFORMER_HH
 
 #include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "request.hh"
-#include "score-elem-info.hh"
+#include "score-element-info.hh"
 #include "staff-info.hh"
 #include "translator.hh"
 
diff --git a/lily/include/piano-brace.hh b/lily/include/piano-brace.hh
new file mode 100644 (file)
index 0000000..2d094ca
--- /dev/null
@@ -0,0 +1,33 @@
+/*   
+  piano-brace.hh -- declare Piano_brace
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef PIANO_BRACE_HH
+#define PIANO_BRACE_HH
+
+#include "span-score-bar.hh"
+
+class Piano_brace : public Span_score_bar
+{
+public:
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  SCORE_ELEMENT_CLONE(Piano_brace);
+
+  /** make room for Staff_bracket.  Ugh.  Should use some kind of
+    relation thingy.  */
+  Real extra_move_left_f_;
+  Piano_brace ();
+protected:
+  virtual Interval do_width() const;
+  virtual void do_post_processing();
+  virtual Atom get_bar_sym (Real) const;
+};
+
+
+#endif /* PIANO_BRACE_HH */
+
diff --git a/lily/include/pitch-squash-engraver.hh b/lily/include/pitch-squash-engraver.hh
new file mode 100644 (file)
index 0000000..dbf432a
--- /dev/null
@@ -0,0 +1,24 @@
+/*   
+  pitch-squash-engraver.hh -- declare Pitch_squash_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef PITCH_SQUASH_GRAV_HH
+#define PITCH_SQUASH_GRAV_HH
+
+#include "engraver.hh"
+
+class Pitch_squash_engraver : public Engraver {
+public:
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  TRANSLATOR_CLONE (Pitch_squash_engraver);
+  virtual void acknowledge_element (Score_element_info);
+  
+};
+
+#endif /* PITCH_SQUASH_GRAV_HH */
+
diff --git a/lily/include/pitch-squash-grav.hh b/lily/include/pitch-squash-grav.hh
deleted file mode 100644 (file)
index 9f224fa..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*   
-  pitch-squash-grav.hh -- declare Pitch_squash_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-  
- */
-
-#ifndef PITCH_SQUASH_GRAV_HH
-#define PITCH_SQUASH_GRAV_HH
-
-#include "engraver.hh"
-
-class Pitch_squash_engraver : public Engraver {
-public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  TRANSLATOR_CLONE (Pitch_squash_engraver);
-  virtual void acknowledge_element (Score_elem_info);
-  
-};
-
-#endif /* PITCH_SQUASH_GRAV_HH */
-
index 7de90d45261d400dc9d1b8d23141fca6bc0604e5..005a475bf63c44fbc6a2e3e89154f4a233c99b38 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef PLET_ENGRAVER_HH
@@ -25,7 +25,7 @@ public:
   Plet_engraver ();
 
 protected:
-  virtual void acknowledge_element (Score_elem_info);
+  virtual void acknowledge_element (Score_element_info);
   virtual void do_removal_processing();
   virtual void do_process_requests();
   virtual bool do_try_request (Request*);
index 1625721bf45e0ad22f9597adc9dc5c8137926a43..39e7cac57d5789baf61667c97037c241a9b817aa 100644 (file)
@@ -1,7 +1,7 @@
 /*
   plet-spanner.hh -- part of GNU LilyPond
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #ifndef PLET_SPANNER_HH
@@ -28,12 +28,12 @@ protected:
   virtual Molecule* brew_molecule_p () const;
  
   DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Plet_spanner);
+  SCORE_ELEMENT_CLONE(Plet_spanner);
 
   virtual void do_add_processing ();
   virtual void do_post_processing ();
   virtual void set_default_dir ();
-  virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
   Plet_spanner (Plet_spanner const&);
 };
 
index 8dd6affd4ea2fadb9948b984924f57237d8eb848..0dbb142774a716bac806d05ed8cc1d9a7eb27ca4 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef PLET_SWALLOW_ENGRAVER_HH
 #define PLET_SWALLOW_ENGRAVER_HH
 
-#include "swallow-grav.hh"
+#include "swallow-engraver.hh"
 
 /**
   This engraver swallows plets silently.
diff --git a/lily/include/priority-halign-engraver.hh b/lily/include/priority-halign-engraver.hh
new file mode 100644 (file)
index 0000000..5d91ac4
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+  score-halign-engraver.hh -- declare Score_horizontal_align_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef FSCORE_HALIGN_GRAV_HH
+#define FSCORE_HALIGN_GRAV_HH
+
+#include "engraver.hh"
+
+class Priority_horizontal_align_engraver : public Engraver {
+  Break_align_item * halign_p_;
+public:
+  TRANSLATOR_CLONE(Priority_horizontal_align_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Priority_horizontal_align_engraver();
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing();
+};
+#endif // Priority_HALIGN_GRAV_HH
diff --git a/lily/include/priority-halign-grav.hh b/lily/include/priority-halign-grav.hh
deleted file mode 100644 (file)
index b591a40..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  score-halign-grav.hh -- declare Score_horizontal_align_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef FSCORE_HALIGN_GRAV_HH
-#define FSCORE_HALIGN_GRAV_HH
-
-#include "engraver.hh"
-
-class Priority_horizontal_align_engraver : public Engraver {
-  Break_align_item * halign_p_;
-public:
-  TRANSLATOR_CLONE(Priority_horizontal_align_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  Priority_horizontal_align_engraver();
-protected:
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-};
-#endif // Priority_HALIGN_GRAV_HH
index f0dfbb5fb9bd9b02a6b638b21e1ed1d74557c650..ac0703dc293e4c95ac14b816f8b9391920ec9fd9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 82371d363c1377be569b9e4b54eba478ed06775a..2de28843b981a8695dacf3c9db5f80f6bcbf579e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef QLP_HH
index dc2aaa5663d6f0d01e41a17f2b6bf75513b4a02e..bf04b55d843de97cd6d7edad9e61bb319e5967d5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -35,6 +35,8 @@ class Active_constraints {
   Ineq_constrained_qp const *opt;
 
 public:
+
+  int degenerate_count_i_;
   String status() const;
     
   Vector vec (int k) const { return opt->cons_[k]; }
@@ -45,17 +47,17 @@ public:
     constraint in #active#
     
     */
-  void drop (int k);
+  void drop_constraint (int k);
     
 
   /** add constraint j.
     add constraint j to the active set j is the index of the
     constraint in #inactive#   
     */
-  void add (int j);
+  void add_constraint (int j);
 
   /// exchange in and out.
-  void exchange (int in, int out) { add (in); drop (out); }
+  void exchange (int in, int out) { add_constraint (in); drop_constraint (out); }
     
 
   Vector find_active_optimum (Vector g);
index 0971a62d2dc6d6a47daeacfbed7ba0ff3d887273..c792445996a31f568c3dcb815dff479c8fcbabec 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index dd1639858aa2811e8f0d4755c61ecd4c62f763fb..6137260d687143883553d253bf495e391e0e6cd0 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 8f7a30b4c8960fd66b5fdcb685b16c01beaeb64b..15640ccd74735c26356e3db8bf60c3a7da4808bb 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index a349f5786b859bf4e36717d1ecddf0608607d156..d63a7cd7f18b7c404b255d1b14a03d631baf2de3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef REQUEST_HH
@@ -17,6 +17,9 @@
 #include "music.hh"
 #include "direction.hh"
 
+#define DEFAULTACCESSOR(T)  virtual T *access_ ## T () { return 0; }
+
+
 /**
  a voice element wants something printed.
  Hungarian postfix: req
@@ -26,34 +29,36 @@ class Request : public Music {
 
 public:
     
-    /* *************** */
+  /* *************** */
 
-    virtual ~Request(){}
+  virtual ~Request(){}
 
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    VIRTUAL_COPY_CONS(Request,Music);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Request,Music);
     
-    virtual MInterval time_int() const;
-    virtual Moment duration() const { return 0; }
-
-    /*  accessors for children
-       maybe checkout RTTI
-     */
-    virtual Barcheck_req *barcheck() { return 0; }
-    virtual Script_req *script() { return 0;}
-    virtual Span_req *span() { return 0; }
-    virtual Spacing_req * spacing() { return 0; }
-    virtual Blank_req * blank() { return 0; }
-    virtual Musical_req *musical() { return 0; }
-    virtual Command_req * command() { return 0; }
-    bool equal_b (Request*) const;
+  virtual MInterval time_int() const;
+  virtual Moment duration() const { return 0; }
+
+  /*  accessors for children
+      maybe checkout RTTI
+  */
+
+  DEFAULTACCESSOR(Barcheck_req)
+  DEFAULTACCESSOR(Script_req)
+  DEFAULTACCESSOR(Span_req)
+  DEFAULTACCESSOR(Spacing_req)
+  DEFAULTACCESSOR(Musical_req)
+  DEFAULTACCESSOR(Command_req)
+    
+  bool equal_b (Request*) const;
 protected:
-    virtual bool do_equal_b (Request*) const;
-    virtual void do_print() const;
+  virtual bool do_equal_b (Request*) const;
+  virtual void do_print() const;
 };
 
-#define REQUESTMETHODS(T,accessor)     \
-virtual T * accessor() { return this;}\
+
+#define REQUESTMETHODS(T)      \
+virtual T * access_ ## T() { return this;}\
 DECLARE_MY_RUNTIME_TYPEINFO;\
 VIRTUAL_COPY_CONS(T, Request);\
 virtual void do_print() const
@@ -63,18 +68,18 @@ virtual void do_print() const
 /** Put a script above or below this ``note'' or bar. eg upbow, downbow. Why
   a request? These symbols may conflict with slurs and brackets, so
   this also a request */
+
 class Script_req  : public virtual Request { 
 public:
-    Direction dir_;
-    General_script_def *scriptdef_p_;
-
-    /* *************** */
-    bool do_equal_b (Request*) const;
-
-    Script_req();
-    REQUESTMETHODS(Script_req,script);
-    ~Script_req();
-    Script_req (Script_req const&);
+  Direction dir_;
+  General_script_def *scriptdef_p_;
+  
+  bool do_equal_b (Request*) const;
+
+  Script_req();
+  REQUESTMETHODS(Script_req);
+  ~Script_req();
+  Script_req (Script_req const&);
 };
 
     
diff --git a/lily/include/rest-collision-engraver.hh b/lily/include/rest-collision-engraver.hh
new file mode 100644 (file)
index 0000000..c62c4e2
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+  rest-collision-engraver.hh -- declare Rest_collision_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef REST_COLLISION_GRAV_HH
+#define REST_COLLISION_GRAV_HH
+
+#include "array.hh"
+#include "engraver.hh"
+
+class Rest_collision_engraver : public Engraver {
+  Rest_collision* rest_collision_p_;
+
+  Link_array<Note_column> note_column_l_arr_;
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void process_acknowledged ();
+  virtual void do_pre_move_processing();
+public:
+  TRANSLATOR_CLONE(Rest_collision_engraver);
+  Rest_collision_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+#endif // REST_COLLISION_GRAV_HH
diff --git a/lily/include/rest-collision-grav.hh b/lily/include/rest-collision-grav.hh
deleted file mode 100644 (file)
index 0e99b48..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-  rest-collision-grav.hh -- declare Rest_collision_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef REST_COLLISION_GRAV_HH
-#define REST_COLLISION_GRAV_HH
-
-#include "varray.hh"
-#include "engraver.hh"
-
-class Rest_collision_engraver : public Engraver {
-  Rest_collision* rest_collision_p_;
-
-protected:
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-public:
-  TRANSLATOR_CLONE(Rest_collision_engraver);
-  Rest_collision_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-#endif // REST_COLLISION_GRAV_HH
index 4d39f54347ef0166e644704d124661ff9843fc8a..cc6bc84db87570d1f3f63947f1ba113aea8efe45 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -17,13 +17,13 @@ class Rest_collision : public Item {
     Link_array<Note_column> rest_l_arr_;
     Link_array<Note_column> ncol_l_arr_;
 public:
-    void add (Note_column*);
+    void add_column (Note_column*);
     DECLARE_MY_RUNTIME_TYPEINFO;
     Rest_collision();
 protected:
     virtual void do_post_processing();
     virtual void do_pre_processing();
     virtual void do_print() const;
-    virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+    virtual void do_substitute_dependency (Score_element*,Score_element*);
 };
 #endif // REST_COLLISION_HH
diff --git a/lily/include/rest-column-engraver.hh b/lily/include/rest-column-engraver.hh
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/lily/include/rest-column-grav.hh b/lily/include/rest-column-grav.hh
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lily/include/rest-engraver.hh b/lily/include/rest-engraver.hh
new file mode 100644 (file)
index 0000000..0081454
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+  rest-engraver.hh -- declare Engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef REST_GRAV_HH
+#define REST_GRAV_HH
+
+#include "engraver.hh"
+
+class Rest_engraver : public Engraver
+{
+  Rest_req *rest_req_l_;
+  Dots * dot_p_;
+  Rest * rest_p_;
+protected:
+  virtual bool do_try_request (Request *);
+  virtual void do_pre_move_processing ();
+  virtual void do_post_move_processing ();
+  virtual void do_process_requests ();
+public:
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  TRANSLATOR_CLONE(Rest_engraver);
+  Rest_engraver ();
+};
+#endif // REST_GRAV_HH
diff --git a/lily/include/rest-grav.hh b/lily/include/rest-grav.hh
deleted file mode 100644 (file)
index 67006a9..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  rest-grav.hh -- declare Engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef REST_GRAV_HH
-#define REST_GRAV_HH
-
-#include "engraver.hh"
-
-class Rest_engraver : public Engraver
-{
-  Rest_req *rest_req_l_;
-  Dots * dot_p_;
-  Rest * rest_p_;
-protected:
-  virtual bool do_try_request (Request *);
-  virtual void do_pre_move_processing ();
-  virtual void do_post_move_processing ();
-  virtual void do_process_requests ();
-public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  TRANSLATOR_CLONE(Rest_engraver);
-  Rest_engraver ();
-};
-#endif // REST_GRAV_HH
index 65cddc848e6b7eb89d206e91b07dce3e3020547c..493472c0e72caefe697b899dac1ac6e1c08d4d37 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -19,7 +19,7 @@ public:
   
   int position_i_;
   Rest ();
-  void add (Dots*);
+  void add_dots (Dots*);
 protected:
   virtual void do_add_processing ();
   virtual Molecule * brew_molecule_p () const;
diff --git a/lily/include/rhythmic-column-engraver.hh b/lily/include/rhythmic-column-engraver.hh
new file mode 100644 (file)
index 0000000..2074271
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+  rhythmic-column-engraver.hh -- declare Rhythmic_column_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef RHYTHMIC_COLUMN_GRAV_HH
+#define RHYTHMIC_COLUMN_GRAV_HH
+
+#include "engraver.hh"
+#include "parray.hh"
+
+class Rhythmic_column_engraver :public Engraver {
+  Link_array<Script> script_l_arr_;
+  Link_array<Rhythmic_head> rhead_l_arr_;
+  Stem * stem_l_;
+  Note_column *ncol_p_;
+  Dot_column *dotcol_l_;
+
+protected:
+  TRANSLATOR_CLONE(Rhythmic_column_engraver);
+  virtual void acknowledge_element (Score_element_info);
+  virtual void process_acknowledged ();
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+public:
+  Rhythmic_column_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+#endif // RHYTHMIC_COLUMN_GRAV_HH
+
+
+
diff --git a/lily/include/rhythmic-column-grav.hh b/lily/include/rhythmic-column-grav.hh
deleted file mode 100644 (file)
index 52e0904..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-  rhythmic-column-grav.hh -- declare Rhythmic_column_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef RHYTHMIC_COLUMN_GRAV_HH
-#define RHYTHMIC_COLUMN_GRAV_HH
-
-#include "engraver.hh"
-#include "parray.hh"
-
-class Rhythmic_column_engraver :public Engraver {
-  Link_array<Script> script_l_arr_;
-  Stem * stem_l_;
-  Note_column *ncol_p_;
-  Dot_column *dotcol_p_;
-protected:
-  TRANSLATOR_CLONE(Rhythmic_column_engraver);
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-public:
-  Rhythmic_column_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-#endif // RHYTHMIC_COLUMN_GRAV_HH
-
-
-
index 84a1728b0a4ac7d89c11dda7461bcba87f209edd..4c11b50fd0767fb49fc423be8410298288c7a1ac 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  rhythmic-head.hh -- declare 
+  rhythmic-head.hh -- declare Rhythmic_head
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -21,12 +21,12 @@ public:
   int dots_i_;
   Dots * dots_l_;
 
-  void add (Dots *);
+  void add_dots (Dots *);
   Rhythmic_head ();
 protected:
   virtual void do_add_processing ();
   virtual void do_print () const;
-  virtual void do_substitute_dependent (Score_elem*,Score_elem*);
+  virtual void do_substitute_dependent (Score_element*,Score_element*);
 };
 
 #endif // RHYTHMIC_HEAD_HH
index c71b6b3484ebc52a8147622ed2b1669fd46df37c..81ea0d97b339a244abd2cf4e3181db971f9c860e 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 799e480ac074a24313157de265af9f72fc1478a2..f9980f2db87c0174c2286d23be252b577efbbf69 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 298404da5d34bc55be4f2a81786f5edfb82eefc3..83c8e0bbaa81d756627fafdf492e13d3e5c579ab 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -19,7 +19,7 @@
 class Score_bar : public virtual Bar {
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Score_bar);
+  SCORE_ELEMENT_CLONE(Score_bar);
 protected:
   void do_pre_processing ();
 };
index e82b51aa80069f47f8b34bdecec1f8a5e2356207..10d55a798d83287b3c4355420e79db6f752ee7ab 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -11,7 +11,7 @@
 #define SCORE_COLUMN_HH
 
 #include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "moment.hh"
 #include "p-col.hh"
 
@@ -36,7 +36,7 @@ class Score_column : public Paper_column {
 public:
   int break_penalty_i () { return break_penalty_i_; }
   DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Score_column);
+  SCORE_ELEMENT_CLONE(Score_column);
   /// length of notes/rests in this column
   Array<Moment> durations;
     
diff --git a/lily/include/score-elem-info.hh b/lily/include/score-elem-info.hh
deleted file mode 100644 (file)
index edd695c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-  score-elem-info.hh -- declare Score_elem_info
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef STAFFELEMINFO_HH
-#define STAFFELEMINFO_HH
-
-#include "scalar.hh"
-#include "lily-proto.hh"
-#include "varray.hh"
-
-/**
-  Data container for broadcasts 
-  */
-struct Score_elem_info {
-    Score_elem * elem_l_;
-    Request*req_l_;
-    Array<Engraver*> origin_grav_l_arr_;
-
-    /* *** */
-    Score_elem_info (Score_elem*, Request*);
-    Score_elem_info();
-};
-
-
-#endif // STAFFELEMINFO_HH
diff --git a/lily/include/score-elem.hh b/lily/include/score-elem.hh
deleted file mode 100644 (file)
index 5757d07..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-  score-elem.hh -- part of GNU LilyPond
-
-  (c) 1996,97 Han-Wen Nienhuys
-*/
-
-#ifndef STAFFELEM_HH
-#define STAFFELEM_HH
-
-#include "parray.hh"
-#include "virtual-methods.hh"
-#include "directed-graph.hh"
-#include "graphical-element.hh"
-
-#define SCORE_ELEM_CLONE(T) VIRTUAL_COPY_CONS(T, Score_elem)
-
-
-typedef void (Score_elem::*Score_elem_method_pointer)(void);
-
-/** Both Spanner and Item are Score_elem's. Most Score_elem's depend
-  on other Score_elem's, eg, Beam needs to know and set direction of
-  Stem. So the Beam has to be calculated *before* Stem. This is
-  accomplished with the dependencies fields of struct Score_elem,
-  which are implemented in the Directed_graph_node class: all elements
-  form an acyclic graph.
-
-  (elem) */
-class Score_elem : private Directed_graph_node, public Graphical_element {
-public:
-  Paper_score *pscore_l_;    
-
-  Score_elem();
-  Score_elem (Score_elem const&);
-  virtual void print() const;
-    
-  Paper_def *paper() const;
-
-  virtual ~Score_elem();
-  DECLARE_MY_RUNTIME_TYPEINFO;    
-
-  void add_processing();
-
-  /**
-    Remove all  links (dependencies, dependents, Axis_group_elements.
-    */
-  void unlink();
-  void substitute_dependency (Score_elem*,Score_elem*);
-  void remove_dependency (Score_elem*);
-  /**
-    add a dependency. It may be the 0 pointer, in which case, it is ignored.
-    */
-  void add_dependency (Score_elem*);    
-
-  /*
-    virtual accessors
-    */
-
-  virtual Spanner* spanner()  { return 0; }
-  virtual Item * item() { return 0; }
-  virtual Line_of_score * line_l() const;
-  virtual bool linked_b() const;
-  SCORE_ELEM_CLONE(Score_elem);
-  /// do not print anything black
-  bool transparent_b_;
-  
-  // ugh: no protection. Denk na, Vrij Veilig
-  void calcalute_dependencies (int final, int busy, Score_elem_method_pointer funcptr);
-
-protected:
-  /**
-    Administration: Where are we?. This is mainly used by Super_elem and
-    Score_elem::calcalute_dependencies ()
-
-    0 means ORPHAN,
-    -1 means deleted
-    
-   */
-  int status_i_;
-
-  Score_elem* dependency (int) const;
-  Score_elem* dependent (int) const;
-  int dependent_size() const;
-  int dependency_size() const;
-  
-  virtual void do_brew_molecule ();
-  void junk_links();
-  virtual Interval do_height() const;
-  virtual Interval do_width() const;
-    
-  /// do printing of derived info.
-  virtual void do_print() const {}
-  /// generate the molecule    
-  virtual Molecule* brew_molecule_p() const;
-  ///executed directly after the item is added to the Paper_score
-  virtual void do_add_processing();
-  /// do calculations before determining horizontal spacing
-  virtual void do_pre_processing();
-
-  /// generate rods & springs
-  virtual void do_space_processing ();
-
-  virtual void do_breakable_col_processing();
-  /// do calculations after determining horizontal spacing
-  virtual void do_post_processing();
-    
-  virtual void do_substitute_dependency (Score_elem * , Score_elem *);
-  virtual void do_substitute_dependent (Score_elem *, Score_elem *);
-  virtual void do_break_processing();
-  virtual void handle_broken_dependencies();
-  virtual void handle_prebroken_dependencies();
-  virtual Link_array<Score_elem> get_extra_dependencies() const;
-  virtual void do_unlink();
-  virtual void do_junk_links();
-};
-
-
-#endif // STAFFELEM_HH
-
diff --git a/lily/include/score-element-info.hh b/lily/include/score-element-info.hh
new file mode 100644 (file)
index 0000000..3e31b87
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+  score-element-info.hh -- declare Score_element_info
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef STAFFELEMINFO_HH
+#define STAFFELEMINFO_HH
+
+#include "scalar.hh"
+#include "lily-proto.hh"
+#include "array.hh"
+
+/**
+  Data container for broadcasts 
+  */
+struct Score_element_info {
+    Score_element * elem_l_;
+    Request*req_l_;
+    Array<Engraver*> origin_grav_l_arr_;
+
+    /* *** */
+    Score_element_info (Score_element*, Request*);
+    Score_element_info();
+};
+
+
+#endif // STAFFELEMINFO_HH
diff --git a/lily/include/score-element.hh b/lily/include/score-element.hh
new file mode 100644 (file)
index 0000000..7a3211b
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+  score-element.hh -- part of GNU LilyPond
+
+  (c) 1996,97 Han-Wen Nienhuys
+*/
+
+#ifndef STAFFELEM_HH
+#define STAFFELEM_HH
+
+#include "parray.hh"
+#include "virtual-methods.hh"
+#include "directed-graph.hh"
+#include "graphical-element.hh"
+
+#define SCORE_ELEMENT_CLONE(T) VIRTUAL_COPY_CONS (T, Score_element)
+
+
+typedef void (Score_element::*Score_element_method_pointer) (void);
+
+/** Both Spanner and Item are Score_element's. Most Score_element's depend
+  on other Score_element's, eg, Beam needs to know and set direction of
+  Stem. So the Beam has to be calculated *before* Stem. This is
+  accomplished with the dependencies fields of struct Score_element,
+  which are implemented in the Directed_graph_node class: all elements
+  form an acyclic graph.
+
+  (elem) */
+class Score_element : private Directed_graph_node, public virtual Graphical_element {
+public:
+  Paper_score *pscore_l_;    
+
+  Score_element ();
+  Score_element (Score_element const&);
+  virtual void print () const;
+    
+  Paper_def *paper () const;
+  Lookup * lookup_l () const;
+
+  virtual ~Score_element ();
+  DECLARE_MY_RUNTIME_TYPEINFO;    
+
+  void add_processing ();
+
+  /**
+    Remove all  links (dependencies, dependents, Axis_group_elements.
+    */
+  void unlink ();
+  void substitute_dependency (Score_element*,Score_element*);
+  void remove_dependency (Score_element*);
+  /**
+    add a dependency. It may be the 0 pointer, in which case, it is ignored.
+    */
+  void add_dependency (Score_element*);    
+
+  /*
+    virtual accessors
+    */
+
+  virtual Spanner* access_Spanner ()  { return 0; }
+  virtual Span_bar* access_Span_bar ()  { return 0; }
+  virtual Axis_group_element * access_Axis_group_element () { return 0; }
+  virtual Score_element* access_Score_element () { return this; }
+  
+  virtual Item * access_Item () { return 0; }
+  virtual Line_of_score * line_l () const;
+  virtual bool linked_b () const;
+  SCORE_ELEMENT_CLONE (Score_element);
+  /// do not print anything black
+  bool transparent_b_;
+
+  int size_i_;
+  
+  // ugh: no protection. Denk na, Vrij Veilig
+  void calcalute_dependencies (int final, int busy, Score_element_method_pointer funcptr);
+
+protected:
+  /**
+    Administration: Where are we?. This is mainly used by Super_elem and
+    Score_element::calcalute_dependencies ()
+
+    0 means ORPHAN,
+    -1 means deleted
+    
+   */
+public:
+  int status_i_;
+protected:
+  Score_element* dependency (int) const;
+  Score_element* dependent (int) const;
+  int dependent_size () const;
+  int dependency_size () const;
+  
+  virtual void do_brew_molecule ();
+  void junk_links ();
+  virtual Interval do_height () const;
+  virtual Interval do_width () const;
+    
+  /// do printing of derived info.
+  virtual void do_print () const {}
+  /// generate the molecule    
+  virtual Molecule* brew_molecule_p () const;
+  ///executed directly after the item is added to the Paper_score
+  virtual void do_add_processing ();
+  /// do calculations before determining horizontal spacing
+  virtual void do_pre_processing ();
+
+  /// generate rods & springs
+  virtual void do_space_processing ();
+
+  virtual void do_breakable_col_processing ();
+  /// do calculations after determining horizontal spacing
+  virtual void do_post_processing ();
+    
+  virtual void do_substitute_dependency (Score_element * , Score_element *);
+  virtual void do_substitute_dependent (Score_element *, Score_element *);
+  virtual void do_break_processing ();
+  virtual void handle_broken_dependencies ();
+  virtual void handle_prebroken_dependencies ();
+  virtual Link_array<Score_element> get_extra_dependencies () const;
+  virtual void do_unlink ();
+  virtual void do_junk_links ();
+  
+};
+
+
+#endif // STAFFELEM_HH
+
diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh
new file mode 100644 (file)
index 0000000..5d59fc0
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+  score-engraver.hh -- declare Score_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef SCORE_GRAV_HH
+#define SCORE_GRAV_HH
+
+#include "engraver-group.hh"
+#include "global-translator.hh"
+
+/**
+  Top level engraver. Puts elements into appropriate columns.
+ */
+class Score_engraver : 
+  public Engraver_group_engraver, public Global_translator 
+{
+  Line_of_score * scoreline_l_;
+  int break_penalty_i_;
+  int breaks_i_;
+
+  Link_array<Score_element> elem_p_arr_;
+    
+  Score_column* command_column_l_;
+  Score_column* musical_column_l_;
+    
+  void set_columns (Score_column*,Score_column*);
+  void typeset_all();
+    
+public:
+  TRANSLATOR_CLONE(Score_engraver);
+  Paper_score * pscore_p_;
+  DECLARE_MY_RUNTIME_TYPEINFO;
+
+  Score_engraver();
+  virtual Music_output *get_output_p ();  
+protected:   
+  virtual void prepare (Moment);
+  virtual void finish();
+  virtual void process();
+  virtual int depth_i() const { return Global_translator::depth_i ();}
+
+protected:
+  /* Engraver_group_engraver interface */
+  virtual Staff_info get_staff_info() const;
+  virtual bool do_try_request (Request*);
+  virtual void do_creation_processing();
+  virtual void do_removal_processing();
+  virtual void announce_element (Score_element_info);
+  virtual void do_announces();
+  virtual void typeset_element (Score_element*elem_p);
+  virtual void do_pre_move_processing();
+  virtual void do_add_processing ();
+};
+
+#endif // SCORE_GRAV_HH
diff --git a/lily/include/score-grav.hh b/lily/include/score-grav.hh
deleted file mode 100644 (file)
index bd89d2f..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-  score-grav.hh -- declare Score_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef SCORE_GRAV_HH
-#define SCORE_GRAV_HH
-
-#include "engraver-group.hh"
-#include "global-translator.hh"
-
-/**
-  Top level engraver. Puts elements into appropriate columns.
- */
-class Score_engraver : 
-  public Engraver_group_engraver, public Global_translator 
-{
-  Line_of_score * scoreline_l_;
-  int break_penalty_i_;
-  int breaks_i_;
-
-  Link_array<Score_elem> elem_p_arr_;
-    
-  Score_column* command_column_l_;
-  Score_column* musical_column_l_;
-    
-  void set_columns (Score_column*,Score_column*);
-  void typeset_all();
-    
-public:
-  TRANSLATOR_CLONE(Score_engraver);
-  Paper_score * pscore_p_;
-  DECLARE_MY_RUNTIME_TYPEINFO;
-
-  Score_engraver();
-  virtual Music_output *get_output_p ();  
-protected:   
-  virtual void prepare (Moment);
-  virtual void finish();
-  virtual void process();
-  virtual int depth_i() const { return Global_translator::depth_i ();}
-
-protected:
-  /* Engraver_group_engraver interface */
-  virtual Staff_info get_staff_info() const;
-  virtual bool do_try_request (Request*);
-  virtual void do_creation_processing();
-  virtual void do_removal_processing();
-  virtual void announce_element (Score_elem_info);
-  virtual void do_announces();
-  virtual void typeset_element (Score_elem*elem_p);
-  virtual void do_pre_move_processing();
-  virtual void do_add_processing ();
-};
-
-#endif // SCORE_GRAV_HH
index 3aa4d4ba7e03ddade72d150029a1043bc60ebfef..adb462a2dd325faa64740d411bfdf03590106a21 100644 (file)
@@ -1,8 +1,8 @@
 /*
   score-performer.hh -- declare Score_performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef SCORE_PERFORMER_HH
diff --git a/lily/include/score-priority-engraver.hh b/lily/include/score-priority-engraver.hh
new file mode 100644 (file)
index 0000000..c682725
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+  score-align-engraver.hh -- declare Type_align_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef SCOREF_ALIGN_GRAV_HH
+#define SCOREF_ALIGN_GRAV_HH
+
+#include "engraver.hh"
+#include "assoc.hh"
+
+/**
+  Group  a number of items across staffs
+ */
+class Score_priority_engraver : public Engraver
+{
+  Assoc<int, Horizontal_group_item  *> align_p_assoc_;
+public:
+  TRANSLATOR_CLONE(Score_priority_engraver);
+  Score_priority_engraver ();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing();
+};
+
+#endif // SCORE_ALIGN_GRAV_HH
diff --git a/lily/include/score-priority-grav.hh b/lily/include/score-priority-grav.hh
deleted file mode 100644 (file)
index 8b6ab1c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-  score-align-grav.hh -- declare Type_align_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef SCOREF_ALIGN_GRAV_HH
-#define SCOREF_ALIGN_GRAV_HH
-
-#include "engraver.hh"
-#include "assoc.hh"
-
-/**
-  Group  a number of items across staffs
- */
-class Score_priority_engraver : public Engraver
-{
-  Assoc<int, Horizontal_group_item  *> align_p_assoc_;
-public:
-  TRANSLATOR_CLONE(Score_priority_engraver);
-  Score_priority_engraver ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-protected:
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-};
-
-#endif // SCORE_ALIGN_GRAV_HH
index 667e44340229c84b99e3110ded8b587e93c92198..7817d7f891a643597d5522e0d7c789b81de02106 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef SCORE_HH
 #define SCORE_HH
 
-#include "varray.hh"
+#include "array.hh"
 #include "lily-proto.hh"
 #include "plist.hh"
 #include "string.hh"
@@ -34,7 +34,7 @@ public:
   ~Score();    
 
   void process();
-  void add (Music_output_def *def_p);
+  void add_output (Music_output_def *def_p);
   void print() const;
 private:
   void run_translator (Music_output_def*);
diff --git a/lily/include/scoreline.hh b/lily/include/scoreline.hh
deleted file mode 100644 (file)
index cb089cd..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  scoreline.hh -- part of GNU LilyPond
-
-  (c) 1996,97 Han-Wen Nienhuys
-*/
-
-#ifndef SCORELINE_HH
-#define SCORELINE_HH
-
-#include "colhpos.hh"
-#include "spanner.hh"
-
-/// the columns of a score that form one line.
-class Line_of_score : public Spanner 
-{
-public:
-  Link_array<Paper_column> cols;
-  bool error_mark_b_;
-
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  Line_of_score();
-    
-  void add (Score_elem *);
-
-  /// is #c# contained in #*this#?
-  bool contains_b (Paper_column const *c) const;
-    
-  Link_array<Line_of_score> get_lines() const;
-  void set_breaking (Array<Col_hpositions> const&);
-
-protected:
-  virtual Link_array<Score_elem> get_extra_dependencies () const;
-
-  virtual void do_unlink ();
-  virtual void do_junk_links ();
-  virtual void break_into_pieces (bool);
-  virtual Interval do_width() const;
-  virtual void do_print() const;
-  SCORE_ELEM_CLONE(Line_of_score);
-};
-
-#endif
-
index 1b7328b1e50ff9a02bff8197a2f96d5aebdba43e..99c053b10a2cb6e26731b8db9efde17cc41e51c2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -18,14 +18,14 @@ class Script_column : public Horizontal_vertical_group_item {
 
 protected:
     virtual void do_print() const;
-    virtual void do_substitute_dependency (Score_elem*, Score_elem*);
+    virtual void do_substitute_dependency (Score_element*, Score_element*);
     virtual void do_pre_processing() ;
 public:
     Link_array<Script> script_l_arr_;
     Link_array<Item> support_l_arr_;
     DECLARE_MY_RUNTIME_TYPEINFO;
    
-    virtual void add (Script *);
+    virtual void add_script (Script *);
     void add_support (Item*);
 };
 
index ac5bf63561e51530b9dda5ba3db10eb2f81c5071..a68628c9ef4a85d03b3ab8020444c1bce5f72445 100644 (file)
@@ -1,7 +1,7 @@
 /*
   script-def.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef SCRIPTDEF_HH
diff --git a/lily/include/script-engraver.hh b/lily/include/script-engraver.hh
new file mode 100644 (file)
index 0000000..6e4ed01
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+  script-engraver.hh -- part of GNU LilyPond
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef SCRIPTGRAV_HH
+#define SCRIPTGRAV_HH
+
+#include "engraver.hh"
+
+
+class Script_engraver : public Engraver {
+  Array<Script *> script_p_arr_;
+  Array<Script_req *> script_req_l_arr_;
+
+public:
+  TRANSLATOR_CLONE(Script_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Script_engraver();
+protected:
+  virtual bool do_try_request (Request*);
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+
+};
+
+#endif // SCRIPTGRAV_HH
diff --git a/lily/include/script-grav.hh b/lily/include/script-grav.hh
deleted file mode 100644 (file)
index e8040c5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
-  script-grav.hh -- part of GNU LilyPond
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef SCRIPTGRAV_HH
-#define SCRIPTGRAV_HH
-
-#include "engraver.hh"
-
-
-class Script_engraver : public Engraver {
-  Array<Script *> script_p_arr_;
-  Array<Script_req *> script_req_l_arr_;
-
-public:
-  TRANSLATOR_CLONE(Script_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  Script_engraver();
-protected:
-  virtual bool do_try_request (Request*);
-  virtual void do_process_requests();
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-
-};
-
-#endif // SCRIPTGRAV_HH
index 35a945af5a8665ed0154619881e91d69f9afe34a..105cb4f15c30f1b99bad79952178a9a5043ac9e2 100644 (file)
@@ -1,7 +1,7 @@
 /*
   script.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef SCRIPT_HH
   Accents that are put over a note-group.
  */
 class Script : public Item, public Staff_side {
-    
-    Stem *stem_l_;
+  Stem *stem_l_;
 
 protected:
-    Molecule *brew_molecule_p() const;
-    virtual void do_substitute_dependency (Score_elem*,Score_elem*);
-    virtual void do_print() const;
-    virtual Interval symbol_height() const;
-    virtual void do_pre_processing();
-    virtual Interval do_width() const;
-    SCORE_ELEM_CLONE(Script);
+  Molecule *brew_molecule_p() const;
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
+  virtual void do_print() const;
+  virtual Interval symbol_height() const;
+  virtual Interval symbol_width () const;
+  virtual void do_pre_processing();
+  virtual Interval do_width() const;
+  SCORE_ELEMENT_CLONE(Script);
 private:
 
-    void set_default_dir();
+  void set_default_dir();
 public:
-    General_script_def *specs_l_;
+  General_script_def *specs_p_;
+  bool postbreak_only_b_;
     
-    static int compare (Script  *const&, Script *const&) ;
-    Script();
-    void set_stem (Stem*);
-    DECLARE_MY_RUNTIME_TYPEINFO;
-
+  static int compare (Script  *const&, Script *const&) ;
+  Script();
+  ~Script ();
+  Script (Script const&);
+   
+  void set_stem (Stem*);
+  DECLARE_MY_RUNTIME_TYPEINFO;
 };
 
 
index 6ec7d0f8e3053ac9f7c6adf388d405c62d4fb824..b90752479cee9165dc33882aaeefe6894c4ee657 100644 (file)
@@ -3,14 +3,14 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
 #ifndef SEPARATING_GROUP_SPANNER_HH
 #define SEPARATING_GROUP_SPANNER_HH
 
-#include "vertical-group-spanner.hh"
+#include "spanner.hh"
 
 
 class Separating_group_spanner : public Spanner
@@ -20,9 +20,9 @@ public:
   DECLARE_MY_RUNTIME_TYPEINFO;
   void add_spacing_unit (Single_malt_grouping_item*);
 protected:
-  SCORE_ELEM_CLONE (Separating_group_spanner);
+  SCORE_ELEMENT_CLONE (Separating_group_spanner);
   virtual Array<Rod> get_rods () const;
-  virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
 };
 
 #endif /* SEPARATING_GROUP_SPANNER_HH */
diff --git a/lily/include/separating-line-group-engraver.hh b/lily/include/separating-line-group-engraver.hh
new file mode 100644 (file)
index 0000000..d9419a9
--- /dev/null
@@ -0,0 +1,34 @@
+/*   
+  separating-line-group-engraver.hh -- declare Separating_line_group_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef SEPARATING_LINE_GROUP_GRAV_HH
+#define SEPARATING_LINE_GROUP_GRAV_HH
+
+#include "engraver.hh"
+
+class Separating_line_group_engraver : public Engraver
+{
+protected:
+  Single_malt_grouping_item * break_malt_p_;
+  Single_malt_grouping_item* nobreak_malt_p_;
+  Separating_group_spanner * sep_span_p_;
+  
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_creation_processing ();
+  virtual void do_removal_processing ();
+  virtual void do_pre_move_processing ();
+public:
+  Separating_line_group_engraver ();
+  TRANSLATOR_CLONE (Separating_line_group_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+
+#endif /* SEPARATING_LINE_GROUP_GRAV_HH */
+
diff --git a/lily/include/separating-line-group-grav.hh b/lily/include/separating-line-group-grav.hh
deleted file mode 100644 (file)
index 17e83aa..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*   
-  separating-line-group-grav.hh -- declare Separating_line_group_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-  
- */
-
-#ifndef SEPARATING_LINE_GROUP_GRAV_HH
-#define SEPARATING_LINE_GROUP_GRAV_HH
-
-#include "line-group-grav.hh"
-
-class Separating_line_group_engraver : public Line_group_engraver
-{
-protected:
-  Single_malt_grouping_item * break_malt_p_;
-  Single_malt_grouping_item* nobreak_malt_p_;
-  Separating_group_spanner * sep_span_p_;
-  
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
-  virtual void do_pre_move_processing ();
-public:
-  Separating_line_group_engraver ();
-  TRANSLATOR_CLONE (Separating_line_group_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-
-#endif /* SEPARATING_LINE_GROUP_GRAV_HH */
-
index 0e69c49ded3ce2d02e581066736269a47928c4bd..32bfb45e2a94d5eb5d1ef73dbc914fdf03de1f8e 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
    It's 1 30 am.  Naming suggestions appreciated.  */
 class Single_malt_grouping_item : public Item
 {
-  SCORE_ELEM_CLONE (Single_malt_grouping_item);
+  SCORE_ELEMENT_CLONE (Single_malt_grouping_item);
   Link_array<Item> item_l_arr_;
 public:
   Single_malt_grouping_item ();
   Interval my_width () const;
-  void add (Item*);
+  void add_item (Item*);
   DECLARE_MY_RUNTIME_TYPEINFO;
 protected:
-  virtual  void do_substitute_dependency (Score_elem*, Score_elem*);
+  virtual  void do_substitute_dependency (Score_element*, Score_element*);
   virtual void do_print () const;
 };
 
diff --git a/lily/include/slur-engraver.hh b/lily/include/slur-engraver.hh
new file mode 100644 (file)
index 0000000..75c21d0
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+  slur-engraver.hh -- declare Slur_engraver
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef SLURGRAV_HH
+#define SLURGRAV_HH
+
+#include "engraver.hh"
+
+class Slur_engraver :public Engraver {
+  Array<Slur_req*> requests_arr_;
+  Array<Slur_req*> new_slur_req_l_arr_;
+  Array<Slur *> slur_l_stack_;
+  Array<Slur*> end_slur_l_arr_;
+  Direction dir_;
+
+protected:
+  virtual bool do_try_request (Request*);
+  virtual void do_process_requests();
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing();
+  virtual void do_post_move_processing();
+  virtual void do_removal_processing ();
+
+public:
+  TRANSLATOR_CLONE(Slur_engraver);
+  Slur_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // SLURGRAV_HH
diff --git a/lily/include/slur-grav.hh b/lily/include/slur-grav.hh
deleted file mode 100644 (file)
index 64dd452..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-  slur-grav.hh -- declare Slur_engraver
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef SLURGRAV_HH
-#define SLURGRAV_HH
-
-#include "engraver.hh"
-
-class Slur_engraver :public Engraver {
-  Array<Slur_req*> requests_arr_;
-  Array<Slur_req*> new_slur_req_l_arr_;
-  Array<Slur *> slur_l_stack_;
-  Array<Slur*> end_slur_l_arr_;
-  Direction dir_;
-
-protected:
-  virtual bool do_try_request (Request*);
-  virtual void do_process_requests();
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-  virtual void do_post_move_processing();
-  virtual void do_removal_processing ();
-
-public:
-  TRANSLATOR_CLONE(Slur_engraver);
-  Slur_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // SLURGRAV_HH
index 07ceb99374a39e6edc21118669d7b63533da9505..c77f6f9865a585e9a612af6bb07d93a729430f96 100644 (file)
@@ -1,7 +1,7 @@
 /*
   slur.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef SLUR_HH
@@ -19,11 +19,11 @@ class Slur : public Bow
 {
 public:
   Link_array<Note_column> encompass_arr_;
-  void add (Note_column*);
+  void add_column (Note_column*);
 
   Slur ();
 
-  SCORE_ELEM_CLONE(Slur);
+  SCORE_ELEMENT_CLONE(Slur);
   DECLARE_MY_RUNTIME_TYPEINFO;
 
 protected:
@@ -33,7 +33,7 @@ protected:
   virtual void do_post_processing ();
   virtual void do_add_processing ();
   virtual void do_pre_processing ();
-  virtual void do_substitute_dependency (Score_elem*, Score_elem*);
+  virtual void do_substitute_dependency (Score_element*, Score_element*);
 };
 
 #endif // SLUR_HH
diff --git a/lily/include/span-bar-engraver.hh b/lily/include/span-bar-engraver.hh
new file mode 100644 (file)
index 0000000..c7050cf
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+  span-bar-engraver.hh -- declare Span_bar_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef SPAN_BAR_GRAV_HH
+#define SPAN_BAR_GRAV_HH
+
+#include "engraver.hh"
+
+/** 
+
+  Make bars that span multiple "staffs". Catch bars, and span a
+  Span_bar over them if we find more than 2 bars
+
+  */
+class Span_bar_engraver : public Engraver
+{
+  Span_bar * spanbar_p_;
+  Array<Bar*> bar_l_arr_;
+  Vertical_align_spanner * valign_l_;
+public:
+  TRANSLATOR_CLONE(Span_bar_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+    
+  Span_bar_engraver();
+protected:
+  virtual void do_creation_processing ();
+  virtual void do_removal_processing ();
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing();
+  virtual Span_bar* get_span_bar_p() const;
+};
+
+#endif // SPAN_BAR_GRAV_HH
diff --git a/lily/include/span-bar-grav.hh b/lily/include/span-bar-grav.hh
deleted file mode 100644 (file)
index c7e6241..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-  span-bar-grav.hh -- declare Span_bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef SPAN_BAR_GRAV_HH
-#define SPAN_BAR_GRAV_HH
-
-#include "engraver.hh"
-
-/** 
-
-  Make bars that span multiple "staffs". Catch bars, and span a
-  Span_bar over them if we find more than 2 bars
-
-  */
-class Span_bar_engraver : public Engraver
-{
-  Span_bar * spanbar_p_;
-  Array<Bar*> bar_l_arr_;
-  Vertical_align_element * valign_l_;
-public:
-  TRANSLATOR_CLONE(Span_bar_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-    
-  Span_bar_engraver();
-protected:
-  virtual void do_creation_processing ();
-  virtual void do_removal_processing ();
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing();
-  virtual Span_bar* get_span_bar_p() const;
-};
-
-#endif // SPAN_BAR_GRAV_HH
index 4d0744de011fff6bbe54ebaf0416d8d1e62409c7..1aec5715141053a08e59daa4c2a0afd433b100c7 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 
 class Span_bar : public virtual Bar
 {
-    Link_array<Score_elem> spanning_l_arr_;
+    Link_array<Score_element> spanning_l_arr_;
 
 public:
     Span_bar();
     DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Span_bar);
-    void add (Bar*);
-    void set (Vertical_align_element *);
+    SCORE_ELEMENT_CLONE(Span_bar);
+    virtual Span_bar* access_Span_bar ();
+    void add_bar (Bar*);
+    void set_align (Align_element *);
 
 protected:
+    void evaluate_empty ();
     virtual Interval do_width() const;
     virtual void do_pre_processing();
+    virtual void do_post_processing();
     
-    virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+    virtual void do_substitute_dependency (Score_element*,Score_element*);
     virtual Molecule * brew_molecule_p() const;
     virtual Atom get_bar_sym (Real dy) const;
 };
diff --git a/lily/include/span-score-bar-engraver.hh b/lily/include/span-score-bar-engraver.hh
new file mode 100644 (file)
index 0000000..f75b775
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+  span-score-bar-engraver.hh -- declare Span_score_bar_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef SPAN_SCORE_BAR_GRAV_HH
+#define SPAN_SCORE_BAR_GRAV_HH
+
+#include "span-bar-engraver.hh"
+
+/** 
+
+  Make the bars that Span the entire score line (system). A
+  Span_bar_engraver which generates a special bar.
+
+  */
+
+class Span_score_bar_engraver : public Span_bar_engraver 
+{
+public:
+  TRANSLATOR_CLONE (Span_score_bar_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  virtual Span_bar* get_span_bar_p () const;
+};
+
+/**
+  Please don't shoot the piano player
+ */
+class Piano_bar_engraver :  public Span_score_bar_engraver
+{
+public:
+  TRANSLATOR_CLONE (Piano_bar_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  virtual Span_bar * get_span_bar_p () const;
+};
+
+/**
+  
+ */
+class Staff_group_bar_engraver :  public Span_score_bar_engraver
+{
+public:
+  TRANSLATOR_CLONE (Staff_group_bar_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  virtual Span_bar * get_span_bar_p () const;
+  virtual void acknowledge_element (Score_element_info);
+};
+
+#endif // SPAN_SCORE_BAR_GRAV_HH
diff --git a/lily/include/span-score-bar-grav.hh b/lily/include/span-score-bar-grav.hh
deleted file mode 100644 (file)
index bf4b88a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  span-score-bar-grav.hh -- declare Span_score_bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef SPAN_SCORE_BAR_GRAV_HH
-#define SPAN_SCORE_BAR_GRAV_HH
-
-#include "span-bar-grav.hh"
-
-/** 
-
-  Make the bars that Span the entire score line (system). A
-  Span_bar_engraver which generates a special bar.
-
-  */
-
-class Span_score_bar_engraver : public Span_bar_engraver 
-{
-public:
-  TRANSLATOR_CLONE (Span_score_bar_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  virtual Span_bar* get_span_bar_p () const;
-};
-
-/**
-  Please don't shoot the piano player
- */
-class Piano_bar_engraver :  public Span_score_bar_engraver
-{
-public:
-  TRANSLATOR_CLONE (Piano_bar_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  virtual Span_bar * get_span_bar_p () const;
-};
-
-/**
-  
- */
-class Staff_group_bar_engraver :  public Span_score_bar_engraver
-{
-public:
-  TRANSLATOR_CLONE (Staff_group_bar_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  virtual Span_bar * get_span_bar_p () const;
-  virtual void acknowledge_element (Score_elem_info);
-};
-
-#endif // SPAN_SCORE_BAR_GRAV_HH
index f42205b38e9377c98f81051222eab4caa2ac6afc..411c56da5e4d9aa365109756a654daed889eb227 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -17,31 +17,13 @@ class Span_score_bar : public Span_bar, public Score_bar
 {
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Span_score_bar);
+  SCORE_ELEMENT_CLONE(Span_score_bar);
   Span_score_bar();
+
 protected:
   virtual void do_pre_processing();
 };
 
 
-class Piano_brace : public Span_score_bar
-{
-public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Piano_brace);
-protected:
-  virtual Interval do_width() const;
-  virtual Atom get_bar_sym (Real) const;
-};
-
-class Staff_bracket : public Span_score_bar
-{
-public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEM_CLONE(Staff_bracket);
-protected:
-  virtual Interval do_width() const;
-  virtual Atom get_bar_sym (Real) const;
-};
 
 #endif // SPAN_SCORE_BAR_HH
index 0559dce40dd6a5841a625f290f065911c522357d..d5688cb8e0ff03de18454480fc5f7396058449ba 100644 (file)
@@ -1,14 +1,14 @@
 /*
   spanner.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef SPANNER_HH
 #define SPANNER_HH
 
 #include "lily-proto.hh"
-#include "score-elem.hh"
+#include "score-element.hh"
 #include "drul-array.hh"
 #include "rod.hh"
 
   length of stems of notes they encompass.
 
   */
-class Spanner : public virtual Score_elem {
+class Spanner : public virtual Score_element {
 public:
   
   Drul_array<Item*> spanned_drul_;
-  void set_bounds(Direction d, Item*);
+  void set_bounds (Direction d, Item*);
 
   DECLARE_MY_RUNTIME_TYPEINFO;
-  virtual Spanner* spanner() { return this; }    
-  Spanner();
-  bool broken_b() const;
+  virtual Spanner* access_Spanner ();
+  Spanner ();
+  bool broken_b () const;
   virtual Array<Rod> get_rods () const;
   Spanner* find_broken_piece (Line_of_score*) const;
 protected:
-  void set_my_columns();
-  SCORE_ELEM_CLONE(Spanner);
+  void set_my_columns ();
+  SCORE_ELEMENT_CLONE (Spanner);
 
   /**
     this is virtual; for instance, Line_of_score overrides it.
@@ -55,13 +55,13 @@ protected:
 
   Link_array<Spanner> broken_into_l_arr_;
 
-  virtual void do_unlink();
-  virtual void do_junk_links();
+  virtual void do_unlink ();
+  virtual void do_junk_links ();
   virtual void do_brew_molecule ();
   virtual void do_space_processing ();
-  virtual void do_break_processing();
-  virtual Interval do_width() const;
-  virtual void do_print() const;
-  virtual Line_of_score*line_l() const;
+  virtual void do_break_processing ();
+  virtual Interval do_width () const;
+  virtual void do_print () const;
+  virtual Line_of_score*line_l () const;
 };
 #endif
index 609fb666d6e6da6d4c18081bd0775678955edc67..defcd15bc3d8cbfe7bdf61d26bd34a68e0682e8c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -48,8 +48,8 @@ class Spring_spacer : public Line_spacer {
   
     
   Pointer_list<Idealspacing *> ideal_p_list_;
-  Array<Colinfo> cols_;
-  Array<Colinfo> loose_col_arr_;
+  Array<Column_info> cols_;
+  Array<Column_info> loose_col_arr_;
   Array<Spacer_rod> rods_;
   
   /// mark column #i# as being loose.
@@ -86,8 +86,8 @@ public:
   static Line_spacer *constructor();
   Real energy_normalisation_f_;
   Spring_spacer ();
-  virtual void solve (Col_hpositions*) const;
-  virtual void lower_bound_solution (Col_hpositions*) const;
+  virtual void solve (Column_x_positions*) const;
+  virtual void lower_bound_solution (Column_x_positions*) const;
   virtual void add_column (Paper_column  *, bool fixed=false, Real fixpos=0.0);
  
 
diff --git a/lily/include/staff-bracket.hh b/lily/include/staff-bracket.hh
new file mode 100644 (file)
index 0000000..526df13
--- /dev/null
@@ -0,0 +1,28 @@
+
+/*   
+  staff-bracket.hh -- declare  Staff_bracket
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef STAFF_BRACKET_HH
+#define STAFF_BRACKET_HH
+#include "span-score-bar.hh"
+class Staff_bracket : public Span_score_bar
+{
+public:
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  SCORE_ELEMENT_CLONE(Staff_bracket);
+
+protected:
+  virtual Interval do_width() const;
+  virtual void do_post_processing();
+  virtual Atom get_bar_sym (Real) const;
+};
+
+
+#endif /* STAFF_BRACKET_HH */
+
index 9f03ca73d5181096d4c6714d017118aea7efcb47..8e68983dbe4e256547bc0694c567858c2a4566de 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -14,7 +14,6 @@
 
 /// struct to pass staff info along a Engraver hierarchy.
 struct Staff_info {
-    int *c0_position_i_l_;
     Staff_symbol*staff_sym_l_;
     
     Time_description const *time_C_;
@@ -22,8 +21,6 @@ struct Staff_info {
     Score_column *musical_l_;
     Score_column *command_l_;
 
-    ///
-    bool break_allowed_b_;
     Score * score_l_;
     Score *score_l();
     Paper_column * command_pcol_l();
index 3352e85b77ccbe193898fa84b28edf363e1bb20e..484ae5bafab705d47bf8c1fb39c4155849d103d3 100644 (file)
@@ -1,8 +1,8 @@
 /*
   staff-performer.hh -- declare Staff_performer
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-                 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+                 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #ifndef STAFF_PERFORMER_HH
index 976288745861246bd6ba69c3e97ed9b0b8a49ef1..5c95249868cae6799fbd45007740c7d61e81512c 100644 (file)
@@ -3,21 +3,24 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #ifndef STAFF_SIDE_HH
 #define STAFF_SIDE_HH
 
-#include "score-elem.hh"
+#include "score-element.hh"
 #include "interval.hh"
 #include "direction.hh"
 
-/** A symbol which sits along a staff.
+/**
 
-  */
-class Staff_side : virtual Score_elem
+   A symbol which sits either below or above "something" (usually, a
+   staff).
+
+*/
+class Staff_side : virtual Score_element
 {
 public:
 
@@ -25,25 +28,33 @@ public:
     Vertical dir of symbol relative to staff. -1 = below staff?
     */
   Direction dir_;
+  Axis axis_;
   Interval sym_int_;
     
-  Real y_;
+  Real coordinate_offset_f_;
 
+  /**
+     Add extra vertical space to the support symbols.
+   */
+  Real padding_f_;
 
-  void set_staffsym (Staff_symbol * );
   Staff_side ();
-  void add_support (Score_elem*);
+  void add_support (Score_element*);
   DECLARE_MY_RUNTIME_TYPEINFO;
     
 protected:
   virtual Interval symbol_height () const;
+  virtual Interval symbol_width () const;
+  Interval symbol_extent () const;
   virtual Real get_position_f () const;
-  virtual void do_substitute_dependency (Score_elem *, Score_elem*);
+  virtual void do_substitute_dependency (Score_element *, Score_element*);
+  virtual void do_pre_processing ();
   virtual void do_post_processing ();
-  Interval support_height () const;
+  Interval support_extent () const;
 
 private:
-  Link_array<Score_elem> support_l_arr_;
-//  Interval support_height () const;
+  void do_side_processing ();
+  Link_array<Score_element> support_l_arr_;
 };
+
 #endif // STAFF_SIDE_HH
diff --git a/lily/include/staff-sym-engraver.hh b/lily/include/staff-sym-engraver.hh
new file mode 100644 (file)
index 0000000..0cc98d6
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+  staff-sym-engraver.hh -- declare Staff_sym_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef STAFF_SYM_GRAV_HH
+#define STAFF_SYM_GRAV_HH
+#include "engraver.hh"
+#include "moment.hh"
+
+/**
+  Manage the staff symbol.
+ */
+class Staff_sym_engraver : public Engraver { 
+    Staff_symbol *span_p_;
+public:
+  TRANSLATOR_CLONE(Staff_sym_engraver);
+  Staff_sym_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+protected:
+  virtual ~Staff_sym_engraver();
+  virtual void fill_staff_info (Staff_info&);
+  virtual void do_removal_processing();
+  virtual void do_creation_processing();
+       
+};
+#endif // STAFF_SYM_GRAV_HH
diff --git a/lily/include/staff-sym-grav.hh b/lily/include/staff-sym-grav.hh
deleted file mode 100644 (file)
index ff65bf6..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-  staff-sym-grav.hh -- declare Staff_sym_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef STAFF_SYM_GRAV_HH
-#define STAFF_SYM_GRAV_HH
-#include "engraver.hh"
-#include "moment.hh"
-
-/**
-  Manage the staff symbol.
- */
-class Staff_sym_engraver : public Engraver { 
-    Staff_symbol *span_p_;
-public:
-  TRANSLATOR_CLONE(Staff_sym_engraver);
-  Staff_sym_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-protected:
-  virtual ~Staff_sym_engraver();
-  virtual void fill_staff_info (Staff_info&);
-  virtual void do_removal_processing();
-  virtual void do_creation_processing();
-       
-};
-#endif // STAFF_SYM_GRAV_HH
index 258818db1e6c60f6bde1ed6a569ab7a746d7a5c7..215e41bde97cd541afe89f90c1fe495a259c6e98 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -27,7 +27,7 @@ public:
   Real inter_note_f() const;
   int steps_i() const;
 protected:
-  SCORE_ELEM_CLONE(Staff_symbol);
+  SCORE_ELEMENT_CLONE(Staff_symbol);
   virtual Interval do_height () const;
   virtual Molecule* brew_molecule_p() const;
   virtual void do_print() const;
diff --git a/lily/include/stem-engraver.hh b/lily/include/stem-engraver.hh
new file mode 100644 (file)
index 0000000..2fa376c
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+  stem-engraver.hh -- declare Stem_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef STEM_GRAV_HH
+#define STEM_GRAV_HH
+
+#include "engraver.hh"
+
+/**
+  Make stems upon receiving noteheads.
+ */
+class Stem_engraver : public Engraver
+{
+  Direction dir_;
+  int default_abbrev_i_;
+  Stem *stem_p_;
+  Abbreviation *abbrev_p_;
+  Rhythmic_req *rhythmic_req_l_;
+  Abbreviation_req* abbrev_req_l_;
+protected:
+  virtual void do_creation_processing ();
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_pre_move_processing ();
+  virtual bool do_try_request (Request*);
+
+public:
+  TRANSLATOR_CLONE(Stem_engraver);
+  Stem_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // STEM_GRAV_HH
diff --git a/lily/include/stem-grav.hh b/lily/include/stem-grav.hh
deleted file mode 100644 (file)
index 78a9236..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-  stem-grav.hh -- declare Stem_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef STEM_GRAV_HH
-#define STEM_GRAV_HH
-
-#include "engraver.hh"
-
-/**
-  Make stems upon receiving noteheads.
- */
-class Stem_engraver : public Engraver
-{
-  Direction dir_;
-  int default_abbrev_i_;
-  Stem *stem_p_;
-  Abbreviation *abbrev_p_;
-  Rhythmic_req *rhythmic_req_l_;
-  Abbreviation_req* abbrev_req_l_;
-protected:
-  virtual void do_creation_processing ();
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_pre_move_processing ();
-  virtual bool do_try_request (Request*);
-
-public:
-  TRANSLATOR_CLONE(Stem_engraver);
-  Stem_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // STEM_GRAV_HH
index 06a6cb2918f4e741be7dfcfea51bccc9273ecc1e..bff7cfbdb38f69464c122b1220cd1a16d4fa00e3 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index aa6f1b44cabfa09b169b1db343389c9eda05c864..6bef757c911b755851ee34beff3a27925f5576f3 100644 (file)
@@ -1,13 +1,13 @@
 /*
   stem.hh -- declare Stem
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef STEM_HH
 #define STEM_HH
 #include "item.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "moment.hh"
 #include "molecule.hh"
 
@@ -82,7 +82,7 @@ public:
   Stem ();
     
   /// ensure that this Stem also encompasses the Notehead #n#
-  void add (Rhythmic_head*n);
+  void add_head (Rhythmic_head*n);
 
   DECLARE_MY_RUNTIME_TYPEINFO;
 
@@ -93,10 +93,10 @@ public:
 
   void do_print() const;
   void set_stemend (Real);
-  Direction get_default_dir();
-  Direction get_dir ();
+  Direction get_default_dir() const;
+  Direction get_dir () const;
 
-  int get_center_distance(Direction);
+  int get_center_distance(Direction) const;
   void set_default_dir();
   void set_default_stemlen();
   void set_default_extents();
@@ -111,8 +111,9 @@ public:
     
   /// heads that the stem encompasses (positions)
   Interval_t<int> head_positions() const;
+  virtual ~Stem ();
 protected:
-  virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
   virtual void do_pre_processing();
   virtual Interval do_width() const;
   Molecule* brew_molecule_p() const;
diff --git a/lily/include/super-elem.hh b/lily/include/super-elem.hh
deleted file mode 100644 (file)
index 4ee9987..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-  super-elem.hh -- declare Super_elem
-
-  source file of the LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef SUPER_ELEM_HH
-#define SUPER_ELEM_HH
-
-#include "score-elem.hh"
-/** The toplevel element. The Paper_score contains this element, and any
-  element shoud be a dependency for the super element.
-  */
-class Super_elem : public Score_elem {
-public:
-  Link_array<Line_of_score> lines_arr_;
-  Line_of_score * line_of_score_l_;
-    void add_broken_line (Line_of_score*);
-  Super_elem();
-
-  void space_processing ();
-  void pre_processing();
-  void breakable_col_processing();
-  void break_processing();
-  void post_processing();
-  void output_all ();
-  void unlink_all ();
-
-protected:
-  virtual void do_substitute_dependency (Score_elem*,Score_elem*);
-  virtual void handle_broken_dependencies();
-
-  virtual void do_add_processing();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // SUPER_ELEM_HH
diff --git a/lily/include/super-element.hh b/lily/include/super-element.hh
new file mode 100644 (file)
index 0000000..a625b85
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+  super-element.hh -- declare Super_elem
+
+  source file of the LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef SUPER_ELEM_HH
+#define SUPER_ELEM_HH
+
+#include "score-element.hh"
+/** The toplevel element. The Paper_score contains this element, and any
+  element shoud be a dependency for the super element.
+  */
+class Super_elem : public Score_element {
+public:
+  Link_array<Line_of_score> lines_arr_;
+  Line_of_score * line_of_score_l_;
+    void add_broken_line (Line_of_score*);
+  Super_elem();
+
+  void space_processing ();
+  void pre_processing();
+  void breakable_col_processing();
+  void break_processing();
+  void post_processing();
+  void output_all ();
+  void unlink_all ();
+
+protected:
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
+  virtual void handle_broken_dependencies();
+
+  virtual void do_add_processing();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // SUPER_ELEM_HH
diff --git a/lily/include/swallow-engraver.hh b/lily/include/swallow-engraver.hh
new file mode 100644 (file)
index 0000000..d2ca31a
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+  swallow-engraver.hh -- declare Swallow_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef SWALLOW_GRAV_HH
+#define SWALLOW_GRAV_HH
+
+#include "engraver.hh"
+
+/**
+  This engraver swallows everything given to it silently. The purpose of
+  this is to prevent spurious "request junked" warnings.
+ */
+class Swallow_engraver : public Engraver {
+protected:
+  bool do_try_request (Request*) ;
+public:
+  TRANSLATOR_CLONE(Swallow_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+#endif // SWALLOW_GRAV_HH
diff --git a/lily/include/swallow-grav.hh b/lily/include/swallow-grav.hh
deleted file mode 100644 (file)
index 601477f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-  swallow-grav.hh -- declare Swallow_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef SWALLOW_GRAV_HH
-#define SWALLOW_GRAV_HH
-
-#include "engraver.hh"
-
-/**
-  This engraver swallows everything given to it silently. The purpose of
-  this is to prevent spurious "request junked" warnings.
- */
-class Swallow_engraver : public Engraver {
-protected:
-  bool do_try_request (Request*) ;
-public:
-  TRANSLATOR_CLONE(Swallow_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-#endif // SWALLOW_GRAV_HH
index 699990c4dbadffe3153dc830f03e625992b0d234..62e14d45f04fc22ed5b119401dda0fd27fe93f61 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 71724eb0ad76f8a11d929bfeb27282ae4e53eb5e..12cf34b11e1fbb18f447b8ee52672781f30fd27a 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  symtable.hh -- declare 
+  symtable.hh -- declare Symtable, Symtables
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/lily/include/tex-outputter.hh b/lily/include/tex-outputter.hh
new file mode 100644 (file)
index 0000000..ce9f772
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+  outputter.hh -- declare Outputter
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef OUTPUTTER_HH
+#define OUTPUTTER_HH
+
+#include "lily-proto.hh"
+#include "array.hh"
+#include "string.hh"
+
+/**
+  Abstract interface for a Score_element to output itself.
+ */
+struct Outputter
+{
+  virtual ~Outputter(){}
+  virtual void start_line ()=0;
+  virtual void output_molecule (Molecule const *, Offset, char const *)=0;
+  virtual void stop_line ()=0;
+};
+
+/**
+  Output a line of score using  TeX strings
+ */
+struct Tex_outputter : Outputter
+{
+  Array<String> font_arr_;
+  String current_font_;
+  
+  Tex_outputter (Tex_stream *);
+  Tex_stream * outstream_l_;
+  void switch_to_font (String);
+  virtual void output_molecule (Molecule const*, Offset, char const*);
+  virtual void start_line ();
+  virtual void stop_line ();
+};
+
+#endif // OUTPUTTER_HH
index e8011bb3ee7ade21bc723a8b3049b02140b5facc..e26c8328cb3edb102eba7a4e5158883d40630826 100644 (file)
@@ -22,8 +22,9 @@ public:
     /// open a file for writing
     Tex_stream (String filename);
     void header();
-    /// delegate conversion to string class.
-    Tex_stream &operator<<(String);
+
+    /// delegate conversion to scalar class
+    Tex_stream &operator <<(Scalar);
 
     /// close the file
     ~Tex_stream();
index 43a35d2ad34f2edda3d365677adcd49cf8d895e0..3d5cf308b357328c199d537ad9e510519ed27e69 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #define TEX_HH
 
 #include "string.hh"
-#include "boxes.hh"
+#include "box.hh"
 #include "scalar.hh"
 
-/** parameter substitution in TeX_strings.
+/** paratime_signature substitution in TeX_strings.
   this function provides a simple macro mechanism:
 
   if source == "tex%bla%", then
@@ -24,7 +24,7 @@
 String
 substitute_args (String source, Array<String> args);
 
-/// parameter substitution in TeX_strings
+/// paratime_signature substitution in TeX_strings
 String
 substitute_args (String source, Array<Scalar> args);
 
index 13fb25511bc27e6ae93f1cf40a97813a2c13174e..296350de453461239a03edb7566b557178c47216 100644 (file)
@@ -1,7 +1,7 @@
 /*
   text-def.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef TEXT_DEF_HH
@@ -19,11 +19,11 @@ public:
   VIRTUAL_COPY_CONS(Text_def,General_script_def);
 
   /**
-     centered , or aligned?
+     Alignment of typeset text wrt center.
 
-     -1 = raggedright, 0 = center, 1 = raggedleft
+     LEFT = raggedright, CENTER = centered, RIGHT = raggedleft
   */
-  Direction align_i_;
+  Direction align_dir_;
 
   String text_str_;
   String style_str_;
index 581446cfd46494e9a95c3d9b5c6fe97b0eb92d81..8c6ba84f69348c13c4457254736ff12a3f3c4d0b 100644 (file)
@@ -1,7 +1,7 @@
 /*
   text-item.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef TEXT_ITEM_HH
index ab81d9099ebde543ce227da6ba5cfa6e1eb7fbce..e7cd556cd9a479bffe0f5daaac41f0011cf9a833 100644 (file)
@@ -1,7 +1,7 @@
 /*
   textspanner.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef TEXTSPANNER_HH
@@ -24,10 +24,10 @@ public:
   Text_spanner();
   Text_spanner (Text_spanner const&);
 protected:
-  SCORE_ELEM_CLONE(Text_spanner);
+  SCORE_ELEMENT_CLONE(Text_spanner);
   ~Text_spanner();
   virtual void do_add_processing ();
-  virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
   virtual void do_pre_processing();
   virtual void do_post_processing();
   virtual Interval height() const ;
diff --git a/lily/include/tie-engraver.hh b/lily/include/tie-engraver.hh
new file mode 100644 (file)
index 0000000..8c75363
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+  tie-engraver.hh -- declare Tie_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef TIE_GRAV_HH
+#define TIE_GRAV_HH
+
+#include "engraver.hh"
+
+
+/**
+   Make a (one) tie from a request.  To be used in conjunction  with
+   the Note_head_engraver.  Obsolete now that Thread context is junked.
+ */
+class Tie_engraver : public Engraver {
+  Tie * end_tie_p_;
+  Tie * tie_p_;
+  Moment end_mom_;
+  Tie_req * req_l_;
+  Direction dir_;
+  Tie_req *end_req_l_;
+  Melodic_req * end_melodic_req_l_;
+  Melodic_req  * melodic_req_l_;
+    
+protected:
+  virtual void do_removal_processing ();
+  virtual void acknowledge_element (Score_element_info);
+  virtual bool do_try_request (Request*);
+  virtual void do_process_requests();
+  virtual void do_post_move_processing();
+  virtual void do_pre_move_processing();
+public:
+  TRANSLATOR_CLONE(Tie_engraver);
+  Tie_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // TIE_GRAV_HH
diff --git a/lily/include/tie-grav.hh b/lily/include/tie-grav.hh
deleted file mode 100644 (file)
index 834d91e..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-  tie-grav.hh -- declare Tie_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef TIE_GRAV_HH
-#define TIE_GRAV_HH
-
-#include "engraver.hh"
-
-class Tie_engraver : public Engraver {
-    Tie * end_tie_p_;
-    Tie * tie_p_;
-    Moment end_mom_;
-    Tie_req * req_l_;
-    Direction dir_;
-    Tie_req *end_req_l_;
-    Melodic_req * end_melodic_req_l_;
-    Melodic_req  * melodic_req_l_;
-    
-protected:
-    virtual void do_removal_processing ();
-    virtual void acknowledge_element (Score_elem_info);
-    virtual bool do_try_request (Request*);
-    virtual void do_process_requests();
-    virtual void do_post_move_processing();
-    virtual void do_pre_move_processing();
-public:
-TRANSLATOR_CLONE(Tie_engraver);
-    Tie_engraver();
-    DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // TIE_GRAV_HH
index d983e164911541245158cfa297d6f9bca5f477b5..a60577109a7d09ee279c5e643442aa1596650f28 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -22,7 +22,7 @@ public:
     void set_head (Direction, Note_head*head_l);
 
     DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Tie);
+    SCORE_ELEMENT_CLONE(Tie);
 
     bool same_pitch_b_;
     Drul_array<Note_head *> head_l_drul_;
@@ -31,7 +31,7 @@ protected:
     virtual void do_add_processing ();
     virtual void do_post_processing ();
     virtual void set_default_dir();
-    virtual void do_substitute_dependency (Score_elem*,Score_elem*);
+    virtual void do_substitute_dependency (Score_element*,Score_element*);
     Array<Offset> get_controls () const;
 };
 #endif // TIE_HH
diff --git a/lily/include/ties-engraver.hh b/lily/include/ties-engraver.hh
new file mode 100644 (file)
index 0000000..9ad8497
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+  tie-engraver.hh -- declare Ties_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef Ties_GRAV_HH
+#define Ties_GRAV_HH
+
+#include "engraver.hh"
+
+struct Head_melodic_tuple {
+  Melodic_req *mel_l_ ;
+  Note_head *head_l_;
+
+  Head_melodic_tuple ();
+  Head_melodic_tuple (Note_head*, Melodic_req*);
+  static int compare (Head_melodic_tuple const &, Head_melodic_tuple const &);
+};
+
+class Ties_engraver : public Engraver {
+  Link_array<Tie> end_tie_p_arr_;
+  Link_array<Tie> tie_p_arr_;
+
+  Tie_req *req_l_;
+  Tie_req *end_req_l_;
+  Array<Head_melodic_tuple> head_mel_tuple_arr_;
+  Array<Head_melodic_tuple> left_head_mel_tuple_arr_;  
+  int processed_ack_pass_i_;
+  
+  Link_array<Melodic_req *> end_melodic_req_l_arr_;
+  Link_array<Melodic_req *> melodic_req_l_arr_;
+    
+protected:
+  virtual void do_removal_processing ();
+  virtual void acknowledge_element (Score_element_info);
+  virtual bool do_try_request (Request*);
+  virtual void do_process_requests();
+  virtual void process_acknowledged ();
+  virtual void do_post_move_processing();
+  virtual void do_pre_move_processing();
+public:
+  TRANSLATOR_CLONE(Ties_engraver);
+  Ties_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // Ties_GRAV_HH
index 5a84817ed93e3c99bf99561d141d0d8d4dbfd58d..f92b48ba7921ead72be6a5ffd99cd4f26b85f3a6 100644 (file)
@@ -1,7 +1,7 @@
 /*
   moment.hh -- part of GNU LilyPond
 
-  (c) 1996,97 Han-Wen Nienhuys
+  (c) 1996--1998 Han-Wen Nienhuys
 */
 
 #ifndef tdes_HH
@@ -9,7 +9,7 @@
 
 #include "moment.hh"
 #include "lily-proto.hh"
-#include "varray.hh"
+#include "array.hh"
 
 /// full info on where we are
 struct Time_description {
@@ -39,14 +39,14 @@ struct Time_description {
   void OK() const;
   Time_description();
   void add (Moment dt);
-  bool allow_meter_change_b();
+  bool allow_time_signature_change_b();
   String str() const;
   void print() const;
   void setpartial (Moment p);
   String try_set_partial_str (Moment) const;
   Moment barleft() const;
   Moment next_bar_moment() const;
-  void set_meter (int,int);
+  void set_time_signature (int,int);
   static int compare (const Time_description&, const Time_description&);
 };
 
diff --git a/lily/include/time-signature-engraver.hh b/lily/include/time-signature-engraver.hh
new file mode 100644 (file)
index 0000000..4d4f1ed
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+  time_signature-engraver.hh -- declare  Time_signature_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef METERGRAV_HH
+#define METERGRAV_HH
+#include "engraver.hh"
+#include "time-description.hh"
+#include "grouping.hh"
+
+/**
+  generate time_signatures. 
+  */
+class Time_signature_engraver : public Engraver {
+protected:
+  virtual void do_process_requests();
+  virtual void do_pre_move_processing();
+public:
+  TRANSLATOR_CLONE(Time_signature_engraver);
+  Time_signature * time_signature_p_;
+
+  Time_signature_engraver();
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+#endif // METERGRAV_HH
diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh
new file mode 100644 (file)
index 0000000..762f465
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+  time_signature.hh -- declare Time_signature
+
+  (c) 1996--1998 Han-Wen Nienhuys
+*/
+
+#ifndef METER_HH
+#define METER_HH
+#include "item.hh"
+#include "array.hh"
+#include "scalar.hh"
+
+/**
+   Print a time_signature sign.
+  TODO:
+
+  C style time_signatures, 2+3+2/8 time_signatures, alla breve.
+  
+ */
+class Time_signature: public Item {
+  Array<Scalar> args;
+
+protected:
+  virtual Molecule*brew_molecule_p() const;
+public:
+  Time_signature (Array<Scalar> args) ;
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  SCORE_ELEMENT_CLONE(Time_signature);
+};
+#endif // METER_HH
+
diff --git a/lily/include/timing-engraver.hh b/lily/include/timing-engraver.hh
new file mode 100644 (file)
index 0000000..9e0012a
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+  timing-engraver.hh -- declare Timing_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef TIMING_GRAV_HH
+#define TIMING_GRAV_HH
+
+#include "timing-translator.hh"
+
+/**
+  Do time bookkeeping
+ */
+class Timing_engraver : public Timing_translator, public Engraver
+{   
+protected:
+  virtual void fill_staff_info (Staff_info&);
+  virtual Engraver * engraver_l () { return Engraver::engraver_l (); }
+public:
+  TRANSLATOR_CLONE(Timing_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif // TIMING_GRAV_HH
diff --git a/lily/include/timing-grav.hh b/lily/include/timing-grav.hh
deleted file mode 100644 (file)
index 01c36c1..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  timing-grav.hh -- declare Timing_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef TIMING_GRAV_HH
-#define TIMING_GRAV_HH
-
-#include "timing-translator.hh"
-
-/**
-  Do time bookkeeping
- */
-class Timing_engraver : public Timing_translator, public Engraver
-{   
-protected:
-  virtual void fill_staff_info (Staff_info&);
-  virtual Engraver * engraver_l () { return Engraver::engraver_l (); }
-public:
-  TRANSLATOR_CLONE(Timing_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif // TIMING_GRAV_HH
index 1b2fe054eaca9887c4a5ccfd98beb7d963bba7e9..e62ee388f038e37566d63507f2a804c2f944a3e9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -19,7 +19,7 @@ class Timing_translator : public virtual Translator
 {
 public:
   TRANSLATOR_CLONE(Timing_translator);
-  Meter_change_req * meter_req_l () const;
+  Time_signature_change_req * time_signature_req_l () const;
   Timing_translator ();
   DECLARE_MY_RUNTIME_TYPEINFO;
   Time_description time_;
index 686f0d938df45c572265993902e192a457784df8..1ddfdffee9c156178d15efe15a24a414da636b5e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 0220ed70f50527a5f266dd2111720a60158140ee..8de7b806c53b2be89a4ffb1c5c0b94f4d051b102 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 3e00c5b0e108fcc7187fff001f1b5fbd934b2bdf..a1613cba607e62247c3a189fae474d265718c0b8 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 1684809af56aa5eae4511acecaf1aa9b481c9ee8..b96d6807216de8e92d4519bde8c74be92cfa4b3b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -96,21 +96,27 @@ protected:
   virtual void do_removal_processing() {}
 };
 
+
+template<class T>
+class Translator_adder
+{
+public:
+  static Translator *ctor ()
+    {
+      Translator *t = new T;
+      t->type_str_ = T::static_name ();
+      return t;
+    }
+  Translator_adder () {        
+    add_constructor (ctor);
+  }                            
+};
+
 /**
   A macro to automate administration of translators.
  */
 #define ADD_THIS_TRANSLATOR(c)                         \
-struct c ## init {                                     \
-   static Translator *ctor ()\
-  {\
-        Translator *t = new c;\
-        t-> type_str_ = c::static_name ();\
-        return t;\
-    }\
-    c ## init() {                                      \
-       add_constructor (ctor);\
-    }                                                  \
-} _ ## c ## init;
+  Translator_adder<c> _ ## c ## init;
 
 typedef Translator *(*Translator_ctor) ();
 
index 76208a06cfe45f2125b65eefd29f68d7eba2b088..53eb7ea04ab6d6cd9240e55101b6c69c6692a883 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  type-swallow-grav.hh -- declare Type_swallow_translator
+  type-swallow-engraver.hh -- declare Type_swallow_translator
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
diff --git a/lily/include/vertical-align-elem.hh b/lily/include/vertical-align-elem.hh
deleted file mode 100644 (file)
index b4962c3..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-  vertical-align-item.hh -- declare Vertical_align_elem
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef VERTICAL_ALIGN_ITEM_HH
-#define VERTICAL_ALIGN_ITEM_HH
-
-#include "score-elem.hh"
-
-/**
-  Order elements top to bottom.
- */
-class Vertical_align_element : virtual public Score_elem {
-    Link_array<Score_elem> elem_l_arr_;
-public:
-    void add (Score_elem*);
-    bool contains_b (Score_elem const*) const;
-    Vertical_align_element();
-    DECLARE_MY_RUNTIME_TYPEINFO;
-protected:
-    virtual void do_substitute_dependency (Score_elem*,Score_elem*);
-    virtual void do_post_processing() ;
-};
-#endif // VERTICAL_ALIGN_ITEM_HH
diff --git a/lily/include/vertical-align-engraver.hh b/lily/include/vertical-align-engraver.hh
new file mode 100644 (file)
index 0000000..0f6bd5f
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+  vertical-align-engraver.hh -- declare Vertical_align_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#ifndef VERTICAL_ALIGN_GRAV_HH
+#define VERTICAL_ALIGN_GRAV_HH
+
+#include "engraver.hh"
+
+class Vertical_align_engraver : public Engraver {
+  Vertical_align_spanner * valign_p_;
+    
+public:
+  TRANSLATOR_CLONE(Vertical_align_engraver);
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  Vertical_align_engraver();
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_creation_processing();
+  virtual void do_removal_processing();
+};
+
+#endif // VERTICAL_ALIGN_GRAV_HH
diff --git a/lily/include/vertical-align-grav.hh b/lily/include/vertical-align-grav.hh
deleted file mode 100644 (file)
index c61ba39..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  vertical-align-grav.hh -- declare Vertical_align_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#ifndef VERTICAL_ALIGN_GRAV_HH
-#define VERTICAL_ALIGN_GRAV_HH
-
-#include "engraver.hh"
-
-class Vertical_align_engraver : public Engraver {
-  Vertical_align_spanner * valign_p_;
-    
-public:
-  TRANSLATOR_CLONE(Vertical_align_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  Vertical_align_engraver();
-protected:
-  virtual void acknowledge_element (Score_elem_info);
-  virtual void do_creation_processing();
-  virtual void do_removal_processing();
-};
-
-#endif // VERTICAL_ALIGN_GRAV_HH
index df8be95bc5b0a18ebf14d0f7797c8c556aa1f95e..667ab5e991cc42257f731b3d49436526542e6d89 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #define VERTICAL_ALIGN_SPANNER_HH
 
 #include "spanner.hh"
-#include "vertical-align-elem.hh"
+#include "align-element.hh"
 
-class Vertical_align_spanner : public Vertical_align_element, public Spanner
+class Vertical_align_spanner : public Align_element, public Spanner
 {
 public:
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEM_CLONE(Vertical_align_spanner);
-    virtual void do_print() const { Vertical_align_element::do_print () ; }
+  DECLARE_MY_RUNTIME_TYPEINFO;
+  SCORE_ELEMENT_CLONE(Vertical_align_spanner);
+  Vertical_align_spanner ();
+  virtual void do_print() const ;
     
 };
 #endif // VERTICAL_ALIGN_SPANNER_HH
diff --git a/lily/include/vertical-group-elem.hh b/lily/include/vertical-group-elem.hh
deleted file mode 100644 (file)
index f60623e..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*   
-  vertical-group-elem.hh -- declare 
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-  
- */
-
-#ifndef VERTICAL_GROUP_ELEM_HH
-#define VERTICAL_GROUP_ELEM_HH
-
-#include "axis-group-element.hh"
-/**
-  Like Horizontal_group_element, but in X direction
- */
-class Vertical_group_element : public virtual Axis_group_element {
-protected:
-    virtual Interval do_height() const;
-    virtual void remove_all();
-
-public:
-    virtual void add_element (Graphical_element*);
-    virtual void remove_element (Graphical_element*);
-    DECLARE_MY_RUNTIME_TYPEINFO;
-};
-
-#endif /* VERTICAL_GROUP_ELEM_HH */
-
diff --git a/lily/include/vertical-group-element.hh b/lily/include/vertical-group-element.hh
new file mode 100644 (file)
index 0000000..b3eee34
--- /dev/null
@@ -0,0 +1,27 @@
+/*   
+  vertical-group-element.hh -- declare 
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef VERTICAL_GROUP_ELEM_HH
+#define VERTICAL_GROUP_ELEM_HH
+
+#include "axis-group-element.hh"
+/**
+  Like Horizontal_group_element, but in X direction
+ */
+class Vertical_group_element : public virtual Axis_group_element {
+protected:
+  virtual Interval do_height() const;
+
+public:
+  Vertical_group_element () ;
+  DECLARE_MY_RUNTIME_TYPEINFO;
+};
+
+#endif /* VERTICAL_GROUP_ELEM_HH */
+
index 678137e29f08ba2771fe7d9970d90edf8c8d727e..9df0d88053761106653d58cbf6f1b3277962e11e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
 #define SPAN_VERTICAL_GROUP_HH
 
 #include "axis-group-spanner.hh"
-#include "vertical-group-elem.hh"
+#include "vertical-group-element.hh"
 
 /** An element which groups a line. 
  */
 class Vertical_group_spanner : public Axis_group_spanner, public Vertical_group_element
 {
 protected:
-  SCORE_ELEM_CLONE(Vertical_group_spanner);
-  virtual void remove_all() { Vertical_group_element::remove_all (); }
+  SCORE_ELEMENT_CLONE(Vertical_group_spanner);
   virtual void do_junk_links () { Axis_group_spanner::do_junk_links (); }
   virtual void do_unlink () { Axis_group_spanner::do_unlink (); }
 public:
   DECLARE_MY_RUNTIME_TYPEINFO;
-  virtual void add_element (Graphical_element*e) { Vertical_group_element::add_element (e); }
-  virtual void remove_element (Graphical_element*e) { Vertical_group_element::remove_element (e); }  
+  Vertical_group_spanner ();
 };
 
 
index a9fec21204b9649e4994a61e70176d1699419dd3..887999e91225a33e56dbc2d7ee7e10c99816f00b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 7465c279e64873c3e18e18aedaee07465a6f12d4..0589f4643481923cd57593f136193c033671648f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -14,7 +14,7 @@
 
 /// wordwrap type algorithm: move to next line if current is optimal.
 struct Word_wrap : Break_algorithm {
-    virtual Array<Col_hpositions> do_solve() const;
+    virtual Array<Column_x_positions> do_solve() const;
     Word_wrap();
 };
 
index 70856b56dc14cb3f1a869e3adff845f7b7f1a6c1..f0e66c0793b5e522f9c966a8c6fead403d3b547b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "ineq-constrained-qp.hh"
 #include "qlpsolve.hh"
@@ -17,6 +17,7 @@
 
 const int MAXITER=100;         // qlpsolve.hh
 
+const int MAXDEGEN=5;
 
 /*
   assume x (idx) == value, and adjust constraints, lin and quad accordingly
@@ -119,13 +120,13 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
 
   Vector x (start);
   Vector gradient=quad_*x+lin_;
-  //    Real fvalue = x*quad_*x/2 + lin*x + const_term;
-  // it's no use.
 
+  
+  //    Real fvalue = x*quad_*x/2 + lin*x + const_term;// it's no use.
   Vector last_gradient (gradient);
   int iterations=0;
 
-  while (iterations++ < MAXITER)
+  while (iterations++ < MAXITER && act.degenerate_count_i_ < MAXDEGEN)
     {
       //#ifdef PARANOID
       if (experimental_features_global_b)
@@ -134,7 +135,7 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
       
       Vector direction= - act.find_active_optimum (gradient);
 
-      DOUT << "gradient "<< gradient<< "\ndirection " << direction<<"\n";
+      DOUT << "gradient "<< gradient<< "\ndirection " << direction<< '\n';
 
       if (direction.norm() > EPS)
        {
@@ -162,7 +163,10 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
              if (numerator >= 0)
                {
                  if (numerator > EPS)
-                   warning (String ("Ineq_constrained_qp::solve (): Constraint off by ") + numerator);
+                   {
+                     warning (_f ("Ineq_constrained_qp::solve (): Constraint off by %f", numerator));
+                     act.degenerate_count_i_ ++;
+                   }
                  minalf = -numerator;
                  minidx = ia;
                  break;
@@ -180,23 +184,21 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
 
          Real optimal_step = minalf;
 
-         Vector deltax=direction * optimal_step;
+         Vector deltax = direction * optimal_step;
          x += deltax;
          gradient += optimal_step * (quad_ * deltax);
 
-         DOUT << "step = " << optimal_step<< " (|dx| = " <<
-           deltax.norm() << ")\n";
+         DOUT << "step = " << optimal_step << " (|dx| = " <<
+           to_str (deltax.norm()) << ")\n";
 
          if (minalf < unbounded_alfa)
            {
              /* bumped into an edge. try again, in smaller space. */
-             act.add (minidx.idx());
-             DOUT << "adding cons "<< minidx.idx()<<'\n';
+             act.add_constraint (minidx.idx());
+             DOUT << "adding cons "<< minidx.idx () << '\n';
              continue;
            }
-         /*ASSERT: we are at optimal solution for this "plane"*/
-
-
+         /*ASSERT: we are at the optimal solution for this "plane"*/
        }
 
       Vector lagrange_mult=act.get_lagrange (gradient);
@@ -213,13 +215,14 @@ Ineq_constrained_qp::constraint_solve (Vector start) const
          break;
        }
 
-      DOUT << "dropping cons " << m<<'\n';
-      act.drop (m);
+      DOUT << "dropping cons " << m << '\n';
+      act.drop_constraint (m);
     }
   if (iterations >= MAXITER)
-    WARN<<_("didn't converge!\n");
-
-  DOUT <<  ": found " << x<<" in " << iterations <<" iterations\n";
+    WARN << _ ("didn't converge!") << '\n';
+  if (act.degenerate_count_i_ >= MAXDEGEN)
+    WARN << _ ("Too much degeneracy. ") << '\n';
+  DOUT <<  ": found " << x << " in " << iterations <<" iterations\n";
   assert_solution (x);
   return x;
 }
@@ -246,3 +249,33 @@ Ineq_constrained_qp::dim () const
   return lin_.dim();
 }
 
+
+
+
+void
+Ineq_constrained_qp::assert_solution (Vector sol) const
+{
+  bool sol_b=true;
+
+  for (int i=0; sol_b && i < cons_.size(); i++) 
+    {
+      Real R=cons_[i] * sol- consrhs_[i];
+      if (R> -EPS)
+       sol_b = false;
+    }
+}
+
+void
+Ineq_constrained_qp::print() const
+{
+#ifndef NPRINT
+  DOUT << "Quad " << quad_;
+  DOUT << "lin " << lin_ << '\n'
+       << "const " << const_term_<< '\n';
+  for (int i=0; i < cons_.size(); i++) 
+    {
+      DOUT << "constraint["<<i<<"]: " << cons_[i] << " >= " << consrhs_[i];
+      DOUT << '\n';
+    }
+#endif
+}
index 20f52f0553021944e697561bbf55f47b864dea6d..ec4a583a0752f33472e6fe97f44bb5ba4f74c8fd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "p-score.hh"
 // #include "elem-group.hh"
 #include "spanner.hh"
 
-Item::Item()
+Item::Item ()
 {
   break_priority_i_ = 0;
   breakable_b_ = false;
-  break_status_i_ = CENTER;
+  break_status_dir_ = CENTER;
   broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0;
 }
 
-IMPLEMENT_IS_TYPE_B1(Item, Score_elem);
+IMPLEMENT_IS_TYPE_B1(Item, Score_element);
 
 void
 Item::do_print() const
 {
 #ifndef NPRINT
   DOUT << "breakable_b_: " << breakable_b_ << 
-    " break_status_i_: " <<break_status_i_;
+    " break_status_dir_: " << break_status_dir_;
 #endif
 }
 
@@ -42,13 +42,19 @@ Item::hpos_f() const
 Line_of_score *
 Item::line_l() const
 {
-  return  (axis_group_l_a_[X_AXIS])? axis_group_l_a_[X_AXIS]->line_l() : 0;
+  Graphical_axis_group *ga = axis_group_l_a_[X_AXIS];
+  
+  if (!ga)
+    return 0;
+  
+  assert (ga->access_Score_element());
+  return ga->access_Score_element ()-> line_l ();
 }
 
-int
-Item::break_status_i() const
+Direction
+Item::break_status_dir() const
 {
-  return break_status_i_;
+  return break_status_dir_;
 }
 
 void
@@ -60,9 +66,9 @@ Item::copy_breakable_items()
   Direction  i=LEFT;
   do 
     {
-      Item * item_p = clone()->item ();
+      Item * item_p = clone()->access_Item ();
 
-      item_p->break_status_i_ =  i;
+      item_p->break_status_dir_ =  i;
       pscore_l_->typeset_element (item_p);
       item_p->handle_prebroken_dependencies();
       new_copies[i] =item_p;
@@ -85,7 +91,7 @@ Item::do_breakable_col_processing()
 
   /*
     Otherwise the broken items won't be pre_process()'ed.
-    */
+  */
   add_dependency (broken_to_drul_[LEFT]);
   add_dependency (broken_to_drul_[RIGHT]);    
 }
@@ -116,16 +122,16 @@ void
 Item::handle_prebroken_dependencies()
 {
   if (breakable_b_)
-    Score_elem::handle_prebroken_dependencies();
+    Score_element::handle_prebroken_dependencies();
 }
 
 int
 Item::left_right_compare(Item const *l, Item const *r)
 {
   while (!l->is_type_b (Paper_column::static_name ()))
-    l = l->axis_group_l_a_[X_AXIS]->item();
+    l = l->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
   while (!r->is_type_b (Paper_column::static_name ()))
-    r = r->axis_group_l_a_[X_AXIS]->item();
+    r = r->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
 
   Paper_column *p1 = (Paper_column*)l;
   Paper_column* p2 = (Paper_column*)r;
@@ -136,7 +142,7 @@ Item::left_right_compare(Item const *l, Item const *r)
 bool
 Item::linked_b() const
 {
-  return Score_elem::linked_b() || attached_span_l_arr_.size();
+  return Score_element::linked_b() || attached_span_l_arr_.size();
 }
 
 void
@@ -148,21 +154,38 @@ Item::do_junk_links()
 void
 Item::do_unlink()
 {
-  Link_array<Spanner> attached = attached_span_l_arr_;
+  for (int i=0; i < attached_span_l_arr_.size (); i++)
+    {
+      Spanner *&s= attached_span_l_arr_[i];
+
+      Direction d= LEFT;
+      do {
+       if (s->spanned_drul_[d] == this)
+         s->set_bounds (d, 0);
 
-  for (int i=0; i < attached_span_l_arr_.size (); i++) {
-    Spanner *&s= attached_span_l_arr_[i];
-    if (s->spanned_drul_[LEFT] == this)
-      s->set_bounds (LEFT, 0);
-    if  (s->spanned_drul_[RIGHT] == this)
-      s->set_bounds (RIGHT,0);
-    s =0;
-  }
+      } while ( flip (&d) != LEFT);
+    }
   attached_span_l_arr_.set_size (0);
 }
 
 Paper_column *
 Item::column_l () const
 {
-  return axis_group_l_a_[X_AXIS]->item ()->column_l ();
+  return axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ()->column_l ();
+}
+
+Item::Item (Item const &s)
+  : Score_element (s)
+{
+  /* do not copy attached_span_l_arr_ */
+  breakable_b_ = s.breakable_b_;
+  broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
+  break_status_dir_ = s.break_status_dir_;
+  break_priority_i_ = s.break_priority_i_;
+}
+
+Item *
+Item::access_Item ()
+{
+  return this; 
 }
diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc
new file mode 100644 (file)
index 0000000..7772f0e
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+  key-reg.cc -- implement Key_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+  */
+#include "key-engraver.hh"
+#include "key-item.hh"
+#include "command-request.hh"
+#include "local-key-engraver.hh"
+#include "musical-request.hh"
+#include "local-key-item.hh"
+#include "bar.hh"
+#include "time-description.hh"
+
+Key_engraver::Key_engraver ()
+{
+  kit_p_ = 0;
+  do_post_move_processing ();
+}
+
+void
+Key_engraver::create_key ()
+{
+  if (!kit_p_) 
+    {
+      kit_p_ = new Key_item;
+      kit_p_->break_priority_i_ = -1; // ugh
+      announce_element (Score_element_info (kit_p_,keyreq_l_));
+      kit_p_->read (*this);
+    }
+}
+
+bool
+Key_engraver::do_try_request (Request * req_l)
+{
+  Command_req* creq_l= req_l->access_Command_req ();
+  if (!creq_l|| !creq_l->access_Key_change_req ())
+    return false;
+   
+  if (keyreq_l_)
+    return false;              // TODO
+  keyreq_l_ = creq_l->access_Key_change_req ();
+  read_req (keyreq_l_);
+  return true;
+}
+
+void
+Key_engraver::acknowledge_element (Score_element_info info)
+{
+  Command_req * r_l = info.req_l_->access_Command_req () ;
+  if (r_l && r_l->access_Clef_change_req ()) 
+    {
+      create_key ();
+    }
+  else if (info.elem_l_->is_type_b (Bar::static_name ())
+          && accidental_idx_arr_.size ()) 
+    {
+      if (!keyreq_l_)
+       default_key_b_ = true;
+      create_key ();
+    }
+
+}
+
+void
+Key_engraver::do_process_requests ()
+{
+  if (keyreq_l_) 
+    {
+      create_key ();
+    }
+}
+
+void
+Key_engraver::do_pre_move_processing ()
+{ 
+  if (kit_p_) 
+    {
+      kit_p_->default_b_ = default_key_b_;
+      typeset_element (kit_p_);
+      kit_p_ = 0;
+    }
+}
+
+
+/*
+  TODO Slightly hairy.  
+ */
+void
+Key_engraver::read_req (Key_change_req const * r)
+{
+  old_accidental_idx_arr_ = accidental_idx_arr_;
+  key_.clear ();
+  Scalar prop = get_property ("specialaccidentals");
+  if (prop.length_i () > 0)
+    {
+      key_.multi_octave_b_ = prop.to_bool ();
+    }
+  
+  accidental_idx_arr_.clear ();
+
+  if (r->ordinary_key_b_) 
+    {
+      int p;
+      if (r->pitch_arr_.size () < 1) 
+        {
+         r->warning (_ ("No key name: assuming `C'"));
+         p = 0;
+       }
+      else
+       {
+         p = r->pitch_arr_[0].semitone_pitch ();
+         if (r->minor_b ())
+           p += 3;
+       }
+      /* 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 * r->pitch_arr_[0].accidental_i_ < 0)
+       no_of_acc += 12 * sign (r->pitch_arr_[0].accidental_i_);
+
+      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;
+             if (key_.multi_octave_b_)
+               key_.set (m);
+             else
+               key_.set (m.notename_i_, m.accidental_i_);
+             accidental_idx_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;
+             if (key_.multi_octave_b_)
+               key_.set (m);
+             else
+               key_.set (m.notename_i_, m.accidental_i_);
+             accidental_idx_arr_.push (m);
+             
+             accidental = (accidental + 4) % 7 ;
+           }
+       }
+    }
+  else // Special key
+    {
+      for (int i = 0; i < r->pitch_arr_.size (); i ++) 
+       {
+         Musical_pitch m_l =r->pitch_arr_[i];
+         if (key_.multi_octave_b_)
+           key_.set (m_l);
+         else
+           key_.set (m_l.notename_i_, m_l.accidental_i_);
+         
+         accidental_idx_arr_.push (m_l);
+       }
+    }
+}
+
+void
+Key_engraver::do_post_move_processing ()
+{
+  keyreq_l_ = 0;
+  default_key_b_ = false;
+}
+
+
+IMPLEMENT_IS_TYPE_B1 (Key_engraver,Engraver);
+ADD_THIS_TRANSLATOR (Key_engraver);
+
diff --git a/lily/key-grav.cc b/lily/key-grav.cc
deleted file mode 100644 (file)
index f50fc47..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-  key-reg.cc -- implement Key_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-
-  
-  Todo: key undo, special keys.
-  
-  */
-#include "key-grav.hh"
-#include "key-item.hh"
-#include "command-request.hh"
-#include "local-key-grav.hh"
-#include "musical-request.hh"
-#include "local-key-item.hh"
-#include "bar.hh"
-#include "time-description.hh"
-
-Key_engraver::Key_engraver()
-{
-  kit_p_ = 0;
-  do_post_move_processing();
-}
-
-void
-Key_engraver::create_key()
-{
-  if (!kit_p_) 
-    {
-      int c0_i=0;
-
-      Staff_info inf = get_staff_info();
-      if (inf.c0_position_i_l_)
-       c0_i = *get_staff_info().c0_position_i_l_;      
-       
-      kit_p_ = new Key_item (c0_i);
-      kit_p_->break_priority_i_ = -1; // ugh
-      announce_element (Score_elem_info (kit_p_,keyreq_l_));
-      kit_p_->read (*this);
-    }
-}
-
-bool
-Key_engraver::do_try_request (Request * req_l)
-{
-  Command_req* creq_l= req_l->command();
-  if (!creq_l|| !creq_l->keychange())
-    return false;
-   
-  if (keyreq_l_)
-    return false;              // TODO
-  keyreq_l_ = creq_l->keychange();
-  read_req (keyreq_l_);
-  return true;
-}
-
-void
-Key_engraver::acknowledge_element (Score_elem_info info)
-{
-  Command_req * r_l = info.req_l_->command() ;
-  if (r_l && r_l->clefchange()) 
-    {
-      create_key();
-    }
-  else if (info.elem_l_->is_type_b (Bar::static_name ())) 
-    {
-      if (!keyreq_l_)
-       default_key_b_ = true;
-      create_key();
-    }
-
-}
-
-void
-Key_engraver::do_process_requests()
-{
-  if (key_.multi_octave_b_) 
-    {
-      assert (false); // TODO . 
-    }
-  else if (keyreq_l_) 
-    {
-      create_key();
-    }
-}
-
-void
-Key_engraver::do_pre_move_processing()
-{ 
-  if (kit_p_) 
-    {
-      kit_p_->default_b_ = default_key_b_;
-      typeset_element (kit_p_);
-      kit_p_ = 0;
-    }
-}
-
-
-  
-void
-Key_engraver::read_req (Key_change_req const * r)
-{
-  key_.clear ();
-  key_.multi_octave_b_ = r->multi_octave_b_;
-  accidental_idx_arr_.clear();
-
-  for (int i = 0; i < r->pitch_arr_.size(); i ++) 
-    {
-      Musical_pitch m_l =r->pitch_arr_[i];
-      if (r->multi_octave_b_)
-       key_.set (m_l);
-      else
-       key_.set (m_l.notename_i_, m_l.accidental_i_);
-
-      accidental_idx_arr_.push (m_l.notename_i_);
-    }
-}
-
-void
-Key_engraver::do_post_move_processing()
-{
-  keyreq_l_ = 0;
-  default_key_b_ = false;
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Key_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Key_engraver);
index 93abfa0575bd1946e894605a87a40843583d8573..94645d20c227f762021d3c00d5d96a10e6a22cae 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   keyplacement by Mats Bengtsson
 */
 #include "paper-def.hh"
 #include "lookup.hh"
 
-#include "key-grav.hh"
+#include "key-engraver.hh"
 
 const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */
 const int SHARP_TOP_PITCH=4; /*  ais and bis typeset in lower octave */
 
-Key_item::Key_item (int c)
+Key_item::Key_item ()
 {
   breakable_b_ =true;
   default_b_ = false;
-  set_c_position (c);
+  set_c_position (0);
 }
 
 void
 Key_item::read (Key_engraver const & key_grav_r)
 {
-  assert (!key_grav_r.key_.multi_octave_b_);
-  const Array<int> &idx_arr =key_grav_r.accidental_idx_arr_; 
+  multi_octave_b_ = key_grav_r.key_.multi_octave_b_;
+  const Array<Musical_pitch> &idx_arr = key_grav_r.accidental_idx_arr_; 
   for (int i = 0 ; i< idx_arr.size(); i++) 
     {
-      int note = idx_arr[i];
-      int acc = ((Key &) key_grav_r.key_).oct (0).acc (note);
-
-      add (note, acc);
+      Musical_pitch m_l =idx_arr[i];
+      if (multi_octave_b_)
+        add (m_l);
+      else
+       add (m_l.notename_i_, m_l.accidental_i_);
+    }
+  const Array<Musical_pitch> &old_idx_arr = key_grav_r.old_accidental_idx_arr_; 
+  for (int i = 0 ; i< old_idx_arr.size(); i++) 
+    {
+      Musical_pitch m_l =old_idx_arr[i];
+      if (multi_octave_b_)
+        add_old (m_l);
+      else
+       add_old (m_l.notename_i_, m_l.accidental_i_);
     }
 }
 
 void 
 Key_item::set_c_position (int c0)
 {
-  int from_bottom_pos = c0 + 4;        // ugh
-  int octaves =(from_bottom_pos / 7) +1 ;
-  from_bottom_pos =(from_bottom_pos + 7*octaves)%7;
+  c0_position = c0;
+  // Find the c in the range -4 through 2
+  int from_bottom_pos = c0 + 4;        
+  from_bottom_pos = from_bottom_pos%7;
+  from_bottom_pos = (from_bottom_pos + 7)%7; // Precaution to get positive.
   c_position  = from_bottom_pos - 4;
 }
 
@@ -54,36 +66,101 @@ Key_item::set_c_position (int c0)
 void
 Key_item::add (int p, int a)
 {
-  if ((a<0 && ((p>FLAT_TOP_PITCH) || (p+c_position>4)) && (p+c_position>1)) 
-      ||
-      (a>0 && ((p>SHARP_TOP_PITCH) || (p+c_position>5)) && (p+c_position>2))) 
-    {
-      p -= 7; /* Typeset below c_position */
-    }
   pitch.push (p);
   acc.push (a);
 }
 
+void
+Key_item::add (const Musical_pitch& pitch_r)
+{
+  pitch.push (pitch_r.steps());
+  acc.push (pitch_r.accidental_i_);
+}
+
+void
+Key_item::add_old (int p, int a)
+{
+  old_pitch.push (p);
+  old_acc.push (a);
+}
 
+void
+Key_item::add_old (const Musical_pitch& pitch_r)
+{
+  old_pitch.push (pitch_r.steps());
+  old_acc.push (pitch_r.accidental_i_);
+}
+
+int
+Key_item::calculate_position(int p, int a) const
+{
+  if (multi_octave_b_) 
+    {
+      return p + c0_position;
+    }
+  else {
+    if ((a<0 && ((p>FLAT_TOP_PITCH) || (p+c_position>4)) && (p+c_position>1)) 
+       ||
+       (a>0 && ((p>SHARP_TOP_PITCH) || (p+c_position>5)) && (p+c_position>2))) 
+      {
+       p -= 7; /* Typeset below c_position */
+      }
+    return p + c_position;
+  }
+}
+
+/*
+  TODO space the `natural' signs wider
+ */
 Molecule*
 Key_item::brew_molecule_p() const
 {
   Molecule*output = new Molecule;
   Real inter = paper()->internote_f ();
   
+  int j;
+  if ((break_status_dir_ == LEFT || break_status_dir_ == CENTER)
+      || old_pitch.size ())
+    {
+      for (int i =0; i < old_pitch.size(); i++) 
+        {
+          for (j =0; (j < pitch.size()) && (old_pitch[i] != pitch[j]); j++) 
+           ;
+         
+          if (j == pitch.size()
+             || (old_pitch[i] == pitch[j] && old_acc[i] != acc[j]))
+            {
+              Atom a =lookup_l ()->accidental (0);
+              a.translate_axis (calculate_position(old_pitch[i], old_acc[i]) * inter, Y_AXIS);
+              Molecule m (a);
+              output->add_at_edge (X_AXIS, RIGHT, m);  
+            }
+        }
+
+      /*
+       Add half a space between  cancellation and key sig.
+
+       As suggested by [Ross], p.148.
+       */
+      Interval x(0, inter);
+      Interval y(0,0);
+
+      output->add_at_edge (X_AXIS, RIGHT, lookup_l()->fill (Box(x,y)));
+    }
   for (int i =0; i < pitch.size(); i++) 
     {
-      Atom a =paper()->lookup_l ()->accidental (acc[i]);
-      a.translate_axis ((c_position + pitch[i]) * inter, Y_AXIS);
+      Atom a =lookup_l ()->accidental (acc[i]);
+      a.translate_axis (calculate_position(pitch[i], acc[i]) * inter, Y_AXIS);
       Molecule m (a);
       output->add_at_edge (X_AXIS, RIGHT, m);  
     }
   if (pitch.size()) 
     {
-      Molecule m (paper()->lookup_l ()->fill (Box (
-                                                  Interval (0, paper()->note_width ()),
-                                                  Interval (0,0))));
-
+      Molecule m (lookup_l ()->fill (Box (
+                                         Interval (0, paper()->note_width ()),
+                                         Interval (0,0))));
+      
       output->add_at_edge (X_AXIS, RIGHT, m);
     }
   return output;
@@ -96,7 +173,7 @@ Key_item::do_pre_processing()
 {
   if (default_b_) 
     {
-      transparent_b_ = (break_status_i() != 1);
+      transparent_b_ = (break_status_dir() != RIGHT);
       set_empty (transparent_b_);
     }
 }
index 527cf06cbbf6efcfbbc637179b68c0f8bbebc286..02e80fca2891fe469aec3c8005cb28d41f8a6b75 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "key-performer.hh"
@@ -47,8 +47,8 @@ Key_performer::do_try_request (Request* req_l)
   if (key_req_l_)
        return false;
 
-  if (req_l->command())
-       key_req_l_ = req_l->command()->keychange ();
+  if (req_l->access_Command_req ())
+       key_req_l_ = req_l->access_Command_req ()->access_Key_change_req ();
 
   if (key_req_l_)
        return true;
index b7d9f22a23e9ef414e4750e051ebea0f43e72f17..e4ca04402c88842c55774a36c76f53e5d176537a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   TODO
   transposition.
@@ -21,7 +21,7 @@ void
 Octave_key::print () const
 {
   for (int i= 0; i < 7 ; i++)
-    DOUT << "note " << i << " acc: " << accidental_i_arr_[i] << "\n";
+    DOUT << "note " << i << " acc: " << accidental_i_arr_[i] << '\n';
 }
 
 
@@ -51,12 +51,12 @@ Key::octave_to_index (int o) const
   int i = o + ZEROOCTAVE;
   if (i < 0)
     {
-      warning ("Don't have that many octaves (" + String (o) + ")");
+      warning ("Don't have that many octaves (" + to_str (o) + ")");
       i = 0;
     }
   if (i >= NUMBER_OF_OCTAVES)
     {
-      warning ("Don't have that many octaves (" + String (o) + ")");
+      warning ("Don't have that many octaves (" + to_str (o) + ")");
       i = NUMBER_OF_OCTAVES -1;
     }
   return i;
@@ -74,12 +74,12 @@ Octave_key::set (int i, int a)
 {
   if (a <= -3)
     {
-      warning ("Underdone accidentals (" + String (a)+ ")");
+      warning ("Underdone accidentals (" + to_str (a) + ")");
       a = -2;
     }
   if (a >= 3)
     {
-      warning ("Overdone accidentals (" + String (a) + ")");
+      warning ("Overdone accidentals (" + to_str (a) + ")");
       a = 2;
     }
   accidental_i_arr_[i]=a;
index 43c87d95b5573877bfa4d7bcb6793d9a79274302..b273df2d6e2dbcb1d25bd645cdbbdeb94bcbe154 100644 (file)
@@ -13,7 +13,7 @@ int
       tabcmp (void const * p1, void const * p2)
 {
   return strcmp (((Keyword_ent const *) p1)->name,
-                ((Keyword_ent const *) p2)->name);
+                ((Keyword_ent const *) p2)->name);
 }
 
 Keyword_table::Keyword_table (Keyword_ent *tab)
@@ -21,7 +21,8 @@ Keyword_table::Keyword_table (Keyword_ent *tab)
   table = tab;
 
   /* count keywords */
-  for (maxkey = 0; table[maxkey].name; maxkey++);
+  for (maxkey = 0; table[maxkey].name; maxkey++)
+    ;
 
   /* sort them */
   qsort (table, maxkey, sizeof (Keyword_ent), tabcmp);
index 92da6c5f1d7b62d85655e865ef9035a9c63982be..91363bcc8d7047f0ea8bbe8de4c36f8b9137d652 100644 (file)
@@ -27,7 +27,7 @@
 #include "string.hh"
 #include "string-convert.hh"
 #include "my-lily-lexer.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "interval.hh"
 #include "parser.hh"
 #include "debug.hh"
@@ -78,9 +78,9 @@ UNSIGNED      {N}+
 INT            -?{UNSIGNED}
 REAL           ({INT}\.{N}*)|(-?\.{N}+)
 KEYWORD                \\{WORD}
-WHITE          [ \n\t\f]
+WHITE          [ \n\t\f\r]
 HORIZONTALWHITE                [ \t]
-BLACK          [^ \n\t\f]
+BLACK          [^ \n\t\f\r]
 RESTNAME       [rs]
 NOTECOMMAND    \\{A}+
 LYRICS         ({AA}|{TEX})[^0-9 \t\n\f]*
@@ -122,7 +122,7 @@ TELP                \\\]
                yy_pop_state ();
        }
        <<EOF>>         {
-               LexerError ("EOF found inside a comment");
+               LexerError (_ ("EOF found inside a comment").ch_C ());
                if (! close_input ()) 
                  yyterminate (); // can't move this, since it actually rets a YY_NULL
        }
@@ -152,7 +152,7 @@ TELP                \\\]
        Identifier * id = lookup_identifier (s);
        if (id) 
          {
-           String* s_p = id->string ();
+           String* s_p = id->access_String ();
            DOUT << "#include `" << *s_p << "\'\n";
            new_input (*s_p, source_global_l);
            delete s_p;
@@ -160,12 +160,12 @@ TELP              \\\]
          }
        else
          {
-           String msg ("Undefined identifier: `" + s + "'");   
+           String msg (_f ("undefined identifier: `%s\'", s ));        
            LexerError (msg.ch_C ());
          }
 }
 <incl>\"[^"]*   { // backup rule
-       cerr << "missing end quote" << endl;
+       cerr << _ ("missing end quote") << endl;
        exit (1);
 }
 <notes>{RESTNAME}      {
@@ -180,7 +180,7 @@ TELP                \\\]
 <INITIAL,lyrics,notes>\\\${BLACK}*{WHITE}      {
        String s=YYText () + 2;
        s=s.left_str (s.length_i () - 1);
-       return scan_escaped_word (s);
+       return scan_escaped_word (s); 
 }
 <INITIAL,lyrics,notes>\${BLACK}*{WHITE}                {
        String s=YYText () + 1;
@@ -188,11 +188,11 @@ TELP              \\\]
        return scan_bare_word (s);
 }
 <INITIAL,lyrics,notes>\\\${BLACK}*             { // backup rule
-       cerr << "white expected" << endl;
+       cerr << _ ("white expected") << endl;
        exit (1);
 }
 <INITIAL,lyrics,notes>\${BLACK}*               { // backup rule
-       cerr << "white expected" << endl;
+       cerr << _ ("white expected") << endl;
        exit (1);
 }
 <notes>{
@@ -203,7 +203,7 @@ TELP                \\\]
        }
 
        {NOTECOMMAND}   {
-               return scan_escaped_word (YYText ()+1);
+               return scan_escaped_word (YYText () + 1); 
        }
 
        {DIGIT}         {
@@ -226,7 +226,7 @@ TELP                \\\]
 }
 <quote>{
        \\{ESCAPED}     {
-               *yylval.string += escaped_char(YYText()[1]);
+               *yylval.string += to_str (escaped_char(YYText()[1]));
        }
        [^\\"]+ {
                *yylval.string += YYText ();
@@ -251,7 +251,7 @@ TELP                \\\]
                return UNSIGNED;
        }
        {NOTECOMMAND}   {
-               return scan_escaped_word (YYText ()+1);
+               return scan_escaped_word (YYText () + 1);
        }
        {LYRICS} {
                /* ugr. This sux. */
@@ -284,7 +284,7 @@ TELP                \\\]
        return scan_bare_word (YYText ());
 }
 {KEYWORD}      {
-       return scan_escaped_word (YYText ()+1);
+       return scan_escaped_word (YYText () + 1);
 }
 {REAL}         {
        Real r;
@@ -339,7 +339,7 @@ TELP                \\\]
 }
 
 <*>.           {
-       String msg= String ("illegal character: ") +String (YYText ()[0]);
+       String msg = _f ("illegal character: `%c\'", YYText ()[0]);
        LexerError (msg.ch_C ());
        return YYText ()[0];
 }
@@ -382,12 +382,14 @@ My_lily_lexer::scan_escaped_word (String str)
                if (notename_b (str))
                        {
                        yylval.pitch = new Musical_pitch (lookup_pitch (str));
+                       yylval.pitch->set_spot (Input (source_file_l (), 
+                         here_ch_C ()));
                        return NOTENAME_PITCH;
                        }
        }
        if (check_debug)
                print_declarations (true);
-       String msg ("Unknown escaped string: `" + str + "'");   
+       String msg (_f ("unknown escaped string: `\\%s\'", str));       
        LexerError (msg.ch_C ());
        DOUT << "(string)";
        String *sp = new String (str);
@@ -403,7 +405,8 @@ My_lily_lexer::scan_bare_word (String str)
                if (notename_b (str)) {
                    DOUT << "(notename)\n";
                    yylval.pitch = new Musical_pitch (lookup_pitch (str));
-
+                   yylval.pitch->set_spot (Input (source_file_l (), 
+                     here_ch_C ()));
                    return NOTENAME_PITCH;
                }
        }
index 8b184bb7add2f6f88dd5598d8ea49160dfb3e20e..ff16209eafa6ed80c2120de2a8dc464b4a3d1b30 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <iostream.h>
index b6a37c812b785ac2b838e8ffbdfe4233e4b41b55..18696cbd3161d8dce5cdeb6c89a438826e6d56f7 100644 (file)
@@ -3,10 +3,8 @@
 #include "config.hh"
 #include "version.hh"
 
- #define VERSION_SZ  MAJOR_VERSION "." MINOR_VERSION "."  PATCH_LEVEL MY_PATCH_LEVEL
+#define VERSION_SZ  MAJOR_VERSION "." MINOR_VERSION "."  PATCH_LEVEL "." MY_PATCH_LEVEL
 
-//#define VERSION_SZ TOPLEVEL_VERSION
-//#define VERSION_SZ "version"
 static char *s = "GNU LilyPond " VERSION_SZ ;
 
 
@@ -19,5 +17,5 @@ lily_version_number_sz()
 char const * 
 lily_version_sz()
 {
-       return s;
+  return s;
 }
diff --git a/lily/line-group-grav.cc b/lily/line-group-grav.cc
deleted file mode 100644 (file)
index 0ae8eca..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-  staff-gravs.cc -- implement Line_group_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "staff-sym.hh"
-#include "vertical-group-spanner.hh"
-#include "command-request.hh"
-#include "bar.hh"
-#include "debug.hh"
-#include "line-group-grav.hh"
-#include "p-col.hh"
-
-Line_group_engraver::Line_group_engraver()
-{
-  staffline_p_ =0;
-}
-
-void
-Line_group_engraver::acknowledge_element (Score_elem_info  elem)
-{
-  if (!elem.elem_l_->axis_group_l_a_[Y_AXIS])
-    staffline_p_->add_element (elem.elem_l_);
-}
-
-
-void
-Line_group_engraver::do_removal_processing()
-{
-  staffline_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
-  typeset_element (staffline_p_);
-  staffline_p_ = 0;
-}
-
-void
-Line_group_engraver::do_creation_processing()
-{
-  create_line_spanner ();
-  staffline_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
-
-  // don't broadcast to self.
-  announce_element (Score_elem_info (staffline_p_,0));
-}
-
-void
-Line_group_engraver::create_line_spanner ()
-{
-  staffline_p_ = new Vertical_group_spanner ;
-}
-
-
-
-IMPLEMENT_IS_TYPE_B1(Line_group_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Line_group_engraver);
-
diff --git a/lily/line-group-group-engraver.cc b/lily/line-group-group-engraver.cc
new file mode 100644 (file)
index 0000000..108e76c
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+  staff-gravs.cc -- implement Line_group_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "staff-sym.hh"
+#include "vertical-group-spanner.hh"
+#include "command-request.hh"
+#include "bar.hh"
+#include "debug.hh"
+#include "line-group-group-engraver.hh"
+#include "p-col.hh"
+
+Line_group_engraver_group::Line_group_engraver_group()
+{
+  staffline_p_ =0;
+}
+
+
+void
+Line_group_engraver_group::typeset_element (Score_element *elem)
+{
+  if (!elem->axis_group_l_a_[Y_AXIS])
+    staffline_p_->add_element (elem);
+  Engraver_group_engraver::typeset_element (elem);
+}
+
+
+void
+Line_group_engraver_group::do_removal_processing()
+{
+  Engraver_group_engraver::do_removal_processing ();
+
+  staffline_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
+  Engraver_group_engraver::typeset_element (staffline_p_);
+  staffline_p_ = 0;
+}
+
+void
+Line_group_engraver_group::do_creation_processing()
+{
+  create_line_spanner ();
+  staffline_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
+  
+  Engraver::announce_element (Score_element_info (staffline_p_,0));
+}
+
+void
+Line_group_engraver_group::create_line_spanner ()
+{
+  staffline_p_ = new Vertical_group_spanner ;
+}
+
+void
+Line_group_engraver_group::do_announces ()
+{
+  Engraver_group_engraver::do_announces ();
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Line_group_engraver_group,Engraver_group_engraver);
+ADD_THIS_TRANSLATOR(Line_group_engraver_group);
+
diff --git a/lily/line-of-score.cc b/lily/line-of-score.cc
new file mode 100644 (file)
index 0000000..164d079
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+  scoreline.cc -- implement Line_of_score
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "line-of-score.hh"
+#include "dimension.hh"
+#include "spanner.hh"
+#include "atom.hh"
+#include "paper-def.hh"
+#include "p-col.hh"
+#include "p-score.hh"
+
+
+Line_of_score::Line_of_score()
+{
+  error_mark_b_ = 0;
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Line_of_score,Spanner);
+
+void
+Line_of_score::add_element (Score_element*e)
+{
+  // avoid excess dependencies.
+  if (!(e->axis_group_l_a_[0] || e->axis_group_l_a_[1]))
+    add_dependency (e);
+}
+
+bool
+Line_of_score::contains_b (Paper_column const* c) const
+{
+  return cols.find_l ((Paper_column*)c);
+}
+
+void
+Line_of_score::set_breaking (Array<Column_x_positions> const &breaking)
+{
+  for (int j=0; j < breaking.size(); j++) 
+    {
+      const Array<Paper_column*> &curline (breaking[j].cols);
+      const Array<Paper_column*> &errors (breaking[j].error_col_l_arr_);
+      const Array<Real> &config (breaking[j].config);
+       
+      for (int i=0; i < errors.size(); i++)
+       errors[i]->error_mark_b_ = true;
+
+      Line_of_score *line_l=0;
+      Line_of_score *line_p =0;
+       
+      if (breaking.size() >1) 
+       {
+         line_p = (Line_of_score*)clone()->access_Spanner ();
+         line_l = line_p;
+       }
+      else 
+       line_l =  this;
+       
+      ((Array<Paper_column*> &)line_l->cols) = curline;
+      line_l->set_bounds(LEFT,curline[0]);
+      
+      line_l->set_bounds(RIGHT,curline.top());
+       
+      if (line_p) 
+       {
+         pscore_l_->typeset_broken_spanner (line_p);
+         broken_into_l_arr_.push (line_p);
+       }
+
+      for (int i=0; i < curline.size(); i++)
+       {
+         curline[i]->translate_axis (config[i],X_AXIS);
+         curline[i]->line_l_ = (Line_of_score*)line_l;
+       }
+    }
+}
+
+
+void
+Line_of_score::break_into_pieces (bool)
+{
+  
+}
+
+Link_array<Line_of_score>
+Line_of_score::get_lines() const
+{
+  Link_array<Line_of_score> ret;
+
+  if (broken_into_l_arr_.size())
+    for (int i=0; i < broken_into_l_arr_.size(); i++) 
+      {
+       ret.push ((Line_of_score*)broken_into_l_arr_[i]);
+      }
+  else 
+    ret.push ((Line_of_score*)this);   // ugh
+  
+  return ret;
+}
+
+void
+Line_of_score::do_print() const
+{
+  Spanner::do_print();
+}
+
+Interval
+Line_of_score::do_width() const
+{ 
+  return Spanner::do_width();
+}
+
+Link_array<Score_element>
+Line_of_score::get_extra_dependencies () const
+{
+  Link_array<Score_element> r;
+  for (int i=0; i < cols.size (); i++)
+    r.push (cols[i]);
+  return r;
+}
+
+void
+Line_of_score::do_unlink () 
+{
+  Spanner::do_unlink ();
+  for (int i=0; i < cols.size (); i++)
+    cols[i]->line_l_ =0;
+  cols.set_size (0);
+}
+
+
+void
+Line_of_score::do_junk_links () 
+{
+  cols.set_size (0);
+}
index 95b77e24c651abda41254b99827b2cc49c8d094b..ffd65ff34e248bffb6ec5a063ad924179f0f0114 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index eed55a9b3726cf61fbb205a394972d046ac1a9b3..6ccc0b31e40faf7a7074c583fd7a4c8cceefa0da 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc
new file mode 100644 (file)
index 0000000..222d25b
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+  local-key-reg.cc -- implement Local_key_engraver
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "musical-request.hh"
+#include "command-request.hh"
+#include "local-key-engraver.hh"
+#include "local-key-item.hh"
+#include "key-engraver.hh"
+#include "debug.hh"
+#include "key-item.hh"
+#include "tie.hh"
+#include "note-head.hh"
+#include "time-description.hh"
+#include "engraver-group.hh"
+
+
+Local_key_engraver::Local_key_engraver()
+{
+  key_C_ = 0;
+  key_item_p_ =0;
+}
+
+void
+Local_key_engraver::do_creation_processing ()
+{
+  /*
+    UGHGUHGUH.
+
+    Breaks if Key_engraver is removed from under us.
+   */
+  Translator * result =
+    daddy_grav_l()->get_simple_translator (Key_engraver::static_name());
+
+  if (!result)
+    {
+      warning (_ ("out of tune") + "! " + _ ("can't find") + " Key_engraver");
+    }
+  else
+    {
+      key_C_ = &((Key_engraver*)result->engraver_l ())->key_;
+      local_key_ = *key_C_;
+    }
+}
+
+void
+Local_key_engraver::process_acknowledged ()
+{
+  if (!key_item_p_ && mel_l_arr_.size()) 
+    {
+      for (int i=0; i  < mel_l_arr_.size(); i++) 
+       {
+         Item * support_l = support_l_arr_[i];
+         Note_req * note_l = mel_l_arr_[i];
+
+         if (tied_l_arr_.find_l (support_l) && 
+             !note_l->forceacc_b_)
+           continue;
+           
+         if (!note_l->forceacc_b_
+             && local_key_.different_acc (note_l->pitch_))
+           continue;
+         if (!key_item_p_) 
+           {
+             key_item_p_ = new Local_key_item;
+             announce_element (Score_element_info (key_item_p_, 0));         
+           }
+         key_item_p_->add (note_l->pitch_);
+         key_item_p_->add_support (support_l);
+         local_key_.set (note_l->pitch_);
+       }
+       
+    }
+}
+
+void
+Local_key_engraver::do_pre_move_processing()
+{
+  if (key_item_p_)
+    {
+      for (int i=0; i < support_l_arr_.size(); i++)
+       key_item_p_->add_support (support_l_arr_[i]);
+
+      typeset_element (key_item_p_);
+      key_item_p_ =0;
+    }
+  
+  mel_l_arr_.clear();
+  tied_l_arr_.clear();
+  support_l_arr_.clear();
+  forced_l_arr_.clear();       
+}
+
+void
+Local_key_engraver::acknowledge_element (Score_element_info info)
+{    
+  Score_element * elem_l = info.elem_l_;
+  Item * item_l = elem_l->access_Item();
+
+  Note_req * note_l = (info.req_l_->access_Musical_req ())
+    ? info.req_l_->access_Musical_req ()->access_Note_req () : 0;
+
+  if (note_l &&  item_l && item_l->is_type_b (Note_head::static_name ()))
+    {
+      mel_l_arr_.push (note_l);
+      support_l_arr_.push (item_l);
+    }
+  else if (info.req_l_->access_Command_req ()
+          && info.req_l_->access_Command_req ()->access_Key_change_req () && key_C_) 
+    {
+      local_key_ = *key_C_;
+    }
+  else if (elem_l->is_type_b (Tie::static_name ())) 
+    {
+      Tie * tie_l = (Tie*)elem_l->access_Spanner ();
+      if (tie_l->same_pitch_b_)
+       tied_l_arr_.push (tie_l-> head_l_drul_[RIGHT]);
+    }
+}
+
+void
+Local_key_engraver::do_process_requests()
+{
+  Time_description const * time_C_ = get_staff_info().time_C_;
+  if (time_C_ && !time_C_->whole_in_measure_)
+    {
+      if (key_C_)
+       local_key_= *key_C_;
+    }
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Local_key_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Local_key_engraver);
diff --git a/lily/local-key-grav.cc b/lily/local-key-grav.cc
deleted file mode 100644 (file)
index 8e492b6..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
-  local-key-reg.cc -- implement Local_key_engraver
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "musical-request.hh"
-#include "command-request.hh"
-#include "local-key-grav.hh"
-#include "local-key-item.hh"
-#include "key-grav.hh"
-#include "debug.hh"
-#include "key-item.hh"
-#include "tie.hh"
-#include "note-head.hh"
-#include "time-description.hh"
-#include "engraver-group.hh"
-
-
-Local_key_engraver::Local_key_engraver()
-{
-  key_C_ = 0;
-  key_item_p_ =0;
-}
-
-void
-Local_key_engraver::do_creation_processing ()
-{
-  Translator * result =
-    daddy_grav_l()->get_simple_translator (Key_engraver::static_name());
-
-  if (!result)
-    {
-      warning ("Out of tune! Can't find key engraver");
-    }
-  else
-    {
-      key_C_ = &((Key_engraver*)result->engraver_l ())->key_;
-      local_key_ = *key_C_;
-    }
-}
-
-void
-Local_key_engraver::process_acknowledged ()
-{
-  if (!key_item_p_ && mel_l_arr_.size()) 
-    {
-      for (int i=0; i  < mel_l_arr_.size(); i++) 
-       {
-         Item * support_l = support_l_arr_[i];
-         Note_req * note_l = mel_l_arr_[i];
-
-         if (tied_l_arr_.find_l (support_l) && 
-             !note_l->forceacc_b_)
-           continue;
-           
-         if (!note_l->forceacc_b_
-             && local_key_.different_acc (note_l->pitch_))
-           continue;
-         if (!key_item_p_) 
-           {
-             int c0_i=0;
-
-             Staff_info inf = get_staff_info();
-             if (inf.c0_position_i_l_)
-               c0_i = *get_staff_info().c0_position_i_l_;      
-               
-             key_item_p_ = new Local_key_item (c0_i);
-             announce_element (Score_elem_info (key_item_p_, 0));            
-           }
-         key_item_p_->add (note_l->pitch_);
-         key_item_p_->add_support (support_l);
-         local_key_.set (note_l->pitch_);
-         }
-       
-    }
-}
-
-void
-Local_key_engraver::do_pre_move_processing()
-{
-  if (key_item_p_)
-    {
-      for (int i=0; i < support_l_arr_.size(); i++)
-       key_item_p_->add_support (support_l_arr_[i]);
-
-      typeset_element (key_item_p_);
-      key_item_p_ =0;
-    }
-  
-  mel_l_arr_.clear();
-  tied_l_arr_.clear();
-  support_l_arr_.clear();
-  forced_l_arr_.clear();       
-}
-
-void
-Local_key_engraver::acknowledge_element (Score_elem_info info)
-{    
-  Score_elem * elem_l = info.elem_l_;
-  if (info.req_l_->musical() && info.req_l_->musical ()->note ()) 
-    {
-      Note_req * note_l = info.req_l_->musical()->note ();
-      Item * item_l = info.elem_l_->item();
-
-      mel_l_arr_.push (note_l);
-      support_l_arr_.push (item_l);
-    }
-  else if (info.req_l_->command()
-          && info.req_l_->command()->keychange () && key_C_) 
-    {
-      local_key_ = *key_C_;
-    }
-  else if (elem_l->is_type_b (Tie::static_name ())) 
-    {
-      Tie * tie_l = (Tie*)elem_l->spanner();
-      if (tie_l->same_pitch_b_)
-       tied_l_arr_.push (tie_l-> head_l_drul_[RIGHT]);
-    }
-}
-
-void
-Local_key_engraver::do_process_requests()
-{
-  Time_description const * time_C_ = get_staff_info().time_C_;
-  if (time_C_ && !time_C_->whole_in_measure_)
-    {
-      if (key_C_)
-       local_key_= *key_C_;
-    }
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Local_key_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Local_key_engraver);
index c4041f0b92aefe4faa70795ce4553a8b48f21b87..3791f48b974af6a6683e4a01732e625b85d04a72 100644 (file)
@@ -3,9 +3,9 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
-#include "dimen.hh"
+#include "dimension.hh"
 #include "local-key-item.hh"
 #include "molecule.hh"
 #include "scalar.hh"
@@ -15,9 +15,9 @@
 #include "note-head.hh"
 #include "misc.hh"
 
-Local_key_item::Local_key_item (int i)
+Local_key_item::Local_key_item ()
 {
-  c0_position  = i;
+  c0_position_i_  = 0;
 }
 
 void
@@ -61,14 +61,14 @@ Local_key_item::brew_molecule_p() const
            {
              Real dy =lastoct*7*paper()->internote_f ();
              octave_mol_p->translate_axis (dy, Y_AXIS);
-             output->add (*octave_mol_p);
+             output->add_molecule (*octave_mol_p);
              delete octave_mol_p;
            }
          octave_mol_p= new Molecule;
        }
       lastoct = accs[i].octave_i_;
-      Real dy = (accs[i].notename_i_ + c0_position) * paper()->internote_f ();
-      Atom a (paper()->lookup_l ()->accidental (accs[i].accidental_i_));
+      Real dy = (accs[i].notename_i_ + c0_position_i_) * paper()->internote_f ();
+      Atom a (lookup_l ()->accidental (accs[i].accidental_i_));
 
       a.translate_axis (dy, Y_AXIS);
       Molecule m(a);
@@ -79,21 +79,21 @@ Local_key_item::brew_molecule_p() const
     {
       Real dy =lastoct*7*paper()->internote_f ();
       octave_mol_p->translate_axis (dy, Y_AXIS);
-      output->add (*octave_mol_p);
+      output->add_molecule (*octave_mol_p);
       delete octave_mol_p;
     }
   
  if (accs.size()) 
     {
       Box b(Interval (0, paper()->internote_f ()), Interval (0,0));
-      Molecule m (paper()->lookup_l ()->fill (b));
+      Molecule m (lookup_l ()->fill (b));
       output->add_at_edge (X_AXIS, RIGHT, m);
     }
 
   Interval x_int;
   for (int i=0; i < support_items_.size(); i++) 
     {
-      Axis_group_element *common = 
+      Graphical_axis_group *common = 
        common_group (support_items_[i], X_AXIS);
 
       Real x = support_items_[i]->relative_coordinate (common, X_AXIS)  
@@ -112,10 +112,10 @@ Local_key_item::brew_molecule_p() const
 IMPLEMENT_IS_TYPE_B1(Local_key_item,Item);
 
 void
-Local_key_item::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Local_key_item::do_substitute_dependency (Score_element*o,Score_element*n)
 {
-  Item* o_l = o->item();
-  Item* n_l = n?n->item():0;
+  Item* o_l = o->access_Item ();
+  Item* n_l = n?n->access_Item ():0;
 
   support_items_.substitute (o_l, n_l);
 }
index 2a446f01a7ed4df3de3ee828a58182539ea75515..0d21c2c4487c0f8a2be9a57dde6760494808f030 100644 (file)
@@ -3,10 +3,10 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   TODO
-  This doth suck. We should have PS output, and read spacing info from TFMs
+  This doth suck. We should have PS output, and read spacing info from AFMs
 
   Glissando, 
 
@@ -15,7 +15,7 @@
 #include "lookup.hh"
 #include "debug.hh"
 #include "symtable.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "tex.hh"
 #include "scalar.hh"
 #include "paper-def.hh"
 Lookup::Lookup()
 {
   paper_l_ = 0;
-  texsetting = "\\unknowntexsetting";
   symtables_p_ = new Symtables;
+  afm_p_ =0;
 }
 
 Lookup::Lookup (Lookup const &s)
 {
+  font_ = s.font_;
+  font_path_ = s.font_path_;
   paper_l_ = s.paper_l_;
-  texsetting = s.texsetting;
   symtables_p_ = new Symtables (*s.symtables_p_);
+  afm_p_ = 0;
 }
+
 Lookup::~Lookup()
 {
+  delete afm_p_;
   delete symtables_p_;
 }
 
+Atom
+Lookup::afm_find (String s) const
+{
+  if (!afm_p_)
+    {
+      *mlog << "[" << font_path_;
+      ((Lookup*)this)->afm_p_ = new Adobe_font_metric (read_afm (font_path_));
+      *mlog << "]" << flush ;
+      DOUT << this->afm_p_->str ();
+    }
+  Adobe_font_char_metric m = afm_p_->find_char (s);
+
+  Atom a;
+  a.tex_ = String_convert::form_str ("\\char%d", m.code ());
+  a.dim_ = m.B_;
+  a.dim_[X_AXIS] *= 1 / 1000.0;
+  a.dim_[Y_AXIS] *= 1 / 1000.0;
+  a.font_ = font_;
+  return a;
+}
+
 void
 Lookup::add (String s, Symtable*p)
 {
@@ -50,25 +75,23 @@ void
 Lookup::print() const
 {
 #ifndef NPRINT
-  DOUT << "Lookup: " << texsetting << " {\n";
+  DOUT << "Lookup {\n";
   symtables_p_->print();
   DOUT << "}\n";
 #endif
 }
 
 Atom
-Lookup::text (String style, String text, int dir) const
+Lookup::text (String style, String text) const
 {
   Array<String> a;
 
   a.push (text);
   Atom tsym =  (*symtables_p_)("style")->lookup (style);
-  a[0] = substitute_args (tsym.tex_,a);
+  tsym.tex_ = substitute_args (tsym.tex_,a);
+  tsym.font_ = font_;
 
-  Atom s = (*symtables_p_)("align")->lookup (dir);
-  s.tex_ = substitute_args (s.tex_,a);
-  s.dim_ = tsym.dim_;
-  return s;
+  return tsym;
 }
 
 
@@ -79,28 +102,34 @@ Lookup::ball (int j) const
   if (j > 2)
     j = 2;
 
-  Symtable * st = (*symtables_p_)("balls");
-  return st->lookup (String (j));
+  Atom s = afm_find (String ("balls") + String ("-") + to_str (j));
+  return s;
 }
 
 Atom
 Lookup::rest (int j, bool o) const
 {
-  return (*symtables_p_)("rests")->lookup (String (j) + (o ? "o" : ""));
+  Atom s =afm_find (String ("rests")
+                   + String ("-") + to_str (j) + (o ? "o" : ""));
+
+  return s;
 }
 
 Atom
 Lookup::fill (Box b) const
 {
-  Atom s ((*symtables_p_)("param")->lookup ("fill"));
+  Atom s;
+  s.tex_ = "";
   s.dim_ = b;
+
   return s;
 }
 
 Atom
 Lookup::accidental (int j) const
 {
-  return (*symtables_p_)("accidentals")->lookup (String (j));
+  Atom s= afm_find (String ("accidentals") + String ("-") + to_str (j));
+  return s;
 }
 
 
@@ -112,38 +141,47 @@ Lookup::bar (String s, Real h) const
   Atom ret=(*symtables_p_)("bars")->lookup (s);
   ret.tex_ = substitute_args (ret.tex_, a);
   ret.dim_.y() = Interval (-h/2, h/2);
+  ret.font_ = font_;
   return ret;
 }
 
 Atom
-Lookup::script (String s) const
+Lookup::script (String st) const
 {
-  return (*symtables_p_)("scripts")->lookup (s);
+  Atom s= afm_find (String ("scripts") + String ("-") + st);
+
+  return s;
 }
 
 Atom
-Lookup::dynamic (String s) const
+Lookup::dynamic (String st) const
 {
-  return (*symtables_p_)("dynamics")->lookup (s);
+  return (*symtables_p_) ("dynamics")->lookup (st);
 }
 
 Atom
-Lookup::clef (String s) const
+Lookup::clef (String st) const
 {
-  return (*symtables_p_)("clefs")->lookup (s);
+  Atom s=afm_find (String ("clefs") + String ("-") + st);
+
+  return s;
 }
 
 Atom
 Lookup::dots () const
 {
-  return (*symtables_p_)("dots")->lookup ("dot");
+  Atom s=afm_find (String ("dots") + String ("-") + String("dot"));
+  
+    return s;
 }
 
 Atom
 Lookup::flag (int j, Direction d) const
 {
   char c = (d == UP) ? 'u' : 'd';
-  return (*symtables_p_)("flags")->lookup (c + String (j));
+  Atom s=afm_find (String ("flags") + String ("-") + to_str (c) + to_str (j));
+
+  return s;
 }
 
 Atom
@@ -176,6 +214,7 @@ Lookup::dashed_slur (Array<Offset> controls, Real thick, Real dash) const
   
   s.dim_[X_AXIS] = Interval (0, dx);
   s.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
+  s.font_ = font_;
   return s;
 }
 
@@ -195,7 +234,7 @@ Lookup::slur (Array<Offset> controls) const
 
   ps += String_convert::double_str (controls[4].x ()) + " "
     + String_convert::double_str (controls[4].y ()) + " ";
-
+  
   for (int i = 1; i < 4; i++)
     ps += String_convert::double_str (controls[i].x ()) + " "
       + String_convert::double_str (controls[i].y ()) + " ";
@@ -210,7 +249,9 @@ Lookup::slur (Array<Offset> controls) const
   
   s.dim_[X_AXIS] = Interval (0, dx);
   s.dim_[Y_AXIS] = Interval (0 <? dy,  0 >? dy);
+  s.font_ = font_;
   return s;
+
 }
 
 Atom
@@ -219,9 +260,7 @@ Lookup::streepje (int type) const
   if (type > 2)
     type = 2;
 
-  Symtable * st = (*symtables_p_)("balls");
-  
-  return st->lookup (String (type) + 'l');
+  return  afm_find ("balls" + String ("-") +to_str (type) + "l");
 }
 
 Atom
@@ -231,24 +270,25 @@ Lookup::hairpin (Real width, bool decresc, bool continued) const
   Atom ret;  
   Real height = paper_l_->staffheight_f () / 6;
   embed = "\\embeddedps{\n" ;
-  embed += String (width) + " " 
-       + String (height) + " " 
-    + String (continued ? height/2 : 0) + 
+  embed += to_str (width) + " " 
+       + to_str (height) + " " 
+    + to_str (continued ? height/2 : 0) + 
     + " draw_"  + String(decresc ? "de" : "") + "cresc}\n";
   ret.tex_ = embed;
 
 
   ret.dim_.x () = Interval (0, width);
   ret.dim_.y () = Interval (-2*height, 2*height);
-
+  ret.font_ = font_;
   return ret;
 }
 
 Atom
-Lookup::meter (Array<Scalar> a) const
+Lookup::time_signature (Array<Scalar> a) const
 {
-  Atom s((*symtables_p_)("param")->lookup ("meter"));
+  Atom s((*symtables_p_)("param")->lookup ("time_signature"));
   s.tex_ = substitute_args (s.tex_,a);
+
   return s;
 }
 
@@ -273,6 +313,7 @@ Lookup::stem (Real y1,Real y2) const
 
   String src = (*symtables_p_)("param")->lookup ("stem").tex_;
   s.tex_ = substitute_args (src,a);
+  s.font_ = font_;
   return s;
 }
 
@@ -282,7 +323,7 @@ Lookup::stem (Real y1,Real y2) const
 Atom
 Lookup::vbrace (Real &y) const
 {
-  Atom brace = (*symtables_p_)("param")->lookup ("brace");
+  Atom brace = (*symtables_p_) ("param")->lookup ( "brace");
   Interval ydims = brace.dim_[Y_AXIS];
   Real min_y = ydims[LEFT];
   Real max_y = ydims[RIGHT];
@@ -290,12 +331,14 @@ Lookup::vbrace (Real &y) const
  
   if (y < min_y)
     {
-      warning (_("piano brace too small (") + print_dimen (y)+ ")");
+      warning (_ ("piano brace") 
+       + " " + _ ("too small") +  "(" + print_dimen (y) + ")");
       y = min_y;
     }
   if (y > max_y)
     {
-      warning (_("piano brace too big (") + print_dimen (y)+ ")");
+      warning (_ ("piano brace")
+       + " " + _ ("too big") + "(" + print_dimen (y)+ ")");
       y = max_y;
     }
 
@@ -304,11 +347,13 @@ Lookup::vbrace (Real &y) const
   
   {
     Array<String> a;
-    a.push (idx);
+    a.push (to_str (idx));
     brace.tex_ = substitute_args (brace.tex_,a);
     brace.dim_[Y_AXIS] = Interval (-y/2,y/2);
   }
 
+  brace.font_ = font_;
+
   return brace;
 }
 
@@ -316,11 +361,19 @@ Atom
 Lookup::vbracket (Real &y) const
 {
   Atom psbracket;
-  psbracket.tex_ = String ("\\embeddedps{ ") + y + " draw_bracket}";
+  Real min_y = paper_l_->staffheight_f ();
+  if (y < min_y)
+    {
+      warning (_ ("bracket")
+       + " " + _ ("too small") +  "(" + print_dimen (y) + ")");
+//      y = min_y;
+    }
+  psbracket.tex_ = String ("\\embeddedps{ ") + to_str (y) + " draw_bracket}";
   psbracket.dim_[Y_AXIS] = Interval (-y/2,y/2);
   psbracket.dim_[X_AXIS] = Interval (0,4 PT);
   return psbracket;
-  Atom bracket = (*symtables_p_)("param")->lookup ("bracket");
+#if 0
+  Atom bracket = afm_find (String ("param") + "bracket");
   Interval ydims = bracket.dim_[Y_AXIS];
 
   Real min_y = ydims[LEFT];
@@ -329,12 +382,14 @@ Lookup::vbracket (Real &y) const
  
   if (y < min_y)
     {
-      warning (_("bracket too small (") + print_dimen (y)+ ")");
+      warning (_ ("bracket")
+       + " " + _ ("too small") +  "(" + print_dimen (y) + ")");
       y = min_y;
     }
   if (y > max_y)
     {
-      warning (_("bracket too big (") + print_dimen (y)+ ")");
+      warning (_ ("bracket")
+       + " " + _ ("too big") + "(" + print_dimen (y)+ ")");
       y = max_y;
     }
 
@@ -343,11 +398,12 @@ Lookup::vbracket (Real &y) const
   
   {
     Array<String> a;
-    a.push (idx);
+    a.push (to_str (idx));
     bracket.tex_ = substitute_args (bracket.tex_,a);
     bracket.dim_[Y_AXIS] = Interval (-y/2,y/2);
   }
 
   return bracket;
+#endif
 }
 
diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc
new file mode 100644 (file)
index 0000000..8ed3989
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+  lyric-engraver.cc -- implement Lyric_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "lyric-engraver.hh"
+#include "musical-request.hh"
+#include "text-item.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
+#include "paper-def.hh"
+#include "main.hh"
+
+Lyric_engraver::Lyric_engraver()
+{
+  lreq_l_ =0;
+  lyric_item_p_ =0;
+}
+
+bool
+Lyric_engraver::do_try_request (Request*r)
+{
+  Musical_req * m =r->access_Musical_req ();
+  if (!m || ! m->access_Lyric_req ()) 
+    return false;
+  lreq_l_ = m->access_Lyric_req ();
+
+  return true;
+}
+
+void
+Lyric_engraver::do_process_requests()
+{
+  if (lreq_l_) 
+    {
+      Text_def *td_p = new Text_def;
+      td_p->text_str_ = lreq_l_->text_str_;
+      td_p->align_dir_ = LEFT;
+      Scalar style = get_property ("textstyle");
+      if (style.length_i ())
+       {
+         td_p->style_str_ = style;
+       }
+      
+      lyric_item_p_ =  new Text_item (td_p);
+
+      lyric_item_p_->dir_ = DOWN;
+      lyric_item_p_->fat_b_ = true;
+      announce_element (Score_element_info (lyric_item_p_, lreq_l_));
+    }
+}
+
+void
+Lyric_engraver::do_post_move_processing()
+{
+  lreq_l_ =0;
+}
+
+void
+Lyric_engraver::do_pre_move_processing()
+{
+  if (lyric_item_p_)
+    {
+      typeset_element (lyric_item_p_);
+      lyric_item_p_ =0;
+    }
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Lyric_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Lyric_engraver);
diff --git a/lily/lyric-grav.cc b/lily/lyric-grav.cc
deleted file mode 100644 (file)
index 9c4cb14..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-  lyric-engraver.cc -- implement Lyric_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "lyric-engraver.hh"
-#include "musical-request.hh"
-#include "text-item.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-#include "paper-def.hh"
-#include "main.hh"
-
-Lyric_engraver::Lyric_engraver()
-{
-  lreq_l_ =0;
-  lyric_item_p_ =0;
-}
-
-bool
-Lyric_engraver::do_try_request (Request*r)
-{
-  Musical_req * m =r->musical();
-  if (!m || ! m->lreq_l()) 
-    return false;
-  lreq_l_ = m->lreq_l();
-
-  return true;
-}
-
-void
-Lyric_engraver::do_process_requests()
-{
-  if (lreq_l_) 
-    {
-      lyric_item_p_ =  new Text_item (lreq_l_->tdef_p_);
-
-      lyric_item_p_->translate_axis (paper()->note_width ()/2 , X_AXIS);
-      lyric_item_p_->dir_ = DOWN;
-      lyric_item_p_->fat_b_ = true;
-      announce_element (Score_elem_info (lyric_item_p_, lreq_l_));
-    }
-}
-
-void
-Lyric_engraver::do_post_move_processing()
-{
-  lreq_l_ =0;
-}
-
-void
-Lyric_engraver::do_pre_move_processing()
-{
-  if (lyric_item_p_)
-    {
-      /*
-        urg. should check-out deriving from staff/line spanner
-       */
-      if (experimental_features_global_b)
-        {
-         if (lyric_item_p_->tdef_p_->static_name () == Text_def::static_name ())
-           {
-             Text_def* t = (Text_def*)lyric_item_p_->tdef_p_;
-             t->text_str_ += "\\hrule 1mm 10mm 20mm";
-           }
-       }
-      typeset_element (lyric_item_p_);
-      lyric_item_p_ =0;
-    }
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Lyric_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Lyric_engraver);
index d81875c95e72fb5bd1dffedf9a3c1a032efdc90e..bcbbc9d501961648ec39e1b74aab550aa52da127 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "lyric-performer.hh"
@@ -29,25 +29,25 @@ Lyric_performer::do_print() const
 {
 #ifndef NPRINT
   if (lreq_arr_.size())
-       lreq_arr_[ 0 ]->print();
+    lreq_arr_[ 0 ]->print();
 #endif
 }
 
 void
 Lyric_performer::do_process_requests()
 {
-  if (lreq_arr_.size() && lreq_arr_[ 0 ]->tdef_p_->text_str_.length_i())
-       play (new Audio_text (Audio_text::LYRIC, lreq_arr_[ 0 ]->tdef_p_->text_str_));
+  if (lreq_arr_.size() && lreq_arr_[0]->text_str_.length_i())
+    play (new Audio_text (Audio_text::LYRIC, lreq_arr_[ 0 ]->text_str_));
   lreq_arr_.clear();
 }
 
 bool
 Lyric_performer::do_try_request (Request* req_l)
 {
-  Musical_req* m_l = req_l->musical();
-  if (!m_l || ! m_l->lreq_l()) 
-       return false;
-  lreq_arr_.push (m_l->lreq_l());
+  Musical_req* m_l = req_l->access_Musical_req ();
+  if (!m_l || ! m_l->access_Lyric_req ()) 
+    return false;
+  lreq_arr_.push (m_l->access_Lyric_req ());
 
   return true;
 }
index bd5c6276dec7a6121bb88d70b998ec1f28a1102b..379e4daa46a6a2ce0268902601f0c47979c86146 100644 (file)
@@ -3,15 +3,16 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <stdlib.h>
 #include <iostream.h>
 #include <assert.h>
+#include <locale.h>
 #include "proto.hh"
 #include "plist.hh"
-#include "lgetopt.hh"
+#include "getopt-long.hh"
 #include "misc.hh"
 #include "string.hh"
 #include "main.hh"
 #include "file-results.hh"
 #include "debug.hh"
 
+#if HAVE_GETTEXT
+#include <libintl.h>
+#endif
+
 
 bool version_ignore_global_b = false;
 bool no_paper_global_b = false;
@@ -27,15 +32,18 @@ bool no_timestamps_global_b = false;
 bool find_quarts_global_b = false;
 String default_outname_base_global =  "lelie";
 int default_count_global;
+File_path global_path;
+
 
 bool experimental_features_global_b = false;
 bool dependency_global_b = false;
 
 int exit_status_i_;
 
-void destill_inname (String &name_str_r);
+String distill_inname_str (String name_str, String& ext_r);
 
 Long_option_init theopts[] = {
+  {0, "about", 'a'},
   {1, "output", 'o'},
   {0, "warranty", 'w'},
   {0, "help", 'h'},
@@ -46,7 +54,7 @@ Long_option_init theopts[] = {
   {0, "no-paper", 'M'},
   {0, "dependencies", 'd'},
   {0, "no-timestamps", 'T'},
-  {0, "find-quarts", 'Q'},
+  {0, "find-fourths", 'Q'},
   {0, "ignore-version", 'V'},
   {0,0,0}
 };
@@ -54,25 +62,55 @@ Long_option_init theopts[] = {
 void
 usage ()
 {
-  cout <<
-    _("Usage: lilypond [options] [mudela-files]\n"
-    "Typeset and or produce midi output from mudela-file or stdin\n"
-    "\n"
-    "Options:\n"
+  cout << _f ("Usage: %s [OPTION]... [FILE]...", "lilypond") << '\n';
+  cout << _ ("Typeset music and or play MIDI from FILE or <stdin>");
+  cout << '\n';
+  cout << '\n';
+  cout << _ ("Options:");
+  cout << '\n';
+  cout  << _ (
+    "  -a, --about            about LilyPond\n"
+    );
+  cout  << _ (
     "  -D, --debug            enable debugging output\n"
+    );
+  cout  << _ (
     "  -d, --dependencies     write Makefile dependencies for every input file\n"
-    "  -Q, --find-quarts      show all intervals bigger than a quart\n"
+    );
+  cout  << _ (
     "  -I, --include=DIR      add DIR to search path\n"
+    );
+  cout  << _ (
     "  -i, --init=FILE        use FILE as init file\n"
+    );
+  cout  << _ (
     "  -h, --help             this help\n"
+    );
+  cout  << _ (
     "  -M, --no-paper         produce midi output only\n"
-    "  -o, --output=FILE      set FILE as default output\n"
+    );
+  cout  << _ (
+    "  -o, --output=FILE      set FILE as default output base\n"
+    );
+  cout  << _ (
+    "  -Q, --find-fourths     show all intervals greater than a fourth\n"
+    );
+  cout  << _ (
     "  -t, --test             switch on experimental features\n"
+    );
+  cout  << _ (
     "  -T, --no-timestamps    don't timestamp the output\n"
+    );
+  cout  << _ (
     "  -V, --ignore-version   ignore mudela version\n"
+    );
+  cout  << _ (
     "  -w, --warranty         show warranty and copyright\n"
-    "\n"
-    "GNU LilyPond was compiled with the following settings:\n")
+    );
+  cout << '\n';
+  cout << _ ("GNU LilyPond was compiled with the following settings:");
+  cout << '\n';
+  cout <<
 #ifdef NDEBUG
     "NDEBUG "
 #endif
@@ -82,23 +120,44 @@ usage ()
 #ifdef STRING_UTILS_INLINED
     "STRING_UTILS_INLINED "
 #endif
-        "datadir= " DIR_DATADIR
+        "datadir=" DIR_DATADIR
+       " "
+        "localedir=" DIR_LOCALEDIR
 
     "\n";
 
   ;
 }
 
+void
+about ()
+{
+  cout << '\n';
+  cout << 
+  #include "BLURB.hh"
+  cout << '\n';
+  cout << _ ("GNU LilyPond is Free software, see --warranty");
+  cout << '\n';
+  cout << '\n';
+  cout << _f ("Copyright (c) %s by", "1996, 1997, 1998");
+  cout << '\n';
+  cout << "  " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+  cout << "  " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+  cout << '\n';
+}
+
 void
 notice ()
 {
-  cout <<
-    _("\n"
-    "GNU LilyPond -- The GNU Project music typesetter.\n"
-    "Copyright 1996, 97, 98 by\n"
-    "  Han-Wen Nienhuys <hanwen@stack.nl>\n"
-    "  Jan Nieuwenhuizen <jan@digicash.com>\n"
-    "\n"
+  cout << '\n';
+  cout << _ ("GNU LilyPond -- The GNU Project music typesetter");
+  cout << '\n';
+  cout << _f ("Copyright (c) %s by", "1996, 1997, 1998");
+  cout << '\n';
+  cout << "  " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+  cout << "  " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+  cout << '\n';
+  cout << _ (
     "    This program is free software; you can redistribute it and/or\n"
     "modify it under the terms of the GNU General Public License version 2\n"
     "as published by the Free Software Foundation.\n"
@@ -114,38 +173,43 @@ notice ()
     "USA.\n");
 }
 
-
- File_path path;
-
-
 void
 identify ()
 {
-  cout << get_version_str () << endl;
+  *mlog << get_version_str () << endl;
 }
 
 int
 main (int argc, char **argv)
 {
+
+#if HAVE_GETTEXT
+  setlocale (LC_ALL, "");
+//  setlocale (LC_MESSAGES, "");
+  String name (PACKAGE);
+  name.to_lower ();
+  bindtextdomain (name.ch_C (), DIR_LOCALEDIR);
+  textdomain (name.ch_C ());
+#endif
+
   identify ();
   call_constructors ();
   debug_init ();               // should be first
 
-
-  
-  path.add ("");
+  global_path.add ("");
   // must override (come before) "/usr/local/share/lilypond"!
   char const *env_sz = getenv ("LILYINCLUDE");
   if (env_sz)
-    path.parse_path (env_sz);
+    global_path.parse_path (env_sz);
 
-  path.add (String (DIR_DATADIR) + "/init/");
+  global_path.add (String (DIR_DATADIR) + "/init/");
 
-  path.push (DIR_DATADIR);
+  global_path.push (DIR_DATADIR);
 
   Getopt_long oparser (argc, argv,theopts);
-  String init_str ("lily-init.ly");
+  String init_str;
 
+  String outname_str;
   while (Long_option_init const * opt = oparser ())
     {
       switch (opt->shortname)
@@ -154,7 +218,7 @@ main (int argc, char **argv)
          experimental_features_global_b = true;
          break;
        case 'o':
-         default_outname_base_global = oparser.optional_argument_ch_C_;
+         outname_str = oparser.optional_argument_ch_C_;
          break;
        case 'w':
          notice ();
@@ -164,11 +228,14 @@ main (int argc, char **argv)
          find_quarts_global_b = true;
          break;
        case 'I':
-         path.push (oparser.optional_argument_ch_C_);
+         global_path.push (oparser.optional_argument_ch_C_);
          break;
        case 'i':
          init_str = oparser.optional_argument_ch_C_;
          break;
+       case 'a':
+         about ();
+         exit (0);
        case 'h':
          usage ();
          exit (0);
@@ -194,39 +261,83 @@ main (int argc, char **argv)
        }
     }
 
+  default_outname_base_global = "lelie";
+
+  
+
   int p=0;
   const char *arg ;
   while ((arg= oparser.get_next_arg ()))
     {
       String f (arg);
-      destill_inname (f);
-      do_one_file (init_str,f);
+      String i;
+      f = distill_inname_str (f, i);
+      if (f == "-")
+       default_outname_base_global = "-";
+      else
+       {
+         String a,b,c,d;
+         split_path (f, a, b, c, d);
+         default_outname_base_global = c;
+       }
+      if (outname_str.length_i ())
+       default_outname_base_global = outname_str;
+      if (init_str.length_i ())
+       i = init_str;
+      else
+       i = "init" + i;
+      do_one_file (i, f);
       p++;
     }
   if (!p)
     {
-      do_one_file (init_str, "");
+      String i;
+      if (init_str.length_i ())
+       i = init_str;
+      else
+       i = "init.ly";
+      default_outname_base_global = "-";
+      if (outname_str.length_i ())
+       default_outname_base_global = outname_str;
+      do_one_file (i, default_outname_base_global);
     }
 
   return exit_status_i_;
 }
 
-/// make input file name: add default extension. "" is stdin.
-void
-destill_inname (String &name_str_r)
+/*
+  urg: make input file name: 
+  input: file name
+  output: file name with added default extension. "" is stdin.
+          in reference argument: the extention. ".ly" if none
+ */
+
+String
+distill_inname_str (String name_str, String& ext_r)
 {
-  if (name_str_r.length_i ())
+  String str = name_str;
+  if (str.length_i ())
     {
-      if (name_str_r[ 0 ] != '-')
+      if (str != "-")
        {
-         String a,b,c,d;
-         split_path (name_str_r,a,b,c,d);
+         String a,b,c;
+         split_path (str,a,b,c,ext_r);
 
          // add extension if not present.
-         if (d.empty_b ())
-           d = ".ly";
-         name_str_r = a+b+c+d;
+         if (ext_r.empty_b ())
+           {
+             ext_r = ".fly";
+             if (global_path.find (a+b+c+ext_r).empty_b ())
+               ext_r = ".ly";
+           }
+         str = a+b+c+ext_r;
        }
     }
-  else name_str_r = "";
+  else 
+    {
+      str = "-";
+      ext_r = ".ly";
+    }
+  return str;
 }
+
diff --git a/lily/meter-grav.cc b/lily/meter-grav.cc
deleted file mode 100644 (file)
index f14d00a..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-  meter-reg.cc -- implement Meter_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "meter-grav.hh"
-#include "meter.hh"
-#include "command-request.hh"
-#include "timing-grav.hh"
-#include "engraver-group.hh"
-
-Meter_engraver::Meter_engraver()
-{ 
-  meter_p_ =0;
-}
-
-void
-Meter_engraver::do_process_requests()
-{
-  Translator * result =
-    daddy_grav_l()->get_simple_translator (Timing_engraver::static_name());
-
-  if (!result)
-    {
-      warning ("Lost in time: can't find Timing_translator");
-      return ;
-    }
-  
-  Timing_engraver * timing_grav_l= (Timing_engraver*) result->engraver_l ();
-  
-  Meter_change_req *req = timing_grav_l->meter_req_l();
-  if (req)
-    {
-      Array<Scalar> args;
-      args.push (req->beats_i_);
-      args.push (req->one_beat_i_);
-       
-      meter_p_ = new Meter (args);
-      meter_p_->break_priority_i_ = 1; // ugh
-    }
-
-  if (meter_p_)
-    announce_element (Score_elem_info (meter_p_, req));
-}
-
-void
-Meter_engraver::do_pre_move_processing()
-{
-  if (meter_p_) 
-    {
-      typeset_element (meter_p_);
-      meter_p_ =0;
-    }
-}
-
-
-ADD_THIS_TRANSLATOR(Meter_engraver);
-IMPLEMENT_IS_TYPE_B1(Meter_engraver,Engraver); 
diff --git a/lily/meter-performer.cc b/lily/meter-performer.cc
deleted file mode 100644 (file)
index 44849ab..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-  meter-performer.cc -- implement Meter_performer
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
-*/
-
-#include "meter-performer.hh"
-#include "command-request.hh"
-#include "audio-item.hh"
-
-IMPLEMENT_IS_TYPE_B1(Meter_performer,Performer);
-ADD_THIS_TRANSLATOR(Meter_performer);
-
-Meter_performer::Meter_performer()
-{
-  meter_req_l_ = 0;
-}
-
-Meter_performer::~Meter_performer()
-{
-}
-
-void 
-Meter_performer::do_print() const
-{
-#ifndef NPRINT
-  if (meter_req_l_)
-    meter_req_l_->print();
-#endif
-}
-
-void
-Meter_performer::do_process_requests()
-{
-  if (meter_req_l_)
-    play (new Audio_meter (meter_req_l_));
-  meter_req_l_ = 0;
-}
-
-bool
-Meter_performer::do_try_request (Request* req_l)
-{
-  if (meter_req_l_)
-    return false;
-
-  if (req_l->command())
-    meter_req_l_ = req_l->command()->meterchange ();
-
-  if (meter_req_l_)
-    return true;
-
-  return false;
-}
-
diff --git a/lily/meter.cc b/lily/meter.cc
deleted file mode 100644 (file)
index 97df812..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#include "scalar.hh"
-#include "molecule.hh"
-#include "meter.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-
-Meter::Meter (Array<Scalar>a)
-  :args (a)
-{
-  breakable_b_ = true;
-}
-
-Molecule*
-Meter::brew_molecule_p() const
-{
-  Atom s = paper()->lookup_l ()->meter (args);
-  s.translate_axis (-s.extent()[Y_AXIS].center (), Y_AXIS);
-  return new Molecule (Atom (s));
-}
-
-
-
-IMPLEMENT_IS_TYPE_B1(Meter,Item);
index 6eff15ea8e521367e2dc35a768985a5a20609ea8..202205d0899524a71a60fd9cf34cb54d1d4ccd11 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 #include <math.h>
index 543e8c088686eda502f0d460ad4e41330af14b74..525140102e0b249acc857720dc0f226cb9217bab 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "proto.hh"
@@ -25,7 +25,7 @@ IMPLEMENT_IS_TYPE_B1 (Midi_duration, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_header, Midi_chunk);
 IMPLEMENT_IS_TYPE_B1 (Midi_instrument, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_key,Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_meter, Midi_item);
+IMPLEMENT_IS_TYPE_B1 (Midi_time_signature, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_note, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_note_off, Midi_item);
 IMPLEMENT_IS_TYPE_B1 (Midi_tempo, Midi_item);
@@ -79,7 +79,7 @@ Midi_duration::Midi_duration (Real seconds_f)
 String
 Midi_duration::str () const
 {
-  return String ("<duration: ") + String (seconds_f_) + ">";
+  return String ("<duration: ") + to_str (seconds_f_) + ">";
 }
 
 Midi_event::Midi_event (Moment delta_mom, Midi_item* mitem_p)
@@ -312,8 +312,8 @@ Midi_instrument::str () const
        break;
       }
 
-  String str = String ( (char) (0xc0 + channel_i_));
-  str += String ( (char)program_byte);
+  String str = to_str ((char) (0xc0 + channel_i_));
+  str += to_str ((char)program_byte);
   return str;
 }
 
@@ -337,7 +337,7 @@ Midi_item::i2varint_str (int i)
   String str;
   while (1) 
     {
-      str += (char)buffer_i;
+      str += to_str ((char)buffer_i);
       if (buffer_i & 0x80)
        buffer_i >>= 8;
       else
@@ -354,13 +354,17 @@ Midi_key::Midi_key (Audio_item* audio_item_l)
 String
 Midi_key::str () const
 {
-  Key_change_req* k = audio_item_l_->req_l_->command ()->keychange ();
+  Key_change_req* k = audio_item_l_->req_l_->access_Command_req ()->access_Key_change_req ();
   int sharps_i = k->sharps_i ();
   int flats_i = k->flats_i ();
 
   // midi cannot handle non-conventional keys
   if (flats_i && sharps_i)
-    return "";
+    {
+      String str = _f ("unconventional key: flats: %d, sharps: %d", flats_i, 
+        sharps_i);
+      flats_i = sharps_i = 0;
+    }
   int accidentals_i = sharps_i - flats_i;
 
   String str = "ff5902";
@@ -370,16 +374,16 @@ Midi_key::str () const
   return String_convert::hex2bin_str (str);
 }
 
-Midi_meter::Midi_meter (Audio_item* audio_item_l)
+Midi_time_signature::Midi_time_signature (Audio_item* audio_item_l)
   : Midi_item (audio_item_l)
 {
   clocks_per_1_i_ = 18;
 }
 
 String
-Midi_meter::str () const
+Midi_time_signature::str () const
 {
-  Meter_change_req* m = audio_item_l_->req_l_->command ()->meterchange ();
+  Time_signature_change_req* m = audio_item_l_->req_l_->access_Command_req ()->access_Time_signature_change_req ();
   int num_i = m->beats_i_;
   int den_i = m->one_beat_i_;
 
@@ -400,28 +404,39 @@ Midi_note::Midi_note (Audio_item* audio_item_l)
 Moment
 Midi_note::duration () const
 {
-  return audio_item_l_->req_l_->musical ()->rhythmic ()->duration ();
+  Moment m = audio_item_l_->req_l_->access_Musical_req ()->access_Rhythmic_req ()->duration ();
+  if (m < Moment (1, 1000))
+    {
+      warning (_ ("silly duration"));
+      m = 1;
+     }
+  return m;
 }
 
 int
 Midi_note::pitch_i () const
 {
-  return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch ();
+  int p = audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req 
+    ()->pitch_.semitone_pitch () 
+    + ((Audio_note*)audio_item_l_)->transposing_i_;
+  if (p == INT_MAX)
+    {
+      warning (_ ("silly pitch"));
+      p = 0;
+     }
+  return p;
 }
 
 String
 Midi_note::str () const
 {
-  if (pitch_i () == INT_MAX)
-    return String ("");
-
   Byte status_byte = (char) (0x90 + channel_i_);
 
-  String str = String ( (char)status_byte);
-  str += (char) (pitch_i () + c0_pitch_i_c_);
+  String str = to_str ((char)status_byte);
+  str += to_str ((char) (pitch_i () + c0_pitch_i_c_));
 
   // poor man's staff dynamics:
-  str += (char) (dynamic_byte_ - 0x10 * channel_i_);
+  str += to_str ((char) (dynamic_byte_ - 0x10 * channel_i_));
 
   return str;
 }
@@ -437,20 +452,19 @@ Midi_note_off::Midi_note_off (Midi_note* midi_note_l)
 int
 Midi_note_off::pitch_i () const
 {
-  return audio_item_l_->req_l_->musical ()->melodic ()->pitch_.semitone_pitch ();
+  return audio_item_l_->req_l_->access_Musical_req ()->access_Melodic_req 
+    ()->pitch_.semitone_pitch ()
+    + ((Audio_note*)audio_item_l_)->transposing_i_;
 }
 
 String
 Midi_note_off::str () const
 {
-  if (pitch_i () == INT_MAX)
-    return String ("");
-
   Byte status_byte = (char) (0x80 + channel_i_);
 
-  String str = String ( (char)status_byte);
-  str += (char) (pitch_i () + Midi_note::c0_pitch_i_c_);
-  str += (char)aftertouch_byte_;
+  String str = to_str ((char)status_byte);
+  str += to_str ((char) (pitch_i () + Midi_note::c0_pitch_i_c_));
+  str += to_str ((char)aftertouch_byte_);
   return str;
 }
 
index 89aab84a8b618f7650d2e63b76917aa6b8b7a97d..caeeae55c623570772b89113f7e9b68fc6311d58 100644 (file)
@@ -3,7 +3,7 @@
 //
 // source file of the GNU LilyPond music typesetter
 //
-// (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+// (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <fstream.h>
 #include "string.hh"
@@ -72,7 +72,7 @@ Midi_stream::operator << (int i)
 void
 Midi_stream::open ()
 {
-  os_p_ = new ofstream (filename_str_.ch_C ());
+  os_p_ = new ofstream (filename_str_.ch_C (),ios::out|ios::bin);
   if (!*os_p_)
-    error (_ ("can't open `") + filename_str_ + "\'");
+    error (_f ("can't open file: `%s\'", filename_str_));
 }
index 75f7af9321b5c46530dad4ae6cd22ab30fc2c48c..81489c2ad0cfc7fe8045bce9a107c7e18eb21206 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-         Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+         Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "midi-walker.hh"
@@ -48,13 +48,16 @@ Midi_walker::do_start_note (Midi_note* note_p)
   Moment stop_mom = note_p->duration() + ptr ()->audio_column_l_->at_mom ();
   for (int i=0; i < stop_note_queue.size(); i++) 
     {
-       if (stop_note_queue[ i ].val->pitch_i() == note_p->pitch_i ()) 
-         {
-           if (stop_note_queue[ i ].key < stop_mom)
-               stop_note_queue[ i ].ignore_b_ = true;
-           else // skip the stopnote 
-               return; 
+      if (stop_note_queue[ i ].val->pitch_i() == note_p->pitch_i ()) 
+       {
+         if (stop_note_queue[ i ].key < stop_mom)
+           stop_note_queue[ i ].ignore_b_ = true;
+         else {
+           // skip the stopnote
+           delete note_p;
+           return;
          }
+       }
     }
 
   Midi_note_event e;
@@ -73,14 +76,17 @@ Midi_walker::do_stop_notes (Moment max_mom)
 {
   while (stop_note_queue.size() && stop_note_queue.front ().key <= max_mom) 
     {
-       Midi_note_event e = stop_note_queue.get();
-       if (e.ignore_b_) 
-           continue;
+      Midi_note_event e = stop_note_queue.get();
+      if (e.ignore_b_)
+       {
+         delete e.val;
+         continue;
+       }
+      
+      Moment stop_mom = e.key;
+      Midi_note_off* note_p = e.val;
        
-       Moment stop_mom = e.key;
-       Midi_note_off* note_p = e.val;
-       
-       output_event (stop_mom, note_p);
+      output_event (stop_mom, note_p);
     }
 }
 
@@ -102,12 +108,12 @@ Midi_walker::process()
 
   Midi_item* p = ptr()->midi_item_p ();
   if (!p)
-       return;
+    return;
   p->channel_i_ = track_l_->number_i_;
   
   if (p->name() != Midi_note::static_name ())
-       output_event (ptr()->audio_column_l_->at_mom (), p);
+    output_event (ptr()->audio_column_l_->at_mom (), p);
   else
-       do_start_note ((Midi_note*)p);
+    do_start_note ((Midi_note*)p);
 }
 
index c9cb8e5dcfcb720a2bc51ebb3825c6fc1baab9b0..381635b46dee4553c9dd4df732adfa6916454379 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
-    Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+    Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <math.h>
@@ -118,4 +118,3 @@ quantise_iv (Array<Real> const& positions, Real period, Real x)
 
   return iv;
 }
-
diff --git a/lily/mixed-qp.cc b/lily/mixed-qp.cc
new file mode 100644 (file)
index 0000000..33ff245
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+  qlp.cc -- implement Mixed_qp
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "debug.hh"
+#include "qlp.hh"
+
+
+void
+Mixed_qp::add_equality_cons (Vector , double)
+{
+  assert (false);
+}
+
+void
+Mixed_qp::add_fixed_var (int i, Real r)
+{
+  eq_cons.push (i);
+  eq_consrhs.push (r);
+}
+
+
+/**
+  eliminate appropriate variables, until we have a Ineq_constrained_qp
+  then solve that.
+
+  PRE
+  cons should be ascending
+  */
+Vector
+Mixed_qp::solve (Vector start) const 
+{
+  if (!dim())
+    return Vector (0);
+  
+  print();
+  Ineq_constrained_qp pure (*this);
+  
+  for  (int i= eq_cons.size()-1; i>=0; i--) 
+    {
+      pure.eliminate_var (eq_cons[i], eq_consrhs[i]);
+      start.del (eq_cons[i]);
+    }
+  Vector sol = pure.solve (start);
+  for (int i= 0; i < eq_cons.size(); i++) 
+    {
+      sol.insert (eq_consrhs[i],eq_cons[i]);
+    }
+  return sol;
+}
+
+
+Mixed_qp::Mixed_qp (int n)
+  : Ineq_constrained_qp (n)
+{
+}
+
+void
+Mixed_qp::OK() const
+{
+#ifndef NDEBUG
+  Ineq_constrained_qp::OK();
+  assert (eq_consrhs.size() == eq_cons.size ());
+#endif    
+}
+
+void
+Mixed_qp::print() const
+{
+#ifndef NPRINT
+  Ineq_constrained_qp::print();
+  for (int i=0; i < eq_cons.size(); i++) 
+    {
+      DOUT << "eq cons "<<i<<": x["<<eq_cons[i]<<"] == " << eq_consrhs[i]<< '\n';
+    }
+#endif
+}
+
index 613fc0ea1dd5586f8414b9f02222664899dfeba0..032f0742fb037d0e44f2ee94412f602a26c4628f 100644 (file)
@@ -3,31 +3,22 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "interval.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "string.hh"
 #include "molecule.hh"
 #include "atom.hh"
 #include "debug.hh"
 #include "tex.hh"
 
-String
-Molecule::TeX_string() const
-{
-  String s;
-  for (iter_top (ats,c); c.ok(); c++)
-    s+=c->TeX_string();
-  return s;
-}
-
 Box
 Molecule::extent() const
 {
   Box b;
-  for (iter_top (ats,c); c.ok(); c++)
+  for (iter_top (atoms_,c); c.ok(); c++)
     b.unite (c->extent());
   return b;
 }
@@ -35,23 +26,23 @@ Molecule::extent() const
 void
 Molecule::translate (Offset o)
 {
-  for (iter_top (ats,c); c.ok(); c++)
+  for (iter_top (atoms_,c); c.ok(); c++)
     c->translate (o);
 }
 
 void
 Molecule::translate_axis (Real x,Axis a)
 {
-  for (iter_top (ats,c); c.ok(); c++)
+  for (iter_top (atoms_,c); c.ok(); c++)
     c->translate_axis (x,a);
 }
 
 void
-Molecule::add (Molecule const &m)
+Molecule::add_molecule (Molecule const &m)
 {
-  for (iter_top (m.ats,c); c.ok(); c++) 
+  for (iter_top (m.atoms_,c); c.ok(); c++) 
     {
-      add (**c);
+      add_atom (**c);
     }
 }
 
@@ -59,15 +50,15 @@ Molecule::add (Molecule const &m)
 void
 Molecule::add_at_edge (Axis a, Direction d, Molecule const &m)
 {
-  if (!ats.size()) 
+  if (!atoms_.size()) 
     {
-      add (m);
+      add_molecule (m);
       return;
     }
   Real offset = extent ()[a][d] - m.extent ()[a][-d];
   Molecule toadd (m);
   toadd.translate_axis (offset, a);
-  add (toadd);
+  add_molecule (toadd);
 }
 
   
@@ -80,7 +71,7 @@ Molecule::operator = (Molecule const &)
 
 Molecule::Molecule (Molecule const &s)
 {
-  add (s);
+  add_molecule (s);
 }
 
 void
@@ -89,13 +80,18 @@ Molecule::print() const
 #ifndef NPRINT
   if (! check_debug)
     return;
-  for (iter_top (ats,c); c.ok(); c++)
+  for (iter_top (atoms_,c); c.ok(); c++)
     c->print();
 #endif
 }
 
 void
-Molecule::add (Atom const &a)
+Molecule::add_atom (Atom const &a)
+{
+  atoms_.bottom().add (new Atom (a)); 
+}
+
+Molecule::Molecule (Atom const &a)
 {
-  ats.bottom().add (new Atom (a)); 
+  add_atom (a) ;
 }
index dbcc1b593488c05831a00d88f0d3002b9c0addae..b699b168b998bcad946374fb313ae582d19ca444 100644 (file)
@@ -3,13 +3,13 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
 #include "mudela-version.hh"
 #include "string-convert.hh"
-#include "varray.hh"
+#include "array.hh"
 
 Mudela_version::Mudela_version (int major, int minor, int patch)
 {
@@ -31,7 +31,7 @@ Mudela_version::Mudela_version (String str)
 String
 Mudela_version::str () const
 {
-  return String (major_i_) + "." + String (minor_i_) + "." + String (patch_i_);
+  return to_str (major_i_) + "." + to_str (minor_i_) + "." + to_str (patch_i_);
 }
 
 Mudela_version::operator int () const
index 56a3b8d93c4b6abf9628902a7f73af467709264d..e8b23b67b39a2ba516ef6f0ecbbc863334af7c25 100644 (file)
@@ -1,8 +1,8 @@
 /*
   multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
 
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
-       Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+       Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
@@ -26,7 +26,7 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
 bool
 Multi_measure_rest_engraver::do_try_request (Request* req_l)
 {
-  if (!req_l->musical () || !req_l->musical ()->multi_measure ())
+  if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Multi_measure_rest_req ())
     return false;
 
   if (multi_measure_req_l_)
@@ -34,7 +34,7 @@ Multi_measure_rest_engraver::do_try_request (Request* req_l)
        || req_start_mom_ != now_moment ())
       return false;
   
-  multi_measure_req_l_ = req_l->musical ()->multi_measure ();
+  multi_measure_req_l_ = req_l->access_Musical_req ()->access_Multi_measure_rest_req ();
   req_start_mom_ = now_moment ();
   
   rest_req_stop_mom_ = req_start_mom_ + multi_measure_req_l_->duration_.length ();
@@ -50,7 +50,7 @@ Multi_measure_rest_engraver::do_process_requests ()
       Time_description const *time = get_staff_info().time_C_;
       mmrest_p_ = new Multi_measure_rest;
       rest_item_creation_mom_ =  time->when_mom ();
-      announce_element (Score_elem_info (mmrest_p_, multi_measure_req_l_));
+      announce_element (Score_element_info (mmrest_p_, multi_measure_req_l_));
       start_measure_i_ = time->bars_i_;
     }
 }
index 4e7e05ff4c57a26c030bd1eff2fc7ffe7722f3d1..279b6b9b362573717a8f4212b23d824e07845b4a 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
   
  */
 
@@ -11,7 +11,7 @@
 #include "debug.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "rest.hh"
 #include "script.hh"
 #include "text-def.hh"
@@ -39,7 +39,7 @@ Multi_measure_rest::brew_molecule_p () const
      * make two,four,eight-measure-rest symbols
    */
 
-  Atom s (paper ()->lookup_l ()->rest (0, 0));
+  Atom s (lookup_l ()->rest (0, 0));
   Molecule* mol_p = new Molecule ( Atom (s));
   Real interline_f = paper ()->interline_f ();
   mol_p->translate_axis (interline_f, Y_AXIS);
@@ -47,11 +47,11 @@ Multi_measure_rest::brew_molecule_p () const
   if (measures_i_ > 1)
     {
       Text_def text;
-      text.text_str_ = measures_i_;
+      text.text_str_ = to_str (measures_i_);
       text.style_str_ = "number";
       Atom s = text.get_atom (paper (), UP);
       s.translate_axis (3.0 * interline_f, Y_AXIS);
-      mol_p->add (s);
+      mol_p->add_atom (s);
     }
 
   return mol_p;
index a26231c0a97df73663b6672e5c54a5a50ef40fec..97352020af20712f53b0566f4e7d7d0fe54ae7cd 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "debug.hh"
 #include "music-list.hh"
@@ -117,6 +117,7 @@ Music_iterator::process_and_next (Moment)
   first_b_ = false;
 }
 
+
 bool
 Music_iterator::ok() const
 {
index e6b652f9872e0f8c3c7c62a34dbb57109045705c..5642127ff3995773a2e5491878481154a27a0484 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -152,10 +152,10 @@ Request_chord::to_relative_octave (Musical_pitch last)
 {
   for (iter (music_p_list_.top(),i); i.ok (); i++)
     {
-      Musical_req *m =((Request*)i.ptr ())->musical ();
-      if (m && m->melodic ())
+      Musical_req *m =((Request*)i.ptr ())->access_Musical_req ();
+      if (m && m->access_Melodic_req ())
        {         
-         Musical_pitch &pit = m->melodic()->pitch_;
+         Musical_pitch &pit = m->access_Melodic_req ()->pitch_;
          pit.to_relative_octave (last);
          return pit;
        }
index 2e9a28786339227261492cd3f373106d97777290..ff1c78ddb9b303262cee6e6a883c440fcce1ecc5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 1160611e7044f71d2c3b66beb9b13cd2a4d45380..13b2a90c31dacebe3749b245ecba110ff80dbd9b 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 2e241d5800ea08f6b67aac7ed7e306843ca13241..72971abf50c40efc4bece48003a0e46c1ff768b5 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 5b33f57c54ad4e8b1dcd709992b15ea49685c37b..4ba377fc9157c1c15a7a6a0d3541599ef1a9b863 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
index 89da2e12d914cd1d5cdbbe5bc88e0adbced08a83..e7ffbd7014b1beeb45ec034c93da3bf76ae21274 100644 (file)
@@ -3,11 +3,12 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "musical-pitch.hh"
 #include "debug.hh"
+#include "main.hh"
 
 Musical_pitch::Musical_pitch ()
 {
@@ -26,7 +27,7 @@ void
 Musical_pitch::print () const
 {
 #ifndef NPRINT
-  DOUT << str();
+  DOUT << str ();
 #endif
 }
 
@@ -84,24 +85,32 @@ Musical_pitch::transpose (Musical_pitch delta)
 }
 
 
+#if 0
+// nice test for internationalisation strings
 char const *accname[] = {"double flat", "flat", "natural",
                         "sharp" , "double sharp"};
+#else
+char const *accname[] = {"eses", "es", "", "is" , "isis"};
+#endif
 
 String
 Musical_pitch::str () const
 {
   int n = (notename_i_ + 2) % 7;
-  String s (char(n + 'a'));
+  String s = to_str (char(n + 'a'));
   if (accidental_i_)
-    s +=   " " + String (accname[accidental_i_ + 2]);
+    s += String (accname[accidental_i_ + 2]);
 
   if (octave_i_)
-    s  += String ((octave_i_> 0)? "^": "_") + String(octave_i_);
-  
+    s  += String ((octave_i_> 0)? "^": "_") + to_str (octave_i_);
 
   return s;
 }
 
+/*
+  change me to relative, counting from last pitch p
+  return copy of resulting pitch
+ */
 Musical_pitch
 Musical_pitch::to_relative_octave (Musical_pitch p)
 {
@@ -112,24 +121,37 @@ Musical_pitch::to_relative_octave (Musical_pitch p)
   up_pitch.accidental_i_ = accidental_i_;
   down_pitch.accidental_i_ = accidental_i_;
   
+  Musical_pitch n = *this;
   up_pitch.up_to (notename_i_);
   down_pitch.down_to (notename_i_);
+
   int h = p.steps ();
   if (abs (up_pitch.steps () - h) < abs (down_pitch.steps () - h))
-    {
-      *this =  up_pitch;
-      /* this sux imnsho
-      if (oct_mod > 0)         // ugh
-      oct_mod --;*/
-    }
+    n = up_pitch;
   else
+    n = down_pitch;
+  
+  if (find_quarts_global_b)
     {
-      *this = down_pitch;
-      /*      if (oct_mod < 0)
-             oct_mod ++;*/
+      int d = this->semitone_pitch () - n.semitone_pitch ();
+      if (d)
+       {
+         int i = 1 + (abs (d) - 1) / 12;
+         String quote_str = d < 0 ? to_str (',', i) : to_str ('\'', i);
+         Musical_pitch w = *this;
+         w.octave_i_ = 0;
+         String name_str = w.str ();
+         name_str + quote_str;
+         w.warning (_f ("Interval greater than quart, relative: %s", 
+           name_str + quote_str));
+         // don't actually do any relative stuff
+         n = *this;
+       }
     }
-  
-  octave_i_ += oct_mod;
+  else
+    n.octave_i_ += oct_mod;
+
+  *this = n;
   return *this;
 }
 
@@ -153,86 +175,3 @@ Musical_pitch::down_to (int notename)
   notename_i_ = notename;
 }
 
-#if 0
-
-Musical_pitch
-My_lily_parser::get_melodic_req (Musical_pitch p, int quotes)
-{
-  if (relative_octave_mode_b_)
-    {
-      set_nearest (melodic);
-      int d = melodic->pitch () - last_melodic_->pitch ();
-      int shift = 0;
-      if (quotes && (sign (d) == sign (quotes)))
-       shift -= sign (quotes);
-      if (!quotes && (abs (d) == 6))
-       {
-         String str = _("Octave ambiguity; assuming ");
-         /*
-           [TODO]
-           figure this out.
-
-           If the distance is exactly*) half an octave, there is 
-           no nearest pitch.  In that case, we'll try to guess what 
-           composer/ typist meant.
-           Firstly, we'll do this by comparing the 'notename distance':
-               
-           f b'   % name-distance: f g a b: 3
-
-           is surely a shorter notename distance than
-
-           f 'b  % name-distance: b c d e f: 4
-
-           (should we give a warning at all, or can we safely assume
-           this is a positive interval up?)
-
-           *) It is conceivable that, musically speaking, the interval
-           with the greater pitch-distance is thought to be smaller?
-
-         */
-
-         int name_delta = melodic->notename_i_ - last_melodic_->notename_i_;
-         int name_near = abs (name_delta) % 7;
-         int name_wrap = (7 - abs (name_delta)) % 7;
-         if (name_near != name_wrap)
-           shift = name_near < name_wrap ? sign (name_delta) : -sign (name_delta);
-         else if (sign (last_melodic_->accidental_i_) 
-                  != sign (melodic->accidental_i_))
-           shift = last_melodic_->accidental_i_ - melodic->accidental_i_;
-         else
-           shift = -1;
-         String name_str = notename_str (melodic);
-         str += shift > 0 ? name_str + "'" : "'" + name_str;
-         if (sign (d) == sign (shift))
-           shift = 0;
-         melodic->warning (str);
-       }
-      melodic->octave_i_ += quotes + shift;
-    }
-  else
-    {
-      Melodic_req nearest (*melodic);
-      set_nearest (&nearest);
-      melodic->octave_i_ += quotes;
-
-      if (find_quarts_global_b)
-       {
-         int e = melodic->pitch () - nearest.pitch ();
-         if (e)
-           {
-             int d = melodic->pitch () - last_melodic_->pitch ();
-             String str = _("Interval greater than quart");
-             int n = 1 + (abs (d) - 1) / 12;
-             String quote_str ('\'', n);
-             str += _(", relative: ");
-             String name_str = notename_str (melodic);
-             str += d < 0 ? quote_str + name_str : name_str + quote_str;
-             melodic->warning (str);
-           }
-       }
-    }
-  delete last_melodic_;
-  last_melodic_ = melodic->clone ()->musical ()->melodic ();
-  return melodic;
-}
-#endif
index c2d0d0450a5f13504e2868c63237c0a85121c886..b1d5120fe8f1d61395bec47b111bcfc5ec9f86ec 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "musical-request.hh"
@@ -33,7 +33,7 @@ void
 Span_req::do_print () const
 {
 #ifndef NPRINT
-  DOUT << spantype ;
+  DOUT << spantype;
 #endif
 }
 
@@ -65,7 +65,7 @@ void
 Abbreviation_req::do_print () const
 {
 #ifndef NPRINT
-  DOUT << "type " << type_i_ << "\n";
+  DOUT << "type " << type_i_ << '\n';
 #endif
 }
 
@@ -90,7 +90,8 @@ Melodic_req::transpose (Musical_pitch delta)
   
   if (abs (pitch_.accidental_i_) > 2)
     {
-       warning (_ ("transposition by ") + delta.str () + _(" makes accidental larger than 2"));
+       warning (_f ("transposition by %s makes accidental larger than two",
+         delta.str ()));
     }
 }
 
@@ -99,7 +100,7 @@ IMPLEMENT_IS_TYPE_B1 (Melodic_req,Musical_req);
 bool
 Melodic_req::do_equal_b (Request*r) const
 {
-  Melodic_req* m= r->musical ()->melodic ();
+  Melodic_req* m= r->access_Musical_req ()->access_Melodic_req ();
   return !compare (*m, *this);
 }
 
@@ -125,7 +126,7 @@ Rhythmic_req::compare (Rhythmic_req const &r1, Rhythmic_req const &r2)
 bool
 Rhythmic_req::do_equal_b (Request*r) const
 {
-  Rhythmic_req* rh = r->musical ()->rhythmic ();
+  Rhythmic_req* rh = r->access_Musical_req ()->access_Rhythmic_req ();
 
   return !compare (*this, *rh);
 }
@@ -159,24 +160,18 @@ Rhythmic_req::duration () const
 }
 /* *************** */
 
-Lyric_req::Lyric_req (Text_def* def_p)
-  :Text_req (0, def_p)
-{
-  def_p->align_i_ = CENTER;    // centre
-  dir_ = DOWN;         // lyrics below (invisible) staff
-}
 
 
-IMPLEMENT_IS_TYPE_B2 (Lyric_req,Musical_req,Rhythmic_req);
+IMPLEMENT_IS_TYPE_B1 (Lyric_req,Rhythmic_req);
 
 void
 Lyric_req::do_print () const
 {
   Rhythmic_req::do_print ();
-  Text_req::do_print ();
 }
 
 /* *************** */
+
 bool
 Note_req::do_equal_b (Request*r) const
 {
@@ -276,7 +271,7 @@ Plet_req::do_print () const
 bool
 Span_req:: do_equal_b (Request*r) const
 {
-  Span_req * s = r->span ();
+  Span_req * s = r->access_Span_req ();
   return spantype == s->spantype;
 }
 
@@ -300,7 +295,7 @@ Script_req::Script_req (Script_req const&s)
 bool
 Script_req::do_equal_b (Request*r) const
 {
-  Script_req * s = r->script ();
+  Script_req * s = r->access_Script_req ();
 
   return  scriptdef_p_->equal_b (*s->scriptdef_p_);
 }
@@ -318,7 +313,7 @@ void
 Script_req::do_print () const
 {
 #ifndef NPRINT
-  DOUT << " dir " << dir_ ;
+  DOUT << " dir " << dir_;
   scriptdef_p_->print ();
 #endif
 }
@@ -365,7 +360,7 @@ void
 Text_req::do_print () const
 {
 #ifndef NPRINT
-  DOUT << " dir " << dir_ ;
+  DOUT << " dir " << dir_;
   tdef_p_->print ();
 #endif
 }
@@ -410,7 +405,7 @@ Absolute_dynamic_req::do_print () const
 bool
 Absolute_dynamic_req::do_equal_b (Request *r) const
 {
-  Absolute_dynamic_req *a = r->musical ()->dynamic ()->absdynamic ();
+  Absolute_dynamic_req *a = r->access_Musical_req ()->access_Dynamic_req ()->access_Absolute_dynamic_req ();
   return loudness_ == a->loudness_;
 }
 
@@ -437,14 +432,15 @@ Dynamic_req::loudness_static_str (Loudness l)
 String
 Absolute_dynamic_req::loudness_str () const
 {
-  String s = loudness_static_str (loudness_);
-  if (s.empty_b ())
+  String str = loudness_static_str (loudness_);
+  if (str.empty_b ())
     {
-      s = "mf";
-      warning (String (_ ("Never heard of dynamic scale "))
-              + loudness_ + _ (" assuming mf"));
+      String s = "mf";
+      warning (_f ("never heard of dynamic scale `\%s\', assuming %s",
+       str, s));
+      str = s;
     }
-  return s;
+  return str;
 }
 
 
@@ -454,6 +450,15 @@ Absolute_dynamic_req::Absolute_dynamic_req ()
 }
 
 
+
+bool
+Span_dynamic_req::do_equal_b (Request *req) const
+{
+  Span_dynamic_req * s = req->access_Musical_req ()->access_Span_dynamic_req ();
+
+  return Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_;
+}
+
 Span_dynamic_req::Span_dynamic_req ()
 {
   dynamic_dir_  = CENTER;
@@ -467,7 +472,7 @@ Span_dynamic_req::do_print () const
 {
 #ifndef NPRINT
   Span_req::do_print ();
-  DOUT << "softer/louder: " <<dynamic_dir_;
+  DOUT << "softer/louder: " << dynamic_dir_;
 #endif
 }
 
index 1a46c7994cd31195627f23beff14bc683dc3f873..286f09277a86ffa814fa16f3fd21328bea456117 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <strstream.h>
@@ -23,7 +23,9 @@
 #include "scope.hh"
 
 static Keyword_ent the_key_tab[]={
+  {"absdynamic", ABSDYNAMIC},
   {"accepts", ACCEPTS},
+  {"accidentals", ACCIDENTALS},
   {"bar", BAR},
   {"cadenza", CADENZA},
   {"clear", CLEAR},
@@ -32,15 +34,15 @@ static Keyword_ent the_key_tab[]={
   {"consists", CONSISTS},
   {"contains", CONTAINS},
   {"duration", DURATION},
-  {"absdynamic", ABSDYNAMIC},
+  {"font", FONT},
+  {"grouping", GROUPING},
   {"in", IN_T},
-  {"translator", TRANSLATOR},
-  {"type", TYPE},
   {"lyric", LYRIC},
   {"key", KEY},
+  {"mark", MARK},
   {"melodic" , MELODIC},
-  {"musical_pitch", MUSICAL_PITCH},
-  {"meter", METER},
+  {"musicalpitch", MUSICAL_PITCH},
+  {"time", TIME_T},
   {"midi", MIDI},
   {"mm", MM_T},
   {"multi", MULTI},
@@ -63,11 +65,10 @@ static Keyword_ent the_key_tab[]={
   {"spandynamic", SPANDYNAMIC},
   {"symboltables", SYMBOLTABLES},
   {"tempo", TEMPO},
-  {"texid", TEXID},
-  {"textstyle", TEXTSTYLE},
+  {"translator", TRANSLATOR},
+  {"type", TYPE},
   {"transpose", TRANSPOSE},
   {"version", VERSION},
-  {"grouping", GROUPING},
   {0,0}
 };
 
@@ -114,8 +115,10 @@ My_lily_lexer::set_identifier (String name_str, Identifier* i, bool unique_b)
   Identifier *old = lookup_identifier (name_str);
   if  (old)
     {
+#if 0
       if (unique_b)
-       old->warning(_("redeclaration of \\") + name_str);
+       old->warning(_f ("redeclaration of `\\%s\'", name_str));
+#endif
       delete old;
     }
   (*scope_l_arr_.top ())[name_str] = i;
@@ -125,8 +128,6 @@ My_lily_lexer::~My_lily_lexer()
 {
   delete keytable_p_;
   delete toplevel_scope_p_ ;
-
-
   delete note_tab_p_;
 }
 
@@ -135,7 +136,7 @@ My_lily_lexer::print_declarations (bool init_b) const
 {
   for (int i=scope_l_arr_.size (); i--; )
     {
-      DOUT << "Scope no. " << i << "\n";
+      DOUT << "Scope no. " << i << '\n';
       scope_l_arr_[i]->print ();
     }
 }
@@ -145,7 +146,7 @@ My_lily_lexer::LexerError (char const *s)
 {
   if (include_stack_.empty())
     {
-      *mlog << _("error at EOF") << s << '\n';
+      *mlog << _f ("error at EOF: %s", s) << endl;
     }
   else
     {
index 736f21b3988afe236766fd7b73e246b7e53932c0..bdb3846692003dac5a24ce6120e32048102db489 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "my-lily-parser.hh"
@@ -27,8 +27,7 @@ My_lily_parser::My_lily_parser (Sources * source_l)
   lexer_p_ = 0;
   abbrev_beam_type_i_ = 0;
   default_duration_.durlog_i_ = 2;
-  default_octave_i_ = 0;
-  textstyle_str_="roman";              // in lexer?
+  default_abbrev_i_ = 0;
   error_level_i_ = 0;
   fatal_error_i_ = 0;
   default_header_p_ =0;
@@ -60,17 +59,16 @@ My_lily_parser::parse_file (String init, String s)
   init_str_ = init;
   lexer_p_->main_input_str_ = s;
 
-  *mlog << _("Parsing ... ");
+  *mlog << _ ("Parsing...");
 
   init_parse_b_ = false;
   set_yydebug (!monitor->silent_b ("Parser") && check_debug);
   lexer_p_->new_input (init, source_l_);
   do_yyparse ();
 
-
   if (!define_spot_array_.empty())
     {
-      warning (_("Braces don't match."));
+      warning (_ ("braces don't match"));
       error_level_i_ = 1;
     }
 
@@ -110,21 +108,22 @@ void
 My_lily_parser::set_last_duration (Duration const *d)
 {
   default_duration_ = *d;
-      /* 
-        forget plet part,
-        sticky plet factor only within plet brackets
-      */  
-  default_duration_.set_plet (1, 1);
+
+  /* 
+     forget plet part,
+     but keep sticky plet factor within plet brackets
+    */  
+  default_duration_.plet_ = plet_;
 }
 
 
 Chord*
-My_lily_parser::get_word_element (Text_def* tdef_p, Duration * duration_p)
+My_lily_parser::get_word_element (String s, Duration * duration_p)
 {
   Chord* velt_p = new Request_chord;
 
-  Lyric_req* lreq_p = new Lyric_req (tdef_p);
-
+  Lyric_req* lreq_p = new Lyric_req;
+  lreq_p ->text_str_ = s;
   lreq_p->duration_ = *duration_p;
   lreq_p->set_spot (here_input());
 
@@ -246,22 +245,22 @@ My_lily_parser::get_parens_request (int t)
   switch (t)
     {
     case BEAMPLET:
-      reqs.top ()->span()->spantype = Span_req::START;
+      reqs.top ()->access_Span_req ()->spantype = Span_req::START;
       /* fall through */
     case '<':
     case '>':
     case '(':
     case '[':
     case PLET:
-      reqs[0]->span ()->spantype = Span_req::START;
+      reqs[0]->access_Span_req ()->spantype = Span_req::START;
       break;
     case MAEBTELP:
-      reqs.top ()->span()->spantype = Span_req::STOP;
+      reqs.top ()->access_Span_req ()->spantype = Span_req::STOP;
       /* fall through */
     case '!':
     case ')':
     case ']':
-      reqs[0]->span ()->spantype = Span_req::STOP;
+      reqs[0]->access_Span_req ()->spantype = Span_req::STOP;
       break;
 
     default:
@@ -269,9 +268,9 @@ My_lily_parser::get_parens_request (int t)
     }
 
   for (int i = 0; i < reqs.size (); i++)
-    if (reqs[i]->musical ()->span_dynamic ())
+    if (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ())
       {
-       Span_dynamic_req* s_l= (reqs[i]->musical ()->span_dynamic ()) ;
+       Span_dynamic_req* s_l= (reqs[i]->access_Musical_req ()->access_Span_dynamic_req ()) ;
        s_l->dynamic_dir_ = (t == '<') ? UP:DOWN;
       }
 
@@ -292,6 +291,14 @@ My_lily_parser::add_requests (Chord*v)
     {
       v->add (post_reqs[i]);
     }
+#if 0 //disabling...
+  if (default_abbrev_i_)
+    {
+      Abbreviation_req* a = new Abbreviation_req;
+      a->type_i_ = default_abbrev_i_;
+      v->add (a);
+    }
+#endif
   post_reqs.clear();
 }
 
@@ -319,13 +326,13 @@ Paper_def*
 My_lily_parser::default_paper_p ()
 {
   Identifier *id = lexer_p_->lookup_identifier ("default_paper");
-  return id ? id->paperdef () : new Paper_def ;
+  return id ? id->access_Paper_def () : new Paper_def ;
 }
 
 Midi_def*
 My_lily_parser::default_midi_p ()
 {
   Identifier *id = lexer_p_->lookup_identifier ("default_midi");
-  return id ? id->mididef () : new Midi_def ;
+  return id ? id->access_Midi_def () : new Midi_def ;
 }
 
index e528b9e956369d94ace5744e9f76161ee7745808..1085a3c071d3b1e12ce47367f599d9f697278d3b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "dot-column.hh"
 #include "note-column.hh"
@@ -71,48 +71,48 @@ Note_column::do_pre_processing()
   
 
 void
-Note_column::set (Stem * stem_l)
+Note_column::set_stem (Stem * stem_l)
 {
   add_support (stem_l);
   stem_l_ = stem_l;
   /* 
      don't add stem to support; mostly invisible for rest-columns (and possibly taken . .)
    */
-  Score_elem::add_dependency (stem_l);
+  Score_element::add_dependency (stem_l);
   for (int i=0; i < script_l_arr_.size(); i++)
     script_l_arr_[i]->set_stem (stem_l);
 }
 
 void
-Note_column::add (Script *script_l)
+Note_column::add_script (Script *script_l)
 {
-  Script_column::add (script_l) ;
+  Script_column::add_script (script_l) ;
   if  (stem_l_)
     script_l->set_stem (stem_l_);
 }
 
 void
-Note_column::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Note_column::do_substitute_dependency (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;
     }
   if (o->is_type_b (Note_head::static_name ()))
     {
-      head_l_arr_.substitute ((Note_head*)o->item(), 
-                             (n)? (Note_head*)n->item() : 0);
+      head_l_arr_.substitute ((Note_head*)o->access_Item (), 
+                             (n)? (Note_head*)n->access_Item () : 0);
     }
   Script_column::do_substitute_dependency (o,n);
   if (o->is_type_b (Rest::static_name ())) 
     {
-      rest_l_arr_.substitute ((Rest*)o->item(), 
-                             (n)? (Rest*)n->item() : 0);
+      rest_l_arr_.substitute ((Rest*)o->access_Item (), 
+                             (n)? (Rest*)n->access_Item () : 0);
     }
 }
 
 void
-Note_column::add (Rhythmic_head *h)
+Note_column::add_head (Rhythmic_head *h)
 {
   if (h->is_type_b (Rest::static_name ()))
     {
@@ -147,7 +147,7 @@ Note_column::do_print() const
 }
 
 void
-Note_column::set (Dot_column *d)
+Note_column::set_dotcol (Dot_column *d)
 {
   add_element (d);
 }
index 3ae349b28bfcef63ecdc2b218ac7e55f4b7010f5..00539b06d072e0e90c7cd85099e09f5756d368ba 100644 (file)
@@ -3,13 +3,13 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "misc.hh"
 #include "dots.hh"
 #include "note-head.hh"
-#include "dimen.hh" 
+#include "dimension.hh" 
 #include "debug.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
@@ -47,7 +47,7 @@ Note_head::compare (Note_head *const  &a, Note_head * const &b)
 Interval
 Note_head::do_width () const
 {
-  Atom a =  paper ()->lookup_l()->ball (balltype_i_);
+  Atom a =  lookup_l ()->ball (balltype_i_);
   Interval i = a.dim_[X_AXIS];
   i+= x_dir_ * i.length ();
   return i;
@@ -65,14 +65,14 @@ Note_head::brew_molecule_p() const
     ? 0
     : (abs(position_i_) - staff_size_i_/2) /2;
   
-  Atom  s = p->lookup_l()->ball (balltype_i_);
+  Atom  s = lookup_l()->ball (balltype_i_);
   out = new Molecule (Atom (s));
   out->translate_axis (x_dir_ * s.dim_[X_AXIS].length (), X_AXIS);
 
   if (streepjes_i) 
     {
       int dir = sign (position_i_);
-      Atom streepje = p->lookup_l ()->streepje (balltype_i_);
+      Atom streepje = lookup_l ()->streepje (balltype_i_);
       
       int parity =  (position_i_ % 2) ? 1 : 0;
        
@@ -82,7 +82,7 @@ Note_head::brew_molecule_p() const
          Atom s = streepje;
          s.translate_axis (-dir * inter_f * (i*2 + parity),
                           Y_AXIS);
-         out->add (s);
+         out->add_atom (s);
        }
     }
   
index 6679f61ba6e04e6bb411aaf9c6b39d6acd80848d..12c8601da3a3e23c85363e67d3a3fb17f0ad0780 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "note-performer.hh"
 #include "audio-item.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B1(Note_performer,Performer);
-ADD_THIS_TRANSLATOR(Note_performer);
+IMPLEMENT_IS_TYPE_B1 (Note_performer,Performer);
+ADD_THIS_TRANSLATOR (Note_performer);
 
-Note_performer::Note_performer()
+Note_performer::Note_performer ()
 {
   note_req_l_ = 0;
 }
 
 void 
-Note_performer::do_print() const
+Note_performer::do_print () const
 {
 #ifndef NPRINT
   if (note_req_l_) 
-    {
-      note_req_l_->print();
-    }
+      note_req_l_->print ();
 #endif
 }
 
 void 
-Note_performer::do_process_requests() 
+Note_performer::do_process_requests () 
 {
   // this is _really_ braindead, but it generates some output
-  if (!note_req_l_ || !note_req_l_->melodic()  || !note_req_l_->rhythmic ())
+  if (!note_req_l_ || !note_req_l_->access_Melodic_req ()  || !note_req_l_->access_Rhythmic_req ())
     return;
 
-  play (new Audio_note (note_req_l_));
+  int transposing_i = 0;
+  //urg
+  Scalar prop = get_property ("transposing");
+  if (!prop.empty_b () && prop.isnum_b ()) 
+    transposing_i = prop;
+
+
+  play (new Audio_note (note_req_l_, transposing_i));
+
   note_req_l_ = 0;
 }
 
@@ -47,9 +53,10 @@ Note_performer::do_try_request (Request* req_l)
   if (note_req_l_)
     return false;
   
-  if (!req_l->musical() || !req_l->musical ()->note ())
+  if (!req_l->access_Musical_req () || !req_l->access_Musical_req ()->access_Note_req ())
     return false;
 
-  note_req_l_ = req_l->musical()->melodic ();
+  note_req_l_ = req_l->access_Musical_req ()->access_Melodic_req ();
+
   return true;
 }
index 78e64294731e26f6cb536b580142b9a46beedb11..a32cabab79ce880fc0885d28cee951e35963818b 100644 (file)
@@ -11,7 +11,7 @@
 #include "command-request.hh"
 #include "music-list.hh"
 #include "identifier.hh"
-#include "varray.hh"
+#include "array.hh"
 #include "text-def.hh"
 #include "parseconstruct.hh"
 
index fa86049c65762e317327a5f4940e447b8754428d..9b08369db0b66dc87d0978ac5f485ece35d23b5a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "notename-table.hh"
diff --git a/lily/out/dummy.dep b/lily/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/lily/outputter.cc b/lily/outputter.cc
deleted file mode 100644 (file)
index d3df3f6..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-
-/*
-  outputter.cc -- implement Tex_outputter
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "outputter.hh"
-#include "tex-stream.hh"
-#include "molecule.hh"
-#include "varray.hh"
-#include "dimen.hh"
-#include "tex.hh"
-
-Tex_outputter::Tex_outputter (Tex_stream *s)
-{
-  outstream_l_ = s;
-}
-
-void
-Tex_outputter::output_molecule (Molecule const*m, Offset o)
-{
-  String t = m->TeX_string();
-  if (t.empty_b ())
-    return ;
-
-  String s ("\\placebox{%}{%}{%}");
-  Array<String> a;
-  a.push (print_dimen (o.y()));
-  a.push (print_dimen (o.x()));
-  a.push (t);
-  String r;
-  /*
-  if (check_debug)
-    r = String ("\n%start: ") + name() + "\n";
-    */
-  
-  r += substitute_args (s, a);
-  
-  *outstream_l_ << r;
-}
-
-
-void
-Tex_outputter::start_line ()
-{
-  *outstream_l_ << "\\hbox{%<- line of score\n";
-}
-
-void
-Tex_outputter::stop_line ()
-{
-  *outstream_l_ << "}";
-  *outstream_l_ << "\\interscoreline";
-}
index e776b62c926f78322a460042adc96436cebef427..74ea11e5ea64724dec5a95a03ba3276a895b458f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "p-col.hh"
@@ -63,9 +63,9 @@ Paper_column::do_print() const
       DOUT << "post: ";
       postbreak_l()->print();
     } 
-  if (break_status_i_)
+  if (break_status_dir_)
     {
-      DOUT <<'\n' << ((break_status_i_ == LEFT) ? "prebreak" : "postbreak");
+      DOUT << '\n' << ((break_status_dir_ == LEFT) ? "prebreak" : "postbreak");
       DOUT << '\n';
     }
 
index 51c9a4b019274bb495fcd7368cb34a6f3bd0f501..bd7ec060e049239b06322958e4018f8400776c38 100644 (file)
@@ -3,16 +3,16 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "main.hh"
-#include "super-elem.hh"
+#include "super-element.hh"
 #include "debug.hh"
 #include "lookup.hh"
 #include "spanner.hh"
 #include "paper-def.hh"
-#include "scoreline.hh"
+#include "line-of-score.hh"
 #include "pcursor.hh"
 #include "plist.hh"
 #include "p-col.hh"
 #include "header.hh"
 #include "word-wrap.hh"
 #include "gourlay-breaking.hh"
-#include "outputter.hh"
+#include "tex-outputter.hh"
 #include "file-results.hh"
+#include "misc.hh"
+
 // sucking Cygnus egcs - w32
 #include "list.tcc"
 #include "cursor.tcc"
@@ -38,12 +40,12 @@ Paper_score::Paper_score ()
 Paper_score::~Paper_score ()
 {
   super_elem_l_->unlink_all ();
-  for (PCursor<Score_elem*> i(elem_p_list_.top()); i.ok(); i++)
+  for (PCursor<Score_element*> i(elem_p_list_.top()); i.ok(); i++)
     assert(!i->linked_b());
 }
 
 void
-Paper_score::typeset_element (Score_elem * elem_p)
+Paper_score::typeset_element (Score_element * elem_p)
 {
   elem_p_list_.bottom ().add (elem_p);
   elem_p->pscore_l_ = this;
@@ -117,31 +119,41 @@ Paper_score::find_col (Paper_column const *c) const
 
 
 void
-Paper_score::set_breaking (Array<Col_hpositions> const &breaking)
+Paper_score::set_breaking (Array<Column_x_positions> const &breaking)
 {
   super_elem_l_->line_of_score_l_->set_breaking (breaking);
   super_elem_l_->break_processing ();
 
-
   for (iter (span_p_list_.top (),i); i.ok  ();)
     {
       Spanner *span_p = i.remove_p ();
-      if (span_p->broken_b ())
+      if (span_p->broken_b ()
+         || !((Score_element*)span_p)->line_l ())
        {
          span_p->unlink ();
+#if 0
+         int sz = span_p->class_size();
+         set_frobnify (span_p,sz);
+#endif
          delete span_p;
-       }else
-         {
-           typeset_broken_spanner (span_p);
-         }
+       }
+      else 
+       {
+         typeset_broken_spanner (span_p);
+       }
     }
   for (iter (elem_p_list_.top (),i); i.ok  () ;)
     {
-      Item *i_l =i->item ();
+      Item *i_l =i->access_Item ();
       if (i_l && !i_l->line_l ())
        {
          i_l->unlink ();
-         delete i.remove_p ();
+         Score_element * item_p= i.remove_p ();
+#if 0
+         int sz = item_p->class_size ();
+         set_frobnify (item_p, sz);
+#endif
+         delete item_p;
        }
       else
        i++;
@@ -152,7 +164,7 @@ void
 Paper_score::calc_breaking ()
 {
   Break_algorithm *algorithm_p=0;
-  Array<Col_hpositions> sol;
+  Array<Column_x_positions> sol;
   bool try_wrap = ! paper_l_->get_var ("castingalgorithm");
 
   if (!try_wrap)
@@ -163,7 +175,7 @@ Paper_score::calc_breaking ()
       delete algorithm_p;
       if (! sol.size ())
        {
-         warning (_("Can not solve this casting problem exactly; revert to Word_wrap"));
+         warning (_ ("Can't solve this casting problem exactly; revert to Word_wrap"));
          try_wrap = true;
        }
     }
@@ -182,14 +194,15 @@ Paper_score::process ()
 {
   clean_cols ();
   print ();
-  *mlog << _("Preprocessing elements... ") <<flush;
+  *mlog << _ ("Preprocessing elements...") << " " << flush;
   super_elem_l_->breakable_col_processing ();
   super_elem_l_->pre_processing ();
   
-  *mlog << _("\nCalculating column positions ... ") <<flush;
+  *mlog << '\n' << _ ("Calculating column positions...") << " " << flush;
   super_elem_l_->space_processing ();
   calc_breaking ();
-  *mlog << _("\nPostprocessing elements...") << endl;
+  print ();
+  *mlog << _ ("Postprocessing elements...") << " " << endl;
   super_elem_l_->post_processing ();
   tex_output ();
 }
@@ -206,22 +219,31 @@ Paper_score::tex_output ()
       int def = paper_l_->get_next_default_count ();
       if (def)
        {
-         base_outname += "-" + String(def);
+         base_outname += "-" + to_str (def);
        }
     }
 
-  String outname = base_outname + ".tex";
+  String outname = base_outname;
+  if (outname != "-")
+     outname += ".tex";
   target_str_global_array.push (outname);
 
-  
-  *mlog << _("TeX output to ") <<  outname << " ...\n";
+  *mlog << _f ("TeX output to %s...", 
+    outname == "-" ? String ("<stdout>") : outname ) << endl;
 
   Tex_stream tex_out (outname);
   Tex_outputter interfees (&tex_out);
 
   outputter_l_ = &interfees;
 
-  tex_out << _("% outputting Score, defined at: ") << origin_str_ << "\n";
+  if (header_global_p)
+    {
+      tex_out << header_global_p->TeX_string ();
+    }
+    
+  
+  tex_out << _ ("% outputting Score, defined at: ") << origin_str_ << '\n';
+
   if (header_l_)
     {
       tex_out << header_l_->TeX_string();
@@ -231,6 +253,7 @@ Paper_score::tex_output ()
 
   if (experimental_features_global_b)
     tex_out << "\\turnOnExperimentalFeatures%\n";
+
   tex_out << "\\turnOnPostScript%\n";
   super_elem_l_->output_all ();
   tex_out << "\n\\EndLilyPondOutput";
@@ -239,7 +262,7 @@ Paper_score::tex_output ()
 
 /** Get all breakable columns between l and r, (not counting l and r).  */
 Link_array<Paper_column>
-Paper_score::breakable_col_range (Paper_column*l,Paper_column*r) const
+Paper_score::breakable_col_range (Paper_column*l, Paper_column*r) const
 {
   Link_array<Paper_column> ret;
 
@@ -258,6 +281,8 @@ Paper_score::breakable_col_range (Paper_column*l,Paper_column*r) const
 
   return ret;
 }
+
+
 Link_array<Paper_column>
 Paper_score::col_range (Paper_column*l, Paper_column*r) const
 {
@@ -284,10 +309,10 @@ Paper_score::broken_col_range (Item const*l_item_l, Item const*r_item_l) const
   Item const*r=r_item_l;
 
   while (! l->is_type_b(Paper_column::static_name ()))
-    l = l->axis_group_l_a_[X_AXIS]->item ();
+    l = l->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
 
   while (! r->is_type_b(Paper_column::static_name ()))
-    r = r->axis_group_l_a_[X_AXIS]->item ();
+    r = r->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ();
 
   PCursor<Paper_column*> start (l ? find_col ((Paper_column*)l)+1 : col_p_list_.top ());
   PCursor<Paper_column*> stop (r ? find_col ((Paper_column*)r) : col_p_list_.bottom ());
index fc867d6ac4f2015847e6ae1bebc6976c96714a4a..aafc2319289b20daf1a1a56ba4ace96b4e4ead21 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <math.h>
 #include "paper-def.hh"
 #include "debug.hh"
 #include "lookup.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "assoc-iter.hh"
-#include "score-grav.hh"
+#include "score-engraver.hh"
 #include "p-score.hh"
 #include "identifier.hh"
 #include "main.hh"
 #include "scope.hh"
-
+#include "assoc.hh"
+#include "assoc-iter.hh"
 
 Paper_def::Paper_def ()
 {
-  lookup_p_ = 0;
+  lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
   scope_p_ = new Scope;
 }
 
 Paper_def::~Paper_def ()
 {
+  for (Assoc_iter<int, Lookup*> ai(*lookup_p_assoc_p_); ai.ok (); ai++)
+    {
+      delete ai.val ();
+    }
+  
   delete scope_p_;
-  delete lookup_p_;
+  delete lookup_p_assoc_p_;
 }
 
 Paper_def::Paper_def (Paper_def const&s)
   : Music_output_def (s)
 {
-  lookup_p_ = s.lookup_p_? new Lookup (*s.lookup_p_) : 0;
-  if (lookup_p_)
+  lookup_p_assoc_p_ = new Assoc<int, Lookup*>;
+  for (Assoc_iter<int, Lookup*> ai(*s.lookup_p_assoc_p_); ai.ok (); ai++)
     {
-      lookup_p_->paper_l_ = this;
+      Lookup * l=new Lookup (*ai.val ());
+      l->paper_l_ = this;
+      set_lookup (ai.key(), l);
     }
+  
   scope_p_ = new Scope (*s.scope_p_);
 }
 
@@ -49,11 +58,15 @@ Real
 Paper_def::get_var (String s) const
 {
   if (!scope_p_->elt_b (s))
-    error (_ ("unknown paper variable `")  + s+"'");
-  Real * p = scope_p_->elem (s)->real ();
-  Real r = *p;
-  delete p;
-  return r;
+    error (_f ("unknown paper variable: `%s\'", s));
+  Real * p = scope_p_->elem (s)->access_Real (false);
+  if (!p)
+    {
+      error (_ ("not a real variable"));
+      return 0.0;
+    }
+
+  return *p;
 }
 
 Interval
@@ -121,12 +134,14 @@ Paper_def::geometric_spacing (Moment d) const
 }
 
 void
-Paper_def::set (Lookup*l)
+Paper_def::set_lookup (int i, Lookup*l)
 {
-  assert (l != lookup_p_);
-  delete lookup_p_;
-  lookup_p_ = l;
-  lookup_p_->paper_l_ = this;
+  if (lookup_p_assoc_p_->elt_b (i))
+    {
+      delete lookup_p_assoc_p_->elem (i);
+    }
+  l ->paper_l_ = this;
+  (*lookup_p_assoc_p_)[i] = l;
 }
 
 Real
@@ -180,24 +195,26 @@ Paper_def::print () const
 #ifndef NPRINT
   Music_output_def::print ();
   DOUT << "Paper {";
-  if (lookup_p_)
-    lookup_p_->print ();
+
+  for (Assoc_iter<int, Lookup*> ai(*lookup_p_assoc_p_); ai.ok (); ai++)
+    {
+      DOUT << "Lookup: " << ai.key () ;
+      ai.val ()->print ();
+    }
+
   for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
     {
       DOUT << i.key () << "= ";
-//      i.val ()->print ();
-// urg
-      DOUT << i.val ()->str () << "\n";
+      DOUT << i.val ()->str () << '\n';
     }
   DOUT << "}\n";
 #endif
 }
 
 Lookup const *
-Paper_def::lookup_l ()
+Paper_def::lookup_l (int i) const
 {
-  assert (lookup_p_);
-  return lookup_p_;
+  return (*lookup_p_assoc_p_)[i];
 }
 
 IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def);
@@ -209,7 +226,7 @@ Paper_def::TeX_output_settings_str () const
   for (Assoc_iter<String,Identifier*> i (*scope_p_); i.ok (); i++)
     s += String ("\\def\\mudelapaper") + i.key () 
       + "{" + i.val ()->str () + "}\n";
-  s +=  lookup_p_->texsetting + "% (Tex id)\n";
+  s +=  *scope_p_->elem ("texsetting")->access_String ();
   return s;
 }
 
index c585b7c93424202f7370fa9fc3338e38432174fa..4b9ec9fd2f86a2891a145c40231b29ca0d6ff51c 100644 (file)
@@ -6,7 +6,7 @@
   source file of the GNU LilyPond music typesetter
 
   (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-           Jan Nieuwenhuizen <jan@digicash.com>
+           Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <iostream.h>
 #include "paper-def.hh"
 #include "midi-def.hh"
 #include "main.hh"
+#include "file-path.hh"
 #include "keyword.hh"
 #include "debug.hh"
 #include "parseconstruct.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "identifier.hh"
 #include "command-request.hh"
 #include "musical-request.hh"
@@ -43,8 +44,8 @@
 
 
 // mmm
-Mudela_version oldest_version ("0.1.15");
-Mudela_version version ("0.1.15");
+Mudela_version oldest_version ("1.0.0");
+Mudela_version version ("1.0.0");
 
 
 // needed for bison.simple's malloc() and free()
@@ -136,6 +137,7 @@ yylex (YYSTYPE *s,  void * v_l)
 
 /* tokens which are not keywords */
 
+%token ACCIDENTALS
 %token ALIAS
 %token BAR
 %token BEAMPLET
@@ -158,11 +160,12 @@ yylex (YYSTYPE *s,  void * v_l)
 %token IN_T
 %token LYRIC
 %token KEY
+%token MARK
+%token MUSIC
 %token MUSICAL_PITCH
 %token MELODIC
 %token MIDI
-
-%token METER
+%token TIME_T
 %token MM_T
 %token MULTI
 %token NOTENAMES
@@ -185,9 +188,8 @@ yylex (YYSTYPE *s,  void * v_l)
 %token TRANSPOSE
 %token TEMPO
 %token TYPE
-%token TEXID
+%token FONT
 %token MEASURES
-%token TEXTSTYLE
 %token TITLE
 %token PROPERTY
 %token VERSION
@@ -227,7 +229,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <i>      open_abbrev_parens
 %type <i>      open_plet_parens close_plet_parens
 %type <i>      sub_quotes sup_quotes
-%type <music>  simple_element music_elt full_element lyrics_elt command_elt
+%type <music>  simple_element  request_chord command_element
 %type <i>      abbrev_type
 %type <i>      int unsigned
 %type <i>      script_dir
@@ -242,7 +244,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <notereq>        steno_notepitch
 %type <pitch_arr>      pitch_list
 %type <midi>   midi_block midi_body
-%type <moment> duration_length
+%type <duration>       duration_length
 
 %type <scalar>  scalar
 %type <music>  Music transposed_music relative_music
@@ -278,8 +280,8 @@ yylex (YYSTYPE *s,  void * v_l)
 
 mudela:        /* empty */
        | mudela mudela_header {
-               delete THIS->default_header_p_ ;
-               THIS->default_header_p_ = $2;
+               delete header_global_p;
+               header_global_p = $2;
        }
        | mudela score_block {
                score_global_array.push ($2);
@@ -295,10 +297,10 @@ check_version:
                Mudela_version ver (*$2);
                if (!((ver >= oldest_version) && (ver <= version))) {
                        if (THIS->ignore_version_b_) {
-                               THIS->here_input ().error ("Incorrect mudela version");
+                               THIS->here_input ().error (_f ("incorrect mudela version: %s (%s, %s)", ver.str (), oldest_version.str (), version.str ()));
                        } else {
                                THIS->fatal_error_i_ = 1;
-                               THIS->parser_error ("Incorrect mudela version");
+                               THIS->parser_error (_f ("incorrect mudela version: %s (%s, %s)", ver.str (), oldest_version.str (), version.str ()));
                        }
                }
        }
@@ -389,11 +391,6 @@ identifier_init:
        | post_request {
                $$ = new Request_identifier ($1, POST_REQUEST_IDENTIFIER);
        }
-/*     | melodic_request {
-               $$ = new Request_identifier ($1, MELODIC_REQUEST_IDENTIFIER);
-
-       }
-       */
        | explicit_duration {
                $$ = new Duration_identifier ($1, DURATION_IDENTIFIER);
        }
@@ -422,12 +419,14 @@ translator_spec:
 
 translator_spec_body:
        TRANS_IDENTIFIER        {
-               $$ = $1->translator ();
+               $$ = $1->access_Translator ();
                $$-> set_spot (THIS->here_input ());
        }
        | TYPE STRING ';'       {
-               $$ = get_translator_l (*$2)->clone ();
-               $$->set_spot (THIS->here_input ());
+               Translator* t = get_translator_l (*$2);
+               t = t->clone ();
+               t->set_spot (THIS->here_input ());
+               $$ = t;
                delete $2;
        }
        | translator_spec_body STRING '=' scalar ';'    { 
@@ -456,13 +455,11 @@ score_block:
                $$ = $4;
                $$->set_spot (THIS->pop_spot ());
                if (!$$->def_p_arr_.size ())
-                       $$->add (THIS->default_paper_p ());
+                       $$->add_output (THIS->default_paper_p ());
 
                /* handle error levels. */
                $$->errorlevel_i_ = THIS->error_level_i_;
                THIS->error_level_i_ = 0;
-               if (!$$->header_p_ && THIS->default_header_p_)
-                       $$->header_p_ = new Header (*THIS->default_header_p_);
        }
        ;
 
@@ -470,18 +467,18 @@ score_body:               {
                $$ = new Score;
        }
        | SCORE_IDENTIFIER {
-               $$ = $1->score ();
+               $$ = $1->access_Score ();
        }
        | score_body mudela_header      {
                $$->header_p_ = $2;
        }
        | score_body Music      {
                if ($$->music_p_)
-                       $2->warning ("More than one music block");      
+                       $2->warning (_ ("More than one music block"));  
                $$->music_p_ = $2;
        }
        | score_body output_def {
-               $$->add ($2);
+               $$->add_output ($2);
        }
        | score_body error {
 
@@ -527,7 +524,7 @@ paper_body:
                $$ = p;
        }
        | PAPER_IDENTIFIER optional_semicolon   {
-               Paper_def *p = $1->paperdef ();
+               Paper_def *p = $1->access_Paper_def ();
                THIS->lexer_p_->scope_l_arr_.push (p->scope_p_);
                $$ = p;
        }
@@ -535,24 +532,21 @@ paper_body:
                $$->outfile_str_ = *$3;
                delete $3;
        }
-       | paper_body symtables          { $$->set ($2); }
+       | paper_body int '=' symtables          { // ugh, what a syntax
+               $$->set_lookup ($2, $4);
+       }
        | paper_body STRING '=' simple_identifier_init optional_semicolon {
            Identifier* id = $4;
            id->init_b_ = THIS->init_parse_b_;
            if (id->is_type_b (Translator_identifier::static_name ()))
              {
-               $$->assign_translator (*$2, id->translator ());
+               $$->assign_translator (*$2, id->access_Translator ());
                delete id;
              }
            else
              THIS->lexer_p_->set_identifier (*$2, id);
+             delete $2;
        }
-/*
-       | paper_body STRING '=' translator_spec {
-               $$-> assign_translator (*$2, $4);
-               delete $2;
-       }
-*/
        | paper_body SHAPE '=' shape_array ';' {
                $$->shape_int_a_ = *$4;
                delete $4;
@@ -567,7 +561,7 @@ real_primary:
                $$ = $1;
        }
        | REAL_IDENTIFIER               {
-               Real *r_p = $1->real ();
+               Real *r_p = $1->access_Real ();
                $$ = * r_p;
                DOUT << "Lookup real: " << *r_p << "\n";
                delete r_p;
@@ -644,10 +638,6 @@ tempo_request:
        }
        ;
 
-/*
-       MUSIC
-*/
-
 Voice:
        '{' Voice_body '}'      {
                $$ = $2;
@@ -662,10 +652,13 @@ Voice_body:
        | Voice_body Music      {
                $$->add ($2);
        }
+       | Voice_body error                      {
+               $$ = new Music_list;
+       }
        ;
 
 Music:
-       full_element            { $$ = $1; }
+       request_chord           { $$ = $1; }
        | TYPE STRING Music     {
                $$ = $3;
                $$->translator_type_str_ = *$2;
@@ -681,24 +674,28 @@ Music:
        | Voice         { $$ = $1; }
        | Chord                 { $$ = $1; }
        | transposed_music      { $$ = $1; }
-       | MUSIC_IDENTIFIER { $$ = $1->music (); }
+       | MUSIC_IDENTIFIER { $$ = $1->access_Music (); }
        | MELODIC
                { THIS->lexer_p_->push_note_state (); }
        Music
-               { $$=$3; THIS->lexer_p_->pop_state (); }
+               { $$ = $3;
+                 THIS->lexer_p_->pop_state ();
+               }
 
        | LYRIC
                { THIS->lexer_p_->push_lyric_state (); }
        Music
-               { $$ = $3; THIS->lexer_p_->pop_state (); }
+               {
+                 $$ = $3;
+                 THIS->lexer_p_->pop_state ();
+               }
        | property_def
        | translator_change
        | relative_music        { $$ = $1; }
        ;
 
 relative_music:
-       RELATIVE absolute_musical_pitch Music
-       {
+       RELATIVE absolute_musical_pitch Music {
                $$ = new Relative_octave_music ($3, *$2);
                delete $2;
        }
@@ -739,28 +736,26 @@ scalar:
 
 Chord:
        '<' Chord_body '>'      { $$  = $2; }
-       | MULTI unsigned Chord {
-               $$ = $3;
-               $$->multi_level_i_=$2;
-       }
        ;
 
 Chord_body:
        /**/    {
                $$ = new Chord;
-               $$-> multi_level_i_ = 1;
+               $$-> multi_level_i_ = 0;
                $$->set_spot (THIS->here_input ());
        }
        | Chord_body Music {
                $$->add ($2);
        }
+       | Chord_body error {
+               $$ = new Chord;
+       }
        ;
 
 transposed_music:
        TRANSPOSE musical_pitch Music {
                $$ = $3;
                $$ -> transpose (*$2);
-
                delete $2;
        }
        ;
@@ -769,21 +764,18 @@ transposed_music:
 /*
        VOICE ELEMENTS
 */
-full_element:
+request_chord:
        pre_requests simple_element post_requests       {
                THIS->add_requests ((Chord*)$2);//ugh
                $$ = $2;
        }
-       | command_elt
-       | voice_command ';'     { $$ = 0; }
+       | command_element
        ;
 
-simple_element:
-       music_elt
-       | lyrics_elt
-       ;
 
-command_elt:
+
+
+command_element:
        command_req {
                $$ = new Request_chord;
                $$-> set_spot (THIS->here_input ());
@@ -803,7 +795,7 @@ abbrev_command_req:
                $$ = new Barcheck_req;
        }
        | COMMAND_IDENTIFIER    {
-               $$ = $1->request ();
+               $$ = $1->access_Request ();
        }
        ;
 
@@ -812,22 +804,28 @@ verbose_command_req:
                $$ = new Bar_req (*$2);
                delete $2;
        }
+       | MARK STRING {
+               $$ = new Mark_req (*$2);
+               delete $2;
+       }
+       | MARK unsigned {
+               $$ = new Mark_req (to_str ($2));
+       }
+       | TIME_T unsigned '/' unsigned  {
+               Time_signature_change_req *m = new Time_signature_change_req;
+               m->beats_i_ = $2;
+               m->one_beat_i_=$4;
+               $$ = m;
+       }
        | PENALTY '=' int       {
                Break_req * b = new Break_req;
                b->penalty_i_ = $3;
                b-> set_spot (THIS->here_input ());
                $$ = b;
        }
-       | METER unsigned '/' unsigned   {
-               Meter_change_req *m = new Meter_change_req;
-               m->set ($2,$4);
-               $$ = m;
-       }
        | SKIP duration_length {
                Skip_req * skip_p = new Skip_req;
-               skip_p->duration_.set_plet ($2->num (),
-                       $2->den ());
-
+               skip_p->duration_ = *$2;
                delete $2;
                $$ = skip_p;
        }
@@ -838,16 +836,24 @@ verbose_command_req:
                $$ = new Cadenza_req ($2);
        }
        | PARTIAL duration_length       {
-               $$ = new Partial_measure_req (*$2);
+               $$ = new Partial_measure_req ($2->length ());
                delete $2;
        }
        | CLEF STRING {
                $$ = new Clef_change_req (*$2);
                delete $2;
        }
-       | KEY pitch_list        {
+       | KEY NOTENAME_PITCH    {
+               Key_change_req *key_p= new Key_change_req;
+               key_p->pitch_arr_.push(*$2);
+               key_p->ordinary_key_b_ = true;
+               $$ = key_p;
+               delete $2;
+       }
+       | ACCIDENTALS pitch_list        {
                Key_change_req *key_p= new Key_change_req;
                key_p->pitch_arr_ = *$2;
+               key_p->ordinary_key_b_ = false;
                $$ = key_p;
                delete $2;
        }
@@ -885,15 +891,19 @@ structured_post_request:
 
 post_request:
        POST_REQUEST_IDENTIFIER {
-               $$ = (Request*)$1->request ();
+               $$ = (Request*)$1->access_Request ();
        }
        | dynamic_req {
                $$ = $1;
        }
        | abbrev_type   {
+#if 1 // re-instating
                Abbreviation_req* a = new Abbreviation_req;
                a->type_i_ = $1;
                $$ = a;
+#else // and disabling just created ugly sticky abbrev_req
+               THIS->default_abbrev_i_ = $1;
+#endif
        }
        ;
 
@@ -917,16 +927,17 @@ sub_quotes:
 steno_musical_pitch:
        NOTENAME_PITCH  {
                $$ = $1;
-               $$->octave_i_ += THIS->default_octave_i_;
+               // $$->octave_i_ += THIS->default_octave_i_;
        }
        | NOTENAME_PITCH sup_quotes     {
                $$ = $1;
-               $$->octave_i_ += $2 +  THIS->default_octave_i_;
-
+               // $$->octave_i_ += THIS->default_octave_i_ + $2;
+               $$->octave_i_ +=  $2;
        }
        | NOTENAME_PITCH sub_quotes      {
                $$ = $1;
-               $$->octave_i_ += THIS->default_octave_i_ - $2 ;
+               $$->octave_i_ += - $2;
+               // $$->octave_i_ += THIS->default_octave_i_ - $2;
        }
        ;
 
@@ -996,22 +1007,19 @@ close_plet_parens:
                $$ = MAEBTELP;
                THIS->plet_.type_i_ = $2[1];
                THIS->plet_.iso_i_ = $2[0];
-               THIS->default_duration_.plet_.type_i_ = $2[1];
-               THIS->default_duration_.plet_.iso_i_ = $2[0];
+               THIS->default_duration_.plet_ = THIS->plet_;
        }
        | TELP {
                $$ = TELP;
                THIS->plet_.type_i_ = 1;
                THIS->plet_.iso_i_ = 1;
-               THIS->default_duration_.plet_.iso_i_ = 1;
-               THIS->default_duration_.plet_.type_i_ = 1;
+               THIS->default_duration_.plet_ = THIS->plet_;
        }
        | TELP plet_fraction {
                $$ = TELP;
                THIS->plet_.type_i_ = $2[1];
                THIS->plet_.iso_i_ = $2[0];
-               THIS->default_duration_.plet_.type_i_ = $2[1];
-               THIS->default_duration_.plet_.iso_i_ = $2[0];
+               THIS->default_duration_.plet_ = THIS->plet_;
        }
        ;
 
@@ -1038,9 +1046,9 @@ open_abbrev_parens:
        '[' ':' unsigned {
                $$ = '[';
                if (!Duration::duration_type_b ($3))
-                       THIS->parser_error (String ("Not a duration: ") + $3);
+                       THIS->parser_error (_f ("not a duration: %d", $3));
                else if ($3 < 8)
-                       THIS->parser_error ("Can't abbreviate");
+                       THIS->parser_error (_ ("can't abbreviate"));
                else
                        THIS->set_abbrev_beam ($3);
        }
@@ -1051,15 +1059,13 @@ open_plet_parens:
                $$ = BEAMPLET;
                THIS->plet_.type_i_ = $2[1];
                THIS->plet_.iso_i_ = $2[0];
-               THIS->default_duration_.plet_.type_i_ = $2[1];
-               THIS->default_duration_.plet_.iso_i_ = $2[0];
+               THIS->default_duration_.plet_ = THIS->plet_;
        }
        | PLET plet_fraction {
                $$ = PLET;
                THIS->plet_.type_i_ = $2[1];
                THIS->plet_.iso_i_ = $2[0];
-               THIS->default_duration_.plet_.type_i_ = $2[1];
-               THIS->default_duration_.plet_.iso_i_ = $2[0];
+               THIS->default_duration_.plet_ = THIS->plet_;
        }
        ;
 
@@ -1106,7 +1112,7 @@ script_req:
 gen_script_def:
        text_def        { 
                $$ = $1;
-               ((Text_def*) $$)->align_i_ = CENTER; /* UGH */
+               ((Text_def*) $$)->align_dir_ = CENTER; /* UGH */
        }
        | mudela_script { 
                $$ = $1;
@@ -1114,7 +1120,7 @@ gen_script_def:
        }
        | finger {
                $$ = $1;
-               ((Text_def*)$$)->align_i_ = CENTER;
+               ((Text_def*)$$)->align_dir_ = RIGHT; /* UGH */
        }
        ;
 
@@ -1124,7 +1130,6 @@ text_def:
                $$ = t;
                t->text_str_ = *$1;
                delete $1;
-               t->style_str_ = THIS->textstyle_str_;
                $$->set_spot (THIS->here_input ());
        }
        ;
@@ -1133,7 +1138,7 @@ finger:
         DIGIT {
                Text_def* t  = new Text_def;
                $$ = t;
-               t->text_str_ = String ($1);
+               t->text_str_ = to_str ($1);
                t->style_str_ = "finger";
                $$->set_spot (THIS->here_input ());
        }
@@ -1152,10 +1157,10 @@ script_abbreviation:
        ;
 
 mudela_script:
-       SCRIPT_IDENTIFIER               { $$ = $1->script (); }
+       SCRIPT_IDENTIFIER               { $$ = $1->access_General_script_def (true); }
        | script_definition             { $$ = $1; }
        | script_abbreviation           {
-               $$ = THIS->lexer_p_->lookup_identifier (*$1)->script ();
+               $$ = THIS->lexer_p_->lookup_identifier (*$1)->access_General_script_def (true);
                delete $1;
        }
        ;
@@ -1181,26 +1186,13 @@ pre_requests:
 absolute_musical_pitch:
        steno_musical_pitch     {
                $$ = $1;
-               $$->octave_i_ -=  THIS->default_octave_i_;
-       }
-       ;
-voice_command:
-       OCTAVE absolute_musical_pitch   {
-               THIS->default_octave_i_ = $2->octave_i_;
-               delete $2;
-       }
-       | TEXTSTYLE STRING      {
-               THIS->textstyle_str_ = *$2;
-               delete $2;
+               // $$->octave_i_ -=  THIS->default_octave_i_;
        }
        ;
 
 duration_length:
-       {
-               $$ = new Moment (0,1);
-       }
-       | duration_length steno_duration                {
-               *$$ += $2->length ();
+       steno_duration {
+               $$ = $1;
        }
        ;
 
@@ -1212,18 +1204,13 @@ dots:
 entered_notemode_duration:
        /* */           {
                $$ = new Duration (THIS->default_duration_);
-               // get sticky plet part too
-               $$->set_plet (THIS->plet_.iso_i_, THIS->plet_.type_i_);
        }
        | dots          {
                $$ = new Duration (THIS->default_duration_);
-               // get sticky plet part too
-               $$->set_plet (THIS->plet_.iso_i_, THIS->plet_.type_i_);
                $$->dots_i_  = $1;
        }
        | steno_duration        {
                THIS->set_last_duration ($1);
-               $$ = $1;
        }
        ;
 
@@ -1237,23 +1224,23 @@ steno_duration:
        unsigned                {
                $$ = new Duration;
                if (!Duration::duration_type_b ($1))
-                       THIS->parser_error ("Not a duration:" + String ($1));
+                       THIS->parser_error (_f ("not a duration: %d", $1));
                else {
                        $$->durlog_i_ = Duration_convert::i2_type ($1);
                        $$->set_plet (THIS->plet_.iso_i_, THIS->plet_.type_i_);
                     }
        }
        | DURATION_IDENTIFIER   {
-               $$ = $1->duration ();
+               $$ = $1->access_Duration ();
        }
        | steno_duration '.'    {
                $$->dots_i_ ++;
        }
        | steno_duration '*' unsigned  {
-               $$->plet_.iso_i_ = $3;  /* ugh.  should do *= */
+               $$->plet_.iso_i_ *= $3;
        }
        | steno_duration '/' unsigned {
-               $$->plet_.type_i_ = $3; /* ugh. should do *= iso = */
+               $$->plet_.type_i_ *= $3;
        }
        ;
 
@@ -1264,20 +1251,19 @@ abbrev_type:
        }
        | ':' unsigned {
                if (!Duration::duration_type_b ($2))
-                       THIS->parser_error ("Not a duration:" + String ($2));
+                       THIS->parser_error (_f ("not a duration: %d", $2));
                else if ($2 < 8)
-                       THIS->parser_error ("Can't abbreviate");
+                       THIS->parser_error (_ ("can't abbreviate"));
                $$ = $2;
        }
-
        ;
 
 
 
-music_elt:
+simple_element:
        steno_notepitch notemode_duration  {
                if (!THIS->lexer_p_->note_state_b ())
-                       THIS->parser_error ("have to be in Note mode for notes");
+                       THIS->parser_error (_ ("have to be in Note mode for notes"));
                $1->set_duration (*$2);
                int durlog_i = $2->durlog_i_;
                $$ = THIS->get_note_element ($1, $2);
@@ -1297,16 +1283,14 @@ music_elt:
                $$ = velt_p;
 
        }
-       ;
-
-lyrics_elt:
-       text_def notemode_duration                      {
-       /* this sux! text-def should be feature of lyric-engraver. */
+       | STRING notemode_duration                      {
                if (!THIS->lexer_p_->lyric_state_b ())
-                       THIS->parser_error ("Have to be in Lyric mode for lyrics");
-               $$ = THIS->get_word_element ($1, $2);
+                       THIS->parser_error (_ ("have to be in Lyric mode for lyrics"));
+               $$ = THIS->get_word_element (*$1, $2);
+               delete $1;
+       }
+       ;
 
-       };
 
 /*
        UTILITIES
@@ -1314,7 +1298,7 @@ lyrics_elt:
 pitch_list:                    {
                $$ = new Array<Musical_pitch>;
        }
-       | pitch_list NOTENAME_PITCH     {
+       | pitch_list musical_pitch      {
                $$->push (*$2);
                delete $2;
        }
@@ -1336,7 +1320,7 @@ int:
                $$ = -$2;
        }
        | INT_IDENTIFIER        {
-               int *i_p = $1->intid ();
+               int *i_p = $1->access_int ();
                $$ = *i_p;
                delete i_p;
        }
@@ -1347,8 +1331,8 @@ string_primary:
                $$ = $1;
        }
        | STRING_IDENTIFIER     {
-               String *s_p = $1->string ();
-               // $$ = * r_p;
+               String *s_p = $1->access_String ();
+
                $$ = s_p;
                DOUT << "Lookup string: " << *s_p << "\n";
        }
@@ -1387,10 +1371,14 @@ symtables_body:
                $$ = new Lookup;
        }
        | IDENTIFIER            {
-               $$ = $1->lookup ();
+               $$ = $1->access_Lookup ();
        }
-       | symtables_body TEXID STRING           {
-               $$->texsetting = *$3;
+       | symtables_body FONT STRING            {
+               $$->font_ = *$3;
+               $$->font_path_ = global_path.find (*$3);
+               if  (!$$->font_path_.length_i ())
+                       THIS->here_input ().error (_f("can't open file: `%s'", $3->ch_C()));
+
                delete $3;
        }
        | symtables_body STRING '=' symtable            {
index 81e281d659fa588d809e08c5a65b8f88726ea6f6..4332a23486bdf68f746fcd53b9c7d0cadd18194a 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <time.h>
@@ -26,7 +26,7 @@ Performance::Performance ()
 }
 
 void
-Performance::add (Audio_column* p)
+Performance::add_column (Audio_column* p)
 {
   p->performance_l_ = this;
   audio_column_p_list_.bottom().add (p);
@@ -73,9 +73,8 @@ Performance::output_header_track (Midi_stream& midi_stream_r)
   Midi_text generate (Midi_text::TEXT, str);
   midi_track.add (Moment (0), &generate);
 
-  str = _("from musical definition: ");
+  str = _f ("from musical definition: %s", origin_str_);
 
-  str += origin_str_;
   Midi_text from (Midi_text::TEXT, str);
   midi_track.add (Moment (0), &from);
 
@@ -96,7 +95,7 @@ Performance::add_staff (Audio_staff* l)
 }
 
 void
-Performance::add (Audio_element *p)
+Performance::add_element (Audio_element *p)
 {
   audio_elem_p_list_.bottom().add (p);
 }
@@ -127,17 +126,19 @@ Performance::process()
     {
       
       out = default_outname_base_global;
+      if (out == "-")
+        out = "lelie";
       int def = midi_l_->get_next_default_count ();
       if (def)
        {
-         out += "-" + String(def);
+         out += "-" + to_str (def);
        }
 
       out += ".midi";
     }
   
   Midi_stream midi_stream (out);
-  *mlog << _("MIDI output to ") << out<< " ..." << endl;
+  *mlog << _f ("MIDI output to %s...", out) << endl;
   target_str_global_array.push (out);
 
   output (midi_stream);
index a33b967e439b0e4fbd0df56c288345d667bd03b9..510ff51e221c5ee2e4a8998ad190c0ec93417084 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-               Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+               Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "performer-group-performer.hh"
index b62f37ec074d16d8e8eae69ac2eefd9b54ec3907..aa24f97bd1a1f2088b7c09727ccc4d2666394d58 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-               Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+               Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 
diff --git a/lily/piano-brace.cc b/lily/piano-brace.cc
new file mode 100644 (file)
index 0000000..0d0d6a1
--- /dev/null
@@ -0,0 +1,54 @@
+
+/*
+  span-score-bar.cc -- implement Span_score_bar
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "piano-brace.hh"
+#include "atom.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
+#include "main.hh"
+
+Piano_brace::Piano_brace ()
+{
+  extra_move_left_f_ = 0.0;
+}
+
+Atom
+Piano_brace::get_bar_sym (Real dy) const
+{
+  Atom a = lookup_l ()->vbrace (dy);
+  a.translate_axis (-extra_move_left_f_, X_AXIS);
+
+      
+  return a;
+}
+
+Interval
+Piano_brace::do_width() const
+{
+  return Interval (0,0);
+}
+
+void
+Piano_brace::do_post_processing ()
+{
+  Span_score_bar::do_post_processing();
+  Interval i = Span_score_bar::do_height ();
+  Real staffheight_f = paper ()->staffheight_f ();
+
+  // don't set braces that span only one staff
+  if (i.length () <= 2.0 * staffheight_f)
+    {
+      set_empty (true);
+      transparent_b_ = true;
+    }
+}
+
+IMPLEMENT_IS_TYPE_B1(Piano_brace, Span_score_bar);
+
+  
diff --git a/lily/pitch-squash-engraver.cc b/lily/pitch-squash-engraver.cc
new file mode 100644 (file)
index 0000000..026027e
--- /dev/null
@@ -0,0 +1,25 @@
+/*   
+  pitch-squash-grav.cc --  implement Pitch_squash_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "pitch-squash-engraver.hh"
+#include "note-head.hh"
+
+void
+Pitch_squash_engraver::acknowledge_element (Score_element_info i)
+{
+  if (i.elem_l_->is_type_b (Note_head::static_name ()))
+    {
+      Note_head * nl = (Note_head*)i.elem_l_->access_Item ();
+      nl->position_i_  =0;
+    }
+}
+
+ADD_THIS_TRANSLATOR (Pitch_squash_engraver);
+IMPLEMENT_IS_TYPE_B1(Pitch_squash_engraver, Engraver);
+
diff --git a/lily/pitch-squash-grav.cc b/lily/pitch-squash-grav.cc
deleted file mode 100644 (file)
index a11b61b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*   
-  pitch-squash-grav.cc --  implement Pitch_squash_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-  
- */
-
-#include "pitch-squash-grav.hh"
-#include "note-head.hh"
-
-void
-Pitch_squash_engraver::acknowledge_element (Score_elem_info i)
-{
-  if (i.elem_l_->is_type_b (Note_head::static_name ()))
-    {
-      Note_head * nl = (Note_head*)i.elem_l_->item ();
-      nl->position_i_  =0;
-    }
-}
-
-ADD_THIS_TRANSLATOR (Pitch_squash_engraver);
-IMPLEMENT_IS_TYPE_B1(Pitch_squash_engraver, Engraver);
-
index d4fc9005de83ce79ec746844634c72aae3fc7310..391ec74d402a4eb16535e65864ec34ec89596675 100644 (file)
@@ -1,7 +1,7 @@
 /*
   plet-engraver.cc -- implement Plet_engraver
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "proto.hh"
@@ -25,7 +25,7 @@ Plet_engraver::Plet_engraver ()
 }
 
 void
-Plet_engraver::acknowledge_element (Score_elem_info i)
+Plet_engraver::acknowledge_element (Score_element_info i)
 {
   if (!i.elem_l_->is_type_b (Stem::static_name ()))
     return;
@@ -35,20 +35,20 @@ Plet_engraver::acknowledge_element (Score_elem_info i)
     return;
 
   if (!plet_spanner_p_->stem_l_drul_[LEFT])
-    plet_spanner_p_->set_stem (LEFT, (Stem*)i.elem_l_->item ());
+    plet_spanner_p_->set_stem (LEFT, (Stem*)i.elem_l_->access_Item ());
   else
     if (span_reqs_drul_[RIGHT] && !plet_spanner_p_->stem_l_drul_[RIGHT]) 
-      plet_spanner_p_->set_stem (RIGHT, (Stem*)i.elem_l_->item());
+      plet_spanner_p_->set_stem (RIGHT, (Stem*)i.elem_l_->access_Item ());
 }
 
 bool
 Plet_engraver::do_try_request (Request* req_l)
 {
-  Musical_req* mus_l = req_l->musical ();
+  Musical_req* mus_l = req_l->access_Musical_req ();
   if (!mus_l)
     return false;
 
-  Beam_req* b = mus_l->beam ();
+  Beam_req* b = mus_l->access_Beam_req ();
   if (b)
     {
       if (b->spantype)
@@ -59,7 +59,7 @@ Plet_engraver::do_try_request (Request* req_l)
       return false;
     }
     
-  Plet_req* p = mus_l->plet ();
+  Plet_req* p = mus_l->access_Plet_req ();
   if (!p)
     return false;
 
@@ -80,7 +80,7 @@ Plet_engraver::do_removal_processing ()
 {
   if (plet_spanner_p_)
     {
-      span_reqs_drul_[LEFT]->warning (_("unterminated plet"));
+      span_reqs_drul_[LEFT]->warning (_ ("unterminated plet"));
       plet_spanner_p_->unlink ();
       delete plet_spanner_p_;
       plet_spanner_p_ = 0;
@@ -95,9 +95,9 @@ Plet_engraver::do_process_requests ()
     return;
 
   plet_spanner_p_ = new Plet_spanner;
-  plet_spanner_p_->tdef_p_->text_str_ = span_reqs_drul_[LEFT]->plet_i_;
+  plet_spanner_p_->tdef_p_->text_str_ = to_str (span_reqs_drul_[LEFT]->plet_i_);
 
-  announce_element (Score_elem_info (plet_spanner_p_, span_reqs_drul_[LEFT]));
+  announce_element (Score_element_info (plet_spanner_p_, span_reqs_drul_[LEFT]));
 }
 
 void
@@ -117,8 +117,11 @@ Plet_engraver::do_pre_move_processing ()
   if (plet_spanner_p_->visibility_i_)
     typeset_element (plet_spanner_p_);
   else
-    plet_spanner_p_->unlink ();
-
+    {
+      plet_spanner_p_->unlink ();
+      delete plet_spanner_p_;
+    }
+  
   plet_spanner_p_ = 0;
   span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
 }
index feeacc4db77930bff3f0787b7504686a65e050ca..cf257987812f4cea6dcd800ea6b4ec7741099f77 100644 (file)
@@ -3,11 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "atom.hh"
-#include "boxes.hh"
+#include "box.hh"
 #include "debug.hh"
 #include "lookup.hh"
 #include "molecule.hh"
@@ -31,7 +31,7 @@ Plet_spanner::Plet_spanner ()
   visibility_i_ = 3;
 
   tdef_p_ = new Text_def;
-  tdef_p_->align_i_ = CENTER;
+  tdef_p_->align_dir_ = CENTER;
   tdef_p_->style_str_ = "italic";
 }
 
@@ -59,12 +59,12 @@ Plet_spanner::brew_molecule_p () const
   
   w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
   
-  Atom a = paper ()->lookup_l ()->plet (dy_f, w, dir_);
+  Atom a = lookup_l ()->plet (dy_f, w, dir_);
 
   a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
 
   if (visibility_i_ >= 2)
-      mol_p->add (a);
+      mol_p->add_atom (a);
 
   Real interline_f = paper ()->interline_f ();
   Real numy_f = (dir_ > 0 ? 0 : -interline_f) + dir_ * interline_f / 2;
@@ -73,7 +73,7 @@ Plet_spanner::brew_molecule_p () const
     dy_f_drul_[LEFT] + dy_f / 2 + numy_f));
 
   if (visibility_i_ >= 1)
-    mol_p->add (num);
+    mol_p->add_atom (num);
 
   return mol_p;
 }
@@ -82,7 +82,7 @@ void
 Plet_spanner::do_add_processing ()
 {
   if (! (stem_l_drul_[LEFT] && stem_l_drul_[RIGHT]))
-    warning (_ ("Lonely plet.. "));
+    warning (_ ("lonely plet"));
 
   Direction d = LEFT;
   Drul_array<Stem *> new_stem_drul = stem_l_drul_;
@@ -126,12 +126,12 @@ Plet_spanner::do_post_processing ()
 }
 
 void
-Plet_spanner::do_substitute_dependency (Score_elem* o, Score_elem* n)
+Plet_spanner::do_substitute_dependency (Score_element* o, Score_element* n)
 {
-  Stem* new_l = n ? (Stem*)n->item () : 0;
-  if (o->item () == stem_l_drul_[LEFT])
+  Stem* new_l = n ? (Stem*)n->access_Item () : 0;
+  if (o->access_Item () == stem_l_drul_[LEFT])
     stem_l_drul_[LEFT] = new_l;
-  else if (o->item () == stem_l_drul_[RIGHT])
+  else if (o->access_Item () == stem_l_drul_[RIGHT])
     stem_l_drul_[RIGHT] = new_l;
 }
   
index c13957615826e90cbd7192002291f85777513352..0e98605b6c1dcd8802dc14b71f7356f2d95e063c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "musical-request.hh"
@@ -15,7 +15,7 @@ ADD_THIS_TRANSLATOR(Plet_swallow_engraver);
 bool
 Plet_swallow_engraver::do_try_request (Request* req_l)
 {
-  if (req_l && req_l->musical () && req_l->musical ()->plet ())
+  if (req_l && req_l->access_Musical_req () && req_l->access_Musical_req ()->access_Plet_req ())
     return true;
   return false;
 }
diff --git a/lily/priority-halign-engraver.cc b/lily/priority-halign-engraver.cc
new file mode 100644 (file)
index 0000000..60300b1
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+  score-halign-reg.cc -- implement Priority_horizontal_align_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "bar.hh"
+#include "break-align-item.hh"
+#include "priority-halign-engraver.hh"
+#include "score-priority-engraver.hh"
+
+Priority_horizontal_align_engraver::Priority_horizontal_align_engraver()
+{
+  halign_p_ =0;
+}
+
+void
+Priority_horizontal_align_engraver::do_pre_move_processing()
+{
+  if (halign_p_) 
+    {
+      typeset_element (halign_p_);
+      halign_p_ =0;
+    }
+}
+
+void
+Priority_horizontal_align_engraver::acknowledge_element (Score_element_info i)
+{
+  Engraver* reg = i.origin_grav_l_arr_[0];
+  if (reg->is_type_b (Score_priority_engraver::static_name()))
+    {
+      if (!halign_p_) 
+       {
+         halign_p_ = new Break_align_item;
+         halign_p_->breakable_b_ = true;
+         announce_element (Score_element_info (halign_p_,0));
+       }
+      Item * it = i.elem_l_->access_Item ();
+      if (it->break_priority_i_ == 0)
+       halign_p_->center_l_ = it;
+
+      halign_p_->add_item (it, it->break_priority_i_);
+    }
+}
+
+IMPLEMENT_IS_TYPE_B1(Priority_horizontal_align_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Priority_horizontal_align_engraver);
diff --git a/lily/priority-halign-grav.cc b/lily/priority-halign-grav.cc
deleted file mode 100644 (file)
index 76fc2b8..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  score-halign-reg.cc -- implement Priority_horizontal_align_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "bar.hh"
-#include "break-align-item.hh"
-#include "priority-halign-grav.hh"
-#include "score-priority-grav.hh"
-
-Priority_horizontal_align_engraver::Priority_horizontal_align_engraver()
-{
-  halign_p_ =0;
-}
-
-void
-Priority_horizontal_align_engraver::do_pre_move_processing()
-{
-  if (halign_p_) 
-    {
-      typeset_element (halign_p_);
-      halign_p_ =0;
-    }
-}
-
-void
-Priority_horizontal_align_engraver::acknowledge_element (Score_elem_info i)
-{
-  Engraver* reg = i.origin_grav_l_arr_[0];
-  if (reg->is_type_b (Score_priority_engraver::static_name()))
-    {
-      if (!halign_p_) 
-       {
-         halign_p_ = new Break_align_item;
-         halign_p_->breakable_b_ = true;
-         announce_element (Score_elem_info (halign_p_,0));
-       }
-      Item * it = i.elem_l_->item();
-      if (it->break_priority_i_ == 0)
-       halign_p_->center_l_ = it;
-
-      halign_p_->add (it, it->break_priority_i_);
-    }
-}
-
-IMPLEMENT_IS_TYPE_B1(Priority_horizontal_align_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Priority_horizontal_align_engraver);
index 61a1b933c334ccf03ccea27c1d21407413595912..da30301901a10d06df5aec933a7c76354e6013c4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "property-iterator.hh"
index 8d08d22b2ba4d20f7e8210057cccc7eaf69413d7..47819d220317da655ad8730ec339b9122dc47d0b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <math.h>
@@ -11,7 +11,7 @@
 #include "misc.hh"
 #include "lookup.hh"
 #include "molecule.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "debug.hh"
 #include "paper-def.hh"
 #include "string-convert.hh"
diff --git a/lily/qlp.cc b/lily/qlp.cc
deleted file mode 100644 (file)
index f77534e..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-  qlp.cc -- implement Mixed_qp
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "debug.hh"
-#include "qlp.hh"
-
-
-void
-Mixed_qp::add_equality_cons (Vector , double)
-{
-  assert (false);
-}
-
-void
-Mixed_qp::add_fixed_var (int i, Real r)
-{
-  eq_cons.push (i);
-  eq_consrhs.push (r);
-}
-
-
-/**
-  eliminate appropriate variables, until we have a Ineq_constrained_qp
-  then solve that.
-
-  PRE
-  cons should be ascending
-  */
-Vector
-Mixed_qp::solve (Vector start) const 
-{
-  if (!dim())
-    return Vector (0);
-  
-  print();
-  Ineq_constrained_qp pure (*this);
-  
-  for  (int i= eq_cons.size()-1; i>=0; i--) 
-    {
-      pure.eliminate_var (eq_cons[i], eq_consrhs[i]);
-      start.del (eq_cons[i]);
-    }
-  Vector sol = pure.solve (start);
-  for (int i= 0; i < eq_cons.size(); i++) 
-    {
-      sol.insert (eq_consrhs[i],eq_cons[i]);
-    }
-  return sol;
-}
-
-
-void
-Ineq_constrained_qp::assert_solution (Vector sol) const
-{
-  Array<int> binding;
-  for (int i=0; i < cons_.size(); i++) 
-    {
-      Real R=cons_[i] * sol- consrhs_[i];
-      assert (R> -EPS);
-      if (R < EPS)
-       binding.push (i);
-    }
-  // KKT check...
-  // todo
-}
-
-void
-Ineq_constrained_qp::print() const
-{
-#ifndef NPRINT
-  DOUT << "Quad " << quad_;
-  DOUT << "lin " << lin_ <<"\n"
-       << "const " << const_term_<<"\n";
-  for (int i=0; i < cons_.size(); i++) 
-    {
-      DOUT << "constraint["<<i<<"]: " << cons_[i] << " >= " << consrhs_[i];
-      DOUT << "\n";
-    }
-#endif
-}
-
-Mixed_qp::Mixed_qp (int n)
-  : Ineq_constrained_qp (n)
-{
-}
-
-void
-Mixed_qp::OK() const
-{
-#ifndef NDEBUG
-  Ineq_constrained_qp::OK();
-  assert (eq_consrhs.size() == eq_cons.size ());
-#endif    
-}
-
-void
-Mixed_qp::print() const
-{
-#ifndef NPRINT
-  Ineq_constrained_qp::print();
-  for (int i=0; i < eq_cons.size(); i++) 
-    {
-      DOUT << "eq cons "<<i<<": x["<<eq_cons[i]<<"] == " << eq_consrhs[i]<<"\n";
-    }
-#endif
-}
-
index 78e07042773efb7ed8b91e7e5025b92d99832a0f..3a249a8a31dcdd6db7f05f7d89cb1c546ba20381 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   TODO:
   try fixed point arithmetic, to speed up lily.
@@ -22,13 +22,13 @@ Active_constraints::status() const
   String s ("Active|Inactive [");
   for (int i=0; i< active.size(); i++)
     {
-      s += String (active[i]) + " ";
+      s += to_str (active[i]) + " ";
     }
 
   s+="| ";
   for (int i=0; i< inactive.size(); i++)
     {
-      s += String (inactive[i]) + " ";
+      s += to_str (inactive[i]) + " ";
     }
   s+="]";
 
@@ -70,78 +70,81 @@ Active_constraints::get_lagrange (Vector gradient)
 }
 
 void
-Active_constraints::add (int k)
+Active_constraints::add_constraint (int k)
 {
   // add indices
   int cidx=inactive[k];
-  active.push (cidx);
-
-  inactive.swap (k,inactive.size()-1);
-  inactive.pop();
 
   Vector a (opt->cons_[cidx]);
   // update of matrices
   Vector Ha = H*a;
   Real aHa = a*Ha;
   Vector addrow (Ha.dim());
-  if (abs (aHa) > EPS)
+  bool degenerate =  (abs (aHa) < EPS);
+
+  if (degenerate)
     {
+      warning (String ("Active_constraints::add ():")
+       + _("degenerate constraints"));
+      DOUT << "Ha = "  << Ha.str () << '\n';
       /*
        a != 0, so if Ha = O(EPS), then
        Ha * aH / aHa = O(EPS^2/EPS)
 
        if H*a == 0, the constraints are dependent.
-         */
-      H -= Matrix (Ha/aHa , Ha);
-
+      */
+      degenerate_count_i_ ++;
+    }
+  if (!degenerate)
+    {
+      active.push (cidx);
+      inactive.swap (k,inactive.size()-1);
+      inactive.pop();
 
-      /*
-         sorry, don't know how to justify this. ..
-         */
+      H -= Matrix (Ha/aHa , Ha);
+      
       addrow=Ha;
-      addrow/= aHa;
+      addrow /= aHa;
       A -= Matrix (A*a, addrow);
       A.insert_row (addrow,A.rows());
-    }else
-      WARN << _("degenerate constraints");
+    }
 }
 
 void
-Active_constraints::drop (int k)
+Active_constraints::drop_constraint (int k)
 {
   int q=active.size()-1;
 
-  // drop indices
-  inactive.push (active[k]);
-  active.swap (k,q);
-  A.swap_rows (k,q);
-  active.pop();
 
   Vector a (A.row (q));
   if (a.norm() > EPS)
     {
+      // drop indices
+      inactive.push (active[k]);
+      active.swap (k,q);
+      A.swap_rows (k,q);
+      active.pop();
       /*
 
        */
-      Real q = a*opt->quad_*a;
-      Matrix aaq (a,a/q);
+      Real aqa = a*opt->quad_*a;
+      Matrix aaq (a,a/aqa);
       H += aaq;
       A -= A*opt->quad_*aaq;
-    }else
-      WARN << _("degenerate constraints");
-#ifndef NDEBUG
-  Vector rem_row (A.row (q));
-  assert (rem_row.norm() < EPS);
-#endif
-
-  A.delete_row (q);
+      A.delete_row (q);
+    }else {
+      degenerate_count_i_ ++;
+      warning (String ("Active_constraints::drop ():")
+       + _("degenerate constraints"));
+    }
 }
 
 
 Active_constraints::Active_constraints (Ineq_constrained_qp const *op)
-  :       A(0,op->dim()),
-         H(op->dim()),
-         opt (op)
+  : A(0,op->dim()),
+    H(op->dim()),
+    opt (op)
 {
   for (int i=0; i < op->cons_.size(); i++)
     inactive.push (i);
@@ -152,6 +155,8 @@ Active_constraints::Active_constraints (Ineq_constrained_qp const *op)
     */
   H=chol.inverse();
   OK();
+
+  degenerate_count_i_ = 0;
 }
 
 /** Find the optimum which is in the planes generated by the active
index 0b80d49c12c97f92011b7dbe5cbeae8d69d49559..db24b85fc0d12ca57025970b346d675d8c40db20 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index 19be49a8d374b7b98d04cd83b1a883b2035d7fbd..81b7fd26865d6cb25759dbd5e5604c8f69d40159 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translator-group.hh"
@@ -53,6 +53,7 @@ Request_chord_iterator::do_print() const
   DOUT << "duration: " << elt_duration_;
 #endif
 }
+
 void
 Request_chord_iterator::process_and_next (Moment mom)
 {
@@ -64,8 +65,7 @@ Request_chord_iterator::process_and_next (Moment mom)
          Request * req_l = (Request*)i.ptr();
          bool gotcha = report_to_l()->try_request (req_l);
          if (!gotcha)
-           req_l->warning (_("Junking request: ") + String (req_l->name()));
-
+           req_l->warning (_f ("junking request: `%s\'", req_l->name()));
        }
       first_b_ = false;
     }
index 920cc79ca53eb7199f5f6ea7ca77ecc72b2dc07b..bf20a29075e8877ace511833dde9fc88dfdb092f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "request.hh"
@@ -28,9 +28,9 @@ bool
 Request::equal_b (Request *r) const
 {
   if (is_type_b (r->name()))
-       return r->do_equal_b ((Request*)this);
+    return r->do_equal_b ((Request*)this);
   if (r->is_type_b (name()))
-       return do_equal_b (r);
+    return do_equal_b (r);
         
   return false;
 }
diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc
new file mode 100644 (file)
index 0000000..d139313
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+  rest-collision-reg.cc -- implement Rest_collision_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "debug.hh"
+#include "rest-collision.hh"
+#include "rest-collision-engraver.hh"
+#include "collision.hh"
+#include "note-column.hh"
+
+
+IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Engraver);
+ADD_THIS_TRANSLATOR(Rest_collision_engraver);
+
+Rest_collision_engraver::Rest_collision_engraver()
+{
+  rest_collision_p_ =0;
+}
+
+void
+Rest_collision_engraver::process_acknowledged ()
+{
+  if (rest_collision_p_ ||   note_column_l_arr_.size () < 2)
+    return;
+
+  rest_collision_p_ = new Rest_collision;
+  announce_element (Score_element_info (rest_collision_p_, 0));
+  for (int i=0; i< note_column_l_arr_.size (); i++)
+    rest_collision_p_->add_column (note_column_l_arr_[i]);
+}
+
+void
+Rest_collision_engraver::acknowledge_element (Score_element_info i)
+{
+  if (i.elem_l_->is_type_b (Note_column::static_name()))
+    note_column_l_arr_.push ((Note_column*)i.elem_l_->access_Item ());
+}
+
+void
+Rest_collision_engraver::do_pre_move_processing()
+{
+  if (rest_collision_p_) 
+    {
+      typeset_element (rest_collision_p_);
+      rest_collision_p_ = 0;
+    }
+  note_column_l_arr_.clear ();
+}
diff --git a/lily/rest-collision-grav.cc b/lily/rest-collision-grav.cc
deleted file mode 100644 (file)
index 3729f28..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  rest-collision-reg.cc -- implement Rest_collision_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "debug.hh"
-#include "rest-collision.hh"
-#include "rest-collision-grav.hh"
-#include "collision.hh"
-#include "note-column.hh"
-
-
-IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Engraver);
-ADD_THIS_TRANSLATOR(Rest_collision_engraver);
-
-Rest_collision_engraver::Rest_collision_engraver()
-{
-  rest_collision_p_ =0;
-}
-
-void
-Rest_collision_engraver::acknowledge_element (Score_elem_info i)
-{
-  if (i.elem_l_->is_type_b (Note_column::static_name())) 
-    {
-      // what should i do, what should _engraver do?
-      if (!rest_collision_p_) 
-       {
-         rest_collision_p_ = new Rest_collision;
-         announce_element (Score_elem_info (rest_collision_p_, 0));
-       }
-      rest_collision_p_->add ((Note_column*)i.elem_l_->item());
-    }
-}
-
-void
-Rest_collision_engraver::do_pre_move_processing()
-{
-  if (rest_collision_p_) 
-    {
-      typeset_element (rest_collision_p_);
-      rest_collision_p_ = 0;
-    }
-}
index 38f0a65db84500290e71fdae339441b134a54b48..c8f0d3e78982592ececb394f64abbbbe6e7d4d33 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "debug.hh"
@@ -18,7 +18,7 @@
 IMPLEMENT_IS_TYPE_B1(Rest_collision,Item);
 
 void
-Rest_collision::add (Note_column *nc_l)
+Rest_collision::add_column (Note_column *nc_l)
 {
   add_dependency (nc_l);
   if (nc_l->rest_b ())
@@ -129,14 +129,14 @@ Rest_collision::do_print() const
 }
 
 void
-Rest_collision::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Rest_collision::do_substitute_dependency (Score_element*o,Score_element*n)
 {
-  Item*o_l = o->item();
+  Item*o_l = o->access_Item ();
   
 
   if (o_l&&o_l->is_type_b (Note_column::static_name ()))
     {
-      Note_column *n_l = n?(Note_column*)n->item():0;
+      Note_column *n_l = n?(Note_column*)n->access_Item ():0;
       rest_l_arr_.substitute ((Note_column*)o_l, n_l);
       ncol_l_arr_.substitute ((Note_column*)o_l, n_l);
     }
diff --git a/lily/rest-engraver.cc b/lily/rest-engraver.cc
new file mode 100644 (file)
index 0000000..96c40d7
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+  rest-grav.cc -- implement Rest_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "rest-engraver.hh"
+#include "musical-request.hh"
+#include "dots.hh"
+#include "rest.hh"
+/*
+  Should merge with Note_head_engraver
+ */
+Rest_engraver::Rest_engraver ()
+{
+  rest_req_l_ =0;
+  rest_p_ =0;
+  dot_p_ =0;
+}
+
+void
+Rest_engraver::do_post_move_processing ()
+{
+  rest_req_l_ =0;
+}
+
+void
+Rest_engraver::do_pre_move_processing ()
+{
+  if (rest_p_)
+    {
+      typeset_element (rest_p_);
+      rest_p_ =0;
+    }
+  if (dot_p_)
+    {
+      typeset_element (dot_p_);
+      dot_p_ =0;
+    }    
+}
+
+void
+Rest_engraver::do_process_requests ()
+{
+  if (rest_req_l_ && !rest_p_) 
+    {
+      rest_p_ = new Rest;
+      rest_p_->balltype_i_ = rest_req_l_->duration_.durlog_i_; 
+      rest_p_->dots_i_ = rest_req_l_->duration_.dots_i_;
+      if (rest_p_->dots_i_)
+       {
+         dot_p_ = new Dots;
+         rest_p_->dots_l_  =dot_p_;
+         announce_element (Score_element_info (dot_p_,0));
+       }
+      announce_element (Score_element_info (rest_p_, rest_req_l_));
+    }
+}
+
+bool
+Rest_engraver::do_try_request (Request *r)
+{
+  Musical_req *m = r->access_Musical_req ();
+  if (!m || !m->access_Rest_req ())
+    return false;
+
+  rest_req_l_ = m->access_Rest_req (); // ugh
+  return true;
+}
+
+IMPLEMENT_IS_TYPE_B1(Rest_engraver, Engraver);
+ADD_THIS_TRANSLATOR(Rest_engraver);
diff --git a/lily/rest-grav.cc b/lily/rest-grav.cc
deleted file mode 100644 (file)
index 5791c6b..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-  rest-grav.cc -- implement Rest_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "rest-grav.hh"
-#include "musical-request.hh"
-#include "dots.hh"
-#include "rest.hh"
-/*
-  Should merge with Note_head_engraver
- */
-Rest_engraver::Rest_engraver ()
-{
-  rest_req_l_ =0;
-  rest_p_ =0;
-  dot_p_ =0;
-}
-
-void
-Rest_engraver::do_post_move_processing ()
-{
-  rest_req_l_ =0;
-}
-
-void
-Rest_engraver::do_pre_move_processing ()
-{
-  if (rest_p_)
-    {
-      typeset_element (rest_p_);
-      rest_p_ =0;
-    }
-  if (dot_p_)
-    {
-      typeset_element (dot_p_);
-      dot_p_ =0;
-    }    
-}
-
-void
-Rest_engraver::do_process_requests ()
-{
-  if (rest_req_l_ && !rest_p_) 
-    {
-      rest_p_ = new Rest;
-      rest_p_->balltype_i_ = rest_req_l_->duration_.durlog_i_; 
-      rest_p_->dots_i_ = rest_req_l_->duration_.dots_i_;
-      if (rest_p_->dots_i_)
-       {
-         dot_p_ = new Dots;
-         rest_p_->dots_l_  =dot_p_;
-         announce_element (Score_elem_info (dot_p_,0));
-       }
-      announce_element (Score_elem_info (rest_p_, rest_req_l_));
-    }
-}
-
-bool
-Rest_engraver::do_try_request (Request *r)
-{
-  Musical_req *m = r->musical ();
-  if (!m || !m->rest ())
-    return false;
-
-  rest_req_l_ = m->rest ();    // ugh
-  return true;
-}
-
-IMPLEMENT_IS_TYPE_B1(Rest_engraver, Engraver);
-ADD_THIS_TRANSLATOR(Rest_engraver);
index e46f3f8673f80cd13896edeaab7d7840df63920d..dc13cb911f14c724dc40f6a15b5fd01f7994740d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "molecule.hh"
@@ -17,7 +17,7 @@
 void
 Rest::do_add_processing ()
 {
-  if (balltype_i_ != 0 && balltype_i_ != 1)
+  if (balltype_i_ > 1)
     position_i_ -= 4;
   else if (balltype_i_ == 0)
     position_i_ += 2;
@@ -41,7 +41,7 @@ Rest::brew_molecule_p () const
   bool streepjes_b = abs(position_i_) > staff_size_i_ /2 &&  
     (balltype_i_ == 0 || balltype_i_ == 1);
   
-  Atom s(paper ()->lookup_l()->rest (balltype_i_, streepjes_b));
+  Atom s(lookup_l ()->rest (balltype_i_, streepjes_b));
   Molecule * m = new Molecule ( Atom (s));
   m->translate_axis (position_i_ *  paper ()->internote_f (), Y_AXIS);
   return m;
diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc
new file mode 100644 (file)
index 0000000..6d7fc69
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+  rhythmic-column-grav.cc -- implement Rhythmic_column_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "rhythmic-column-engraver.hh"
+#include "note-head.hh"
+#include "stem.hh"
+#include "note-column.hh"
+#include "script.hh"
+#include "dot-column.hh"
+
+Rhythmic_column_engraver::Rhythmic_column_engraver()
+{
+  stem_l_ =0;
+  ncol_p_=0;
+  dotcol_l_ =0;
+}
+
+
+void
+Rhythmic_column_engraver::process_acknowledged ()
+{
+  if (rhead_l_arr_.size ())
+    {
+      if (!ncol_p_)
+       {
+         ncol_p_ = new Note_column;
+         announce_element (Score_element_info (ncol_p_, 0));
+       }
+
+      for (int i=0; i < rhead_l_arr_.size (); i++)
+       {
+         ncol_p_->add_head (rhead_l_arr_[i]);
+       }
+      rhead_l_arr_.set_size (0);
+    }
+
+  
+  if (ncol_p_)
+    {
+      if (dotcol_l_)
+       {
+         ncol_p_->set_dotcol (dotcol_l_);
+       }
+
+      if (stem_l_)
+       {
+         ncol_p_->set_stem (stem_l_);
+         stem_l_ = 0;
+       }
+      
+      for (int i=0; i < script_l_arr_.size(); i++) 
+       {
+         if (ncol_p_)
+           ncol_p_->add_script (script_l_arr_[i]);
+       }
+  
+      script_l_arr_.clear();
+    }
+}
+
+void
+Rhythmic_column_engraver::acknowledge_element (Score_element_info i)
+{
+  Item * item =  i.elem_l_->access_Item ();
+  if (!item)
+    return;
+  if (item->is_type_b (Script::static_name ())
+      && i.req_l_
+      && i.req_l_->access_Musical_req ()) 
+    {
+      script_l_arr_.push ((Script*)item);
+    }
+  else if (item->is_type_b (Stem::static_name()))
+    {
+      stem_l_ = (Stem*) item;
+    }
+  else if (item->is_type_b (Rhythmic_head::static_name ()))
+    {
+      rhead_l_arr_.push ((Rhythmic_head*)item);
+    }
+  else if (item->is_type_b (Dot_column::static_name ()))
+    {
+      dotcol_l_ = (Dot_column*) item;
+    }
+}
+
+void
+Rhythmic_column_engraver::do_pre_move_processing()
+{
+  if (ncol_p_) 
+    {
+      if (! ncol_p_->h_shift_b_)
+       // egcs
+       ncol_p_->h_shift_b_  = get_property ("hshift").operator bool ();
+      if (! ncol_p_->dir_)
+       ncol_p_->dir_ =(Direction) int(get_property ("ydirection"));
+
+      typeset_element (ncol_p_);
+      ncol_p_ =0;
+    }
+}
+
+void
+Rhythmic_column_engraver::do_post_move_processing()
+{
+  script_l_arr_.clear();
+  dotcol_l_ =0;
+  stem_l_ =0;
+}
+
+
+
+
+IMPLEMENT_IS_TYPE_B1(Rhythmic_column_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Rhythmic_column_engraver);
diff --git a/lily/rhythmic-column-grav.cc b/lily/rhythmic-column-grav.cc
deleted file mode 100644 (file)
index e6d5b66..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-  rhythmic-column-grav.cc -- implement Rhythmic_column_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "rhythmic-column-grav.hh"
-#include "note-head.hh"
-#include "stem.hh"
-#include "note-column.hh"
-#include "script.hh"
-#include "dot-column.hh"
-
-Rhythmic_column_engraver::Rhythmic_column_engraver()
-{
-  stem_l_ =0;
-  ncol_p_=0;
-  dotcol_p_ =0;
-}
-
-
-void
-Rhythmic_column_engraver::acknowledge_element (Score_elem_info i)
-{
-  if (i.elem_l_->is_type_b (Script::static_name ())
-      && i.req_l_ && i.req_l_->musical ()) 
-    {
-      script_l_arr_.push ((Script*)i.elem_l_->item());
-    }
-  else if (i.elem_l_->is_type_b (Stem::static_name()))
-    {
-      stem_l_ = (Stem*) i.elem_l_->item();
-    }
-  else if (i.elem_l_->is_type_b (Rhythmic_head::static_name ()))
-    {
-      Rhythmic_head * r = (Rhythmic_head*)i.elem_l_->item ();
-      if (!ncol_p_)
-       {
-         ncol_p_ = new Note_column;
-         announce_element (Score_elem_info (ncol_p_, 0));
-       }
-      ncol_p_->add (r);
-
-      if (r->dots_l_)
-       {
-         if (!dotcol_p_)
-           {
-             dotcol_p_ = new Dot_column;
-             ncol_p_->set (dotcol_p_);
-             announce_element (Score_elem_info (dotcol_p_, 0));
-           }
-         dotcol_p_->add (r);
-       }
-    }
-  
-  if (ncol_p_)
-    {
-      if (stem_l_&& !ncol_p_->stem_l_) 
-       ncol_p_->set (stem_l_);
-  
-      for (int i=0; i < script_l_arr_.size(); i++) 
-       {
-         if (ncol_p_)
-           ncol_p_->add (script_l_arr_[i]);
-       }
-  
-      script_l_arr_.clear();
-    }
-}
-
-void
-Rhythmic_column_engraver::do_pre_move_processing()
-{
-  if (ncol_p_) 
-    {
-      if (! ncol_p_->h_shift_b_)
-       // egcs
-       ncol_p_->h_shift_b_  = get_property ("hshift").operator bool ();
-      if (! ncol_p_->dir_)
-       ncol_p_->dir_ =(Direction) int(get_property ("ydirection"));
-
-      typeset_element (ncol_p_);
-      ncol_p_ =0;
-    }
-  if (dotcol_p_)
-    {
-      typeset_element (dotcol_p_);
-      dotcol_p_ =0;
-    }
-}
-
-void
-Rhythmic_column_engraver::do_post_move_processing()
-{
-  script_l_arr_.clear();
-  stem_l_ =0;
-}
-
-
-
-
-IMPLEMENT_IS_TYPE_B1(Rhythmic_column_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Rhythmic_column_engraver);
index 99e2f526804ffef93c3a98c70959f4fa8a440b6f..ab9e7396dc53b2f37cdc66c6c6ff6972f3b393a4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "rhythmic-head.hh"
@@ -22,7 +22,7 @@ Rhythmic_head::do_add_processing ()
   if (dots_i_ && !dots_l_)
     {
       Dots *d = new Dots;
-      add (d);
+      add_dots (d);
       pscore_l_->typeset_element (d);
       axis_group_l_a_[Y_AXIS]->add_element (d);
       axis_group_l_a_[X_AXIS]->add_element (d);
@@ -34,7 +34,7 @@ Rhythmic_head::do_add_processing ()
 }
 
 void
-Rhythmic_head::add (Dots *dot_l)
+Rhythmic_head::add_dots (Dots *dot_l)
 {
   dots_l_ = dot_l;  
   dot_l->add_dependency (this);  
@@ -49,10 +49,10 @@ Rhythmic_head::Rhythmic_head ()
 }
 
 void
-Rhythmic_head::do_substitute_dependent (Score_elem*o,Score_elem*n)
+Rhythmic_head::do_substitute_dependent (Score_element*o,Score_element*n)
 {
   if (o == dots_l_)
-    dots_l_ = n ? (Dots*)n->item () :0;
+    dots_l_ = n ? (Dots*)n->access_Item () :0;
 }
 
 IMPLEMENT_IS_TYPE_B1(Rhythmic_head, Item);
index 6bbcbd6dcc468b4115a93cc92d4f60cb0514b30c..1b2ae4f824e0e24e475e35fa8f2dff6e663c8bb1 100644 (file)
@@ -3,14 +3,14 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 #include "rod.hh"
 #include "p-col.hh"
 #include "debug.hh"
 #include "single-malt-grouping-item.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 
 
 Rod::Rod (Single_malt_grouping_item *l, Single_malt_grouping_item *r)
index 52a185ee911b90f05a18f72dedd102b94e3b7c90..2e20a1b38d3530f401974f38392354da5d3e91e5 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -20,7 +20,7 @@ Scope::print () const
     {
       if (ai.val()->init_b_ == init_b)
        {
-         DOUT << ai.key() << '=';
+         DOUT << ai.key() << "=";
          ai.val()->print ();
        }
     }
@@ -30,8 +30,8 @@ Scope::~Scope ()
 {
   for (Assoc_iter<String,Identifier*>   ai (*this); ai.ok(); ai++)
     {
-      DOUT << "deleting: " << ai.key()<<'\n';
-      delete ai.val();
+      DOUT << "deleting: " << ai.key() << '\n';
+      delete ai.val ();
     }
 }
 
index 1882347664db6b8fd17766117206f33fe605317d..d276f131029f68c35d721740b4edc42ce5df0130 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
index abe35406c0fbd2c5a174a8bb024f3f6fd145e44d..6481709e27ed14d4f34c568c81c12de2f9800858 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "debug.hh"
@@ -22,7 +22,7 @@ void
 Score_column::do_print() const
 {
 #ifndef NPRINT
-  DOUT << "mus "<< musical_b_ <<" at " <<  when_<< '\n';
+  DOUT << "mus "<< musical_b_ << " at " <<  when_ << '\n';
   if (break_penalty_i_ >= Break_req::FORCE)
     DOUT << "Break forced";
       
@@ -52,8 +52,8 @@ Score_column::add_duration (Moment d)
 {
   if (!d)
     {
-      warning (_("Ignoring zero duration added to column at ")
-              + when_.str ());
+      warning (_f ("ignoring zero duration added to column at %s",
+              when_.str ()));
       return;
     }
   
diff --git a/lily/score-elem-info.cc b/lily/score-elem-info.cc
deleted file mode 100644 (file)
index e86ca93..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-  score-elem-info.cc -- implement Score_elem_info
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "score-elem-info.hh"
-#include "request.hh"
-
-Score_elem_info::Score_elem_info (Score_elem*s_l, Request*r_l)
-{
-  elem_l_ = s_l;
-  req_l_ = r_l;
-}
-
-Score_elem_info::Score_elem_info()
-{
-  elem_l_ = 0;
-  req_l_ = 0;
-}
-
-
-
diff --git a/lily/score-elem.cc b/lily/score-elem.cc
deleted file mode 100644 (file)
index 929838a..0000000
+++ /dev/null
@@ -1,392 +0,0 @@
-/*
-  score-elem.cc -- implement Score_elem
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-#include "outputter.hh"
-#include "p-score.hh"
-#include "paper-def.hh"
-#include "lookup.hh"
-#include "molecule.hh"
-#include "score-elem.hh"
-#include "debug.hh"
-#include "tex.hh"
-#include "dimen.hh"
-#include "spanner.hh"
-#include "scoreline.hh"
-#include "item.hh"
-#include "p-col.hh"
-#include "molecule.hh"
-
-Score_elem::Score_elem()
-{
-  transparent_b_ = false;
-  pscore_l_=0;
-  status_i_ = 0;
-}
-
-Score_elem::Score_elem (Score_elem const&s)
-  :  Directed_graph_node (s), Graphical_element (s)
-{
-  /* called from derived ctor, so most info points to the same deps
-     as (Directed_graph_node&)s. Nobody points to us, so don't copy
-     dependents.      
-   */
-  copy_edges_out (s);
-  transparent_b_ = s.transparent_b_;
-  status_i_ = s.status_i_;
-  pscore_l_ = s.pscore_l_;
-}
-
-Score_elem::~Score_elem()
-{
-  assert (status_i_ >=0);
-  status_i_ = -1;
-}
-
-Score_elem*
-Score_elem::dependency (int i) const
-{
-  return (Score_elem*) get_out_edge_arr ()[i];
-}
-
-int
-Score_elem::dependency_size () const
-{
-  return get_out_edge_arr ().size ();
-}
-
-Score_elem*
-Score_elem::dependent (int i) const
-{
-  return (Score_elem*) get_in_edge_arr()[i];
-}
-
-int
-Score_elem::dependent_size() const
-{
-  return get_in_edge_arr().size ();
-}
-
-
-
-Interval
-Score_elem::do_width() const 
-{
-  Interval r;
-
-  Molecule*m = brew_molecule_p();
-  r = m->extent().x ();
-  delete m;
-  
-  return r;
-}
-
-Interval
-Score_elem::do_height() const 
-{
-  Interval r;
-  Molecule*m = brew_molecule_p();
-  r = m->extent().y ();
-  delete m;
-  return r;
-}
-
-
-/*
-  STANDARD METHS
- */
-void
-Score_elem::print() const
-{
-#ifndef NPRINT
-  DOUT << name() << "{\n";
-  DOUT << "dets: " << dependent_size() << "dependencies: " << 
-    dependency_size();
-  Graphical_element::print ();
-  do_print();
-  
-  DOUT <<  "}\n";
-#endif
-}
-
-
-Paper_def*
-Score_elem::paper()  const
-{
-  assert (pscore_l_);
-  return pscore_l_->paper_l_;
-}
-
-
-void
-Score_elem::add_processing()
-{
-  if (status_i_)
-    return;
-  status_i_ ++;
-  do_add_processing();
-}
-
-
-void
-Score_elem::calcalute_dependencies (int final, int busy,
-                                   Score_elem_method_pointer funcptr)
-{
-  if (status_i_ >= final)
-    return;
-
-  assert (status_i_!= busy);
-  status_i_= busy;
-
-  for (int i=0; i < dependency_size(); i++)
-    dependency (i)->calcalute_dependencies (final, busy, funcptr);
-
-  Link_array<Score_elem> extra (get_extra_dependencies());
-  for (int i=0; i < extra.size(); i++)
-    extra[i]->calcalute_dependencies (final, busy, funcptr);
-  
-  invalidate_cache (X_AXIS);
-  invalidate_cache (Y_AXIS);
-  (this->*funcptr)();
-  status_i_= final;
-}
-
-void
-Score_elem::do_brew_molecule () 
-{
-  if (transparent_b_)
-    return;
-  Molecule *output= brew_molecule_p ();
-  pscore_l_->outputter_l_->output_molecule (output, absolute_offset ());
-}
-
-/*
-  
-  VIRTUAL STUBS
-
- */
-
-void
-Score_elem::do_break_processing()
-{
-  handle_broken_dependencies();
-}
-
-void
-Score_elem::do_post_processing()
-{
-}
-
-void
-Score_elem::do_breakable_col_processing()
-{
-  handle_prebroken_dependencies();
-}
-
-void
-Score_elem::do_pre_processing()
-{
-}
-
-void
-Score_elem::do_space_processing ()
-{
-}
-
-void
-Score_elem::do_add_processing()
-{
-}
-
-void
-Score_elem::do_substitute_dependency (Score_elem*,Score_elem*)
-{
-}
-void
-Score_elem::do_substitute_dependent (Score_elem*,Score_elem*)
-{
-}
-
-void
-Score_elem::do_unlink()
-{
-}
-
-void
-Score_elem::do_junk_links()
-{
-}
-
-IMPLEMENT_IS_TYPE_B1(Score_elem, Graphical_element);
-
-Molecule*
-Score_elem::brew_molecule_p() const
-{
-  Atom a (paper()->lookup_l ()->fill (Box (Interval (0,0), Interval (0,0))));
-  return new Molecule (a);
-}
-
-
-Line_of_score *
-Score_elem::line_l() const
-{
-  return 0;
-}
-
-/*
-  
-  DEPENDENCIES
-
-  */
-
-void
-Score_elem::remove_dependency (Score_elem*e)
-{
-  remove_edge_out (e);
-  substitute_dependency (e, 0);
-}
-
-void
-Score_elem::add_dependency (Score_elem*e)
-{
-  Directed_graph_node::add (e);
-}
-void
-Score_elem::substitute_dependency (Score_elem* old, Score_elem* new_l)
-{
-  do_substitute_dependency (old,new_l);
-  old->do_substitute_dependent (this, 0);
-}
-
-void
-Score_elem::handle_broken_dependencies()
-{
-  Line_of_score *line  = line_l();
-  if (!line)
-    return;
-
-  Link_array<Score_elem> remove_us_arr;
-  for (int i=0; i < dependency_size(); i++) 
-    {
-      Score_elem * elt = dependency (i);
-      if (elt->line_l() != line)
-       {
-         if (elt->spanner()) 
-           {
-             Spanner * sp = elt->spanner();
-             Spanner * broken = sp->find_broken_piece (line);
-             substitute_dependency (sp, broken);
-
-             add_dependency (broken);
-           }
-         else if (elt->item())
-           {
-             Item * my_item = elt->item()->find_prebroken_piece (line);
-               
-             substitute_dependency (elt, my_item);
-             if (my_item)
-               add_dependency (my_item);
-           }
-         remove_us_arr.push (elt);
-       }
-    }
-
-  remove_us_arr.default_sort();
-  remove_us_arr.uniq();
-  for (int i=0;  i <remove_us_arr.size(); i++)
-    remove_dependency (remove_us_arr[i]);
-}
-
-/*
-  This sux.
-
-  unlike with spanners, the number of items can increase
-
-  span: item1
-
-  becomes
-
-  span: item1 item2 item3
-
-  How to let span (a derived class) know that this happened?
- */
-void
-Score_elem::handle_prebroken_dependencies()
-{
-  Link_array<Score_elem> old_arr, new_arr;
-  
-  for (int i=0; i < dependency_size(); i++) 
-    {
-      Score_elem * elt = dependency (i);
-      Item *it_l = elt->item();
-      if (it_l && it_l->breakable_b_)
-       if (item()) 
-         {
-           Score_elem *new_l = it_l->find_prebroken_piece (item()->break_status_i_);
-           if (new_l != elt) 
-             {
-               new_arr.push (new_l);
-               old_arr.push (elt);
-             }
-         }
-       else 
-         {
-           new_arr.push (it_l->broken_to_drul_[LEFT]);
-           old_arr.push (0);
-           old_arr.push (0);           
-           new_arr.push (it_l->broken_to_drul_[RIGHT]);                
-         }
-    }
-  
-  for (int i=0;  i < old_arr.size(); i++)
-    if (old_arr[i])
-      substitute_dependency (old_arr[i], new_arr[i]);
-}
-
-
-void
-Score_elem::junk_links ()
-{
-  Directed_graph_node::junk_links();
-  Graphical_element::junk_links ();
-  do_junk_links();
-}
-
-void
-Score_elem::unlink()
-{
-  do_unlink();
-  while (dependency_size()) 
-    {
-      do_substitute_dependency (dependency (0),0);
-      remove_edge_out_idx (0);
-    }
-  while  (dependent_size()) 
-    {
-      dependent (0)->remove_dependency (this);
-    }
-  for (int j=0; j < 2; j++)
-    if (axis_group_l_a_[j])
-      axis_group_l_a_[j]->remove_element (this);
-}
-
-
-Link_array<Score_elem>
-Score_elem::get_extra_dependencies() const
-{
-  Link_array<Score_elem> empty;
-  return empty;
-}
-
-bool
-Score_elem::linked_b() const
-{
-  return get_extra_dependencies().size() || 
-    dependency_size();
-}
-
-
diff --git a/lily/score-element-info.cc b/lily/score-element-info.cc
new file mode 100644 (file)
index 0000000..a0c6f68
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+  score-element-info.cc -- implement Score_element_info
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "score-element-info.hh"
+#include "request.hh"
+
+Score_element_info::Score_element_info (Score_element*s_l, Request*r_l)
+{
+  elem_l_ = s_l;
+  req_l_ = r_l;
+}
+
+Score_element_info::Score_element_info()
+{
+  elem_l_ = 0;
+  req_l_ = 0;
+}
+
+
+
diff --git a/lily/score-element.cc b/lily/score-element.cc
new file mode 100644 (file)
index 0000000..94b6da1
--- /dev/null
@@ -0,0 +1,406 @@
+/*
+  score-elem.cc -- implement Score_element
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#include <string.h>
+
+#include "tex-outputter.hh"
+#include "p-score.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
+#include "molecule.hh"
+#include "score-element.hh"
+#include "debug.hh"
+#include "tex.hh"
+#include "dimension.hh"
+#include "spanner.hh"
+#include "line-of-score.hh"
+#include "item.hh"
+#include "p-col.hh"
+#include "molecule.hh"
+#include "misc.hh"
+
+#define PARANOID
+
+Score_element::Score_element()
+{
+  transparent_b_ = false;
+  size_i_ = 0;
+  pscore_l_=0;
+  status_i_ = 0;
+}
+
+Score_element::Score_element (Score_element const&s)
+  :  Directed_graph_node (s), Graphical_element (s)
+{
+  /* called from derived ctor, so most info points to the same deps
+     as (Directed_graph_node&)s. Nobody points to us, so don't copy
+     dependents.      
+   */
+  copy_edges_out (s);
+  transparent_b_ = s.transparent_b_;
+  status_i_ = s.status_i_;
+  pscore_l_ = s.pscore_l_;
+  size_i_ = s.size_i_;
+}
+
+
+  
+
+Score_element::~Score_element()
+{
+  assert (status_i_ >=0);
+}
+
+Score_element*
+Score_element::dependency (int i) const
+{
+  return (Score_element*) get_out_edge_arr ()[i];
+}
+
+int
+Score_element::dependency_size () const
+{
+  return get_out_edge_arr ().size ();
+}
+
+Score_element*
+Score_element::dependent (int i) const
+{
+  return (Score_element*) get_in_edge_arr()[i];
+}
+
+int
+Score_element::dependent_size() const
+{
+  return get_in_edge_arr().size ();
+}
+
+
+
+Interval
+Score_element::do_width() const 
+{
+  Interval r;
+
+  Molecule*m = brew_molecule_p();
+  r = m->extent().x ();
+  delete m;
+  
+  return r;
+}
+
+Interval
+Score_element::do_height() const 
+{
+  Interval r;
+  Molecule*m = brew_molecule_p();
+  r = m->extent().y ();
+  delete m;
+  return r;
+}
+
+
+/*
+  STANDARD METHS
+ */
+void
+Score_element::print() const
+{
+#ifndef NPRINT
+  DOUT << name() << "{\n";
+  DOUT << "dets: " << dependent_size() << "dependencies: " << 
+    dependency_size();
+  Graphical_element::do_print ();
+  do_print();
+  
+  DOUT <<  "}\n";
+#endif
+}
+
+
+Paper_def*
+Score_element::paper()  const
+{
+  assert (pscore_l_);
+  return pscore_l_->paper_l_;
+}
+
+
+Lookup *
+Score_element::lookup_l () const
+{
+  return pscore_l_->paper_l_->lookup_l (size_i_);
+}
+
+void
+Score_element::add_processing()
+{
+  if (status_i_)
+    return;
+  status_i_ ++;
+  do_add_processing();
+}
+
+
+void
+Score_element::calcalute_dependencies (int final, int busy,
+                                   Score_element_method_pointer funcptr)
+{
+  if (status_i_ >= final)
+    return;
+
+  assert (status_i_!= busy);
+  status_i_= busy;
+
+  for (int i=0; i < dependency_size(); i++)
+    dependency (i)->calcalute_dependencies (final, busy, funcptr);
+
+  Link_array<Score_element> extra (get_extra_dependencies());
+  for (int i=0; i < extra.size(); i++)
+    extra[i]->calcalute_dependencies (final, busy, funcptr);
+  
+  invalidate_cache (X_AXIS);
+  invalidate_cache (Y_AXIS);
+  (this->*funcptr)();
+  status_i_= final;
+}
+
+void
+Score_element::do_brew_molecule () 
+{
+  if (transparent_b_)
+    return;
+  Molecule *output= brew_molecule_p ();
+  pscore_l_->outputter_l_->output_molecule (output, absolute_offset (), name());
+  delete output;
+}
+
+/*
+  
+  VIRTUAL STUBS
+
+ */
+
+void
+Score_element::do_break_processing()
+{
+  handle_broken_dependencies();
+}
+
+void
+Score_element::do_post_processing()
+{
+}
+
+void
+Score_element::do_breakable_col_processing()
+{
+  handle_prebroken_dependencies();
+}
+
+void
+Score_element::do_pre_processing()
+{
+}
+
+void
+Score_element::do_space_processing ()
+{
+}
+
+void
+Score_element::do_add_processing()
+{
+}
+
+void
+Score_element::do_substitute_dependency (Score_element*,Score_element*)
+{
+}
+void
+Score_element::do_substitute_dependent (Score_element*,Score_element*)
+{
+}
+
+void
+Score_element::do_unlink()
+{
+}
+
+void
+Score_element::do_junk_links()
+{
+}
+
+IMPLEMENT_IS_TYPE_B1(Score_element, Graphical_element);
+
+Molecule*
+Score_element::brew_molecule_p() const
+{
+  Atom a (lookup_l ()->fill (Box (Interval (0,0), Interval (0,0))));
+  return new Molecule (a);
+}
+
+
+Line_of_score *
+Score_element::line_l() const
+{
+  return 0;
+}
+
+/*
+  
+  DEPENDENCIES
+
+  */
+
+void
+Score_element::remove_dependency (Score_element*e)
+{
+  remove_edge_out (e);
+  substitute_dependency (e, 0);
+}
+
+void
+Score_element::add_dependency (Score_element*e)
+{
+  Directed_graph_node::add_edge (e);
+}
+void
+Score_element::substitute_dependency (Score_element* old, Score_element* new_l)
+{
+  do_substitute_dependency (old,new_l);
+  old->do_substitute_dependent (this, 0);
+}
+
+void
+Score_element::handle_broken_dependencies()
+{
+  Line_of_score *line  = line_l();
+  if (!line)
+    return;
+
+  Link_array<Score_element> remove_us_arr;
+  for (int i=0; i < dependency_size(); i++) 
+    {
+      Score_element * elt = dependency (i);
+      if (elt->line_l() != line)
+       {
+         if (elt->access_Spanner ()) 
+           {
+             Spanner * sp = elt->access_Spanner ();
+             Spanner * broken = sp->find_broken_piece (line);
+             substitute_dependency (sp, broken);
+
+             add_dependency (broken);
+           }
+         else if (elt->access_Item ())
+           {
+             Item * my_item = elt->access_Item ()->find_prebroken_piece (line);
+               
+             substitute_dependency (elt, my_item);
+             if (my_item)
+               add_dependency (my_item);
+           }
+         remove_us_arr.push (elt);
+       }
+    }
+
+  remove_us_arr.default_sort();
+  remove_us_arr.uniq();
+  for (int i=0;  i <remove_us_arr.size(); i++)
+    remove_dependency (remove_us_arr[i]);
+}
+
+/*
+  This sux.
+
+  unlike with spanners, the number of items can increase
+
+  span: item1
+
+  becomes
+
+  span: item1 item2 item3
+
+  How to let span (a derived class) know that this happened?
+ */
+void
+Score_element::handle_prebroken_dependencies()
+{
+  Link_array<Score_element> old_arr, new_arr;
+  
+  for (int i=0; i < dependency_size(); i++) 
+    {
+      Score_element * elt = dependency (i);
+      Item *it_l = elt->access_Item ();
+      if (it_l && it_l->breakable_b_)
+       if (access_Item ()) 
+         {
+           Score_element *new_l = it_l->find_prebroken_piece (access_Item ()->break_status_dir_);
+           if (new_l != elt) 
+             {
+               new_arr.push (new_l);
+               old_arr.push (elt);
+             }
+         }
+       else 
+         {
+           new_arr.push (it_l->broken_to_drul_[LEFT]);
+           old_arr.push (0);
+           old_arr.push (0);           
+           new_arr.push (it_l->broken_to_drul_[RIGHT]);                
+         }
+    }
+  
+  for (int i=0;  i < old_arr.size(); i++)
+    if (old_arr[i])
+      substitute_dependency (old_arr[i], new_arr[i]);
+}
+
+
+void
+Score_element::junk_links ()
+{
+  Directed_graph_node::junk_links();
+  Graphical_element::junk_links ();
+  do_junk_links();
+}
+
+void
+Score_element::unlink()
+{
+  do_unlink();
+  while (dependency_size()) 
+    {
+      do_substitute_dependency (dependency (0),0);
+      remove_edge_out_idx (0);
+    }
+  while  (dependent_size()) 
+    {
+      dependent (0)->remove_dependency (this);
+    }
+  Graphical_element::unlink ();
+}
+
+
+Link_array<Score_element>
+Score_element::get_extra_dependencies() const
+{
+  Link_array<Score_element> empty;
+  return empty;
+}
+
+bool
+Score_element::linked_b() const
+{
+  return get_extra_dependencies().size() || 
+    dependency_size();
+}
diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc
new file mode 100644 (file)
index 0000000..1df1ecd
--- /dev/null
@@ -0,0 +1,274 @@
+/*
+  score-grav.cc -- implement Score_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "super-element.hh"
+#include "line-of-score.hh"
+#include "debug.hh"
+#include "item.hh"
+#include "score-engraver.hh"
+#include "p-score.hh"
+#include "musical-request.hh"
+#include "score-column.hh"
+#include "command-request.hh"
+#include "paper-def.hh"
+
+
+Score_engraver::Score_engraver()
+{
+  break_penalty_i_ = 0;
+  scoreline_l_ =0;
+  command_column_l_ =0;
+  musical_column_l_ =0;
+  breaks_i_ =0;
+  pscore_p_ = 0;
+}
+void
+Score_engraver::prepare (Moment w)
+{
+  Global_translator::prepare (w);
+  set_columns (new Score_column (w),  new Score_column (w));
+  
+  break_penalty_i_ = 0;
+  post_move_processing();
+}
+
+void
+Score_engraver::finish()
+{
+  if ((breaks_i_%8))
+    *mlog << "[" << breaks_i_ << "]" << flush;
+   
+  check_removal();
+  removal_processing();
+}
+
+void
+Score_engraver::do_creation_processing()
+{
+  scoreline_l_ = pscore_p_->super_elem_l_->line_of_score_l_;
+  scoreline_l_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
+  command_column_l_->breakable_b_ = true;
+  Engraver_group_engraver::do_creation_processing();
+}
+
+void
+Score_engraver::do_removal_processing()
+{
+  Engraver_group_engraver::do_removal_processing();
+  scoreline_l_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
+  command_column_l_->breakable_b_ = true;
+
+  typeset_all ();
+  set_columns (0,0);
+}
+
+void
+Score_engraver::process()
+{
+  process_requests();
+  do_announces();
+  pre_move_processing();
+  check_removal();
+}
+
+void
+Score_engraver::announce_element (Score_element_info info)
+{
+  announce_info_arr_.push (info);
+  info.origin_grav_l_arr_.push (this);
+}
+
+void
+Score_engraver::do_announces()
+{
+  /* All elements are propagated to the top upon announcement. If
+     something was created during one run of
+     Engraver_group_engraver::do_announces, then
+     announce_info_arr_.size() will be nonzero again
+
+     */
+  while (announce_info_arr_.size()) 
+    {
+      for (int i=0; i < announce_info_arr_.size(); i++)
+       /*
+         TODO
+
+         More subtle spacing
+         */
+       if (announce_info_arr_[i].req_l_) 
+         {
+           Musical_req *m = announce_info_arr_[i].req_l_->access_Musical_req ();
+           if (m && m->access_Rhythmic_req ()) 
+             {
+               musical_column_l_->add_duration (m->duration());
+             }
+         }
+      Engraver_group_engraver::do_announces();
+    }
+}
+
+
+void
+Score_engraver::typeset_element (Score_element *elem_p)
+{
+  elem_p_arr_.push(elem_p);
+}
+
+void
+Score_engraver::typeset_all()
+{
+  for  (int i =0; i < elem_p_arr_.size(); i++) 
+    {
+      Score_element * elem_p = elem_p_arr_[i];
+      if (elem_p->access_Spanner ()) 
+       {
+         Spanner *s = elem_p->access_Spanner ();
+         pscore_p_->typeset_unbroken_spanner (s);
+
+
+
+                 /*
+           do something sensible if spanner not 
+           spanned on 2 items.
+          */
+         Direction d = LEFT;
+         do {
+           if (!s->spanned_drul_[d])
+             {
+               s->set_bounds(d, command_column_l_);
+               ::warning (_f ("Unbound spanner `%s\'", s->name ()));
+             }
+         } while (flip(&d) != LEFT);
+       }
+      else 
+       {
+         Item *item_p = elem_p->access_Item ();
+         pscore_p_->typeset_element (item_p);
+         if (!item_p->axis_group_l_a_[X_AXIS]) {
+           if (item_p->breakable_b_) 
+             command_column_l_->add_element(item_p);
+           else
+             musical_column_l_->add_element(item_p);
+         }
+       }
+      scoreline_l_->add_element (elem_p);
+    }
+  elem_p_arr_.clear();
+}
+
+void
+Score_engraver::do_pre_move_processing()
+{
+  if (break_penalty_i_ > Break_req::DISALLOW)
+    {
+      get_staff_info().command_pcol_l ()-> breakable_b_ = true;
+      breaks_i_ ++;
+      if (! (breaks_i_%8))
+       *mlog << "[" << breaks_i_ << "]" << flush;
+    }
+  // this generates all items.
+  Engraver_group_engraver::do_pre_move_processing();
+  
+  typeset_all();
+}
+
+void
+Score_engraver::set_columns (Score_column *new_command_l, 
+                            Score_column *new_musical_l)
+{
+  if (command_column_l_ && command_column_l_->linked_b()) 
+    {
+      pscore_p_->add_column (command_column_l_);
+      scoreline_l_->add_element (command_column_l_);
+    }
+  else 
+    {
+      delete command_column_l_ ;
+      command_column_l_ =0;
+    }
+  if (new_command_l) 
+    {
+      command_column_l_ = new_command_l;
+      command_column_l_->musical_b_ = false;
+    }
+  if (musical_column_l_ && musical_column_l_->linked_b()) 
+    {
+      pscore_p_->add_column (musical_column_l_);
+      scoreline_l_->add_element (musical_column_l_);
+    }
+  else 
+    {
+      delete musical_column_l_;
+      musical_column_l_ = 0;
+    }
+  
+  if (new_musical_l) 
+    {
+      musical_column_l_ = new_musical_l;
+      musical_column_l_->musical_b_ = true;
+    }
+}
+
+
+Staff_info
+Score_engraver::get_staff_info() const
+{
+  Staff_info inf = Engraver_group_engraver::get_staff_info();
+
+  inf.command_l_ = command_column_l_;
+  inf.musical_l_ = musical_column_l_;
+  
+  return inf;
+}
+
+
+
+Music_output*
+Score_engraver::get_output_p ()
+{
+  Music_output * o = pscore_p_;
+  pscore_p_=0;
+  return o;
+}
+
+bool
+Score_engraver::do_try_request (Request*r)
+{
+  bool gotcha = Engraver_group_engraver::do_try_request (r);  
+
+  if (gotcha || !r->access_Command_req ())
+    return gotcha;
+
+  Command_req * c = r->access_Command_req ();
+  if (c->access_Break_req ())
+    {
+      Break_req* b = (Break_req*)c->access_Break_req ();
+      if (b->penalty_i_ <= Break_req::DISALLOW)
+       break_penalty_i_ = b->penalty_i_;
+      else if (b->penalty_i_ >= Break_req::FORCE)
+       {
+         command_column_l_->break_penalty_i_ = b->penalty_i_;
+         gotcha = true;
+       }
+    }
+  return gotcha;
+}
+
+IMPLEMENT_IS_TYPE_B1(Score_engraver,Engraver_group_engraver);
+ADD_THIS_TRANSLATOR(Score_engraver);
+
+void
+Score_engraver::do_add_processing ()
+{
+  Translator_group::do_add_processing ();
+  assert (output_def_l_->is_type_b (Paper_def::static_name ()));
+  assert (!daddy_trans_l_);
+  pscore_p_ = new Paper_score;
+  pscore_p_->paper_l_ = (Paper_def*)output_def_l_;
+}
diff --git a/lily/score-grav.cc b/lily/score-grav.cc
deleted file mode 100644 (file)
index bbcaec2..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
-  score-grav.cc -- implement Score_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "super-elem.hh"
-#include "scoreline.hh"
-#include "debug.hh"
-#include "item.hh"
-#include "score-grav.hh"
-#include "p-score.hh"
-#include "musical-request.hh"
-#include "score-column.hh"
-#include "command-request.hh"
-#include "paper-def.hh"
-
-
-Score_engraver::Score_engraver()
-{
-  break_penalty_i_ = 0;
-  scoreline_l_ =0;
-  command_column_l_ =0;
-  musical_column_l_ =0;
-  breaks_i_ =0;
-  pscore_p_ = 0;
-}
-void
-Score_engraver::prepare (Moment w)
-{
-  Global_translator::prepare (w);
-  set_columns (new Score_column (w),  new Score_column (w));
-  
-  break_penalty_i_ = 0;
-  post_move_processing();
-}
-
-void
-Score_engraver::finish()
-{
-  if ((breaks_i_%8))
-    *mlog << "[" << breaks_i_ << "]" << flush;
-   
-  check_removal();
-  removal_processing();
-}
-
-void
-Score_engraver::do_creation_processing()
-{
-  scoreline_l_ = pscore_p_->super_elem_l_->line_of_score_l_;
-  scoreline_l_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
-  command_column_l_->breakable_b_ = true;
-  Engraver_group_engraver::do_creation_processing();
-}
-
-void
-Score_engraver::do_removal_processing()
-{
-  Engraver_group_engraver::do_removal_processing();
-  scoreline_l_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
-  command_column_l_->breakable_b_ = true;
-
-  typeset_all ();
-  set_columns (0,0);
-}
-
-void
-Score_engraver::process()
-{
-  process_requests();
-  do_announces();
-  pre_move_processing();
-  check_removal();
-}
-
-void
-Score_engraver::announce_element (Score_elem_info info)
-{
-  announce_info_arr_.push (info);
-  info.origin_grav_l_arr_.push (this);
-}
-
-void
-Score_engraver::do_announces()
-{
-  /* All elements are propagated to the top upon announcement. If
-     something was created during one run of
-     Engraver_group_engraver::do_announces, then
-     announce_info_arr_.size() will be nonzero again
-
-     */
-  while (announce_info_arr_.size()) 
-    {
-      for (int i=0; i < announce_info_arr_.size(); i++)
-       /*
-         TODO
-
-         More subtle spacing
-         */
-       if (announce_info_arr_[i].req_l_) 
-         {
-           Musical_req *m = announce_info_arr_[i].req_l_->musical();
-           if (m && m->rhythmic()) 
-             {
-               musical_column_l_->add_duration (m->duration());
-             }
-         }
-      Engraver_group_engraver::do_announces();
-    }
-}
-
-
-void
-Score_engraver::typeset_element (Score_elem *elem_p)
-{
-  elem_p_arr_.push(elem_p);
-}
-
-void
-Score_engraver::typeset_all()
-{
-  for  (int i =0; i < elem_p_arr_.size(); i++) 
-    {
-      Score_elem * elem_p = elem_p_arr_[i];
-      if (elem_p->spanner()) 
-       {
-         Spanner *s = elem_p->spanner ();
-         pscore_p_->typeset_unbroken_spanner (s);
-
-
-
-                 /*
-           do something sensible if spanner not 
-           spanned on 2 items.
-          */
-         Direction d = LEFT;
-         do {
-           if (!s->spanned_drul_[d])
-             {
-               s->set_bounds(d, command_column_l_);
-               ::warning ("Unbound spanner (type " + String (s->name ()) + ")");
-             }
-         } while (flip(&d) != LEFT);
-       }
-      else 
-       {
-         Item *item_p = elem_p->item();
-         pscore_p_->typeset_element (item_p);
-         if (!item_p->axis_group_l_a_[X_AXIS]) {
-           if (item_p->breakable_b_) 
-             command_column_l_->add_element(item_p);
-           else
-             musical_column_l_->add_element(item_p);
-         }
-       }
-      scoreline_l_->add (elem_p);
-    }
-  elem_p_arr_.clear();
-}
-
-void
-Score_engraver::do_pre_move_processing()
-{
-  if (break_penalty_i_ > Break_req::DISALLOW)
-    {
-      get_staff_info().command_pcol_l ()-> breakable_b_ = true;
-      breaks_i_ ++;
-      if (! (breaks_i_%8))
-       *mlog << "[" << breaks_i_ << "]" << flush;
-    }
-  // this generates all items.
-  Engraver_group_engraver::do_pre_move_processing();
-  
-  typeset_all();
-}
-
-void
-Score_engraver::set_columns (Score_column *new_command_l, 
-                            Score_column *new_musical_l)
-{
-  if (command_column_l_ && command_column_l_->linked_b()) 
-    {
-      pscore_p_->add_column (command_column_l_);
-      scoreline_l_->add (command_column_l_);
-    }
-  else 
-    {
-      delete command_column_l_ ;
-      command_column_l_ =0;
-    }
-  if (new_command_l) 
-    {
-      command_column_l_ = new_command_l;
-      command_column_l_->musical_b_ = false;
-    }
-  if (musical_column_l_ && musical_column_l_->linked_b()) 
-    {
-      pscore_p_->add_column (musical_column_l_);
-      scoreline_l_->add (musical_column_l_);
-    }
-  else 
-    {
-      delete musical_column_l_;
-      musical_column_l_ = 0;
-    }
-  
-  if (new_musical_l) 
-    {
-      musical_column_l_ = new_musical_l;
-      musical_column_l_->musical_b_ = true;
-    }
-}
-
-
-Staff_info
-Score_engraver::get_staff_info() const
-{
-  Staff_info inf = Engraver_group_engraver::get_staff_info();
-
-  inf.command_l_ = command_column_l_;
-  inf.musical_l_ = musical_column_l_;
-  
-  return inf;
-}
-
-
-
-Music_output*
-Score_engraver::get_output_p ()
-{
-  Music_output * o = pscore_p_;
-  pscore_p_=0;
-  return o;
-}
-
-bool
-Score_engraver::do_try_request (Request*r)
-{
-  bool gotcha = Engraver_group_engraver::do_try_request (r);  
-
-  if (gotcha || !r->command ())
-    return gotcha;
-
-  Command_req * c = r->command ();
-  if (c->linebreak ())
-    {
-      Break_req* b = (Break_req*)c->linebreak ();
-      if (b->penalty_i_ <= Break_req::DISALLOW)
-       break_penalty_i_ = b->penalty_i_;
-      else if (b->penalty_i_ >= Break_req::FORCE)
-       {
-         command_column_l_->break_penalty_i_ = b->penalty_i_;
-         gotcha = true;
-       }
-    }
-  return gotcha;
-}
-
-IMPLEMENT_IS_TYPE_B1(Score_engraver,Engraver_group_engraver);
-ADD_THIS_TRANSLATOR(Score_engraver);
-
-void
-Score_engraver::do_add_processing ()
-{
-  Translator_group::do_add_processing ();
-  assert (output_def_l_->is_type_b (Paper_def::static_name ()));
-  assert (!daddy_trans_l_);
-  pscore_p_ = new Paper_score;
-  pscore_p_->paper_l_ = (Paper_def*)output_def_l_;
-}
index 7d596f90b935d719421c2993e23c1274e0c0ecc0..9e91c14b24993ff96dbac317f71f7dc22068a60e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "score-performer.hh"
@@ -37,13 +37,13 @@ Score_performer::play (Audio_element * p)
 {
   if  (p->is_type_b (Audio_item::static_name())) 
     {
-      audio_column_l_->add ((Audio_item*)p);
+      audio_column_l_->add_audio_item ((Audio_item*)p);
     }
   else if (p->is_type_b (Audio_staff::static_name())) 
     {
       performance_p_->add_staff ((Audio_staff*)p);
     }
-  performance_p_->add (p);
+  performance_p_->add_element (p);
 }
 
 void 
@@ -51,7 +51,7 @@ Score_performer::prepare (Moment m)
 {
   Global_translator::prepare (m);
   audio_column_l_ = new Audio_column (m);
-  performance_p_->add (audio_column_l_);
+  performance_p_->add_column (audio_column_l_);
   post_move_processing ();
 }
 
diff --git a/lily/score-priority-engraver.cc b/lily/score-priority-engraver.cc
new file mode 100644 (file)
index 0000000..ea9ae79
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+  score-align-reg.cc -- implement Score_priority_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+
+#include "horizontal-group-item.hh"
+#include "score-priority-engraver.hh"
+#include "item.hh"
+#include "assoc-iter.hh"
+#include "break-align-item.hh"
+
+
+Score_priority_engraver::Score_priority_engraver()
+{
+}
+
+void
+Score_priority_engraver::do_pre_move_processing()
+{
+  for (Assoc_iter<int, Horizontal_group_item*> i(align_p_assoc_); i.ok() ; i++)
+    {
+      if (i.val ())
+       {
+         typeset_element (i.val ());
+         i.val () = 0;
+       }
+    }
+  align_p_assoc_.clear ();
+}
+
+void
+Score_priority_engraver::acknowledge_element (Score_element_info inf)
+{
+  Item * item_l = inf.elem_l_->access_Item ();
+  if (item_l && item_l->breakable_b_ && !item_l->empty_b ())
+    {
+      /*
+       Don't try to eat up our (probable) parent.
+      */
+      if (inf.origin_grav_l_arr_.size () <= 1 &&
+         item_l->is_type_b (Break_align_item::static_name ()))
+       return; 
+
+      
+      int priority =item_l->break_priority_i_;
+      Horizontal_group_item * hg =0;
+      if (!align_p_assoc_.elt_b(priority))
+       {
+         hg = new Horizontal_group_item;
+         announce_element (Score_element_info (hg,0));
+         align_p_assoc_[priority] = hg;
+         hg->break_priority_i_ = priority;
+         hg->breakable_b_ = true;
+       }
+      else
+       hg = align_p_assoc_[priority];
+      
+      Score_element * unbound_elem = inf.elem_l_;
+
+      while (unbound_elem->axis_group_l_a_[X_AXIS])
+       {
+         /* We might have added inf.elem_l_ earlier because we added one
+            of its children.  We don't want to add ourselves to ourself
+         */
+         if (unbound_elem->axis_group_l_a_[X_AXIS] == hg)
+           return;
+         unbound_elem = unbound_elem->axis_group_l_a_[X_AXIS]->access_Score_element ();
+       }
+
+      hg->add_element (unbound_elem);
+    }
+}
+
+IMPLEMENT_IS_TYPE_B1(Score_priority_engraver, Engraver);
+ADD_THIS_TRANSLATOR(Score_priority_engraver);
diff --git a/lily/score-priority-grav.cc b/lily/score-priority-grav.cc
deleted file mode 100644 (file)
index a0f44cb..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-  score-align-reg.cc -- implement Score_priority_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-
-#include "horizontal-group-item.hh"
-#include "score-priority-grav.hh"
-#include "item.hh"
-#include "assoc-iter.hh"
-#include "break-align-item.hh"
-
-
-Score_priority_engraver::Score_priority_engraver()
-{
-}
-
-void
-Score_priority_engraver::do_pre_move_processing()
-{
-  for (Assoc_iter<int, Horizontal_group_item*> i(align_p_assoc_); i.ok() ; i++)
-    {
-      if (i.val ())
-       {
-         typeset_element (i.val ());
-         i.val () = 0;
-       }
-    }
-  align_p_assoc_.clear ();
-}
-
-void
-Score_priority_engraver::acknowledge_element (Score_elem_info inf)
-{
-  Item * item_l = inf.elem_l_->item ();
-  if (item_l && item_l->breakable_b_ && !item_l->empty_b ())
-    {
-      /*
-       Don't try to eat up our (probable) parent.
-      */
-      if (inf.origin_grav_l_arr_.size () <= 1 &&
-         item_l->is_type_b (Break_align_item::static_name ()))
-       return; 
-
-      
-      int priority =item_l->break_priority_i_;
-      Horizontal_group_item * hg =0;
-      if (!align_p_assoc_.elt_b(priority))
-       {
-         hg = new Horizontal_group_item;
-         announce_element (Score_elem_info (hg,0));
-         align_p_assoc_[priority] = hg;
-         hg->break_priority_i_ = priority;
-         hg->breakable_b_ = true;
-       }
-      else
-       hg = align_p_assoc_[priority];
-      
-      Score_elem * unbound_elem = inf.elem_l_;
-
-      while (unbound_elem->axis_group_l_a_[X_AXIS])
-       {
-         /* We might have added inf.elem_l_ earlier because we added one
-            of its children.  We don't want to add ourselves to ourself
-         */
-         if (unbound_elem->axis_group_l_a_[X_AXIS] == hg)
-           return;
-         unbound_elem = unbound_elem->axis_group_l_a_[X_AXIS];
-       }
-
-      hg->add_element (unbound_elem);
-    }
-}
-
-IMPLEMENT_IS_TYPE_B1(Score_priority_engraver, Engraver);
-ADD_THIS_TRANSLATOR(Score_priority_engraver);
index 8f97c31d76d60b195798ed88bd02a497cfa2a158..e09cb71e72272c64e22bda906bcb17a95f283a37 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "score.hh"
@@ -54,10 +54,10 @@ Score::run_translator (Music_output_def *odef_l)
   Global_translator * trans_p = odef_l->get_global_translator_p();
   if (!trans_p)
     {
-      non_fatal_error ("No toplevel translator.");
+      non_fatal_error (_("no toplevel translator"));
       return ;
     }
-  *mlog << _("\nInterpreting music ...");
+  *mlog << '\n' << _("Interpreting music...") << flush;
   trans_p->last_mom_ = music_p_->time_int().max ();
 
   Music_iterator * iter = Music_iterator::static_get_iterator_p (music_p_,
@@ -67,7 +67,7 @@ Score::run_translator (Music_output_def *odef_l)
   if (! iter->ok())
     {
       delete iter;
-      warning (_("Need music in a score"));
+      warning (_("need music in a score"));
       errorlevel_i_ =1;
       return ;
     }
@@ -81,19 +81,21 @@ Score::run_translator (Music_output_def *odef_l)
       if (iter->ok())
        {
          w = iter->next_moment();
-         DOUT << "proccing: " << w <<"\n";
+         DOUT << "proccing: " << w << '\n';
          if (!monitor->silent_b ("walking"))
            iter->print();
        }
       
       trans_p->modify_next (w);
       trans_p->prepare (w);
+      
       if (!monitor->silent_b ("walking"))
        trans_p->print();
 
       iter->process_and_next (w);
       trans_p->process();
     }
+  
   delete iter;
   trans_p->finish();
 
@@ -101,13 +103,12 @@ Score::run_translator (Music_output_def *odef_l)
   if (errorlevel_i_)
     {
       // should we? hampers debugging.
-      warning (_("Errors found, /*not processing score*/"));
+      warning (_ ("errors found, /*not processing score*/"));
     }
 
   Music_output * output = trans_p->get_output_p();
   delete trans_p;
-  *mlog << _(" (time: ") << String(timer.read (), "%.2f") << _(" seconds)");
-
+  *mlog << endl << _f ("time: %.2f seconds",  timer.read ()) << flush;
 
   output->header_l_ = header_p_;
   output->origin_str_ =  location_str();
@@ -148,7 +149,7 @@ Score::print() const
 }
 
 void
-Score::add (Music_output_def *pap_p)
+Score::add_output (Music_output_def *pap_p)
 {
   def_p_arr_.push(pap_p);
 }
diff --git a/lily/scoreline.cc b/lily/scoreline.cc
deleted file mode 100644 (file)
index 77eeead..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
-  scoreline.cc -- implement Line_of_score
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996,  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "scoreline.hh"
-#include "dimen.hh"
-#include "spanner.hh"
-#include "atom.hh"
-#include "paper-def.hh"
-#include "p-col.hh"
-#include "p-score.hh"
-
-
-Line_of_score::Line_of_score()
-{
-  error_mark_b_ = 0;
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Line_of_score,Spanner);
-
-void
-Line_of_score::add (Score_elem*e)
-{
-  // avoid excess dependencies.
-  if (!(e->axis_group_l_a_[0] || e->axis_group_l_a_[1]))
-    add_dependency (e);
-}
-
-bool
-Line_of_score::contains_b (Paper_column const* c) const
-{
-  return cols.find_l ((Paper_column*)c);
-}
-
-void
-Line_of_score::set_breaking (Array<Col_hpositions> const &breaking)
-{
-  for (int j=0; j < breaking.size(); j++) 
-    {
-      const Array<Paper_column*> &curline (breaking[j].cols);
-      const Array<Paper_column*> &errors (breaking[j].error_col_l_arr_);
-      const Array<Real> &config (breaking[j].config);
-       
-      for (int i=0; i < errors.size(); i++)
-       errors[i]->error_mark_b_ = true;
-
-      Line_of_score *line_l=0;
-      Line_of_score *line_p =0;
-       
-      if (breaking.size() >1) 
-       {
-         line_p = (Line_of_score*)clone()->spanner ();
-         line_l = line_p;
-       }
-      else 
-       line_l =  this;
-       
-      ((Array<Paper_column*> &)line_l->cols) = curline;
-      line_l->set_bounds(LEFT,curline[0]);
-      
-      line_l->set_bounds(RIGHT,curline.top());
-       
-      if (line_p) 
-       {
-         pscore_l_->typeset_broken_spanner (line_p);
-         broken_into_l_arr_.push (line_p);
-       }
-
-      for (int i=0; i < curline.size(); i++)
-       {
-         curline[i]->translate_axis (config[i],X_AXIS);
-         curline[i]->line_l_ = (Line_of_score*)line_l;
-       }
-    }
-}
-
-
-void
-Line_of_score::break_into_pieces (bool)
-{
-  
-}
-
-Link_array<Line_of_score>
-Line_of_score::get_lines() const
-{
-  Link_array<Line_of_score> ret;
-
-  if (broken_into_l_arr_.size())
-    for (int i=0; i < broken_into_l_arr_.size(); i++) 
-      {
-       ret.push ((Line_of_score*)broken_into_l_arr_[i]);
-      }
-  else 
-    ret.push ((Line_of_score*)this);   // ugh
-  
-  return ret;
-}
-
-void
-Line_of_score::do_print() const
-{
-  Spanner::do_print();
-}
-
-Interval
-Line_of_score::do_width() const
-{ 
-  return Spanner::do_width();
-}
-
-Link_array<Score_elem>
-Line_of_score::get_extra_dependencies () const
-{
-  Link_array<Score_elem> r;
-  for (int i=0; i < cols.size (); i++)
-    r.push (cols[i]);
-  return r;
-}
-
-void
-Line_of_score::do_unlink () 
-{
-  Spanner::do_unlink ();
-  for (int i=0; i < cols.size (); i++)
-    cols[i]->line_l_ =0;
-  cols.set_size (0);
-}
-
-
-void
-Line_of_score::do_junk_links () 
-{
-  cols.set_size (0);
-}
index b481921c3a88c722fef2d2c3600598297a9a3caf..7f257671acc1abca6d551dccb548e369214f92d6 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include <fstream.h>
 #include "main.hh"
@@ -22,6 +22,7 @@ Sources* source_global_l = 0;
 Array<String> inclusion_global_array;
 Array<String> target_str_global_array;
 Link_array<Score> score_global_array;
+Header * header_global_p;
 
 
 void write_dependency_file (String fn, Array<String> targets,
@@ -30,12 +31,12 @@ void write_dependency_file (String fn, Array<String> targets,
   const int WRAPWIDTH = 65;
 
 
-  cout << "Writing dependency file " << fn << " ...\n";
+  cout << _f ("writing dependency file: `%s\'...", fn) << '\n';
   ofstream f (fn.ch_C ());
   if (!f)
-    warning ( _("Can't open dependency file `" + fn + "\'"));
+    warning (_f ("can't open file: `%s\'", fn));
 
-  f << "# Automatically generated by " << get_version_str ()  << "\n";
+  f << "# Automatically generated by " << get_version_str ()  << '\n';
   String out;
   for (int i=0; i < targets.size (); i ++)
      out += targets[i] + " ";
@@ -66,18 +67,15 @@ do_deps()
 void
 do_scores()
 {
+  if (!header_global_p)
+    header_global_p = new Header;
   for (int i=0; i < score_global_array.size(); i++)
     {
       Score* is_p = score_global_array[i];
-      if (!is_p->header_p_)
-       is_p->header_p_ = new Header;
-      
-                
-      is_p->header_p_->lily_id_str_ = "Lily was here, " +
-       get_version_number_str();
+
       if (is_p->errorlevel_i_)
        {
-         is_p->warning (_("Score contains errors. Will not process it. "));
+         is_p->warning (_("score contains errors; will not process it"));
          exit_status_i_ |= 1;
        }
       else
@@ -97,42 +95,33 @@ clear_scores ()
     }
   score_global_array.clear();
   inclusion_global_array.clear ();
+  delete  header_global_p ;
+  header_global_p =0; 
 }
 
-extern File_path path;
 
 void
 do_one_file (String init_str, String file_str)
 {
-  if (init_str.length_i () && path.find (init_str).empty_b ())
+  if (init_str.length_i () && global_path.find (init_str).empty_b ())
     {
-      warning (_("Can not find `") + init_str +"\'");
-      return ;
+      warning (_f ("can't find file: `%s\'", init_str));
+      return;
     }
-  if (file_str.length_i () && path.find (file_str).empty_b ())
+  if ((file_str != "-") && global_path.find (file_str).empty_b ())
     {
-      warning (_("Can not find `") + file_str + "'");
-      return ;
+      warning (_f ("can't find file: `%s\'", file_str));
+      return;
     }
 
   Sources sources;
   source_global_l = &sources;
-  source_global_l->set_path (&path);
+  source_global_l->set_path (&global_path);
   {
     My_lily_parser parser (source_global_l);
     parser.set_version_check (version_ignore_global_b);
     parser.parse_file (init_str, file_str);
 
-    
-    if (file_str.length_i () && file_str[0] != '-')
-      {
-       String a,b,c,d;
-       split_path (file_str, a, b, c, d);
-       default_outname_base_global = c;
-      }
-    else
-      default_outname_base_global = "lelie";
-  
     if (parser.error_level_i_)
       {
        exit_status_i_  = 1;
@@ -143,3 +132,4 @@ do_one_file (String init_str, String file_str)
   }
   source_global_l = 0;
 }
+
index 7d11acf61e8c1f2a5ab754902a8eb9881c24a311..f67907c8695258398039a4205a9014e73f843907 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "script-column.hh"
@@ -17,7 +17,7 @@ IMPLEMENT_IS_TYPE_B1(Script_column,Horizontal_vertical_group_item);
 
 
 void
-Script_column::add (Script*s_l)
+Script_column::add_script (Script*s_l)
 {
   script_l_arr_.push (s_l);
   add_dependency (s_l);
@@ -53,7 +53,7 @@ Script_column::do_pre_processing()
   for (int i=0; i < script_l_arr_.size(); i++) 
     {
       Script*s_l = script_l_arr_[i];
-      placed_l_arr_a[idx (s_l->specs_l_->inside_b(),
+      placed_l_arr_a[idx (s_l->specs_p_->inside_b(),
                          s_l->dir_) ].push (s_l);
     }
   
@@ -103,11 +103,11 @@ Script_column::add_support (Item*i_l)
 }
 
 void
-Script_column::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Script_column::do_substitute_dependency (Score_element*o,Score_element*n)
 {
-  if (o->item()) 
+  if (o->access_Item ()) 
     {
-      script_l_arr_.substitute ((Script*)o->item(),(Script*) (n?n->item ():0));
-      support_l_arr_.substitute (o->item(), (n?n->item ():0));
+      script_l_arr_.substitute ((Script*)o->access_Item (),(Script*) (n?n->access_Item ():0));
+      support_l_arr_.substitute (o->access_Item (), (n?n->access_Item ():0));
     }
 }
index 5a9c3a65b389b36c73fb3387f6618d0d2142bbea..05074c7107993dd4e4663d4f5aa2cb4e19c2995c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "debug.hh"
@@ -78,7 +78,7 @@ Script_def::get_atom (Paper_def *p , Direction d) const
   if (invertsym_b_)
     preidx_str = (d < 0)? "d" : "u";
 
-  return p->lookup_l()->script (preidx_str + symidx_str_);
+  return p->lookup_l(0)->script (preidx_str + symidx_str_);
 }
 
 
diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc
new file mode 100644 (file)
index 0000000..435e312
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+  script-reg.cc -- implement Script_engraver
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "script-engraver.hh"
+#include "script.hh"
+#include "musical-request.hh"
+#include "stem.hh"
+#include "staff-sym.hh"
+#include "general-script-def.hh"
+#include "text-def.hh"
+
+
+Script_engraver::Script_engraver()
+{
+  do_post_move_processing();
+}
+
+bool
+Script_engraver::do_try_request (Request *r_l)
+{
+  if (!r_l->access_Musical_req () || ! r_l->access_Musical_req ()->access_Musical_script_req ())
+    return false ;
+  
+  for (int i=0; i < script_req_l_arr_.size(); i++) 
+    {
+      if (r_l->equal_b (script_req_l_arr_[i]))
+       return true;
+    }
+  script_req_l_arr_.push (r_l->access_Script_req ());
+  
+  return true;
+}
+
+void
+Script_engraver::do_process_requests()
+{
+  if (script_p_arr_.size ())
+    return ;
+  
+  for (int i=0; i < script_req_l_arr_.size(); i++)
+    {
+      Script_req* l=script_req_l_arr_[i];
+      Script *p =new Script;
+      p->dir_ = l->dir_;
+      p->specs_p_ = l->scriptdef_p_->clone ();
+      script_p_arr_.push (p);
+      announce_element (Score_element_info (p, l));
+    }
+}
+
+void
+Script_engraver::do_pre_move_processing()
+{
+  Staff_symbol* s_l = get_staff_info().staff_sym_l_;
+  for (int i=0; i < script_p_arr_.size(); i++) 
+    {
+      Script*script_p = script_p_arr_[i];
+      if (!script_p->specs_p_->inside_b())
+       script_p->add_support (s_l);
+
+      if (script_p->specs_p_->is_type_b (Text_def::static_name ()))
+       {
+         Text_def * td_l = (Text_def*)script_p->specs_p_;
+         Scalar style = get_property ("textstyle");
+         if (style.to_bool ())
+           {
+             td_l->style_str_= style;
+           }
+       }
+      typeset_element (script_p);
+    }
+  script_p_arr_.clear();
+}
+
+void
+Script_engraver::do_post_move_processing()
+{
+  script_req_l_arr_.clear();
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Script_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Script_engraver);
diff --git a/lily/script-grav.cc b/lily/script-grav.cc
deleted file mode 100644 (file)
index 7d28125..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-  script-reg.cc -- implement Script_engraver
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "script-grav.hh"
-#include "script.hh"
-#include "musical-request.hh"
-#include "stem.hh"
-#include "staff-sym.hh"
-#include "general-script-def.hh"
-
-Script_engraver::Script_engraver()
-{
-  do_post_move_processing();
-}
-
-bool
-Script_engraver::do_try_request (Request *r_l)
-{
-  if (!r_l->musical() || ! r_l->musical ()->musicalscript ())
-    return false ;
-  
-  for (int i=0; i < script_req_l_arr_.size(); i++) 
-    {
-      if (r_l->equal_b (script_req_l_arr_[i]))
-       return true;
-    }
-  script_req_l_arr_.push (r_l->script());
-  
-  return true;
-}
-
-void
-Script_engraver::do_process_requests()
-{
-  if (script_p_arr_.size ())
-    return ;
-  
-  for (int i=0; i < script_req_l_arr_.size(); i++)
-    {
-      Script_req* l=script_req_l_arr_[i];
-      Script *p =new Script;
-      p->dir_ = l->dir_;
-      p->specs_l_ = l->scriptdef_p_;
-      script_p_arr_.push (p);
-      announce_element (Score_elem_info (p, l));
-    }
-}
-
-void
-Script_engraver::do_pre_move_processing()
-{
-  Staff_symbol* s_l = get_staff_info().staff_sym_l_;
-  for (int i=0; i < script_p_arr_.size(); i++) 
-    {
-      Script*script_p = script_p_arr_[i];
-      if (!script_p->specs_l_->inside_b())
-       script_p->add_support (s_l);
-
-      typeset_element (script_p);
-    }
-  script_p_arr_.clear();
-}
-
-void
-Script_engraver::do_post_move_processing()
-{
-  script_req_l_arr_.clear();
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Script_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Script_engraver);
index 4014ed729c6f2ced45097ef127d8381ea841b8b6..76c9cbc02a522ca85b3b0957b2234a144ff1207c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "script-def.hh"
 #include "musical-request.hh"
 #include "lookup.hh"
 
 void
-Script::do_print() const
+Script::do_print () const
 {
 #ifndef NPRINT
-  specs_l_->print();
+  specs_p_->print ();
 #endif
 }
 
 void
-Script::do_substitute_dependency (Score_elem*o,Score_elem*n)
+Script::do_substitute_dependency (Score_element*o,Score_element*n)
 {
   Staff_side::do_substitute_dependency (o,n);
   if (o == stem_l_)
     {
-      stem_l_ = n ? (Stem*)n->item() : 0;
+      stem_l_ = n ? (Stem*)n->access_Item () : 0;
     }
 }
 
@@ -39,78 +39,109 @@ Script::set_stem (Stem*st_l)
 }
 
 
-Script::Script()
+Script::Script ()
 {
-  specs_l_ = 0;
+  axis_ = Y_AXIS;
+  specs_p_ = 0;
   stem_l_ = 0;
+  postbreak_only_b_ = true;
   dir_ =  CENTER;
 }
 
 void
-Script::set_default_dir()
+Script::set_default_dir ()
 {
-  int s_i=specs_l_->rel_stem_dir();
+  int s_i=specs_p_->rel_stem_dir ();
   if (s_i)
     {
       if (stem_l_)
-       dir_ = Direction(stem_l_->dir_ * s_i);
+       dir_ = Direction (stem_l_->dir_ * s_i);
       else
        {
-         specs_l_->warning (_("Script needs stem direction"));
+         specs_p_->warning (_ ("script needs stem direction"));
          dir_ = DOWN;
        }
     }
   else
     {
-      dir_ =specs_l_->staff_dir();
+      dir_ =specs_p_->staff_dir ();
     }
   assert (dir_);
 }
 
 
 Interval
-Script::do_width() const
+Script::do_width () const
 {
-  return specs_l_->get_atom (paper(), dir_).extent ().x ();
+  return specs_p_->get_atom (paper (), dir_).extent ().x ();
 }
 
 void
-Script::do_pre_processing()
+Script::do_pre_processing ()
 {
-  if  (breakable_b_ && break_status_i() != 1)
+  Staff_side::do_pre_processing ();
+  if (breakable_b_ && postbreak_only_b_ && (break_status_dir () != RIGHT))
     {
       transparent_b_ = true;
       set_empty (true);
     }
+  
+  if (axis_ == Y_AXIS && !dir_)
+    set_default_dir ();
+}
 
-  if (!dir_)
-    set_default_dir();
+Interval
+Script::symbol_height () const
+{
+  return specs_p_->get_atom (paper (), dir_).extent ().y ();
 }
 
 Interval
-Script::symbol_height() const
+Script::symbol_width () const
 {
-  return specs_l_->get_atom (paper(), dir_).extent ().y ();
+  return specs_p_->width (paper ());
 }
 
 Molecule*
-Script::brew_molecule_p() const
+Script::brew_molecule_p () const
 {
-  Real dx = paper()->note_width()/2;
-
-  Molecule*out = new Molecule (specs_l_->get_atom (paper(), dir_));
-  // ugh, staccato dots are not centred between stafflines (how?)?
-  Real correct = - (Real)dir_ * 2.0 * paper ()->rule_thickness ();
-  out->translate_axis (y_ + correct, Y_AXIS);
-  out->translate_axis (dx, X_AXIS);    // FIXME! ugh
-  return out;
+  Real dx =0.;
+
+  Molecule*mol_p = new Molecule (specs_p_->get_atom (paper (), dir_));
+  /*
+    ugh, staccato dots are not centred between stafflines (how?)?
+  */
+  Real correct =0.0;
+  if (axis_ == Y_AXIS){
+    dx =  paper ()->note_width ()/2;
+    correct = - (Real)dir_ * 2.0 * paper ()->rule_thickness ();
+    mol_p->translate_axis (dx, X_AXIS);        // FIXME! ugh
+  }
+  
+  mol_p->translate_axis (coordinate_offset_f_ + correct, axis_);
+
+  return mol_p;
 }
 
 
-IMPLEMENT_IS_TYPE_B2(Script,Item,Staff_side);
+IMPLEMENT_IS_TYPE_B2 (Script,Item,Staff_side);
 
 int
 Script::compare (Script  *const&l1, Script *const&l2)
 {
-  return l1->specs_l_->priority_i() - l2->specs_l_->priority_i ();
+  return l1->specs_p_->priority_i() - l2->specs_p_->priority_i ();
+}
+
+Script::~Script ()
+{
+  delete specs_p_;
+}
+Script::Script (Script const&s)
+  : Item (s), Staff_side(s)
+{
+  specs_p_ = s.specs_p_ ? s.specs_p_->clone (): 0;
+  stem_l_ =s.stem_l_;
+  postbreak_only_b_ = s.postbreak_only_b_;
 }
+  
index 7ff3fca4819139019ba59af15b914eeba64e6117..cffc4ee2763b32aecedefc58c5ace8bc62abc8bc 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -45,7 +45,6 @@ Separating_group_spanner::get_rods () const
          r.distance_f_ += paper ()->interline_f () *1.5;
          a.push (r);
        }
-       
     }
       
   return a;
@@ -61,13 +60,13 @@ Separating_group_spanner::add_spacing_unit (Single_malt_grouping_item*i)
 IMPLEMENT_IS_TYPE_B1(Separating_group_spanner, Spanner);
 
 void
-Separating_group_spanner::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Separating_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
 {
   if (o->is_type_b (Single_malt_grouping_item::static_name ()))
     {
       Single_malt_grouping_item*ns = n ?
-       (Single_malt_grouping_item*)n->item () : 0;
-      spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)o->item (), ns);
+       (Single_malt_grouping_item*)n->access_Item () : 0;
+      spacing_unit_l_arr_.substitute ((Single_malt_grouping_item*)o->access_Item (), ns);
     }
 }
 
diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc
new file mode 100644 (file)
index 0000000..878bb1f
--- /dev/null
@@ -0,0 +1,77 @@
+/*   
+  separating-line-group-grav.cc --  implement Separating_line_group_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "separating-line-group-engraver.hh"
+#include "separating-group-spanner.hh"
+#include "single-malt-grouping-item.hh"
+#include "p-col.hh"
+
+Separating_line_group_engraver::Separating_line_group_engraver ()
+{
+  sep_span_p_ = 0;
+  break_malt_p_ = 0;
+  nobreak_malt_p_ =0;
+}
+
+void
+Separating_line_group_engraver::do_creation_processing ()
+{
+  sep_span_p_ = new Separating_group_spanner;
+  announce_element ( Score_element_info (sep_span_p_, 0));
+  sep_span_p_->set_bounds (LEFT, get_staff_info ().command_pcol_l ());
+}
+
+void
+Separating_line_group_engraver::do_removal_processing ()
+{
+  sep_span_p_->set_bounds (RIGHT, get_staff_info ().command_pcol_l ());
+  typeset_element (sep_span_p_);
+  sep_span_p_ =0;
+}
+
+void
+Separating_line_group_engraver::acknowledge_element (Score_element_info i)
+{
+  Item * it = i.elem_l_->access_Item ();
+  if (it && !it->axis_group_l_a_[X_AXIS])
+    {
+      Single_malt_grouping_item *&p_ref_ (it->breakable_b_ ?
+                                         break_malt_p_ : nobreak_malt_p_);
+
+      if (!p_ref_)
+       {
+         p_ref_ = new Single_malt_grouping_item;
+         p_ref_->breakable_b_ = it->breakable_b_;
+         announce_element (Score_element_info (p_ref_, 0));
+       }
+      p_ref_->add_item (it);
+    }
+}
+
+void
+Separating_line_group_engraver::do_pre_move_processing ()
+{
+  if (break_malt_p_)
+    {
+      sep_span_p_->add_spacing_unit (break_malt_p_);
+      
+      typeset_element (break_malt_p_);
+      break_malt_p_ =0;
+    }
+  if (nobreak_malt_p_)
+    {
+      sep_span_p_->add_spacing_unit (nobreak_malt_p_);
+      typeset_element (nobreak_malt_p_);
+      nobreak_malt_p_ =0;
+    }
+}
+
+
+IMPLEMENT_IS_TYPE_B1 (Separating_line_group_engraver, Engraver);
+ADD_THIS_TRANSLATOR( Separating_line_group_engraver);
diff --git a/lily/separating-line-group-grav.cc b/lily/separating-line-group-grav.cc
deleted file mode 100644 (file)
index 889c8db..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*   
-  separating-line-group-grav.cc --  implement Separating_line_group_engraver
-  
-  source file of the GNU LilyPond music typesetter
-  
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
-  
- */
-
-#include "separating-line-group-grav.hh"
-#include "separating-group-spanner.hh"
-#include "single-malt-grouping-item.hh"
-#include "p-col.hh"
-
-Separating_line_group_engraver::Separating_line_group_engraver ()
-{
-  sep_span_p_ = 0;
-  break_malt_p_ = 0;
-  nobreak_malt_p_ =0;
-}
-
-void
-Separating_line_group_engraver::do_creation_processing ()
-{
-  sep_span_p_ = new Separating_group_spanner;
-  announce_element ( Score_elem_info (sep_span_p_, 0));
-  sep_span_p_->set_bounds (LEFT, get_staff_info ().command_pcol_l ());
-}
-
-void
-Separating_line_group_engraver::do_removal_processing ()
-{
-  sep_span_p_->set_bounds (RIGHT, get_staff_info ().command_pcol_l ());
-  typeset_element (sep_span_p_);
-  sep_span_p_ =0;
-}
-
-void
-Separating_line_group_engraver::acknowledge_element (Score_elem_info i)
-{
-  Item * it = i.elem_l_->item ();
-  if (it && !it->axis_group_l_a_[X_AXIS])
-    {
-      Single_malt_grouping_item *&p_ref_ (it->breakable_b_ ?
-                                         break_malt_p_ : nobreak_malt_p_);
-
-      if (!p_ref_)
-       {
-         p_ref_ = new Single_malt_grouping_item;
-         p_ref_->breakable_b_ = it->breakable_b_;
-         announce_element (Score_elem_info (p_ref_, 0));
-       }
-      p_ref_->add (it);
-    }
-}
-
-void
-Separating_line_group_engraver::do_pre_move_processing ()
-{
-  if (break_malt_p_)
-    {
-      sep_span_p_->add_spacing_unit (break_malt_p_);
-      
-      typeset_element (break_malt_p_);
-      break_malt_p_ =0;
-    }
-  if (nobreak_malt_p_)
-    {
-      sep_span_p_->add_spacing_unit (nobreak_malt_p_);
-      typeset_element (nobreak_malt_p_);
-      nobreak_malt_p_ =0;
-    }
-}
-
-
-IMPLEMENT_IS_TYPE_B1 (Separating_line_group_engraver, Line_group_engraver);
-ADD_THIS_TRANSLATOR( Separating_line_group_engraver);
index e9fe0a7398c1ca38df2d8e5e297c1decae3bc3e6..284a494d7e85954087d3efa1f38d488538654339 100644 (file)
@@ -3,7 +3,7 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1998 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
@@ -18,7 +18,7 @@ Single_malt_grouping_item ::Single_malt_grouping_item()
 }
 
 void
-Single_malt_grouping_item::add (Item* i)
+Single_malt_grouping_item::add_item (Item* i)
 {
   assert (i);
   item_l_arr_.push (i);
@@ -44,11 +44,11 @@ Single_malt_grouping_item::my_width () const
 IMPLEMENT_IS_TYPE_B1(Single_malt_grouping_item, Item);
 
 void
-Single_malt_grouping_item::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Single_malt_grouping_item::do_substitute_dependency (Score_element*o, Score_element*n)
 {
-  if (o->item ())
+  if (o->access_Item ())
     {
-      item_l_arr_.unordered_substitute (o->item (),  n ? n->item () : 0);
+      item_l_arr_.unordered_substitute (o->access_Item (),  n ? n->access_Item () : 0);
     }
 }
 
diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc
new file mode 100644 (file)
index 0000000..5ccf038
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+  slur-grav.cc -- implement Slur_engraver
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "proto.hh"
+#include "plist.hh"
+#include "musical-request.hh"
+#include "slur-engraver.hh"
+#include "slur.hh"
+#include "debug.hh"
+#include "note-column.hh"
+
+bool
+Slur_engraver::do_try_request (Request *req_l)
+{
+  Musical_req *mus_l = req_l->access_Musical_req ();
+  if (!mus_l || !mus_l->access_Slur_req ())
+    return false;
+
+  new_slur_req_l_arr_.push (mus_l->access_Slur_req ());
+  return true;
+}
+
+void
+Slur_engraver::acknowledge_element (Score_element_info info)
+{
+  if (info.elem_l_->is_type_b (Note_column::static_name ()))
+    {
+      Note_column *col_l =(Note_column*) info.elem_l_->access_Item() ;// ugh
+      for (int i = 0; i < slur_l_stack_.size(); i++)
+       slur_l_stack_[i]->add_column (col_l);
+      for (int i = 0; i < end_slur_l_arr_.size(); i++)
+       end_slur_l_arr_[i]->add_column (col_l);
+    }
+}
+
+void
+Slur_engraver::do_removal_processing ()
+{
+  for (int i = 0; i < slur_l_stack_.size(); i++)
+    {
+      typeset_element (slur_l_stack_[i]);
+    }
+  slur_l_stack_.clear ();
+  for (int i=0; i < requests_arr_.size(); i++)
+    {
+      requests_arr_[i]->warning (_ ("unterminated slur"));
+    }
+}
+
+/*
+  abracadabra
+  */
+Slur_engraver::Slur_engraver()
+{
+  dir_ =CENTER;
+}
+void
+Slur_engraver::do_process_requests()
+{
+  Array<Slur*> start_slur_l_arr_;
+  for (int i=0; i< new_slur_req_l_arr_.size(); i++)
+    {
+      Slur_req* slur_req_l = new_slur_req_l_arr_[i];
+      // end slur: move the slur to other array
+      if (slur_req_l->spantype == Span_req::STOP)
+       {
+         if (slur_l_stack_.empty())
+
+           slur_req_l->warning (_f ("can't find both ends of %s", _("slur")));
+         else
+           {
+             end_slur_l_arr_.push (slur_l_stack_.pop());
+             requests_arr_.pop();
+           }
+       }
+      else  if (slur_req_l->spantype == Span_req::START)
+       {
+         // push a new slur onto stack.
+         //(use temp. array to wait for all slur STOPs)
+         Slur * s_p =new Slur;
+         Scalar prop = get_property ("slurdash");
+         if (prop.isnum_b ()) 
+           s_p->dash_i_ = prop;
+         requests_arr_.push (slur_req_l);
+         start_slur_l_arr_.push (s_p);
+         announce_element (Score_element_info (s_p, slur_req_l));
+       }
+    }
+  for (int i=0; i < start_slur_l_arr_.size(); i++)
+    slur_l_stack_.push (start_slur_l_arr_[i]);
+}
+
+void
+Slur_engraver::do_pre_move_processing()
+{
+  Scalar dir (get_property ("slurydirection"));
+  Scalar dir2 (get_property ("ydirection"));
+  if (!dir.length_i () && dir2.length_i ())
+    {
+        dir_ = (Direction) int(dir2);
+    }
+  else if (dir.length_i ())
+    dir_ = (Direction) int (dir);
+  
+  for (int i = 0; i < end_slur_l_arr_.size(); i++)
+    {
+      if (dir_)
+       end_slur_l_arr_[i]->dir_ = dir_;
+      typeset_element (end_slur_l_arr_[i]);
+    }
+  end_slur_l_arr_.clear();
+}
+
+void
+Slur_engraver::do_post_move_processing()
+{
+  new_slur_req_l_arr_.clear();
+}
+
+IMPLEMENT_IS_TYPE_B1(Slur_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Slur_engraver);
diff --git a/lily/slur-grav.cc b/lily/slur-grav.cc
deleted file mode 100644 (file)
index 4076e2b..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-  slur-grav.cc -- implement Slur_engraver
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "proto.hh"
-#include "plist.hh"
-#include "musical-request.hh"
-#include "slur-grav.hh"
-#include "slur.hh"
-#include "debug.hh"
-#include "note-column.hh"
-
-bool
-Slur_engraver::do_try_request (Request *req_l)
-{
-  Musical_req *mus_l = req_l->musical();
-  if (!mus_l || !mus_l->slur())
-    return false;
-
-  new_slur_req_l_arr_.push (mus_l->slur());
-  return true;
-}
-
-void
-Slur_engraver::acknowledge_element (Score_elem_info info)
-{
-  if (info.elem_l_->is_type_b (Note_column::static_name ()))
-    {
-      Note_column *col_l =(Note_column*) info.elem_l_->item() ;// ugh
-      for (int i = 0; i < slur_l_stack_.size(); i++)
-       slur_l_stack_[i]->add (col_l);
-      for (int i = 0; i < end_slur_l_arr_.size(); i++)
-       end_slur_l_arr_[i]->add (col_l);
-    }
-}
-
-void
-Slur_engraver::do_removal_processing ()
-{
-  for (int i = 0; i < slur_l_stack_.size(); i++)
-    {
-      typeset_element (slur_l_stack_[i]);
-    }
-  slur_l_stack_.clear ();
-  for (int i=0; i < requests_arr_.size(); i++)
-    {
-      requests_arr_[i]->warning (_("unterminated slur"));
-    }
-}
-
-/*
-  abracadabra
-  */
-Slur_engraver::Slur_engraver()
-{
-  dir_ =CENTER;
-}
-void
-Slur_engraver::do_process_requests()
-{
-  Array<Slur*> start_slur_l_arr_;
-  for (int i=0; i< new_slur_req_l_arr_.size(); i++)
-    {
-      Slur_req* slur_req_l = new_slur_req_l_arr_[i];
-      // end slur: move the slur to other array
-      if (slur_req_l->spantype == Span_req::STOP)
-       {
-         if (slur_l_stack_.empty())
-
-           slur_req_l->warning (_("can't find slur to end"));
-         else
-           {
-             end_slur_l_arr_.push (slur_l_stack_.pop());
-             requests_arr_.pop();
-           }
-       }
-      else  if (slur_req_l->spantype == Span_req::START)
-       {
-         // push a new slur onto stack.
-         //(use temp. array to wait for all slur STOPs)
-         Slur * s_p =new Slur;
-         Scalar prop = get_property ("slurdash");
-         if (prop.isnum_b ()) 
-           s_p->dash_i_ = prop;
-         requests_arr_.push (slur_req_l);
-         start_slur_l_arr_.push (s_p);
-         announce_element (Score_elem_info (s_p, slur_req_l));
-       }
-    }
-  for (int i=0; i < start_slur_l_arr_.size(); i++)
-    slur_l_stack_.push (start_slur_l_arr_[i]);
-}
-
-void
-Slur_engraver::do_pre_move_processing()
-{
-  dir_ = (Direction) int(get_property ("ydirection"));
-  for (int i = 0; i < end_slur_l_arr_.size(); i++)
-    {
-      if (dir_)
-       end_slur_l_arr_[i]->dir_ = dir_;
-      typeset_element (end_slur_l_arr_[i]);
-    }
-  end_slur_l_arr_.clear();
-}
-
-void
-Slur_engraver::do_post_move_processing()
-{
-  new_slur_req_l_arr_.clear();
-}
-
-IMPLEMENT_IS_TYPE_B1(Slur_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Slur_engraver);
index 53b495f911c2574a83ac93b7a193059484ed7298..14edd7b3e2146d21354fd5955bbfe51fc554a32c 100644 (file)
@@ -3,8 +3,8 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
-    Jan Nieuwenhuizen <jan@digicash.com>
+  (c) 1996,  1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+    Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 /*
@@ -24,7 +24,7 @@
 #include "p-col.hh"
 #include "molecule.hh"
 #include "debug.hh"
-#include "boxes.hh"
+#include "box.hh"
 #include "bezier.hh"
 #include "encompass-info.hh"
 #include "main.hh"
@@ -36,7 +36,7 @@ Slur::Slur ()
 }
 
 void
-Slur::add (Note_column*n)
+Slur::add_column (Note_column*n)
 {
   encompass_arr_.push (n);
   add_dependency (n);
@@ -71,13 +71,13 @@ Slur::do_pre_processing ()
 }
 
 void
-Slur::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Slur::do_substitute_dependency (Score_element*o, Score_element*n)
 {
   int i;
-  while ((i = encompass_arr_.find_i ((Note_column*)o->item ())) >=0) 
+  while ((i = encompass_arr_.find_i ((Note_column*)o->access_Item ())) >=0) 
     {
       if (n)
-       encompass_arr_[i] = (Note_column*)n->item ();
+       encompass_arr_[i] = (Note_column*)n->access_Item ();
       else
        encompass_arr_.del (i);
     }
@@ -239,11 +239,13 @@ Slur::get_encompass_offset_arr () const
 
   Array<Offset> notes;
   notes.push (Offset (0,0));
+//  notes.push (left);
 
   for (int i = first; i < last; i++)
     {
       Encompass_info info (encompass_arr_[i], dir_);
       notes.push (info.o_ - left);
+//      notes.push (info.o_ - left);
     }
   notes.push (d);
 
@@ -252,11 +254,13 @@ Slur::get_encompass_offset_arr () const
   int n = last - first + 2;
   Array<Offset> notes (n);
   notes[0] = Offset (0,0);
+//  notes[0] = left;
 
   for (int i = first; i < last; i++)
     {
       Encompass_info info (encompass_arr_[i], dir_);
       notes[i - first + 1] = info.o_ - left;
+//     notes[i - first + 1] = info.o_;
     }
   notes[n - 1] = Offset (d);
 
diff --git a/lily/span-bar-engraver.cc b/lily/span-bar-engraver.cc
new file mode 100644 (file)
index 0000000..6189827
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+  span-bar-grav.cc -- implement Span_bar_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "span-bar.hh"
+#include "span-bar-engraver.hh"
+#include "vertical-align-spanner.hh"
+
+Span_bar_engraver::Span_bar_engraver()
+{
+  spanbar_p_ =0;
+  valign_l_ =0;
+}
+
+Span_bar*
+Span_bar_engraver::get_span_bar_p() const
+{
+  return new Span_bar;
+}
+
+
+void
+Span_bar_engraver::do_creation_processing ()
+{
+}
+
+void
+Span_bar_engraver::do_removal_processing ()
+{
+}    
+
+void
+Span_bar_engraver::acknowledge_element (Score_element_info i)
+{
+  int depth = i.origin_grav_l_arr_.size();
+  if (depth > 1
+      && i.elem_l_->is_type_b (Bar::static_name())) 
+    {
+      bar_l_arr_.push ((Bar*)i.elem_l_->access_Item ());
+       
+      if (bar_l_arr_.size() >= 2 && !spanbar_p_) 
+       /*
+         hmm, i do want a bracket with one staff some times, but not always
+         if (bar_l_arr_.size() >= 1 && !spanbar_p_)
+
+         --jcn
+       */
+
+       /*
+
+         use a property?  get_property ("singleStaffBracket") ?
+
+         --hwn
+        */
+       {
+         spanbar_p_ = get_span_bar_p();
+         announce_element (Score_element_info (spanbar_p_,0));
+         spanbar_p_-> type_str_ = bar_l_arr_[0]->type_str_;
+       }
+    }
+  else if  (i.elem_l_->is_type_b (Vertical_align_spanner::static_name()) 
+           && i.origin_grav_l_arr_.size() <= 2) 
+    {
+      valign_l_ = (Vertical_align_spanner*)i.elem_l_->access_Spanner ();
+    }
+}
+
+void
+Span_bar_engraver::do_pre_move_processing()
+{
+  if (spanbar_p_) 
+    {
+      for (int i=0; i < bar_l_arr_.size() ; i++)
+       spanbar_p_->add_bar (bar_l_arr_[i]);
+      spanbar_p_->set_align (valign_l_);
+      typeset_element (spanbar_p_);
+      spanbar_p_ =0;
+    }
+  bar_l_arr_.set_size (0);
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Span_bar_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Span_bar_engraver);
diff --git a/lily/span-bar-grav.cc b/lily/span-bar-grav.cc
deleted file mode 100644 (file)
index bacdcb3..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-  span-bar-grav.cc -- implement Span_bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "span-bar.hh"
-#include "span-bar-grav.hh"
-#include "vertical-align-spanner.hh"
-
-Span_bar_engraver::Span_bar_engraver()
-{
-  spanbar_p_ =0;
-  valign_l_ =0;
-}
-
-Span_bar*
-Span_bar_engraver::get_span_bar_p() const
-{
-  return new Span_bar;
-}
-
-
-void
-Span_bar_engraver::do_creation_processing ()
-{
-}
-
-void
-Span_bar_engraver::do_removal_processing ()
-{
-}    
-
-void
-Span_bar_engraver::acknowledge_element (Score_elem_info i)
-{
-  int depth = i.origin_grav_l_arr_.size();
-  if (depth > 1
-      && i.elem_l_->is_type_b (Bar::static_name())) 
-    {
-      bar_l_arr_.push ((Bar*)i.elem_l_->item());
-       
-      if (bar_l_arr_.size() >= 2 && !spanbar_p_) 
-       {
-         spanbar_p_ = get_span_bar_p();
-         announce_element (Score_elem_info (spanbar_p_,0));
-         spanbar_p_-> type_str_ = bar_l_arr_[0]->type_str_;
-       }
-    }
-  else if  (i.elem_l_->is_type_b (Vertical_align_spanner::static_name()) 
-           && i.origin_grav_l_arr_.size() <= 2) 
-    {
-      valign_l_ = (Vertical_align_spanner*)i.elem_l_->spanner();
-    }
-}
-
-void
-Span_bar_engraver::do_pre_move_processing()
-{
-  if (spanbar_p_) 
-    {
-      for (int i=0; i < bar_l_arr_.size() ; i++)
-       spanbar_p_->add (bar_l_arr_[i]);
-      spanbar_p_->set (valign_l_);
-      typeset_element (spanbar_p_);
-      spanbar_p_ =0;
-    }
-  bar_l_arr_.set_size (0);
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Span_bar_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Span_bar_engraver);
index e89b05352fcc0c6a9d3e65b381b0a6838c473ee6..678853185bcefc3421471a8badb0cba269e3a727 100644 (file)
@@ -3,52 +3,60 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "dimen.hh"
+#include "dimension.hh"
 #include "span-bar.hh"
 #include "lookup.hh"
 #include "atom.hh"
 #include "paper-def.hh"
 #include "molecule.hh"
-#include "vertical-align-elem.hh"
+#include "align-element.hh"
 
 void
-Span_bar::add (Bar*b)
+Span_bar::add_bar (Bar*b)
 {
   spanning_l_arr_.push (b);
   add_dependency (b);
 }
 
-
-
 void
-Span_bar::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Span_bar::do_substitute_dependency (Score_element*o, Score_element*n)
 {
   spanning_l_arr_.unordered_substitute (o, n);
 }
 
-
 void
-Span_bar::set (Vertical_align_element *a)
+Span_bar::set_align (Align_element *a)
 {
   add_dependency (a);
 }
-  
 
 Interval
-Span_bar::do_width() const
+Span_bar::do_width () const
 {
-  return paper()->lookup_l ()->bar (type_str_, 40 PT).dim_.x (); // ugh
+  return lookup_l ()->bar (type_str_, 40 PT).dim_.x (); // ugh
 }
 
 void
-Span_bar::do_pre_processing()
+Span_bar::do_pre_processing ()
 {
   Bar::do_pre_processing ();
   
-  if (spanning_l_arr_.size() < 1) 
+  evaluate_empty ();
+}
+
+void
+Span_bar::do_post_processing ()
+{
+  Bar::do_post_processing ();
+}
+
+void
+Span_bar::evaluate_empty ()
+{ 
+  if (spanning_l_arr_.size () < 1) 
     {
       transparent_b_ = true;
       set_empty (true);   
@@ -66,40 +74,51 @@ Span_bar::do_pre_processing()
     {
       type_str_ = "|.";
     }
+  else if (type_str_ == ":|:")
+    {
+      type_str_ = ".|.";
+    }
 }
 
 Atom
 Span_bar::get_bar_sym (Real dy) const
 {
-  return paper()->lookup_l ()->bar (type_str_, dy);
+  if (dy < paper ()->staffheight_f () / 2)
+    return Atom ();
+  
+  return lookup_l ()->bar (type_str_, dy);
 }
 
-
 Molecule*
-Span_bar::brew_molecule_p() const
+Span_bar::brew_molecule_p () const
 {
   Interval y_int;
-  for (int i=0; i < spanning_l_arr_.size(); i++) 
+  for (int i=0; i < spanning_l_arr_.size (); i++) 
     {
-      Axis_group_element *common = 
+      Graphical_axis_group *common = 
        common_group (spanning_l_arr_[i], Y_AXIS);
        
       Real y = spanning_l_arr_[i]->relative_coordinate (common, Y_AXIS)  
        -relative_coordinate (common,Y_AXIS);
 
-      y_int.unite (y + spanning_l_arr_[i]->height());
+      y_int.unite (y + spanning_l_arr_[i]->height ());
     }
 
-  Atom s = get_bar_sym (y_int.length());
+  Atom s = get_bar_sym (y_int.length ());
   Molecule*output = new Molecule (Atom (s));
-  output->translate_axis (y_int.center(), Y_AXIS);
+  output->translate_axis (y_int.center (), Y_AXIS);
   return output;
 }
 
+IMPLEMENT_IS_TYPE_B1 (Span_bar,Bar);
 
-IMPLEMENT_IS_TYPE_B1(Span_bar,Bar);
-
-Span_bar::Span_bar()
+Span_bar::Span_bar ()
 {
   type_str_ = "";
 }
+
+Span_bar*
+Span_bar::access_Span_bar ()
+{
+  return this;
+}
diff --git a/lily/span-score-bar-engraver.cc b/lily/span-score-bar-engraver.cc
new file mode 100644 (file)
index 0000000..524d5b2
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+  span-score-bar-grav.cc -- implement Span_score_bar_engraver,
+  Piano_bar_engraver and Staff_group_bar_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "span-score-bar.hh"
+#include "piano-brace.hh"
+#include "staff-bracket.hh"
+#include "span-score-bar-engraver.hh"
+#include "paper-def.hh"
+
+
+Span_bar*
+Span_score_bar_engraver::get_span_bar_p () const
+{
+  Span_bar*s =  new Span_score_bar;
+  s->break_priority_i_ = -4;
+    
+  return s;
+}
+
+
+IMPLEMENT_IS_TYPE_B1 (Span_score_bar_engraver, Span_bar_engraver);
+IMPLEMENT_IS_TYPE_B1 (Piano_bar_engraver, Span_score_bar_engraver);
+IMPLEMENT_IS_TYPE_B1 (Staff_group_bar_engraver, Span_score_bar_engraver);
+
+Span_bar*
+Piano_bar_engraver::get_span_bar_p () const
+{
+  Span_bar *s= new Piano_brace;
+  s->break_priority_i_ = -4;
+  return s;
+}
+
+Span_bar*
+Staff_group_bar_engraver::get_span_bar_p () const
+{
+  Span_bar *s= new Staff_bracket;
+  s->break_priority_i_ = -4;
+  return s;
+}
+
+void
+Staff_group_bar_engraver::acknowledge_element (Score_element_info i)
+{
+  Span_bar_engraver::acknowledge_element (i);
+  if (i.elem_l_->is_type_b (Piano_brace::static_name ()))
+    {
+      Span_bar* b =  i.elem_l_->access_Span_bar ();
+      Piano_brace * piano_l = (Piano_brace*) b;
+      piano_l->extra_move_left_f_  = paper ()->interline_f (); // ugh
+    }
+}
+
+ADD_THIS_TRANSLATOR (Piano_bar_engraver);
+ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
+ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
+
diff --git a/lily/span-score-bar-grav.cc b/lily/span-score-bar-grav.cc
deleted file mode 100644 (file)
index 8497cdc..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-  span-score-bar-grav.cc -- implement Span_score_bar_engraver,
-  Piano_bar_engraver and Staff_group_bar_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "span-score-bar.hh"
-#include "span-score-bar-grav.hh"
-
-
-Span_bar*
-Span_score_bar_engraver::get_span_bar_p () const
-{
-  Span_bar*s =  new Span_score_bar;
-  s->break_priority_i_ = -4;
-    
-  return s;
-    
-}
-
-
-IMPLEMENT_IS_TYPE_B1 (Span_score_bar_engraver, Span_bar_engraver);
-IMPLEMENT_IS_TYPE_B1 (Piano_bar_engraver, Span_score_bar_engraver);
-IMPLEMENT_IS_TYPE_B1 (Staff_group_bar_engraver, Span_score_bar_engraver);
-
-Span_bar*
-Piano_bar_engraver::get_span_bar_p () const
-{
-  Span_bar *s= new Piano_brace;
-  s->break_priority_i_ = -4;
-  return s;
-}
-
-Span_bar*
-Staff_group_bar_engraver::get_span_bar_p () const
-{
-  Span_bar *s= new Staff_bracket;
-  s->break_priority_i_ = -4;
-  return s;
-}
-
-void
-Staff_group_bar_engraver::acknowledge_element (Score_elem_info f)
-{
-  Span_bar_engraver::acknowledge_element (f);
-  if (f.elem_l_->is_type_b (Piano_brace::static_name ()))
-    {
-      // Piano_brace * brace = (Piano_brace*) f.elem_l_->item ()->bar ();
-      // do something.
-    }
-  
-}
-ADD_THIS_TRANSLATOR (Piano_bar_engraver);
-ADD_THIS_TRANSLATOR (Staff_group_bar_engraver);
-ADD_THIS_TRANSLATOR (Span_score_bar_engraver);
-
index 0849f15c609b1c3dfb09db00c45659661f3022b6..6952062a67291eb7cbcbf99fb24db21e18d26b2e 100644 (file)
@@ -3,13 +3,14 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "span-score-bar.hh"
 #include "atom.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
+#include "main.hh"
 
 Span_score_bar::Span_score_bar()
 {
@@ -19,7 +20,7 @@ void
 Score_bar::do_pre_processing ()
 {
   type_str_ = "|";
-  if (break_status_i() != 1
+  if (break_status_dir() != RIGHT
     {
       set_empty (true);
       transparent_b_ = true;
@@ -36,35 +37,6 @@ Span_score_bar::do_pre_processing()
   //  Span_bar::do_pre_processing();
 }
 
-Atom
-Piano_brace::get_bar_sym (Real dy) const
-{
-  return paper()->lookup_l ()->vbrace (dy);
-}
-
-Interval
-Piano_brace::do_width() const
-{
-  return Interval (0,0);
-}
-
-Atom
-Staff_bracket::get_bar_sym (Real dy) const
-{
-  Atom a = paper()->lookup_l ()->vbracket (dy);
-  a.translate_axis (- 1.5 * a.extent ().x ().length (), X_AXIS);
-  return a;
-}
-
-Interval
-Staff_bracket::do_width() const
-{
-  return Interval (0,0);
-}
-
-
 IMPLEMENT_IS_TYPE_B2(Span_score_bar, Span_bar, Score_bar);
-IMPLEMENT_IS_TYPE_B1(Piano_brace, Span_score_bar);
-IMPLEMENT_IS_TYPE_B1(Staff_bracket, Span_score_bar);
 
   
index 839cf0d9b47c3111a9000c49488b88a4910cfaef..bc128bef424c9697f8fa85fe4a57a9f31380ca19 100644 (file)
@@ -3,24 +3,30 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "debug.hh"
 #include "spanner.hh"
 #include "p-col.hh"
 #include "p-score.hh"
-#include "outputter.hh"
+#include "tex-outputter.hh"
+#include "molecule.hh"
 
-IMPLEMENT_IS_TYPE_B1(Spanner,Score_elem);
+IMPLEMENT_IS_TYPE_B1(Spanner,Score_element);
 
 void
 Spanner::do_print() const
 {
 #ifndef NPRINT
-  DOUT << "Between col ";
+  DOUT << "Between " << spanned_drul_[LEFT]->name ()
+       << " and " << spanned_drul_[RIGHT]->name() << '\n';
   if (broken_into_l_arr_.size())
-    DOUT << "with broken pieces\n";
+    {
+      DOUT << "with broken pieces:\n";
+      for (int i=0; i < broken_into_l_arr_.size (); i++)
+       broken_into_l_arr_[i]->print ();
+    }  
 #endif
 }
 
@@ -33,6 +39,11 @@ Spanner::break_into_pieces ()
   Item * left = spanned_drul_[LEFT];
   Item * right = spanned_drul_[RIGHT];
   
+  if  (left == right)
+    {
+      warning (_ ("left spanpoint is right spanpoint\n"));
+      return;
+    }
   
   Link_array<Item> break_cols = pscore_l_->broken_col_range (left,right);
   Link_array<Spanner> broken_into_l_arr;
@@ -42,7 +53,7 @@ Spanner::break_into_pieces ()
 
   for (int i=1; i < break_cols.size(); i++) 
     {
-      Spanner* span_p = clone()->spanner ();
+      Spanner* span_p = clone()->access_Spanner ();
       left = break_cols[i-1];
       right = break_cols[i];
       if (!right->line_l())
@@ -50,7 +61,7 @@ Spanner::break_into_pieces ()
       if (!left->line_l())
        left = left->find_prebroken_piece(RIGHT);
 
-            assert (left&&right && left->line_l() == right->line_l());
+      assert (left&&right && left->line_l() == right->line_l());
 
       span_p->set_bounds(LEFT,left);
       span_p->set_bounds(RIGHT,right);
@@ -87,7 +98,7 @@ Spanner::set_bounds(Direction d, Item*i)
 
   if  (spanned_drul_[Direction(-d)] == spanned_drul_[d]
        && i)
-    warning ("Spanner (" + String (name ()) + ") with equal left and right spanpoints.");
+    warning (_f ("Spanner `%s\' with equal left and right spanpoints", name ()));
 }
 
 void
@@ -105,8 +116,13 @@ Spanner::do_break_processing()
     }
 }
 
+Spanner* 
+Spanner::access_Spanner ()
+{
+  return this;
+}
 
-Spanner::Spanner()
+Spanner::Spanner ()
 {
   spanned_drul_[LEFT]=0;
   spanned_drul_[RIGHT]=0;
@@ -120,7 +136,8 @@ Spanner::do_brew_molecule ()
   Molecule *output= brew_molecule_p ();
   Offset left_off (spanned_drul_[LEFT]->absolute_coordinate(X_AXIS), 0);
   Offset o = absolute_offset() + left_off;
-  pscore_l_->outputter_l_->output_molecule (output, o);
+  pscore_l_->outputter_l_->output_molecule (output, o, name ());
+  delete output;
 }
 
 Interval
index 2ce41ae76c06b65e9b14f8cacd1215aed56367e3..22ed79da20aa9759e780a231965a0f59fd407881 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996,  1997--1998, 1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996,  1997--1998, 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -18,9 +18,8 @@
 #include "pointer.tcc"
 #include "score-column.hh"
 #include "paper-def.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "colhpos.hh"
-#include "main.hh"             // experimental_fietsers
 
 Vector
 Spring_spacer::default_solution() const
@@ -80,7 +79,7 @@ Spring_spacer::handle_loose_cols()
     {
       if (! connected.equiv (fixed[0], i))
        {
-         warning (_("unconnected column: ") + String (i));
+         warning (_f ("unconnected column: %d", i));
          loosen_column (i);
        }
     }
@@ -133,7 +132,7 @@ Spring_spacer::position_loose_cols (Vector &sol_vec) const
          int right_rank = (j<sol_vec.dim()) ? cols_[j].rank_i_ : sol_vec.dim ();
 
          int d_r = right_rank - left_rank;
-         Colinfo loose=loose_col_arr_[k++];
+         Column_info loose=loose_col_arr_[k++];
          int r = loose.rank_i_ ;
          assert (r > left_rank && r < right_rank);
 
@@ -165,9 +164,9 @@ Spring_spacer::check_constraints (Vector v) const
          Real diff =v (other) - v (i) ;
          if (COLFUDGE +diff <  rods[j].distance_f_)
            {
-             DOUT << "i, other_i: " << i << "  " << other << "\n";
-             DOUT << "dist, minimal = " << diff <<" "
-                  << rods[j].distance_f_<<'\n';
+             DOUT << "i, other_i: " << i << "  " << other << '\n';
+             DOUT << "dist, minimal = " << diff << " "
+                  << rods[j].distance_f_ << '\n';
              return false;
            }
        }
@@ -184,7 +183,7 @@ Spring_spacer::try_initial_solution() const
   Vector v;
   if (!try_initial_solution_and_tell (v))
     {
-      warning ("I'm too fat; call Oprah");
+      warning (_ ("I'm too fat; call Oprah"));
     }
   return v;
 
@@ -214,7 +213,7 @@ Spring_spacer::try_initial_solution_and_tell (Vector &v) const
          initsol (i)=cols_[i].fixed_position();
          if (initsol (i) < min_x )
            {
-             DOUT << "failing: init, min : " << initsol (i) << " " << min_x << "\n";
+             DOUT << "failing: init, min : " << initsol (i) << " " << min_x << '\n';
              initsol (i) = min_x;
              succeeded = false;
            }
@@ -253,7 +252,7 @@ Spring_spacer::make_matrices (Matrix &quad, Vector &lin, Real &c) const
 
       c += sqr (i->space_f_);
     }
-  // experimental
+
   if (quad.dim() > 10)
     quad.set_band();
   
@@ -301,7 +300,7 @@ Spring_spacer::calculate_energy_f (Vector solution) const
   return e;
 }
 void
-Spring_spacer::lower_bound_solution (Col_hpositions*positions) const
+Spring_spacer::lower_bound_solution (Column_x_positions*positions) const
 {
   Mixed_qp lp (cols_.size());
   make_matrices (lp.quad_,lp.lin_, lp.const_term_);
@@ -323,7 +322,7 @@ Spring_spacer::Spring_spacer ()
 }
 
 void
-Spring_spacer::solve (Col_hpositions*positions) const
+Spring_spacer::solve (Column_x_positions*positions) const
 {
 
   DOUT << "Spring_spacer::solve ()...";
@@ -342,7 +341,7 @@ Spring_spacer::solve (Col_hpositions*positions) const
       positions->satisfies_constraints_b_ = check_constraints (solution_vec);
       if (!positions->satisfies_constraints_b_)
        {
-         WARN << _("solution doesn't satisfy constraints.\n") ;
+         WARN << _ ("solution doesn't satisfy constraints") << '\n' ;
        }
       position_loose_cols (solution_vec);
       positions->energy_f_ = calculate_energy_f (solution_vec);
@@ -362,7 +361,7 @@ Spring_spacer::solve (Col_hpositions*positions) const
 void
 Spring_spacer::add_column (Paper_column  *col, bool fixed, Real fixpos)
 {
-  Colinfo c (col,(fixed)? &fixpos :  0);
+  Column_info c (col,(fixed)? &fixpos :  0);
   int this_rank =  cols_.size();
   c.rank_i_ = this_rank;
   
@@ -407,7 +406,7 @@ Spring_spacer::error_pcol_l_arr() const
 void
 Spring_spacer::loosen_column (int i)
 {
-  Colinfo c=cols_.get (i);
+  Column_info c=cols_.get (i);
   for (PCursor<Idealspacing*> j (ideal_p_list_.top()); j.ok (); j++)
     {
       if (j->left_i_ == i|| j->right_i_ == i)
@@ -433,7 +432,7 @@ Spring_spacer::print() const
 #ifndef NPRINT
   for (int i=0; i < cols_.size(); i++)
     {
-      DOUT << "col " << i<<' ';
+      DOUT << "col " << i << " ";
       cols_[i].print();
     }
   for (PCursor<Idealspacing*> i (ideal_p_list_.top()); i.ok (); i++)
@@ -549,9 +548,13 @@ Spring_spacer::get_ruling_durations(Array<Moment> &shortest_playing_arr,
 /**
   generate springs between columns.
 
-  TODO: This needs rethinking.  Spacing should take optical
+  TODO: This needs rethinking.
+
+  *  Spacing should take optical
   effects into account
 
+  *  Should be decentralised
+  
   The algorithm is taken from :
 
   John S. Gourlay. ``Spacing a Line of Music,'' Technical Report
@@ -589,12 +592,15 @@ Spring_spacer::calc_idealspacing()
          
          Moment delta_t =  scol_l (i+1)->when() - scol_l (i)->when () ;
 
-         Real k=  paper_l()->arithmetic_constant (context_shortest_arr[i]);
+
          /*
            ugh should use shortest_playing distance
          */
          if (delta_t)
-           durational_distance =  paper_l()->duration_to_dist (delta_t,k);
+           {
+             Real k=  paper_l()->arithmetic_constant (context_shortest_arr[i]);
+             durational_distance =  paper_l()->duration_to_dist (delta_t,k);
+           }
          symbol_distance += -cols_[i+1].width_[LEFT];
  
 
@@ -614,14 +620,14 @@ Spring_spacer::calc_idealspacing()
          Moment context_shortest = context_shortest_arr[i];
          if (! shortest_playing_len)
            {
-             warning (_("Can't find a ruling note at ")
-                      +scol_l (i)->when().str ());
+             warning (_f ("can't find a ruling note at %s", 
+               scol_l (i)->when().str ()));
              shortest_playing_len = 1;
            }
          if (! context_shortest)
            {
-             warning(_("No minimum in measure at ")
-                     + scol_l (i)->when().str ());
+             warning (_f ("no minimum in measure at %s", 
+                     scol_l (i)->when().str ()));
              context_shortest = 1;
            }
          Moment delta_t = scol_l (i+1)->when() - scol_l (i)->when ();
@@ -661,7 +667,7 @@ Spring_spacer::calc_idealspacing()
              // fixed: probably should set minimum (rod/spring)?
              cols_[i-1].width_[RIGHT] += interline_f;
              // should adjust dist too?
-             ideal_arr_[i-1] = ideal_arr_[i-1] >? interline_f;
+             ideal_arr_[i-1] = ideal_arr_[i-1] >? (2 * interline_f);
            }
 
          /* 
diff --git a/lily/staff-bracket.cc b/lily/staff-bracket.cc
new file mode 100644 (file)
index 0000000..b431eed
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+  span-score-bar.cc -- implement Span_score_bar
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "staff-bracket.hh"
+#include "atom.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
+#include "main.hh"
+
+Atom
+Staff_bracket::get_bar_sym (Real dy) const
+{
+  Atom a = lookup_l ()->vbracket (dy);
+
+  a.translate_axis (- 1.33 * a.extent ().x ().length (), X_AXIS);
+  return a;
+}
+
+Interval
+Staff_bracket::do_width() const
+{
+  return Interval (0,0);
+}
+
+
+void
+Staff_bracket::do_post_processing ()
+{
+  Span_score_bar::do_post_processing();
+  Interval i = Span_score_bar::do_height ();
+  // don't set bracket that spans less than one staff
+  Real staffheight_f = paper ()->staffheight_f ();
+  if (i.length () < 0.5 * staffheight_f)
+    {
+      transparent_b_ = true;
+      set_empty (true);
+    }
+}
+
+IMPLEMENT_IS_TYPE_B1(Staff_bracket, Span_score_bar);
+
+  
index 1dbbd8407aacd524233a0714076f10f475a05486..43140d7dcc3c06fd0baee5da4b82f90530465373 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
@@ -20,10 +20,8 @@ Staff_info::score_l()
 Staff_info::Staff_info()
 {
   score_l_ =0;
-  c0_position_i_l_ = 0;
   time_C_ = 0;
   rhythmic_C_ =0;
-  break_allowed_b_ = 0;
 }
 
 Score_column*
index 8bc8a049f9a718f7adf3df0e5352f214a5cbdd2f..e2786de70df6ef8888957e5f3715e669952bf27b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
  */
 
 #include "staff-performer.hh"
@@ -77,7 +77,9 @@ String
 Staff_performer::new_instrument_str () 
 { 
   // mustn't ask Score for instrument: it will return piano!
-  String str = get_property ("instrument");
+  String str = get_property ("midi_instrument");
+  if (!str.length_i ())
+    str = get_property ("instrument");
   if (str == instrument_str_)
     return "";
 
@@ -85,7 +87,7 @@ Staff_performer::new_instrument_str ()
 
   return instrument_str_;
 
-/* ugh, but can't
+/* ugh, but can 't
   if (properties_dict_.elt_b ("instrument"))
     return properties_dict_["instrument"];
   return "";
@@ -97,7 +99,7 @@ Staff_performer::play (Audio_element* p)
 {
   if (p->is_type_b (Audio_item::static_name ())) 
     {
-      audio_staff_p_->add ( (Audio_item*)p);
+      audio_staff_p_->add_audio_item ( (Audio_item*)p);
     }
   Performer::play (p);
 }
index 7b99d06f998516627239d984f1fc5a4bc67f3a16..ec82d64aad7ed9b4c91f600f46c0afeaf087c34e 100644 (file)
@@ -3,12 +3,12 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "interval.hh"
 #include "paper-def.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "staff-side.hh"
 #include "staff-sym.hh"
 #include "debug.hh"
 
 Staff_side::Staff_side()
 {
-  y_=0;
+  coordinate_offset_f_=0;
   sym_int_ = Interval (0,0);
+  padding_f_ = 0.0;
   dir_ = CENTER;
+  axis_ = Y_AXIS;
 }
 
 
 Interval
-Staff_side::support_height() const
+Staff_side::support_extent() const
 {
   Interval y_int;
   for (int i=0; i < support_l_arr_.size(); i++) 
     {
-      Axis_group_element *common = 
-       common_group (support_l_arr_[i], Y_AXIS);
+    Graphical_axis_group *common = 
+       common_group (support_l_arr_[i], axis_);
        
-      Real y = support_l_arr_[i]->relative_coordinate (common, Y_AXIS)  
-       -relative_coordinate (common,Y_AXIS);
+      Real y = support_l_arr_[i]->relative_coordinate (common, axis_)  
+       -relative_coordinate (common,axis_);
 
-      y_int.unite (y + support_l_arr_[i]->height());
+      y_int.unite (y + support_l_arr_[i]->extent(axis_));
     }
 
-
   if (y_int.empty_b())
     {
       y_int = Interval (0,0);
     }
-  return y_int;
+  return Interval(y_int[LEFT] - padding_f_, y_int[RIGHT] + padding_f_);
 }
 
 void
-Staff_side::add_support (Score_elem*i)
+Staff_side::add_support (Score_element*i)
 {
   support_l_arr_.push (i);
   add_dependency (i);
@@ -57,8 +58,8 @@ Staff_side::get_position_f () const
 {
   if (!dir_)
     {
-      warning (_("Staff_side::get_position_f(): "
-                "somebody forgot to set my vertical direction, returning -20"));
+      warning (_ ("Staff_side::get_position_f(): "
+                "somebody forgot to set my direction, returning -20"));
       return -20;
     }
 
@@ -66,16 +67,16 @@ Staff_side::get_position_f () const
   Real y = 0;
   Real inter_f = paper()-> internote_f ();
 
-  Interval v = support_height();
+  Interval v = support_extent();
 
   // ugh, dim[y] = PT over here
   y = v[dir_] + 1 * dir_ * inter_f;
 
-  int y_i = (int)rint (y / inter_f);
+  int coordinate_offset_f_i = (int)rint (y / inter_f);
   // ugh: 5 -> staff_lines
-  if (abs (y_i) < 5)
+  if (axis_ == Y_AXIS && abs (coordinate_offset_f_i) < 5)
     {
-      if (!(abs (y_i) % 2))
+      if (!(abs (coordinate_offset_f_i) % 2))
        y += (Real)dir_ * inter_f;
     }
 //  else
@@ -90,20 +91,54 @@ Staff_side::symbol_height() const
   return Interval (0,0);
 }
 
+Interval
+Staff_side::symbol_width () const
+{
+  return Interval (0,0);
+}
+
 void
-Staff_side::do_post_processing()
+Staff_side::do_pre_processing ()
+{
+  if (axis_== X_AXIS)
+    do_side_processing ();
+}
+
+void
+Staff_side::do_side_processing ()
 {
-  sym_int_ = symbol_height();
-  y_ = get_position_f();
+  sym_int_ = symbol_extent();
+  coordinate_offset_f_ = get_position_f();
   if (dir_)
-    y_ += - sym_int_[-dir_];
+    coordinate_offset_f_ += - sym_int_[-dir_];
+
+}
+
+/*
+  ugh should use do_width (), do_height (), get_extent ()
+ */
+Interval
+Staff_side::symbol_extent () const
+{
+  if (axis_ == Y_AXIS)
+    return symbol_height ();
+  else
+    return symbol_width ();
+}
+
+
+void
+Staff_side::do_post_processing()
+{
+  if (axis_ == Y_AXIS)
+    do_side_processing ();
 }
 
 void
-Staff_side::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Staff_side::do_substitute_dependency (Score_element*o, Score_element*n)
 {
   support_l_arr_.unordered_substitute (o,n);
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Staff_side, Score_elem);
+IMPLEMENT_IS_TYPE_B1(Staff_side, Score_element);
diff --git a/lily/staff-sym-engraver.cc b/lily/staff-sym-engraver.cc
new file mode 100644 (file)
index 0000000..37bb31c
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+  staff-sym-reg.cc -- implement Staff_sym_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "staff-sym-engraver.hh"
+#include "staff-sym.hh"
+#include "score.hh"
+#include "p-col.hh"
+
+
+void
+Staff_sym_engraver::fill_staff_info (Staff_info&i)
+{
+  i.staff_sym_l_ = span_p_;
+}
+
+Staff_sym_engraver::~Staff_sym_engraver()
+{
+  assert (!span_p_);
+}
+
+Staff_sym_engraver::Staff_sym_engraver()
+{
+   span_p_ = 0;
+}
+
+void
+Staff_sym_engraver::do_creation_processing()
+{
+  span_p_ = new Staff_symbol;
+  span_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
+  announce_element (Score_element_info (span_p_, 0));
+}
+
+void
+Staff_sym_engraver::do_removal_processing()
+{
+  Scalar l (get_property ("nolines"));
+  if (l.isnum_b ())
+    {
+      span_p_->no_lines_i_ = l;
+    }
+
+  span_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
+  typeset_element (span_p_);
+  span_p_ =0;
+}
+
+
+
+IMPLEMENT_IS_TYPE_B1(Staff_sym_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Staff_sym_engraver);
diff --git a/lily/staff-sym-grav.cc b/lily/staff-sym-grav.cc
deleted file mode 100644 (file)
index 2e09bb5..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-  staff-sym-reg.cc -- implement Staff_sym_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "staff-sym-grav.hh"
-#include "staff-sym.hh"
-#include "score.hh"
-#include "p-col.hh"
-
-
-void
-Staff_sym_engraver::fill_staff_info (Staff_info&i)
-{
-  i.staff_sym_l_ = span_p_;
-}
-
-Staff_sym_engraver::~Staff_sym_engraver()
-{
-  assert (!span_p_);
-}
-
-Staff_sym_engraver::Staff_sym_engraver()
-{
-   span_p_ = 0;
-}
-
-void
-Staff_sym_engraver::do_creation_processing()
-{
-  span_p_ = new Staff_symbol;
-  span_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
-  announce_element (Score_elem_info (span_p_, 0));
-}
-
-void
-Staff_sym_engraver::do_removal_processing()
-{
-  Scalar l (get_property ("nolines"));
-  if (l.isnum_b ())
-    {
-      span_p_->no_lines_i_ = l;
-    }
-
-  span_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
-  typeset_element (span_p_);
-  span_p_ =0;
-}
-
-
-
-IMPLEMENT_IS_TYPE_B1(Staff_sym_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Staff_sym_engraver);
index d4b5f35eafcd64b0b6699c037ca86c48d000056c..d329e821857dd91c75c02007271450d06b95042c 100644 (file)
@@ -3,14 +3,15 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #include "staff-sym.hh"
 #include "lookup.hh"
 #include "paper-def.hh"
 #include "molecule.hh"
 #include "debug.hh"
-#include "dimen.hh"
+#include "dimension.hh"
+#include "item.hh"
 
 
 Staff_symbol::Staff_symbol ()
@@ -42,18 +43,25 @@ Staff_symbol::do_height() const
 Molecule*
 Staff_symbol::brew_molecule_p() const
 {
+  Real w = width ().length ();
+  Real left_dx = -spanned_drul_[LEFT]->extent (X_AXIS)[LEFT];
+  Real right_dx = spanned_drul_[RIGHT]->extent (X_AXIS)[RIGHT];
+  //  w += right_dx+ left_dx;
+
+  
   Paper_def * p = paper();
-  Atom rule  = p->lookup_l ()->rule_symbol (p->get_var ("rulethickness"), 
-                                           width ().length ());
+  Atom rule  = lookup_l ()->rule_symbol (p->get_var ("rulethickness"),
+                                        w);
   Real height = (no_lines_i_-1) * inter_note_f();
   Molecule * m = new Molecule;
   for (int i=0; i < no_lines_i_; i++)
     {
       Atom a (rule);
       a.translate_axis (height - i * inter_note_f()*2, Y_AXIS);
-      m->add (a);
+      m->add_molecule (a);
     }
 
+  //  m->translate_axis (-left_dx, X_AXIS);
   return m;
 }
 
diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc
new file mode 100644 (file)
index 0000000..8fa6d56
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+  stem-grav.cc -- implement Stem_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "stem-engraver.hh"
+#include "note-head.hh"
+#include "stem.hh"
+#include "musical-request.hh"
+#include "duration-convert.hh"
+#include "misc.hh"
+#include "abbrev.hh"
+
+Stem_engraver::Stem_engraver()
+{
+  abbrev_req_l_ = 0;
+  stem_p_ = 0;
+  abbrev_p_ = 0;
+  default_abbrev_i_ = 16;
+  dir_ = CENTER;
+}
+
+void
+Stem_engraver::do_creation_processing ()
+{
+  Scalar prop = get_property ("abbrev");
+  if (prop.isnum_b ()) 
+    {
+      default_abbrev_i_  = prop;
+    }
+}
+
+void
+Stem_engraver::acknowledge_element(Score_element_info i)
+{
+  if (i.elem_l_->is_type_b (Rhythmic_head::static_name()))
+    {
+      Rhythmic_head *h  = (Rhythmic_head*) i.elem_l_->access_Item ();
+      if (!stem_p_) 
+       {
+         Rhythmic_req * r = i.req_l_->access_Musical_req ()->access_Rhythmic_req ();
+         stem_p_ = new Stem;
+         int durlog_i = r->duration_.durlog_i_;
+         stem_p_->flag_i_ = durlog_i;
+
+         
+         if (abbrev_req_l_)
+           {
+             /*
+               suggests typing of:
+                  c8:16 c: c: c:
+               hmm, which isn't so bad?
+             */
+             int t = abbrev_req_l_->type_i_;
+             if (!t)
+               t = default_abbrev_i_;
+             else
+               default_abbrev_i_ = t;
+
+             if (t)
+               {
+                 abbrev_p_ = new Abbreviation;
+                 announce_element (Score_element_info (abbrev_p_, abbrev_req_l_));
+                 abbrev_p_->abbrev_flags_i_ =intlog2 (t) - (durlog_i>? 2);
+               }
+           }
+
+         // must give the request, to preserve the rhythmic info.
+         announce_element (Score_element_info (stem_p_, r));
+       }
+      stem_p_->add_head (h);
+    }
+}
+
+void
+Stem_engraver::do_pre_move_processing()
+{
+  if (abbrev_p_)
+    {
+      abbrev_p_->set_stem (stem_p_);
+      typeset_element (abbrev_p_);
+      abbrev_p_ = 0;
+    }
+  if (stem_p_)
+    {
+      Scalar prop = get_property ("ydirection");
+      dir_ = prop.isnum_b () ? (Direction)int(prop) : CENTER;
+      if (dir_)
+       {
+         stem_p_->dir_ = dir_;
+         stem_p_->dir_forced_b_ = true;
+       }
+
+      typeset_element(stem_p_);
+      stem_p_ = 0;
+    }
+  abbrev_req_l_ = 0;
+}
+
+bool
+Stem_engraver::do_try_request (Request* r)
+{
+  Musical_req* mus_l = r->access_Musical_req ();
+  if (!mus_l)
+    return false;
+  
+  Abbreviation_req* a = mus_l->access_Abbreviation_req ();
+  if (!a)
+    return false;
+
+  abbrev_req_l_ = a;
+
+  return true;
+}
+
+IMPLEMENT_IS_TYPE_B1(Stem_engraver, Engraver);
+ADD_THIS_TRANSLATOR(Stem_engraver);
diff --git a/lily/stem-grav.cc b/lily/stem-grav.cc
deleted file mode 100644 (file)
index 01ba63e..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-  stem-grav.cc -- implement Stem_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "stem-grav.hh"
-#include "note-head.hh"
-#include "stem.hh"
-#include "musical-request.hh"
-#include "duration-convert.hh"
-#include "misc.hh"
-#include "abbrev.hh"
-
-Stem_engraver::Stem_engraver()
-{
-  abbrev_req_l_ = 0;
-  stem_p_ = 0;
-  abbrev_p_ = 0;
-  default_abbrev_i_ = 16;
-  dir_ = CENTER;
-}
-
-void
-Stem_engraver::do_creation_processing ()
-{
-  Scalar prop = get_property ("abbrev");
-  if (prop.isnum_b ()) 
-    {
-      default_abbrev_i_  = prop;
-    }
-}
-
-void
-Stem_engraver::acknowledge_element(Score_elem_info i)
-{
-  if (i.elem_l_->is_type_b (Rhythmic_head::static_name()))
-    {
-      Rhythmic_head *h  = (Rhythmic_head*) i.elem_l_->item();
-      if (!stem_p_) 
-       {
-         Rhythmic_req * r = i.req_l_->musical()->rhythmic();
-         stem_p_ = new Stem;
-         int durlog_i = r->duration_.durlog_i_;
-         stem_p_->flag_i_ = durlog_i;
-
-         
-         if (abbrev_req_l_)
-           {
-             int t = abbrev_req_l_->type_i_;
-             if (!t)
-               t = default_abbrev_i_;
-             else
-               default_abbrev_i_ = t;
-
-             abbrev_p_ = new Abbreviation;
-             announce_element (Score_elem_info (abbrev_p_, abbrev_req_l_));
-             abbrev_p_->abbrev_flags_i_ =intlog2 (t) - (durlog_i>? 2);
-           }
-         announce_element (Score_elem_info (stem_p_, r));
-       }
-      stem_p_->add (h);
-    }
-}
-
-void
-Stem_engraver::do_pre_move_processing()
-{
-  if (abbrev_p_)
-    {
-      abbrev_p_->set_stem (stem_p_);
-      typeset_element (abbrev_p_);
-      abbrev_p_ = 0;
-    }
-  if (stem_p_)
-    {
-      Scalar prop = get_property ("ydirection");
-      dir_ = prop.isnum_b () ? (Direction)int(prop) : CENTER;
-      if (dir_)
-       {
-         stem_p_->dir_ = dir_;
-         stem_p_->dir_forced_b_ = true;
-       }
-
-      typeset_element(stem_p_);
-      stem_p_ = 0;
-    }
-  abbrev_req_l_ = 0;
-}
-
-bool
-Stem_engraver::do_try_request (Request* r)
-{
-  Musical_req* mus_l = r->musical ();
-  if (!mus_l)
-    return false;
-  
-  Abbreviation_req* a = mus_l->abbrev ();
-  if (!a)
-    return false;
-
-  abbrev_req_l_ = a;
-
-  return true;
-}
-
-IMPLEMENT_IS_TYPE_B1(Stem_engraver, Engraver);
-ADD_THIS_TRANSLATOR(Stem_engraver);
index 4251d294f9babd36f79214fc9c422e190466dd90..535cc6f7d771bbbf7a526fa20a68c80cdd6f65d0 100644 (file)
@@ -3,12 +3,12 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 */
 
 #include "proto.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "misc.hh"
 #include "debug.hh"
 #include "atom.hh"
@@ -68,6 +68,7 @@ Stem_info::Stem_info (Stem const *s)
   Real min_stem2_f = s->paper ()->get_var ("beam_minimum_stem2");
   Real ideal_stem1_f = s->paper ()->get_var ("beam_ideal_stem1");
   Real ideal_stem2_f = s->paper ()->get_var ("beam_ideal_stem2");
+  Real shorten_f = s->paper ()->get_var ("forced_stem_shorten");
 
   if (!beam_dir_ || (beam_dir_ == dir_))
     {
@@ -86,6 +87,10 @@ Stem_info::Stem_info (Stem const *s)
          miny_f_ += min_stem2_f;
        }
 
+      // stems in unnatural (forced) direction are shortened
+      if (s->dir_ != s->get_default_dir ())
+       idealy_f_ -= shorten_f;
+
       // lowest beam of (UP) beam must never be lower than second staffline
       miny_f_ = miny_f_ >? (- 2 * internote_f - beam_f
        + (mult_i_ > 0) * beam_f + interbeam_f * (mult_i_ - 1));
index d87ae71b929930d7bd85cd700dc365736cf379a2..454f6d7f7a1e63b8f33f7f3712c1ec5c12023131 100644 (file)
@@ -3,13 +3,13 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   TODO: This is way too hairy
 */
 
 #include "stem.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "debug.hh"
 #include "paper-def.hh"
 #include "note-head.hh"
 #include "beam.hh"
 #include "rest.hh"
 
-const int STEMLEN = 7;
-
 IMPLEMENT_IS_TYPE_B1 (Stem,Item);
 
+
+Stem::~Stem ()
+{
+}
 Stem::Stem ()
 {
   /*
@@ -62,7 +64,7 @@ void
 Stem::do_print () const
 {
 #ifndef NPRINT
-  DOUT << "flag "<< flag_i_ ;
+  DOUT << "flag "<< flag_i_;
   if (beam_l_)
     DOUT << "beamed";
 #endif
@@ -97,7 +99,7 @@ Stem::set_stemend (Real se)
 {
   // todo: margins
   if (dir_ && dir_ * head_positions()[dir_] >= se*dir_)
-    warning (_("Weird stem size; check for narrow beams"));
+    warning (_ ("weird stem size; check for narrow beams"));
 
   
   yextent_drul_[dir_]  =  se;
@@ -111,7 +113,7 @@ Stem::type_i () const
 }
 
 void
-Stem::add (Rhythmic_head *n)
+Stem::add_head (Rhythmic_head *n)
 {
   n->add_dependency (this);    // ?
   if (n->is_type_b (Note_head::static_name ()))
@@ -132,7 +134,7 @@ Stem::invisible_b () const
 }
 
 int
-Stem::get_center_distance (Direction d)
+Stem::get_center_distance (Direction d) const
 {
   int staff_center = 0;
   int distance = d*(head_positions()[d] - staff_center);
@@ -140,7 +142,7 @@ Stem::get_center_distance (Direction d)
 }
 
 Direction
-Stem::get_default_dir ()
+Stem::get_default_dir () const
 {
   return (get_center_distance (UP) >
          get_center_distance (DOWN)) 
@@ -149,7 +151,7 @@ Stem::get_default_dir ()
 }
 
 Direction
-Stem::get_dir ()
+Stem::get_dir () const
 {
   return dir_;
 }
@@ -163,18 +165,27 @@ Stem::set_default_dir ()
 void
 Stem::set_default_stemlen ()
 {
-  Real len = STEMLEN;
-  Real dy = paper ()->interbeam_f (mult_i_);
+  /*
+   TODO
+   urg; this should be handled by Stem_info
+   */
+
+  Real length_f = paper ()->get_var ("stem_length");
+  Real shorten_f = paper ()->get_var ("forced_stem_shorten");
 
+  Real internote_f = paper ()->internote_f ();
+  length_f /= internote_f;
+  shorten_f /= internote_f;
+
+  Real len = length_f;
   if (!dir_)
     set_default_dir ();
-
-  /* If the stem points in the "wrong" direction, it should be
-     shortened, according to [Roush & Gourlay].  Their suggestion to knock off
-     a whole staffspace is a bit drastical though.
-     */
+  /* 
+    stems in unnatural (forced) direction should be shortened, 
+    accoding to [Roush & Gourlay]
+   */
   else if (dir_ != get_default_dir ())
-    len  -= 1.0;
+    len -= shorten_f / internote_f;
 
   if (flag_i_ >= 5)
     len += 2.0;
@@ -184,13 +195,12 @@ Stem::set_default_stemlen ()
   set_stemend ((dir_ > 0) ? head_positions()[BIGGER] + len :
               head_positions()[SMALLER] - len);
 
-
   if (dir_ * stem_end_f () < 0)
     {
       set_stemend (0);
     }
 }
-
+//xxx
 void
 Stem::set_default_extents ()
 {
@@ -259,8 +269,7 @@ Stem::do_width () const
     ;  // TODO!
   else
     {
-      Paper_def*p= paper ();
-      r = p->lookup_l ()->flag (flag_i_, dir_).dim_.x ();
+      r = lookup_l ()->flag (flag_i_, dir_).dim_.x ();
       r += note_delta_f ();
     }
   return r;
@@ -275,9 +284,8 @@ Molecule*
 Stem::brew_molecule_p () const
 {
   Molecule *mol_p =new Molecule;
-  Paper_def *p =paper ();
   Drul_array<Real> stem_y = yextent_drul_;
-  Real dy = p->internote_f ();
+  Real dy = paper ()->internote_f ();
   
 
   Real head_wid = 0;
@@ -287,16 +295,16 @@ Stem::brew_molecule_p () const
   
   if (!invisible_b ())
     {
-      Atom ss =p->lookup_l ()->stem (stem_y[DOWN]*dy,
+      Atom ss =lookup_l ()->stem (stem_y[DOWN]*dy,
                                     stem_y[UP]*dy);
-      mol_p->add (Atom (ss));
+      mol_p->add_atom (ss);
     }
 
-  if (!beam_l_ &&abs (flag_i_) > 2)
+  if (!beam_l_ && abs (flag_i_) > 2)
     {
-      Atom fl = p->lookup_l ()->flag (flag_i_, dir_);
+      Atom fl = lookup_l ()->flag (flag_i_, dir_);
       fl.translate_axis(stem_y[dir_]*dy, Y_AXIS);
-      mol_p->add(fl);
+      mol_p->add_atom (fl);
     }
 
   if (head_l_arr_.size())
@@ -316,7 +324,12 @@ Stem::note_delta_f () const
       Real rule_thick(paper ()->rule_thickness ());
       Interval stem_wid(-rule_thick/2, rule_thick/2);
       if (stem_xdir_ == CENTER)
+#define EGCS_ICE
+#ifndef EGCS_ICE
        r = head_wid.center ();
+#else
+       r = (head_wid.min () + head_wid.max ()) / 2;
+#endif
       else
        r = head_wid[stem_xdir_] - stem_wid[stem_xdir_];
     }
@@ -333,11 +346,10 @@ Stem::hpos_f () const
   TODO:  head_l_arr_/rest_l_arr_ in  do_substitute_dependent ()
  */
 void
- Stem::do_substitute_dependency (Score_elem*o,Score_elem*n)
+ Stem::do_substitute_dependency (Score_element*o,Score_element*n)
 {
-  Item * o_l = o->item ();
-  Item * n_l = n? n->item () : 0;
+  Item * o_l = o->access_Item ();
+  Item * n_l = n? n->access_Item () : 0;
   head_l_arr_.substitute ((Note_head*)o_l, (Note_head*)n_l);
   rest_l_arr_.substitute ((Rest*)o_l, (Rest*)n_l);
 }
-
index ca153eb5dab06e99cce8517cf6d8dc547b52dd1a..fda20ea9eea3575a030a10816df14996ab0a42e6 100644 (file)
@@ -3,14 +3,14 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "super-elem.hh"
-#include "scoreline.hh"
+#include "super-element.hh"
+#include "line-of-score.hh"
 #include "p-score.hh"
 #include "string.hh"
-#include "outputter.hh"
+#include "tex-outputter.hh"
 
 void
 Super_elem::handle_broken_dependencies()
@@ -22,10 +22,10 @@ Super_elem::handle_broken_dependencies()
   
 
 void
-Super_elem::do_substitute_dependency (Score_elem*o,Score_elem* n)
+Super_elem::do_substitute_dependency (Score_element*o,Score_element* n)
 {
-  if (line_of_score_l_ == o->spanner())
-    line_of_score_l_ = n? (Line_of_score*) n->spanner() : 0;
+  if (line_of_score_l_ == o->access_Spanner ())
+    line_of_score_l_ = n? (Line_of_score*) n->access_Spanner () : 0;
 }
 
 Super_elem::Super_elem()
@@ -40,13 +40,13 @@ Super_elem::do_add_processing()
   add_dependency (line_of_score_l_);
 }
 
-IMPLEMENT_IS_TYPE_B1(Super_elem,Score_elem);
+IMPLEMENT_IS_TYPE_B1(Super_elem,Score_element);
 
 
 /**
     for administration of what was done already
     */
-enum Score_elem_status {
+enum Score_element_status {
   ORPHAN=0,                    // not yet added to pstaff
   VIRGIN,                      // added to pstaff
   PREBROKEN,
@@ -66,34 +66,34 @@ enum Score_elem_status {
 void
 Super_elem::pre_processing ()
 {
-  calcalute_dependencies (PRECALCING, PRECALCED, &Score_elem::do_pre_processing);
+  calcalute_dependencies (PRECALCING, PRECALCED, &Score_element::do_pre_processing);
 }
 
 void
 Super_elem::space_processing ()
 {
-  calcalute_dependencies (SPACING, SPACED, &Score_elem::do_space_processing);
+  calcalute_dependencies (SPACING, SPACED, &Score_element::do_space_processing);
 }
 
 /* for break processing, use only one status, because copies have to
   have correct status. (Previously,
-  Score_elem::handle_[pre]broken_dependencies assigned to status_i_
+  Score_element::handle_[pre]broken_dependencies assigned to status_i_
   */
 void
 Super_elem::breakable_col_processing ()
 {
-  calcalute_dependencies (PREBROKEN, PREBROKEN, &Score_elem::do_breakable_col_processing);
+  calcalute_dependencies (PREBROKEN, PREBROKEN, &Score_element::do_breakable_col_processing);
 }
 
 void
 Super_elem::break_processing ()
 {
-  calcalute_dependencies (BROKEN, BROKEN, &Score_elem::do_break_processing);
+  calcalute_dependencies (BROKEN, BROKEN, &Score_element::do_break_processing);
 }
 void
 Super_elem::post_processing ()
 {
-  calcalute_dependencies (POSTCALCING, POSTCALCED, &Score_elem::do_post_processing);
+  calcalute_dependencies (POSTCALCING, POSTCALCED, &Score_element::do_post_processing);
 }
 
 void
@@ -102,7 +102,7 @@ Super_elem::output_all ()
   for (int i=0; i < lines_arr_.size(); i++)
     {
       pscore_l_->outputter_l_->start_line ();
-      lines_arr_[i]->calcalute_dependencies (BREWING, BREWED, &Score_elem::do_brew_molecule);
+      lines_arr_[i]->calcalute_dependencies (BREWING, BREWED, &Score_element::do_brew_molecule);
       pscore_l_->outputter_l_->stop_line ();
     }
 }
@@ -112,6 +112,6 @@ Super_elem::output_all ()
 void
 Super_elem::unlink_all ()
 {
-  calcalute_dependencies (UNLINKING, UNLINKED, &Score_elem::junk_links);
+  calcalute_dependencies (UNLINKING, UNLINKED, &Score_element::junk_links);
 }
 
diff --git a/lily/swallow-engraver.cc b/lily/swallow-engraver.cc
new file mode 100644 (file)
index 0000000..20a5130
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+  swallow-reg.cc -- implement Swallow_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+#include "swallow-engraver.hh"
+
+
+IMPLEMENT_IS_TYPE_B1(Swallow_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Swallow_engraver);
+
+
+bool
+Swallow_engraver::do_try_request (Request*) 
+{
+  return true;
+}
diff --git a/lily/swallow-grav.cc b/lily/swallow-grav.cc
deleted file mode 100644 (file)
index 8c32a81..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-  swallow-reg.cc -- implement Swallow_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-#include "swallow-grav.hh"
-
-
-IMPLEMENT_IS_TYPE_B1(Swallow_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Swallow_engraver);
-
-
-bool
-Swallow_engraver::do_try_request (Request*) 
-{
-  return true;
-}
index 5f2cbb2873423a086dc9b7b294f16a44acb8bd34..27b61ba4f17de757d70aa222f1611471cb644eec 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "swallow-perf.hh"
index 52ef9fefc0a716ef5f2f41b18082d623d95157cf..5814d5294aa241920c14f5fae5aaf38767c2d5ca 100644 (file)
@@ -3,11 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "misc.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "debug.hh"
 #include "real.hh"
 #include "atom.hh"
@@ -41,10 +41,13 @@ Atom
 Symtable::lookup (String s) const
 {
   if (elt_b (s))
-    return (*this)[s];
+    {
+      Atom a (elem(s));
+      return a;
+    }
   else
     {
-      warning ("Symtable `" + id_str+ _("\': unknown symbol `") +s+"'\n");
+      warning (_f ("Symtable `%s\': unknown symbol: `%s\'", id_str, s));
       Atom sy;
       return sy;
     }
@@ -55,9 +58,9 @@ Symtables::operator()(String s)
 {
   if (!elt_b (s))
     {
-      error ("Symtable `" + s + _("\' unknown"));
+      error (_f ("Symtable `%s\' unknown", s));
       /* 
-        We can't return, because we'll dump core anyway.
+        We can 't return, because we'll dump core anyway.
        */
       return 0;
     }
@@ -69,7 +72,7 @@ Symtables::print() const
 {
   for (Assoc_iter<String, Symtable*>  i (*this); i.ok(); i++)
     {
-      DOUT << "table \'" << i.key() << "\' {\n";
+      DOUT << "table \'" << i.key () << "\' {\n";
       i.val()->print ();
       DOUT << "}\n";
     }
@@ -79,7 +82,7 @@ Symtable::print() const
 {
   for (Assoc_iter<String, Atom>  i (*this); i.ok(); i++)
     {
-      DOUT << "\'" << i.key() << "\'->" << i.val ().str () << "\n";
+      DOUT << "\'" << i.key() << "\'->" << i.val ().str () << '\n';
     }
 }
 
index b4a5dbf20926555687254eb4695a63af26394038..9a5ac4216006d4f42a5f8d9ef0eb1b3df7fd51c0 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
@@ -20,6 +20,6 @@
 
 #define IPLC_INSTANTIATE(a) POINTERLIST_INSTANTIATE(a)
 
-IPLC_INSTANTIATE(Score_elem);
+IPLC_INSTANTIATE(Score_element);
 IPLC_INSTANTIATE(Spanner);
 IPLC_INSTANTIATE(Idealspacing);
index b9ea8f4ace0d0caf5efe8c42b02ee372a53848da..b60867333dfa5b0d3f7a45fb32d2615859585945 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "line-spacer.hh"
index 5191f663c56f458d35f9e190009cf57bd0ac3e1f..eb9417c5e829238a94b9829425d279ea066cacda 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "atom.hh"
index 8ff8142c7e299287d9a0145f3123cb214b4de50d..65f9617165d7e2382128ed2b8f740d5210c14ce5 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #ifndef __CYGWIN32__
index 98b3dc89fd9d9f6a8babc8ace553044a49f29591..ca2523d47819187a6c4d0de5156ec4daf6747163 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include <limits.h>
index c38954bf2d2afec9692e7793b1f53c14a2d8bfc4..e435c672a687debdf4521da797eb8376f9af553b 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
index 2d24fce40a982e9125d466f8bbd4c09cdd6b7aae..9433757adcce38907d8cb1bee42103b36cea8563 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
index f2d07eb85554e5ebf6e8d8a7d0cc80e26134bb37..002154acc452e2ae2cd33c08c2621fd66cf17219 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  tex-beam.cc -- implement Lookup::{beam_element, beam, rule_symbol}
+  tex-beam.cc -- implement Lookup::beam
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 /*
@@ -15,7 +15,7 @@
 #include "molecule.hh"
 #include "tex.hh"
 #include "symtable.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 #include "debug.hh"
 #include "lookup.hh"
 #include "misc.hh"
@@ -55,7 +55,7 @@ Atom
 Lookup::ps_beam (Real slope, Real width, Real thick) const
 {
   String ps = "\\embeddedps{\n";
-  ps += String (width) + " "+ String (slope) + " " + String (thick)
+  ps += to_str (width) + " "+ to_str (slope) + " " + to_str (thick)
     + " draw_beam}";
 
   Atom s;
diff --git a/lily/tex-outputter.cc b/lily/tex-outputter.cc
new file mode 100644 (file)
index 0000000..67ea1fe
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+  tex-outputter.cc -- implement Tex_outputter
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "tex-outputter.hh"
+#include "tex-stream.hh"
+#include "molecule.hh"
+#include "atom.hh"
+#include "array.hh"
+#include "dimension.hh"
+#include "tex.hh"
+#include "string-convert.hh"
+#include "debug.hh"
+
+Tex_outputter::Tex_outputter (Tex_stream *s)
+{
+  outstream_l_ = s;
+}
+
+/*
+   26 fonts ought to be enough for anyone.
+*/
+static String
+tex_font_command(int i)
+{
+  return "\\font"  +String_convert::form_str ("%c",  'A' + i) ;
+}
+
+void
+Tex_outputter::switch_to_font (String fontname)
+{
+  if (!fontname.length_i () || fontname == current_font_)
+    return;
+
+  current_font_ = fontname;
+  int i=0;
+  for (; i< font_arr_.size (); i++)
+    if (font_arr_[i] == fontname)
+      {
+       *outstream_l_ <<tex_font_command (i) << "\n";
+       return ;
+      }
+
+  
+  font_arr_.push (fontname);
+  *outstream_l_ << "\\font"  + tex_font_command (i) << "=" + fontname << "\n";
+  *outstream_l_<< tex_font_command (i);
+}
+
+void
+Tex_outputter::output_molecule (Molecule const*m, Offset o, char const *nm)
+{
+  if (check_debug)
+    *outstream_l_ << String ("\n%start: ") << nm << "\n";
+
+  for (PCursor <Atom*> i (m->atoms_); i.ok (); i++)
+    {
+      Offset a_off = i->offset ();
+      a_off += o;
+
+      switch_to_font (i->font_);
+
+      Array<String> a;
+      String r;
+  
+    
+      String s ("\\placebox{%}{%}{%}");
+      a.push (print_dimen (a_off.y()));
+      a.push (print_dimen (a_off.x()));
+      a.push (i->tex_);
+      r += substitute_args (s, a);
+      *outstream_l_ << r;
+    }
+}
+
+
+void
+Tex_outputter::start_line ()
+{
+  *outstream_l_ << "\\hbox{%\n";
+}
+
+void
+Tex_outputter::stop_line ()
+{
+  *outstream_l_ << "}";
+  *outstream_l_ << "\\interscoreline";
+  current_font_ = "";
+  font_arr_.clear ();
+}
index 91f26921b324cabab8a52ddfdb146937945e53e6..9866c231ad07af68c163e4a13decf0885550b2f2 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
 */
 
@@ -19,9 +19,13 @@ const int MAXLINELEN = 200;
 
 Tex_stream::Tex_stream (String filename)
 {
-  os = new ofstream (filename.ch_C ());
+  if (filename.length_i () && (filename != "-"))
+    os = new ofstream (filename.ch_C ());
+  else
+//    os = new ostream (cout.ostreambuf ());
+    os = new ostream (cout._strbuf);
   if (!*os)
-       error (_("can't open `") + filename+"\'");
+    error (_f ("can't open file: `%s\'", filename));
   nest_level = 0;
   line_len_i_ = 0;
   outputting_comment=false;
@@ -30,17 +34,17 @@ Tex_stream::Tex_stream (String filename)
 void
 Tex_stream::header()
 {
-  *os << _("% Creator: ");
+  *os << _ ("% Creator: ");
   if (no_timestamps_global_b)
     *os << "GNU LilyPond\n";
   else
-    *os << get_version_str() << "\n";
-  *os << _("% Automatically generated");
+    *os << get_version_str() << '\n';
+  *os << _ ("% Automatically generated");
   if (no_timestamps_global_b)
     *os << ".\n";
   else
     {
-      *os << _(", at ");
+      *os << _ (", at ");
       time_t t (time (0));
       *os << ctime (&t) << "%\n";
     }
@@ -51,7 +55,7 @@ Tex_stream::~Tex_stream()
   *os << flush;
   if (!*os)
     {
-      warning(_("error syncing file (disk full?)"));
+      warning(_ ("error syncing file (disk full?)"));
       exit_status_i_ = 1;
     }
   delete os;
@@ -59,10 +63,9 @@ Tex_stream::~Tex_stream()
 }
 
 // print string. don't forget indent.
-Tex_stream &
-Tex_stream::operator<<(String s)
+Tex_stream&
+Tex_stream::operator << (Scalar s)
 {
-
   for (char const *cp = s.ch_C (); *cp; cp++)
     {
        if (outputting_comment)
@@ -118,6 +121,7 @@ void
 Tex_stream::break_line()
 {
   *os << "%\n";
-  *os << String (' ', nest_level);
+  *os << to_str (' ', nest_level);
   line_len_i_ = 0;
 }
+
index 04f3e9cf4ace306ec946927dba1226c5414c32f3..635b281aa6e73f0dfd9f628000be6558455eb376 100644 (file)
@@ -3,13 +3,13 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "dimen.hh"
+#include "dimension.hh"
 #include "tex.hh"
 #include "atom.hh"
-#include "varray.hh"
+#include "array.hh"
 
 String
 vstrut (Real h)
index 6fdf2542d2cbebc67c56728f4f8060b58a79ecc5..faf0dae1c4cfc65862599f7ea89dbea837cd8fec 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "debug.hh"
@@ -11,7 +11,7 @@
 #include "paper-def.hh"
 #include "molecule.hh"
 #include "text-def.hh"
-#include "dimen.hh"
+#include "dimension.hh"
 
 Direction
 Text_def::staff_dir () const
@@ -28,7 +28,7 @@ Text_def::width (Paper_def * p) const
 
   Real guess_width_f = text_str_.length_i() * a.dim_.x ().length (); // ugh
   Interval i (0, guess_width_f);
-  i += - (align_i_ + 1)* i.center();
+  i += - (align_dir_ + 1)* i.center();
   return i;
 }
 
@@ -36,13 +36,13 @@ void
 Text_def::do_print() const
 {
 #ifndef NPRINT
-  DOUT << "align " <<align_i_ << " `" << text_str_ << "'";
+  DOUT << "align " << align_dir_ << " `" << text_str_ << "'";
 #endif
 }
 
 Text_def::Text_def()
 {   
-  align_i_ = RIGHT;
+  align_dir_ = RIGHT;
   style_str_ = "roman";
 }
 
@@ -50,21 +50,26 @@ bool
 Text_def::do_equal_b (General_script_def const *gdef) const
 {
   Text_def const *def= (Text_def*)gdef;
-  return align_i_ == def->align_i_ && text_str_ == def->text_str_
+  return align_dir_ == def->align_dir_ && text_str_ == def->text_str_
        && style_str_ == def->style_str_;
 }
 
 Atom
 Text_def::get_atom (Paper_def *p, Direction) const
 {
-  return p->lookup_l()->text (style_str_, text_str_, -align_i_);
+  Atom a= p->lookup_l(0)->text (style_str_, text_str_);
+
+  Real guess_width_f = text_str_.length_i() * a.dim_.x ().length (); // ugh
+  a.translate_axis (-(align_dir_ + 1)* guess_width_f/ 2, X_AXIS);
+  
+  return a;
 }
 
 void
 Text_def::print() const
 {
   DOUT << "Text `" << text_str_ << "\', style " <<
-       style_str_ << "align " << align_i_ << '\n';
+       style_str_ << "align " << align_dir_ << '\n';
 }
 
 
index 6384ba2582b7ec80085432ab15e40c3d7628d2a4..c23b63c9a575b69921a157f3beda7351e1ea01de 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -49,7 +49,7 @@ Text_item::get_position_f () const
       return -20;
     }
 
-  Interval v = support_height ();
+  Interval v = support_extent ();
   // add no extra: fingers should be just above note, no?
   return v[dir_];
 }
@@ -72,7 +72,8 @@ Text_item::brew_molecule_p () const
 
   if (dir_<0)          // should do something better anyway.
     mol_p->translate_axis (-mol_p->extent ().y ().left , Y_AXIS);
-  mol_p->translate_axis (y_, Y_AXIS);
+  mol_p->translate_axis (coordinate_offset_f_, Y_AXIS);
+
   
   return mol_p;
 }
index 1e4a53b2fbf0a071f104b91bf55da9e333aec4a1..2bafc76723ffb2e70aacf1f7c9ddb723cc668fae 100644 (file)
@@ -3,11 +3,11 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "molecule.hh"
-#include "boxes.hh"
+#include "box.hh"
 #include "text-spanner.hh"
 #include "text-def.hh"
 #include "debug.hh"
@@ -61,7 +61,7 @@ Text_spanner::brew_molecule_p() const
   tsym.translate (text_off_);
 
   Molecule*output = new Molecule;
-  output->add (tsym);
+  output->add_atom (tsym);
   return output;
 }
 
@@ -78,10 +78,10 @@ Text_spanner::height() const
 }
 
 void
-Text_spanner::do_substitute_dependency (Score_elem* o, Score_elem*n)
+Text_spanner::do_substitute_dependency (Score_element* o, Score_element*n)
 {
   if (support_span_l_ == o) 
-       support_span_l_ = (Directional_spanner*) (n?n->spanner():0);
+       support_span_l_ = (Directional_spanner*) (n?n->access_Spanner ():0);
 }
 
 
diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc
new file mode 100644 (file)
index 0000000..d6313a2
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+  tie-reg.cc -- implement Tie_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+
+  
+  essentially obsolete.
+*/
+
+#include "tie-engraver.hh"
+#include "tie.hh"
+#include "note-head.hh"
+#include "musical-request.hh"
+#include "music-list.hh"
+
+Tie_engraver::Tie_engraver()
+{
+  end_tie_p_ = 0;
+  tie_p_ = 0;
+  req_l_ =0;
+  end_req_l_ =0;
+  end_mom_ = -1;
+  melodic_req_l_ = 0;
+  end_melodic_req_l_ =0;
+  dir_ = CENTER;
+}
+
+void
+Tie_engraver::do_post_move_processing()
+{
+  if (tie_p_ && now_moment () == end_mom_)
+    {
+      end_tie_p_ = tie_p_;
+      end_req_l_ = req_l_;
+      end_melodic_req_l_ = melodic_req_l_;
+      tie_p_ =0;
+      req_l_ =0;
+      end_mom_ = -1;
+    }
+}
+
+bool
+Tie_engraver::do_try_request (Request*r)
+{
+  if (! (r->access_Musical_req () && r->access_Musical_req ()->access_Tie_req ()))
+    return false;
+  
+  if (req_l_)
+    {
+      return false;
+    }
+  req_l_ = r->access_Musical_req ()->access_Tie_req ();
+  end_mom_ = r->parent_music_l_->time_int().length ()
+    + now_moment ();
+  return true;
+}
+
+void
+Tie_engraver::do_process_requests()
+{
+  Scalar dir (get_property ("tieydirection"));
+  Scalar dir2 (get_property ("ydirection"));
+  if (!dir.length_i () && dir2.length_i ())
+    {
+        dir_ = (Direction) int(dir2);
+    }
+  else if (dir.length_i ())
+    dir_ = (Direction) int (dir);
+  
+  if (req_l_ && ! tie_p_)
+    {
+      tie_p_ = new Tie;
+      Scalar prop = get_property ("tiedash");
+      if (prop.isnum_b ()) 
+       tie_p_->dash_i_ = prop;
+    }
+}
+
+void
+Tie_engraver::acknowledge_element (Score_element_info i)
+{
+  if (i.elem_l_->is_type_b (Note_head::static_name ()))
+    {
+      if (tie_p_)
+       {
+         tie_p_->set_head (LEFT, (Note_head*)i.elem_l_->access_Item ());
+         melodic_req_l_ = i.req_l_->access_Musical_req ()->access_Melodic_req ();
+       }
+
+      if (end_tie_p_)
+       {
+         end_tie_p_->set_head (RIGHT, (Note_head*)i.elem_l_->access_Item ());
+         if (!Melodic_req::compare (*end_melodic_req_l_, *melodic_req_l_))
+           end_tie_p_->same_pitch_b_ = true;
+         announce_element (Score_element_info (end_tie_p_,end_req_l_));
+       }
+    }
+}
+
+void
+Tie_engraver::do_pre_move_processing()
+{
+  if (end_tie_p_)
+    {
+      if (dir_)
+       end_tie_p_->dir_ =  dir_;
+
+      typeset_element (end_tie_p_);
+      end_tie_p_ =0;
+      end_req_l_ =0;
+    }
+}
+
+void
+Tie_engraver::do_removal_processing ()
+{
+  do_pre_move_processing ();
+  if (tie_p_)
+    {
+      req_l_->warning (_ ("lonely tie"));
+      tie_p_->unlink ();
+      delete tie_p_;
+      tie_p_ =0;
+    }
+}
+
+
+
+IMPLEMENT_IS_TYPE_B1(Tie_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Tie_engraver);
diff --git a/lily/tie-grav.cc b/lily/tie-grav.cc
deleted file mode 100644 (file)
index ae9f6d2..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
-  tie-reg.cc -- implement Tie_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "tie-grav.hh"
-#include "tie.hh"
-#include "note-head.hh"
-#include "musical-request.hh"
-#include "music-list.hh"
-
-Tie_engraver::Tie_engraver()
-{
-  end_tie_p_ = 0;
-  tie_p_ = 0;
-  req_l_ =0;
-  end_req_l_ =0;
-  end_mom_ = -1;
-  melodic_req_l_ = 0;
-  end_melodic_req_l_ =0;
-  dir_ = CENTER;
-}
-
-void
-Tie_engraver::do_post_move_processing()
-{
-  if (tie_p_ && now_moment () == end_mom_)
-    {
-      end_tie_p_ = tie_p_;
-      end_req_l_ = req_l_;
-      end_melodic_req_l_ = melodic_req_l_;
-      tie_p_ =0;
-      req_l_ =0;
-      end_mom_ = -1;
-    }
-}
-
-bool
-Tie_engraver::do_try_request (Request*r)
-{
-  if (! (r->musical() && r->musical ()->tie ()))
-    return false;
-  
-  if (req_l_)
-    {
-      return false;
-    }
-  req_l_ = r->musical()->tie ();
-  end_mom_ = r->parent_music_l_->time_int().length ()
-    + now_moment ();
-  return true;
-}
-
-void
-Tie_engraver::do_process_requests()
-{
-  dir_ = (Direction) int (get_property ("ydirection"));
-  if (req_l_ && ! tie_p_)
-    {
-      tie_p_ = new Tie;
-      Scalar prop = get_property ("slurdash");
-      if (prop.isnum_b ()) 
-       tie_p_->dash_i_ = prop;
-    }
-}
-
-void
-Tie_engraver::acknowledge_element (Score_elem_info i)
-{
-  if (i.elem_l_->is_type_b (Note_head::static_name ()))
-    {
-      if (tie_p_)
-       {
-         tie_p_->set_head (LEFT, (Note_head*)i.elem_l_->item());
-         melodic_req_l_ = i.req_l_->musical()->melodic ();
-       }
-
-      if (end_tie_p_)
-       {
-         end_tie_p_->set_head (RIGHT, (Note_head*)i.elem_l_->item());
-         if (!Melodic_req::compare (*end_melodic_req_l_, *melodic_req_l_))
-           end_tie_p_->same_pitch_b_ = true;
-         announce_element (Score_elem_info (end_tie_p_,end_req_l_));
-       }
-    }
-}
-
-void
-Tie_engraver::do_pre_move_processing()
-{
-  if (end_tie_p_)
-    {
-      if (dir_)
-       end_tie_p_->dir_ =  dir_;
-
-      typeset_element (end_tie_p_);
-      end_tie_p_ =0;
-      end_req_l_ =0;
-    }
-}
-
-void
-Tie_engraver::do_removal_processing ()
-{
-  do_pre_move_processing ();
-  if (tie_p_)
-    {
-      req_l_->warning (_("unended Tie"));
-      tie_p_->unlink ();
-      delete tie_p_;
-    }
-}
-
-
-
-IMPLEMENT_IS_TYPE_B1(Tie_engraver,Engraver);
-ADD_THIS_TRANSLATOR(Tie_engraver);
index c47d0831ace4f2202fa737fe1cbe235e1b4f5c1a..cc36ab22c0fec51cd04a2ec65029b34bb818a928 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "paper-def.hh"
@@ -11,7 +11,6 @@
 #include "note-head.hh"
 #include "p-col.hh"
 #include "debug.hh"
-#include "main.hh"  // experimental features
 
 IMPLEMENT_IS_TYPE_B1(Tie,Bow);
 
@@ -48,7 +47,7 @@ void
 Tie::do_add_processing()
 {
   if (!(head_l_drul_[LEFT] && head_l_drul_[RIGHT]))
-    warning (_("Lonely tie.. "));
+    warning (_ ("lonely tie"));
 
   Direction d = LEFT;
   Drul_array<Note_head *> new_head_drul = head_l_drul_;
@@ -103,9 +102,9 @@ Tie::do_post_processing()
          dy_f_drul_[d] += dir_ * 0.25 * interline_f;
        }
       // tie attached to inner notehead
-      else if (head_l_drul_[d])
+      else if (head_l_drul_[d] && d == LEFT)
        {
-         dx_f_drul_[d] += d*0.5 * notewidth;
+         dx_f_drul_[d] += -d * notewidth;
        }
       // uhm? loose end of tie // tie attached to stem
       else
@@ -150,12 +149,12 @@ Tie::do_post_processing()
 }
 
 void
-Tie::do_substitute_dependency (Score_elem*o, Score_elem*n)
+Tie::do_substitute_dependency (Score_element*o, Score_element*n)
 {
-  Note_head *new_l =n?(Note_head*)n->item():0;
-  if (o->item() == head_l_drul_[LEFT])
+  Note_head *new_l =n?(Note_head*)n->access_Item ():0;
+  if (o->access_Item () == head_l_drul_[LEFT])
     head_l_drul_[LEFT] = new_l;
-  else if (o->item() == head_l_drul_[RIGHT])
+  else if (o->access_Item () == head_l_drul_[RIGHT])
     head_l_drul_[RIGHT] = new_l;
 }
 
diff --git a/lily/ties-engraver.cc b/lily/ties-engraver.cc
new file mode 100644 (file)
index 0000000..8f9aa39
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+  tie-reg.cc -- implement Ties_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "ties-engraver.hh"
+#include "tie.hh"
+#include "note-head.hh"
+#include "musical-request.hh"
+#include "music-list.hh"
+
+Ties_engraver::Ties_engraver()
+{
+  req_l_ = end_req_l_ =0;
+  processed_ack_pass_i_ = 0;
+  
+}
+
+void
+Ties_engraver::do_post_move_processing()
+{
+  processed_ack_pass_i_ =0;
+}
+
+bool
+Ties_engraver::do_try_request (Request*req)
+{
+  if (! req->access_Musical_req ())
+      return false;
+
+  Tie_req * r=  req->access_Musical_req ()->access_Tie_req ();
+  if (!r)
+    return false;
+  
+  req_l_ = r;
+  return true;
+}
+
+
+void
+Ties_engraver::acknowledge_element (Score_element_info i)
+{
+  if (!req_l_ && ! end_req_l_)
+    return;
+  if (i.elem_l_->is_type_b (Note_head::static_name ()))
+    {
+      Note_head * h = (Note_head*)i.elem_l_->access_Item ();
+      Melodic_req *m = i.req_l_->access_Musical_req ()->access_Melodic_req ();
+      
+      head_mel_tuple_arr_.push (Head_melodic_tuple (h, m));
+    }
+}
+
+void
+Ties_engraver::process_acknowledged ()
+{
+  if (!head_mel_tuple_arr_.size () || processed_ack_pass_i_ ++)
+    return;
+
+  head_mel_tuple_arr_.sort (Head_melodic_tuple::compare);
+  if (req_l_ && !tie_p_arr_.size ())
+    {
+      for (int i=0; i < head_mel_tuple_arr_.size (); i++)
+       {
+         Tie*  p = new Tie;
+         p->set_head (LEFT,head_mel_tuple_arr_[i].head_l_);
+         //      announce_element (Score_element_info (p, req_l_));
+         tie_p_arr_.push (p);
+       }
+    }
+
+  if (end_req_l_)
+    {
+      for (int i=0; i < end_tie_p_arr_.size (); i++)
+       {
+         int j = i;
+         if (j >= head_mel_tuple_arr_.size ())
+           {
+             left_head_mel_tuple_arr_[i].mel_l_->warning (_( "Can't find a note head at the right to attach Tie"));
+             j = head_mel_tuple_arr_.size () -1;
+           }
+         
+         Tie*p=end_tie_p_arr_[i];
+         p->set_head (RIGHT, head_mel_tuple_arr_[j].head_l_);
+         if (!Melodic_req::compare (*head_mel_tuple_arr_[j].mel_l_,
+                                    *left_head_mel_tuple_arr_[j].mel_l_))
+           p->same_pitch_b_ = true;
+         announce_element ( Score_element_info (p, end_req_l_));
+       }
+    }
+}
+
+
+void
+Ties_engraver::do_pre_move_processing()
+{
+  if (!head_mel_tuple_arr_.size ())
+    return;
+
+
+  for (int i =0; i < end_tie_p_arr_.size (); i++)
+    {
+      typeset_element (end_tie_p_arr_[i]);
+    }
+
+  end_tie_p_arr_ = tie_p_arr_;
+  left_head_mel_tuple_arr_ = head_mel_tuple_arr_;
+  end_req_l_ = req_l_;
+  
+  req_l_ =0;
+  head_mel_tuple_arr_.clear ();
+  tie_p_arr_.clear ();
+}
+
+void
+Ties_engraver::do_removal_processing ()
+{
+}
+
+void
+Ties_engraver::do_process_requests ()
+{}
+
+
+IMPLEMENT_IS_TYPE_B1(Ties_engraver,Engraver);
+ADD_THIS_TRANSLATOR(Ties_engraver);
+
+
+Head_melodic_tuple::Head_melodic_tuple ()
+{
+  head_l_ =0;
+  mel_l_ =0;
+}
+
+Head_melodic_tuple::Head_melodic_tuple (Note_head *h, Melodic_req*m)
+{
+  head_l_ = h;
+  mel_l_ = m;
+}
+
+int
+Head_melodic_tuple::compare (Head_melodic_tuple const&h1,
+                            Head_melodic_tuple const &h2)
+{
+  return Melodic_req::compare (*h1.mel_l_, *h2.mel_l_);
+}
index e2b87d0fee76569844243bc440729f3f7bc90faa..22ab2d9acc761770355926bb80694538e948e555 100644 (file)
@@ -3,23 +3,23 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "time-description.hh"
 #include "debug.hh"
 
 String
-Time_description::str() const
+Time_description::str () const
 {
   String s ("Time_description { ");
   if (cadenza_b_)
-       s+=String (" (cadenza) ");
-  s+= "at ";
-  s+=when_;
-  s+="\nmeter " + (whole_per_measure_/one_beat_).str () +":" +
+       s += String ("(") + _("cadenza") + ")";
+  s += "at ";
+  s += when_.str ();
+  s +="\ntime_signature " + (whole_per_measure_/one_beat_).str () +":" +
         (Rational (Rational (1)/one_beat_)).str ();
-  s+= "\nposition "+String (bars_i_) + ":"+ whole_in_measure_.str () +"\n}\n";
+  s += "\nposition " + to_str (bars_i_) + ":"+ whole_in_measure_.str () +"\n}\n";
   return s;
 }
 
@@ -27,7 +27,7 @@ void
 Time_description::print() const
 {
 #ifndef NPRINT
-  DOUT << str();
+  DOUT << str ();
 #endif
 }
 void
@@ -81,7 +81,7 @@ Time_description::add (Moment dt)
 }
 
 void
-Time_description::set_meter (int l, int o)
+Time_description::set_time_signature (int l, int o)
 {
   assert (o);
   one_beat_ = Rational (1)/Moment (o);
@@ -89,7 +89,7 @@ Time_description::set_meter (int l, int o)
 }
 
 bool
-Time_description::allow_meter_change_b()
+Time_description::allow_time_signature_change_b()
 {
   return!(whole_in_measure_);
 }
@@ -103,9 +103,9 @@ String
 Time_description::try_set_partial_str (Moment p) const
 {
   if (p<Rational (0))
-       return (_("Partial must be non-negative"));
+       return (_ ("partial measure must be non-negative"));
   if (p > whole_per_measure_)
-       return (_("Partial measure too large"));
+       return (_ ("partial measure too large"));
   return "";
 }
 
diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc
new file mode 100644 (file)
index 0000000..75d8032
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+  time_signature-reg.cc -- implement Time_signature_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "time-signature-engraver.hh"
+#include "time-signature.hh"
+#include "command-request.hh"
+#include "timing-engraver.hh"
+#include "engraver-group.hh"
+
+Time_signature_engraver::Time_signature_engraver()
+{ 
+  time_signature_p_ =0;
+}
+
+void
+Time_signature_engraver::do_process_requests()
+{
+  Translator * result =
+    daddy_grav_l()->get_simple_translator (Timing_engraver::static_name());
+
+  if (!result)
+    {
+      warning (_ ("lost in time") + ": " + _ ("can't find") 
+        + " Timing_translator");
+      return ;
+    }
+  
+  Timing_engraver * timing_grav_l= (Timing_engraver*) result->engraver_l ();
+  
+  Time_signature_change_req *req = timing_grav_l->time_signature_req_l();
+  if (req)
+    {
+      Array<Scalar> args;
+      args.push (req->beats_i_);
+      args.push (req->one_beat_i_);
+       
+      time_signature_p_ = new Time_signature (args);
+      time_signature_p_->break_priority_i_ = 1; // ugh
+    }
+
+  if (time_signature_p_)
+    announce_element (Score_element_info (time_signature_p_, req));
+}
+
+void
+Time_signature_engraver::do_pre_move_processing()
+{
+  if (time_signature_p_) 
+    {
+      typeset_element (time_signature_p_);
+      time_signature_p_ =0;
+    }
+}
+
+
+ADD_THIS_TRANSLATOR(Time_signature_engraver);
+IMPLEMENT_IS_TYPE_B1(Time_signature_engraver,Engraver); 
diff --git a/lily/time-signature.cc b/lily/time-signature.cc
new file mode 100644 (file)
index 0000000..e882c55
--- /dev/null
@@ -0,0 +1,23 @@
+#include "scalar.hh"
+#include "molecule.hh"
+#include "time-signature.hh"
+#include "paper-def.hh"
+#include "lookup.hh"
+
+Time_signature::Time_signature (Array<Scalar>a)
+  :args (a)
+{
+  breakable_b_ = true;
+}
+
+Molecule*
+Time_signature::brew_molecule_p() const
+{
+  Atom s = lookup_l ()->time_signature (args);
+  s.translate_axis (-s.extent()[Y_AXIS].center (), Y_AXIS);
+  return new Molecule (Atom (s));
+}
+
+
+
+IMPLEMENT_IS_TYPE_B1(Time_signature,Item);
diff --git a/lily/timing-engraver.cc b/lily/timing-engraver.cc
new file mode 100644 (file)
index 0000000..dfe98a9
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+  timing-grav.cc -- implement Timing_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+#include "score-engraver.hh"
+#include "timing-engraver.hh"
+#include "command-request.hh"
+#include "score-element-info.hh"
+#include "multi-measure-rest.hh"
+
+
+void
+Timing_engraver::fill_staff_info (Staff_info &inf)
+{
+  inf.time_C_ = &time_;
+  inf.rhythmic_C_ = &default_grouping_;
+}
+
+IMPLEMENT_IS_TYPE_B1(Timing_engraver, Timing_translator);
+ADD_THIS_TRANSLATOR(Timing_engraver);
diff --git a/lily/timing-grav.cc b/lily/timing-grav.cc
deleted file mode 100644 (file)
index a994334..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-  timing-grav.cc -- implement Timing_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-#include "score-grav.hh"
-#include "timing-grav.hh"
-#include "command-request.hh"
-#include "score-elem-info.hh"
-#include "multi-measure-rest.hh"
-
-
-void
-Timing_engraver::fill_staff_info (Staff_info &inf)
-{
-  inf.time_C_ = &time_;
-  inf.rhythmic_C_ = &default_grouping_;
-}
-
-IMPLEMENT_IS_TYPE_B1(Timing_engraver, Timing_translator);
-ADD_THIS_TRANSLATOR(Timing_engraver);
index ce04be40a97f4e25c60fab59d08b3c8348994cb4..6ab83a2ea9751912ef571f825c66beaef3cb3a02 100644 (file)
@@ -1,10 +1,9 @@
-
 /*
   timing-translator.cc -- implement Timing_translator
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "timing-translator.hh"
@@ -21,8 +20,8 @@ Timing_translator::Timing_translator ()
 bool
 Timing_translator::do_try_request(Request*r)
 {
-  Command_req * c = r->command();
-  if (!(c && c->timing()))
+  Command_req * c = r->access_Command_req ();
+  if (!(c && c->access_Timing_req ()))
     return false;
   for (int i=0; i < timing_req_l_arr_.size (); i++)
     {
@@ -30,22 +29,22 @@ Timing_translator::do_try_request(Request*r)
        return true;
       if (timing_req_l_arr_[i]->name() == r->name())
        {
-         r->warning (_("conflicting timing request"));
+         r->warning (_ ("conflicting timing request"));
          return false;
        }
     }
 
-  timing_req_l_arr_.push(c->timing());
+  timing_req_l_arr_.push(c->access_Timing_req ());
   return true;
 }
 
-Meter_change_req*
-Timing_translator::meter_req_l() const
+Time_signature_change_req*
+Timing_translator::time_signature_req_l() const
 {
-  Meter_change_req *m_l=0;
+  Time_signature_change_req *m_l=0;
   for (int i=0; !m_l && i < timing_req_l_arr_.size (); i++)
     {
-      m_l=timing_req_l_arr_[i]->meterchange();
+      m_l=timing_req_l_arr_[i]->access_Time_signature_change_req ();
     }
   return m_l;
 }
@@ -56,23 +55,23 @@ Timing_translator::do_process_requests()
   for (int i=0; i < timing_req_l_arr_.size (); i++)
     {
       Timing_req * tr_l = timing_req_l_arr_[i];
-      Meter_change_req *m_l = tr_l->meterchange();
+      Time_signature_change_req *m_l = tr_l->access_Time_signature_change_req ();
       if (m_l)
        {
          int b_i= m_l->beats_i_;
          int o_i = m_l->one_beat_i_;
-         if (! time_.allow_meter_change_b())
-           tr_l->warning (_("Meter change not allowed here"));
+         if (! time_.allow_time_signature_change_b())
+           tr_l->warning (_ ("time signature change not allowed here"));
          else
            {
-             time_.set_meter (b_i, o_i);
+             time_.set_time_signature (b_i, o_i);
              default_grouping_ =
                Rhythmic_grouping (MInterval (0,Moment (b_i, o_i)), b_i);
            }
        }
-      else if (tr_l->partial())
+      else if (tr_l->access_Partial_measure_req ())
        {
-         Moment m = tr_l->partial()->duration_;
+         Moment m = tr_l->access_Partial_measure_req ()->duration_;
          String error = time_.try_set_partial_str (m);
          if (error.length_i ())
            {
@@ -81,26 +80,27 @@ Timing_translator::do_process_requests()
          else
            time_.setpartial (m);
        }
-      else if (tr_l->barcheck())
+      else if (tr_l->access_Barcheck_req())
        {
          if (time_.whole_in_measure_)
            {
-             tr_l ->warning (_("Barcheck failed"));
+             tr_l ->warning (_f ("barcheck failed by: %s", 
+               time_.whole_in_measure_.str ()));
 
              time_.whole_in_measure_ = 0; // resync
              time_.error_b_ = true;
            }
 
        }
-      else if (tr_l->cadenza())
+      else if (tr_l->access_Cadenza_req ())
        {
-         time_.set_cadenza (tr_l->cadenza()->on_b_);
+         time_.set_cadenza (tr_l->access_Cadenza_req ()->on_b_);
        }
-      else if (tr_l->measuregrouping())
+      else if (tr_l->access_Measure_grouping_req ())
        {
          default_grouping_ =
-           parse_grouping (tr_l->measuregrouping()->beat_i_arr_,
-                           tr_l->measuregrouping()->elt_length_arr_);
+           parse_grouping (tr_l->access_Measure_grouping_req ()->beat_i_arr_,
+                           tr_l->access_Measure_grouping_req ()->elt_length_arr_);
 
        }
     }
index a5bc9d48504afb3bd1e37512fe190ae107282f98..f4a9ab245e4d8262e1164d02a262a4d28355283d 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translation-property.hh"
@@ -15,6 +15,6 @@ void
 Translation_property::do_print () const
 {
 #ifndef NPRINT
-  DOUT << "." << var_str_ << " = " << String(value_);
+  DOUT << "." << var_str_ << " = " << value_;
 #endif
 }
index 7a65215c810a41a0594d391833237b4c775848dd..1541b32722e9adc12e73c0bd151e61c5b06dcdf4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
 #include "dictionary.hh"
 #include "debug.hh"
 
+/*
+  should delete these after exit.
+ */
+
 Dictionary<Translator*> *global_translator_dict_p=0;
 
 void
@@ -28,10 +32,12 @@ get_translator_l (String s)
 {
   if (global_translator_dict_p->elt_b (s))
     {
-      return (*global_translator_dict_p)[s];
+//      return (*global_translator_dict_p)[s];
+       Translator* t = (*global_translator_dict_p)[s];
+       return t;
     }
 
-  error (_("Unknown translator `") + s +"\'");
+  error (_f ("unknown translator `%s\'", s));
   return 0;
 }
 
index 5846c2bb37dac7c543e3449103ee9a551ae0ad24..f1da4dbdf9abbb7559687e3af276a852e07319ad 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "music-output-def.hh"
@@ -146,7 +146,7 @@ Translator_group::find_create_translator_l (String n, String id)
     ret = daddy_trans_l_->find_create_translator_l (n,id);
   else
     {
-      warning (_("Can't find or create `") + n + _("' called `") + id + "'\n");
+      warning (_f ("can't find or create `%s\' called `%s\'", n, id));
       ret =0;
     }
   return ret;
@@ -206,7 +206,7 @@ Translator_group::nongroup_l_arr () const
 void
 Translator_group::terminate_translator (Translator*r_l)
 {
-  DOUT << "Removing " << r_l->name() << " at " << now_moment () << "\n";
+  DOUT << "Removing " << r_l->name() << " at " << now_moment () << '\n';
   r_l->removal_processing();
   Translator * trans_p =remove_translator_p (r_l);
 
@@ -258,6 +258,11 @@ Translator_group::get_default_interpreter()
   if (accepts_str_arr_.size())
     {
       Translator*t = output_def_l ()->find_translator_l (accepts_str_arr_[0]);
+      if (!t)
+       {
+         warning (_f ("can't find or create `%s\'", accepts_str_arr_[0]));
+         t = this;
+       }
       Translator_group * g= t->clone ()->group_l ();
       add (g);
 
@@ -302,7 +307,7 @@ Translator_group::do_print() const
     {
       if (id_str_.length_i ())
        DOUT << "ID: " << id_str_ ;
-      DOUT << " iterators: " << iterator_count_<< "\n";
+      DOUT << " iterators: " << iterator_count_<< '\n';
     }
   each (&Translator::print);
 #endif
@@ -345,7 +350,7 @@ Translator_group::do_add_processing ()
     {
       Translator * t = output_def_l ()->find_translator_l (consists_str_arr_[i]);
       if (!t)
-       warning (_("Could not find `") +consists_str_arr_[i]+ "'");
+       warning (_f ("can't find `%s\'", consists_str_arr_[i]));
       else
        add (t->clone ());
     }
index ae5562579e8d694e530a0f8f21a61629c65cc101..3f00ff928f1b318d396269b73537e921417024ed 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 
@@ -78,7 +78,7 @@ Translator::print () const
     DOUT << "type = " << type_str_;
   for (Dictionary_iter<Scalar> i (properties_dict_); i.ok (); i++)
     {
-      DOUT << i.key () << "=" << i.val () <<"\n";
+      DOUT << i.key () << "=" << i.val () << '\n';
     }
   do_print ();
   DOUT << "}\n";
index bd85e4051432b0512729c54a29eb2a5bbfa50939..58dceb1b1d554068569e33b6b4772b8c5f0cb36f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "type-swallow-trans.hh"
index 205e259b25598c7361d50c893f7e3f8939239599..787f001831c50b839e5a2a93ee389a6be989f833 100644 (file)
@@ -1,21 +1,11 @@
 #include "main.hh"
-
 #include "string.hh"
 
 char const * lily_version_sz();
-char const * lily_version_number_sz();
 
 String 
 get_version_str()
 {
   String s = lily_version_sz();
-  s+="/";
-  s+=flower_version_sz();
-   return s;
-}
-
-String
-get_version_number_str()
-{
-  return lily_version_number_sz();
+  return s;
 }
diff --git a/lily/vertical-align-elem.cc b/lily/vertical-align-elem.cc
deleted file mode 100644 (file)
index dbd8e4b..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-  vertical-align-item.cc -- implement Vertical_align_elem
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "vertical-align-elem.hh"
-#include "interval.hh"
-
-void
-Vertical_align_element::add (Score_elem*el_l)
-{
-  assert (! contains_b (el_l));
-  elem_l_arr_.push (el_l);
-  add_dependency (el_l);
-}
-
-void
-Vertical_align_element::do_substitute_dependency (Score_elem*o,Score_elem*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);
-}
-
-/**
-  Align elements top to bottom. 
-  The first element has its top at y =0.0 afterwards
-
-  TODO configurable, like Horizontal_align_item
- */
-void
-Vertical_align_element::do_post_processing()
-{
-  Array<Interval> dims;
-  for (int i=0; i < elem_l_arr_.size(); i++) 
-    {
-      Interval y = elem_l_arr_[i]->height() ;
-      if (y.empty_b())
-       y = Interval (0,0);
-       
-      dims.push (y);
-    }
-
-  Real where_f=0;
-  for (int i=0 ;  i < elem_l_arr_.size(); i++) 
-    {
-      elem_l_arr_[i]->translate_axis (- dims[i][1] - where_f, Y_AXIS);
-      where_f += dims[i].length();
-    }
-}
-
-bool
-Vertical_align_element::contains_b (Score_elem const *e) const
-{
-  return elem_l_arr_.find_l (e);
-}
-
-Vertical_align_element::Vertical_align_element()
-{
-  transparent_b_ = true;
-  set_empty (true);
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Vertical_align_element, Score_elem);
-
diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc
new file mode 100644 (file)
index 0000000..2f56e3b
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+  vertical-align-grav.cc -- implement Vertical_align_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "p-col.hh"
+#include "vertical-align-engraver.hh"
+#include "vertical-align-spanner.hh"
+#include "vertical-group-spanner.hh"
+
+Vertical_align_engraver::Vertical_align_engraver()
+{
+  valign_p_ =0;
+}
+
+void
+Vertical_align_engraver::do_creation_processing()
+{
+  valign_p_ =new Vertical_align_spanner;
+  valign_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
+  announce_element (Score_element_info (valign_p_ , 0));
+}
+
+void
+Vertical_align_engraver::do_removal_processing()
+{
+  Scalar dist (get_property ("maxVerticalAlign"));
+  if (dist.length_i () && dist.isnum_b ())
+    {
+      valign_p_->threshold_interval_[BIGGER]  = Real (dist);
+    }
+
+  dist = get_property ("minVerticalAlign");
+  if (dist.length_i () && dist.isnum_b ())
+    {
+      valign_p_->threshold_interval_[SMALLER]  = Real (dist);
+    }
+  
+  valign_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
+  typeset_element (valign_p_);
+  valign_p_ =0;
+}
+
+void
+Vertical_align_engraver::acknowledge_element (Score_element_info i)
+{
+  if (i.origin_grav_l_arr_.size() == 1 && 
+      i.elem_l_->is_type_b (Vertical_group_spanner::static_name()) &&
+      !i.elem_l_->axis_group_l_a_[Y_AXIS]) 
+    {
+      assert (!valign_p_->contains_b (i.elem_l_));
+
+      valign_p_->add_element (i.elem_l_);
+    }
+}
+
+
+IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver);
+ADD_THIS_TRANSLATOR(Vertical_align_engraver);
diff --git a/lily/vertical-align-grav.cc b/lily/vertical-align-grav.cc
deleted file mode 100644 (file)
index 8024ab5..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-  vertical-align-grav.cc -- implement Vertical_align_engraver
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
-*/
-
-#include "p-col.hh"
-#include "vertical-align-grav.hh"
-#include "vertical-align-spanner.hh"
-#include "vertical-group-elem.hh"
-
-Vertical_align_engraver::Vertical_align_engraver()
-{
-  valign_p_ =0;
-}
-
-void
-Vertical_align_engraver::do_creation_processing()
-{
-  valign_p_ =new Vertical_align_spanner;
-  valign_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
-  announce_element (Score_elem_info (valign_p_ , 0));
-}
-
-void
-Vertical_align_engraver::do_removal_processing()
-{
-  valign_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
-  typeset_element (valign_p_);
-  valign_p_ =0;
-}
-
-void
-Vertical_align_engraver::acknowledge_element (Score_elem_info i)
-{
-  if (i.origin_grav_l_arr_.size() == 2 && 
-       i.elem_l_->is_type_b (Vertical_group_element::static_name()) &&
-       !i.elem_l_->axis_group_l_a_[Y_AXIS]) 
-    {
-      assert (!valign_p_->contains_b (i.elem_l_));
-
-      valign_p_->add (i.elem_l_);
-    }
-}
-
-
-IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver);
-ADD_THIS_TRANSLATOR(Vertical_align_engraver);
index cc8c0da9ab003fd4ebf8b5ee805717f45604d47c..f5b0095a2cebd89ef92f82e0dddb473087849f89 100644 (file)
@@ -3,10 +3,21 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "vertical-align-spanner.hh"
 
 
-IMPLEMENT_IS_TYPE_B2(Vertical_align_spanner, Vertical_align_element, Spanner);
+IMPLEMENT_IS_TYPE_B2(Vertical_align_spanner, Align_element, Spanner);
+
+Vertical_align_spanner::Vertical_align_spanner ()
+{
+  axis_ = Y_AXIS;
+}
+
+void
+Vertical_align_spanner::do_print ()const
+{
+    Align_element::do_print () ;
+}
index 79e22317e07bfd338e91e9bf80eab0405c3f316c..61c644676cdbe4652f05f2a3217fc30897356ff3 100644 (file)
@@ -3,36 +3,24 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
-#include "vertical-group-elem.hh"
+#include "vertical-group-element.hh"
 #include "interval.hh"
 #include "item.hh"
 #include "debug.hh"
 
-void
-Vertical_group_element::add_element (Graphical_element*e)
-{
-  axis_admin_.add_element (e, this, Y_AXIS, Y_AXIS);
-}
 
-void
-Vertical_group_element::remove_element (Graphical_element*e)
+Vertical_group_element::Vertical_group_element()
+  : Axis_group_element (Y_AXIS,Y_AXIS)
 {
-  axis_admin_.remove_element (e, Y_AXIS, Y_AXIS);
 }
 
-
 Interval
 Vertical_group_element::do_height() const
 {
-  return axis_admin_.extent (Y_AXIS);
-}
-void
-Vertical_group_element::remove_all()
-{
-  axis_admin_.remove_all (Y_AXIS,Y_AXIS);
+  return Graphical_axis_group::extent (Y_AXIS);
 }
 
 IMPLEMENT_IS_TYPE_B1(Vertical_group_element, Axis_group_element);
index c3a4c2a94cf4b3d527e3da2889cd7fd688535e9d..2197db7fdd8b7548b0194d462786efed25162a68 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "vertical-group-spanner.hh"
@@ -12,3 +12,8 @@
 
 IMPLEMENT_IS_TYPE_B2(Vertical_group_spanner, Axis_group_spanner, Vertical_group_element);
 
+
+Vertical_group_spanner::Vertical_group_spanner ()
+{
+  axis1_ = axis2_ = Y_AXIS;
+}
index 971b22a924d694b80445888eb8b6cfcb56e6e5db..a640580afa5d26d0af28f64bc76c8f7a2b376946 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "translator-group.hh"
index 33261d8f5ac7d2e5388c4f9591f97e1b955f6a7c..24eecc759e2f0eeed15c85432ad610f7fc635b35 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "proto.hh"
@@ -33,6 +33,6 @@ error_t (String const & s, Moment const & r)
 void
 error_t (String const & s, Time_description const &t_tdes)
 {
-  String e=s+ " (at t=" +  String(t_tdes.bars_i_) + ": " +  (t_tdes.whole_in_measure_).str () + ")\n";
+  String e=s+ " (at t=" +  to_str (t_tdes.bars_i_) + ": " +  (t_tdes.whole_in_measure_).str () + ")\n";
   error (e);
 }
index d8c0804788f13f3e6af50d87d3125da891b92e1e..55c683713683b56b3e61dd104519bccdc8ee6b43 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the LilyPond music typesetter
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "word-wrap.hh"
    similar to TeX's is in Gourlay_breaking
 
    */
-Array<Col_hpositions>
+Array<Column_x_positions>
 Word_wrap::do_solve() const
 {
   problem_OK();
 
   PCursor<Paper_column*> curcol (pscore_l_->col_p_list_.top());
-  Array<Col_hpositions> breaking;
+  Array<Column_x_positions> breaking;
   Line_of_cols breakpoints (find_breaks());
   assert (breakpoints.size()>=2);
 
@@ -35,14 +35,14 @@ Word_wrap::do_solve() const
   int line_no_i = 0;
   while (break_idx_i < breakpoints.size() -1)
     {
-      Col_hpositions minimum;
-      Col_hpositions current;
+      Column_x_positions minimum;
+      Column_x_positions current;
 
       // do  another line
       line_no_i ++;
       Paper_column *post = breakpoints[break_idx_i]->postbreak_l();
       int start_break_idx = break_idx_i;
-      current.add (post);
+      current.add_paper_column (post);
       curcol++;                // skip the breakable.
       break_idx_i++;
 
@@ -52,10 +52,10 @@ Word_wrap::do_solve() const
          // add another measure.
          while (breakpoints[break_idx_i] != curcol.ptr())
            {
-             current.add (curcol);
+             current.add_paper_column (curcol);
              curcol++;
            }
-         current.add (breakpoints[break_idx_i]->prebreak_l());
+         current.add_paper_column (breakpoints[break_idx_i]->prebreak_l());
 
          current.spacer_l_ = generate_spacing_problem (current.cols, 
            pscore_l_->paper_l_->line_dimensions_int (line_no_i));
@@ -65,9 +65,9 @@ Word_wrap::do_solve() const
            {
              if (!minimum.cols.size())
                {
-                 warning (_("Ugh, this measure is too long, breakpoint: ")
-                          + String (break_idx_i) +
-                          _(" (generating stupido solution)"));
+                 warning (_ ("ugh, this measure is too long") 
+                   + ", " + _f ("breakpoint: %d", break_idx_i) 
+                   + "(" + _ ("generating stupido solution") + ")");
                  current.stupid_solution();
                  current.energy_f_ = - 1; // make sure we break out.
                }
@@ -85,7 +85,7 @@ Word_wrap::do_solve() const
 
          if (!current.satisfies_constraints_b_ && start_break_idx == break_idx_i - 1)
            {
-             warning ( _ ("I don't fit.  Put me on Montignac"));
+             warning ( _ ("I don't fit; put me on Montignac"));
              minimum = current;
              break;
            }
@@ -108,7 +108,7 @@ Word_wrap::do_solve() const
          break_idx_i++;
        }
 
-      *mlog << "[" <<break_idx_i<<"]"<<flush;
+      *mlog << "[" << break_idx_i << "]" << flush;
       breaking.push (minimum);
     }
   return breaking;
index b8428e2e0c2aeadf9bacf3928fa5cb2ea00a179e..4b1c2612a4caa4be1eaa5ad4b412df0f4fe1d632 100644 (file)
@@ -1,47 +1,3 @@
-# special rules for the documentation section.
-# There are too many to add to the general rules
-
-.SUFFIXES: .pod .1 $(DOTTEXT) .html
-
-pod2html=pod2html
-pod2groff=pod2man --center="LilyPond documentation" --section="0"\
-       --release="LilyPond $(VERSION)" $< > $@
-
-$(outdir)/%.gif: %.xpm
-       xpmtoppm $< | ppmtogif > $@
-
-$(outdir)/%.dvi: $(outdir)/%.mudtex
-       latex '\nonstopmode \input $<'
-       mv $(notdir $@) $(outdir)
-
-$(outdir)/%.mudtex: %.doc
-       $(depth)/bin/out/mudela-book  --outdir=$(outdir)/ --outname=$(notdir $@) $<
-
-$(outdir)/%$(DOTTEXT): $(outdir)/%.1
-       troff -man -Tascii $< | grotty -b -u -o > $@
-
-#  perl 5.003/4
-POD2HTML5004=$(POD2HTML) --noindex --infile $< --outfile=$@;  sh $(depth)/bin/add-URLs.sh $@
-
-POD2HTML5003=$(POD2HTML) $< ; mv $(notdir $@) $(outdir)/
-
-# we'll set pod2html5004 to default (hopefully), for now,
-# because almost everybody has that version.
-# 5004's pod2hmtl is broken, though; you should use pod2html of 5003
-do_pod2html=$(POD2HTML5004)
-# do_pod2html=$(POD2HTML5003)
-
-$(outdir)/%.html: %.pod $(depth)/VERSION
-       $(do_pod2html) 
-       add-html-footer $@
-
-$(outdir)/%.html: %.data $(depth)/VERSION
-       table-to-html $< $@
-       add-html-footer $@
-
-$(outdir)/%.5: %.pod
-       $(pod2groff)
-
-$(outdir)/%.1: %.pod
-       $(pod2groff)
+# Docrules.make
 
+include $(make-dir)/Mudela_rules.make
diff --git a/make/Executable.make b/make/Executable.make
deleted file mode 100644 (file)
index 69894dd..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-localinstall: installexe
-
-localuninstall: uninstallexe
-
-installexe: all
-       $(INSTALL) -d $(bindir)
-       for a in $(EXECUTABLES); do \
-               $(INSTALL) -m 755 $(outdir)/$$a $(bindir); \
-       done    
-
-uninstallexe:
-       for a in $(EXECUTABLES); do \
-               rm -f $(bindir)/$$a; \
-       done    
-
diff --git a/make/Files.make b/make/Files.make
deleted file mode 100644 (file)
index 31cdf0e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-# list of c++ header files:
-# 
-HHFILES = $(wildcard *.hh)
-#
-
-# list of c++ inline files:
-# 
-INLFILES = $(wildcard *.icc)
-#
-
-# list of c++ template files:
-# 
-
-TCCFILES = $(wildcard *.tcc)
-
-#
-# list of other source files:
-#
-
-EXTRA_SOURCE_FILES = $(wildcard *.yy *.ll)
-
-#
-PODFILES = $(wildcard *.pod)
-OUTPODFILES = $(addprefix $(outdir)/,$(PODFILES))
-
-
-CCFILES = $(wildcard *.cc)
-MAKEFILES = $(wildcard *.make)
-
-ALL_SOURCES=$(HHFILES) $(CCFILES) $(EXTRA_SOURCE_FILES) $(INLFILES) \
-       $(TCCFILES) $(PODFILES) $(MAKEFILES)
-
-DEPFILES = $(wildcard $(depdir)/*.dep)
-
-
-all-tag-sources=$(CCFILES) $(HHFILES) $(TCCFILES)
diff --git a/make/Include.make b/make/Include.make
deleted file mode 100644 (file)
index 0416201..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-# project  LilyPond -- the musical typesetter
-# title           generic red tape for include/Makefile
-# file    make/Include.make
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-
-# identify module:
-#
-
-
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Version.make 
-include ./$(depth)/make/Files.make
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
diff --git a/make/Initial.make b/make/Initial.make
deleted file mode 100644 (file)
index 3252290..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# project  LilyPond -- the musical typesetter
-# title           initial makefile for lilypond
-# file    make/Initial.make
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-# subdir level:
-#
-depth = ..
-#
-
-# ugh
-NAME = dummy 
-MAJOR_VERSION = $(TOPLEVEL_MAJOR_VERSION)
-MINOR_VERSION = $(TOPLEVEL_MINOR_VERSION)
-PATCH_LEVEL = $(TOPLEVEL_PATCH_LEVEL)
-# use to send patches, always empty for released version:
-MY_PATCH_LEVEL = $(TOPLEVEL_MY_PATCH_LEVEL)
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make 
-#
-
-
-# ugh
-# initdefault: $(CCDIR)/parser.cc $(CCDIR)/lexer.cc hdr/version.hh alldeps
-initdefault: dummydep
-#      $(MAKE) -C ./$(depth)/lily $(outdir)/parser.cc
-
-# generic targets and rules:
-#
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-#
-
diff --git a/make/Install_outfiles.make b/make/Install_outfiles.make
deleted file mode 100644 (file)
index 1991708..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-localinstall: localinstall-files
-
-localinstall-files: $(INSTALLATION_OUT_FILES)
-       $(INSTALL) -d $(INSTALLATION_OUT_DIR)
-       $(INSTALL) -m 644 $(INSTALLATION_OUT_FILES) $(INSTALLATION_OUT_DIR)
-
-localuninstall: localuninstall-files
-
-localuninstall-files:
-       for i in $(notdir $(INSTALLATION_OUT_FILES)) ; do \
-               rm -f $(INSTALLATION_OUT_DIR)/$$i; \
-       done
-       -rmdir $(INSTALLATION_OUT_DIR)
diff --git a/make/Install_outfiles.sub.make b/make/Install_outfiles.sub.make
deleted file mode 100644 (file)
index e89aba9..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-
-# project  LilyPond -- the musical typesetter
-# title           generic red tape for include/Makefile
-# file    make/Include.make
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-
-# identify module:
-#
-
-
-include $(depth)/make/Variables.make
-include $(depth)/make/Version.make 
-include $(depth)/make/Files.make
-include $(depth)/make/Targets.make
-include $(depth)/make/Rules.make
-include $(depth)/make/Install_outfiles.make
diff --git a/make/Installfiles.make b/make/Installfiles.make
deleted file mode 100644 (file)
index 52ee991..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-localinstall: localinstall-files
-
-localinstall-files:
-       $(INSTALL) -d $(INSTALLATION_DIR)
-       $(INSTALL) -m 644 $(INSTALLATION_FILES) $(INSTALLATION_DIR)
-
-localuninstall: localuninstall-files
-
-localuninstall-files:
-       for i in $(INSTALLATION_FILES) ; do \
-               rm -f $(INSTALLATION_DIR)/$$i; \
-       done
-       -rmdir $(INSTALLATION_DIR)
diff --git a/make/Lilypond.make b/make/Lilypond.make
new file mode 100644 (file)
index 0000000..1452731
--- /dev/null
@@ -0,0 +1,6 @@
+
+export PATH:=$(topdir)/lily/out:$(topdir)/buildscripts/out:$(PATH)
+export MFINPUTS:=$(topdir)/mf/:.:$(MFINPUTS)::
+export TEXINPUTS:=$(topdir)/tex/:.:$(TEXINPUTS)::
+export LILYINCLUDE=$(topdir)/init:$(topdir)/mf/out
+
index 764fcc56620444f9283db49a64985bd7d6cad4c2..7514481657b33f857a991af23f987a2318ea7974 100644 (file)
@@ -1,62 +1,9 @@
-#
-# project  LilyPond -- the musical typesetter
-# title           zucht
 # file    make/Makefile 
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-#              ...your sort order here, or how to comment-out a comment
 
-# subdir level:
-#
 depth = ..
-#
 
-# identify module:
-#
-SUBDIRS = 
+include $(depth)/make/Stepmake.make 
+BLURBS=BLURB COPERTINA FLAPTEKST
 
-# two outdir files are distributed, since they make sense to have without running 
-# configure and make.
-
-LSMENTRY=$(outdir)/lilypond.lsm
-RPMSPEC=$(outdir)/lilypond.spec 
-RPMRC=$(outdir)/rpmrc
-IN_FILES = $(wildcard *.in)
-EXTRA_DISTFILES = $(IN_FILES)
-OUT_DISTFILES= $(outdir)/lelievijver.lsm $(LSMENTRY) $(RPMSPEC)
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Files.make 
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-
-default: $(RPMSPEC) $(LSMENTRY) $(RPMRC)
-
-
-rpmdocs=BUGS TODO NEWS DEDICATION ANNOUNCE README
-rpmdvis=$(rpmmudocs:.doc=.dvi)
-rpmexamples= $(addprefix input/, $(notdir $(shell ls $(depth)/input/*.ly)))
-
-
-date = $(shell date '+%d%b%y'|tr a-z A-Z)
-sed-date=sed 's!@DATE@!${date}!g'
-sed-examples = sed 's!@EXAMPLE_LYS@!${rpmexamples} ${rpmmudocs}!g'
-sed-docs=sed 's!@TEXT_DOCS@!${rpmdocs}!g'
-sed-dottext=sed 's!@DOTTEXT@!${DOTTEXT}!g'
-sed-rootdir=sed 's!@LILYPOND_ROOTDIR@!${LILYPOND_ROOTDIR}!g'
-
-$(outdir)/%.spec: %.spec.in $(depth)/VERSION
-       cat $< | $(sed-version) | $(sed-docs) | $(sed-examples) \
-       | $(sed-dottext)> $@
-
-$(outdir)/%.lsm: %.lsm.in $(depth)/VERSION
-       cat $< | $(sed-version) | $(sed-date) > $@
-
-$(outdir)/%: %.in
-       cat $< | $(sed-rootdir) > $@
+include $(stepdir)/Makedir.shared.make
 
diff --git a/make/Manual.make b/make/Manual.make
deleted file mode 100644 (file)
index 2914e59..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-MANFILES = lilypond convert-mudela mi2mu mudela-book
-MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION)))
-
-
-
-localinstall: $(MANGROFFS)
-       $(INSTALL) -d $(mandir)/man$(SECTION)
-       $(INSTALL) -m 644 $(MANGROFFS) $(mandir)/man$(SECTION)
-
-
-localuninstall:
-       (cd  $(mandir)/man$(SECTION)/; rm -f $(MANGROFF))
-
-
-
-
diff --git a/make/Mudela_rules.make b/make/Mudela_rules.make
new file mode 100644 (file)
index 0000000..5a7d8ef
--- /dev/null
@@ -0,0 +1,11 @@
+# Mudela_rules.make
+
+.SUFFIXES: .doc .dvi .mudtex
+
+$(outdir)/%.dvi: $(outdir)/%.mudtex
+       latex '\nonstopmode \input $<'
+       mv $(notdir $@) $(outdir)
+
+$(outdir)/%.mudtex: %.doc
+       $(PYTHON) $(depth)/scripts/mudela-book.py --outdir=$(outdir)/ --outname=$(notdir $@) $<
+
index 7a7a5ec6bfe8528b48975822f2a42b0399c8ac8a..db95a60b6665f8cca83e33f1dca690c509ff86a5 100644 (file)
@@ -1,29 +1,41 @@
-# list of distribution files:
-# 
+# make/Mutopia.make
 
-include $(depth)/make/Include.make
-LYFILES = $(wildcard *.ly)
-M4FILES = $(wildcard *.m4)
-DISTFILES = Makefile $(EXTRA_DISTFILES) $(LYFILES) $(wildcard *.m4)
+FLY_FILES = $(wildcard *.fly)
+LY_FILES = $(wildcard *.ly)
+M4_FILES = $(wildcard *.m4)
+LYM4_FILES = $(wildcard *.lym4)
+DIST_FILES = Makefile $(EXTRA_DIST_FILES) $(FLY_FILES) $(LY_FILES) $(M4_FILES) $(LYM4_FILES)
 #
 
-OUTFILES = $(addprefix $(outdir)/,$(M4FILES:%.m4=%))
-
-all: $(OUTFILES)
+include $(depth)/make/Lilypond.make
 
+OUT_FILES = $(addprefix $(outdir)/,$(M4_FILES:%.m4=%)) \
+ $(addprefix $(outdir)/,$(LYM4_FILES:%.lym4=%.ly))
 
+all: $(OUT_FILES)
 
 name-stem= $(notdir $(basename $<))
 
 $(outdir)/%.gif: $(outdir)/%.ps
-       sh $(depth)/bin/ps-to-gifs.sh $<
-       mv $(name-stem)-page*.gif $(outdir)/
+       sh $(buildscripts)/ps-to-gifs.sh $<
+       -mv $(name-stem)-page*.gif $(outdir)/
        touch $@
 
-$(outdir)/%.ly$(DOTTEXT): %.ly
+$(outdir)/%.ly.txt: %.ly
+       ln -f $< $@
+
+$(outdir)/%.fly.txt: %.fly
        ln -f $< $@
 
+# don't junk intermediate .dvi files.  They're easier to view than
+# .ps or .gif
+.PRECIOUS: $(outdir)/%.dvi
+
 $(outdir)/%.dvi: %.ly
-       ly2dvi -o $(outdir)  $< 
+       sh $(depth)/scripts/ly2dvi.sh -S $(topdir) -o $(outdir)  $< 
+       -mv $(basename $<).midi $(outdir)
+
+$(outdir)/%.dvi: %.fly
+       sh $(depth)/scripts/ly2dvi.sh -S $(topdir) -o $(outdir)  $< 
        -mv $(basename $<).midi $(outdir)
 
index f7f3d7fe4ac24fdd0b97d845d280a69c1ecbbe2f..8ea9451bdcca8fd1684e4b4dd57deed36226b4c2 100644 (file)
@@ -1,60 +1,29 @@
-#
-# project  LilyPond -- the musical typesetter
-# title           generic make rules
+# title           package specific rules
 # file    make/Rules.make
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-
-# this is supposed to clear all suffixes:
-.SUFFIXES:
-
-.SUFFIXES: .cc .o .hh .y .l  .dep
-
-
-# compile rules:
-#
-$(outdir)/%.o: %.cc
-       $(DO_CXX_COMPILE)
-
-$(outdir)/%.o: $(outdir)/%.cc
-       $(DO_CXX_COMPILE)
-
-$(outdir)/%.cc: %.yy
-       $(BISON) $<
-       mv $<.tab.c $@
-
-$(outdir)/%.hh: %.yy
-       $(BISON) -d $<
-       mv $<.tab.h $@
-       mv $<.tab.c $(outdir)/$(shell basename $@ .hh).cc
-
-$(outdir)/%.cc: %.ll
-       $(FLEX) -Cfe -p -p -t $< > $@
-# could be faster:
-#      $(FLEX) -8 -Cf -t $< > $@
-
-$(outdir)/%: %.m4
-       $(M4) $< > $@
 
 # urg
 $(outdir)/%.ly: %.lym4
        $(M4) $< | sed "s/\`/,/g" > $@
 
-# outdirs:
-#
-# ?$(outdir)/%.dep:
-%.dep:
-       touch $@
+$(outdir)/%: %.in
+       rm -f $@
+       cat $< | $(sed-atfiles) | $(sed-atvariables) > $@
 
-%.gz: %
-       gzip -c9 $< > $@
 
-$(depth)/%$(DOTTEXT): check-doc-deps
-       rm -f $@
-       ln `find ${depth}/Documentation -name ${@F} -print|head -1 ` $@
 
-$(outdir)/%.ps: $(outdir)/%.dvi
-       dvips -o $@ $<
+include $(depth)/make/Substitute.make
+
+# $(depth)/make/$(outdir)/%.make: $(depth)/make/%.in
+#      rm -f $@
+#      echo "$(basename $(@F)) = \\" > $@
+#      cat $< | $(sed-newline) | $(sed-endline) | $(sed-quotes) >> $@
+#      echo >> $@
+#      echo >> $@
+
+# HUH???
+$(outdir)/%.hh: $(doc-dir)/%.in
+       rm -f $@
+       echo '_(' > $@
+       cat $< | $(sed-quotes) | $(sed-newline) | $(sed-quote-line) >> $@
+       echo ');' >> $@
 
diff --git a/make/STATE-VECTOR b/make/STATE-VECTOR
new file mode 100644 (file)
index 0000000..f6bbf4b
--- /dev/null
@@ -0,0 +1,60 @@
+0.1.76
+0.1.76.jcn1
+0.1.77
+0.1.77.uu1
+0.1.77.hwjc
+0.1.77.jcn1
+0.1.77.jcn2
+0.1.77.hwn1
+0.1.78
+0.1.78.hwn1
+0.1.78.jcn1
+0.1.78.jcn2
+0.1.79
+0.1.79.hwn1
+0.1.79.jcn2
+0.1.80
+0.1.80.jcn1
+0.1.80.eb1
+0.1.80.hwn1
+0.1.81
+0.1.81.jcn1
+0.1.81.jbr2
+0.1.81.jcn2
+0.1.81.jbr1
+0.1.81.jcn1
+0.1.81.hwn1
+0.1.81.hwn2
+0.1.82
+0.1.82.jcn1
+0.1.82.jcn2
+0.1.82.jcn3
+0.1.82.jcn4
+0.1.82.jcn5
+0.1.82.hwn1
+0.1.82.hwn2
+0.1.83
+0.1.83.hwn1
+0.1.83.jcn1
+0.1.83.uu1
+0.1.83.hwn1
+0.1.83.hwn2
+0.1.83.hwn3
+0.1.83.hwn4
+0.1.83.hwn5
+0.1.83.jcn4
+0.1.84
+0.1.84.jcn1
+0.1.84.hwn1
+0.1.84.jcn2
+0.1.84.hwn2
+0.1.84.jcn3
+0.1.84.hwn4
+0.1.85
+0.1.85.jcn1
+0.1.85.hwn1
+0.1.85.jcn2
+1.0.0
+1.0.0.hwn1
+1.0.0.hwn2
+1.0.1
diff --git a/make/Scripts.make b/make/Scripts.make
deleted file mode 100644 (file)
index 151afe1..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-PERL_SCRIPTS_IN = $(wildcard *.pl)
-PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.pl=))
-SH_SCRIPTS_IN = $(wildcard *.sh)
-SH_SCRIPTS = $(addprefix $(outdir)/, $(SH_SCRIPTS_IN:.sh=))
-PYTHON_SCRIPTS_IN = $(wildcard *.py)
-PYTHON_SCRIPTS = $(addprefix $(outdir)/, $(PYTHON_SCRIPTS_IN:.py=))
-ALL_SCRIPTS_IN = $(SH_SCRIPTS_IN) $(PERL_SCRIPTS_IN) $(PYTHON_SCRIPTS_IN)
-EXTRA_DISTFILES += $(ALL_SCRIPTS_IN)
-
-all: $(PERL_SCRIPTS) $(PYTHON_SCRIPTS) $(SH_SCRIPTS)
-
-$(outdir)/%: %.pl
-       sed 's!@PERL@!$(PERL)!' < $< > $@
-       chmod 755 $@
-
-#FIXME.  Check for bash?
-$(outdir)/%: %.sh
-       sed 's!@SH@!$(SHELL)!' < $< > $@
-       chmod 755 $@
-
-$(outdir)/%: %.py
-       sed 's!@PYTHON@!$(PYTHON)!' < $< > $@
-       chmod 755 $@
-
-
-
diff --git a/make/Stepmake.make b/make/Stepmake.make
new file mode 100644 (file)
index 0000000..883b34e
--- /dev/null
@@ -0,0 +1,26 @@
+# make/Stepmake.make
+
+include $(depth)/make/Toplevel_version.make
+
+# Don't try to outsmart us, you puny computer!
+ifeq (0,${MAKELEVEL})
+  MAKE:=$(MAKE) --no-builtin-rules
+endif
+
+ifndef config
+  configuration=config
+else
+  configuration=config-$(config)
+endif
+
+include $(depth)/$(configuration).make
+
+stepdir = $(depth)/$(stepmake)/stepmake
+include $(stepdir)/Include.make
+
+# ugh. 
+$(depth)/$(configuration).make: $(depth)/configure
+       @echo "**************************************"
+       @echo "configure changed! You should probably reconfigure manually."
+       @echo "**************************************"
+       (cd $(depth); ./config.status)
diff --git a/make/Substitute.make b/make/Substitute.make
new file mode 100644 (file)
index 0000000..16389f9
--- /dev/null
@@ -0,0 +1,20 @@
+# make/Substitute.make
+
+sed-examples = sed 's!@EXAMPLE_LYS@!${rpmexamples} ${rpmmudocs}!g'
+sed-docs=sed 's!@TEXT_DOCS@!${rpmdocs}!g'
+
+ATVARIABLES = \
+  BASH\
+  DATE\
+  date\
+  DIR_DATADIR\
+  PACKAGE\
+  package\
+  PERL\
+  PYTHON\
+  SHELL\
+  TOPLEVEL_VERSION\
+  step-bindir\
+  abs-step-bindir\
+
+
index 945587c0ff50cb30f86962e4a0cef3a848788b06..1d7f67bb1cc6ef3be316f5069dc6f389c31ad767 100644 (file)
-#
-# project  LilyPond -- the musical typesetter
-# title           generic make targets
+# title           package specific targets
 # file    make/Targets.make
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
 
-.PHONY : all clean config default dist doc doc++ dummy exe help html lib TAGS\
-       check-flower-deps check-lib-deps check-doc-deps check-html-deps
 
-# target all:
-#
-all:    default
-       $(LOOP)
-# dependency list of executable:
-#
-
-$(EXECUTABLE): $(configheader) $(OFILES) $(outdir)/version.hh
-ifdef MODULE_LIBDEPS
-       $(MAKE) $(MODULE_LIBDEPS)
-endif
-ifdef STABLEOBS
-       $(DO_STRIP) $(STABLEOBS)
-endif
-       $(LD_COMMAND) $(OFILES) $(LOADLIBES)
-
-exe: $(EXECUTABLE)
-
-
-# dependency list of library:
-#
-$(LIBRARY): $(configheader) $(OFILES)
-       $(AR_COMMAND) $(OFILES)
-       $(AR) ts $@             #silly irix
-       $(RANLIB_COMMAND)
-
-$(SHAREDLIBRARY):  $(configheader) $(OFILES) $(MODULE_LIBDEPS)
-       $(LD_COMMAND) $(OFILES) -o $@.$(VERSION)
-       rm -f $@
-       ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $@.$(MAJOR_VERSION)
-       ln -sf $(LIB_PREFIX)$(NAME).so.$(VERSION) $@
-
-#
-lib: $(LIBRARY)
-#
-
-outdirs: outdir
-       $(LOOP)
-
-outdir:
-       -mkdir -p $(outdir)
-
-# be careful about deletion.
-clean: localclean
-       -rm -f $(outdir)/*
-       touch $(outdir)/dummy.dep
-       $(LOOP)
-
-distclean: clean 
-       $(LOOP)
-       $(MAKE) local-distclean
-
-maintainerclean: 
-       $(LOOP)
-       $(MAKE) local-maintainerclean
-       $(MAKE) local-distclean
-
-
-
-# configure:
-#
-config:
-       ./$(depth)/configure
-#
-
-# dummydeps:
-#
-dummydep: $(DUMMYDEPS)
-#
-
-# value of $(OSTYPE) on windhoos...; "make $OSTYPE" if you use bash :-)
-#
-win32:  windows32 # win/lose?
-#
-windows32:
-       $(MAKE) -C . "CXX=g++ -D_WINDOWS32"
-#
-
-# xcompile to doze:
-#
-doze:  dos
-dos: 
-       $(MAKE) -C . CXX="gcc-go32 -I/usr/i386-go32/include -I/usr/i386-go32/include/g++ -D_WINDOWS32 -Dcaddr_t=char* -DMAP_SHARED=0"
-#
-
-# target help:
-#
-help:
-       @echo "Makefile for LilyPond $(TOPLEVEL_VERSION)"
-       @echo "Usage:"
-       @echo " $(MAKE) ["VARIABLE=value" ...] [target]"
-       @echo
-       @echo "targets:"
-       @echo " all clean config dist distclean doc doc++"
-       @echo " exe help lib TAGS"
-       @echo " dos:    xcomplile to dos"
-       @echo " windows32: native cygnus-gnu compile" 
-#
-
-doc:
-#      $(MAKE) -C $(depth)/Documentation do-doc
-       $(MAKE) -C $(depth)/Documentation all
-
-html: $(HTMLFILES)
-
-# ugh. should generate in out/
-dist:
-       rm -rf $(distdir)
-       -mkdir $(distdir)
-       $(MAKE) localdist
-       chmod -R a+r $(distdir)
-       chmod  a+x `find $(distdir) -type d -print`
-
-       (cd ./$(depth)/$(outdir); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz)
-
-# should be trapped
-       rm -rf $(distdir)/
-
-# ugh. should generate in out/
-dozedist: doosdist
-doosdist: check-mf-deps
-       rm -rf $(distdir)
-       -mkdir $(distdir)
-       $(MAKE) localdist
-       chmod -Rf a+rX $(distdir)
-#      ugh, the ugly way, then
-       rm -f $(distdir)/mf/$(outdir)/*.log
-       # urg
-       (cd $(distdir)/init; ln -s ../../../mf/out/*.ly .)
-       (cd $(distdir)/tex; ln -s ../../../mf/out/*.tex .)
-       (cd $(distdir); rm -rf $(NO_DOOS_DIST))
-       ln $(lilyout)/lilypond $(distdir)/bin/lilypond.exe
-       -strip -s $(distdir)/bin/lilypond.exe
-       ln $(mi2muout)/mi2mu $(distdir)/bin/mi2mu.exe
-       -strip -s $(distdir)/bin/mi2mu.exe
-       (cd ./$(depth)/$(outdir); $(ZIP) $(DIST_NAME).exe.zip $(DIST_NAME))
-# should be trapped
-       rm -rf $(distdir)/
-
-
-localdist: $(DISTFILES) $(OUT_DISTFILES)
-       touch $(outdir)/dummy.dep; \
-       mkdir $(distdir)/$(localdir)/out; \
-       $(LN) $(DISTFILES) $(distdir)/$(localdir)
-       $(LN) $(outdir)/dummy.dep $(OUT_DISTFILES) $(distdir)/$(localdir)/out
-ifdef SUBDIRS
-       set -e; for i in $(SUBDIRS); do mkdir $(distdir)/$(localdir)/$$i; \
-               $(MAKE) localdir=$(localdir)/$$i -C $$i localdist; done
-endif
-
-
-TAGS:$(all-tag-sources)
-ifdef all-tag-sources
-       -etags -CT $(all-tag-sources) $(ERROR_LOG)
-       -ctags -h ".h.hh.tcc.icc" $(all-tag-sources) $(ERROR_LOG)
-endif
-       $(LOOP)
-
-
-# version stuff:
-#
-
-$(outdir)/version.hh: VERSION
-       sh ./$(lily_bindir)/make-version.sh > $@
-
-
-# should this be in Rules?
-configure: configure.in aclocal.m4
-       autoconf - < $<> $@
-       chmod +x configure
-
-localclean:
-
-local-distclean:
-
-local-maintainerclean:
-
-install-strip:
-       $(MAKE) INSTALL="$(INSTALL) -s" install
-
-install: localinstall
-       $(LOOP)
-
-localinstall:
-
-uninstall: localuninstall
-       $(LOOP)
-
-localuninstall:
-
-# specific stuff:
-#
-$(LIBFLOWER): check-flower-deps
-
-check-flower-deps:
-       $(MAKE)  -C $(depth)/flower/ default
-
-check-lib-deps: check-flower-deps
-       $(MAKE)  -C $(depth)/lib
-
-check-doc-deps:
-       $(MAKE) -C $(depth)/Documentation
+check-dist-deps: 
+       false
 
 check-html-deps:
+       false
        $(MAKE) -C $(depth)/Documentation html
 
-$(LIBLILY): dummy
-       $(MAKE) ./$(outdir)/$(@F) -C $(depth)/lib
-
-
-# RedHat rpm package:
-#
-rpm: check-rpm-doc-deps
-       -cp $(depth)/lilypond-$(TOPLEVEL_VERSION).tar.gz $(rpm-sources)
-#      -cp $(wildcard $(depth)/Documentation/*.xpm) $(rpm-sources)
-       -cp $(wildcard $(depth)/Documentation/$(outdir)/*.gif) $(rpm-sources)
-       $(MAKE) -C $(make-dir) spec
-       rpm -ba $(makeout)/lilypond.spec
-
-check-rpm-doc-deps: 
-       $(MAKE) -C $(depth)/Documentation gifs
 
 check-mf-deps:
+       false
        $(MAKE) -C $(depth)/mf
 
+check-texinfo-deps:
+       false
+       $(MAKE) -C $(depth)/Documentation texinfo
+       $(MAKE) -C $(depth)/Documentation/man texinfo
+
+# urg!
 $(configheader): $(depth)/$(configuration).hh
        cp $< $@
 
-WWW: local-WWW
-       $(LOOP)
-
-ifneq ($(DEPFILES),)
-include $(DEPFILES)
-endif
diff --git a/make/Template.make b/make/Template.make
deleted file mode 100644 (file)
index 9da75f9..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-# THIS IS A TEMPLATE FOR SUB-PROJECT MAKEFILES
-# should we make Include-dir and Stuff-dir templates too?
-#
-# project  LilyPond -- the musical typesetter
-# title           makefile for ...
-# file    ../Makefile 
-#
-# Copyright (c) 1997 by
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-# subdir level:
-#
-depth = ..
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make 
-#
-
-# identify module:
-#
-NAME = ...
-MODULE_NAME = 
-
-# descent order into subdirectories:
-#
-SUBDIRS =
-#
-
-# module compile settings: (not generally needed!)
-#
-EXTRA_CFLAGS =
-EXTRA_CXXFLAGS =
-EXTRA_LDFLAGS =
-#
-include ./$(depth)/make/Files.make
-
-# list of extra distribution files:
-# Makefile, C++ and pod are dist'ed automatically
-EXTRA_DISTFILES = 
-
-# list of custom libraries:
-#
-CUSTOMLIBES = \
-
-LOADLIBES +=
-#
-
-# main target of this module:
-#
-default: $(EXECUTABLE)
-# default: $(LIBRARY)
-include ./$(depth)/make/Files.make 
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-#
-
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-
-EXECUTABLES=
-# include $(depth)/make/Executable.make
-
index efceff59cc6347e123dd08f86029b2dda8f46cfd..0784604257283c03d549cce7b6617ac9be46aa93 100644 (file)
@@ -1,91 +1,58 @@
 # -*-Makefile-*-
-########################################################
-# project  LilyPond -- the musical typesetter
-# title           top level makefile for LilyPond  
-# file    Makefile 
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
+# title           specific top level makefile for LilyPond  
 
 # subdir level:
 #
 depth = .
 #
 
-# identify module:
-#
-NAME = lilypond
-SUBDIRS = bin flower lib lily mf mi2mu debian\
-       Documentation init input tex make mutopia test
-include VERSION
-#
-
 # descent order into subdirectories:
 #
-
-# list of distribution files:
+SUBDIRS = scripts buildscripts  flower lib lily mf mi2mu po debian \
+       Documentation init input tex make mutopia test intl $(stepmake)
 #
-SCRIPTS = configure configure.in aclocal.m4
-README_FILES = BUGS DEDICATION ANNOUNCE-0.1 ANNOUNCE \
- COPYING ONEWS NEWS README TODO \
- INSTALL$(DOTTEXT) AUTHORS$(DOTTEXT) PATCHES$(DOTTEXT)
-EXTRA_DISTFILES = config.make.in config.hh.in .dstreamrc mudela-mode.el vimrc VERSION $(README_FILES) $(SCRIPTS) 
 
+SCRIPTS = configure aclocal.m4
+README_FILES = BUGS DEDICATION ANNOUNCE-0.1 ANNOUNCEMENT \
+ COPYING NEWS-0.1 NEWS-0.0 NEWS  TODO
+README_TXT_FILES = README.txt AUTHORS.txt INSTALL.txt PATCHES.txt
+IN_FILES := $(wildcard *.in)
+EXTRA_DIST_FILES = dstreamrc mudela-mode.el vimrc VERSION $(README_FILES)  $(SCRIPTS) $(IN_FILES)
+NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
 
 
-# generic targets and rules:
+# bootstrap stepmake:
 #
-include ./$(depth)/make/Version.make
-include ./$(depth)/make/Variables.make 
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-
+include $(depth)/make/Stepmake.make 
 #
-# override Variables.make:
-# do not dist ./Makefile (is copied from make/Toplevel.make)
-# 
-DISTFILES := $(EXTRA_DISTFILES)
-
-
 
-localdist: configure
-
-local-distclean: 
-       rm -f config.hh config.make Makefile config.cache config.status config.log
+# list of distribution files:
+#
 
-local-maintainerclean:
-       rm -f configure
 
-Makefile: make/Toplevel.make.in
-       chmod +w $@
-       echo '# WARNING WARNING WARNING WARNING' > $@
-       echo '# do not edit! this is generated from make/Toplevel.make.in' >> $@
-       cat $< >> $@
-       chmod -w $@
+include $(stepdir)/Toplevel.make
 
-website:examples htmldoc
+aclocal.m4: $(stepdir)/../aclocal.m4
+       cp $< $@
 
-htmldoc:
-       $(MAKE) CONFIGSUFFIX='www' local-WWW
-       $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
-       rm -f `find . -name \*.html~ -print`
-       tar cfz $(outdir)/htmldoc.tar.gz  `find Documentation -type d -name 'out-www' -print` out-www index.html
+website: examples htmldoc doc++
 
 examples:
-       $(MAKE) CONFIGSUFFIX='www' outdirs
        $(MAKE) CONFIGSUFFIX='www' -C input WWW
        $(MAKE) CONFIGSUFFIX='www' -C mutopia WWW
        tar --exclude='*.dvi' --exclude='*.tex' --exclude='*.ps' -czf $(outdir)/examples.tar.gz  `find input mutopia -type d -name 'out-www' -print`
 
-local-WWW: index.html
 
-index.html: Documentation/$(outdir)/topweb.html NEWS
-       $(sed-version) < Documentation/$(outdir)/topweb.html > $@
-       add-html-footer --news=NEWS $@
+localdist: do-top-doc
+
+$(package-icon):
+       $(MAKE) -C Documentation/pictures icon
+
+
+
+do-top-doc:
+       -$(MAKE) -C Documentation/topdocs/ README_TOP_FILES="$(README_TXT_FILES)" copy-to-top
+
+$(README_TXT_FILES): do-top-doc
 
-Documentation/$(outdir)/topweb.html: 
-       make -C Documentation/ html
 
-WWW-clean:
-       $(MAKE) CONFIGSUFFIX='www' clean
index 4e3ffb6c9447d97f5ec607a6c57294d387bb5ac3..4a1e24e9e2807a9ac44193a3fbd05faf461cb75e 100644 (file)
@@ -1,6 +1,7 @@
+# Toplevel_version.make
 
 include $(depth)/VERSION
-TOPLEVEL_MAJOR_VERSION :=$(MAJOR_VERSION)
+TOPLEVEL_MAJOR_VERSION:=$(MAJOR_VERSION)
 TOPLEVEL_MINOR_VERSION:=$(MINOR_VERSION)
 TOPLEVEL_PATCH_LEVEL:=$(PATCH_LEVEL)
 # use to send patches, always empty for released version:
index 2e74e16170272839304a2b5b053e245f8fd93b08..598bc732fbd4b38f3e2488bf503abb8bc9b16664 100644 (file)
@@ -1,11 +1,5 @@
-#
-# project  LilyPond -- the musical typesetter
 # title           user changeable settings
 # file    make/User.make
-#
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
 
 # will be split into CFLAGS/EXTRA_CFLAGS etc, 
 # so that defineable generically and per module
index b2e75db9ef67e38569d2053e5bb26b2481317789..82a5199a8cc60423981ab03c38ec0596938b2660 100644 (file)
@@ -1,8 +1,5 @@
-#
-# project  LilyPond -- the musical typesetter
-# title           generic variables
+# title           package specific variables
 # file    make/Variables.make
-# abstract 
 #
 # do not change this file for site-wide extensions; please use 
 # make/$(outdir)/Site.make; 
 # Any change in files in this directory (make/) would be distributed, if 
 # you do make dist 
 #
-# Copyright (c) 1997 by    
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-
-# toplevel version info, might be handy?
-#
-include $(depth)/make/Toplevel_version.make
-
-
-# Don't try to outsmart us, you puny computer!
-ifeq (0,${MAKELEVEL})
-  MAKE:=$(MAKE) --no-builtin-rules
-endif
-
-
-ifndef config
-configuration=config
-else
-configuration=config-$(config)
-endif
-
-include $(depth)/$(configuration).make
-
-# directory names:
-buildprefix=$(depth)
-
-ifdef CONFIGSUFFIX
-outdir=out-$(CONFIGSUFFIX)
-else
-outdir=out
-endif
 
 # derived names
-lily_bindir = $(depth)/bin
-distdir = $(depth)/$(outdir)/$(DIST_NAME)
-depdir = $(outdir)
-
 flowerout = $(buildprefix)/flower/$(outdir)
 libout = $(buildprefix)/lib/$(outdir)
 lilyout = $(buildprefix)/lily/$(outdir)
 mi2muout = $(buildprefix)/mi2mu/$(outdir)
-makeout = $(buildprefix)/make/$(outdir)
-docout = $(buildprefix)/Documentation/$(outdir)
-binout = $(buildprefix)/bin/$(outdir)
 
-doc-dir = $(depth)/Documentation
+buildscripts = $(depth)/buildscripts
+
+
 flower-dir = $(depth)/flower
 lib-dir = $(depth)/lib
 lily-dir = $(depth)/lily
@@ -64,60 +25,7 @@ make-dir = $(depth)/make
 include-lib = $(depth)/lib/include
 include-flower = $(depth)/flower/include
 
-
-rpm-sources = ${HOME}/rpms/SOURCES
-#
-
-configheader=$(outdir)/config.hh
-
-
-
-
-# user settings:
-#
-include $(depth)/make/User.make
-#
-#
-# need to be defined in local Makefiles:
-#
-FOOBAR = 
-# the version:
-#
-ifneq ($(MY_PATCH_LEVEL),$(FOOBAR))
-VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL).$(MY_PATCH_LEVEL)
-else
-VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
-endif
-
-ifneq ($(TOPLEVEL_MY_PATCH_LEVEL),$(FOOBAR))
-TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL).$(TOPLEVEL_MY_PATCH_LEVEL)
-else
-TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)
-endif
-#
-
-# ugh, but it gets hairy without extension..
-DOTTEXT=.txt
-
-# for rpmrc only
-LILYPOND_ROOTDIR=$(shell cd $(depth)/..; pwd)
-
-#
-# fix naming, use TOPLEVEL_ prefix _or_ MODULE?
-DIST_NAME = lilypond-$(TOPLEVEL_VERSION)
-# NO_DOOS_DIST = bin flower lib lily make mi2mu out
 NO_DOOS_DIST = flower lib lily make mi2mu out
-#
-
-# list of object files:
-#
-SOURCE_FILES = $(CCFILES) $(EXTRA_SOURCE_FILES)
-OFILEC = $(SOURCE_FILES:.c=.o)
-OFILECC = $(OFILEC:.cc=.o)
-OFILEL = $(OFILECC:.ll=.o)
-OFILEY = $(OFILEL:.yy=.o)
-OFILES = $(addprefix $(outdir)/,$(OFILEY))
-#
 
 # dummydeps
 #
@@ -129,12 +37,6 @@ DUMMYDEPS=\
 
 #
 
-# clean file lists:
-#
-ERROR_LOG = 2> /dev/null
-SILENT_LOG = 2>&1 >  /dev/null
-date = $(shell date +%x)
-
 # version stuff:
 #
 lily-version = $(lilyout)/version.hh
@@ -148,101 +50,43 @@ LIBFLOWER = $(flowerout)/$(LIB_PREFIX)flower$(LIB_SUFFIX)
 LIBLILY = $(libout)/$(LIB_PREFIX)lily$(LIB_SUFFIX)
 #
 
-# compile and link options:
-#
-ARFLAGS = ru
-CFLAGS = $(ICFLAGS) $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS)
-
-# added two warnings that are treated by cygwin32's gcc 2.7.2 as errors.
-# huh, but still, no warnings even provoced with linux's gcc 2.7.2.1?
-
-# -pipe makes it go faster, but is not supported on all platforms. 
-# EXTRA_CXXFLAGS= -Wall -Winline -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
-EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
-
-CXXFLAGS = $(CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS)
-INCLUDES =  -Iinclude -I$(outdir) -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout) 
-CXX_OUTPUT_OPTION = $< -o $@
-LDFLAGS = $(ILDFLAGS) $(USER_LDFLAGS) $(EXTRA_LDFLAGS) $(MODULE_LDFLAGS) -L$(depth)/lib/$(outdir) -L$(depth)/flower/$(outdir)
-LOADLIBES = $(EXTRA_LIBES) $(MODULE_LIBES)  -lstdc++ # need lg++ for win32, really!
-#
-
-# macro compiler:
-#
-M4 = m4
-# 
-
-# librarian:
-#
-AR = ar
-AR_COMMAND = $(AR) $(ARFLAGS) $@
-#
-RANLIB_COMMAND=$(RANLIB) $@
-# compiler:
-#
-
-DO_CXX_COMPILE=$(DODEP)\
-       $(CXX) -c $(CXXFLAGS) $(CXX_OUTPUT_OPTION) 
-
-# linker:
-#
-LD = $(CXX)
-LD_COMMAND = $(LD) $(LDFLAGS) -o $@
-#
-
-# dependencies:
-#
-depfile = $(depdir)/$(subst .o,.dep,$(notdir $@))#
-DODEP=rm -f $(depfile); DEPENDENCIES_OUTPUT="$(depfile) $(outdir)/$(notdir $@)"
-#
-
-# utils:
-#
-#FLEX = flex
-#BISON = bison
-#
-
-# generic target names:
-#
-ifdef NAME
-EXECUTABLE = $(outdir)/$(NAME)$(EXE)
-else
-EXECUTABLE =
-endif
-
-EXECUTABLES = $(EXECUTABLE)
-LIB_PREFIX = lib
-
-ifndef LIB_SUFFIX
-LIB_SUFFIX = .a
-endif
-
-LIBRARY = $(outdir)/$(LIB_PREFIX)$(NAME).a
-SHAREDLIBRARY=$(outdir)/$(LIB_PREFIX)$(NAME).so
-#
+LILYPOND_INCLUDES = -I$(include-lib) -I$(libout) -I$(include-flower) -I$(flowerout) 
+LILYPOND_LDFLAGS = -L$(depth)/lib/$(outdir) -L$(depth)/flower/$(outdir)
+LILYPOND_LIBES =
 
-#replace to do stripping of certain objects
-STRIPDEBUG=true 
 
-DISTFILES=$(EXTRA_DISTFILES) Makefile $(ALL_SOURCES)
-DOCDIR=$(depth)/$(outdir)
+# should use to create .spec ?
 
-pod2groff=$(POD2MAN) --center="LilyPond documentation" --section="0"\
-       --release="LilyPond $(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)" $< > $@
+# installed by 'make installextradoc'
+EXTRA_DOC_FILES = \
+  ANNOUNCEMENT ANNOUNCE-0.1 AUTHORS.txt BUGS COPYING DEDICATION INSTALL.txt NEWS PATCHES.txt README.txt TODO \
+  Documentation/out/*.txt\
+  Documentation/tex/*.doc\
+  Documentation/tex/*.bib\
+  Documentation/pictures/out/lelie_logo.gif\
+  input\
+  mutopia\
 
+INSTALLED_EXTRA_DOC_FILES = $(addprefix $(prefix:/%=%)/doc/lilypond/, $(EXTRA_DOC_FILES))
 
-STRIP=strip --strip-debug
-ifdef stablecc
- STABLEOBS=$(addprefix $(outdir)/,$(stablecc:.cc=.o))
-endif
+# installed by 'make install'
+INSTALL_DIST_FILES = \
+  bin/convert-mudela\
+  bin/mudela-book\
+  bin/ly2dvi\
+  bin/lilypond$(DOTEXE)\
+  bin/mi2mu$(DOTEXE)\
+  info/lilypond.info\
+  man/man1/mi2mu.1\
+  man/man1/lilypond.1\
+  man/man1/mudela-book.1\
+  man/man1/ly2dvi.1\
+  man/man1/convert-mudela.1\
+  lib/texmf/texmf/tex/lilypond\
+  lib/texmf/texmf/fonts/source/public/lilypond\
+  share/lilypond/\
+  share/locale/*/LC_MESSAGES/lilypond.mo\
 
-# substitute $(STRIP) in Site.make if you want stripping
-DO_STRIP=true
 
-ifdef SUBDIRS
-LOOP=set -e; for i in $(SUBDIRS); do $(MAKE) -C $$i $@; done
-else
-LOOP=
-endif
+INSTALLED_DIST_FILES = $(addprefix $(prefix:/%=%)/, $(INSTALL_DIST_FILES))
 
-sed-version= sed 's!@TOPLEVEL_VERSION@!${TOPLEVEL_VERSION}!g'
diff --git a/make/Version.make b/make/Version.make
deleted file mode 100644 (file)
index 35857ac..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-
-MAJOR_VERSION = $(TOPLEVEL_MAJOR_VERSION)
-MINOR_VERSION = $(TOPLEVEL_MINOR_VERSION)
-PATCH_LEVEL = $(TOPLEVEL_PATCH_LEVEL)
-# use to send patches, always empty for released version:
-MY_PATCH_LEVEL = $(TOPLEVEL_MY_PATCH_LEVEL)
diff --git a/make/WWW.make b/make/WWW.make
deleted file mode 100644 (file)
index fcf0f11..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly$(DOTTEXT), $(examples)))
-ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(examples)))
-gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(examples)))
-
-
-html_subdirs=$(addprefix --subdirs ,$(SUBDIRS))
-
-
-local-WWW: $(ly_examples) $(ps_examples) $(gif_examples)
-       (cd $(outdir); $(PYTHON) ../$(depth)/bin/mutopia-index.py --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(examples))
-       add-html-footer $(outdir)/index.html
-
index 304674338530da56d0e99f3e74a1089d5f67980c..2e25e2a86369af371a759c62aa72d93cec258eb2 100644 (file)
@@ -2,22 +2,14 @@ Begin3
 Titel: LilyPond
 Versie: @TOPLEVEL_VERSION@
 Inschrijf datum: @DATE@
-Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
-               Het programma genereert muziek in zichtbare of 
-               hoorbare vorm uit uit een muzikale definitie file: 
-               voor bladmuziek wordt typeset informatie naar een 
-               TeX file geschreven, voor een (mechanische) uitvoering 
-               wordt een MIDI file geschreven.  Enkele kunstjes zijn 
-               verscheidene notenbalken, maatsoorten, sleutels, 
-               toonsoorten, teksten, krachtige invoer taal, cadensen, 
-               balken, boogjes, triolen.
+Beschrijving: @FLAPTEKST@
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
-       jan@digicash.com (Jan Nieuwenhuizen)
-Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
+       janneke@gnu.org (Jan Nieuwenhuizen)
+Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       395k lilypond-@TOPLEVEL_VERSION@.tar.gz 
+       610k @package@-@TOPLEVEL_VERSION@.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-@TOPLEVEL_VERSION@.tar.gz 
-Copi"eer politie: GPL
+       610k @package@-@TOPLEVEL_VERSION@.tar.gz 
+Copi-eer voorwaarden: GPL
 End
index 995cbd5d6547405c51080e854fb67a03bc749660..b7b4b25bce3316475d18a9e82e3b987b64bce945 100644 (file)
@@ -2,21 +2,14 @@ Begin3
 Title: LilyPond
 Version: @TOPLEVEL_VERSION@
 Entered-date: @DATE@
-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.  Features include multiple staffs, meters, 
-               clefs, keys, lyrics, versatile input-language, 
-               cadenzas, beams, slurs, triplets.
-               It includes a nice font of musical symbols.
+Description: @BLURB@
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
-       jan@digicash.com (Jan Nieuwenhuizen)
+       janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       570k lilypond-@TOPLEVEL_VERSION@.tar.gz 
+       730k @package@-@TOPLEVEL_VERSION@.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
-       570k lilypond-@TOPLEVEL_VERSION@.tar.gz 
+       730k @package@-@TOPLEVEL_VERSION@.tar.gz 
 Copying-policy: GPL
 End
index 0400e189c96d7710a0a34e30ef4edee7897a2dfa..44d76f6feb0fe99ecb078540f5f8e38bcc518b0c 100644 (file)
@@ -7,55 +7,57 @@ Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-@TOPLEVEL_VERSIO
 Summary: A program for typesetting music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
-Icon: lelie_icon.gif
-Buildroot: /tmp/lilypond-install
+Icon: @package@-icon.gif
+BuildRoot: /tmp/lilypond-install
 Prereq: tetex
 
 %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.
-
+@BLURB@
 
 %prep
 %setup
 %build
-./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared
+./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared --enable-tex-dir='${prefix}/lib/texmf/texmf/tex/generic' --enable-mf-dir='${prefix}/lib/texmf/texmf/fonts/source/'
 make all
+make htmldoc
+
 %install
 rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
+tar -C $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc -xzf out/htmldoc.tar.gz
+
 strip lily/out/lilypond mi2mu/out/mi2mu
-make -C Documentation gifs
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
-%doc Documentation/out/*@DOTTEXT@
-%doc Documentation/tex/*.doc
-%doc Documentation/tex/*.bib
-%doc mutopia/*.ly
-%doc input/*.ly
-%doc Documentation/out/lelie_logo.gif
+
+%doc /tmp/lilypond-rpm-doc
+
+# hairy to hook it in (possibly non-existing) emacs
+%doc mudela-mode.el
+
+# this gets too messy...
+# %doc input/*.ly
+# verbatim include of input: list the directory without issuing a %dir 
+
+%doc input
+
 /usr/bin/convert-mudela
 /usr/bin/mudela-book
 /usr/bin/ly2dvi
 /usr/bin/lilypond
 /usr/bin/mi2mu
-# /usr/lib/libflower.so
 /usr/man/man1/mi2mu.1
 /usr/man/man1/lilypond.1
 /usr/man/man1/mudela-book.1
 /usr/man/man1/ly2dvi.1
 /usr/man/man1/convert-mudela.1
-/usr/lib/texmf/texmf/tex/lilypond/
+/usr/lib/texmf/texmf/tex/generic/lilypond
 /usr/lib/texmf/texmf/fonts/source/public/lilypond
 /usr/share/lilypond/
+/usr/share/locale/*/LC_MESSAGES/lilypond.mo
 %post
 
-
-ln -s  /usr/lib/texmf/texmf/tex/lilypond  /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
+## ln -s  /usr/lib/texmf/texmf/tex/lilypond  /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
 texhash                # takes some time...
-rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'`
-
+touch /tmp/.lilypond-install
+rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp/.lilypond-install
diff --git a/make/out/dummy.dep b/make/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 4b0654edc5fe22ff28b3bfda5aefa21aae5e5c96..7bf75efad30603886a28373f106815034941241f 100644 (file)
@@ -1,23 +1,22 @@
 Begin3
 Titel: LilyPond
-Versie: 0.1.65
-Inschrijf datum: 15MAY98
-Beschrijving: LilyPond is de muziek typesetter van het GNU Project.  
-               Het programma genereert muziek in zichtbare of 
-               hoorbare vorm uit uit een muzikale definitie file: 
-               voor bladmuziek wordt typeset informatie naar een 
-               TeX file geschreven, voor een (mechanische) uitvoering 
-               wordt een MIDI file geschreven.  Enkele kunstjes zijn 
-               verscheidene notenbalken, maatsoorten, sleutels, 
-               toonsoorten, teksten, krachtige invoer taal, cadensen, 
-               balken, boogjes, triolen.
+Versie: 1.0.1
+Inschrijf datum: 10AUG98
+Beschrijving: 
+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.
 Trefwoorden: muziek typezetten midi notatie
 Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
-       jan@digicash.com (Jan Nieuwenhuizen)
-Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys)
+       janneke@gnu.org (Jan Nieuwenhuizen)
+Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
 Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
-       395k lilypond-0.1.65.tar.gz 
+       610k lilypond-1.0.1.tar.gz 
 Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/
-       395k lilypond-0.1.65.tar.gz 
-Copi"eer politie: GPL
+       610k lilypond-1.0.1.tar.gz 
+Copi-eer voorwaarden: GPL
 End
index 7ba08ff8b5488c68cd01da259a563662fb198cc8..72bc7aa147b98745592c064f96d64e761a3adfe9 100644 (file)
@@ -1,22 +1,21 @@
 Begin3
 Title: LilyPond
-Version: 0.1.65
-Entered-date: 15MAY98
-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.  Features include multiple staffs, meters, 
-               clefs, keys, lyrics, versatile input-language, 
-               cadenzas, beams, slurs, triplets.
-               It includes a nice font of musical symbols.
+Version: 1.0.1
+Entered-date: 10AUG98
+Description: 
+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.
 Keywords: music notation typesetting midi fonts engraving
 Author: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
-       jan@digicash.com (Jan Nieuwenhuizen)
+       janneke@gnu.org (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
-       570k lilypond-0.1.65.tar.gz 
+       730k lilypond-1.0.1.tar.gz 
 Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
-       570k lilypond-0.1.65.tar.gz 
+       730k lilypond-1.0.1.tar.gz 
 Copying-policy: GPL
 End
index accf15d04f6da7d6f6f112a0efefac366d23a4a7..e55a3909fc2401ea2c134dfb6bbb69b5a1b555f6 100644 (file)
@@ -1,61 +1,69 @@
 Name: lilypond
-Version: 0.1.65
+Version: 1.0.1
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-0.1.65.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-1.0.1.tar.gz
 Summary: A program for typesetting music.
 URL: http://www.cs.uu.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
-Icon: lelie_icon.gif
-Buildroot: /tmp/lilypond-install
+Icon: lilypond-icon.gif
+BuildRoot: /tmp/lilypond-install
 Prereq: tetex
 
 %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.
 
+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.
 
 %prep
 %setup
 %build
-./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared
+./configure --disable-checking --disable-debugging --enable-printing --prefix=/usr --enable-optimise --enable-shared --enable-tex-dir='${prefix}/lib/texmf/texmf/tex/generic' --enable-mf-dir='${prefix}/lib/texmf/texmf/fonts/source/'
 make all
+make htmldoc
+
 %install
 rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc
+tar -C $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc -xzf out/htmldoc.tar.gz
+
 strip lily/out/lilypond mi2mu/out/mi2mu
-make -C Documentation gifs
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
-%doc Documentation/out/*.txt
-%doc Documentation/tex/*.doc
-%doc Documentation/tex/*.bib
-%doc mutopia/*.ly
-%doc input/*.ly
-%doc Documentation/out/lelie_logo.gif
+
+%doc /tmp/lilypond-rpm-doc
+
+# hairy to hook it in (possibly non-existing) emacs
+%doc mudela-mode.el
+
+# this gets too messy...
+# %doc input/*.ly
+# verbatim include of input: list the directory without issuing a %dir 
+
+%doc input
+
 /usr/bin/convert-mudela
 /usr/bin/mudela-book
 /usr/bin/ly2dvi
 /usr/bin/lilypond
 /usr/bin/mi2mu
-# /usr/lib/libflower.so
 /usr/man/man1/mi2mu.1
 /usr/man/man1/lilypond.1
 /usr/man/man1/mudela-book.1
 /usr/man/man1/ly2dvi.1
 /usr/man/man1/convert-mudela.1
-/usr/lib/texmf/texmf/tex/lilypond/
+/usr/lib/texmf/texmf/tex/generic/lilypond
 /usr/lib/texmf/texmf/fonts/source/public/lilypond
 /usr/share/lilypond/
+/usr/share/locale/*/LC_MESSAGES/lilypond.mo
 %post
 
-
-ln -s  /usr/lib/texmf/texmf/tex/lilypond  /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
+## ln -s  /usr/lib/texmf/texmf/tex/lilypond  /usr/lib/texmf/texmf/tex/latex/lilypond # suck me plenty
 texhash                # takes some time...
-rm `find /var/lib/texmf -name 'feta*pk' -or -name 'feta*tfm'`
-
+touch /tmp/.lilypond-install
+rm `find /var/lib/texmf -name 'feta*pk -print' -or -name 'feta*tfm -print'` /tmp/.lilypond-install
diff --git a/make/out/zlilypond-docs.spec b/make/out/zlilypond-docs.spec
new file mode 100644 (file)
index 0000000..09ba175
--- /dev/null
@@ -0,0 +1,52 @@
+#
+# The weird name is to persuade RPM to use the other spec for building the 
+# lilypond rpm from the tarball.
+#
+
+Name: lilypond-docs
+Version: 1.0.1
+Release: 1
+Copyright: GPL
+Group: Applications/Publishing
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-1.0.1.tar.gz
+Summary: A program for typesetting music (documentation)
+URL: http://www.cs.uu.nl/~hanwen/lilypond
+Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+Icon: lelie_icon.gif
+BuildRoot: /tmp/lilypond-install
+BuildArchitectures: noarch
+
+
+%description 
+
+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.
+
+This package contains the documentation in HTML and PS format.
+
+%prep
+%setup  -T -n lilypond-1.0.1 -b0
+%build
+
+#
+# This is actually quite gross.  You have to have a working (and up to date)
+# LilyPond and Yodl  to  build the documentation.
+#
+
+make htmldocs
+
+%install
+
+# ln /home/hanwen/usr/src/lilypond/out/htmldoc.tar.gz out/
+mkdir -p $RPM_BUILD_ROOT/usr/doc/lilypond-1.0.1 
+tar -C $RPM_BUILD_ROOT/usr/doc/lilypond-1.0.1 -xzf out/htmldoc.tar.gz 
+
+%files
+
+%doc /usr/doc/lilypond-1.0.1
+
+%post
diff --git a/make/rpmrc.in b/make/rpmrc.in
deleted file mode 100644 (file)
index 9c77a4e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-sourcedir:     @LILYPOND_ROOTDIR@/releases
-topdir:                @LILYPOND_ROOTDIR@/redhat
-builddir:      @LILYPOND_ROOTDIR@/redhat/BUILD
-rpmdir:                @LILYPOND_ROOTDIR@/redhat/RPMS
-srcrpmdir:     @LILYPOND_ROOTDIR@/redhat/SRPMS
-
diff --git a/make/zlilypond-docs.spec.in b/make/zlilypond-docs.spec.in
new file mode 100644 (file)
index 0000000..9e893be
--- /dev/null
@@ -0,0 +1,46 @@
+#
+# The weird name is to persuade RPM to use the other spec for building the 
+# lilypond rpm from the tarball.
+#
+
+Name: lilypond-docs
+Version: @TOPLEVEL_VERSION@
+Release: 1
+Copyright: GPL
+Group: Applications/Publishing
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz
+Summary: A program for typesetting music (documentation)
+URL: http://www.cs.uu.nl/~hanwen/lilypond
+Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
+Icon: lelie_icon.gif
+BuildRoot: /tmp/lilypond-install
+BuildArchitectures: noarch
+
+
+%description 
+@BLURB@
+
+This package contains the documentation in HTML and PS format.
+
+%prep
+%setup  -T -n lilypond-@TOPLEVEL_VERSION@ -b0
+%build
+
+#
+# This is actually quite gross.  You have to have a working (and up to date)
+# LilyPond and Yodl  to  build the documentation.
+#
+
+make htmldocs
+
+%install
+
+# ln /home/hanwen/usr/src/lilypond/out/htmldoc.tar.gz out/
+mkdir -p $RPM_BUILD_ROOT/usr/doc/lilypond-@TOPLEVEL_VERSION@ 
+tar -C $RPM_BUILD_ROOT/usr/doc/lilypond-@TOPLEVEL_VERSION@ -xzf out/htmldoc.tar.gz 
+
+%files
+
+%doc /usr/doc/lilypond-@TOPLEVEL_VERSION@
+
+%post
index 940ab88ced4774b0dd852ed3fd023107a8d3b5b4..42c18fec889c38920159a497a17b2c0c14a14ca1 100644 (file)
@@ -1,62 +1,45 @@
 # mf/Makefile
 
-# subdir level:
-#
 depth = ..
-#
-#
-include ./$(depth)/make/Include.make
-#
 
-# list of distribution files:
+include $(depth)/make/Stepmake.make 
+include $(stepdir)/Metafont.make
 
-TEXFILES = $(wildcard *.tex)
-MFFILES = $(wildcard *.mf)
-EXTRA_DISTFILES =   TODO README  $(MFFILES)
+TEX_FILES = $(wildcard *.tex)
+EXTRA_DIST_FILES += TODO README
 
-lyout = $(outdir)/
-texout = $(outdir)/
-
-FONT_FILES = $(wildcard *[0-9].mf)
 FET_FILES = $(wildcard feta[0-9]*.mf)
 
-LYTABLES = $(addprefix $(lyout)/, $(FET_FILES:.mf=.ly))
-LOGFILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.log))
-TEXTABLES = $(addprefix $(texout)/, $(FET_FILES:.mf=.tex))
-
-default: $(LYTABLES) $(TEXTABLES) $(LOGFILES)
-
+LYTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.ly))
+LOG_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.log))
+TEXTABLES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.tex))
+AFM_FILES = $(addprefix $(outdir)/, $(FET_FILES:.mf=.afm))
+ALL_GEN_FILES=$(LYTABLES) $(TEXTABLES) $(LOG_FILES) $(AFM_FILES)
+default: $(ALL_GEN_FILES)
 
-$(outdir)/%.dvi: %.mf
-       mf $<
-       gftodvi  $(basename $<)
-       mv   $(basename $<).dvi $(outdir)
-       rm $(basename $<).*gf
 
-$(outdir)/%.log: %.mf
-       mf $<
-       mv $(@F) $@
-       rm $(basename $< ).*gf
+$(outdir)/%.afm $(outdir)/%.ly $(outdir)/%.tex $(outdir)/%.dep: $(outdir)/%.log
+       $(PYTHON) $(buildscripts)/mf-to-table.py --package=$(topdir) --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --ly $(outdir)/$(<F:.log=.ly) --afm $(outdir)/$(<F:.log=.afm) --tex $(outdir)/$(<F:.log=.tex) $<
 
-$(lyout)/%.ly $(texout)/%.tex $(outdir)/%.dep: $(outdir)/%.log
-       $(PYTHON) $(depth)/bin/mf-to-table.py --outdir=$(outdir) --dep $(outdir)/$(<F:.log=.dep) --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
 
+TEXINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(TEXDIR)/lilypond depth=.. INSTALLATION_OUT_FILES="$(TEXTABLES)" -f $(stepdir)/Install_outfiles.sub.make $@
 
-lyouts:
+AFMINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir) INSTALLATION_OUT_FILES="$(AFM_FILES)" -f $(stepdir)/Install_outfiles.sub.make $@
 
-TEXINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(TEXDIR)/lilypond depth=.. INSTALLATION_OUT_FILES="$(TEXTABLES)" -f $(depth)/make/Install_outfiles.sub.make $@
+LYINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir) INSTALLATION_OUT_FILES="$(LYTABLES)" -f $(stepdir)/Install_outfiles.sub.make $@
 
-LYINSTALL=$(MAKE) depth=.. INSTALLATION_OUT_DIR=$(datadir)/lilypond INSTALLATION_OUT_FILES="$(LYTABLES)" -f $(depth)/make/Install_outfiles.sub.make $@
-
-localinstall:
+localinstall: $(ALL_GEN_FILES)
        $(TEXINSTALL)
        $(LYINSTALL)
+       $(AFMINSTALL)
 
 localuninstall:
        $(TEXINSTALL)
        $(LYINSTALL)
+       $(AFMINSTALL)
 
 INSTALLATION_DIR=$(MFDIR)/public/lilypond
-INSTALLATION_FILES=$(MFFILES)
+INSTALLATION_FILES=$(MF_FILES)
+
+include $(stepdir)/Installfiles.make
 
-include $(depth)/make/Installfiles.make
diff --git a/mf/Rules.make b/mf/Rules.make
deleted file mode 100644 (file)
index 7c7881c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-
-$(top_builddir)/mf/%.dvi: %.mf
-       mf $<
-       gftodvi  $(basename $<)
-#      mv $(basename $<).dvi $(outdir)
-#      rm $(basename $<).*gf
-
-$(top_builddir)/mf/%.log: %.mf
-       mf $<
-#      mv $(@F) $@
-#      rm $(basename $< ).*gf
-
-$(lyout)/%.ly $(texout)/%.tex: $(top_builddir)/mf/%.log
-       $(PYTHON) $(top_builddir)/bin/mf-to-table --ly $(lyout)/$(<F:.log=.ly) --tex $(texout)/$(<F:.log=.tex) $<
-
-$(MFDEPS): $(FONT_FILES)
-# do something silly to avoid barfs if python not installed.
-       echo > $@
-       $(PYTHON) $(top_builddir)/bin/mf-deps $^ >> $@
-
-# silly workaround for stupid TeXs
-systempks:
-# irix 5.3
-#      MakeTeXPK feta16 300 300 magstep\(0.0\)
-       set -e ; for a in $(FONT_FILES); do \
-       MakeTeXPK `basename $$a .mf` 300 300 magstep\(0.0\) ; \
-       mf "\mode=ljfour; input `basename $$a .mf`"  ;\
-#      mv -f `find . -name '*.tfm' -print -o -name '*gf' -print`  out/ ; \
-       mv -f `find . -name '*.tfm' -print -o -name '*gf' -print` ; \
-       done
-
diff --git a/mf/TODO b/mf/TODO
index e93332e8b188d43d4182d675f9a2cdb5bc72ba3f..999e75eca3de93ea05ba4d1f3ec39470c20d2e98 100644 (file)
--- a/mf/TODO
+++ b/mf/TODO
@@ -7,8 +7,10 @@
        - lo-res fixes.
        - work out sizes of character fonts.
        - more symbols
-         * piano pedals,
+         * piano pedals: Ped/*
          * maxima notehead
-         * coda signs.
+         * coda signs: Segno, O+
+         * glissando, arpeggio
+         * lengthened trill
        - 128th flags
        - include important spacing dims in fetalog 
index 8d53d521501998d98836d8ff7bc69bd448046afe..c638935f85e6125426f07a5326263bcba749aca0 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (Font-En-Tja) pretty-but-neat music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-%          Jan Nieuwenhuizen <jan@digicash.com>
+%          Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 % these macros help create ascii logging output
 % to automate generation of lily tables and tex backend
index 53c8cc4f241489cc48c1911194f079cb165a2f47..7097d68d3cb87cb34cf092e198ffe3608e8a9753 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 mode_setup;
 
index 402de0420c4b65c2d2db569078dacc77f45dde67..8a48d4bfc78091516d7ed27a80f6e10fa1c18efb 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 % & Han-Wen Nienhuys <hanwen@stack.nl>
 % 
 
index 8231f1dc3e9c276a30e2cc740e79e08dd07b8bb2..9e2a79eee5b0fc9041724a5a4bcc7a66773174cc 100644 (file)
@@ -5,7 +5,7 @@
 % source file of the Feta (Font-En-Tja) music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-%      Jan Nieuwenhuizen <jan@digicash.com>
+%      Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 
 font_identifier:="feta-brackets16";
index 2884ce5da7b55a6e5b6db68b978d38e4443eec66..fb409093d046dfbd280ca252429f2fa29a7424db 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (Font-En-Tja) music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-%      Jan Nieuwenhuizen <jan@digicash.com>
+%      Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 
 font_identifier:="feta-brackets20";
index 7649ea0e8ee9129d2e96a73dcc8bfbf313feaaa9..0670ea351bf72b2f89866aa45a08e56f1443666e 100644 (file)
@@ -1,8 +1,6 @@
 % eindelijk.mf
 % LilyPond's own rest(s)
 
-% todo breve/longa rests
-
 
 fet_begingroup("rests");
 
@@ -85,6 +83,25 @@ fet_beginchar("half rest (outside staff)", "1o", "outsidehalfrest");
        draw z5 .. z6;
 fet_endchar;
 
+
+save breve_rest_y, breve_rest_x;
+
+breve_rest_y# =  interline#;
+breve_rest_x# = 3/5 interline#;
+
+define_pixels(breve_rest_y, breve_rest_x);
+
+fet_beginchar("breve rest", "-1", "breverest");
+       set_char_box(0, breve_rest_x#, 0, breve_rest_y#);
+       draw_block ((0,0), (breve_rest_x, breve_rest_y));
+fet_endchar;
+
+fet_beginchar("longa rest", "-2", "longarest");
+       set_char_box(0, breve_rest_x#, breve_rest_y#, breve_rest_y#);
+       draw_block ((0,-breve_rest_y), (breve_rest_x, breve_rest_y));
+fet_endchar;
+
+
 fet_beginchar("Quarter rest","2","quartrest");
        save alpha;
        alpha:=-50;
index 2cf10ca78826931f26477ad0b9fa28e8029fbd18..cccaef43fd3536b3d81991e4b6f73bdb00bc6617 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (Font-En-Tja) music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>,
-% Jan Nieuwenhuizen <jan@digicash.com>
+% Jan Nieuwenhuizen <janneke@gnu.org>
 
 
 
index 8b28f2a47bae2be60b2250a2a1b2659176e1d344..7257a45277f6bcfd8e471ed31a92c4b0714d4836 100644 (file)
@@ -5,7 +5,7 @@
 % music font
 % 
 % (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
-%      Jan Nieuwenhuizen <jan@digicash.com>
+%      Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 
 
@@ -130,10 +130,10 @@ fet_endchar;
 
 fet_beginchar("portato/single tenuto", "tenuto", "tenuto")
        save thick;
-       thick# = 1.2 stafflinethickness#;
+       thick# = 1.4 stafflinethickness#;
        define_pixels(thick);
 
-       set_char_box(.9 interline#, .9 interline#, thick#/2,thick#/2);
+       set_char_box(.6 interline#, .6 interline#, thick#/2,thick#/2);
        pickup pencircle scaled thick;
        lft x1 = -b;
        rt x2 = w;
index 7d8f1d52ac969ccb0d9895c13cdda32ad36ed4c1..292a5db8998a5eb34a80e82adb073c895d07511c 100644 (file)
@@ -4,7 +4,7 @@
 % source file of the Feta (defintively not an abbreviation for Font-En-Tja)
 % music font
 % 
-% (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 % 
 
 % this file is included by feta-scripts.mf
index 24637e273dd1b632c11c88286dfe0b4ccf9ff167..01c1e1406b9161d53e606bb5446169049e1a8b32 100644 (file)
@@ -3,7 +3,7 @@
 % 
 % source file of LilyPond's pretty-but-neat music font
 % 
-% (c) 1997 Jan Nieuwenhuizen <jan@digicash.com>
+% (c) 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 % & Han-Wen Nienhuys <hanwen@stack.nl>
 % 
 % see Documentation/fonts.tex
diff --git a/mf/out/dummy.dep b/mf/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 02509c2313e219e12547eeeb8fb4a2fd4cc54815..012024b932ef4eff5cb59d9fa797726d0848d108 100644 (file)
@@ -1,72 +1,25 @@
-#
-# project  LilyPond -- the musical typesetter
 # title           makefile for mi2mu
 # file    mi2mu/Makefile 
-#
-# Copyright (c) 1997 by
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-#
 
-# subdir level:
-#
 depth = ..
-#
 
 NAME = mi2mu
 MODULE_NAME = mi2mu
 
-# generic variables:
-#
-include ./$(depth)/make/Variables.make
-include ./$(depth)/make/Files.make 
-#
-
-# identify module:
-#
-include $(mi2mu-dir)/VERSION
-build = $(mi2mu-dir)/$(outdir)/.build
-#
-
-# descent order into subdirectories:
-#
 SUBDIRS = include
-#
-
-# to be remade each build:
-#
-VERSION_DEPENDENCY = $(mi2mu-version)
-#
+EXTRA_DIST_FILES += TODO
+MODULE_LIBS=$(depth)/lib $(depth)/flower
 
-
-# list of distribution files:
-#
-EXTRA_DISTFILES = VERSION TODO
-#
-
-# list of custom libraries:
-#
-MODULE_LIBDEPS=check-flower-deps check-lib-deps
-MODULE_LIBES=-llily -lflower
-#
-
-
-default: $(EXECUTABLE)
-
-#
-
-# 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)/Executable.make
 
 # explicit dependencies: (how to do auto?)
 #
 midi-lexer.l:  $(outdir)/midi-parser.hh
 
-$(outdir)/mi2mu-version.o: $(outdir)/version.hh
 
-EXECUTABLES=mi2mu
+$(outdir)/mi2mu-version.o: $(outdir)/version.hh
 
-include $(depth)/make/Executable.make
+VERSION: $(depth)/VERSION
+       cp $< $@
diff --git a/mi2mu/VERSION b/mi2mu/VERSION
deleted file mode 100644 (file)
index 361ecac..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-MAJOR_VERSION = 0
-MINOR_VERSION = 0
-PATCH_LEVEL = 22
-# use to send patches, always empty for released version:
-MY_PATCH_LEVEL = 
-#
index 1cfdc7b22a0927b31e049cf55952ea778d4c15d3..b23f26fb302fa5c4113859841d19f46371e0a4ed 100644 (file)
@@ -1,17 +1,7 @@
 # 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
 
index 005870af7d6488bff91d489619d2b6dc57f33da0..4ed873fb54ebec6470060f95dcea3c59043f4d06 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mi2mu-global.hh -- declare global (sic) stuff for mi2mu
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MI2MU_GLOBAL_HH
 #define MI2MU_GLOBAL_HH
index c5cc781671c9a7f5d996a949c1f999631a76216e..d8ad1368e4eae7501b27b58c356307e2b9890602 100644 (file)
@@ -17,7 +17,7 @@ class Midi_track_parser;
 class Mudela_stream;
 class Mudela_item;
 class Mudela_key;
-class Mudela_meter;
+class Mudela_time_signature;
 class Mudela_note;
 class Mudela_tempo;
 class Mudela_text;
index cc883e2a1bcf74adbb2e9ac342c3f4435e2504cc..6659fb42cda102d9483b7f8dc18af0edda7b4ea4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index c13ea027276cdeb734619c9776dc1c66770060a9..0dc98237059baac11ef9893a05b61c9faf12eaf4 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index 0115adecd59d3988f0947b3ad19adffd2e6f9d79..3679ef600796be31a80d6df42e6549314ca573d9 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 
index 24d519630891ad133a272fd32b6f9ba418d8fd91..b1ab97c24bb37c4f35b8833943b29f85829d93c5 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-column.hh -- declare Mudela_column
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_COLUMN_HH
 #define MUDELA_COLUMN_HH
index 76754ebc80d04c4460cc4c631dad23a066fe3a40..461d43b71a7a7a8fed9500a781a27a51a347ed4f 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-item.hh -- declare mudela_item
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_ITEM_HH
 #define MUDELA_ITEM_HH
@@ -45,10 +45,10 @@ public:
     int minor_i_;
 };
 
-class Mudela_meter : public Mudela_item 
+class Mudela_time_signature : public Mudela_item 
 {
 public:
-    Mudela_meter (int num_i, int den_i, int division_4_i, int count_32_i);
+    Mudela_time_signature (int num_i, int den_i, int division_4_i, int count_32_i);
 
     Duration i2_dur (int time_i, int division_1_i);
     int clocks_1_i();
@@ -108,7 +108,7 @@ public:
 
 private:
     int useconds_per_4_i_;
-    Real seconds_per_1_f_;
+    Moment seconds_per_1_mom_;
 };
 
 class Mudela_text : public Mudela_item 
index d1102f08088f80d234097c7cd1f183529f52746e..4d0992b35c2556d722a786cbb1de3a3123727a1a 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-score.hh -- declare Mudela_score
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_SCORE_HH
 #define MUDELA_SCORE_HH
@@ -28,7 +28,7 @@ public:
 
     // ugh
     Mudela_key* mudela_key_l_;
-    Mudela_meter* mudela_meter_l_;
+    Mudela_time_signature* mudela_time_signature_l_;
     Mudela_tempo* mudela_tempo_l_;
 
 private:
index 6acb91b56a234fefe6a401de8184d0890b025f9d..4608e0859c66631d736c75719031138b51afbd64 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-staff.hh -- declare mudela_staff
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_STAFF_HH
 #define MUDELA_STAFF_HH
@@ -27,7 +27,7 @@ public:
     String instrument_str_;
     String name_str_;
     Mudela_key* mudela_key_l_;
-    Mudela_meter* mudela_meter_l_;
+    Mudela_time_signature* mudela_time_signature_l_;
     Mudela_tempo* mudela_tempo_l_;
     int number_i_;
 
index f353838ea64f173af0c0a03f4ce694de418ad169..6953a961cd3112a7b71b4434581036f86f0384ea 100644 (file)
@@ -1,7 +1,7 @@
 //
 //  mudela-stream.hh -- part of LilyPond
 //
-//  copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+//  copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 // should i be named Mudela_stream?
 
@@ -10,6 +10,7 @@
 
 #include "mi2mu-proto.hh"
 #include "string.hh"
+#include "scalar.hh"
 
 /// Lily output
 class Mudela_stream {
@@ -17,7 +18,7 @@ public:
     Mudela_stream (String filename_str);
     ~Mudela_stream();
 
-    Mudela_stream& operator << (String str);
+    Mudela_stream& operator << (Scalar s);
     Mudela_stream& operator << (Mudela_item& mudela_item_r);
 
 private:
index ab4aef142d02101c63cc4e9c535532fb17411d13..28b4efcdb99e31bea3fe68f5b8b4ef3e2d315e48 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-voice.hh -- declare Mudela_voice
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #ifndef MUDELA_VOICE_HH
 #define MUDELA_VOICE_HH
diff --git a/mi2mu/include/out/dummy.dep b/mi2mu/include/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 3ae4f3990569b81527372f25e71570642a7aa48d..20e1866a43d898db08c51ec2ce9d97d32d736536 100644 (file)
@@ -1,12 +1,14 @@
 //
-// main.cc -- implement silly main() entry point
+// main.cc -- implement silly main () entry point
 // should have Root class.
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <assert.h>
+#include <locale.h>
+#include "config.hh"
 #include "string-convert.hh"
-#include "lgetopt.hh"
+#include "getopt-long.hh"
 #include "file-path.hh"
 #include "duration-convert.hh"
 #include "source.hh"
 #include "midi-score-parser.hh"
 #include "mudela-item.hh"
 #include "mudela-score.hh"
-//#include "version.hh"
+
+#if HAVE_GETTEXT
+#include <libintl.h>
+#endif
+
 
 // ugh
 String filename_str_g;
@@ -34,25 +40,55 @@ Verbose level_ver = NORMAL_ver;
 void
 usage()
 {
-  LOGOUT(NORMAL_ver) <<
-       _("Usage: mi2mu [options] midi-file\n"
-  "Translate midi-file to mudela\n"
-  "\n"
-  "Options:\n"
+  cout << _f ("Usage: %s [OPTION]... [FILE]", "mi2mu");
+  cout << '\n';
+  cout << _ ("Translate midi-file to mudela");
+  cout << '\n';
+  cout << '\n';
+  cout << _ ("Options:");
+  cout << '\n';
+  cout << _ (
   "  -b, --no-quantify      write exact durations, e.g.: a4*385/384\n"
-  "  -d, --debug            print lots of debugging stuff\n"
+  );
+  cout << _ (
+  "  -D, --debug            enable debugging output\n"
+  );
+  cout << _ (
   "  -h, --help             this help\n"
+  );
+  cout << _ (
   "  -I, --include=DIR      add DIR to search path\n"
+  );
+  cout << _ (
   "  -k, --key=ACC[:MINOR]  set key: ACC +sharps/-flats; :1 minor\n"
+  );
+  cout << _ (
   "  -n, --no-silly         assume no plets or double dots, smallest is 32\n"
+  );
+  cout << _ (
   "  -o, --output=FILE      set FILE as default output\n"
+  );
+  cout << _ (
   "  -p, --no-plets         assume no plets\n"
+  );
+  cout << _ (
   "  -q, --quiet            be quiet\n"
+  );
+  cout << _ (
   "  -T, --no-timestamps    don't timestamp the output\n"
+  );
+  cout << _ (
   "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+  );
+  cout << _ (
   "  -v, --verbose          be verbose\n"
+  );
+  cout << _ (
   "  -w, --warranty         show warranty and copyright\n"
-  "  -x, --no-double-dots   assume no double dotted notes\n")
+  );
+  cout << _ (
+  "  -x, --no-double-dots   assume no double dotted notes\n"
+  );
   ;
 }
 
@@ -65,37 +101,49 @@ identify()
 void
 notice()
 {
-  LOGOUT(NORMAL_ver) <<
-  _("\n"
-  "Mi2mu, translate midi to mudela.\n"
-  "Copyright (C) 1997 by\n"
-  "  Jan Nieuwenhuizen <jan@digicash.com>\n"
-  "  Han-Wen Nienhuys <hanwen@stack.nl>\n"
-  "\n"
-  "    This program is free software; you can redistribute it and/or\n"
-  "modify it under the terms of the GNU General Public License version 2\n"
-  "as published by the Free Software Foundation.\n"
-  "\n"
-  "    This program is distributed in the hope that it will be useful,\n"
-  "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-  "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
-  "General Public License for more details.\n"
-  "\n"
-  "    You should have received a copy (refer to the file COPYING) of the\n"
-  "GNU General Public License along with this program; if not, write to\n"
-  "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
-  "USA.\n");
+  LOGOUT(NORMAL_ver) << '\n';
+  LOGOUT(NORMAL_ver) << _ ("Mi2mu, translate midi to mudela");
+  LOGOUT(NORMAL_ver) << '\n';
+  LOGOUT(NORMAL_ver) << _f ("Copyright (c) %s by", "1997, 1998");
+  LOGOUT(NORMAL_ver) << '\n';
+  LOGOUT(NORMAL_ver) << "  " + _ ("Han-Wen Nienhuys <hanwen@cs.uu.nl>") + "\n";
+  LOGOUT(NORMAL_ver) << "  " + _ ("Jan Nieuwenhuizen <janneke@gnu.org>") + "\n";
+  LOGOUT(NORMAL_ver) << '\n';
+  LOGOUT(NORMAL_ver) << _ (
+    "    This program is free software; you can redistribute it and/or\n"
+    "modify it under the terms of the GNU General Public License version 2\n"
+    "as published by the Free Software Foundation.\n"
+    "\n"
+    "    This program is distributed in the hope that it will be useful,\n"
+    "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+    "General Public License for more details.\n"
+    "\n"
+    "    You should have received a copy (refer to the file COPYING) of the\n"
+    "GNU General Public License along with this program; if not, write to\n"
+    "the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+    "USA.\n");
 }
 
 int
 main (int argc_i, char* argv_sz_a[])
 {
+
+#if HAVE_GETTEXT
+  setlocale (LC_ALL, "");
+//  setlocale (LC_MESSAGES, "");
+  String name (PACKAGE);
+  name.to_lower ();
+  bindtextdomain (name.ch_C (), DIR_LOCALEDIR);
+  textdomain (name.ch_C ()) ;
+#endif
+
   Mudela_key key (0, 0);
 
   Long_option_init long_option_init_a[] =
     {
        {0, "no-quantify", 'b'},
-       {0, "debug", 'd'},
+       {0, "debug", 'D'},
        {0, "help", 'h'},
        {1, "key", 'k'},
        {0, "no-silly", 'n'},
@@ -118,7 +166,7 @@ main (int argc_i, char* argv_sz_a[])
        case 'b':
            Duration_convert::no_quantify_b_s = true;
            break;
-       case 'd':
+       case 'D':
            level_ver = DEBUG_ver;
            break;
        case 'h':
@@ -135,7 +183,7 @@ main (int argc_i, char* argv_sz_a[])
            int i = str.index_i (':');
            i = (i >=0 ? i : str.length_i ());
            key.accidentals_i_ = String_convert::dec2_i (str.left_str (i));
-           key.minor_i_ = (int)(bool)String_convert::dec2_i (str.cut (i + 1,1));
+           key.minor_i_ = (int)(bool)String_convert::dec2_i (str.cut_str (i + 1,1));
            break;
          }
        case 'n':
index 55946e5470df1828b8d259b5a6a6a0a93f211699..113512d363a9de3904e71d334e1ae48d4f70e980 100644 (file)
@@ -1,20 +1,20 @@
 //
 // version.cc -- implement inexpensive versioning
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <stdio.h>
 #include "config.hh"
+#include "version.hh"
 
+#define VERSION_SZ  MAJOR_VERSION "." MINOR_VERSION "."  PATCH_LEVEL "." MY_PATCH_LEVEL
 
-// static char *s = "mi2mu " MAJOR_VERSION "." MINOR_VERSION "."  PATCH_LEVEL MY_PATCH_LEVEL " #%d";
-//urg
-//static char *s = "mi2mu " TOPLEVEL_VERSION " #%d";
-static char *s = "mi2mu FIXME " ;
+static char *s = "mi2mu " VERSION_SZ;
 
 
 const char * 
 mi2mu_version_sz()
-{  return s;
+{
+  return s;
 }
 
index ad8e020d263c98c42edb39e9806cfdf15f190346..eafd50c004df9446a2b34fe7d90dc22fab63513e 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <assert.h>
@@ -61,7 +61,7 @@ Midi_parser::get_str (int n)
 {
   assert (n >= 0);
   if (!n)
-    warning (_("Zero length string encountered"));
+    warning (_ ("zero length string encountered"));
 
   Byte const* p = forward_byte_L (n);
   return String (p, n);
@@ -97,5 +97,5 @@ Midi_parser::message (String str)
 void
 Midi_parser::warning (String str)
 {
-  ::message (message (String (_("warning: ")) + str));
+  ::message (message (String (_ ("warning: ")) + str));
 }
index b0cac0c889aa2ba297faaecf91dc27351551ad13..92eb74833e612886af2936e8276fd89254e463a1 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include "moment.hh"
@@ -21,7 +21,7 @@ Midi_score_parser::open (String filename_str, Sources* sources_l)
 {
   info_l_->source_l_ = sources_l->get_file_l (filename_str);
   if (!info_l_->source_l_)
-    ::error (_("can't find: `") + filename_str + "'");
+    ::error (_f ("can't find file: `%s\'", filename_str));
   info_l_->byte_L_ = (Byte const*)info_l_->source_l_->ch_C ();
 //  info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i ();
   info_l_->end_byte_L_ = info_l_->byte_L_ + info_l_->source_l_->length_i () + 1;
@@ -42,12 +42,12 @@ Midi_score_parser::parse_header ()
 {
   String str = get_str (4);
   if ( str != "MThd" )
-    exit (_("MIDI header expected"));
+    exit (_ ("MIDI header expected"));
 
   int length_i = get_i (4);
   // is this signed?
   if (length_i < 6)
-    exit (_("Invalid header length"));
+    exit (_ ("Invalid header length"));
   info_l_->format_i_ = get_i (2);
   if (info_l_->format_i_ != 0 && info_l_->format_i_ != 1)
     exit (_("Invalid midi format"));
@@ -56,7 +56,7 @@ Midi_score_parser::parse_header ()
     exit (_("Invalid number of tracks"));
   info_l_->division_1_i_ = get_i (2) * 4;
   if (info_l_->division_1_i_ < 0)
-    exit (_("Cannot handle non-metrical time"));
+    exit (_f ("can't handle %s", _ ("non-metrical time")));
   // ugh
   Duration::division_1_i_s = info_l_->division_1_i_;
   forward_byte_L (length_i - 6);
@@ -82,7 +82,7 @@ Mudela_score*
 Midi_score_parser::parse_score ()
 {
   int current_bar_i = 0;
-  Mudela_meter m4 (4, 2, 24, 8);
+  Mudela_time_signature m4 (4, 2, 24, 8);
   Moment bar4_mom = m4.bar_mom ();
 
   Mudela_score* score_p = new Mudela_score( 1, 1, 1 );
@@ -92,7 +92,7 @@ Midi_score_parser::parse_score ()
   for (int i = 0; i < info_l_->tracks_i_; i++)
     tracks.push (new Midi_track_parser (info_l_, i));
 
-  LOGOUT (NORMAL_ver) << _("Parsing...\n");
+  LOGOUT (NORMAL_ver) << _ ("Parsing...\n");
   while (tracks.size ())
     {
       int i = find_earliest_i (tracks);
index ffc3380da3b55bf29fd3a9a3857cbee2dbfa82f9..ff7d4453d49f55fd9cab08c386c9b33a53c6973f 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1998 Jan Nieuwenhuizen <jan@digicash.com>
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
 */
 
 #include <assert.h>
@@ -60,16 +60,15 @@ Midi_track_parser::note_end (Mudela_column* col_l, int channel_i, int pitch_i, i
          i->end_column_l_ = col_l;
          // LOGOUT(DEBUG_ver) << "Note: " << pitch_i;
          // LOGOUT(DEBUG_ver) << "; " << i->mudela_column_l_->at_mom_;
-         // LOGOUT(DEBUG_ver) << ", " << i->end_column_l_->at_mom_ << "\n";
+         // LOGOUT(DEBUG_ver) << ", " << i->end_column_l_->at_mom_ << '\n';
          i.remove_p();
          return;
        }
       else
        i++;
     }
-  warning (String (_("junking note-end event: "))
-          + _(" channel = ") + String_convert::i2dec_str (channel_i, 0, ' ')
-          + _(", pitch = ") + String_convert::i2dec_str (pitch_i, 0, ' '));
+  warning (_f ("junking note-end event: channel = %d, pitch = %d", 
+              channel_i, pitch_i));
 }
 
 void
@@ -98,7 +97,7 @@ Midi_track_parser::parse (Mudela_column* col_l)
   if (!eot())
     return 0;
 
-  // vangnet
+  // catch-all
   note_end_all (col_l);
 
   Mudela_staff* p = mudela_staff_p_;
@@ -123,11 +122,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
   if (byte <= 0x5f)
     {
       if (running_byte_ <= 0x5f)
-       exit (_("Invalid running status"));
+       exit (_ ("invalid running status"));
       /*
        'running status' rather means 'missing status'.
        we'll just pretend we read the running status byte.
-       */
+      */
       byte = running_byte_;
     }
   else
@@ -137,7 +136,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
   // DATA_ENTRY        [\x60-\x79]
   if ((byte >= 0x60) && (byte <= 0x79))
     {
-           next_byte ();
+      next_byte ();
     }
   // ALL_NOTES_OFF     [\x7a-\x7f]
   else if ((byte >= 0x7a) && (byte <= 0x7f))
@@ -165,7 +164,7 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
       /*
        sss: some broken devices encode NOTE_OFF as
        NOTE_ON with zero volume
-       */
+      */
       if (dyn_i)
        {
          Mudela_note* p = new Mudela_note (col_l, channel_i, pitch_i, dyn_i);
@@ -250,11 +249,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
          Mudela_text* p = new Mudela_text (t, str);
          item_p = p;
          if (t == Mudela_text::COPYRIGHT)
-            mudela_staff_p_->copyright_str_ = p->text_str_;
+           mudela_staff_p_->copyright_str_ = p->text_str_;
          else if (t == Mudela_text::TRACK_NAME)
-            mudela_staff_p_->name_str_ = p->text_str_;
+           mudela_staff_p_->name_str_ = p->text_str_;
          else if (t == Mudela_text::INSTRUMENT_NAME)
-            mudela_staff_p_->instrument_str_ = p->text_str_;
+           mudela_staff_p_->instrument_str_ = p->text_str_;
        }
       // END_OF_TRACK  [\x2f][\x00]
       else
@@ -295,11 +294,11 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
              int den_i = (int)next_byte ();
              int clocks_4_i = (int)next_byte ();
              int count_32_i = (int)next_byte ();
-             Mudela_meter* p = new Mudela_meter ( num_i, den_i, clocks_4_i, count_32_i );
+             Mudela_time_signature* p = new Mudela_time_signature ( num_i, den_i, clocks_4_i, count_32_i );
              item_p = p;
-             info_l_->score_l_->mudela_meter_l_ = p;
+             info_l_->score_l_->mudela_time_signature_l_ = p;
              info_l_->bar_mom_ = p->bar_mom ();
-             mudela_staff_p_->mudela_meter_l_ = p;
+             mudela_staff_p_->mudela_time_signature_l_ = p;
            }
          // KEY                [\x59][\x02]
          else if ((byte == 0x59) && (next == 0x02))
@@ -324,12 +323,12 @@ Midi_track_parser::parse_event (Mudela_column* col_l)
            {
              next_byte ();
              next_byte ();
-             warning (_("Unimplemented MIDI meta-event"));
+             warning (_ ("unimplemented MIDI meta-event"));
            }
        }
     }
   else
-    exit (_("Invalid MIDI event"));
+    exit (_ ("invalid MIDI event"));
 
   if (item_p)
     item_p->mudela_column_l_ = col_l;
@@ -344,16 +343,16 @@ Midi_track_parser::parse_header ()
 {
   String str = get_str (4);
   if ( str != "MTrk" )
-    exit (_("MIDI track expected"));
+    exit (_ ("MIDI track expected"));
 
   int length_i = get_i (4);
   // is this signed?
   if (length_i < 0)
-    exit (_("Invalid track length"));
+    exit (_ ("invalid track length"));
   assert (!track_info_p_);
   track_info_p_ = new Midi_parser_info (*info_l_);
   track_info_p_->end_byte_L_ = track_info_p_->byte_L_ + length_i;
   forward_byte_L (length_i);
-//  forward_byte_L (length_i-1);
+  //  forward_byte_L (length_i-1);
   info_l_ = track_info_p_;
 }
index a197fb8f15d9234c97af9a71e70cd968e57c3b69..5a00e8831054ce0d4f4c66cc54eaa730b6d875dc 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-column.cc -- implement Mudela_column
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include "mudela-column.hh"
 
index 136e03a7d69e0bcda710f368107a84f222754aaa..053762502f84735f3b927cd74134b33be9322b35 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-item.cc -- implement Mudela_item
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <assert.h>
 #include "mi2mu-global.hh"
@@ -36,7 +36,7 @@ Mudela_item::duration_mom ()
 void
 Mudela_item::output (Mudela_stream& mudela_stream_r)
 {
-  mudela_stream_r << str () << String (" ");
+  mudela_stream_r << str () << " ";
 }
 
 Mudela_key::Mudela_key (int accidentals_i, int minor_i)
@@ -51,17 +51,16 @@ Mudela_key::str ()
 {
   int key_i = 0;
   if (accidentals_i_ >= 0)
-       key_i =   ((accidentals_i_ % 7)[ "cgdaebf" ] - 'a' - 2) % 7;
+    key_i =   ((accidentals_i_ % 7)[ "cgdaebf" ] - 'a' - 2) % 7;
   else
-       key_i =   ((-accidentals_i_ % 7)[ "cfbeadg" ] - 'a' - 2) % 7;
-  String str = "\\key ";
-  if (!minor_i_)
-       str += String ((char)  ((key_i + 2) % 7 + 'A'));
-  else // heu, -2: should be - 1 1/2: A -> fis
-       str += String ((char)  ((key_i + 2 - 2) % 7 + 'a'));
-  str = String ("% \"") + str
-       + String ('"') + _("; % not supported yet\n");
-  return str;
+    key_i =   ((-accidentals_i_ % 7)[ "cfbeadg" ] - 'a' - 2) % 7;
+  
+  String keyname = (1) // !minor_i_)
+    ?  to_str ((char)  ((key_i + 2) % 7 + 'A'))
+    : to_str ((char)  ((key_i + 2 - 2) % 7 + 'a'));
+  // heu, -2: should be - 1 1/2: A -> fis
+   
+  return String("\\key " + keyname  + ";\n");
 }
 
 String
@@ -79,40 +78,40 @@ Mudela_key::notename_str (int pitch_i)
   int accidental_i = accidentals_i_a[ (minor_i_ * 5 + pitch_i) % 12 ];
   if (accidental_i &&  (accidentals_i_ < 0))
     {
-       accidental_i = - accidental_i;
-       notename_i =  (notename_i + 1) % 7;
+      accidental_i = - accidental_i;
+      notename_i =  (notename_i + 1) % 7;
     }
 
-  String notename_str = (char)  ( ((notename_i + 2) % 7) + 'a');
+  String notename_str = to_str ((char)(((notename_i + 2) % 7) + 'a'));
   while  (accidental_i-- > 0)
-       notename_str += "is";
+    notename_str += "is";
   accidental_i++;
   while  (accidental_i++ < 0)
-       if   ((notename_str == "a") ||  (notename_str == "e"))
-           notename_str += "s";
-       else
-           notename_str += "es";
+    if   ((notename_str == "a") ||  (notename_str == "e"))
+      notename_str += "s";
+    else
+      notename_str += "es";
   accidental_i--;
 
-  String de_octavate_str = String ('\'',  (Mudela_note::c0_pitch_i_c_ + 11 - pitch_i) / 12);
-  String octavate_str = String ('\'',  (pitch_i - Mudela_note::c0_pitch_i_c_) / 12);
-  return de_octavate_str + notename_str + octavate_str;
+  String de_octavate_str = to_str (',',  (Mudela_note::c0_pitch_i_c_ + 11 - pitch_i) / 12);
+  String octavate_str = to_str ('\'',  (pitch_i - Mudela_note::c0_pitch_i_c_) / 12);
+  return notename_str +de_octavate_str  + octavate_str;
 }
 
-Mudela_meter::Mudela_meter (int num_i, int den_i, int clocks_4_i, int count_32_i)
-   : Mudela_item (0)
+Mudela_time_signature::Mudela_time_signature (int num_i, int den_i, int clocks_4_i, int count_32_i)
+  : Mudela_item (0)
 {
   sync_dur_.durlog_i_ = 3;
   sync_f_ = 1.0;
   if (count_32_i != 8)
-       warning (String (_("#32 in quarter: ")) + String (count_32_i));
+    warning (_f ("#32 in quarter: %d", count_32_i));
   num_i_ = num_i;
   den_i_ = den_i;
   clocks_1_i_ = clocks_4_i * 4;
 }
 
 Moment
-Mudela_meter::bar_mom ()
+Mudela_time_signature::bar_mom ()
 {
   Duration d;
   d.durlog_i_ = den_i_;
@@ -120,43 +119,44 @@ Mudela_meter::bar_mom ()
 }
 
 int
-Mudela_meter::clocks_1_i ()
+Mudela_time_signature::clocks_1_i ()
 {
   return clocks_1_i_;
 }
 
 int
-Mudela_meter::den_i ()
+Mudela_time_signature::den_i ()
 {
   return den_i_;
 }
 
 int
-Mudela_meter::num_i ()
+Mudela_time_signature::num_i ()
 {
   return num_i_;
 }
 
 String
-Mudela_meter::str ()
+Mudela_time_signature::str ()
 {
-  String str = "\\meter "
-       + String (num_i_) + "/" + String (1 << den_i_)
-       + ";\n";
+  String str = "\\time "
+    + to_str (num_i_) + "/" + to_str (1 << den_i_)
+    + ";\n";
   return str;
 }
 
 
 // statics Mudela_note
 /*
- this switch can be used to write simple plets like
-   c4*2/3
- as
-   \plet 2/3; c4 \plet 1/1;
 this switch can be used to write simple plets like
+  c4*2/3
 as
+  \plet 2/3; c4 \plet 1/1;
  */
 bool const Mudela_note::simple_plet_b_s = true;
 
-Mudela_note::Mudela_note (Mudela_column* mudela_column_l, int channel_i, int pitch_i, int dyn_i)
+Mudela_note::Mudela_note (Mudela_column* mudela_column_l,
+                         int channel_i, int pitch_i, int dyn_i)
   : Mudela_item (mudela_column_l)
 {
   // junk dynamics
@@ -186,7 +186,7 @@ Mudela_note::str ()
 {
   Duration dur = duration ();
   if (dur.durlog_i_ < -10)
-       return "";
+    return "";
 
   String name_str
     = mudela_column_l_->mudela_score_l_->mudela_key_l_->notename_str (pitch_i_);
@@ -197,10 +197,10 @@ Mudela_note::str ()
   String str;
   //ugh
   if (dur.plet_b ())
-       str += String ("\\[")
-           + String_convert::i2dec_str (dur.plet_.iso_i_, 0, 0)
-           + "/"
-           + String_convert::i2dec_str (dur.plet_.type_i_, 0, 0);
+    str += String ("\\[")
+      + String_convert::i2dec_str (dur.plet_.iso_i_, 0, 0)
+      + "/"
+      + String_convert::i2dec_str (dur.plet_.type_i_, 0, 0);
 
   str += name_str;
 
@@ -209,12 +209,12 @@ Mudela_note::str ()
   str += Duration_convert::dur2_str (tmp);
 
   if (dur.plet_b ())
-       str += String (" \\]");
+    str += String (" \\]");
 
   /* 
-    note of zero duration is nonsense, 
-    but let's output anyway for convenient debugging
-   */
+     note of zero duration is nonsense, 
+     but let's output anyway for convenient debugging
+  */
   if (!duration_mom ())
     return String ("\n% ") + str + "\n";
 
@@ -230,7 +230,7 @@ Mudela_skip::Mudela_skip (Mudela_column* mudela_column_l, Moment skip_mom)
 Duration
 Mudela_skip::duration ()
 {
-       return Duration_convert::mom2_dur (mom_);
+  return Duration_convert::mom2_dur (mom_);
 }
 
 Moment
@@ -243,11 +243,11 @@ String
 Mudela_skip::str ()
 {
   if (!mom_)
-       return String ("");
+    return String ("");
 
   Duration dur = duration ();
   if (dur.durlog_i_<-10)
-       return "";
+    return "";
 
   String str = "\\skip ";
   str += Duration_convert::dur2_str (dur) + "; ";
@@ -256,17 +256,17 @@ Mudela_skip::str ()
 }
 
 Mudela_tempo::Mudela_tempo (int useconds_per_4_i)
-   : Mudela_item (0)
+  : Mudela_item (0)
 {
   useconds_per_4_i_ = useconds_per_4_i;
-  seconds_per_1_f_ = (Real)useconds_per_4_i_ * 4 / 1e6;
+  seconds_per_1_mom_ = Moment(useconds_per_4_i_ *4, 1e6);
 }
 
 String
 Mudela_tempo::str ()
 {
   String str = "\\tempo 4=";
-  str += String (get_tempo_i (Moment (1, 4)));
+  str += to_str (get_tempo_i (Moment (1, 4)));
   str += ";\n";
   return str;
 }
@@ -280,11 +280,13 @@ Mudela_tempo::useconds_per_4_i ()
 int
 Mudela_tempo::get_tempo_i (Moment moment)
 {
-  return Moment (60) / moment / Moment (seconds_per_1_f_);
+  Moment m1 = Moment (60) / moment;
+  Moment m2 = seconds_per_1_mom_;
+  return m1 / m2;
 }
 
 Mudela_text::Mudela_text (Mudela_text::Type type, String text_str)
-   : Mudela_item (0)
+  : Mudela_item (0)
 {
   type_ = type;
   text_str_ = text_str;
@@ -294,8 +296,8 @@ String
 Mudela_text::str ()
 {
   if (!text_str_.length_i ()
-       ||  (text_str_.length_i () != (int)strlen (text_str_.ch_C ())))
-       return "";
+      ||  (text_str_.length_i () != (int)strlen (text_str_.ch_C ())))
+    return "";
 
   return "% " + text_str_ + "\n";
 }
index 3f8573c96fa07068cc22335a5aa986860842c9c0..92329cd74d6baa13339772fe7cfb53a76184dbfb 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-score.cc -- implement Mudela_score
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <assert.h>
 #include "moment.hh"
@@ -19,7 +19,7 @@
 #include "cursor.tcc"
 
 //static Mudela_key key_c (0, 0);
-static Mudela_meter meter_4 (4, 2, 24, 8);
+static Mudela_time_signature time_sig_4 (4, 2, 24, 8);
 // useconds per 4: 250000 === 60 4 per minute
 static Mudela_tempo tempo_60 (1000000);
 
@@ -31,7 +31,7 @@ Mudela_score::Mudela_score (int format_i, int tracks_i, int tempo_i)
   column_l_array_.push (new Mudela_column (this, Moment (0)));
   //  mudela_key_l_ = &key_c;
   mudela_key_l_ = 0;
-  mudela_meter_l_ = &meter_4;
+  mudela_time_signature_l_ = &time_sig_4;
   mudela_tempo_l_ = &tempo_60;
 }
 
@@ -91,21 +91,29 @@ Mudela_score::find_column_l (Moment mom)
 Mudela_column*
 Mudela_score::get_column_l (Moment mom)
 {
-  if ( column_l_array_ [column_l_array_.size() - 1]->at_mom () > mom )
+  int i;
+  Mudela_column *c=0;
+  for (i=column_l_array_.size() - 1; !c && i >=0; i--)
     {
-      error (_("ugh"));
-      exit (1);
+      if (column_l_array_ [i]->at_mom () == mom )
+       c = column_l_array_[i];
+      else if (column_l_array_[i]->at_mom () < mom)
+       break;
+    }
+  if (!c)
+    {
+      c = new Mudela_column (this, mom);
+      column_l_array_.insert (c, i+1);
     }
-  if ( column_l_array_[column_l_array_.size() - 1]->at_mom () < mom )
-    column_l_array_.push (new Mudela_column (this, mom));
 
-  return column_l_array_ [column_l_array_.size() - 1];
+  assert (c->at_mom () == mom);
+  return c;
 }
 
 void
 Mudela_score::output (String filename_str)
 {
-  LOGOUT(NORMAL_ver) << _("Lily output to ") << filename_str << " ..." << endl;
+  LOGOUT(NORMAL_ver) << _f ("Lily output to %s...", filename_str) << endl;
 
   // ugh, ugly midi type 1 fix
   if  ( (mudela_staff_p_list_.size() == 1) && !mudela_staff_p_list_.top()->number_i_)
@@ -115,23 +123,22 @@ Mudela_score::output (String filename_str)
   Mudela_stream mudela_stream (filename_str);
   for  (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
     {
-      LOGOUT(NORMAL_ver) << _("track ") << track_i++ << ": " << flush;
+      LOGOUT(NORMAL_ver) << _ ("track ") << track_i++ << ": " << flush;
       i->output (mudela_stream);
-      mudela_stream << "\n";
+      mudela_stream << '\n';
       LOGOUT(NORMAL_ver) << endl;
     }
 
   mudela_stream << "\\score{\n";
   if  (mudela_staff_p_list_.size() > 1)
-    mudela_stream << "\\multi 3 < \\type Staff\n";
+    mudela_stream << "\n";
   for  (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
     {
       if  ( (mudela_staff_p_list_.size() != 1)
            &&  (i == mudela_staff_p_list_.top()))
        continue;
-      mudela_stream << "< \\melodic{ ";
-      mudela_stream << "\\$" << i->id_str();
-      mudela_stream << " } >\n";
+      mudela_stream << "\\type Staff = \"" << i->id_str() << "\" ";
+      mudela_stream << "\\$" << i->id_str() << "\n";
     }
   if  (mudela_staff_p_list_.size() > 1)
     mudela_stream << ">\n";
@@ -149,22 +156,22 @@ Mudela_score::output (String filename_str)
 void
 Mudela_score::process()
 {
-  LOGOUT(NORMAL_ver) << _("\nProcessing...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _ ("Processing...") << endl;
 
   LOGOUT(DEBUG_ver) << "columns\n";
   //  for  (PCursor<Mudela_column*> i (mudela_column_p_list_); i.ok(); i++)
-  //   LOGOUT(DEBUG_ver) << "At: " << i->at_mom() << "\n";
+  //   LOGOUT(DEBUG_ver) << "At: " << i->at_mom() << '\n';
 
   settle_columns();
   filter_tempo();
   quantify_columns();
   quantify_durations();
 
-  LOGOUT(NORMAL_ver) << _("\nCreating voices...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _ ("Creating voices...") << endl;
   int track_i = 0;
   for  (PCursor<Mudela_staff*> i (mudela_staff_p_list_); i.ok(); i++)
     {
-      LOGOUT(NORMAL_ver) << _("track ") << track_i++ << ": " << flush;
+      LOGOUT(NORMAL_ver) << _ ("track ") << track_i++ << ": " << flush;
       i->process();
       LOGOUT(NORMAL_ver) << endl;
     }
@@ -173,7 +180,7 @@ Mudela_score::process()
 void
 Mudela_score::filter_tempo()
 {
-  LOGOUT(NORMAL_ver) << _("\nNOT Filtering tempo...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _ ("NOT Filtering tempo...") << endl;
 }
 
 void
@@ -182,14 +189,14 @@ Mudela_score::quantify_columns()
   // ugh
   if  (Duration_convert::no_quantify_b_s)
     {
-      LOGOUT(NORMAL_ver) << _("\nNOT Quantifying columns...") << endl;
+      LOGOUT(NORMAL_ver) << '\n' << _("NOT Quantifying columns...") << endl;
       return;
     }
 
-  LOGOUT(NORMAL_ver) << _("\nQuantifying columns...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _("Quantifying columns...") << endl;
 
   int current_bar_i = 0;
-  Moment bar_mom = mudela_meter_l_->bar_mom();
+  Moment bar_mom = mudela_time_signature_l_->bar_mom();
 
   int n = 5 >? Duration_convert::no_smaller_than_i_s;
   n = Duration_convert::type2_i (n);
@@ -203,7 +210,7 @@ Mudela_score::quantify_columns()
       int bar_i = (int) (column_l_array_ [i]->at_mom () / bar_mom) + 1;
       if (bar_i > current_bar_i)
        {
-         LOGOUT (NORMAL_ver) << '[' << bar_i << ']' << flush;
+         LOGOUT (NORMAL_ver) << "[" << bar_i << "]" << flush;
          current_bar_i = bar_i;
        }
     }
@@ -213,15 +220,15 @@ Mudela_score::quantify_columns()
 void
 Mudela_score::quantify_durations()
 {
-  //    LOGOUT(NORMAL_ver) << "\nQuantifying durations..." << endl;
+  //    LOGOUT(NORMAL_ver) << '\n' << "Quantifying durations..." << endl;
 }
 
 void
 Mudela_score::settle_columns()
 {
-  //    LOGOUT(NORMAL_ver) << "\nNOT Settling columns..." << endl;
+  //    LOGOUT(NORMAL_ver) << '\n' << "NOT Settling columns..." << endl;
   //    return;
-  LOGOUT(NORMAL_ver) << _("\nSettling columns...") << endl;
+  LOGOUT(NORMAL_ver) << '\n' << _("Settling columns...") << endl;
 
 #if 0
   assert (!column_l_array_.size());
index 67fcaf4ab2201568a84ad05a9b3b1c0edfbb455d..d6995e532affe5eb040e639102e95a0740d5216d 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-staff.cc -- implement Mudela_staff
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <assert.h>
 #include <ctype.h>
@@ -26,7 +26,7 @@ Mudela_staff::Mudela_staff (int number_i, String copyright_str, String track_nam
   instrument_str_ = instrument_str;
   name_str_ = track_name_str;
   mudela_key_l_ = 0;
-  mudela_meter_l_ = 0;
+  mudela_time_signature_l_ = 0;
   mudela_tempo_l_ = 0;
 }
 
@@ -68,7 +68,7 @@ Mudela_staff::eat_voice (Link_list<Mudela_item*>& items)
        }
       else if  (i.ok())
        i++;
-      LOGOUT(DEBUG_ver) << "mom: " << mom.str () << "\n";
+      LOGOUT(DEBUG_ver) << "mom: " << mom.str () << '\n';
     }
 }
 
@@ -88,7 +88,7 @@ Mudela_staff::name_str()
 {
   if  (name_str_.length_i())
     return name_str_;
-  return String ("track") + String (number_i_);
+  return String ("track") + to_str (number_i_);
 }
 
 void
@@ -96,12 +96,12 @@ Mudela_staff::output (Mudela_stream& mudela_stream_r)
 {
   mudela_stream_r << "$" << id_str() << " = \\melodic";
   mudela_stream_r <<  (mudela_voice_p_list_.size() > 1 ? "<" : "{");
-  mudela_stream_r << "\n";
-  mudela_stream_r << _("% midi copyright:") << copyright_str_ << "\n";
-  mudela_stream_r << _("% instrument:") << instrument_str_ << "\n";
+  mudela_stream_r << '\n';
+  mudela_stream_r << _ ("% midi copyright:") << copyright_str_ << '\n';
+  mudela_stream_r << _ ("% instrument:") << instrument_str_ << '\n';
 
   // don't use last duration mode
-  mudela_stream_r << "\\duration 4;\n";
+  //  mudela_stream_r << "\\duration 4;\n";
   if  (mudela_voice_p_list_.size() == 1)
     mudela_voice_p_list_.top()->output (mudela_stream_r);
   else
@@ -113,13 +113,13 @@ Mudela_staff::output (Mudela_stream& mudela_stream_r)
       }
 
   mudela_stream_r <<  (mudela_voice_p_list_.size() > 1 ? "\n>" : "\n}");
-  mudela_stream_r << " % " << name_str() << "\n";
+  mudela_stream_r << " % " << name_str() << '\n';
 }
 
 void
 Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment now_mom, int bar_i)
 {
-  Moment bar_mom = mudela_meter_l_->bar_mom();
+  Moment bar_mom = mudela_time_signature_l_->bar_mom();
   Moment into_bar_mom = now_mom - Moment (bar_i - 1) * bar_mom;
   if  (bar_i > 1)
     {
@@ -129,7 +129,7 @@ Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment no
   mudela_stream_r << "% " << String_convert::i2dec_str (bar_i, 0, ' ');
   if  (into_bar_mom)
     mudela_stream_r << ":" << Duration_convert::dur2_str (Duration_convert::mom2_dur (into_bar_mom));
-  mudela_stream_r << "\n";
+  mudela_stream_r << '\n';
 }
 
 
@@ -137,7 +137,7 @@ Mudela_staff::output_mudela_begin_bar (Mudela_stream& mudela_stream_r, Moment no
 void
 Mudela_staff::output_mudela_rest (Mudela_stream& mudela_stream_r, Moment begin_mom, Moment end_mom)
 {
-  Moment bar_mom = mudela_meter_l_->bar_mom();
+  Moment bar_mom = mudela_time_signature_l_->bar_mom();
   Moment now_mom = begin_mom;
 
   int begin_bar_i = (int) (now_mom / bar_mom) + 1;
@@ -229,7 +229,7 @@ Mudela_staff::process()
 
   assert (mudela_score_l_g);
   mudela_key_l_ = mudela_score_l_g->mudela_key_l_;
-  mudela_meter_l_ = mudela_score_l_g->mudela_meter_l_;
+  mudela_time_signature_l_ = mudela_score_l_g->mudela_time_signature_l_;
   mudela_tempo_l_ = mudela_score_l_g->mudela_tempo_l_;
 
   Link_list<Mudela_item*> items;
index 5fa339cb6669f8be6950a1bec2f95d7e0dad7db2..0f5ab11b8f44c55ccb4b1e47fca5ad2951770baf 100644 (file)
@@ -3,7 +3,7 @@
 //
 // source file of the LilyPond music typesetter
 //
-// (c)  1997--1998, 1998 Jan Nieuwenhuizen <jan@digicash.com>
+// (c)  1997--1998, 1998 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include <assert.h>
 #include <time.h>
@@ -11,6 +11,7 @@
 #include "mi2mu-global.hh"
 #include "mudela-item.hh"
 #include "mudela-stream.hh"
+#include "string-convert.hh"
 
 extern String filename_str_g;
 
@@ -33,20 +34,20 @@ Mudela_stream::~Mudela_stream()
 {
   delete os_p_;
   if  (indent_i_)
-    warning (_("lily indent level: ") + String (indent_i_));
+    warning (_f ("lily indent level: %d", indent_i_));
 }
 
 Mudela_stream&
-Mudela_stream::operator << (String str)
+Mudela_stream::operator << (Scalar s)
 {
   static String word_sep_str = "{} \t\n";
-  while  (str.length_i())
+  while  (s.length_i())
     {
-      int i = str.index_any_i (word_sep_str) + 1;
+      int i = s.index_any_i (word_sep_str) + 1;
       if  (!i)
-       i = str.length_i();
-      String word = str.left_str (i);
-      str = str.cut (i, str.length_i());
+       i = s.length_i();
+      String word = s.left_str (i);
+      s = s.cut_str (i, s.length_i());
       output_wrapped (word);
     }
   return *this;
@@ -63,7 +64,7 @@ Mudela_stream::operator << (Mudela_item& mudela_item_r)
 void
 Mudela_stream::handle_pending_indent()
 {
-  *os_p_ << String ('\t', pending_indent_i_);
+  *os_p_ << String_convert::char_str ('\t', pending_indent_i_);
   column_i_ += pending_indent_i_ * INDENT_i;
   pending_indent_i_ = 0;
 }
@@ -71,27 +72,27 @@ Mudela_stream::handle_pending_indent()
 void
 Mudela_stream::header()
 {
-  *os_p_ << _("% Creator: ");
+  *os_p_ << _ ("% Creator: ");
   if (no_timestamps_b_g)
     *os_p_ << "GNU LilyPond\n"; 
   else
-    *os_p_ << mi2mu_version_str() << "\n";
-  *os_p_ << _("% Automatically generated");
+    *os_p_ << mi2mu_version_str() << '\n';
+  *os_p_ << _ ("% Automatically generated");
   if (no_timestamps_b_g)
     *os_p_ << ".\n";
   else
     {
-      *os_p_ << _(", at ");
+      *os_p_ << _ (", at ");
       time_t t (time (0));
       *os_p_ << ctime (&t) << "%\n";
     }
-  *os_p_ << _("% from input file: ");
+  *os_p_ << _ ("% from input file: ");
   //  *os_p_ << midi_parser_l_g->filename_str_;
   // ugh
   *os_p_ << filename_str_g;
   *os_p_ << "\n\n";
   // ugh
-  *os_p_ << "\\version \"0.1.11\";\n";
+  *os_p_ << "\\version \"1.0.0\";\n";
 }
 
 void
@@ -99,7 +100,7 @@ Mudela_stream::open()
 {
   os_p_ = new ofstream (filename_str_.ch_C ());
   if  (!*os_p_)
-    error  (_("can't open: `") + filename_str_ + "\'");
+    error (_f ("can't open file: `%s\'",  filename_str_));
 }
 
 void
index 6f91c8ff256cc742a07ba1b142a0c2ae6fb32166..6f92d03f2257fd3a4e8258dba6db7d2c79f06d63 100644 (file)
@@ -1,7 +1,7 @@
 //
 // mudela-voice.cc -- implement Mudela_voice
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include "string-convert.hh"
 #include "mi2mu-global.hh"
@@ -26,14 +26,14 @@ Moment
 Mudela_voice::begin_mom()
 {
   return mudela_item_l_list_.size() ? 
-       mudela_item_l_list_.top()->at_mom() : Moment (0);
+    mudela_item_l_list_.top()->at_mom() : Moment (0);
 }
 
 Moment 
 Mudela_voice::end_mom()
 {
   return mudela_item_l_list_.size() ? 
-       mudela_item_l_list_.bottom()->at_mom() : Moment (0);
+    mudela_item_l_list_.bottom()->at_mom() : Moment (0);
 }
 
 static int const FAIRLY_LONG_VOICE_i = 6;
@@ -42,36 +42,36 @@ void
 Mudela_voice::output (Mudela_stream& mudela_stream_r)
 {
   if  (!mudela_item_l_list_.size())
-       return;
+    return;
   
   if  (mudela_item_l_list_.size() > FAIRLY_LONG_VOICE_i)
-       mudela_stream_r << "\n";
+    mudela_stream_r << '\n';
 
   int current_bar_i = 0;
-  Moment bar_mom = mudela_staff_l_->mudela_meter_l_->bar_mom();
+  Moment bar_mom = mudela_staff_l_->mudela_time_signature_l_->bar_mom();
 
   for  (PCursor<Mudela_item*> i (mudela_item_l_list_); i.ok(); i++) 
     {
-       Moment at_mom = i->mudela_column_l_->at_mom();
-       int bar_i = (int) (at_mom / bar_mom) + 1;
-       if  (bar_i > current_bar_i) 
-         {
-           if  (current_bar_i) 
-             {
-               if  (at_mom == Moment (bar_i - 1) * bar_mom)
-                   mudela_stream_r << "|";
-               mudela_stream_r << "\n% ";
-               mudela_stream_r << String_convert::i2dec_str (bar_i, 0, ' ');
-               mudela_stream_r << "\n";
-             }
-           LOGOUT(NORMAL_ver) << '[' << bar_i << ']' << flush; 
-           current_bar_i = bar_i;
-         }
+      Moment at_mom = i->mudela_column_l_->at_mom();
+      int bar_i = (int) (at_mom / bar_mom) + 1;
+      if  (bar_i > current_bar_i) 
+       {
+         if  (current_bar_i) 
+           {
+             if  (at_mom == Moment (bar_i - 1) * bar_mom)
+               mudela_stream_r << "|";
+             mudela_stream_r << "\n% ";
+             mudela_stream_r << String_convert::i2dec_str (bar_i, 0, ' ');
+             mudela_stream_r << '\n';
+           }
+         LOGOUT(NORMAL_ver) << "[" << bar_i << "]" << flush; 
+         current_bar_i = bar_i;
+       }
 
-       mudela_stream_r << **i;
+      mudela_stream_r << **i;
     }
 
   if  (mudela_item_l_list_.size() > FAIRLY_LONG_VOICE_i)
-       mudela_stream_r << "\n";
+    mudela_stream_r << '\n';
 }
 
diff --git a/mi2mu/out/dummy.dep b/mi2mu/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 06d53f9aceca125b478880e7d21d1135bf4b8f1d..7d99a4b9205ab294a96327e02c9044a195de6429 100644 (file)
@@ -4,7 +4,7 @@
 // liblily.a(template.o): In function `GLOBAL_$I$template.cc':
 // template.cc:28: multiple definition of `global constructors keyed to template.cc'
 //
-// copyright 1997 Jan Nieuwenhuizen <jan@digicash.com>
+// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
 
 #include "proto.hh"
 #include "list.hh"
index 57299cd3581d1a74b7e78207013246b78c0496f1..e9f2ed4e69f1c6ff4115158d3984c99833a0ebd3 100644 (file)
@@ -7,8 +7,7 @@ const char * mi2mu_version_sz();
 String
 mi2mu_version_str()
 {
-  return  String (mi2mu_version_sz())
-       + "/" + flower_version_sz()
-       + " of " +  __DATE__ + " " + __TIME__;
+  return  String (mi2mu_version_sz ())
+       + " " + _("of") + " " +  __DATE__ + " " + __TIME__;
 }
 
index f2c879d4288aa0e57165eef2824e2fae329887cb..87a08060b133f6a0015065a39c021f503e87141e 100644 (file)
 
 (defconst mudela-font-lock-keywords
   (let* ((keywords '(
-                  "accepts" "break" "bar" "cadenza" "clear" "clef" "cm" "consists" "contains"
-                  "duration" "absdynamic" "in" "translator" "type" "lyric" "key"
-                  "maininput" "melodic" "musical_pitch" "meter" "midi" "mm" "multi" "header"
-                  "notenames" "octave" "output" "partial" "paper" "plet" "property" "pt" "shape"
-                  "include"
-                  "score" "script" "skip" "staff" "table" "spandynamic" "symboltables"
-                  "tempo" "texid" "textstyle" "transpose" "version" "grouping"
-                  ))
+                    "accepts" "accidentals" "break" "bar" "cadenza" "clear" 
+                    "clef" "cm" "consists" "contains" "duration" "absdynamic" 
+                    "in" "translator" "type" "lyric" "key" "maininput" "melodic"
+                    "musical_pitch" "meter" "midi" "mm" "multi" "header"
+                    "notenames" "octave" "output" "partial" "paper" "plet"
+                    "property" "pt" "shape" "relative" "include" "score"
+                    "script" "skip" "staff" "table" "spandynamic" "symboltables"
+                    "tempo" "texid" "textstyle" "transpose" "version" "grouping"
+                    ))
        (kwregex (mapconcat (lambda (x) (concat "\\\\" x))  keywords "\\|")))
 
     (list 
 \f
 (defconst mu-version "0.0.1"
   "`mudela-mode' version number.")
-(defconst mu-help-address "hanwen@cs.ruu.nl"
+(defconst mu-help-address "hanwen@cs.uu.nl"
   "Address accepting submission of bug reports.")
 
 (defun mu-version ()
index 46c807edd6f205944defc98d2a7e086cecbbe940..dc9e90a4722006f6e740eb95c6143cb41f880550 100644 (file)
@@ -1,12 +1,13 @@
 # mutopia/Makefile
 
-# subdir level:
-#
 depth = ../..
-#
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Mutopia.make
 
-#examples=coriolan oboi-part
-include $(depth)/make/WWW.make
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
+
+# do Coriolan if you have plenty RAM / CPU
+# examples=coriolan oboi-part viola-part
+examples= oboi-part viola-part
+
+include $(stepdir)/WWW.make
+
diff --git a/mutopia/Coriolan/bassi-part.ly b/mutopia/Coriolan/bassi-part.ly
new file mode 100644 (file)
index 0000000..405f6d5
--- /dev/null
@@ -0,0 +1,32 @@
+\header{
+filename =      "bassi-part.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "violoncello.ly"
+\include "contrabasso.ly"
+
+$bassi = \type GrandStaff = bassi_group <
+       \$violoncello_staff
+       \$contrabasso_staff
+>
+
+
+$bassi = \type GrandStaff = bassi_group <
+       \$violoncello_staff
+       \$contrabasso_staff
+>
+
+\score{
+       \$bassi
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
+}
+
index ff5f0c7282b44e5ec831762080a5e87ac3dd50f4..0476375b81fd8784ebc6b7e6633b0f83e832cc7a 100644 (file)
@@ -1,19 +1,19 @@
-\header{
+header{
 filename =      "clarinetti-part.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "global.ly"
 \include "clarinetti.ly"
-\include "part-paper.ly"
 \score{
        \$clarinetti_staff
-       \paper{}
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
 }
 
index 217842c7a16201a3a310916454558418de208147..08b129c6ed7a1057a39ed377138bf37fe1fe196a 100644 (file)
@@ -2,27 +2,30 @@
 filename =      "clarinetti.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "clarinetto-1.ly"
 \include "clarinetto-2.ly"
 
 $clarinetti_staff = \type Staff = clarinetti <
-       \property Staff.instrument = "clarinet"
-       \melodic< 
-% ugh, key doesn't transpose along
-%              \global
-               \meter 4/4;
-               \key bes;
-               \transpose d \$clarinetto1
-               \transpose d \$clarinetto2
+       \property Staff.midi_instrument = "clarinet"
+       \property Staff.instrument = "2 Clarinetti (B\\textflat)"
+       \property Staff.instr = "Cl. (B\\textflat)"
+       % urg: can't; only My_midi_lexer:<non-static> () parses pitch?
+       %\property Staff.transposing = "bes"
+       \property Staff.transposing = -3
+       \melodic \type Voice=one < 
+               \time 4/4;
+               \key F;
+               \$clarinetto1
+               \$clarinetto2
        >
 >
 
index d672bd826c621d6cd674c8071665d522cbab6478..2eb3869b1aa33af5f45828cf77890b66e23a1244 100644 (file)
@@ -2,22 +2,21 @@
 filename =      "clarinetto-1.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-clarinetto1 = \melodic{
-       \octave c';     
-       R1 *2 | c'4-.\ff r r2 | R1 *3 |
-       d'4-. r r2 | R1 *3 |
-       es'4-. r r2 | r1 |
-       es'4-. r r2 | d'4-. r r2 |
-       R1 *4 |
-       as2\p_"\ \ \ cresc." ( g | )fis2. g4-.\f |
+clarinetto1 = \melodic \relative c {
+       R1 *2 | d''4-.\ff r r2 | R1 *3 | e4-. r r2 | R1 *3 |
+       f4-. r r2 | r1 | f4-. r r2 | e4-. r r2 | R1 *4 |
+       bes'2\p_"\ \ \ cresc." ( a | 
+       %20
+       )gis2. a4-.\f | R1*13 | d1\ff % ~ |
+       %35
 }
 
index 285d7497ca9b8b94ebcacca6bfdcfdb5719613d3..759cb2995fe5f3a1472d5a4892ce642d701eec48 100644 (file)
@@ -2,29 +2,20 @@
 filename =      "clarinetto-2.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-clarinetto2 = \melodic{
-       \octave c';     
-% koor: clarinetto-part.ly
-% lilypond: ../../current/lily/dynamic-grav.cc:58: void Dynamic_engraver::do_process_requests(): Assertion `!dynamic_p_' failed.
-% Aborted (core dumped)
-
-% huh?
-
-%      r1 | r1 | as4-.\ff r r2 | r1 |
-       R1 *2 | as4-. r r2 | R1 *3 |
-       b4-. r r2 | R1 *3 |
-       c'4-. r r2 | r1 |
-       c'4-. r r2 | b4-. r r2 |
-       R1 *5 |
-       r2 r4 b,4-. |
+clarinetto2 = \melodic \relative c { 
+       R1*2 bes''4-.\ff r r2 | R1*3 | cis4-. r r2 | R1 *3 | 
+       d4-. r r2 | r1 | d4-. r r2 | cis4-. r r2 | R1 *5 |
+       %20
+       r2 r4 cis,4-. | R1*13 | g1\ff % ~ |
+       %35
 }
 
diff --git a/mutopia/Coriolan/contrabasso-part.ly b/mutopia/Coriolan/contrabasso-part.ly
new file mode 100644 (file)
index 0000000..e3cd408
--- /dev/null
@@ -0,0 +1,20 @@
+\header{
+filename =      "contrabasso-part.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "contrabasso.ly"
+
+\score{
+       \$contrabasso_staff 
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
+}
+
index c1229deec52b88ec69d35656c467434609750a86..71f4ad500df841205ea9d5dd313b23aab1b8e967 100644 (file)
 filename =      "contrabasso.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-contrabasso = \melodic{
-       \octave c;
-       c1\ff ~ | c | f,4-. r r2 | r1 |
-       c1\ff ~ | c | f,4-. r r2 | r1 |
-       c1\ff ~ | c | fis,4-. r r2 | r1 |
-       g,4-. r r2 | g,4-. r r2 |
-       c4\p r4 r2 | c4 r4 r2 | c4 r4 r2 | r1 |
-       c'4.-"cresc." c'8 bes4. bes8 | as4. as8 g4\f r4 |
+contrabasso = \melodic \relative c {
+%      \translator Staff=violoncello
+       \skip 1*21;
+%      \translator Staff=contrabasso
+       bes4\p r4 r2 |
+       bes4   r4 r2 |
+       bes4   r4 r2 |
+       %25
+       R1 |
+       \skip 1*14;
+       fis2\sf r |
+       fis2\sf r |
+       f!2\sf r |
+       f2\sf r |
+       e2\sf r |
+       %45
+       es!2\sf r |
+       des2. es4\sf(|
+       )d2. es4\sf(|
+       )d2. es4\sf(|
+       )d2. es4\sf(|
+       % 50
+       )d4 r r2 |
+       R1
+       es'4\p r r r8 es(|
+       )as,4 r r r8 as(|
+       )g4 r r r8 g(|
+       )d'4 r r r8 d(|
+       )es4-"cresc." r r r8 es(|
+       )as,4 r r r8 as(|
+       )g4 r r r8 g(|
+       )d'4 r r r8 d(|
+       %60
+       )es4 r r r8 es(|
+       )as,4 r r r8 as(|
+       )g2\ff f | e c' |
+       f,4\p r r r8 f(|
+       %65
+       )bes4 r r r8 bes(|
+       )as4 r r r8 as(|
+       )e4 r r r8 e(|
+       )f4-"cresc." r r r8 f(|
+       )bes4 r r r8 bes(|
+       %70
+       )as2\ff g | fis d' |
+       g,4\p-"cresc." r r r8 g(|
+       )c4 r r r8 c(|
+       % )<b1\sf\> { s2 s4 \!s8}> |
+       )b1 |
+       %75
+       \skip 1*3; |
+       d4\pp r d r | d r d r | d r d-"cresc." r | 
+       d r d r | d r d r | d r d r | 
+       \skip 1*8; |
+       c4 r r2 | c4 r r2 | c4 r r2 | c4 r r2 |
+       \skip 1*6; |
+       g4\p r r2 | r2 r4 r8 fis\f |
+       g4 r r2 | r2 r4 r8 fis\f |
+       g4 r r2 | 
+       R1*3 | 
+       \skip 1*8; | g4\p r r2 |
+       % urg, this is *rest*, not skip: 
+       % need own staff for rests, mustn't collapse to one cello staff!
+       %120 - 1
+       R1*21 |
+       % play with cello
+       \skip 1*4; |
+       f'4\p r r2 |
+       R1*3 |
+       \skip 1*10; |
+       b,2\sf r | b2\sf r | R1*3 |
+       bes2\ff r | bes2\sf r | R1*2 | 
+       r2 r4 bes\ff( |
+       )as2. bes4\sf(|
+       )as2. bes4\sf(|
+       )as2. bes4\sf(|
+       )as2. c4\sf(|
+       )b2. c4\sf(|
+       )b2. c4\sf(|
+       )b2. c4\sf(|
+       )b2. c4\sf(|
+       )b4 r r2 | R1 |
+       c4\p r r r8 c(|
+       )f,4 r r r8 f(|
+       %180
+       )e4 r r r8 e(|
+       )b'4 r r r8 b(|
+       )c4-"cresc." r r r8 c(|
+       )f,4 r r r8 f(|
+       )e4 r r r8 e'(|
+       %185
+       )b4 r r r8 b(|
+       )c4 r r r8 c(|
+       )f,4 r r r8 f(|
+       )e2\ff d' | cis a | 
+       %190
+       d4\p r r r8 d(|
+       )g,4 r r r8 g(|
+       )f4 r r r8 f(|
+       )cis'4 r r r8 cis(|
+       )d4-"cresc." r r r8 d(|
+       %195
+       )g,4 r r r8 g( |
+       )d2\ff e' | dis b | 
+       e4\p r r r8 e(|
+       % )a4\< r r r8 a(|
+       %200
+       % g1 | <f {s2 s4 \!s8}> | 
+       )a4 r r r8 a(|
+       %200
+       )g1 | f | 
+       \skip 1*18; |
+       %220
+       f4 r r2 | f'4 r r2 | f4 r r2 | f4 r r2 | 
+       \skip 1*6; |
+       c,4\p r r2 | r2 r4 r8 b\f |
+       c4 r r2 | r2 r4 r8 b\f |
+       c4 r r2 | 
+       R1*3 |
+       \skip 1*59; |
+       r2 r4 f, | c' r r2 |
+       r2 r4 f, | c' r r2 | R1 | 
+       f,4 r r2 | R1 |
+       c'4 r r2 | R1 |
+       f,4 r r2 | R1*3 | c'4\pp r r2 | R1 |
+       c4 r r2 |
+       c4 r r2 |
+       c4 r r2 |
 }
 
 $contrabasso_staff = \type Staff = contrabasso <
-       \property Staff.instrument = "contrabass"
+       \property Staff.midi_instrument = "contrabass"
+       \property Staff.instrument = "Contrabasso"
+       \property Staff.instr = "Cb."
        \clef "bass";
-       \melodic< 
-               \global;
+       \melodic \type Voice=one
+               \global
                \$contrabasso
        >
 >
+
index 0d584d34c3d83b56a910a1a12cfd86d74987eaaf..7d11fd68a10ef023d9fac9131772f4c853ec58e8 100644 (file)
@@ -2,14 +2,12 @@
 filename =      "coriolan.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "global.ly"
 
@@ -21,55 +19,64 @@ copyright =  "public domain";
 \include "oboi.ly"
 \include "timpani.ly"
 \include "trombe.ly"
-\include "viola.ly"
+\include "viola-1.ly"
+\include "viola-2.ly"
 \include "violino-1.ly"
 \include "violino-2.ly"
 \include "violoncello.ly"
 
-legno = \type Staff_group = legno_group <
+legno = \type StaffGroup = legno_group <
        \$flauti_staff
        \$oboi_staff
        \$clarinetti_staff
        \$fagotti_staff
 >
 
-koper = \type Staff_group = koper_group <
+koper = \type StaffGroup = koper_group <
        \$corni_staff
        \$trombe_staff
 >
 
-$timpani_g = \type Staff_group = timpani_group <
+$timpani_g = \type StaffGroup = timpani_group <
        \$timpani_staff
+       \type Staff = urgtimpany \melodic{ \skip 1*34; }
 >
 
-$violini = \type Grand_staff = violini_group <
+$violini = \type GrandStaff = violini_group <
        \$violino1_staff
        \$violino2_staff
 >
 
-$bassi = \type Grand_staff = violine_group <
+$violi = \type GrandStaff = violi_group <
+       \$viola1_staff
+       \$viola2_staff
+>
+
+$bassi = \type GrandStaff = bassi_group <
        \$violoncello_staff
        \$contrabasso_staff
 >
 
-strijkers = \type Staff_group = strijkers_group <
+strijkers = \type StaffGroup = strijkers_group <
        \$violini
-       \$viola_staff
+       \$violi
        \$bassi
 >
 
+default_paper = \include "score-paper.ly"
 \score{
        <
-               \textstyle "italic";
+               \property Score . textstyle =  "italic"
 
                \$legno
                \$koper
                \$timpani_g
                \$strijkers
        >
-       \paper{}
-       \midi{
-               \tempo 4 = 160;
+       \paper{
+               % Give hara-kiri something to do...
+               linewidth = 130.0\mm;
        }
+       \midi{ \tempo 4 = 160; }
 }
 
index 0a2eee64645003e959c46c6547c29c99b5d1018d..1f5fc1d3d1c8d2ff8dd836dc88c7d692d170c3cf 100644 (file)
@@ -2,20 +2,18 @@
 filename =      "corni-part.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "global.ly"
 \include "corni.ly"
-\include "part-paper.ly"
 \score{
        \$corni_staff
-       \paper{}
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
 }
 
index 6d3ebdcfd3c8c695aa6172244a4101303976c4d5..b2f3c39fc11227a1207d3b7a1fa268b91fde893b 100644 (file)
@@ -2,26 +2,29 @@
 filename =      "corni.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "corno-1.ly"
 \include "corno-2.ly"
 
 $corni_staff = \type Staff = corni <
-       \property Staff.instrument = "french horn"
-       \melodic< 
-% ugh, key doesn't transpose along
-%              \global
-               \meter 4/4;
-               \transpose a, \$corno1
-               \transpose a, \$corno2
+       \property Staff.midi_instrument = "french horn"
+       \property Staff.instrument = "2 Corni (E\\textflat)"
+       \property Staff.instr = "Cor. (E\\textflat)"
+       % urg: can't; only My_midi_lexer:<non-static> () parses pitch?
+       %\property Staff.transposing = "es"
+       \property Staff.transposing = 3
+       \melodic \type Voice=corni < 
+               \time 4/4;
+               \$corno1
+               \$corno2
        >
 >
 
index 44b587ba71625454af5629ad167acb9083145446..1ddbd53db73e2c71fb62a143589c65a52225ee27 100644 (file)
@@ -2,22 +2,21 @@
 filename =      "corno-1.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-corno1 = \melodic{
-       \octave c';     
-       R1 *2 | as'4-.\ff r r2 | R1 *3 |
-       as'4-. r r2 | R1 *3 |
-       es'4-. r r2 | r1 |
-       g'4-. r r2 | g'4-. r r2 |
-       R1 *5 |
-       r2 r4 g'4-.\f |
+corno1 = \melodic \relative c {
+       R1 *2 | f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
+       c4-. r r2 | r1 | e4-. r r2 | e4-. r r2 | R1 *5 |
+       %20
+       r2 r4 g4-.\f | R1*6 | r4 g-.\f r2 | R1*2 | 
+       % `a 2
+       r8 f\p_"\ \ \ cresc." f2 e4 | r8 f f2 e4 |
+       f4. e8 f4. e8 | f4. e8 f4. e8 | d,1\ff % ~ |
+       %35
 }
 
index c3545bbe475e21a0f275d1739304d13cf40d4b60..2a02324d51bc3e6ea4cb9270519e706538cace82 100644 (file)
@@ -2,24 +2,24 @@
 filename =      "corno-2.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-corno2 = \melodic{
-       \octave c';     
-% koor: corno-part.ly
-%      r1 | r1 | f'4-.\ff r r2 | r1 |
-       R1 *2 | f'4-. r r2 | R1 *3 |
-       f'4-. r r2 | R1 *3 |
-       es'4-. r r2 | r1 |
-       g4-. r r2 | g4-. r r2 |
-       R1 *5 |
-       r2 r4 g4-. |
+corno2 = \melodic \relative c {
+       R1 *2 | d''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
+       c4-. r r2 | r1 | e,4-. r r2 | e4-. r r2 | R1 *5 |
+       %20
+       r2 r4 e4-.\f | R1*6 | r4 g-.\f r2 | R1*2 | 
+       % `a 2
+       % urg, yes this is a-deux, but lily doesn't know about I. / a2 yet.
+%      r8 f'\p_"\ \ \ cresc." f2 e4 | r8 f f2 e4 |
+%      f4. e8 f4. e8 | f4. e8 f4. e8 | 
+       R1*4 |
+       d1\ff % ~ |
+       %35
 }
 
index a786c65738af2f16a1c675b2e4fc100de3fef7c3..6d13a85fdec892e9ff3a4b86d4e49e3861ab351a 100644 (file)
@@ -2,20 +2,20 @@
 filename =      "fagotti-part.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "global.ly"
 \include "fagotti.ly"
-\include "part-paper.ly"
 \score{
        \$fagotti_staff
-       \paper{}
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
 }
 
index 288ba66834e9f37a902be87fab4fc4f401d721b3..4dd33f7f59e0c8b5ba4d38fe016374ace28b99ef 100644 (file)
@@ -2,23 +2,25 @@
 filename =      "fagotti.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "fagotto-1.ly"
 \include "fagotto-2.ly"
 
 $fagotti_staff = \type Staff = fagotti <
-       \property Staff.instrument = "bassoon"
+       \property Staff.midi_instrument = "bassoon"
+       \property Staff.instrument = "2 Fagotti"
+       \property Staff.instr = "Fg."
        \clef "bass";
-       \melodic< 
-               \global;
+       \melodic \type Voice=fagotti 
+               \global
                \$fagotto1
                \$fagotto2
        >
index 92e38b17cd3a38dc0396d390b9098816a8b4d553..c6bc7c80f88cb06bfa8b8fa259320d6ed035301b 100644 (file)
@@ -2,22 +2,21 @@
 filename =      "fagotto-1.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-fagotto1 = \melodic{
-       \octave c;      
-       R1 *2 | as4-.\ff r r2 | R1 *3 |
-       as4-. r r2 | R1 *3 |
-       a4-. r r2 | r1 |
-       c'4-. r r2 | b4-. r r2 |
-       R1 *5 |
-       r2 r4 g4-.\f |
+fagotto1 = \melodic \relative c {
+       R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
+       a4-. r r2 | r1 | c4-. r r2 | b4-. r r2 | R1 *5 |
+       %20
+       r2 r4 g4-.\f | R1*5 | ges'2\p_"\ \ \ cresc." f2 ~ | f4 e-.\f r2 |
+       R1 | f2\p()es | d1-"cresc." | d | d2 d | d d | c1\ff % ~ |
+       %35
 }
 
index 20a0cd83e7b51e9faef1fed23f09f5c957f10a1e..c236e123fecfeb3b4a919b7d1745b729810af03d 100644 (file)
@@ -2,24 +2,19 @@
 filename =      "fagotto-2.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-fagotto2 = \melodic{
-       \octave c;      
-% koor
-%      r1 | r1 | f4-.\ff r r2 | r1 |
-       R1 *2 | f4-. r r2 | R1 *3 |
-       f4-. r r2 | R1 *3 |
-       fis4-. r r2 | r1 |
-       g4-. r r2 | g4-. r r2 |
-       R1 *5 |
+fagotto2 = \melodic \relative c {
+       R1 *2 | f4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
+       fis4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *5 |
+       %20
        r2 r4 g,4-. |
+       R1*6 | r4 g'\f r2 | R1*5 | as1\ff %~ |
+       %35
 }
 
index 16750b154d69023c5e7153a95fc2480ec3a7da44..d0ff7a749b349be9d106907fbdb062f8d0cea0d3 100644 (file)
@@ -2,21 +2,21 @@
 filename =      "flauti-part.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "global.ly"
 \include "flauti.ly"
-\include "part-paper.ly"
 
 \score{
        \$flauti_staff
-       \paper{}
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
 }
 
index ae0d52352c74f59782ec2ccdadc27b441c6d08d3..f829429dcaa351368ed414c1870bc635a992a443 100644 (file)
@@ -2,22 +2,24 @@
 filename =      "flauti.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "flauto-1.ly"
 \include "flauto-2.ly"
 
 $flauti_staff = \type Staff = flauti <
-       \property Staff.instrument = "flute"
-       \melodic< 
-               \global;
+       \property Staff.midi_instrument = "flute"
+       \property Staff.instrument = "2 Flauti"
+       \property Staff.instr = "Fl."
+       \melodic \type Voice=flauti < 
+               \global
                \$flauto1
                \$flauto2
        >
index 7d624cfddf2b542743fa3d61383bc96a05b463ab..a6c7440b6b13efd829e4ac8ab3724f4383bb49df 100644 (file)
@@ -2,22 +2,24 @@
 filename =      "flauto-1.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-flauto1 = \melodic{
-       \octave c'';    
-       R1 *2 | c'4-.\ff r r2 | R1 *3 |
-       d'4-. r r2 | R1 *3 |
-       es'4-. r r2 | r1 |
-       g'4-. r r2 | b4-. r r2 |
-       R1 *4 |
-       r2 es'\p_"\ \ \ cresc." ( | )dis'2. es'4-.\f |
+flauto1 = \melodic \relative c {
+       R1 *2 | c'''4-.\ff r r2 | R1 *3 | d4-. r r2 | R1 *3 |
+       es4-. r r2 | r1 | g4-. r r2 | b,4-. r r2 | R1 *4 |
+       r2 es\p_"\ \ \ cresc." ( | 
+       %20
+       )dis2. es4-.\f |
+       R1*5 | r2 f\p_"\ \ \ cresc." ~ | 
+       f4 e-.\f r2 | R1 | f2()es | 
+       %30
+       d1-"cresc."  | d1 | 
+       d2 d2 | d2 d2 | f1\ff % ~
+       %35
 }
 
index 41ecf9fd8feb29bd52980fe76b4c893c49121e80..3132d85146d93c078e38f95ae678e01a8641306e 100644 (file)
@@ -2,24 +2,19 @@
 filename =      "flauto-2.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-flauto2 = \melodic{
-       \octave c'';    
-% koor
-%      r1 | r1 | as4-.\ff r r2 | r1 |
-       R1 *2 | as4-. r r2 | R1 *3 |
-       b4-. r r2 | R1 *3 | 
-       c'4-. r r2 | r1 |
-       es'4-. r r2 | d4-. r r2 |
-       R1 *4 |
-       r2 r2 | r2 r4 b4-. |
+flauto2 = \melodic \relative c {
+       R1 *2 | as'''4-.\ff r r2 | R1 *3 | b4-. r r2 | R1 *3 | 
+       c4-. r r2 | r1 | es4-. r r2 | d,4-. r r2 | R1 *4 |
+       r2 r2 | 
+       %20
+       r2 r4 b4-. | R1*6 | r4 c r2 | R1*5 | c1 % ~ |
+       %35
 }
 
index a339da0450cdc2cd5c382a2edabebb6dbc387633..28f818a186827c7d95f02eadb2968e580ad597ee 100644 (file)
@@ -2,17 +2,18 @@
 filename =      "global.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-global = \melodic{
-       \meter 4/4;
-       \key bes es as;
+global = \melodic {
+       \time 4/4;
+       \key es;
+       \skip 1*314;
 }
 
index ace20d4fac5c26e7c5e40e39c9d8b676d3caa5ec..2a04c174c45e3f06d47d02a5c519960101aa80a5 100644 (file)
@@ -2,22 +2,20 @@
 filename =      "oboe-1.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-oboe1 = \melodic{
-       \octave c'';    
-       R1 *2 | as4-.\ff r r2 | R1 *3 |
-       as4-. r r2 | R1 *3 |
-       a4-. r r2 | r1 |
-       g4-. r r2 | g4-. r r2 |
-       R1 *4 |
-       as2\p_"\ \ \ cresc." ( g | )fis2. g4-.\f |
+oboe1 = \melodic \relative c'' {
+       R1 *2 | as'4-.\ff r r2 | R1 *3 | as4-. r r2 | R1 *3 |
+       a4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *4 |
+       as2\p_"\ \ \ cresc." ( g |
+       %20
+       )fis2. g4-.\f | R1*5 | ges2\p_"\ \ \ cresc."  f ~ | f4 e\f r2 |
+       R1 | f2\p()es | d1-"cresc." | d | d2 d | d d | f1\ff % ~
+       %35
 }
 
index a674f75b4476e456a1f367f78be58cd09616b856..1b47a5a167af286403f951a1e786a5eec9afb425 100644 (file)
@@ -2,24 +2,20 @@
 filename =      "oboe-2.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-oboe2 = \melodic{
-       \octave c'';    
-% koor
-%      r1 | r1 | f4-.\ff r r2 | r1 |
-       R1 *2| f4-. r r2 | R1 *3 |
-       f4-. r r2 | R1 *3 |
-       es4-. r r2 | r1 |
-       es4-. r r2 | b,4-. r r2 |
-       R1 *5 | 
-       r2 r4 b,4-. |
+oboe2 = \melodic \relative c{
+       R1 *2| f''4-.\ff r r2 | R1 *3 | f4-. r r2 | R1 *3 |
+       es4-. r r2 | r1 | es4-. r r2 | b4-. r r2 | R1 *5 | 
+       %20
+       r2 r4 b4-. | R1*6 | r4 bes\f r2 | R1*6 | c1\ff %~ |
+       %35
 }
 
index 247b88b643da78de0eb1eba00c5e26a8ecec66e7..7ee199671998c2327550e2dec5dde5f87880e360 100644 (file)
@@ -2,21 +2,21 @@
 filename =      "oboi-part.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "global.ly"
 \include "oboi.ly"
-\include "part-paper.ly"
 
 \score{
        \$oboi_staff 
-       \paper{}
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
 }
 
index 86ba75309c66b944159a7f5607f56d28dcc2e11e..9b8de116fab9130befa74da05046be30a39c1a82 100644 (file)
@@ -2,22 +2,24 @@
 filename =      "oboi.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "oboe-1.ly"
 \include "oboe-2.ly"
 
 $oboi_staff = \type Staff = oboi <
-       \property Staff.instrument = "oboe"
-       \melodic< 
-               \global;
+       \property Staff.midi_instrument = "oboe"
+       \property Staff.instrument = "2 Oboi"
+       \property Staff.instr = "Ob."
+       \melodic \type Voice=oboi < 
+               \global
                \$oboe1
                \$oboe2
        >
diff --git a/mutopia/Coriolan/out/dummy.dep b/mutopia/Coriolan/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/mutopia/Coriolan/part-paper.ly b/mutopia/Coriolan/part-paper.ly
deleted file mode 100644 (file)
index c150a93..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-%J.S.Bach/paper20.ly
-\version "0.1.14";
-
-\include "table20.ly"
-\include "paper20.ly"
-default_paper = \paper {
-       \paper_twenty
-       Score = \translator {
-       \type Score_engraver;
-
-       \consists "Timing_engraver";
-       % uncomment to bar numbers on a whole system.
-%{
-       \consists "Bar_column_engraver";
-       \consists "Bar_number_engraver";
-%}
-       \consists "Span_score_bar_engraver";
-       \consists "Score_priority_engraver";
-       \consists "Priority_horizontal_align_engraver";
-       \consists "Vertical_align_engraver";
-
-
-       \accepts "Staff_group";
-       \accepts "Staff";
-       \accepts "Rhythmic_staff";      
-       \accepts "Lyrics";
-       \accepts "Grand_staff";
-       SkipBars = "1";
-}
-
-
-}
-
index ed2a4fb952a9b2103422cfb91e1027f0be83e191..28075b35368f3a2d36b14415e419810950acde6b 100644 (file)
@@ -2,30 +2,32 @@
 filename =      "timpani.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-timpani = \melodic{
-       \octave c;      
-       R1 *2 | c4-.\ff r r2 | R1 *3 |
-       c4-. r r2 | R1 *3 |
-       c4-. r r2 | r1 |
-       g,4-. r r2 | g,4-. r r2 |
-       R1 *5 |
-       r2 r4 g,4-. |
+timpani = \melodic \relative c {
+       R1 *2 | c4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
+       c4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *5 |
+       %20
+       r2 r4 g4-. | R1*6 | r4 c-.\f r2 | R1*2 | r2 c4-.\p_"\ \ \ cresc." r |
+       r2 c4-. r | r2 c4-. r | c r c r | c1\ff-\trill |
+       %35
 }
 
 $timpani_staff = \type Staff = timpani <
-       \property Staff.instrument = "timpani"
+       \property Staff.midi_instrument = "timpani"
+       \property Staff.instrument = "2 Timpani (C-G)"
+       \property Staff.instr = "Timp."
        \clef "bass";
        \melodic< 
-               \global;
+%              \global
+               \time 4/4;
                \$timpani
        >
 >
index 2e33514bb06fc660f1debb1f744f28cc372d4d67..ec77ec0d82370856c14ffbbea3b9460af83e31ad 100644 (file)
@@ -2,20 +2,20 @@
 filename =      "trombe-part.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "global.ly"
 \include "trombe.ly"
-\include "part-paper.ly"
 \score{
        \$trombe_staff 
-       \paper{}
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
 }
 
index c3c3d5d7e1410238fc7a001f7356a630b7169c53..84b28bdfb5b5ea7880df4cef5f38e5cac693c391 100644 (file)
@@ -2,22 +2,25 @@
 filename =      "trombe.ly";
 % %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "trombo-1.ly"
 \include "trombo-2.ly"
 
 $trombe_staff = \type Staff = trombe <
-       \melodic< 
-%              \global;
-               \meter 4/4;
+       \property Staff.midi_instrument = "trumpet"
+       \property Staff.instrument = "2 Trombe (C)"
+       \property Staff.instr = "Tbe."
+       \melodic \type Voice=trombe < 
+%              \global
+               \time 4/4;
                \$trombo1
                \$trombo2
        >
index 05b11dc51dc89beac45c756644ce16449d1f1770..c7501cf01a5c5ad6f643cd5d25d6b84bdaea44e1 100644 (file)
@@ -2,22 +2,19 @@
 filename =      "trombo-1.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-trombo1 = \melodic{
-       \octave c';     
-       R1 *2 | c'4-.\ff r r2 | R1 *3 |
-       c'4-. r r2 | R1 *3 |
-       c'4-. r r2 | r1 |
-       g4-. r r2 | g4-. r r2 |
-       R1 *5 |
-       r2 r4 g4-.\f |
+trombo1 = \melodic \relative c {
+       R1 *2 | c''4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
+       c4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *5 |
+       %20
+       r2 r4 g4-.\f | R1*6 | r4 c-.\f r2 | R1*2 | r2 c4\p_"\ \ \ cresc." r |
+       r2 c4 r | r2 c4 r | c r c r | c1\ff % ~ |
+       %35
 }
 
index 923f42db935796c21017f299e0fa5cc960853fd1..561a701114a86c58e76c65b0ef2825d4508cd877 100644 (file)
@@ -2,24 +2,19 @@
 filename =      "trombo-2.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-trombo2 = \melodic{
-       \octave c';     
-% koor
-%      r1 | r1 | c4-.\ff r r2 | r1 |
-       R1 *2 | c4-. r r2 | R1 *3 |
-       c4-. r r2 | R1 *3 |
-       c4-. r r2 | r1 |
-       g,4-. r r2 | g,4-. r r2 |
-       R1 *5 |
-       r2 r4 g,4-. |
+trombo2 = \melodic \relative c {
+       R1 *2 | c'4-.\ff r r2 | R1 *3 | c4-. r r2 | R1 *3 |
+       c4-. r r2 | r1 | g4-. r r2 | g4-. r r2 | R1 *5 |
+       %20
+       r2 r4 g4-.\f | R1*6 | r4 c-.\f r2 | R1*2 | r2 c4\p_"\ \ \ cresc." r |
+       r2 c4 r | r2 c4 r | c r c r | c1\ff % ~ |
+       %35
 }
 
diff --git a/mutopia/Coriolan/viola-1.ly b/mutopia/Coriolan/viola-1.ly
new file mode 100644 (file)
index 0000000..c639b50
--- /dev/null
@@ -0,0 +1,304 @@
+\header{
+filename =      "viola-1.ly";
+%title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+viola1 = \melodic \relative c {
+       \type Voice=one
+       c'1\ff ~ | c | f,4-. r r2 | r1 |
+       % copied 3 bars from three back...
+       %5
+       c'1 ~ | c | f,4-. r r2 | r1 |
+       c'1 ~ | c | fis,4-. r r2 | r1 |
+       g'4-. r r2 | g4-. r r2 |
+       % copied from violino-1...
+       %15
+       [c,,8-.\p es-.] [es()d] [d-. g-.] g4-"ten." |
+       [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." |
+       [c,8-. es-.] [es()d] [d-. as'-.] [as()g] |
+       [g8-. c-.] [c()b] [b-. f'-.] [f()es] |
+       es4.-"cresc." es8 d4. d8 | 
+       %20
+       c4. c8 b4\f r4 |
+       R1 |
+       r4 [des,8\p()c][c-. f-.]f4-"ten." |
+       r4 [des8\p()c][c-. f-.]f4-"ten." |
+       r4 [des8\p()c][c-. ges'-.][ges()f] |
+       %25
+       [f-. bes-.][bes()a][a-. es'-.][es()des] | des4.-"cresc." des8 c4. c8 |
+       bes4 bes4-.\f r2 |
+       R1
+       % same rhythm as violins...
+       r8 c-.\p c4. c8-. c4~ | [c8-"cresc." c-.]c2.~ |
+       %30
+       [c8 c-.]c2.~ | [c8 c-.] c4. c8-. c4~ | [c8 c-.] c4. c8-. c4 |
+       [c16\ff c c c][c c c c]c2:16 |
+       %35
+       [c16 c c c][bes bes bes bes][as as as as][g g g g] |
+       g2:16 g: | g: g: | c: c: | e: f: |
+       %40
+       c2\sf [c,8-. es-.][es()d] |
+       c'2\sf [c,8-. es-.][es()d] |
+       b'2\f r8 [d,-. d()c] |
+       b'2\f r8 [d,-. d()c] |
+       b'2\f r8 [des,-. des()c] |
+       %45
+       a'2\sf [a8-. c-.][c()bes] |
+       r4 [a8-. c-.][c()bes] r4 |
+       r4 [a8-. c-.][c()bes] r4 |
+       r4 [a8-. c-.][c()bes] r4 |
+       r4 [a8-. c-.][c()bes][bes()a] |
+       %50
+       bes4 r r2 |
+       R1 |
+       es,4\p r r r8 es(|)as4 r r r8 as (|)g4 r r r8 g(|
+       %55
+       )d4 r r r8 d(|)es4 r-"cresc." r  r8 es(|)as4 r r r8 as(|
+       )g4 r r r8 g(|)d4 r r r8 d(|
+       %60
+       )es4 r r r8 es(|)as4 r r r8 as | bes2:16 as: | g: e: |
+       f4\p r r r8 f(|
+       %65
+       )bes4 r r r8 bes(|)as4 r r r8 as(|)e4 r r r8 e(|
+       )f4-"cresc." r r r8 f(|)bes4 r r r8 bes |
+       %70
+       c2:\ff bes: | a: fis: | g4\p-"cresc." r r r8 g(|)c,4 r r r8 c |
+       [f8\sf(\>as f as][f g d)\!g] |
+       %75
+       r [es'\p(c)es] r [d(bes)d] | r [c(g)c] r [bes(g)bes] |
+       r [as(g)as] r [bes(g)bes] |
+       [d,-.\pp d'-.] es4. es8-. d4 ~ |
+       [d8 d-.] es4. es8-. d4 ~ |
+       %80
+       [d8-"cresc." d-.] es4. es8-. d4 ~ |
+       [d8 d-.] es4. es8-. d4 ~ |
+       [d8 d-.] es4. es8-. d4 ~ |
+       [d8 d-.] es4. es8-. d4 |
+       fis,2:\ff fis4: g: |
+       %85
+       d2: d: | fis: fis4: g: | c,: d: c: d: | b2: b4: c: | f': es: f: es: |
+       %90
+       b2: b4: c: | d: c: d: c: |
+       c,4 r8 c' c4\sf()des |
+       r r8 c c4\sf()des | 
+       r r8 c c4\sf()des | 
+       r r8 c c4\sf()des | 
+       [c16 es es es]es4:[es16 fis fis fis]fis4: |
+       [b,16 d d d]d4:[bes16 e e e]e4: |
+       [as,16 c c c ]c4:[g16 c c c]c4: | [a16 c c c]c4:[g16 c c c]c4: |
+       %100
+       [c8 d,]d4. es8-. es4 ~ | [es8 c-.]c4. d8-. d4 |
+       % shared with cello from here on;
+       % except for some abbrevs below...
+       [g8\p bes cis d][es d bes g]|
+       [fis a cis d][es d a fis\f] |
+       [g bes cis\p d][es d bes g]
+       %105
+       [fis a cis d][es d a fis\f] |
+       [g bes cis\p d][f, a cis d] |
+       [es, g b c][d, g a bes] |
+       [c, es g a]r[d, fis g] |
+       r[c, es g][d fis a d] |
+       %110
+       % cello has eighth notes here...
+       [g,16 g bes bes][d d es es][f, f a a][cis cis d d] |
+       [es,8: g: b: c!:][d,: f: a: bes:] |
+       [c,: es: g: a:][cis,: e: g: bes:] |
+       [d,: g: bes: d:][d,: fis: a: d:] | d2: d:
+       %115
+       | d: d: | d: d: | d: d: |
+       % urg, 2 copied from 102
+       [g,8\p bes cis d][es d bes g]|
+       [fis a cis d][es d a fis] |
+       %120
+       [g bes c des][c des bes g]|[f as c des][c des as f]|
+       [e g b c][b c g e]|[f as b c][b c as f]|
+       [e g b c][b c g e]|
+       %125
+       [c e fis g][fis g e c]|[f as b c][des c as f]|
+       [e g b c][des c g e]|[f as c des][c des as f]|
+       [g bes d es][d es bes g]|[as-"cresc." c d es][f es c as]|
+       %131
+       [g bes d es][f es bes g]|
+       % shared with cellos until here
+       % shared with violino-2 from here on
+       [as as c es][f es c as]|[a c es f][ges f c a]|
+       [bes des f ges][as ges des bes]|
+       %135
+       [c es g as][bes as es c]|[des\p f a bes][c, es g as]|
+       [bes, des f ges][as, c e f]|[ges, bes d es][f, as c des]|
+       [es, ges bes des][as c es as,]|
+       %140
+       % shared with cello from here on;
+       % except cello has eighth notes
+       [des,16\f des f f][a a bes bes][c, c es es][g g as as]|
+       [bes8: des: f: ges:][as,: c: e: f:]|
+       [g,: bes: c: des:][f,: bes: c: des:]|
+       [e,: g: bes: des:][c,: e: g: c:]|
+       %shared with cello from here on
+       [f,8\p-"cresc." as c des][es, g b c]|[des, f a bes][c, es g as]|
+       % uhuh, still 'same as cello';
+       % but now rests for notes that viola cannot reach...
+       %145
+       r[des, e g]r[c, e f]|
+       % hmm, don't want to miss more than one note,
+       % take bes octave higher
+       r[bes des, f][c e g c]|
+       % cello has eight notes;
+       % viola has rest where can't reach      
+       [f,:\ff as: c: des:][es,: g: b: c:]|[des,: f: a: bes:][c,: es: g: as:]|
+       %150
+       r[des,16 des][e e g g]r8[c,16 c][e e f f]|
+       r8[des16 des][f f g g][c, c e e][g g c c]|
+       f,1\ff ~ | f | f'4 r r2
+       R1
+       %155
+       f,1 ~ | f | d'2\sf [g,8-. bes-.][bes()as] | 
+       es'2\sf [g,8-. bes-.][bes()as] |
+       % ugh, should be quoted and transposed...
+       %160
+       [f8-.\p as-.][as()f][g-. c-.][c()b] |
+       R1*2 | 
+       g2\ff [es8-. g-.][g()f] |
+       g2\sf [es8-. g-.][g()f] |
+       %165
+       [e-. bes'-.][bes()as][g-. des'-.][des()c] |
+       R1*2 |
+       r4 [e,8-.\ff g-.][g()f] r4 |
+       r4 [e8-. g-.][g()f] r4 |
+       %170
+       r4 [e8-. g-.][g()f] r4 |
+       r4 [e8-. g-.][g()f][fis-.fis-.] | 
+       g4 [fis8-.as-.][as()g] r4 |
+       r4 [fis8-.as-.][as()g] r4 |
+       r4 [fis8-.as-.][as()g] r4 |
+       %175
+       r4 [fis8-.as-.][as()g] c4\sf(|)b  r r2 | R1
+       % ugh, should be quoted and transposed
+       c4\p r r r8 c8(|
+       )f4 r r r8 f8(|
+       %180
+       )e4 r r r8 e8(|
+       )b'4 r r r8 b8(|
+       )c4 r-"cresc." r r8 c,8(|
+       % copied
+       )f4 r r r8 f8(|
+       )e4 r r r8 e8(|
+       %185
+       )b'4 r r r8 b8(|
+       )c4 r r r8 c,8(|
+       )f4 r r r8 f8|
+       g2:16\ff f: | e: cis: |
+       %190
+       c,4\p r r r8 c8(|
+       )g'4 r r r8 g8(|
+       )f4 r r r8 f8(|
+       )cis4-"cresc." r r r8 cis8(|
+       )d4 r r r8 d8(|
+       %195
+       )g4 r r r8 g8|
+       % check
+       [a16\ff a' a a]a4: a2: | fis: dis: | 
+       e,4\p r r r8 e8(|
+       )a4\< r r r8 a8(|
+       %200
+       [)g(g e g][e g e)g] |
+       % quote and transpose
+       [f(g f g][f g f)\!g] |
+       [c\f\>(c g)c]r[c(bes)\!c] |
+       r[c\p(as)c]r[c(g)c] |
+       r[c(f,)c']r[c(g)c] |
+       %205
+       r[c\p(as)c]r[c(a)c] |
+       [b-. g'-.] as4. as8-. g4 ~ |
+       [g8 g-.] as4. as8-. g4 ~ |
+       [g8 g-.-"cresc."] as4. as8-. g4 ~ |
+       [g8 g-.] as4. as8-. g4 ~ |
+       %210
+       [g8 g-.] as4. as8-. g4 ~ |
+       [g8 g-.] as4. as8-. g4 ~ |
+       b,2:16\ff b4: c: | g'2: g: | 
+       %214
+       b,2:16\ff b4: c: | g'2: g: | 
+       e2:16\ff e4: f: | b,: c: b: c: | 
+       e2:16\ff e4: f: | b,: c: b: c: | 
+       %220
+       r4 r8 es8 es4\sf()fes |
+       r4 r8 es8 es4\sf()fes |
+       r4 r8 es8 es4\sf()fes |
+       r4 r8 es8 es4\sf()fes |
+       [des16 des f f]des4: [b16 b d d]b4: |
+       %225
+       % check
+       [bes16 bes c c]bes4: [a16 a c c]a4: |
+       [f16 f b b]f4: [as16 as c c]as4: |
+       [as16 as d d]as4: [as16 as c c]as4: |
+       [g8 g]g4. as8 as4 ~ |
+       [as8 as]f4. f8 g4 |
+       %230
+       c\p r r2 | r r4 r8 b\f |
+       c4 r r2 | r r4 r8 b\f | c4 r r2 |
+       R1*3 |
+       [c,16c es es][g g as as][bes bes d d][fis fis g g] |
+       [as, as c c][e e f f][g, g bes bes][d d es es] |
+       %240
+       f,4 r r2 |
+       R1*11 |
+       c'4\p-"cresc." r r r8 c8(|
+       % check slur and oct
+       )f4 r r r8 f8 | % f,8 (|
+       es1 | 
+       %255
+       ges\f | f\p | as\f | g\p
+       e2:16\f e: | 
+       %260
+       [as,8\p-"cresc." f']f4. es8 es4 ~ |
+       [es8 as]as4. g8 g4 ~ |
+       [g8 f]f4. es8 es4 ~ |
+       [es8 as]as4. g8 g4 |
+       r r8 d\ff es4.\sf()d8 |
+       %265
+       r4 r8 d es4.\sf()d8 |
+       r4 r8 e f4.\sf()e8 |
+       r4 r8 e f4.\sf()e8 |
+       r4 r8 e g4.\sf()f8 |
+       r4 r8 f as4.\sf()g8 |
+       %270
+       g2:16-"sempre" g:\ff | g: g: | g: g: | g: g: |
+       [g8 b, c g][c b c g] |
+       %275
+       [c b c g][c b c g] |
+       c,1 ~ | c | f4-. r r2 | R1 |
+       c1 ~ | c | f4-. r r2 | R1 |
+       c1 ~ | c | fis4-. f-. r2 | R1 |
+       es4-. e-. r2 | f4-. g-. r2 |
+       %290
+       as4-"dim." r g r | R1 | c4\p r r2 | R1 |
+       g4-"pizz." r r2 | R1 | c,4 r r2 | R1*15 |
+       c4\pp r r2 |
+       c4 r r2 |
+       c4 r r2 |
+}
+
+% urg
+\include "viola-2.ly";
+
+
+% $viola1_staff = \type Staff = viola1 <
+$viola1_staff = \type Staff = violai <
+       \property Staff.midi_instrument = "viola"
+       \property Staff.instrument = "Viola"
+       \property Staff.instr = "Vla."
+       \clef "alto";
+       \melodic \type Voice=one < 
+               \global
+               \$viola1
+       >
+>
+
diff --git a/mutopia/Coriolan/viola-2.ly b/mutopia/Coriolan/viola-2.ly
new file mode 100644 (file)
index 0000000..31dc726
--- /dev/null
@@ -0,0 +1,44 @@
+\header{
+filename =      "viola-2.ly";
+%title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+viola2 = \melodic \relative c {
+       % starts on (actualy, most part is on) same staff as viola1
+       %urg, parse error
+%urg   \translator Staff=viola1
+       \translator Staff=violai
+       \type Voice=one
+       c1 ~ | c | s1*2 |
+       % copied 3 bars from three back...
+       c ~ | c | s1*2 % |
+%      \translator Staff=viola
+       c ~ | c | s1*2 | 
+       g'4-. r r2 | g4-. r r2 |
+       %15
+       s1*14
+       % same as viola-1, octave lower
+       r8 c,-.\p c4. c8-. c4~ | [c8-"cresc." c-.]c2.~ |
+       [c8 c-.]c2.~ | [c8 c-.] c4. c8-. c4~ | [c8 c8-.] c4. c8-. c4 |
+       %35
+       [as'16\ff as a as][as as as as]as2:16 |
+}
+
+% $viola2_staff = \type Staff = viola_2 <
+$viola2_staff = \type Staff = violaii <
+       \property Staff.midi_instrument = "viola"
+       \property Staff.instrument = "Viola II"
+       \property Staff.instr = "Vla. II"
+       \clef "alto";
+       \melodic \type Voice=one< 
+               \global
+               \$viola2
+       >
+>
+
diff --git a/mutopia/Coriolan/viola-part.ly b/mutopia/Coriolan/viola-part.ly
new file mode 100644 (file)
index 0000000..5496e50
--- /dev/null
@@ -0,0 +1,33 @@
+\header{
+filename =      "viola-part.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "viola-1.ly"
+\include "viola-2.ly"
+
+$viola_staff = \type Staff = violai <
+       \property Staff.midi_instrument = "viola"
+       \property Staff.instrument = "Viola"
+       \property Staff.instr = "Vla."
+       \clef "alto";
+       \melodic \type Voice=one < 
+               \global 
+               \$viola1
+               \$viola2
+       >
+>
+
+\score{
+       \$viola_staff
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
+}
+
diff --git a/mutopia/Coriolan/viola.ly b/mutopia/Coriolan/viola.ly
deleted file mode 100644 (file)
index e25c758..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-\header{
-filename =      "viola.ly";
-%title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
-description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
-enteredby =     "JCN";
-copyright =     "public domain";
-
-
-}
-
-\version "0.1.14";
-
-viola = \melodic{
-       \octave c;
-       < { c'1\ff ~ | c' } { c ~ | c } > | f4-. r r2 | r1 |
-       % copied 3 bars from three back...
-       < { c'1 ~ | c' } { c ~ | c } > | f4-. r r2 | r1 |
-       < { c'1 ~ | c' } { c ~ | c } > | fis4-. r r2 | r1 |
-       < g4-. g'-. > r r2 | < g4-. g'-. > r r2 |
-       % copied from violino-1...
-       [c8-.\p es-.] [es()d] [d-. g-.] g4-"ten." |
-       [c8-. es-.] [es()d] [d-. g-.] g4-"ten." |
-       [c8-. es-.] [es()d] [d-. as-.] [as()g] |
-       [g8-. c'-.] [c'()b] [b-. f'-.] [f'()es'] |
-       es'4.-"cresc." es'8 d'4. d'8 | c'4. c'8 b4\f r4 |
-}
-
-$viola_staff = \type Staff = viola <
-       \property Staff.instrument = "viola"
-       \clef "alto";
-       \melodic< 
-               \global;
-               \$viola
-       >
->
diff --git a/mutopia/Coriolan/violino-1-part.ly b/mutopia/Coriolan/violino-1-part.ly
new file mode 100644 (file)
index 0000000..2ad314b
--- /dev/null
@@ -0,0 +1,20 @@
+\header{
+filename =      "violino-1-part.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "violino-1.ly"
+
+\score{
+       \$violino1_staff 
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
+}
+
index 4d675f24bd4159917b56171354920e606006a901..1a3e2f393df9759ba4038f5c81d9ac9a8a3b83ec 100644 (file)
 filename =      "violino-1.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-violino1 = \melodic{
-       \octave c';     
-       c1\ff ~ | c | <as'4-. c'-. f-.> r r2 | r1 |
-       c1 ~ | c | <d''4-. d'-. d-.> r r2 | r1 |
-       c1 ~ | c | <es''4-. es'-.> r r2 | r1 |
-       <g'4-. c'-. es-.> r r2 | <b4-. d-. g,-.> r r2 |
+violino1 = \melodic \relative c {
+       c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
+       c1 ~ | c | <d4-. d'-. d'-.> r r2 | R1 |
+       c1 ~ | c | <es'4-. es'-.> r r2 | R1 |
+       <es,4-. c'-. g'-.> r r2 | <g,4-. d'-. b'-.> r r2 |
        [c8-.\p es-.] [es()d] [d-. g-.] g4-"ten." |
-       [c8-. es-.] [es()d] [d-. g-.] g4-"ten." |
-       [c8-. es-.] [es()d] [d-. as-.] [as()g] |
-       [g8-. c'-.] [c'()b] [b-. f'-.] [f'()es'] |
-       [es'8-.-"cresc." as'-.] as'4. g'8-. g'4 ~ |
-       [g'8 fis'] fis'4 ~ fis' g'-.\f |
+       [c,8-. es-.] [es()d] [d-. g-.] g4-"ten." |
+       [c,8-. es-.] [es()d] [d-. as'-.] [as()g] |
+       [g8-. c-.] [c()b] [b-. f'-.] [f()es] |
+       [es8-.-"cresc." as-.] as4. g8-. g4 ~ |
+       %20
+       [g8 fis] fis4 ~ fis g-.\f |
+       R1 | 
+       [bes,,!8\p-. des-.][des()c][c-. f-.]f4-"ten." |
+       [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten." |
+       [bes,!8\p-. des-.][des()c][c-. ges'-.][ges()f] |
+       %25
+       [f-. bes-.][bes()a][a-. es'-.][es()des]|
+       [des-.-"cresc." ges-.] ges4. f8-. f4~ | [f8 e-.]e4-.\f r2 | 
+       R1 |
+       %29
+       r8 f-.\p f4. es8-. es4~ | [es8-"cresc." d-.]d2.~ |
+       [d8 d-.]d2.~ | [d8 d-.] d4. d8-. d4~ | [d8 d8-.] d4. d8-. d4 |
+       [f16\ff f f f][f f f f]f2:16 |
+       %35
+       [f16 f f f][es es es es][des des des des][c c c c] |
+       b2:16 c: | d!: es: | e: f: | g: as: |
+       %40
+       a2\sf [c,,8-. es-.][es()d] |
+       a''2\sf [c,,8-. es-.][es()d] |
+       as''!2\sf [b,,8-. d-.][d()c] |
+       as''2\sf [b,,8-. d-.][d()c] |
+       g''1\sf | 
+       %45
+       ges\sf | 
+       f2. ges4\sf(|
+       )f2. ges4\sf(|
+       )f2. ges4\sf(|
+       )f2. ges4\sf(|
+       %50
+       )f1\>~ |
+       f4 d( bes)\!as |
+       g2.\p( as4 | g f d ) bes | bes'2.( c4 | 
+       %55
+       bes2 )as |
+       g4 <bes2-"cresc." bes'> <bes4 bes'~> |
+       <bes-"cresc." bes'> <bes2 bes'> <bes4 bes'~> |
+       <bes bes'> <bes2 bes'> <bes4 bes'~>  |
+       <bes bes'> <bes2 bes'> <bes4 bes'> |
+       %60
+       bes'2:16 bes: | bes: bes: |
+       bes:\ff des: | c: bes: |
+       as2.\p( bes4 | 
+       %65
+       as g e )c | c'2.( des4 | c2 ) bes | 
+       [as16-"cresc." c c c][c c c c] c2:16 | c: c: | 
+       %70
+       c:\ff es: | d: c: | bes2.\p-"cresc."( c4 | bes a fis ) d |
+       d'\sf\>( as g )\!f |
+       %75
+       r8[es\p(c)es]r[d(bes)d] | r[c(g)c]r[bes(g)bes] |
+       r[a(g)a]r[bes(g)bes]|[fis-.\pp a-.] a4. a8-. a4~|
+       [a8 a-.] a4. a8-. a4~|
+       %80
+       [a8 bes-.] bes4. bes8-. bes4~|
+       [bes8 bes-.] bes4. bes8-. bes4~|
+       [bes8 c-.] c4. c8-. c4~|
+       [c8 d-.] d4. d8-. d4~|
+       es2:16\ff es4: d: |
+       %85
+       fis: g: fis: g: |
+       es2: es4: d: | 
+       fis: g: fis: g: |
+       as2: as4: g: | 
+       b: c: b: c: |
+       %90
+       as2: as4: g: | 
+       b: c: b: c: |
+       r8 es as,4\sf~as()g |
+       r8 es' as,4\sf~as()g |
+       r8 es' as,4\sf~as()g |
+       %95
+       r8 es' as,4\sf~as()g |
+       r8 es' as,4. fis8 es'4~ |
+       [es8 d] g,4. e8 d'4~ |
+       [d8 c] f,4. c'8 es,4 ~ | 
+       [es8 c'] a4. c8 g4 ~ |
+       %100
+       [g8 fis] d,4. es8-. es4~ | 
+       [es8 c-.] c4. d8-. d4 |
+       g, r8 es'' d4 r8 bes8 | 
+       a4 r8 es' d4 r8 a\f |
+       bes4 r8 es8\p d4 r8 bes |
+       %105
+       a4 r8 es' d4 r8 a8\f | bes4 r8 es\p d4 r8 a |
+       g4 r8 c bes4 r8 f | es4 r8 a g4 r8 d | c4 r8 g' fis4 r8 c' |
+       %110
+       bes4\f r8 es' d4 r8 a | 
+       g4 r8 c bes4 r8 f | 
+       es4 r8 a g4 r8 cis,, |
+       d4 r8 g' d,4 r8 fis' | 
+       bes,,4. g''8 g2 ~ | 
+       %115
+       g4. bes8 bes2 ~ | bes4. g8 g4 r8 bes | bes4 r8 d d4 r8 g | 
+       g4\p r8 es, d4 r8 bes | a4 r8 es' d4 r8 a | 
+       %120
+       bes4 r8 es des4 r8 bes | as!4 r8 es' des4 r8 as | g4 r r2 |
+       r4 r8 es' des4 r8 as | g4 r r2 |
+       %125
+       r4 r8 c bes4 r8 e, | 
+       as4 r8 des c4 r8 as | 
+       g4 r8 des' c4 r8 g |
+       as4 r8 es' des4 r8 as | 
+       bes4 r r2 |
+       %130
+       r4 r8 f'8-"cresc." es4 r8 c | bes4 r8 f' es4 r8 bes |
+       c4 r8 f es4 r8 c | c4 r r2 | r4 r8 as' ges4 r8 des |
+       %135
+       es4 r8 bes' as4 r8 es | f4\p r8 bes as4 r8 es |
+       des4 r8 ges f4 r8 c | bes4 r8 es des4 r8 as |
+       ges4 r8 des' c4 r8 ges' |
+       %140
+       f4\f r8 bes as4 r8 es | des4 r8 ges f4 r8 c |
+       bes4 r8 e f4 r8 bes, | bes4 r8 g'! es4 r8 bes' |
+       as4\p r8 des-"cresc." c4 r8 g | 
+       %145
+       f4 r8 bes as4 r8 es | des4 r8 g f4 r8 c | bes4 r8 f' e4 r8 bes' |
+       as4\ff r8 des c4 r8 g | f4 r8 bes as4 r8 es | 
+       %150
+       des4 r8 g f4 r8 c, | des4 r8 f' c,4 r8 e' | 
+       f,1\ff ~ | f | des''4 r r2 |
+       %155
+       R1  |
+       f,,1 ~ | f | 
+       <f'2\sf d'!> [f,8-. as-.][as()g] |
+       <f'2\sf d'> [f,8-. as-.][as()g] |
+       %160
+       [f8-.\p as-.][as()g] [g-. c-.][c()b] |
+       [b8-. es-.][es()d] [d-. g-.]g4-"ten." | R1 |
+       <des2\ff des'> [e,8-. g-.][g()f] |
+       <des'2\sf des'> [e,8-. g-.][g()f] |
+       %165
+       [e-.\p bes'-.][bes()as][g-.des'-.][des()c] |
+       [bes-. g'-.][g()f][e-. g-.]g4-"ten." | 
+       r2 r4 des'4\ff (|
+       )c2. des4\sf(|
+       )c2. des4\sf(|
+       %170
+       )c2. des4\sf(|
+       )c2. es4\sf(|
+       )d2. es4\sf(|
+       )d2. es4\sf(|
+       )d2. es4\sf(|
+       %175
+       )d2. es4\sf(|
+       )d1\> ~ | d4( b g \!)f
+       e2.\p( f4 | e d b ) g |
+       %180
+       g'2.( a4 | g2 )f | e4 g2-"cresc." g4 ~ | 
+       g g2 g4 ~ |
+       g g2 g4 ~ |
+       %185
+       g g2 g4 |
+       [g16 g g g][g g g g]g2:16 | g: g: | g:\ff bes: | a: g: |
+       %190
+       f2.\p( g4 | f e cis ) a | a'2.( bes4 | a2 ) g |
+       [f16-"cresc." a a a][a a a a]a2:16 | 
+       %195
+       a2 a | a2:16\ff c: | b: a: | g2.\p( a4 | g\< fis dis ) b |
+       %200
+       b'1 ~ | \!b 
+       [c8\f\>c,(g)c]r[c(bes)\!c] |
+       r[c\p(as)c]r[c(g)c] |
+       r[c(f,)c']r[c(g)c] |
+       %205
+       r[c(as)c]r[c(a)c] |
+       [b-. d-.]d4. d8-. d4 ~ |
+       [d8-. d-.]d4. d8-. d4 ~ |
+       [d8-. es-.]es4.-"cresc." es8-. es4 ~ |
+       [es8-. es-.]es4. es8-. es4 ~ |
+       %210
+       [es8-. f-.]f4. f8-. f4 ~ |
+       [f8-. g-.]g4. g8-. g4 |
+       as2:16\ff as4: g: | b,: c: b: c: |
+       as'2:16\ff as4: g: | b,: c: b: c: |
+       des'2:16\ff des4: c: | e,: f: e: f: |
+       des'2:16\ff des4: c: | e,: f: e: f: |
+       %220
+       r8 as des,4\sf ~ des()c |
+       r8 as' des,4\sf ~ des()c |
+       r8 as' des,4\sf ~ des()c |
+       r8 as' des,4\sf ~ des()c |
+       r8 as' des,4. b8 g'4 |
+       %225
+       r8 g c,4. a8 f'4 ~ |
+       [f8 f] b,4. f'8 as,4 ~ |
+       [as8 f'] d!4. f8 c4 ~ |
+       [c8 b] g,4. as8 as'4 ~ |
+       [as8 as] f4. f8 g4 |
+       %230
+       c,4\p r8 as' g4 r8 es | 
+       d4\p r8 as' g4 r8 d\f | 
+       es4\p r8 as\p g4 r8 es | 
+       d4\p r8 as' g4 r8 d\f | 
+       es4\p r8 as'\p g4 r8 d | 
+       %235
+       c4 r8 f es4 r8 bes | 
+       as4 r8 d c4 r8 g | 
+       f4 r8 c' b4 r8 f' | 
+       es4\f r8 as g4 r8 d | 
+       c4\f r8 f es4 r8 bes | 
+       %240
+       as4-. des-. r2 | R1*3 |
+       e2.\p( f4 | e d b ) g |
+       g'2.( a4 | g2 ) f |
+       es4 g2 g4 ~ |
+       g4 g2 g4 ~ |
+       %250
+       g4 g2 g4 ~ |
+       g4 g2 g4 ~ |
+       [g16-"cresc." g g g][g g g g]g2:16 |
+       g: g: | g: g: | as:\f as: | as:\p as: | bes:\f bes: | bes:\p bes: |
+       c:\f c: |
+       %260
+       r8 c-"cresc." c4. c8 c4 ~ |
+       [c8 c] c4. c8 c4 ~ |
+       [c8 c] c4. c8 c4 ~ |
+       [c8 c] c4. c8 c4 ~ |
+       c4.\ff <c8 c,> <c2\sf c,~> |
+       %265
+       <c4. c,> <c8 c,> <c2\sf c,~> |
+       <c4. c,> <c8 c,> <c2\sf c,~> |
+       <c4. c,> <c8 c,> <c2\sf c,~> |
+       <c4. c,> <c8 c,> <c2\sf c,> |
+       d4. d8 d2\sf |
+       %270
+       es4.-"sempre" b8\ff c4. as8 |
+       g4. as8 g4. f'8 |
+       es4. b8 c4. as8 |
+       g4. as8 g4. f'8 |
+       es4 r8 b8 c4 r8 b, |
+       %275
+       c4 r8 b,8 c4 r8 b |
+       c1 ~ | c | <f4 c' as'-.> r r2 | R1
+       c1 ~ | c | <d4 d' d'-.> r r2 | R1
+       c1 ~ | c | es''4-. b-. r2 | R1 |
+       c4-. g-. r2 | as4-. e-. r2 | 
+       %290
+       f4-"dim." r d r | R1 | es!4\p r r2 | R1 | d,4-"pizz." r r2 | 
+       %295
+       R1 | c1^"arco"-"sempre" ~ | c2-"pi\\`u piano" b2 |
+       c1 ~ | c2 b2 |
+       %300
+       c1 ~ | c | b ~ | b | c ~ |  
+       %305
+       c | b ~ | b\> ~ | b ~ | \!b | 
+       %310
+       c4\pp r r2 | R1 | 
+       c4-"pizz." r r2 |
+       c4 r r2 |
+       c4 r r2 |
 }
 
 $violino1_staff = \type Staff = violino1 <
-       \property Staff.instrument = "violin"
+       \property Staff.midi_instrument = "violin"
+       \property Staff.instrument = "Violino I"
+       \property Staff.instr = "Vl. I"
        \melodic< 
-               \global;
+               \global
                \$violino1
        >
 >
diff --git a/mutopia/Coriolan/violino-2-part.ly b/mutopia/Coriolan/violino-2-part.ly
new file mode 100644 (file)
index 0000000..cc9a9a1
--- /dev/null
@@ -0,0 +1,20 @@
+\header{
+filename =      "violino-2-part.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "violino-2.ly"
+
+\score{
+       \$violino2_staff 
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
+}
+
index 8230edc6ff097deeebbe6c44a89c449c26ebad07..de6fea2061371dc62a28e6b47cca55f379f9e866 100644 (file)
 filename =      "violino-2.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
-
-
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-violino2 = \melodic{
-       \octave c';     
-       c1\ff ~ | c | <as'4-. c'-. f-.> r r2 | r1 |
-       c1 ~ | c | <as'4-. b-. d-.> r r2 | r1 |
-       c1 ~ | c | <c''4-. es'-. fis-.> r r2 | r1 |
-       <c'4-. es-. g,-.> r r2 | <b4-. d-. g,-.> r r2 |
+violino2 = \melodic \relative c {
+       c'1\ff ~ | c | <f4-. c'-. as'-.> r r2 | R1 |
+       c1 ~ | c | <d4-. b'-. as'-.> r r2 | R1 |
+       c1 ~ | c | <fis4-. es'-. c'-.> r r2 | R1 |
+       %13
+       <g,4-. es'-. c'-.> r r2 | <g4-. d'-. b'-.> r r2 |
        R1 *3 |
-       r2 ['b8-.\p f-.] [f()es] |
+       r2 [b8-.\p f'-.] [f()es] |
        [es8-. as-.] as4.-"cresc." g8-. g4 ~ |
+       %20
        [g8 fis-.] fis4 ~ fis g-.\f |
+       R1*4 | r2
+       %25
+       [a,8-.\p es'-.][es()des] | [des-.-"cresc." ges-.]ges4. f8-. f4~ |
+       [f8 e-.]e4-.\f r2 | R1 
+       %29
+       %copied... \transpose c \violino-1(29, 39)
+       r8 f-.\p f4. es8-. es4~ | [es8-"cresc." d-.]d2.~ |
+       [d8 d-.]d2.~ | [d8 d-.] d4. d8-. d4~ | [d8 d8-.] d4. d8-. d4 |
+       [f16\ff f f f][f f f f]f2:16 |
+       %35
+       [f16 f f f][es es es es][des des des des][c c c c] |
+       b2:16 c: | d!: es: | e: f: | 
+       <g: c,:> <as: c,:> |
+       %40
+       a2\sf [c,8-. es-.][es()d] |
+       a'2\sf [c,8-. es-.][es()d] |
+       d2\sf [b8-. d-.][d()c] |
+       d2\sf [b8-. d-.][d()c] |
+       des2\sf [bes8-. d-.][d()c] |
+       %45
+       c2\sf [a8-. c-.][c()bes] |
+       r4[a8-. c-.][c()bes] r4 |
+       r4[a8-. c-.][c()bes] r4 |
+       r4[a8-. c-.][c()bes] r4 |
+       r4[a8-. c-.][c()bes][bes()a]|
+       %50
+       bes4 r r2 |
+       R1*5 |
+       g'2.\p-"cresc."( a4 | g f d ) bes | bes'2.( c4 | bes2 )as |
+       %60
+       [g16 bes bes bes][bes bes bes bes]bes2: | 
+       %copied... \transpose c, violino-1(61,74)
+       bes: bes: |
+       bes:\ff des: | c: bes: |
+       as2.\p( bes4 | 
+       %65
+       as g e )c | c'2.( des4 | c2 ) bes | 
+       [as16-"cresc." c c c][c c c c] c2:16 | c: c: | 
+       %70
+       c:\ff es: | d: c: | bes2.\p-"cresc."( c4 | bes a fis ) d |
+       d'\sf\>( as g )\!f |
+       %75
+       % nono, only looks like transpose
+       r8[c'\p(g)c]r[bes(g)bes] | r[g(es)g]r[g(d)g] |
+       r[g(es)g]r[g(e)g]|r8 fis-.\pp fis4. fis8-. fis4~|
+       % urg, can't copy: \transpose g \violino-1(75,91)
+       % a -> fis
+       % bes -> g 
+       % c -> a
+       % d -> bes
+       [fis8 fis-.] fis4. fis8-. fis4~|
+       %80
+       [fis8 g-.] g4. g8-. g4~|
+       [g8 g-.] g4. g8-. g4~|
+       [g8 a-.] a4. a8-. a4~|
+       [a8 bes-.] bes4. bes8-. bes4|
+       % different
+       a2:16\ff a4: bes: | c: bes: c: bes: |
+       a2:16 a4: bes: | c: bes: c: bes: |
+       b2: b4: c: | f: es: f: es: |
+       %90
+       b2: b4: c: | f: es: f: es: |
+       % copied: \transpose c, \violino-1(92,95)
+       r8 es as,4\sf~as()g |
+       r8 es' as,4\sf~as()g |
+       r8 es' as,4\sf~as()g |
+       %95
+       r8 es' as,4\sf~as()g |
+       % transpose viola...
+       [es16 as as as]as4:16[fis16 a a a]a4:16 |
+       [d,16 g g g]g4:16[e16 g g g]g4:16 |
+       [c,16 f f f]f4:16[c16 es es es]es4:16 |
+       [c16 a' a a]a4:16[c,16 g' g g]g4:16 |
+       %100
+       [fis8 d]d4. es8 es4~|
+       [es8 c-.]c4. d8-. d4 | 
+       g,\p r r2 |
+       r2 r4 r8 <d'\f a'> | 
+       <d4 bes'> r r2 |
+       %105
+       r2 r4 r8 <d\f a'> | 
+       <d4 bes'> r r r8 a'\p |
+       g4 r r r8 f |
+       es4 r r r8 d | 
+       c4 r8 g fis4 r8 c' | 
+       % looks lot like violino-1 110-113
+       %110
+       bes4\f r8 es d4 r8 a | 
+       g4 r8 c bes4 r8 f | 
+       es4 r8 a g4 r8 cis |
+       <[d16 s> <bes g'> <bes g'> <bes g']> <a4:16 fis':> <a2:16 fis':> |
+       <bes: g':> <bes: g':> |
+       <bes: g':> <bes: g':> |
+       <bes: g':> <bes: g':> |
+       <bes: g':> <bes: g':> |
+       <bes4\p g'> r r2 | 
+       % copied... urg: *same* as violino-1(119,128)
+       % URG: or is this R1*10??
+       % should hara-kiri like viola-1/2...
+        a'4 r8 es' d4 r8 a | 
+       %120
+       b4 r8 es des4 r8 bes | as!4 r8 es' des4 r8 as | g4 r r2 |
+       r4 r8 es' des4 r8 as | g4 r r2 |
+       %125
+       r4 r8 c bes4 r8 e, | 
+       as4 r8 des c4 r8 as | 
+       g4 r8 des' c4 r8 g |
+       as4 r8 es' des4 r8 as |
+       R1*3
+       %131
+       % copied from viola(131,140)
+       [as,8 as c es][f es c as]|[a c es f][ges f c a]|
+       [bes des f ges][as ges des bes]|
+       %135
+       [c es g as][bes as es c]|[des\p f a bes][c, es g as]|
+       % [bes, des f ges][as, c e f]|[ges, bes d es][f, as c des]|
+       % urg, copied, but nog ges, f, on violino!
+       [bes, des f ges][as, c e f]|r [bes, d es]r[as, c des]|
+       % [es, ges bes des][as c es as,]|
+       r[bes bes des][as c es ges]|
+       % copied: \transpose c \violino-1(140,149)
+       %140
+       f4\f r8 bes as4 r8 es | des4 r8 ges f4 r8 c |
+       bes4 r8 e f4 r8 bes, | bes4 r8 g'! es4 r8 bes' |
+       as4\p r8 des-"cresc." c4 r8 g | 
+       %145
+       f4 r8 bes as4 r8 es | des4 r8 g f4 r8 c | bes4 r8 f' e4 r8 bes' |
+       as4\ff r8 des c4 r8 g | f4 r8 bes as4 r8 es | 
+       % copied somewhat from violino-1(150,168)
+       %150
+       des4 r8 g f4 r8 c | des4 r8 f' c,4 r8 e' | 
+       f,1\ff ~ | f | <f4 des'> r r2 |
+       %155
+       R1  |
+       f1 ~ | f | 
+       <d2\sf d'!> [f8-. as-.][as()g] |
+       <d2\sf d'> [f8-. as-.][as()g] |
+       %160
+       R1 |
+       [b,8-. es-.][es()d] [d-. g-.]g4-"ten." | R1 |
+       <e2\ff des'> [e8-. g-.][g()f] |
+       <e2\sf des'> [e8-. g-.][g()f] |
+       %165
+       R1
+       [bes,8-.\p g'-.][g()f][e-. g-.]g4-"ten." | 
+       R1 |
+       % copied \transpose c' viola(168, 175)
+       r4 [e8-.\ff g-.][g()f] r4 |
+       r4 [e8-. g-.][g()f] r4 |
+       %170
+       r4 [e8-. g-.][g()f] r4 |
+       r4 [e8-. g-.][g()f][fis-.fis-.] | 
+       g4 [fis8-.as-.][as()g] r4 |
+       r4 [fis8-.as-.][as()g] r4 |
+       r4 [fis8-.as-.][as()g] r4 |
+       %175
+       r4 [fis8-.as-.][as()g] es'4\sf(|
+       % copied violino-1(176,201)
+       )d1\> ~ | d4( b g \!)f
+       e2.\p( f4 | 
+       e d b ) g |
+       %180
+       g'2.( a4 | g2 )f | 
+       e4 g2-"cresc." g4 ~ | 
+       g g2 g4 ~ |
+       g g2 g4 ~ |
+       %185
+       g g2 g4 |
+       [g16 g g g][g g g g]g2:16 | g: g: | g:\ff bes: | a: g: |
+       %190
+       f2.\p( g4 | f e cis ) a | a'2.( bes4 | a2 ) g |
+       [f16-"cresc." a a a][a a a a]a2:16 | 
+       %195
+       a2 a | a2:16\ff c: | b: a: | g2.\p( a4 | g\< fis dis ) b |
+       %200
+       b'1 ~ | \!b 
+       % similar violino-1 only until 219
+       [c8\f\>g(c)g]r[bes(g)\!bes] |
+       r[as\p(f)as]r[g(es)g] |
+       r[f(c)f]r[g(es)g] |
+       %205
+       r[as(d,)as']r[a(es)a] |
+       [g-. b-.]b4. b8-. b4 ~ |
+       [b8-. b-.]b4. b8-. b4 ~ |
+       [b8-. c-.]c4.-"cresc." c8-. c4 ~ |
+       [c8-. c-.]c4. c8-. c4 ~ |
+       %210
+       [c8-. d-.]d4. d8-. d4 ~ |
+       [d8-. es-.]es4. es8-. es4 |
+       as,2:16\ff as4: g: | f: es: f: es: |
+       as2:16\ff as4: g: | f: es: f: es: |
+       des'2:16\ff des4: c: | bes: as: bes: as: |
+       des2:16\ff des4: c: | bes: as: bes: as: |
+       % copied violino-1(220, 223)
+       %220
+       r8 as des,4\sf ~ des()c |
+       r8 as' des,4\sf ~ des()c |
+       r8 as' des,4\sf ~ des()c |
+       r8 as' des,4\sf ~ des()c |
+       % looks lot like viola...
+       [f16 f as as]f4:16[d16 d g g]d4:|
+       %225
+       [c16 c g' g]c,4:16[c16 c f f]c4:|
+       [b16 b f' f]b,4:16[c16 c f f]c4:|
+       [d16 d f f]d4:16[c16 c f f]c4:|
+       [d8 g,] g'4. as8 as4 ~ |
+       [as8 as] f4. f8 g4 | 
+       %230
+       c,4\p r r2 | 
+       r2 r4 r8 <g\f d'> | 
+       <g4 es'> r r2 |
+       r2 r4 r8 <g\f d'> | 
+       <g4 es'> r r2 |
+       %235
+       R1*3 |
+       %copied violino-1(238,243)
+       es'4\f r8 as g4 r8 d | 
+       c4\f r8 f es4 r8 bes | 
+       %240
+       as4-. des-. r2 | R1*3 |
+       %245
+       [g,8\p( e' c e][g e c )g~] |
+       [g8( d' b d][g d b )g~] |
+       [g8( e' c e][g e c )g~] |
+       [g8( f' d f][g f d )g,~] |
+       [g8( es'! c es][g es c )g~] |
+       [g8( d' b d][g d b )g~] |
+       %250
+       [g8( es' c es][g es c )g~] |
+       [g8( f' d f][g f d )g,~] |
+       [g8( es' c es][g es c )g~] |
+       [g8( d' b d][g d b )g~] |
+       [g8( es' c es][g es c )g] |
+       %255
+       <c2:16\f es:> <c: es:> |
+       [as8\p( f' des f][as f des )as] |
+       <d2:16\f f:> <d: f:> |
+       [bes8\p( g' es g][bes g es )bes] |
+       <c2:16\f g':> <c: g':> |
+       %copied viola-1(260, 273) 
+       %260
+       [f8\p-"cresc." f']f4. es8 es4 ~ |
+       [es8 as]as4. g8 g4 ~ |
+       [g8 f]f4. es8 es4 ~ |
+       [es8 as]as4. g8 g4 |
+       r r8 d\ff es4.\sf()d8 |
+       %265
+       r4 r8 d es4.\sf()d8 |
+       r4 r8 e f4.\sf()e8 |
+       r4 r8 e f4.\sf()e8 |
+       r4 r8 e g4.\sf()f8 |
+       r4 r8 f as4.\sf()g8 |
+       %270
+       g2:16-"sempre" g:\ff | g: g: | g: g: | g: g: | 
+       g4. d8 es4. d,8 |
+       %275
+       es4 r8 b8 c4 r8 b |
+       c1 ~ | c | <f4 c' as'-.> r r2 | R1
+       c1 ~ | c | <d4 b' as'-.> r r2 | R1
+       c1 ~ | c | <c'4-. a'-.> <b-. as'-.> r2 | R1 |
+       <c4-. g'-.> <g-. c-.> r2 | as4-. <c,-. e-.> r2 | 
+       %290
+       <c4 f-"dim."> r g' r | R1 | g4\p r r2 | R1 | b,4-"pizz." r r2 | 
+       %295
+       R1 | c4 r r2 | R1*15 |
+       c4-"pizz." r r2 |
+       c4 r r2 |
+       c4 r r2 |
 }
 
 $violino2_staff = \type Staff = violino2 <
-       \property Staff.instrument = "violin"
+       % MIDI hoort geeneens verschil tussen een
+       % eerste en tweede viool ;-)
+       \property Staff.midi_instrument = "violin"
+       \property Staff.instrument = "Violino II"
+       \property Staff.instr = "Vl. II"
        \melodic< 
-               \global;
+               \global
                \$violino2
        >
 >
diff --git a/mutopia/Coriolan/violoncello-part.ly b/mutopia/Coriolan/violoncello-part.ly
new file mode 100644 (file)
index 0000000..bec6971
--- /dev/null
@@ -0,0 +1,20 @@
+\header{
+filename =      "violoncello-part.ly";
+% %title =      "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
+description =   "";
+composer =      "Ludwig van Beethoven (1770-1827)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+\include "global.ly"
+\include "violoncello.ly"
+
+\score{
+       \$violoncello_staff 
+       \include "part-paper.ly"
+       \midi{ \tempo 4 = 160; }
+}
+
index 4d994a131741bfdd03deaf9c0645cbfc87d45248..085b31dbf52296a3d17713a9759f21bf9f89f9cb 100644 (file)
 filename =      "violoncello.ly";
 %title =        "Ouvert\\"ure zu Collins Trauerspiel \\"Coriolan\\" Opus 62";
 description =   "";
-composer =      "Ludwig van Beethoven (1770-1792)";
+composer =      "Ludwig van Beethoven (1770-1827)";
 enteredby =     "JCN";
 copyright =     "public domain";
 
 
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
-violoncello = \melodic{
-       \octave c;
-       c1\ff ~ | c | f,4-. r r2 | r1 |
-       c1\ff ~ | c | f,4-. r r2 | r1 |
-       c1\ff ~ | c | fis,4-. r r2 | r1 |
-       g,4-. r r2 | g,4-. r r2 |
+violoncello = \melodic \relative c {
+       c1\ff ~ | c | f,4-. r r2 | r1 | c'1\ff ~ | c | f,4-. r r2 |
+       \property Staff.instr = "Vc. \& Cb."
+       r1 |
+       c'1\ff ~ | c | fis,4-. r r2 | r1 |
+       g4-. r r2 | g4-. r r2 |
        c4\p r4 r2 | c4 r4 r2 | c4 r4 r2 | r1 |
-       c'4.-"cresc." c'8 bes4. bes8 | as4. as8 g4\f r4 |
+       c'4.-"cresc." c8 bes4. bes8 | 
+       %20
+       as4. as8 g4\f r4 |
+       R1 |
+       % 4 bars same as violino-1...
+       [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten." |
+       [bes,!8\p-. des-.][des()c][c-. f-.]f4-"ten." |
+       [bes,!8\p-. des-.][des()c][c-. ges'-.][ges()f] |
+       %25
+       [f-. bes-.][bes()a][a-. es'-.][es()des]|
+       bes4.-"cresc." bes8 as4. as8 | g4 g4-.\f r2 | R1
+       as4.\p as8 g4. g8 | f2.-"cresc" g4 | f2. g4 | 
+       f4. g8 f4. g8 | 
+       f4. g8 f4. g8 | 
+       as1\ff ~ |
+       %35
+       as4(g f)es|
+       d4. r8 c4. r8 | b4. r8 c4. r8 | bes4. r8 as4. r8 | g4. r8 f4. r8 |
+       %40
+       fis2\sf [c'8-. es-.][es()d]
+       fis,2\sf [c'8-. es-.][es()d]
+       f,!2\sf [b8-. d-.][d()c]
+       f,2\sf [b8-. d-.][d()c]
+       e,2\sf [bes'!8-. des-.][des()c]
+       %45
+       es,!2\sf [a!8-. c-.][c()bes] |
+       d,4 [a'!8-. c-.][c()bes] es,4\sf(|
+       )d4 [a'!8-. c-.][c()bes] es,4\sf(|
+       )d4 [a'!8-. c-.][c()bes] es,4\sf(|
+       )d4 [a'!8-. c-.][c()bes] es,4\sf(|
+       %50
+       )d4 r r2 |
+       R1 |
+       [bes'8\p(g'es g][bes g es)bes~] |
+       [bes(f'd f][bes f d)bes~] |
+       [bes(g'es g][bes g es)bes~] |
+       %55
+       [bes(as'f as][bes as f)bes,~] |
+       [bes-"cresc."(g'es g][bes g es)bes~] |
+       [bes(f'd f][bes f d)bes~] |
+       [bes(g'es g][bes g es)bes~] |
+       [bes(as'f as][bes as f)bes,~] |
+       %60
+       [bes(g'es g][bes g es)bes~] |
+       [bes(f'd f][bes f d)as] |
+       g2\ff f | e c |
+       [f8\p(as'f as][c as f)c~] |
+       [c(g'e g][c g e)c~] |
+       [c(as'f as][c as f)c~] |
+       [c(bes'g bes][c bes g)c,~] |
+       [c(as'f as][c as f)c~] |
+       [c(g'e g][c g e)bes] |
+       %70
+       as2\ff g | fis d |
+       [g8\p-"cresc."(bes' g bes][d bes g)d~] |
+       [d8(a' fis a][d a fis)d] |
+       [f!8\sf\>(as f as][f g d)\!g] |
+       %75
+       c,4\p r d r | es r d r | c r cis r | 
+       d\pp r8 d d4. d8 |
+       r4 r8 d d4. d8 |
+       %80
+       r4 r8 d d4.-"cresc." d8 |
+       r4 r8 d d4. d8 |
+       r4 r8 d d4. d8 |
+       r4 r8 d d4. d8 |
+       c'2.\ff()bes4 | a(g a)g|
+       c2.()bes4 | a(g a)g|
+       f!2.()es4 | d(c d)c|
+       %90
+       f2.()es4 | d(c d)c|
+       c r8 c' c4\sf()des|
+       r r8 c c4\sf()des|
+       r r8 c c4\sf()des|
+       %95
+       r r8 c c4\sf()des|
+       c,4. c'8 c,4. c'8 |
+       b,4. b'8 bes,4. bes'8 |
+       as,4. as'8 g,4. g'8 |
+       fis,4. fis'8 es4. es8 |
+       %100
+       d4 r8 d es4 r8 es |
+       c4 r8 c d4 r8 d |
+       % copied \transpose c, viola-1(102, 130)
+       % except for some abbrevs below...
+       [g8\p bes cis d][es d bes g]|
+       [fis a cis d][es d a fis\f] |
+       [g bes cis\p d][es d bes g]
+       %105
+       [fis a cis d][es d a fis\f] |
+       [g bes cis\p d][f, a cis d] |
+       [es, g b c][d, g a bes] |
+       % [c, es g a]r[d, fis g] |
+       [c, es g a][bes, d fis g] |
+       % r[c, es g][d fis a d] |
+       [a, c es g][d fis a d] |
+       %110
+       % cello has eighth notes here...
+       % [g,16 g bes bes][d d es es][f, f a a][cis cis d d] |
+       % see if this:8 neat trick works...
+       [g,:8 bes d es][f, a cis d] |
+       [es,8: g: b: c!:][d,: f: a: bes:] |
+       [c,: es: g: a:][cis,: e: g: bes:] |
+       [d,: g: bes: d:][d,: fis: a: d:] | 
+       g,,2 ~ g4. g8 |
+       %115
+       g2 ~ g4. g8 |
+       g4. g8 g4 r8 g |
+       g4. g8 g4 r8 g |
+       % urg, 2 copied from 102
+       [g'8\p bes cis d][es d bes g]|
+       [fis a cis d][es d a fis] |
+       %120
+       [g bes c des][c des bes g]|[f as c des][c des as f]|
+       [e g b c][b c g e]|[f as b c][b c as f]|
+       [e g b c][b c g e]|
+       %125
+       [c e fis g][fis g e c]|[f as b c][des c as f]|
+       [e g b c][des c g e]|[f as c des][c des as f]|
+       [g bes d es][d es bes g]|[as-"cresc." c d es][f es c as]|
+       %131
+       [g bes d es][f es bes g]|
+       % shared with viola until here
+       as1 ( | a | bes | )c | des2\p( c | bes as | ges f | )es [as,8 c es as] |
+       %140
+       % copied from viola-1 (140,152)
+       % except cello has eighth notes
+       % [des,16\f des f f][a a bes bes][c, c es es][g g as as]|
+       [des,8\f f a bes][c, es g as]|
+       [bes,8:8 des: f: ges:][as,: c: e: f:]|
+       [g,: bes: c: des:][f,: bes: c: des:]|
+       [e,: g: bes: des:][c: e: g: c:]|
+       %shared with cello from here on
+       [f,8\p-"cresc." as c des][es, g b c]|[des, f a bes][c, es g as]|
+       % uhuh, still 'same as cello';
+       % but now rests for notes that viola cannot reach...
+       % r[des, e g]r[c, e f]|
+       [bes, des e g][as, c e f]|
+       % hmm, don't want to miss more than one note,
+       % take bes octave higher
+       % r[bes des, f][c e g c]|
+       [g, bes des f][c e g c]|
+       % cello has eight notes;
+       % viola has rest where can't reach      
+       [f,:\ff as: c: des:][es,: g: b: c:]|
+       [des,: f: a: bes:][c,: es: g: as:]|
+       %150
+       % r[des,16 des][e e g g]r8[c,16 c][e e f f]|
+       [bes, des e g][as, c e f]|
+       % r8[des16 des][f f g g][c, c e e][g g c c]|
+       [bes, des f g][c, e g c]|
+       f,1\ff ~ | f | bes,4-. r r2
+       %155
+       R1 |
+       f'1\ff ~ | f |
+       b,2\sf [f'8-. as-.][as()g] |
+       b,2\sf [f'8-. as-.][as()g] |
+       %160
+       R1*3 |
+       bes,!2\ff [e8-. g-.][g()f] |
+       bes,2\sf [e8-. g-.][g()f] |
+       %165
+       R1*2 |
+       r2 r4 bes,\ff(|
+       )as4 [e'8-. g-.][g()f] bes,4\sf(|
+       )as4 [e'8-. g-.][g()f] bes,4\sf(|
+       %170
+       )as4 [e'8-. g-.][g()f] bes,4\sf(|
+       )as4 [e'8-. g-.][g()f][fis-. fis-.] |
+       g4 [fis8-. as-.][as()g] c,4\sf(|
+       )b4 [fis'8-. as-.][as()g] c,4\sf(|
+       )b4 [fis'8-. as-.][as()g] c,4\sf(|
+       %175
+       )b4 [fis'8-. as-.][as()g] c,4\sf(|
+       )b4 r r2 | R1 |
+       [g8\p(e' c d][g e c )g~] |
+       [g(d' b d][g d b )g~] |
+       %180
+       [g(e' c d][g e c )g~] |
+       [g(f' d f][g f d )g,~] |
+       [g-"cresc."(e' c d][g e c )g~] |
+       [g(d' b d][g d b )g~] |
+       [g(e' c d][g e c )g~] |
+       %185
+       [g(f' d f][g f d )g,~] |
+       [g(e' c d][g e c )g~] |
+       [g(d' b d][g d b )g~] |
+       e2\ff d' | cis a ~ |
+       %190
+       [a8( f' d f][a f d )a!~] |
+       [a( e' cis e][a e c )a!~] |
+       [a8( f' d f][a f d )a!~] |
+       [a( g' e g][a g e )a,!~] |
+       [a8-"cresc."( f' d f][a f d )a!~] |
+       %195
+       [a( e' cis e][a e c )g] |
+       f2\ff e | dis b'~ | 
+       [b8\p( g' e g][b g e )b!~] |
+       [b8\<( fis' dis fis ][b fis dis )b!~] |
+       %200
+       [b8\p( g' e g][e g e )g] |
+       [f(g f g][f g f)\!g] |
+       es!4\fp r e r | f r g r | as r g r | f r fis r | 
+       g r g r | g r g r | g r g-"cresc." r | 
+       g r g r | g r g r | g r g r | 
+       f2.\ff()es4 | d( c d )c |
+       f2.\ff()es4 | d( c d )c |
+       bes2.\ff()as4 | g( f g )f |
+       bes2.\ff()as4 | g( f g )f |
+       %220
+       r4 r8 f' f4\sf()ges |
+       r4 r8 f f4\sf()ges |
+       r4 r8 f f4\sf()ges |
+       r4 r8 f f4\sf()ges |
+       f4. f'8 f,4. f'8 |
+       %225
+       e,4. e'8 es,4. es'8 |
+       d,4. d'8 c,4. c'8 |
+       b,4. b'8 as,4. as'8 |
+       g,4 r8 g as4 r8 as |
+       f4 r8 f g4 r8 g |
+       %230
+       [c8\p es fis g][as g es c]|
+       [b d fis g][as g d b\f]|
+       [c es fis\p g][as g es c]|
+       [b d fis g][as g d b\f]|
+       [c es g\p as][bes, d fis g]|
+       %235
+       [as, c e f!][g, bes d es]|
+       [f, as c d][es g b c]|
+       [d, f as c][g, b d g]|
+       [c,\f e g as][bes, d fis g]|
+       [as, c e f!][g, bes d es]|
+       %240
+       f4 r r2 | R1*3 | 
+       c4\p r r r8 c(|
+       )f4 r r r8 f(|
+       )e4 r r r8 e(|
+       )b4 r r r8 b(|
+       )c4 r r r8 c(|
+       %250
+       )f4 r r r8 f(|
+       )es4 r r r8 es(|
+       )b4 r r r8 b(|
+       )c4-"cresc." r r r8 c(|
+       )f4 r r r8 f,(|
+       )es1 | ges\f | f\p | as\f | g!\p | 
+       %260
+       bes\f |
+       as4.\p-"cresc." as'8 g4. g8 | f4. f8 es4. es8 |
+       as4. as8 g4. g8 | f4. f8 es4. es8 |
+       %265
+       f,4.\ff f'8 f2\sf | 
+       f,4. f'8 f2\sf | 
+       g,4. g'8 g2\sf | 
+       g,4. g'8 g2\sf | 
+       as,4. as'8 as2\sf | 
+       %270
+       a,4. a'8 a2\sf | 
+       [c,8-"sempre" b c d][es\ff d es c]|
+       [b c d c][b c b g]|
+       [c8 b c d][es d es c]|
+       [b c d c][b c b g]|
+       [c b c g][c b c g]|
+       %275
+       [c b c g][c b c g]|
+       c1 ~ | c | f4-. r r2 | R1 |
+       c1 ~ | c | f4-. r r2 | R1 |
+       c1 ~ | c | fis4-. f-. r2 | R1
+       es4-. e-. r2 | f,4-. g-. r2 | as4-"dim." r b r | R1 | c4 r r2 R1 |
+       g4-"pizz." r r2 | R1 | c4 r r2 | 
+       [c8-.-"arco" es-.][es()d][d-. as'-.][as()g] | R1
+       \[/3 c,4-"sempre pi\\`u piano" ( es c ~ \] \[/3 c as' )g \] |
+       r2 r4 c,( | es2. ) d4 | r2 r4 d( | as'2. )g4 ~ | g1 ( |
+       %305
+       es | )d( | )as'\> ~ | as ~ | as2.()\!g4 | c,\pp r r2 | R1 |
+       c4-"pizz." r r2 |
+       c4 r r2 |
+       c4 r r2 |
 }
 
 $violoncello_staff = \type Staff = violoncello <
-       \property Staff.instrument = "cello"
+       \property Staff.midi_instrument = "cello"
+       \property Staff.instrument = "Violoncello"
+       \property Staff.instr = "Vc."
        \clef "bass";
-       \melodic< 
-               \global;
+       \melodic \type Voice=one
+               \global
                \$violoncello
        >
 >
+
index 8512f242c71dce6c47cecc1d2faa16b5ffce5168..2b734e09c62c38f4fe51902cb3ca3d4e0b45ad6c 100644 (file)
@@ -1,22 +1,14 @@
 # mutopia/J.S.Bach/Makefile
 
-# subdir level:
-#
 depth = ../..
-#
 
-EXTRA_DISTFILES=preludes-3.lym4
+SUBDIRS = Petites-Preludes Solo-Cello-Suites 
 
-# descent order into subdirectories:
-#
-SUBDIRS = 
-# 
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
 
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Mutopia.make
-#
+EXTRA_DIST_FILES=
 
-examples=scsii-cello wtk1-fugue2 preludes-2
+examples=wtk1-fugue2
 
-include $(depth)/make/WWW.make
+include $(stepdir)/WWW.make
diff --git a/mutopia/J.S.Bach/Petites-Preludes/Makefile b/mutopia/J.S.Bach/Petites-Preludes/Makefile
new file mode 100644 (file)
index 0000000..1a1020a
--- /dev/null
@@ -0,0 +1,12 @@
+# mutopia/J.S.Bach/Petites-Preludes/Makefile
+
+depth = ../../..
+
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
+
+EXTRA_DIST_FILES=
+
+examples=preludes-2
+
+include $(stepdir)/WWW.make
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-1.ly
new file mode 100644 (file)
index 0000000..0c111fa
--- /dev/null
@@ -0,0 +1,119 @@
+\header{
+filename =      "preludes-1.ly";
+% mmm
+% title =       "DOUZE PETITES PR\\'ELUDES";
+opus = "BWV 924";
+% piece = "\\numfont 1";
+piece = "1";
+% blz 1
+% Clavierb"uchlein f"ur W. Fr. Bach
+% Clav. W. Fr. Bach: 2-Praeambulum I
+% ca 1720
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+one = \melodic\relative c {
+       \property Voice . textstyle =  "italic"
+       r16\p_"legato"\< [g''-1( c-3 )e-5] r [g,-1( c )e]
+       r [g,( c )d] r [b-1( d-2 \!)g-5] |
+       r\mf [a,( d-2 ) g-5] r [a,(\< d )f-4]
+       r [a,( d )e-3] r [c-1( e-2 \!)a-5] |
+       r\f [b, e a-5] r [b, e-3 g-5] 
+       r [c,-1 e-3 f-4] r [g, d'-3 f-5] |
+       r [g,-"poco a poco dim." d'-4 e] r [g, c-2 e]
+       r [a,-1 c-3 d-4] r [e, b'-3 d-5] |
+       r [e, b' c-4] r [e, a-2 c]
+       r [f,-1 a-3 bes-4] r [c, g'-3 bes-5] |
+       r [c, g' a-4] r [c, f-2 a] 
+       r [d, f-2 b-5] r [e, g-2 c-5] |
+       r\p [d, g c-5] r [d, g b-4]
+       r [c, g'-3 b-5] r [c, fis-2 a-4] |
+       r [b, d a'-5] r [b, d g-4]
+       r [a, c g'-5] r [a, c f!-4] |
+       % ugh arpeggio
+       <
+               { \voiceone  f4 r s }
+               { \voicetwo  <g,4 d'> r s }
+       >
+       \onevoice 
+       % ugh beam across staffs slur starts at lower staff
+       r16 [g,-1( b d] |
+       \voiceone 
+       )b s4 [g'16-1( b-2 d] )b s s s [f'-2 g-3 b-5 f-2] |
+       \onevoice 
+       [e-1\f c'-5( g-3 f-2] [e-1 c'-5 g-3 e-2] 
+       [)d c'-5( f,-3 e-2] [d-1 b'-5 f-3 d-2] |
+       [)c b'-5( e,-3 d-2] [c-1 a'-5 e-3 c-2] 
+       [)b-1 a'-5( d,-3 c-2] [b-1 g'-5 d-3 b-2] |
+       [)a g'-5 c,-4 b] [a-"poco a poco dim." fis'-5 c-2 a-1]
+       [b-2 f' d-4 c] [b f' d-4 b-2] |
+       [g e' c-3 b] [a e'-5 c-3 a-1]
+       [fis-2 d' b-3 a] [g-1 d'-5 b-4 g-2] |
+       [e c'-5 a-4 g-3] [fis-2 c'-5 a-4 fis-2] 
+       [d c'-5 b-4 a] [b-4 g-2 d'-5 f,-1] |
+       [g-4 e-2 f-1 d'-5] [c-4 b a g]
+       [f'-5 d-3 es-4 c-2] [fis,-1 es'-4 d-3 c-2] |
+       [b-1 d-5 b-3 g-1] [as-4-"cresc. e rall." f-2 g-3 d-1]
+       [es-2 fis-3 a-4 c-5] 
+       < 
+               { \voiceone  r [c8 b16] }
+               { \voicetwo  [d,8 f-2] }
+       >
+       \onevoice  |
+       <c1\mf g e>
+       \bar "|.";
+}
+
+two = \melodic\relative c{
+       \property Voice . textstyle =  "roman"
+       c4-5 e-3 g-\mordent^"(\\textsharp)" g,4 |
+       d'-\mordent-5 f-3 a-\mordent^"(\\textsharp)" a,4 |
+       e'-5 e'-\mordent-1 a,-4 b-\upprall |
+       c4 e,-4 fis gis-\downprall |
+       a4 c,-4 d e-\upprall |
+       f4-1 e d-3-\prall c |
+       g'-\mordent^"(\\textsharp)" g, g'-\mordent g, |
+       g'-\mordent g, g'-\mordent g, |
+       % ugh f should be at upper staff
+       g'-\mordent r r16 [g,-5( b-4 d] )f-1 s s s |
+       s [g-5( b-4 d-2] )f-1 s s s s \clef "violin"; [g-4 b-2 d-1] 
+       s s s s \clef bass; |
+       <
+               { \voiceone  g,,1 ~ g ~ g ~ g ~ g ~ g ~ g }
+               { \voicetwo  g,1 ~ g ~ g ~ g ~ g ~ g ~ g }
+       >
+       <c,1 c,>
+       \bar "|.";
+}
+
+global  = \melodic{
+       \time 4/4;
+}
+
+treble_staff = \type Staff = treble <
+       \global
+       \one
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+       \clef "bass";
+       \global
+       \two
+>
+
+grand_staff = \type GrandStaff <
+       \treble_staff
+       \bass_staff
+>
+
+\score{
+        % Moderato
+       \grand_staff
+       \include "preludes-paper.ly";
+       \midi{ \tempo 4 = 80; }
+}
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-2.ly
new file mode 100644 (file)
index 0000000..585f74e
--- /dev/null
@@ -0,0 +1,130 @@
+\header{
+filename =      "preludes-2.ly";
+title =         "2";
+opus = "BWV 939";
+% urg?? piece = "\\numfont 2";
+piece = "2";
+% blz 10
+% 
+% Six Petits Pr eludes
+% Collection Johann Peter Kellner
+% ca 1703- 1707
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+one = \melodic\relative c{
+       \property Voice . textstyle =  "italic"
+       r8\mf [c'-1( e-2 g-4] [e-2 c-1 bes'-5 g-3] |
+       [)a-4\< c,-1( f-2 a-4] [f c c'-5 a-3] |
+       [)b-4 g-1( b-2 d-4] [b-2 g f'-5 \!d-3] |
+       <
+               {\voiceone )e2-4\f r4 e-5 }
+               \type Voice = second {\voicetwo <c2 g > r4 <c g > }
+       >
+       \onevoice |
+       \type Staff < 
+                { \voiceone d2-4 r4 d-4 }
+                \type Voice = second { \voicetwo <c2 a > r4 <c a > }
+       >
+       \onevoice |
+       \type Staff < 
+                { \voiceone d8 }
+                \type Voice = second { \voicetwo <b 8 g > }
+       >
+       \onevoice 
+       [g, 8-1\mf( b-2 d-4] 
+       <
+               { \voiceone )b 4 e-5 }
+               \type Voice = second { \voicetwo g, 4 b }
+       >
+       \onevoice |
+       \type Staff <
+               { \voiceone c2 r4 < {c-5 ~ c8} {a 4 ~ a 8} > }
+               { \voicetwo c2 r4 e, 4 ~ e 8 }
+       >
+       \onevoice 
+       [d,-1\p( fis-2 a-4] [fis-2 d-1 c'-5 a-3] |
+       [)b-4\< g-1( b-2 d-4] [ b-2 g-1 f'!-5 d-3] |
+       [)e-4 g,-1( c-2 e-4] [c-2 g g'-5 e-3] |
+       [)fis-4 a,-1( c-2 fis-4] [c a a'-5 \!fis-3] |
+       <
+               { \voiceone )g2-5\f }
+               \type Voice = second { \voicetwo <d2 b > }
+       >
+       \onevoice 
+       r4 b4-2( |
+       [c,8-1 e-2 g c ] [g-2 e-1 bes'-4 g-2] |
+       [)a16->-3 g-2 f-1 e-3] [d c b !-3 a-2] 
+       [b-3\< g-1 a b ] [c-1 d e \!f] |
+       g4-5\ff
+       \type Staff <
+               { \voiceone c,2-5 b 4-4 }
+               { \voicetwo g 2-2 d 4-1 }
+       >
+       \onevoice 
+       \type Staff <
+               { \voiceone  c1^5 }
+               { \voicetwo e, 1_1}
+       >
+       \onevoice 
+       \bar "|.";
+}
+
+two = \melodic\relative c{
+       \type Staff <
+               { \voiceone c1 ~ | c ~ | c }
+               { \voicetwo c,1 ~ | c ~ | c }
+       >
+       \onevoice |
+       r8 [c-5( e-3 g-1] [e-3 c-5 c' e,-4] |
+       [)fis-3 d-5( fis-3 a-1] [fis-3 d-5 d' fis,-4] |
+       )g2-3 r4 g-2( |
+       [)a8 a,-5( c-4 e-2] [c-4 a-5 g' e-3] |
+       )fis2 r4 d-4 |
+       g-\mordent-"(\\textsharp)" g, 4 g'-\mordent g, |
+       % mordents in brackets...
+       g'-\mordent g, g'-\mordent g, |
+       g'-\mordent g, g'-\mordent g, |
+       [g'8 g,-5( b-4 d-2] [b-4 g-5 f'!-1 d-3] |
+       [)e-2 c-4 e-2 g-1] [e-3 c-5 c' e,-4] |
+       \property Voice . textstyle =  "finger"
+       f1^"3\\_1" ~ |
+       [f8 d-3 e-2 c-4] g'4-1 g,^"5\\_2" |
+       <c1 c,1>
+       \bar "|.";
+}
+
+global = \melodic{
+       \time 4/4;
+}
+
+trebleStaff = \type Staff = treble <
+       \global
+       \one
+>
+
+bassStaff = \type Staff = bass <
+       \clef "bass";
+       \global
+       \two
+>
+
+grandStaff = \type GrandStaff <
+       \trebleStaff
+       \bassStaff
+>
+
+a4 = \paper{
+       linewidth= 193.\mm;
+}
+
+\score{
+    % Moderato
+       \grandStaff
+       \paper{ \a4 }
+       \midi{ \tempo 4 = 100; }
+}
+
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-3.lym4 b/mutopia/J.S.Bach/Petites-Preludes/preludes-3.lym4
new file mode 100644 (file)
index 0000000..0b25e9f
--- /dev/null
@@ -0,0 +1,182 @@
+% URG
+
+changequote(^, @)
+define(comma, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
+define(s, ^comma(translit($*,^ @, ^,@))@)
+define(t, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
+
+\header{
+filename =      "preludes-3.ly";
+title =         "3";
+opus =         "BWV 999";
+% piece = "\\numfont 3";
+piece = "3";
+% Pr"aludum in C Moll f"ur Laute
+% blz 16
+% Six Petits Preludes`
+% Collection Johann Peter Kellner
+% ca 1703 - 1707
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+
+\version "1.0.0";
+
+
+one = \melodic  \transpose c`` {
+       \textstyle "italic";
+%#     s(^c@ ^es@ ^g@ ^\p(\<@ ^\!@ ^)\!@ ^\>@)
+       t(c,es,g,^\p(\<@,\!,^)\!@,\>)
+%#     s(c es g ^(@ ^@ ^)@)
+       t(c,es,g,^(@,^@,^)@)
+%#     s(c f as ^(@ ^@ ^)@)
+       t(c,f,as,^(@,^@,^)@)
+       s(c f as)
+       s(b` d f \< \!)
+       s(b` d f)
+       s(g` c es \> \!)
+       s(g` c es)
+       s(g` c es \< \!)
+       s(g` c es)
+       s(a` c es)
+       s(a` c es)
+       s(a` bes` d \> \!)
+       s(g` bes` d)
+       s(bes` d g)
+       s(a` es g \mf)
+       s(a` c fis)
+       s(a` c fis)
+       s(bes` d g)
+
+
+%#     s(c fis a -"poco a poco cresc.")
+       t(c,fis,a,-"poco a poco cresc.")
+       s(d g bes)
+       s(d fis c`)
+
+       s(cis g bes)
+       s(c es a !-"dim.")
+       s(bes` e g)
+       s(a` c g)
+
+       s(a` c fis)
+       s(g` bes` e)
+       s(fis` a` es)
+
+       s(g` bes` d -"dim.")
+       s(g` a` c)
+       s(fis` a` c)
+       s(fis` a` c)
+       r16\p [g` a` c] [b` g` b` g`] r g` r g`
+%#     s(a` c fis -"poco cresc.")
+       t(a`,c,fis,-"poco cresc.")
+       s(c fis a)
+       s(b` d g)
+       s(b` d f -"dim.")
+       s(g` c es)
+       s(fis` c es)
+       s(fis` c es)
+       r16 [g`(\< b` d] [b` g` b` d] [es c a` )\!fis] |
+       <
+               {\voiceone g2.-\fermata\mf}
+               {\voicetwo <b`2. d>}
+       >
+       \onevoice
+       \bar "|.";
+}
+
+two = \melodic{
+       \clef bass;
+       % c4 r [g8-.(\ped )es-.\*] |
+       c4 r [g8-.( )es-.] |
+       c4 r [g8-.( )es-.] |
+       c4 r [as8-.( )f-.] |
+
+       c4 r [as8-.( )f-.] |
+       c4 r [as8-.( )f-.] |
+       c4 r [as8-.( )f-.] |
+
+       c4-- r [es8 c] |
+       bes`!4-- r [es8 c] |
+       as`!4-- r [es8 c] |
+
+       g`4-- r [es8 c] |
+       fis`4-- r [es8 c] |
+       fis`4 r [fis8 d] |
+
+       g`4 r [d8 bes`] |
+       g`4 r [bes`8 g`] |
+       es`4 r [g8 es] |
+
+       c4 r [c8 a`] |
+       d`4 r [d8 a`] |
+       d`4 r [d8 a`] |
+       d`4 r [d8 bes`] |
+
+
+       d`4 r [es8 c] |
+       d`4 r [g8 d] |
+       d`4 r [a8 fis] |
+
+       d`4 r [g8 es] |
+       d`4 r [fis8 d] |
+       d`4 r [e8 cis] |
+       d`4 r [es8 c] |
+
+       d`4 r [d8 a`] |
+       d`4 r [cis8 bes`] |
+       d`4 r [c!8 a`] |
+
+       d`4 r [bes`8 g`] |
+       d`4 r [es8 c] |
+       d`4 r [d8 a] |
+
+       g`4 r [es8 c] |
+       g`4 r [d8 b`] |
+       g`4 r [es8 c] |
+       
+       g`4 r [es8 c] |
+       g`4 r [g8 d] |
+       g`4 r [as8 f] |
+       g`4 r [es8 c] |
+
+       g`4 r [es8 c] |
+       g`4 r [es8 c] |
+       g`4 r r |
+       g`2._\fermata 
+       \bar "|.";
+}
+
+global  = \melodic{
+       \meter 3/4;
+       \key es;
+}
+
+treble_staff = \type Staff = treble <
+       \global
+       \one
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+       \clef "bass";
+       \global
+       \two
+>
+
+grand_staff = \type GrandStaff <
+       \treble_staff
+       \bass_staff
+>
+
+a4 = \paper{
+       linewidth= 193.\mm;
+}
+
+\score{
+       % Semplice e non troppo legato
+       \grand_staff
+       \paper{ \a4 }
+       \midi{ \tempo 4 = 100; }
+}
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-4.ly
new file mode 100644 (file)
index 0000000..66e9543
--- /dev/null
@@ -0,0 +1,207 @@
+\header{
+filename =      "preludes-4.ly";
+title =         "4";
+opus = "BWV 925";
+% piece = "\\numfont 4";
+piece = "4";
+% blz 8
+% Clavierb"uchlein f"ur W. Fr. Bach
+% Clav. W. Fr. Bach: 27-Praeludium ex d neutral
+% ca 1720
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+\version "1.0.0";
+
+one = \melodic\relative c{
+       \property Voice . textstyle =  "italic"
+       r16\p_"legato" 
+       \property Voice . textstyle =  "finger"
+       [d'-1( fis-3 d-1] [a'-2 b-3 cis-4 a-3]
+       [d-3 cis-2 d-1 e-2] [d-1 fis-3 e-2 d-1] |
+       \property Voice . textstyle =  "finger"
+       \stemup  
+       )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ | 
+       e16\< \stemboth [a,16( cis a] [d-2 e fis d-1]
+       [g-3 fis g a-4] [g-3 b a \!g] |
+       \stemup
+       )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> |
+       %5
+       <a4-5( e> <fis-4 d-2> <[)g!16-5 d> fis-2 g-3 a-4] 
+       \stemboth
+       [g-3 b a g] |
+       \property Voice . textstyle =  "italic"
+       [fis_"dim." e fis-3 g] [fis-3 a-5 g fis]
+       \property Voice . textstyle =  "finger"
+       e4-"2\\_5" ~ e16 [e,( fis g ] |
+       \property Voice . textstyle =  "italic"
+       [a-4_"dim." g-1 a b] [a-2 c-4 b a]
+       [g-1 fis-2 g-3 a] [g-3 b a g] |
+       \stemup
+       )fis4\p 
+       \skip 4*7; |
+       %10
+       \property Voice . textstyle =  "finger"
+       d'4.\mf cis8-"4\\_5" ~ cis b4-5 a8-"4\\_5" ~ |
+       \property Voice . textstyle =  "italic"
+       a g4-5 fis8-4 ~ [fis16 fis-4-"dim." e-3 d-2] 
+       \property Voice . textstyle =  "finger"
+       e4-"3\\_5" ~ |
+       [e16 e-5 d cis] d4-5 ~ [d16 d-5 cis b] cis4-5 |
+       \stemboth
+       [fis,16-1\p a-2 d-5\< c-4] [b-1 d-2 g-5 fis-4]
+       [d-1 b'-5 a g] [fis-2 e-1 d-4 \!c!-3] |
+       [b-2 d-1 g a] [fis8-\prall e16-4 d-3]
+       [d8. e16~] [e d8 cis16] |
+       %15
+       \stemup
+       r16 [d-1\< fis d] [g a b g-1] [c-3 b c d] [c e d-4 \!c] |
+       b4-5 a ~ [a8 g-5 ~] [g16 fis8-4 e16-3] |
+       [fis8-4 e-5~] [e d-5~] d4 cis-4 |
+       d2\p-"rall." ~ [d16 a-2( b-3 cis-4] )d4-5 |
+       \bar "|.";
+}
+
+two = \melodic\relative c{
+       \property Voice . textstyle =  "finger"
+       fis4-1( e8-2 a4 a4 gis8-2 | 
+       ) a8
+       \translator Staff=treble \stemdown
+       a'4 a8 b4.-"2\\_1" cis8 ~ | 
+       cis8
+       \translator Staff=bass \stemup
+       a,8 ~ [a d] ~ d d4-> cis8 | 
+       d8
+       \translator Staff=treble \stemdown
+       d'4-> cis8-1 ~ cis b4-1 b8 |
+       %5
+       r8 a4 a8
+       \translator Staff=bass \stemup
+       [g8-1( fis-2] )e4-1 ~ | 
+       e4 d ~ [d16 d-1 cis-2 b-1] cis4-2 ~ |
+       [cis8 a-3] d4.-1 d4^> cis8-2 |
+       \translator Staff=treble \stemdown
+       d4 \stemboth r16 [b-1\< d-2 b~] <g'4-5 e-3 b>
+       r16 [cis,-1 e-2 \!cis~] |
+       <a'4-5 fis-3 cis> r16 [d,-1 fis-2 d~] <b'4-5 g-3 d>
+       r16 [fis-1 a fis~] |
+       %10
+       \stemdown
+       fis4 e d cis |
+       b a b4. b8 |
+       a4
+       \translator Staff=bass \stemup
+       r16 [b-3 fis-1 a-2] g4-1 r16 [a-3 e-1 g-2] |
+       \skip 1*1; 
+       s16
+       \translator Staff=treble \stemdown
+       d'8.-1 ~ [d8 c] d4 [a8 g] |
+       %15
+       \translator Staff=bass \stemup
+       [fis'8 c-1] b4-1 \stemdown <a
+       \translator Staff=treble \stemdown
+       a'4.-2>
+       \stemdown
+       a'8~ |
+       [a g-3~] [g16 e fis8~] [fis16 d8.~] [d8. cis!16] |
+       \translator Staff=bass \stemup
+       <
+       %       { \voiceone  [d,8-2 a~] a4 }
+               { \voiceone  [d8-2 a~] a4 }
+       %       { \voicethree  [a,8-1 g] [fis16-2 e-1 fis-2 d-1] }
+               { \voicethree  [a8-1 g] [fis16-2 e-1 fis-2 d-1] }
+       >
+       \voiceone 
+       [g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] |
+       [g g-1 fis-2 e-1] fis4-2 ~ fis2
+       \bar "|.";
+}
+
+three = \melodic\relative c{
+%      \stemdown 
+       d4-3 c-4 b e-3 |
+       a16 [a,-5\mf( cis-3 a-5] [d-2 e-1 fis-2 d-4]
+       [g-1 fis-3 g a] [g b a g] |
+       )fis4 fis e a-4 |
+       d16 \stemboth [d,-5\f( fis-3 d-5] [a'-2 b-1 cis-2 a-4]
+       [d-1 cis-3 d e] [d-4 fis-2 e-1 ) d] |
+       %5
+       [cis-3 b-4 cis-3 d-2] [c-4 e-2 d-3 c-4] 
+       \stemdown b4-5 [cis8-4 b-3(] |
+       [a-4 )fis-5 b-2 a-3] [gis-4 e-5 a-3 g-4] |
+       fis4. d8-5 e4-5 a4-3 |
+       \stemboth
+       r16 [d,-4( fis-2 d-4] [)g8-.-1 g,-.-5]
+       r16 [e'-4( g-2 e-4] [)a8-. a,-.-5] |
+       r16 [fis'-4( a fis] [)b8-. b,-.] r16 [g'-4( b g] [)d'8-. d,-.] |
+       %10
+       r16 [d,16-5( fis-3 d] [a'-2 b-1 cis-2 a-4] [d b-5 d-3 b]
+       [fis'-2 g a-2 fis-4] |
+       )fis16 [g,( b g] [d'-2 e fis-2 d-4] [)g8-. g,-.] r16 [cis-4( e cis] |
+       [)fis8-. fis,-.] \stemdown r16 [b-4( d b] [)e8-. e,-.] 
+       r16 [a-4 cis a] |
+       \stemboth
+       [d-1 e-3 fis-2 d-4] [g-1 fis-2 e-3 d-1] [cis!-3 a-5 b cis]
+       [d-2 e fis-2 d-4] |
+       [g8 e-3] \stemdown [a a,] [b8.-4 g16-5] a4-4 |
+       %15
+       [d8-5 a'-2~] [a g-3~] [g g-3] fis4-4 |
+       \stemup
+       r16 [g-2 b-1 g-3] [d'8.-1 c16-1] [b8.-2 bes16-3] [a8-1 g] |
+       \stemdown
+       r16 [a,-2 cis!-1 a'-2] [d,-1 e fis d] [e8-1 d-2] [e-1 a,-2] |
+       [d a-2~] [a16 a-2 b cis-2] d2 |
+}
+
+four = \melodic\relative c{
+       \skip 1*9;
+%      \stemup 
+%      \property Voice.hshift = 1 
+       %10
+       a''2 fis |
+       d s |
+%      \property Voice.hshift = 0 
+       \skip 1*2; |
+       s4
+       \translator Staff=bass \stemup
+       a4 ~ [a16 d,-2 g8-1] [fis e-1] |
+       %15
+       \stemdown
+       d1 ~ | 
+       d ~ | 
+       d, ~
+       d2 d2
+}
+
+global  = \melodic{
+       \time 4/4;
+       \key D;
+}
+
+treble_staff = \type Staff = treble <
+       \global
+       { \voiceone \one }
+       { \voicefour \four }
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+       \clef "bass";
+       \global
+%      { \voiceone \two }
+       { \type Voice = bone \skip 1*0; \property Voice.ydirection = \up \two }
+       { \voicetwo \three }
+>
+
+grand_staff = \type GrandStaff <
+       \treble_staff
+       \bass_staff
+>
+
+\score{
+        % Allegretto
+       \grand_staff    
+       \include "preludes-paper.ly";
+       \midi{ \tempo 4 = 70; }
+}
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-5.ly
new file mode 100644 (file)
index 0000000..5a2d50f
--- /dev/null
@@ -0,0 +1,225 @@
+\header{
+filename =      "preludes-5.ly";
+title =         "5";
+% piece = "\\numfont 5";
+piece = "5";
+opus = "BWV 926";
+% blz 2
+% Clavierb"uchlein f"ur W. Fr. Bach
+% Clav. W. Fr. Bach: 4-Praeludium 2
+% ca 1720
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+\version "1.0.0";
+
+
+one = \melodic\relative c{
+       \property Voice . textstyle =  "italic"
+       [d'8-1\p a'-5-"legato" f-3 d-1 a'-5 f-3] |
+       [d-1 a'-5 f-3 d-1 a'-5 f-3] |
+       [d-1\< bes'-4 g-2 d-1 bes'-4 \!g-2] |
+       [d-1 bes'-4 g-2 d-1 bes'-5 g-3] |
+       %5
+       [cis,-1\mf g'-4 e-2 cis-1 g'-4 e-2] |
+       [cis-1 bes'-5 g-4 e-2 a-5 g-4] |
+       [f-3\< d-1 f-2 a-4 f-1 a-2] |
+       [d-5 a-1 d-2 f-4 d-1 \!f-2] |
+       [b\> f-3 e d c-3 b] |
+       %10
+       [a gis-3 fis e d'-5 \!b-2] |
+       < 
+               {
+                       \voiceone 
+                       \property Voice . textstyle =  "roman"
+                       c4-\mordent^"(\\textsharp)"\p r r |
+                       c4-\mordent^"(\\textsharp)" r r
+                       \property Voice . textstyle =  "italic"
+               }
+               { \voicetwo  a4 r r | a4 r r }
+       > |
+       \onevoice 
+       [a'8\mf( es-3\> d c bes!-3 a] |
+       [g fis-3 e!-2 d-1 c'-4 \!a] |
+       %15
+       [)bes8-\mordent\p( d8-5 bes-3 g-1] )g'4 |
+       r8 [d-5( c bes a-\prall g] |
+       [)a-2 c-4( a f] ) f'4 |
+       r8 [c-5 bes a g-\prall f] |
+       [g-2 bes-4 a g f-1 e-2] |
+       %20
+       [f-3 d-1 f-2 a-3 d-5 g,-2] |
+       < 
+               { 
+                       \voiceone 
+                       % ... textnatural
+                       [cis8-\prall e8-5-"poco cresc." cis-3 a e' cis]
+               }
+               { \voicetwo  a4 }
+       >
+       \onevoice 
+       [a8 e'-5 cis a bes!-3 a] |
+       [g e'-5 cis-3 g e'-5 cis-3] |
+       [g-1 e'-5 cis g a-3 g] |
+       [f-"dim." d'-5 bes f d' bes] |
+       %25
+       [f d'-5 bes f d' bes] |
+       [fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3] |
+       [fis-2 c'-5 a-3 fis-2 c'-5 a-3] |
+       [bes-4 g-1 fis-2 g-3 d-1 g-2] |
+       [bes-4 g-2 d-1 bes'-5 g-3 d-1] |
+       %30
+       [e-2\p g-4 fis-3 g-1 bes-4 g-2] |
+       [es-1 bes'-4 g-2 es bes' g] |
+       [cis,-1 bes'-4 g-2 cis, bes' g] |
+       [cis,-1 bes'-4 g-2 cis,-1 a'-5 g-4] |
+       [f-3 a f d a'-5 f] |
+       %35
+       [d-1 a'-5 f-3 d-1 cis-2 d-1] |
+       [e-3\< g-5 e-3 bes-1 g'-5 e-3] |
+       [bes-1 g'-5 e-3 \!cis-2 a-1 g'-5] |
+       [f16-4\mf d-2 c-1 bes-3] \stemup a-2 s16 s8 s4 |
+% ugh
+%      s1 |
+       s4 s4 s4 |
+       %40
+       s4 s16 [d16-1-"m.d." f-2 a-4] \stemdown [d,-2-"m.g." f a] \stemup d-1 |
+       \stemboth
+       [f a-4 f d] [f-4 d b d-5] [gis-2 b a gis,] |
+       <g'!4.-5\f e a,> a8-5 
+       <
+               {
+                       \voiceone 
+                       f4-4\> ~ | \![f8 e] [e32-4 f e8. ~] [e8 d-3]
+               }
+               { \voicetwo  <d4 a> r4 cis-2 }
+       > |
+       \onevoice 
+       [d8-4 c!-3 a-1 d-4 bes-2 g-1] |
+       %45
+       [c-5 a-3 fis-2 bes-4 g e ] |
+       [a-5 fis-"dim. e rall." d g-5 e cis-2] |
+       <
+               { \voiceone  <fis2-.-5\p a,> }
+               { \voicetwo  [d32( cis d8. ~] ) d2 }
+       > |
+       \bar "|.";
+}
+
+
+two = \melodic\relative c{
+       \clef "bass";
+%      [d32( cis )d8.] r4 r |
+       d4-\mordent r r |
+       d,4 r r |
+       d'-\mordent r r |
+       d,4 r r |
+       d'-\mordent r r |
+%      d r r |
+       d,4 r r |
+       [d'8-2 a-5 d-2 f-1 d-4 f-2] |
+       [a-1 f-4 a-2 d-1 a-2 d-1] |
+       gis,4-3 r r |
+       e-4( )gis-2 e |
+       [a8-4 e'-1 c-2 a-4 e'-1 c-2 ] |
+       [g!-5 es'-1 c-1 g-5 es'-1 c-1 ] |
+       fis,4-5 r r 
+       d-4( ) fis d-5 |
+       \property Voice . textstyle =  "roman"
+       g4-\mordent^"(\\textsharp)" r r8 f!8 |
+       \property Voice . textstyle =  "italic"
+       e4-\prall r r |
+       f4-\mordent r r8 e |
+       d4 r8 [f-1 e d] |
+       [e-2 d-3 cis-4 e-1 d-2 cis-3] |
+       d4-2( )c! bes-4 |
+       a( )a' a, |
+       a( )a' a, |
+       a( )a' a, |
+       a( )a' a, |
+       bes r r |
+       bes-5( )bes' bes, |
+       a r r |
+       a-2( )d-1 d, |
+       g r r |
+       g( )g' g, |
+       g r r |
+       g( )g' g, |
+       a r r |
+       a( )a' a, |
+       a r r |
+       a( )a' a, |
+       cis, r r |
+       cis( )cis' cis, |
+       d-4 s16
+       \stemdown
+       [g'16-1-"m.g." f e] [f-2 a d,-3 f] | 
+       a,
+       \stemup
+       [d-5-"m.d." c bes] a 
+       \stemdown [g-2 f-"m.g." e] [d f-4 a-2 d-1] |
+       \stemup
+%      [f-2\ped a]
+       [f-2-"Ped." a]
+       \stemdown
+%      [d-4-"m.g." f-"cresc."] a s s8 s4\dep |
+       [d,-4-"m.g." f-"cresc."] a s s8 s4-"*" |
+       \stemboth
+% ugh whole rest has duration of one bar
+%      r1 |
+       r4 r r |
+%{
+       ugh forget the 8 below:
+       [cis-3( e cis a] [d16-1 c bes a] |
+       and lily dumps koor
+lilypond: ../flower/include/varray.hh:116: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_ failed.
+Aborted (core dumped)
+%}
+       [cis,8-3( e cis a] [d16-1 c bes a] |
+       [)g8 g' a-2( g-3 a-1 a,] |
+       )d4-3 d'-1 d, |
+       d r r |
+       d,( )d' d, |
+       d2. |
+       \bar "|.";
+}
+
+global = \melodic{
+       \time 3/4;
+       \key F;
+}
+
+treble_staff = \type Staff = treble <
+       \global
+       \one
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+       \clef "bass";
+       \global
+       \two
+>
+
+grand_staff = \type GrandStaff <
+       \treble_staff
+       \bass_staff
+>
+
+widea4 = \paper {
+       \paper_twenty
+%      arithmetic_basicspace = 2.;
+%      arithmetic_multiplier = 6.\pt;
+       arithmetic_basicspace = 2.;
+       arithmetic_multiplier = 8.\pt;
+       linewidth= 193.\mm;
+}
+
+\score{
+        % Moderato
+       \grand_staff
+       \paper{ \widea4 }
+       \midi{ \tempo 4 = 90; }
+}
+
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-6.ly
new file mode 100644 (file)
index 0000000..feb7345
--- /dev/null
@@ -0,0 +1,133 @@
+\header{
+filename =      "preludes-6.ly";
+title =         "6";
+% piece = "\\numfont 6";
+piece = "6";
+opus = "BWV 940";
+% blz 11
+% Six Petits Preludes
+% Collection Johann Peter Kellner
+% ca 1703 - 1707
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+\version "1.0.0";
+
+
+one = \melodic\relative c{
+       \skip 1; |
+       \stemup
+       r4 d''2-5( cis4-4 |
+       \stemboth
+       [)d16-5\mf a'-4( g f] [e f-4 cis-2 d-1] 
+       [e8.-\mordent f16] [d8.-\prall-1 cis16-3] |
+       \stemup
+       )cis4\> ~ [cis16 a \!d8 ~] d4 c-5 |
+       %5
+       b2-4 ~ b4 a-5 ~ |
+       [a16 a-5 \stemup g! f] g4-4\< ~ g f-3 ~ |
+       [\!f16 a g f] [e16 g8.-5 ~] [g16 g-5 f-4 e-3] [d-1 f8.-4 ~] |
+       [f16 f-3 e d] b'4 a-5 g-5 |
+       fis4-4 g r8\<-"rall." [g16-1( bes-2] \!e4-5 |
+       %10
+       \!)d1-5
+       \bar "|.";
+}
+
+two = \melodic\relative c{
+       r16\p [d''-5( c-4 bes-3] [a-2 bes-3 f-1 g-2] 
+       [a8.-\mordent bes16-1] [g8.-\prall f16-1] |
+       \stemdown
+       )f2 e2 |
+       \translator Staff=bass \stemup
+       r4 a,-1 bes-2 b-1 |
+       \translator Staff=treble \stemdown
+       r16 [b'-3 a-1 g-2] [f8. f16-2] e2 ~ |
+       %5
+       e2 ~ e4 ~ [e16 e-2 f! d-1] |
+       s4 [e32 d e8.~] e4 d4 ~ |
+       d4. [cis16-2 d-1] cis4 d-1 ~ |
+       d8 r r16 [e-2 f d] r16 [e-2 f d] r [d-1 e-3 cis] |
+       r16 [e-3 d-1 c!-2] [bes! d8.] s4 r16\> [bes'-2 a-2 \!g-1] |
+       %10
+       fis1-2
+}
+
+three = \melodic\relative c{
+       \stemup
+       f2-1( e-2 |
+       \stemboth
+       [)d16 d'( c bes] [a-4 bes-2 f-5 g-4] 
+       [a8.-\mordent bes16-2]
+       [g8.-\prall-4 f16-5] |
+       )f2-5 g4-4 gis |
+       a2-2 ~ [a16 a-1( g f] [e-4 f-2 c-5 d] |
+       %5
+       [e8.-\mordent f16] [d8.-\prall-4 c16-5] \stemboth )c4.-5 d8-4 |
+       \stemdown
+       e4 ~ [e16 f-2( e-3 d-4] [cis a b cis-3] [d-4 e-3 f-2 d-4] |
+       \property Voice . textstyle =  "finger"
+       )bes!2-"5\\_4" a ~ |
+       a a |
+       d, cis'-5 |
+       %10
+       a'1-2
+       \bar "|.";
+}
+
+four = \melodic\relative c{
+       \stemdown 
+       d2-3 cis-4 |
+       \skip 1*3; |
+       %5
+       \translator Staff=treble \stemup \property Voice.hshift = 1 
+       a'4 gis-2 ~ [gis16 gis-3 fis e]
+       \skip 4*1;
+       \translator Staff=bass \stemdown \property Voice.hshift = 0 
+       \stemup
+       b2-1 a-1 |
+       g a4. [gis16 a] |
+       gis2 <[g8 cis,> <f-3 d-1]> e4-2 |
+       d4. [fis16-3 g-2] r16 bes8.-1 ~ bes4 |
+       %10
+       \stemdown
+       d,1-5
+}
+
+global = \melodic{
+       \time 4/4;
+       \key F;
+}
+
+
+treble_staff = \type Staff = treble <
+       \global
+       \one
+       \two
+>
+
+bass_staff = \type Staff = bass <
+% bass = Staff <
+       \clef "bass";
+       \global
+       \three
+       \four
+>
+
+grand_staff = \type GrandStaff <
+       \treble_staff
+       \bass_staff
+>
+
+a4 = \paper{
+       linewidth = 193.\mm;
+}
+
+\score{
+        % Allegretto
+       \grand_staff
+       \paper{ \a4 }
+       \midi{ \tempo 4 = 40; }
+}
+
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes-paper.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes-paper.ly
new file mode 100644 (file)
index 0000000..3a9a679
--- /dev/null
@@ -0,0 +1,9 @@
+\paper{
+%      linewidth= 193.\mm;
+       linewidth= 180.\mm;
+       gourlay_maxmeasures = 10.0;
+%      arithmetic_basicspace = 3.;
+%      arithmetic_multiplier = 6.\pt;
+       % for simple testing only!
+%      castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
+}
diff --git a/mutopia/J.S.Bach/Petites-Preludes/preludes.ly b/mutopia/J.S.Bach/Petites-Preludes/preludes.ly
new file mode 100644 (file)
index 0000000..6fd6068
--- /dev/null
@@ -0,0 +1,18 @@
+\header{
+filename =      "preludes.ly";
+% mmm
+title =         "DOUZE PETITES PR\\'ELUDES";
+% urg subtitle = "Clavierb\\"uchlein";
+subtitle = "Clavierbuechlein";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "jcn";
+copyright =     "public domain";
+}
+
+\include "preludes-1.ly"
+\include "preludes-2.ly"
+% urg, still broken
+% \include "preludes-3.ly"
+\include "preludes-4.ly"
+\include "preludes-5.ly"
+\include "preludes-6.ly"
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/Makefile b/mutopia/J.S.Bach/Solo-Cello-Suites/Makefile
new file mode 100644 (file)
index 0000000..5f925d1
--- /dev/null
@@ -0,0 +1,12 @@
+# mutopia/J.S.Bach/Solo-Cello-Suites/Makefile
+
+depth = ../../..
+
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
+
+EXTRA_DIST_FILES=
+
+examples=scsii-cello
+
+include $(stepdir)/WWW.make
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-alto.ly
new file mode 100644 (file)
index 0000000..e8fbc3b
--- /dev/null
@@ -0,0 +1,49 @@
+\header{
+filename =      "allemande-alto.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Allemande";
+% opus =        "BWV 1008";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "allemande-urtext.ly";
+
+allemande_alto_global = \melodic{
+       \time 4/4;
+       \key f;
+       \partial 16;
+       \clef alto;
+       \skip 1*11;
+       s2. s8.
+       \bar ":|:";
+       \skip 1*11;
+       s2. s4 s8
+       \bar ":|";
+}
+
+allemande_alto_scripts = \melodic{
+}
+
+allemande_alto_staff = \type Staff <
+       \melodic \transpose c'' \$allemande
+       \$allemande_alto_global
+       \$allemande_alto_scripts
+>
+
+\score{
+       \$allemande_alto_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 45; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-cello.ly
new file mode 100644 (file)
index 0000000..1144804
--- /dev/null
@@ -0,0 +1,49 @@
+\header{
+filename =      "allemande-cello.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Allemande";
+% opus =        "BWV 1008";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "allemande-urtext.ly";
+
+allemande_cello_global = \melodic{
+       \time 4/4;
+       \key f;
+       \partial 16;
+       \clef bass;
+       \skip 1*11;
+       s2. s8.
+       \bar ":|:";
+       \skip 1*11;
+       s2. s4 s8
+       \bar ":|";
+}
+
+allemande_cello_scripts = \melodic{
+}
+
+allemande_cello_staff = \type Staff <
+       \$allemande
+       \$allemande_cello_global
+       \$allemande_cello_scripts
+>
+
+\score{
+       \$allemande_cello_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 45; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/allemande-urtext.ly
new file mode 100644 (file)
index 0000000..0b9c0fb
--- /dev/null
@@ -0,0 +1,100 @@
+% allemande-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% (who is going to make a -violin.ly?)
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
+%}
+
+n = { \slurnormal }
+d = { \slurdotted }
+comma = "\\sethuge\\ \\ ,";
+
+allemande_a = \melodic \relative c {
+       \voiceone a'16 | 
+       [a8 bes16()a] \onevoice
+       [g()f e()d][d()cis d()e][a,8 \d bes16()g] |
+       [f( a )d f,] [e8 cis']\voiceone[d8. e16]\onevoice[f g a bes!] |
+       %3
+       \voiceone[c8 \n d16()es]\onevoice[d()c bes()a][c()bes a()g][d'8. f,16] |
+       [e( g )bes d][c()bes a()g]\n[bes()a g()f]
+       <[f8. a> <f16 a]> |
+       % urg fix
+       [b \n f( e )d][e \d cis'( d )cis]\voiceone[d8.( )e16]\onevoice
+       \n[f( e d)e] |
+       %6
+       [d( c b )c][b( a gis)a][gis8-\prall fis16()e][e' c( a )g] |
+       \voiceone [e' a, f d] [d f d b]\onevoice
+       [gis( b e )gis] \d [b( d c )b] |
+       %8
+       \n[c( a f )e][d( f e )d][gis8.-\trill()a16]\d[b d e,()d] |
+       % urg
+       [c( e a)d]\voiceone [b8.-\trill a16] a8 s4 s8 \onevoice |
+       %10
+       [d,!16 gis( a b a gis fis )e] \voiceone [e8 f16()e]\onevoice
+       [d()c b()a] |
+       \voiceone[d8 e16()f]\onevoice\d[e()d c()b]
+       \voiceone[d'16()b c()a] \onevoice [e8 gis] |
+       [a,8. cis16][e g!( f! )e][f( a )d gis,] a8.
+       %13
+       e16 \voiceone [e8. f16] \onevoice
+       \n[g!()e f()a]\n[cis,( d )e bes][a8.-\trill()g16] |
+       [f a'(f)d][g \n b,()cis a'][g(f e)d][fis d()es c(] |
+       %15
+       [)bes g'(a, )g][fis a d c'][bes(fis)g bes][d()a bes()g] |
+       [es(d)es g][c()a bes()g]\d[d(c)d g]\n[bes()fis g()es] |
+       %17
+       \n[c(bes)c bes'][a(c)es g,]\voiceone[fis8-\trill\d g16()a]\onevoice
+       [d,8 es16()c] |
+       [bes(d )g bes,][d,8 fis']\voiceone[g8. a16]\onevoice[bes d g, f] |
+       %19
+       \voiceone[e8.-\trill()f16]\onevoice [g()e c()bes]
+       \n[a()f' g,()f][e g'( a )bes] |
+       % :-(
+       % [bes( a g )f^\comma]
+       [bes( a g )f^"\\sethuge{\\ \\ '}"]
+       [a()e f()d][bes d(f)a][d()a bes()g] |
+       %21
+       [a,(\n)g'(\n cis())d][e()g, a()e][f()d bes()d]\d[gis, f'(e)d] |
+       % \n[d( cis b )a^\comma][c(a)fis d'][c a( b )d]
+       \n[d( cis b )a^"\\sethuge\\ \\ ,"]
+       [c(a)fis d'][c a( b )d]
+       [f!(d )gis, d'] |
+       %23
+       [cis(e g!)bes][e()a, bes()g][f()cis d()gis,][a8 cis!] |
+       % knee
+       \stemup [d,16 \stemboth d''(c!)a][bes!(g)e cis'][d a f d] d,8.
+}
+
+allemande_b = \melodic \relative c {
+       \voicetwo
+       s16 |
+       % <d'8 g' f'> s8 s2. |
+       <f8 g, d> s8 s2. |
+       s2 <a,8. d,> s16 s4 |
+       <fis'8 a, d,> s8 s2. |
+       s1 | 
+       %5
+       s2 d8. s16 s4 |
+       s1 |
+       f!16 s16*3 b, s16*3 s2 |
+       s1 |
+       s4 e [dis8 ~ dis32 e( fis gis][a b c d! c b c )a] |
+       %10
+       s2 <a8 c,> s8 s4 |
+       <b8 gis,> s8 s4 <e,8 a,> s8 s4 |
+       s1 |
+       <cis'8 g,> s8 s2. |
+       %15
+       s1*3 |
+       s2 c,8 s8 s4 |
+       s2 g8. s16 s4 |
+       bes8. 
+}
+
+allemande = \type Staff \melodic<
+       \$allemande_a
+       \$allemande_b
+>
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-alto.ly
new file mode 100644 (file)
index 0000000..8e7f097
--- /dev/null
@@ -0,0 +1,49 @@
+\header{
+filename =      "courante-alto.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Courante";
+% opus =        "BWV 1008";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "courante-urtext.ly";
+
+courante_alto_global = \melodic{
+       \time 3/4;
+       \key f;
+       \partial 16;
+       \clef alto;
+       \skip 2.*15;
+       s2 s8.
+       \bar ":|:";
+       \skip 2.*15;
+       s2 s8.
+       \bar ":|";
+}
+
+courante_alto_scripts = \melodic{
+}
+
+courante_alto_staff = \type Staff <
+       \melodic \transpose c' \$courante
+       \$courante_alto_global
+       \$courante_alto_scripts
+>
+
+\score{
+       \$courante_alto_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 55; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-cello.ly
new file mode 100644 (file)
index 0000000..5909c0b
--- /dev/null
@@ -0,0 +1,49 @@
+\header{
+filename =      "courante-cello.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Courante";
+% opus =        "BWV 1008";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "courante-urtext.ly";
+
+courante_cello_global = \melodic{
+       \time 3/4;
+       \key f;
+       \partial 16;
+       \clef bass;
+       \skip 2.*15;
+       s2 s8.
+       \bar ":|:";
+       \skip 2.*15;
+       s2 s8.
+       \bar ":|";
+}
+
+courante_cello_scripts = \melodic{
+}
+
+courante_cello_staff = \type Staff <
+       \$courante
+       \$courante_cello_global
+       \$courante_cello_scripts
+>
+
+\score{
+       \$courante_cello_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 55; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/courante-urtext.ly
new file mode 100644 (file)
index 0000000..c04de2d
--- /dev/null
@@ -0,0 +1,85 @@
+% courante-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% (who is going to make a -violin.ly?)
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
+%}
+
+n = { \slurnormal }
+d = { \slurdotted }
+
+courante_a = \melodic \relative c {
+       d'16 |
+       [d a f a] [d, f g a]\d[bes()a bes()g] |
+       \voiceone <g4 a> s4 \onevoice \d[g16()f g()e] |
+       % urg, a good case for mean-distance-beam-dir-algorithm!
+       [f()d e()c!]\n[bes(a)bes a'][g f e d] |
+       %4
+       % [cis e \n a,(\d(b][[cis d e f][)g )bes-- a e] |
+       [cis e \n a,(b][[cis d e f][)g bes-- a e] |
+       % [f a \n d,(\d( e][f g a bes][)c )bes-- d c] |
+       [f a \n d,( e][f g a bes][)c bes-- d c] |
+       \n\voiceone <c4~ f,> <[c16 f,> bes a g] \onevoice [f()es d()es] |
+       %7
+       [d bes(a)bes][d bes e! bes][f' bes, g' bes,] |
+       \d[e,( g )c d][e f g a][bes()a bes()g]|
+       \n[a f(e)f][a f bes f][c' f, d' f,] |
+       %10
+       [cis( e )a b][cis d e f][g()f g()e] |
+       [d,( a' )f' e]\n[d()c d()c][b()a b()a] |
+       \n[gis( a )b e,]\n[f()e f()d][e()c d()b] |
+       %13
+       \n[c a'( b c][b a gis)a][d, a' e a] |
+       [f a( b c][b a gis)a][f a e a] |
+       [dis, a'( b c][b a gis)a][e a e gis] |
+       [a e cis e][a, cis e gis] a8. e'16 |
+       %17
+       [e cis a cis][e, f g a][bes()g cis()g] |
+       \voiceone d'4 ~ [d16 a d e][f d a c!]\onevoice |
+       \n[b16 f(d)f]\d[g, d'(f)g][b f d' f,] |
+       %20
+       [e g c,(d][e f g a][)bes! d c g] |
+       \voiceone a s16*3 s4 s4
+       d, ~ [d16 e! f g] \onevoice [a bes c d] |
+       %23
+       [e, bes(a)g][a f' \n g,()f]\d[c()g' f' e] |
+       [f a( bes a][g f e )f][g e f d]|
+       [cis g' b, g'][a, g' b, g'][cis, g' a, g']|
+       %26
+       [f d f a][d a d e][f a, f d]|
+       [g, d'(g)a][bes g' a, f'][g, e' f, d']|
+       \n[cis(d)e cis][a cis bes cis][a cis g cis]|
+       %29
+       \n[f, d'(e f][e d cis)d][g, d' a d]|
+       \d[bes d(e f][e d cis)d][bes d a d]|
+       [gis, d'(e f][e d cis)d][a d a cis]|
+       [d a f a][d, f a, d]
+       d,8.
+}
+
+courante_b = \melodic \relative c {
+       \voicetwo
+       \stemdown
+       s16 |
+       s2. |
+       %2
+       \n cis4 ~ [cis16 d e f] s4 |
+       s2.*3 |
+       %6
+       { a,4 s2 }
+       s2.*11
+       %18
+       f'4 s s |
+       s2.*2
+       %21
+       [f16 c'(bes a][g f es d] [)es c' f, es] |
+       bes4 s s
+}
+
+courante =  \type Staff \melodic<
+ \$courante_a
+ \$courante_b
+>
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-alto.ly
new file mode 100644 (file)
index 0000000..784dea6
--- /dev/null
@@ -0,0 +1,50 @@
+\header{
+filename =      "gigue-cello.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Pr\\'elude";          % duh
+% opus =        "BWV 1008";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "gigue-urtext.ly";
+
+gigue_cello_global = \melodic{
+       \time 3/8;
+       \key f;
+       \clef bass;
+       \partial 8
+       \skip 4.*31;
+       s4
+       \bar ":|:";
+       \skip 4.*44;
+       s4
+       \bar ":|";
+}
+
+gigue_cello_scripts = \melodic{
+}
+
+gigue_cello_staff = \type Staff <
+       \melodic \transpose c' \$gigue
+       \$gigue_cello_global
+       \$gigue_cello_scripts
+>
+
+\score{
+       \$gigue_cello_staff
+       \include "scs-paper.ly";
+%broken
+       \midi{ \tempo 4 = 60; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-cello.ly
new file mode 100644 (file)
index 0000000..70c72a3
--- /dev/null
@@ -0,0 +1,49 @@
+\header{
+filename =      "gigue-cello.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Pr\\'elude";          % duh
+% opus =        "BWV 1008";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "gigue-urtext.ly";
+
+gigue_cello_global = \melodic{
+       \time 3/8;
+       \key f;
+       \clef bass;
+       \partial 8;
+       \skip 4.*31;
+       s4
+       \bar ":|:";
+       \skip 4.*44;
+       s4
+       \bar ":|";
+}
+
+gigue_cello_scripts = \melodic{
+}
+
+gigue_cello_staff = \type Staff <
+       \$gigue
+       \$gigue_cello_global
+       \$gigue_cello_scripts
+>
+
+\score{
+       \$gigue_cello_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 60; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/gigue-urtext.ly
new file mode 100644 (file)
index 0000000..100156c
--- /dev/null
@@ -0,0 +1,145 @@
+% gigue-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% (who is going to make a -violin.ly?)
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
+%}
+
+n = { \slurnormal }
+d = { \slurdotted }
+
+%
+% this must be redone a bit:
+% 
+% * slurs/ties in two different threads (like beams): urtext, and additionals
+% 
+
+% urg, Thread is gone, try Voice
+% gigue_notes = \type Thread = gigue \melodic \relative c {
+
+gigue_notes = \type Voice = gigue \melodic \relative c {
+       a'8 |
+       d,4 bes'8 | cis,4 g'8 | f16 e f g a8 |
+       d,4 d'8 | e,16(f)g8 bes | c,16(d)e8 c' | a16 g a bes c a |
+       %8
+       f4-\trill a8 | b,()g' cis, | d f16( c bes )a | g8()es' a, |
+       bes d16( a g )f | e!8()cis' bes' a g16( f e)d |
+       %15
+       %\voiceone e(f g e f)d \onevoice e8()a,\comma c''! |
+       \voiceone e(f g e f)d \onevoice e8()a,^"\\sethuge{\\ \\ '}" c'! |
+       \voiceone c16(d es c d)a bes8 r bes |
+       bes16(c d bes c)g a8 r a |
+       %21
+       b16()c d()b c()a | d()e f()d e()c | b()c d()b c()a | e'4 gis,8 |
+       a16()b c()a d()b  |
+       a()b c()a d()b |
+       %27
+       a()b c()a d()b |
+       a()b c()a d()b |
+       f'8 e16()d c()b \onevoice | 
+       e,, e''(d)c b()gis | a f(e)d e()cis | a4
+       %33
+       c'!8 |
+       f,4 d'8 | e,4 bes'8 | a16 g a bes c8 | f,4 a8 |
+       d,16(e)f d(c)b | g' a g f e d | 
+       %39
+       e(d)e f(g)e | c4 e8 | fis16(g)a c, bes a | 
+       bes(d)g bes, a g | fis(a)c es d c | bes(a)bes d g bes |
+       %45
+       as(g)as fis g es' | d,8 g fis | g16 es(d)c d()bes | g4 bes'8
+       % what about this?
+       \voiceone\stemdown e,!16(f)g e f d\onevoice
+       c(d e) c d bes | a(bes)c a bes g | f4 a'8
+       % what about this?
+       \voiceone\stemdown d,16(e)f d e c\onevoice bes(c)d bes c a 
+       g16(a)bes g a f | e4 g'8 
+       %57
+       a,16(b cis d)e g-. | f(g a cis )d f, | e(f g a)bes d,-. |
+       cis(d)e a, bes g 
+       \voiceone
+       d'()e f()d g()e |
+       %62
+       d()e f()d g()e |
+       d()e f()d g()e |
+       d()e f()d g()e |
+       \onevoice
+       cis bes'(a g f)e | f, a' g f e cis |
+       %67
+       d bes a g a f | d a' d e f d | 
+       \voiceone es()f g()es f()d | g()a bes()g a()f es()f g()es f()d |
+       %72
+       cis'4 \onevoice d16()c | bes(a g f e)d | cis(b a g f)e | d f a d f a |
+       d4
+}
+
+gigue_b = \melodic \relative c {
+       \voicetwo 
+       s8
+       s4.*14
+       a4. | s d | [d8 g, d'] | e4. | [f8 f, f'] |
+       %21
+       [d d d] [d d d] [d d d] |
+       % one could type r here...
+       d4 s8 | <e c> s s | d s s | e s s | f s s | gis s4 |
+       s4. s s4 
+       %33
+       s8
+       s4.*16
+       \stemup bes4 s8
+       s4. s s 
+       a8 s4 \stemdown
+       s4.*7
+       <a,8 f> s s g s s a s s bes s s
+       s4.*4
+       [g8 g g] [g g g] [g g g] 
+       %72
+       <g4 e'>
+}
+
+gb = \melodic { [s16 s s s s s] }
+
+% urg, Thread is gone, try Voice
+% gigue_beams = \type Thread = gigue \melodic{
+gigue_beams = \type Voice = gigue \melodic{
+       s8 |
+       s4. s4. \gb 
+       s4. \gb \gb \gb 
+       %8
+       s4. 
+       \gb \gb \gb \gb \gb
+       %14
+       \gb \gb \gb \gb s4.
+       %19
+       \gb s4. \gb \gb \gb
+       %24
+       s4.
+       \gb \gb \gb \gb \gb \gb \gb
+       s4 s8 
+       %33
+       s4. s4.
+       \gb s4. \gb \gb 
+       %39
+       \gb s4.
+       \gb \gb \gb \gb \gb \gb \gb
+       %48
+       s4. \gb \gb \gb 
+       s4. \gb \gb \gb s4.
+       \gb \gb \gb \gb \gb
+       \gb \gb \gb \gb \gb
+       \gb \gb \gb \gb \gb
+       s4 [s16 s]
+       \gb \gb \gb 
+}
+
+gigue_a = \type Voice \melodic<
+       \$gigue_notes
+       \$gigue_beams
+>
+
+gigue = \melodic<
+       \$gigue_a
+       \$gigue_b
+>
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-alto.ly
new file mode 100644 (file)
index 0000000..96ed306
--- /dev/null
@@ -0,0 +1,95 @@
+\header{
+filename =      "menuetto-alto.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Menuetto I";
+description =   "Transcribed for Alto";
+source =        "?";
+% opus =        "BWV 1008 no. 5";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "menuetto-urtext.ly";
+
+menuetto_i_alto_global = \melodic{
+       \time 3/4;
+       \key f;
+       \clef alto;
+       \skip 2.*8;
+       \bar ":|:";
+       \clef violin;
+       \skip 2.*1;
+       \slurdotted
+       \skip 2.*3;
+       \clef alto;
+       \skip 2.*11;
+       s2._"Fine"
+       \bar ":|";
+}
+
+menuetto_i_alto_scripts = \melodic{
+       s2.
+       s8^"~"^1_2_4 s8*5
+       s2.*5
+       s4 s-\upbow s-\downbow
+       s2.-\upbow
+       s2.*5
+       s2 s4-\upbow
+       s4-\downbow s2
+       s2.*1
+       s2^0 s4
+       s2.*1
+       s4-\downbow s4-\upbow
+}
+
+menuetto_i_alto_staff = \type Staff <
+       \melodic \transpose c' \$menuetto_i
+       \$menuetto_i_alto_global
+%      \$menuetto_i_alto_scripts
+>
+
+\score{
+       \$menuetto_i_alto_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 110; }
+}
+
+menuetto_ii_alto_global = \melodic{
+       \time 3/4;
+       \key D;
+       \clef alto;
+       \skip 2.*8;
+       \bar ":|:";
+       \skip 2.*1;
+       \slurdotted
+       \skip 2.*14;
+       s2._"Menuetto I da Capo"
+       \bar ":|";
+}
+
+menuetto_ii_alto_staff = \type Staff <
+       \melodic \transpose c' \$menuetto_ii
+       \$menuetto_ii_alto_global
+%      \$menuetto_ii_alto_scripts
+>
+
+\header{
+piece = "Menuetto II";
+opus =  "";
+}
+\score{
+       \$menuetto_ii_alto_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 130; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-cello.ly
new file mode 100644 (file)
index 0000000..5d5f9c4
--- /dev/null
@@ -0,0 +1,96 @@
+\header{
+filename =      "menuetto-cello.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Menuetto I";
+source =        "?";
+% opus =        "BWV 1008 no. 5";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "menuetto-urtext.ly";
+
+menuetto_i_cello_global = \melodic{
+       \time 3/4;
+       \key f;
+       \clef bass;
+       \skip 2.*8;
+       \bar ":|:";
+       \skip 2.*1;
+       \slurdotted
+       \skip 2.*14;
+       s2._"Fine"
+       \bar ":|";
+}
+
+menuetto_i_cello_scripts = \melodic{
+       s2.
+       s8^"~"^1_2_4 s8 s4 s^4
+       s4^0_1 s_4 s
+       s2.*5
+       s2^3 s4
+       s4 s8_1 s s4
+       s2.
+       s2 s8^4 s
+       s2.
+       s8 s^2 s^4
+       s_2 s s s_0 s_4 s_1
+       s2.*2
+       s4^3_1
+       s^1_3 s4
+       s2.
+       s4_2 s2
+       s8^2_3 s s s^1 s4^1
+}
+
+menuetto_i_cello_staff = \type Staff <
+       \$menuetto_i
+       \$menuetto_i_cello_global
+%      \$menuetto_i_cello_scripts
+>
+
+\score{
+       \$menuetto_i_cello_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 110; }
+}
+
+menuetto_ii_cello_global = \melodic{
+       \time 3/4;
+       \key D;
+       \clef bass;
+       \skip 2.*8;
+       \bar ":|:";
+       \skip 2.*1;
+       \slurdotted
+       \skip 2.*14;
+       s2._"Menuetto I da Capo"
+       \bar ":|";
+}
+
+menuetto_ii_cello_staff = \type Staff <
+       \$menuetto_ii
+       \$menuetto_ii_cello_global
+%      \$menuetto_ii_cello_scripts
+>
+
+\header{
+piece = "Menuetto II";
+opus =  "";
+}
+\score{
+       \$menuetto_ii_cello_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 130; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/menuetto-urtext.ly
new file mode 100644 (file)
index 0000000..67e2f44
--- /dev/null
@@ -0,0 +1,151 @@
+% menuetto-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% (who is going to make a -violin.ly?)
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
+%}
+
+menuetto_i_a = \melodic \relative c {
+       <d2\f f a> bes'4  |
+       [bes8 a bes g] a4 |
+       <d,4 bes> g [f8 e] |
+       [f8( e )d cis b a] |
+       <d2 f a> bes'!4 |
+       [bes8 a bes g] c!4 | 
+       %7
+       <a f> <d f, bes,> <e g, g,> |
+       <cis2. e, a,> |
+       <a2\f e'> [d8( e16 )f] |
+       \slurdotted
+       [e8( d cis )e a,()g] |
+       a4 ~ d cis |
+       [g'8( f e )f d() c] |
+       %13
+       bes2 c4 |
+       [a8 g a f] <d'4 e, bes> |
+       <c f, a,> [bes8 a g a] |
+       [f8( e )f a g bes] |
+       <a2^\trill fis> bes4 |
+       [c8 bes c a] fis4^\trill |
+       %19
+% dispute
+%      <bes,4 g' d'> <c, g' c> <[d,8 bes'(> )a] |
+       <d'4 g, bes,> <c g c,> [bes8()a] |
+       [c8( bes a )bes g()bes] |
+       d4 ~ cis d |
+       [g,8 f g e] f4 |
+       [g,8 g'] <{e4.^\trill ~ d8 } a4.> |
+       <d2. a d,> |
+}
+
+menuetto_i_b = \melodic \relative c {
+       \slurdotted
+       \skip 2.*1; |
+       <e8 c> \skip 8*5; |
+       \skip 2.*1; |
+       a,8 \skip 8*5; |
+       \skip 2.*1; |
+       e'8 \skip 8*5; |
+       \onevoice
+       \skip 2.*3; |
+       g8 \skip 8*5; |
+       f2 e4
+       d8 \skip 8*5; |
+       g4 ~ f e
+       f8 \skip 8*5; |
+       \skip 2.*3; |
+       es8 \skip 8*3; d4 |
+       \skip 4*2; d4 |
+       <d8 g,> \skip 8*5; |
+% dispute
+%      g2 f4 |
+       g4 \skip 4*1; f4 |
+       cis8 \skip 8*3; d4 |
+}
+
+% UGH, fix this like in sarabande
+menuetto_i_a_voice_urg = \melodic{
+       \skip 2.*1; \voiceone
+       \skip 2.*1; \onevoice
+       \skip 2.*1; \voiceone
+       \skip 2.*1; \onevoice
+       \skip 2.*1; \voiceone
+       \skip 2.*1; \onevoice
+       \skip 2.*3; \voiceone
+       \skip 2.*1; \voiceone
+       \skip 2.*3;
+       \skip 4*2; \onevoice
+       \skip 4*2; \voiceone
+       \skip2.*1; \voiceone
+       \skip 4*2; \onevoice
+       \skip2.*1; \voiceone
+       \skip 2.*1; \onevoice
+       \skip 2*1; \voiceone
+       \skip 4*1;
+       \skip 2.*4; \onevoice
+       \skip 2.*1;
+%      \bar "|.";
+}
+
+menuetto_i_a_voice_urg_urg = \melodic<
+       \$menuetto_i_a_voice_urg
+       \$menuetto_i_a
+>
+
+menuetto_i_b_voice_urg = \melodic{
+       \voicetwo
+       % urg urg, huh?
+       \skip 2.*8; \voicetwo
+}
+
+menuetto_i_b_voice_urg_urg = \melodic<
+       \$menuetto_i_b_voice_urg
+       \$menuetto_i_b
+>
+
+menuetto_i = \type Staff \melodic<
+       { \$menuetto_i_a_voice_urg_urg }
+       { \$menuetto_i_b_voice_urg_urg }
+>
+
+menuetto_ii = \melodic \relative c {
+       \slurdotted
+       fis4^\trill [d8( e fis )g] |
+       a4 fis, a' |
+       [g,8()b] e4 g |
+       \slurnormal
+       [d8( cis )b cis a g] |
+       % ugh, forcing knee
+       % Lily's not yet smart enough to decide for herself.
+       \stemup [fis \stemboth d''( cis b a )g] |
+       [b( a g fis e )d] |
+       %7
+       [cis d] g4 [fis8( g16 )a] |
+       <\stemdown a,2. \stemup e'> |
+       \stemboth
+       cis4^\prall [e8( d cis )b] |
+       cis4 g, cis' |
+       [fis,8()a] d4 fis |
+       [b,8()a g()fis \slurdotted g()b] |
+       \slurnormal
+       %13
+       [e, d'( cis )b cis()ais] |
+       % check slur! [d, b' a! g fis )e] |
+       [d,( b' a! g fis )e] |
+       [g( fis e d cis )d] |
+       [b( cis d e fis )g] |
+       [a( g fis g a )b] |
+       c4 dis,, c'' |
+       %19
+       [b8()a c( b a )g] |
+       [fis() g a()fis g()e] |
+       \slurdotted
+       cis4^\trill [a8( b cis )d] |
+       \slurnormal
+       [e( fis g )b] a4 |
+       [g8()fis e()d e()cis] |
+       d2.
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-alto.ly
new file mode 100644 (file)
index 0000000..2219165
--- /dev/null
@@ -0,0 +1,44 @@
+\header{
+filename =      "prelude-alto.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Pr\\'elude";          % duh
+opus =  "BWV 1008";
+% opus =        "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "prelude-urtext.ly";
+
+prelude_alto_global = \melodic{
+       \time 3/4;
+       \key f;
+       \clef alto;
+       \skip 2.*63;
+       \bar "|.";
+}
+
+prelude_alto_scripts = \melodic{
+}
+
+prelude_alto_staff = \type Staff <
+       \melodic \transpose c' \$prelude
+       \$prelude_alto_global
+       \$prelude_alto_scripts
+>
+
+\score{
+       \$prelude_alto_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 40; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-cello.ly
new file mode 100644 (file)
index 0000000..d872e5c
--- /dev/null
@@ -0,0 +1,44 @@
+\header{
+filename =      "prelude-cello.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Pr\\'elude";          % duh
+opus =  "BWV 1008";
+% opus =        "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "prelude-urtext.ly";
+
+prelude_cello_global = \melodic{
+       \time 3/4;
+       \key f;
+       \clef bass;
+       \skip 2.*63;
+       \bar "|.";
+}
+
+prelude_cello_scripts = \melodic{
+}
+
+prelude_cello_staff = \type Staff <
+       \$prelude
+       \$prelude_cello_global
+       \$prelude_cello_scripts
+>
+
+\score{
+       \$prelude_cello_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 40; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/prelude-urtext.ly
new file mode 100644 (file)
index 0000000..f93032b
--- /dev/null
@@ -0,0 +1,365 @@
+% prelude-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% who is going to make a -violin.ly? 
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet see alto_scripts .
+%}
+
+% urg, Thread is gone, try Voice
+% prelude_notes = \type Thread = prelude \melodic \relative c {
+prelude_notes = \type Voice = prelude \melodic \relative c {
+       d8 f a4 ~ a16 f e d |
+       cis e g a bes4 ~ bes16 a g f |
+       e g bes cis e8. bes16 a16 g f e |
+       f g a f d8 c! bes a |
+       %5
+       bes16 d f a d8. c16 bes a g f |
+       e g bes d c a bes g f e g bes, |
+       a c e g c8. bes16 a g f e |
+       d f a c bes g a f e f a f |
+       %9
+       g, bes d f bes8. a16 g f e g |
+       a, c e g c a e g f a d, es |
+       d a bes d g bes a c bes g d' f, |
+       %12
+       e b c e g d e c bes g e' bes |
+       f8 a c4 ~ c16 bes a g |
+       fis a bes c d, c' bes a fis' es d c |
+       bes a g bes d4 ~ d16 c bes a |
+       %16
+       gis b c d e, d' c b gis' f e d |
+       c b a c f e f gis a f d c |
+       b d gis b d8. c16 b a gis a |
+       %19
+       c, e a c e8. c16 b a gis a |
+       d, f a d f8. e16 d c b d |
+       e, d' c b a c b a d, b' a gis |
+       %22
+       c, a' g! f cis g' f e d f e d |
+       gis, d' e f b f e d gis, d' c b |
+       a b c e a b c a e c a g! |
+       % 25
+       % B"arenreiter and Chester say "c bes c"
+       fis a c d es8. d16 c bes c a' |
+       bes, a bes d g, es' f g a, g' f es |
+       d c d f bes, g' a bes cis, bes' a g |
+       % 28
+       f e f a d, bes' c! d e,! d' c bes |
+       a g a c f, d' e f g, f' e d |
+       cis g f e a, e' f g cis bes! a g |
+       %31
+       f g a cis d a g f a f e d |
+       gis d e f a, f' e d gis f! e d |
+       cis b cis e a e cis e a, g'! f e |
+       %34
+       f e f a d a f a d, c'! bes a |
+       g f g cis e cis g cis a, g' f e |
+       d a' d e f d a f d c'! bes a |
+       %37
+       g a bes d, es f g a bes g es' g, |
+       f g a cis, d e! f g a f d' f, |
+       e f g bes, a b cis d e bes g' bes, |
+       %40
+       cis,8 a' g'4 ~ g16 bes a g |
+       f e d e f d a' f d' a f d |
+       gis,8 f' d'4 ~ d16 f e d | 
+       cis b a b cis a d a e' a, f' a, |
+       %44
+       g' e cis e a, cis e f g f g e |
+       f d cis d a cis d e f e f d |
+       e cis b cis a b cis d e d e cis |
+       %47
+       d b a b f gis b cis d cis d b |
+       \voiceone <cis4^\fermata e,> \onevoice r r |
+       bes16 g fis g es g d g es g bes d, |
+       cis-- e! g a bes8. a16 g fis g e' |
+       %51
+       f,! d' bes g a f e g f d cis e |
+       d bes a g fis-- a c! es d c bes a |
+       bes g fis g es g d g es g bes d, |
+       %54
+       \voiceone g'8. f16 
+       e!16 d cis b a g f e \onevoice |
+       d-- a' d e f e d c! bes! a g f |
+       e-- a cis e g f e d cis b a g |
+       f a d f a d, f a d bes! c! a |
+       g, d' g a bes g fis g es' g, d' g, |
+       \voiceone <cis2. g> | <d f,> | <d e,> | <cis e,> | <d f,>
+}
+
+prelude_b = \melodic \relative c {
+       \voicetwo 
+       s2.*47
+       %48
+       g4 s2 |
+       s2.*5
+       %54
+       <cis,4 bes'> s2 |
+       s2.*4
+       a'2. a a a <a d,>
+}
+
+% pat1 = \melodic { [s8 s]s4[s16 s s s] }
+pat1 = \melodic { [s16 s s s]s4[s16 s s s] }
+pat2 = \melodic { [s16 s s s][s8.s16][s s s s] }
+pat3 = \melodic { [s16 s s s][s8 s s s] }
+
+% of course, i just type pat1, and add the \ and the silly $ later
+% urg, Thread is gone, try Voice
+% prelude_beams = \type Thread = prelude \melodic{
+prelude_beams = \type Voice = prelude \melodic{
+       \$pat1
+       \$pat1
+       \$pat2
+       \$pat3
+       %5
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       %10
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat1
+       \$pat2
+       %15
+       \$pat1
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       %20
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       %25
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       %30
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       %35
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       %40
+       \$pat1
+       \$pat2
+       \$pat1
+       \$pat2
+       \$pat2
+       %45
+       \$pat2
+       \$pat2
+       \$pat2
+       s2.
+       \$pat2
+       %50
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+       %55
+       \$pat2
+       \$pat2
+       \$pat2
+       \$pat2
+}
+
+%{
+properties, urg!
+fig1 = \melodic{ s16( s s )s }
+fig2 = \melodic{ s16( s ) s s }
+fig3 = \melodic{ s16 s( s )s }
+fig4 = \melodic{ s16( s s s s s s )s }
+fig5 = \melodic{ s8.()s16 }
+%}
+
+fig1 = \melodic{ \slurnormal s16( s s )s }
+fig2 = \melodic{ \slurnormal s16( s ) s s }
+fig3 = \melodic{ s16 \slurnormal s( s )s }
+fig4 = \melodic{ \slurnormal s16( s s s s s s )s }
+fig5 = \melodic{ \slurnormal s8.()s16 }
+
+% of course, i just type fig1, and add the \ and the silly $ later
+% urg, Thread is gone, try Voice
+% prelude_slurs = \type Thread = prelude \melodic{
+prelude_slurs = \type Voice = prelude \melodic{
+       s4 s4 \$fig3 |
+       \$fig1 s4 \$fig3 |
+       \$fig1 s4 \$fig3 |
+       \$fig1 s8( s s )s  |
+       %5
+       \$fig3 s2 |
+       s2. |
+       s2 \$fig1 |
+       s2 \$fig1 |
+       s2 \$fig1 |
+       %10
+       \$fig3 \$fig3 \$fig1 |
+       \$fig3 \$fig3 s4 |
+       \$fig3 s2 |
+       s4 s4 \$fig3 |
+       \$fig3 \$fig3 \$fig3 |
+       %15
+       s4 s s16 s s8 |
+       \$fig3 \$fig3 s4 |
+       s2. |
+       \$fig1 s4 \$fig1 |
+       s2 \$fig1 |
+       %20
+       \$fig1 s4 \$fig1 |
+       s4 \$fig3 \$fig3 |
+       \$fig3 \$fig3 \$fig3 |
+       s2 \$fig1 |
+       s2. |
+       %25
+       \$fig3 s4 \$fig1 |
+       \$fig2 \$fig3 \$fig3 |
+       \$fig2 \$fig3 \$fig3 |
+       \$fig2 \$fig3 s4  |
+       \$fig2 \$fig3 \$fig3 |
+       %30
+       \$fig3 \$fig3 \$fig1 |
+       \$fig2 \$fig3 \$fig3 |
+       s2. |
+       s4 \$fig3 \$fig3 |
+       \$fig2 \$fig3 \$fig3 |
+       %35
+       \$fig2 s2 |
+       s2. |
+       s2. |
+       s2. |
+       s2. |
+       %40
+       s4 s4 \$fig3 |
+       \$fig1 s2 |
+       s2 \$fig3 |
+       \$fig2 s2 |
+       s2. |
+       %45
+       s2. |
+       s4 \$fig2 s4 |
+       \$fig3 \$fig2 s4 |
+       s2. |
+       \$fig3 s2 |
+       %50
+       \$fig3 s4 \$fig2 |
+       s2. |
+       s4 \$fig3 s4 |
+       s2 \$fig2 |
+%      s8()s \$fig4 |
+%      s8.()s16 \$fig4 |
+       \$fig5 \$fig4 |
+       %55
+       \$fig3 \$fig4 |
+       \$fig3 \$fig4 |
+       \$fig3 \$fig3 s4 |
+       s4 \$fig3 s4 |
+}
+
+fig1 = \melodic{ \slurdotted s16( s s )s }
+fig2 = \melodic{ \slurdotted s16( s ) s s }
+fig3 = \melodic{ s16 \slurdotted s( s )s }
+fig4 = \melodic{ \slurdotted s16( s s s s s s )s }
+fig5 = \melodic{ \slurdotted s8.()s16 }
+fig6 = \melodic{ \slurdotted s16()s \slurdotted s()s }
+
+% urg, Thread is gone, try Voice
+% prelude_suggested_slurs = \type Thread = prelude \melodic{
+prelude_suggested_slurs = \type Voice = prelude \melodic{
+       \slurdotted
+       s2. |
+       s2. |
+       s4 \$fig5 s4 |
+       s2. |
+       %5
+       s4 \$fig5 \$fig1 |
+       \$fig1 \$fig1 \$fig2 |
+       s4 \$fig5 s4 |
+       \$fig1 \$fig1 s4 |
+       \$fig2 \$fig5 s4 |
+       %10
+       s2. |
+       s2 \$fig2 |
+       s4 \$fig3 \$fig2 |
+       s2. |
+       s2. |
+       %15
+       \$fig2 s4 \$fig3 |
+       s2 \$fig3 |
+       \$fig1 \$fig1 \$fig1 |
+       s4 \$fig5 s4 |
+       \$fig1 \$fig5 s4 |
+       %20
+       s4 \$fig5 s4 |
+       \$fig3 s2 |
+       s2. |
+       \$fig3 \$fig3 s4 |
+       \$fig1 \$fig1 \$fig1 |
+       %25
+       s4 \$fig5 s4 |
+       s2. |
+       s2. |
+       s2 \$fig3 |
+       s2. |
+       %30
+       s2. |
+       s2. |
+       \$fig3 \$fig3 \$fig2 |
+       \$fig2 s2 |
+       s2. |
+       %35
+       s4 \$fig3 \$fig3 |
+       s2 \$fig3 |
+       s2. |
+       \$fig2 s2 |
+       \$fig2 s2 |
+       %40
+       s2. |
+       s2. |
+       s2. |
+       s2. |
+       % check !
+       \$fig3 \$fig2 s4 |
+       %45
+       \$fig3 \$fig2 s4 |
+       % check!
+       \$fig3 s2 |
+       s2. |
+       s2. |
+       s2 \$fig2 |
+       %50
+       \$fig1 \$fig5 s4 |
+       s4 \$fig6 \$fig6 |
+       \$fig3 \$fig1 \$fig1 |
+       \$fig3 s2 |
+}
+
+prelude_a = \type Voice \melodic<
+       \$prelude_notes
+       \$prelude_beams
+       \$prelude_slurs
+       \$prelude_suggested_slurs
+>
+
+prelude = \melodic<
+       \$prelude_a
+       \$prelude_b
+>
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-alto.ly
new file mode 100644 (file)
index 0000000..b39274e
--- /dev/null
@@ -0,0 +1,46 @@
+\header{
+filename =      "sarabande-alto.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Sarabande";
+% opus =        "BWV 1008";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "sarabande-urtext.ly";
+
+sarabande_alto_global = \melodic{
+       \time 3/4;
+       \key f;
+       \clef alto;
+       \skip 2.*12;
+       \bar ":|:";
+       \skip 2.*16;
+       \bar ":|";
+}
+
+sarabande_alto_scripts = \melodic{
+}
+
+sarabande_alto_staff = \type Staff <
+       \melodic \transpose c' \$sarabande
+       \$sarabande_alto_global
+       \$sarabande_alto_scripts
+>
+
+\score{
+       \$sarabande_alto_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 40; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-cello.ly
new file mode 100644 (file)
index 0000000..4a80027
--- /dev/null
@@ -0,0 +1,46 @@
+\header{
+filename =      "sarabande-cello.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+piece = "Sarabande";
+% opus =        "BWV 1008";
+opus =  "";
+composer =      "Johann Sebastian Bach (1685-1750)";
+enteredby =     "JCN";
+copyright =     "public domain";
+}
+
+%{
+ Tested Features:breaking algorithm, chords, multivoice, accents, 
+ dotted slurs
+%}
+
+\version "1.0.0";
+
+\include "sarabande-urtext.ly";
+
+sarabande_cello_global = \melodic{
+       \time 3/4;
+       \key f;
+       \clef bass;
+       \skip 2.*12;
+       \bar ":|:";
+       \skip 2.*16;
+       \bar ":|";
+}
+
+sarabande_cello_scripts = \melodic{
+}
+
+sarabande_cello_staff = \type Staff <
+       \$sarabande
+       \$sarabande_cello_global
+       \$sarabande_cello_scripts
+>
+
+\score{
+       \$sarabande_cello_staff
+       \include "scs-paper.ly";
+       \midi{ \tempo 4 = 40; }
+}
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/sarabande-urtext.ly
new file mode 100644 (file)
index 0000000..00db06b
--- /dev/null
@@ -0,0 +1,94 @@
+% sarabande-urtext.ly
+% belongs together with -cello.ly and -alto.ly
+% (who is going to make a -violin.ly?)
+
+%{
+Well, there are still some scripts in this "urtext".
+But merging melodic and scripts doen't work too well yet (see alto_scripts).
+%}
+
+n = { \slurnormal }
+d = { \slurdotted }
+
+%
+% ugh, the non-shortened beamstems of voice in forced direction
+% look ugly here!
+sarabande_a = \melodic \relative c {
+       \voiceone \d[d8.()e16] e4.-\trill([d16 )e] |
+       f4. \onevoice [e8(d)c] |
+       [bes g']\n[f e16(f][g a bes)d,] |
+       cis4.-\trill\d[b8(a)g] |
+       % copy bar 1, half bar 2
+       \voiceone \d[d'8.()e16] f4.-\trill([d16 )e] |
+       %5
+       f4. \onevoice [d8(e)f] |
+       \n[g bes16()a][c()bes a()g][d'8 f,] |
+       \voiceone e4.-\trill \onevoice \d[d8(c)bes] |
+       %8
+       \voiceone \n[f' g16()a] a4. [g16()f] |
+       [g8 a16()bes]bes4. [c16()d]|
+       % 11
+       \onevoice \d [e,8()f][c, g'][f'()e] |
+       f4 f,2 |
+       \voiceone a'4 \d a4.-\trill()bes8 |
+       [c bes16()a] \onevoice [fis8.-\trill()es16][d8()c] |
+       [bes g'][a, fis'][es'()d] |
+       %16
+       \voiceone bes4.-\trill \onevoice [a8(g)f!] |
+       [e bes()a f'(g)a] |
+       [d, as()g es'(f)g]|
+       [cis, bes'][a g16()f][e!8 f16()d] |
+       [cis8 e16()a][a,8. g'16]\n[f8()e] |
+       %21
+       \voiceone [d e16()f]f4. [e16()d] |
+       [e8 f16()g]g4. [a16()bes] |
+       \d[a8 cis16()d][d,8 e16(f32)g][f8-\trill \n e16()d] |
+       d4 [d,16 a'( b cis][d e f )g] |
+       %25
+       [a(b c)b] c4. [b16()a] |
+       \d[b(cis d )cis] d4. \n[e16()f] |
+       \onevoice [d(cis)d f,] [a,8 e']\d[d'()cis] |
+       d4 d,,2 |
+}
+
+sarabande_b = \melodic \relative c {
+       \voicetwo
+% dispute
+%      d4 a2 |
+%      this avoids the clash bug
+       d8. s16 a2 |
+       <a4. d,> s8*3 |
+       s2.*2
+       %5
+%disp
+%      <a4 f> a2 |
+       <a8. f> s16 a2 |
+       <a4. d,> s8*3 |
+       s2. |
+       % 8
+       <g4. c,> s8*3  |
+       a4 <bes4. d> r8 |
+       %10
+       bes4 <g2 f'> |
+       s2.*2 |
+       \d[f'8()es] es4. r8 |
+       d4 s2 |
+       %15
+       s2. |
+       <d4. g,> s8*3  |
+       s2.*4 |
+       %21
+       bes4 g2  |
+       g4 <bes4. cis,> s8 |
+       <d8 a f> r r g, a4 |
+       s2. |
+       f'4 fis4. s8 |
+       <d4 g,> gis4. s8 |
+}
+
+
+sarabande = \type Staff \melodic<
+       \$sarabande_a
+       \$sarabande_b
+>
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scs-paper.ly
new file mode 100644 (file)
index 0000000..d972223
--- /dev/null
@@ -0,0 +1,7 @@
+\paper{
+       linewidth= 180.\mm;
+       gourlay_maxmeasures = 10.0;
+       % for simple testing only!
+%      castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
+       \include "bar-numbering.ly";
+}
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-alto.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-alto.ly
new file mode 100644 (file)
index 0000000..e0ba581
--- /dev/null
@@ -0,0 +1,7 @@
+\header{
+instrument="Alto";
+}
+
+instrument="alto";
+\include "solo-cello-suite-ii.ly"
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/scsii-cello.ly
new file mode 100644 (file)
index 0000000..8434573
--- /dev/null
@@ -0,0 +1,7 @@
+\header{
+instrument="Cello";
+}
+
+instrument="cello";
+\include "solo-cello-suite-ii.ly"
+
diff --git a/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly b/mutopia/J.S.Bach/Solo-Cello-Suites/solo-cello-suite-ii.ly
new file mode 100644 (file)
index 0000000..da308e0
--- /dev/null
@@ -0,0 +1,25 @@
+\header{
+filename =      "solo-cello-suite-ii.ly";
+title =         "Solo Cello Suites";
+subtitle = "Suite II";
+opus =  "BWV 1008";
+composer =      "Johann Sebastian Bach (1685-1750)";
+}
+
+% urg
+
+% \include "prelude-" + \instrument + ".ly";
+
+i = "prelude-" + \instrument + ".ly";
+ii = "allemande-" + \instrument + ".ly";
+iii = "courante-" + \instrument + ".ly";
+iv = "sarabande-" + \instrument + ".ly";
+v = "menuetto-" + \instrument + ".ly";
+vi = "gigue-" + \instrument + ".ly";
+
+\include \i;
+\include \ii;
+\include \iii;
+\include \iv;
+\include \v;
+\include \vi;
diff --git a/mutopia/J.S.Bach/allemande-alto.ly b/mutopia/J.S.Bach/allemande-alto.ly
deleted file mode 100644 (file)
index 367ffc6..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-\header{
-filename =      "allemande-alto.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Allemande";
-% opus =        "BWV 1008";
-opus =  "";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c';
-}
-
-\include "allemande-urtext.ly";
-
-allemande_alto_global = \melodic{
-       \meter 4/4;
-       \key bes;
-       \partial 16;
-       \clef alto;
-       \skip 1*11;
-       s2. s8.
-       \bar ":|:";
-       \skip 1*11;
-       s2. s4 s8
-       \bar ":|";
-}
-
-allemande_alto_scripts = \melodic{
-}
-
-allemande_alto_staff = \type Staff <
-       \$allemande
-       \$allemande_alto_global
-       \$allemande_alto_scripts
->
-
-\score{
-       \$allemande_alto_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 40;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/allemande-cello.ly b/mutopia/J.S.Bach/allemande-cello.ly
deleted file mode 100644 (file)
index 4cbd0ed..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-\header{
-filename =      "allemande-cello.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Allemande";
-% opus =        "BWV 1008";
-opus =  "";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c;
-}
-
-\include "allemande-urtext.ly";
-
-allemande_cello_global = \melodic{
-       \meter 4/4;
-       \key bes;
-       \partial 16;
-       \clef bass;
-       \skip 1*11;
-       s2. s8.
-       \bar ":|:";
-       \skip 1*11;
-       s2. s4 s8
-       \bar ":|";
-}
-
-allemande_cello_scripts = \melodic{
-}
-
-allemande_cello_staff = \type Staff <
-       \$allemande
-       \$allemande_cello_global
-       \$allemande_cello_scripts
->
-
-\score{
-       \$allemande_cello_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 40;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/allemande-urtext.ly b/mutopia/J.S.Bach/allemande-urtext.ly
deleted file mode 100644 (file)
index 2b1631b..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-% allemande-urtext.ly
-% belongs together with -cello.ly and -alto.ly
-% (who is going to make a -violin.ly?)
-
-%{
-Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
-%}
-
-n = { \slurnormal }
-d = { \slurdotted }
-comma = "\\sethuge,";
-
-allemande_a = \melodic{
-       \voiceone a,16 | 
-       [a8 bes16()a] \onevoice
-       [g()f e()d][d()cis d()e][g,8 \d bes16()g] |
-       [f( a )d f,] [e8 cis']\voiceone[d8. e16]\onevoice[f g a bes!] |
-       %3
-       \voiceone[c8 \n d16()es]\onevoice[d()c bes()a][c()bes a()g][d'8. f,16] |
-       [e( g )bes d][c()bes a()g]\n[bes()a g()f]
-       <[f8. a> <f16 a]> |
-       % urg fix
-       [b \n f,( e )d][e \d cis'( d )cis]\voiceone[d'8.( )e16]\onevoice
-       \n[f( e d)e] |
-       %6
-       [d( c b )c][b( a gis)a][g8-\prall fis16()e][e' c( a )g] |
-       \voiceone [e' a, f d] [d f d b]\onevoice
-       [fis( b e )gis] \d [b( d c )b] |
-       %8
-       \n[c( a f )d][d( f e )d][gis'8.-\trill()a16]\d[b d e,()d] |
-       % urg
-       % check [c( e a')d']\voiceone [b8.-\trill a16] a8 \onevoice |
-       [c( e a')d']\voiceone [b8.-\trill a16] a8 s4 s8 \onevoice |
-       %10
-       [d,!16 gis'( a b a gis fis )e] \voiceone [d8 f16()e]\onevoice
-       [d()c b!()a] |
-       \voiceone[d'8 e16()f]\onevoice\d[e()d c()b]
-       \voiceone[d''16()b c()a] \onevoice [e8 gis] |
-       [a,8. cis16][e g!( f! )e][f( a )d gis,] a8.
-       %13
-       e,16 \voiceone [e8. f16] \onevoice
-       \n[g!()e fis()a]\n[cis,( d )e bes,][a8.-\trill()g16] |
-       [f a''(f)d][g' \n b,()cis a'][g(f e)d][fis d()es c(] |
-       %15
-       [)bes g'(a, )g][fis a d c'][bes(fis,)g bes][d()a bes()g] |
-       [es(d)es g][c()a bes()g]\d[d,(c)d g]\n[bes()fis, g()es] |
-       %17
-       \n[c(bes)c bes'][a(c)es g,]\voiceone[fis8-\trill\d g16()a]\onevoice
-       [d,8 es16()c] |
-       [bes(d )g bes,][d,8 fis][g8. a16][bes d g, f] |
-       %19
-       \voiceone[e'8.-\trill()f16]\onevoice [g()e c()bes]
-       \n[a()f' g,()f][e g''( a )bes] |
-       % :-(
-       % [bes( a g )f^\comma]
-       [bes( a g )f^"\\sethuge{\\ '}"]
-       [a()e, f()d][bes d(f)a][d'()a bes()g] |
-       %21
-       [a,(\n)g'(\n cis'())d][e()g, a()es,][f()d bes()d]\d[gis, f'(e)d] |
-       % \n[d( cis b )a^\comma][c(a)fis d'][c a( b )d]
-       \n[d( cis b )a^"\\sethuge\\ ,"]
-       [c(a)fis d'][c a( b )d]
-       [f!(d )gis, d'] |
-       %23
-       [cis(e g!)bes][e'()a, bes()g][f()cis, d()gis,][a8 cis!] |
-       % knee
-       \stemup [d,16 \stemboth d''(c!)a][bes!(g)e cis'][d a f d] d,8.
-       \octave c';
-}
-
-allemande_b = \melodic{
-       \voicetwo
-       s16 |
-       <d,8 g' f'> s8 s2. |
-       s2 <d,,8. a'> s16 s4 |
-       <d,8 a' fis'> s8 s2. |
-       s1 | 
-       s2 d,,8. s16 s4 |
-       s1 |
-       f''!16 s16*3 b, s16*3 s2 |
-       s1 |
-       s4 e [dis,8 ~ dis32 e( fis gis][a b c d! c b c )a] |
-       s2 <c,8 a'> s8 s4 |
-       % check <gis,,8 bes''> s8 s4 <a,,8 e'> s8. s16 |
-       <gis,,8 bes''> s8 s4 <a,,8 e'> s8 s4 |
-       s1 |
-       % check
-%      s16
-       <g,8 cis''> s8 s2. |
-       s1*3 |
-       s2 c,,8 s8 s4 |
-       s2 g,8. s16 s4 |
-       bes'8. 
-       \octave c;
-}
-
-allemande = \type Voice \melodic<
-       \$allemande_a
-       \$allemande_b
->
-
diff --git a/mutopia/J.S.Bach/courante-alto.ly b/mutopia/J.S.Bach/courante-alto.ly
deleted file mode 100644 (file)
index fbe6ba3..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-\header{
-filename =      "courante-alto.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Courante";
-% opus =        "BWV 1008";
-opus =  "";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c';
-}
-
-\include "courante-urtext.ly";
-
-courante_alto_global = \melodic{
-       \meter 3/4;
-       \key bes;
-       \partial 16;
-       \clef alto;
-       \skip 2.*15;
-       s2 s8.
-       \bar ":|:";
-       \skip 2.*15;
-       s2 s8
-       \bar ":|";
-}
-
-courante_alto_scripts = \melodic{
-}
-
-courante_alto_staff = \type Staff <
-       \$courante
-       \$courante_alto_global
-       \$courante_alto_scripts
->
-
-\score{
-       \$courante_alto_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 40;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/courante-cello.ly b/mutopia/J.S.Bach/courante-cello.ly
deleted file mode 100644 (file)
index c5711e9..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-\header{
-filename =      "courante-cello.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Courante";
-% opus =        "BWV 1008";
-opus =  "";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c;
-}
-
-\include "courante-urtext.ly";
-
-courante_cello_global = \melodic{
-       \meter 3/4;
-       \key bes;
-       \partial 16;
-       \clef bass;
-       \skip 2.*15;
-       s2 s8.
-       \bar ":|:";
-       \skip 2.*15;
-       s2 s8
-       \bar ":|";
-}
-
-courante_cello_scripts = \melodic{
-}
-
-courante_cello_staff = \type Staff <
-       \$courante
-       \$courante_cello_global
-       \$courante_cello_scripts
->
-
-\score{
-       \$courante_cello_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 40;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/courante-urtext.ly b/mutopia/J.S.Bach/courante-urtext.ly
deleted file mode 100644 (file)
index 21b6b4d..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-% courante-urtext.ly
-% belongs together with -cello.ly and -alto.ly
-% (who is going to make a -violin.ly?)
-
-%{
-Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
-%}
-
-n = { \slurnormal }
-d = { \slurdotted }
-
-% write as two voices? see allemande/sarabande
-courante = \melodic{
-       d'16 |
-       [d a f a] [d, f g a]\d[bes()a bes()g] |
-       <\voiceone g4 a {\voicetwo \n cis, ~ [cis16 d e f]}>
-       \onevoice \d[g()f g()e] |
-       [f()d e()c!]\n[bes(a)bes a'][g f e d] |
-       %4
-       % [cis e \n a,(\d(b][[cis d e f][)g )bes-- a e] |
-       [cis e \n a,(b][[cis d e f][)g bes-- a e] |
-       % [f a \n d,(\d( e][f g a bes][)c )bes-- d c] |
-       [f a \n d,( e][f g a bes][)c bes-- d c] |
-       \n<{\voicetwo <g,,4 {f'~ f16}>} {\voiceone c'4 ~ [c16 bes a g]}>
-       \onevoice [f()es d()es] |
-       %7
-       [d bes(a)bes][d bes e'! bes,][f' bes, g' bes,] |
-       \d[e,( g )c' d][e f g a][bes()a bes()g]|
-       \n[a f(e)f][a f bes f,][c' f, d' f,] |
-       %10
-       [cis,( e )a' b][cis d e f][g()f g()e] |
-       [d,,( f' )d' e]\n[d()c d()c][b()a b()a] |
-       \n[gis( a )b e,]\n[f()e f()d][e()c d()b] |
-       %13
-       \n[c a'( b c][b a gis)a][d, a' e, a'] |
-       [f a( b c][b a gis)a][f a e, a'] |
-       [dis, a'( b c][b a gis)a][e, a' e, g] |
-       [a e, cis e][a, cis e gis] a8.
-       %17
-       e'16 |
-       [e cis a cis][e, f g a][bes()g cis'()g,] |
-       <\voicetwo f4 {\voiceone d' ~ \stemdown[d16 a d e] }>
-        |
-       \n[b f,(d)f]\d[g, d'(f)g][b f, d' f,] |
-       %20
-       [e g c,(d][e f g a][)bes! d c g,] |
-       <\voiceone a {\voicetwo [f c'(bes a][g f es d]
-       [)es c' f, es]}> |
-       <\voicetwo bes,4 {\voiceone d ~ [d16 e! f g]}>
-       \onevoice
-       [a bes c d] |
-       %23
-       [e, bes,(a)g][a f' \n g,()f]\d[c,()g' f' e] |
-       [f a( bes a][g f e )f][g e f d]|
-       [cis g' b, g'][a, g' b, g'][cis, g' a, g']|
-       %26
-       [f d f a][d a, d' e][f a, f d]|
-       [g, d'(g)a][bes g' a, f'][g, e' f, d']|
-       \n[cis(d)e cis][a cis bes cis][a cis g, cis']|
-       %29
-       \n[f, d'(e f][e d cis)d][g, d' a d]|
-       \d[bes d(e f][e d cis)d][bes d a d]|
-       [gis, d'(e f][e d cis)d][a d a cis]|
-       [d a f a][d, f a, d]
-       d,8.
-       \octave c';
-}
-
diff --git a/mutopia/J.S.Bach/menuetto-alto.ly b/mutopia/J.S.Bach/menuetto-alto.ly
deleted file mode 100644 (file)
index b7b8093..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-\header{
-filename =      "menuetto-alto.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Menuetto I";
-description =   "Transcribed for Alto";
-source =        "?";
-% opus =        "BWV 1008 no. 5";
-opus =  "";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c';
-}
-
-\include "menuetto-urtext.ly";
-
-menuetto_i_alto_global = \melodic{
-       \meter 3/4;
-       \key bes;
-       \clef alto;
-       \skip 2.*8;
-       \bar ":|:";
-       \clef violin;
-       \skip 2.*1;
-       \slurdotted
-       \skip 2.*3;
-       \clef alto;
-       \skip 2.*11;
-       s2._"Fine"
-       \bar ":|";
-}
-
-menuetto_i_alto_scripts = \melodic{
-       s2.
-       s8^"~"^1_2_4 s8*5
-       s2.*5
-       s4 s-\upbow s-\downbow
-       s2.-\upbow
-       s2.*5
-       s2 s4-\upbow
-       s4-\downbow s2
-       s2.*1
-       s2^0 s4
-       s2.*1
-       s4-\downbow s4-\upbow
-}
-
-menuetto_i_alto_staff = \type Staff <
-       \$menuetto_i
-       \$menuetto_i_alto_global
-%      \$menuetto_i_alto_scripts
->
-
-\score{
-       \$menuetto_i_alto_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 120;
-       }
-}
-
-menuetto_ii_alto_global = \melodic{
-       \meter 3/4;
-       \key fis cis;
-       \clef alto;
-       \skip 2.*8;
-       \bar ":|:";
-       \skip 2.*1;
-       \slurdotted
-       \skip 2.*14;
-       s2._"Menuetto I da Capo"
-       \bar ":|";
-}
-
-menuetto_ii_alto_staff = \type Staff <
-       \$menuetto_ii
-       \$menuetto_ii_alto_global
-%      \$menuetto_ii_alto_scripts
->
-
-\header{
-piece = "Menuetto II";
-}
-\score{
-       \$menuetto_ii_alto_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 120;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/menuetto-cello.ly b/mutopia/J.S.Bach/menuetto-cello.ly
deleted file mode 100644 (file)
index 2916b99..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-\header{
-filename =      "menuetto-cello.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Menuetto I";
-source =        "?";
-% opus =        "BWV 1008 no. 5";
-opus =  "";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c;
-}
-
-\include "menuetto-urtext.ly";
-
-menuetto_i_cello_global = \melodic{
-       \meter 3/4;
-       \key bes;
-       \clef bass;
-       \skip 2.*8;
-       \bar ":|:";
-       \skip 2.*1;
-       \slurdotted
-       \skip 2.*14;
-       s2._"Fine"
-       \bar ":|";
-}
-
-menuetto_i_cello_scripts = \melodic{
-       s2.
-       s8^"~"^1_2_4 s8 s4 s^4
-       s4^0_1 s_4 s
-       s2.*5
-       s2^3 s4
-       s4 s8_1 s s4
-       s2.
-       s2 s8^4 s
-       s2.
-       s8 s^2 s^4
-       s_2 s s s_0 s_4 s_1
-       s2.*2
-       s4^3_1
-       s^1_3 s4
-       s2.
-       s4_2 s2
-       s8^2_3 s s s^1 s4^1
-}
-
-menuetto_i_cello_staff = \type Staff <
-       \$menuetto_i
-       \$menuetto_i_cello_global
-%      \$menuetto_i_cello_scripts
->
-
-\score{
-       \$menuetto_i_cello_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 120;
-       }
-}
-
-menuetto_ii_cello_global = \melodic{
-       \meter 3/4;
-       \key fis cis;
-       \clef bass;
-       \skip 2.*8;
-       \bar ":|:";
-       \skip 2.*1;
-       \slurdotted
-       \skip 2.*14;
-       s2._"Menuetto I da Capo"
-       \bar ":|";
-}
-
-menuetto_ii_cello_staff = \type Staff <
-       \$menuetto_ii
-       \$menuetto_ii_cello_global
-%      \$menuetto_ii_cello_scripts
->
-
-\header{
-piece = "Menuetto II";
-}
-\score{
-       \$menuetto_ii_cello_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 120;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/menuetto-urtext.ly b/mutopia/J.S.Bach/menuetto-urtext.ly
deleted file mode 100644 (file)
index 2940d61..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-% menuetto-urtext.ly
-% belongs together with -cello.ly and -alto.ly
-% (who is going to make a -violin.ly?)
-
-%{
-Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
-%}
-
-menuetto_i_a = \melodic{
-%      \octave relative;
-       <d,2\f f a> bes4  |
-       [bes8 a bes g] a4 |
-       <bes,4 d> g [f8 e] |
-       [f8( e )d cis b a] |
-       <d2 f a> bes!4 |
-       [bes8 a bes g] c!4 | 
-       %7
-       <f, a> <bes, f' d'> <g,, g' e'> |
-       <a,,2. e' cis'> |
-       <a2\f e'> [d8( e16 )f] |
-       \slurdotted
-       [e8( d cis )e a,()g] |
-       a4 ~ d cis |
-       [g'8( f e )f d() c] |
-       %13
-       bes2 c4 |
-       [a8 g a f] <bes,4 e' d'> |
-       <a,, f' c'> [bes8 a g a] |
-       [f8( e )f a g bes] |
-       <fis2^\trill a> bes4 |
-       [c8 bes c a] fis4^\trill |
-       %19
-% dispute
-%      <bes,4 g' d'> <c, g' c> <[d,8 bes'(> )a] |
-       <bes,4 g' d'> <c,, g' c> [bes8()a] |
-       [c8( bes a )bes g()bes] |
-       d4 ~ cis d |
-       [g,8 f g e] f4 |
-       [g,8 g'] <a,4. { e'^\trill ~ d8 }> |
-       <d,2. a' d> |
-       \octave c;
-}
-
-menuetto_i_b = \melodic{
-%      \octave relative;
-       \slurdotted
-       \skip 2.*1; |
-       <c8 e> \skip 8*5; |
-       \skip 2.*1; |
-       a,8 \skip 8*5; |
-       \skip 2.*1; |
-       e'8 \skip 8*5; |
-       \onevoice
-       \skip 2.*3; |
-       g8 \skip 8*5; |
-       f2 e4
-       d8 \skip 8*5; |
-       g4 ~ f e
-       f8 \skip 8*5; |
-       \skip 2.*3; |
-       es8 \skip 8*3; d4 |
-       \skip 4*2; d4 |
-       <d8 g> \skip 8*5; |
-% dispute
-%      g2 f4 |
-       g4 \skip 4*1; f4 |
-       cis8 \skip 8*3; d4 |
-       \octave c;
-}
-
-% UGH, fix this like in sarabande
-menuetto_i_a_voice_urg = \melodic{
-       \skip 2.*1; \voiceone
-       \skip 2.*1; \onevoice
-       \skip 2.*1; \voiceone
-       \skip 2.*1; \onevoice
-       \skip 2.*1; \voiceone
-       \skip 2.*1; \onevoice
-       \skip 2.*3; \voiceone
-       \skip 2.*1; \voiceone
-       \skip 2.*3;
-       \skip 4*2; \onevoice
-       \skip 4*2; \voiceone
-       \skip2.*1; \voiceone
-       \skip 4*2; \onevoice
-       \skip2.*1; \voiceone
-       \skip 2.*1; \onevoice
-       \skip 2*1; \voiceone
-       \skip 4*1;
-       \skip 2.*4; \onevoice
-       \skip 2.*1;
-%      \bar "|.";
-}
-
-menuetto_i_a_voice_urg_urg = \melodic<
-       \$menuetto_i_a_voice_urg
-       \$menuetto_i_a
->
-
-menuetto_i_b_voice_urg = \melodic{
-       \voicetwo
-       % urg urg, huh?
-       \skip 2.*8; \voicetwo
-}
-
-menuetto_i_b_voice_urg_urg = \melodic<
-       \$menuetto_i_b_voice_urg
-       \$menuetto_i_b
->
-
-menuetto_i = \type Voice \melodic<
-       { \$menuetto_i_a_voice_urg_urg }
-       { \$menuetto_i_b_voice_urg_urg }
->
-
-menuetto_ii = \melodic{
-       \slurdotted
-       fis'4^\trill [d8( e fis )g] |
-       a4 fis,, a'' |
-       [g,,8()b] e4 g |
-       \slurnormal
-       [d8( cis )b cis a g] |
-       % ugh, forcing knee
-       % Lily's not yet smart enough to decide for herself.
-       \stemup [fis \stemboth d''( cis b a )g] |
-       [b( g a fis e )d] |
-       %7
-       [cis d] g4 [fis8( g16 )a] |
-       <\stemdown a,2. \stemup e'> |
-       \stemboth
-       cis'4^\prall [e8( d cis )b] |
-       cis4 g,, cis'' |
-       [fis,8()a] d4 fis |
-       [b,8()a g()fis \slurdotted g()b] |
-       \slurnormal
-       %13
-       [e, d'( cis )b cis()ais] |
-       % check slur! [d, b' a! g fis )e] |
-       [d,( b' a! g fis )e] |
-       [g( fis e d cis )d] |
-       [b( cis d e fis )g] |
-       [a( g fis g a )b] |
-       c4 dis,, c'' |
-       %19
-       [b8()a c( b a )g] |
-       [fis() g a()fis g()e] |
-       \slurdotted
-       cis4^\trill [a8( b cis )d] |
-       \slurnormal
-       [e( fis g )b] a4 |
-       [g8()fis e()d e()cis] |
-       d2.
-}
-
diff --git a/mutopia/J.S.Bach/out/dummy.dep b/mutopia/J.S.Bach/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/mutopia/J.S.Bach/prelude-alto.ly b/mutopia/J.S.Bach/prelude-alto.ly
deleted file mode 100644 (file)
index 4f8ae5f..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-\header{
-filename =      "prelude-alto.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Pr\\'elude";          % duh
-% opus =        "BWV 1008";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c';
-}
-
-\include "prelude-urtext.ly";
-
-prelude_alto_global = \melodic{
-       \meter 3/4;
-       \key bes;
-       \clef alto;
-       \skip 2.*63;
-       \bar "|.";
-}
-
-prelude_alto_scripts = \melodic{
-}
-
-prelude_alto_staff = \type Staff <
-       \$prelude
-       \$prelude_alto_global
-       \$prelude_alto_scripts
->
-
-\score{
-       \$prelude_alto_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 40;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/prelude-cello.ly b/mutopia/J.S.Bach/prelude-cello.ly
deleted file mode 100644 (file)
index a8df6f3..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-\header{
-filename =      "prelude-cello.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Pr\\'elude";          % duh
-% opus =        "BWV 1008";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c;
-}
-
-\include "prelude-urtext.ly";
-
-prelude_cello_global = \melodic{
-       \meter 3/4;
-       \key bes;
-       \clef bass;
-       \skip 2.*63;
-       \bar "|.";
-}
-
-prelude_cello_scripts = \melodic{
-}
-
-prelude_cello_staff = \type Staff <
-       \$prelude
-       \$prelude_cello_global
-       \$prelude_cello_scripts
->
-
-\score{
-       \$prelude_cello_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 40;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/prelude-urtext.ly b/mutopia/J.S.Bach/prelude-urtext.ly
deleted file mode 100644 (file)
index 33c6433..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-% prelude-urtext.ly
-% belongs together with -cello.ly and -alto.ly
-% (who is going to make a -violin.ly?)
-
-%{
-Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
-%}
-
-n = { \slurnormal }
-d = { \slurdotted }
-
-%
-% this must be redone a bit:
-% 
-%  * two voices: see allemande/sarabande
-%  * beams in different beam-thread: see first few bars
-%  * slurs/ties in two different threads: urtext, and additionals
-%  
-
-%prelude_notes = \melodic{
-prelude_notes = \type Thread = prelude \melodic{
-       d,8 f a4 ~ a16 f( e )d |
-       cis( e g )a bes4 ~ bes16 a( g )f |
-
-       [e( g a )cis] \d [e8.() bes,16] \n [a16( g f )e] |
-       [f( g a )f] [d8( c! bes )a] |
-       %5
-       [bes16 d( f )a] \d [d8.()c16] [bes( a g )f] |
-       [e( g bes )d] [c( a bes )g] [f( e )g bes,] |
-       \n [a c( e )g] \d [c8.()bes16] \n [a( g f )e] |
-       \d [d( f a )c] [bes( g a )f] \n [e( f a )f] |
-       %9
-       \d [g, bes( d )f] [bes8.() a16] \n [g( f e )g] |
-       [a, c( e )g] [c a( e )g] [f( a )d, es] |
-       [d a( bes )d] [g bes( a )c] \d [bes( g )d' f,] |
-       %12
-       \n[e b( c )e] \d[g d( e )c] [bes( g )e' bes,] |
-       [f8 a] \n c4 ~ [c16 bes( a )g] |
-       [fis a( bes )c] [d, c'( bes )a] [fis' es( d )c] |
-       \d [bes( a )g bes] \n d4 ~ [d16 \d c( bes )a] |
-       %16
-       \n[gis b( c )d] [e, d'( c )b] [gis' \d f ( e )d] |
-       [c( b a )c] [f( e f )gis] [a( f d )c] |
-       \n [b( d gis' )b] \d[d8.()c16] \n[b( a gis )a] |
-       %19
-       \d [c,( e a )c] [e8.()c16] \n [b( a gis )a] |
-       [d,( f a )d] \d[f8.()e16] \n[d( c b )d] |
-       \d[e, d'( c )b] \n[a c( b )a] [d, b'( a )gis] |
-       %22
-       [c, a'( g!)f] [cis g,( f )e] [d f( e )d] |
-       [gis' \d d'( e )f] [b' f,( e )d] [gis,\n d'( c )b] |
-       \d[a( b c )e] [a( b c )a] [e( c a )g!] |
-       % 25
-       % B"arenreiter and Chester say "c bes c"
-       [fis \n a( c )d] \d[es8.()d16] \n[c( bes )c a'] |
-       [bes,( a )bes d] [g, es'( f )g] [a, g'( f )es] |
-       [d( c )d f] [bes,  g'( a )bes] [cis, bes'( a )g] |
-       % 28
-       [f( e )f a] [d, bes'( c! )d] [e,! \d d'( c )bes] |
-       \n[a( g )a c] [f, d'( e )f] [g, f'( e )d ] |
-       [cis g,( f )e] [a, e'( f )g] [cis'( bes! )a g] |
-       %31
-       [f( g )a cis] [d a( g )f] [a f( e )d] |
-       \d[gis' d,( e )f] [ a, f'( e )d] [gis'( f! )e d ] |
-       [cis( b )cis e] [a \n e( cis )e] [a, g'!( f )e] |
-       %34
-       [f( e )f a] [d a( f )a] \n[d, c'!( bes )a] |
-       [g( f )g cis'] [e \d cis( g, )cis'] [a,, g'( f )e ] |
-       [d a' d e] [f d a f] [d c'!( bes )a] |
-       %37
-       \n[g( a )bes d,] [es f g a] [bes g es' g,] |
-       \d[f( g )a cis,][ d e! f g][a f d' f,] |
-       [e( f )g bes,][a b cis d] \d[e bes, g' bes,] |
-       %40
-       [cis,8 a'] \n g'4 ~ [g16 bes( a )g] |
-       [f( e d )e] [f d a' f] [d' a f d] |
-       [gis,8 f'] d'4 [d16 f( e )d] | 
-       [cis( b )a b][cis a d a][e' a, f' a,] |
-       %44
-       [g' \d e( cis )e][a,( cis )e f][g f g e] |
-       [f d( cis )d][a( cis )d e][f e f d] |
-       [e cis( b )cis]\n[a( b )cis d][e d e cis] |
-       %47
-       [d \n b( a )b][f,(gis )b cis][d cis d b] |
-       <{\voiceone <d,4^\fermata cis'>}{\voicetwo g,,}>\onevoice r r |
-       [bes''16 g( fis)g][es g d g]\d[es( g)bes d,] |
-       [cis--( \n e!( g ))a]\d[bes8.()a16]\n[g( fis )g e'] |
-       %51
-       [f,! d' bes g]\d[a()f e()g][f()d cis()e] |
-       [d bes( a )g][fis--( \n a( c! ))es]\d[d( c bes )a] |
-       [bes g( fis )g][es g d g]\n[es( g )bes d,] |
-       %54
-       <\voicetwo cis4 bes' {\voiceone [g'8.( )f16] }> 
-       \n[e!( d cis b][a g f )e] \onevoice |
-       \d[d--( \n a'( d ))e][f( e d c!][bes! a g )f] |
-       \d[e--( \n a( cis ))e][g( f e d][cis b a )g] |
-       [f a( d )f][a d,( f )a][d bes! c! a] |
-       [g,, \d d'( g )a][bes \n g( fis)g][es' g, d' g,] |
-       <{\voiceone <g2. cis'> | <f,2. d'> | <e, d'> | <e, cis'> | <f, d' > | }
-       {\voicetwo a,,2.  a a a <d, a'>}>
-       \octave c';
-}
-
-prelude_beam1 = \melodic { [s8 s]s4[s16 s s s] }
-prelude_beam2 = \melodic { [s16 s s s]s4[s16 s s s] }
-
-prelude_beams = \type Thread = prelude \melodic{
-       \$prelude_beam1
-       \$prelude_beam2
-}
-
-prelude = \type Voice \melodic<
-       \$prelude_notes
-       \$prelude_beams
->
-
diff --git a/mutopia/J.S.Bach/preludes-1.ly b/mutopia/J.S.Bach/preludes-1.ly
deleted file mode 100644 (file)
index 9bb0f07..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-\header{
-filename =      "preludes-1.ly";
-% mmm
-title =         "DOUZE PETITES PR\'ELUDES";
-opus = "BWV 924";
-% piece = "\\numfont 1";
-piece = "1";
-% blz 1
-% Clavierb"uchlein f"ur W. Fr. Bach
-% Clav. W. Fr. Bach: 2-Praeambulum I
-% ca 1720
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "jcn";
-copyright =     "public domain";
-}
-
-one = \melodic{
-       \octave c'';
-       \textstyle "italic";
-       r16\p_"legato"\< [g,-1( c-3 )e-5] r [g,-1( c )e]
-       r [g,( c )d] r [b,-1( d-2 \!)g-5] |
-       r\mf [a,( d-2 ) g-5] r [a,(\< d )f-4]
-       r [a,( d )e-3] r [c-1( e-2 \!)a-5] |
-       r\f [b, e a-5] r [b, e-3 g-5] 
-       r [c-1 e-3 f-4] r [g, d-3 f-5] |
-       r [g,-"poco a poco dim." d-4 e] r [g, c-2 e]
-       r [a,-1 c-3 d-4] r [e, b,-3 d-5] |
-       r [e, b, c-4] r [e, a,-2 c]
-       r [f,-1 a,-3 bes,-4] r [c, g,-3 bes,-5] |
-       r [c, g, a,-4] r [c, f,-2 a,] 
-       r [d, f,-2 b,-5] r [e, g,-2 c-5] |
-       r\p [d, g, c-5] r [d, g, b,-4]
-       r [c, g,-3 b,-5] r [c, fis,-2 a,-4] |
-       r [b,, d, a,-5] r [b,, d, g,-4]
-       r [a,, c, g,-5] r [a,, c, f,!-4] |
-       % ugh, arpeggio
-       <
-               { \voiceone  f,4 r s }
-               { \voicetwo  <g,,4 d,> r s }
-       >
-       \onevoice 
-       % ugh beam across staffs, slur starts at lower staff
-       r16 [g,,-1( b,, d,] |
-       \voiceone 
-       )b,, s4 [g,16-1( b,-2 d] )b, s s s [f-2 g-3 b-5 f-2] |
-       \onevoice 
-       [e-1\f c'-5( g-3 f-2] [e-1 c'-5 g-3 e-2] 
-       [)d c'-5( f-3 e-2] [d-1 b-5 f-3 d-2] |
-       [)c b-5( e-3 d-2] [c-1 a-5 e-3 c-2] 
-       [)b,-1 a-5( d-3 c-2] [b,-1 g-5 d-3 b,-2] |
-       [)a, g-5 c-4 b,] [a,-"poco a poco dim." fis-5 c-2 a,-1]
-       [b,-2 f d-4 c] [b, f d-4 b,-2] |
-       [g, e c-3 b,] [a, e-5 c-3 a,-1]
-       [fis,-2 d b,-3 a,] [g,-1 d-5 b,-4 g,-2] |
-       [e, c-5 a,-4 g,-3] [fis,-2 c-5 a,-4 fis,-2] 
-       [d, c-5 b,-4 a,] [b,-4 g,-2 d-5 f,-1] |
-       [g,-4 e,-2 f,-1 d-5] [c-4 b, a, g,]
-       [f-5 d-3 es-4 c-2] [fis,-1 es-4 d-3 c-2] |
-       [b,-1 d-5 b,-3 g,-1] [as,-4-"cresc. e rall." f,-2 g,-3 d,-1]
-       [es,-2 fis,-3 a,-4 c-5] 
-       < 
-               { \voiceone  r [c8 b,16] }
-               { \voicetwo  [d,8 f,-2] }
-       >
-       \onevoice  |
-       <c1\mf g, e,>
-       \bar "|.";
-}
-
-two = \melodic{
-       \octave c;
-       \textstyle "roman";
-       c4-5 e-3 g-\mordent^"(\\textsharp)" g,4 |
-       d-\mordent-5 f-3 a-\mordent^"(\\textsharp)" a,4 |
-       e-5 e'-\mordent-1 a-4 b-\upprall |
-       c'4 e-4 fis gis-\downprall |
-       a4 c-4 d e-\upprall |
-       f4-1 e d-3-\prall c |
-       g-\mordent^"(\\textsharp)" g, g-\mordent g, |
-       g-\mordent g, g-\mordent g, |
-       % ugh, f should be at upper staff
-       g-\mordent r r16 [g,-5( b,-4 d] )f-1 s s s |
-%      s [g-5( b-4 d'-2] )f'-1 s s s s \clef violin; [g'-4 b'-2 d''-1] 
-       % huh, can't violin anymore (see BUGS)
-       s [g-5( b-4 d'-2] )f'-1 s s s s [g'-4 b'-2 d''-1] 
-       s s s s \clef bass; |
-       <
-               { \voiceone  g1 ~ g ~ g ~ g ~ g ~ g ~ g }
-               { \voicetwo  g,1 ~ g, ~ g, ~ g, ~ g, ~ g, ~ g, }
-       >
-       <c1 c,>
-       \bar "|.";
-}
-
-global  = \melodic{
-       \meter 4/4;
-}
-
-treble_staff = \type Staff = treble <
-       \global
-       \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
-       \clef "bass";
-       \global
-       \two
->
-
-grand_staff = \type Grand_staff <
-       \treble_staff
-       \bass_staff
->
-
-a4 = \paper{
-       linewidth= 193.\mm;
-}
-
-\score{
-        % Moderato
-       \grand_staff
-       \paper{ \a4 }
-       \midi{ \tempo 4 = 80; }
-}
diff --git a/mutopia/J.S.Bach/preludes-2.ly b/mutopia/J.S.Bach/preludes-2.ly
deleted file mode 100644 (file)
index 8f4dca4..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-\header{
-filename =      "preludes-2.ly";
-title =         "2";
-opus = "BWV 939";
-% urg?? piece = "\\numfont 2";
-piece = "2";
-% blz 10
-% 
-% Six Petits Pr'eludes
-% Collection Johann Peter Kellner
-% ca 1703 - 1707
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "jcn";
-copyright =     "public domain";
-}
-
-one = \melodic{
-       \octave c'';
-       \textstyle "italic";
-       r8\mf [c,-1( e,-2 g,-4] [e,-2 c,-1 bes,-5 g,-3] |
-       [)a,-4\< c,-1( f,-2 a,-4] [f, c, c-5 a,-3] |
-       [)b,-4 g,-1( b,-2 d-4] [b,-2 g, f-5 \!d-3] |
-       <
-               {\voiceone  )e2-4\f r4 e-5 }
-               {\voicetwo  <c2 g,> r4 <c g,> }
-       >
-       \onevoice  |
-       < 
-                { \voiceone  d2-4 r4 d-4 }
-                { \voicetwo  <c2 a,> r4 <c a,> }
-       >
-       \onevoice  |
-       < 
-                { \voiceone  d8 }
-                { \voicetwo  <b,8 g,> }
-       >
-       \onevoice 
-       [g,8-1\mf( b,-2 d-4] 
-       <
-               { \voiceone  )b,4 e-5 }
-               { \voicetwo  g,4 b, }
-       >
-       \onevoice  |
-       <
-               { \voiceone  c2 r4 < {c-5 ~ c8} {a,4 ~ a,8} > }
-               { \voicetwo  c2 r4 e,4 ~ e,8 }
-       >
-       \onevoice 
-       [d,-1\p( fis,-2 a,-4] [fis,-2 d,-1 c-5 a,-3] |
-       [)b,-4\< g,-1( b,-2 d-4] [ b,-2 g,-1 f!-5 d-3] |
-       [)e-4 g,-1( c-2 e-4] [c-2 g, g-5 e-3] |
-       [)fis-4 a,-1( c-2 fis-4] [c a, a-5 \!fis-3] |
-       <
-               { \voiceone  )g2-5\f }
-               { \voicetwo  <d2 b,> }
-       >
-       \onevoice 
-       r4 b4-2( |
-       [c8-1 e-2 g c'] [g-2 e-1 bes-4 g-2] |
-       [)a16->-3 g-2 f-1 e-3] [d c b,!-3 a,-2] 
-       [b,-3\< g,-1 a, b,] [c-1 d e \!f] |
-       g4-5\ff
-       <
-               { \voiceone  c2-5 b,4-4 }
-               { \voicetwo  g,2-2 d,4-1 }
-       >
-       \onevoice 
-       <
-               { \voiceone   c1^5 }
-               { \voicetwo  e,1_1}
-       >
-       \onevoice 
-       \bar "|.";
-}
-
-two = \melodic{
-       \octave c;
-       <
-               { \voiceone  c1 ~ | c ~ | c }
-               { \voicetwo  c,1 ~ | c, ~ | c, }
-       >
-       \onevoice  |
-       r8 [c-5( e-3 g-1] [e-3 c-5 c' e-4] |
-       [)fis-3 d-5( fis-3 a-1] [fis-3 d-5 d' fis-4] |
-       )g2-3 r4 g-2( |
-       [)a8 a,-5( c-4 e-2] [c-4 a,-5 g e-3] |
-       )fis2 r4 d-4 |
-       g-\mordent-"(\\textsharp)" g,4 g-\mordent g, |
-       % mordents in brackets...
-       g-\mordent g, g-\mordent g, |
-       g-\mordent g, g-\mordent g, |
-       [g8 g,-5( b,-4 d-2] [b,-4 g,-5 f!-1 d-3] |
-       [)e-2 c-4 e-2 g-1] [e-3 c-5 c' e-4] |
-       \textstyle "finger";
-       f1^"3\\_1" ~ |
-       [f8 d-3 e-2 c-4] g4-1 g,^"5\\_2" |
-       <c1 c,1>
-       \bar "|.";
-}
-
-global  = \melodic{
-       \meter 4/4;
-}
-
-treble_staff = \type Staff = treble <
-       \global
-       \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
-       \clef "bass";
-       \global
-       \two
->
-
-grand_staff = \type Grand_staff <
-       \treble_staff
-       \bass_staff
->
-
-a4 = \paper{
-       linewidth= 193.\mm;
-}
-
-\score{
-        % Moderato
-       \grand_staff
-       \paper{ \a4 }
-       \midi{ \tempo 4 = 100; }
-}
-
diff --git a/mutopia/J.S.Bach/preludes-3.lym4 b/mutopia/J.S.Bach/preludes-3.lym4
deleted file mode 100644 (file)
index 1b85a51..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-% URG
-
-changequote(^, @)
-define(comma, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
-define(s, ^comma(translit($*,^ @, ^,@))@)
-define(t, r16 [$1$4 $2 $3] [$2 $1 $2 $6$1] r $1$7 r $5$1 |)
-
-\header{
-filename =      "preludes-3.ly";
-title =         "3";
-opus =         "BWV 999";
-% piece = "\\numfont 3";
-piece = "3";
-% Pr"aludum in C Moll f"ur Laute
-% blz 16
-% Six Petits Preludes`
-% Collection Johann Peter Kellner
-% ca 1703 - 1707
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "jcn";
-copyright =     "public domain";
-}
-
-one = \melodic{
-       \octave c`;
-       \textstyle "italic";
-%#     s(^c@ ^es@ ^g@ ^\p(\<@ ^\!@ ^)\!@ ^\>@)
-       t(c,es,g,^\p(\<@,\!,^)\!@,\>)
-%#     s(c es g ^(@ ^@ ^)@)
-       t(c,es,g,^(@,^@,^)@)
-%#     s(c f as ^(@ ^@ ^)@)
-       t(c,f,as,^(@,^@,^)@)
-       s(c f as)
-       s(b` d f \< \!)
-       s(b` d f)
-       s(g` c es \> \!)
-       s(g` c es)
-       s(g` c es \< \!)
-       s(g` c es)
-       s(a` c es)
-       s(a` c es)
-       s(a` bes` d \> \!)
-       s(g` bes` d)
-       s(bes` d g)
-       s(a` es g \mf)
-       s(a` c fis)
-       s(a` c fis)
-       s(bes` d g)
-
-
-%#     s(c fis a -"poco a poco cresc.")
-       t(c,fis,a,-"poco a poco cresc.")
-       s(d g bes)
-       s(d fis c`)
-
-       s(cis g bes)
-       s(c es a !-"dim.")
-       s(bes` e g)
-       s(a` c g)
-
-       s(a` c fis)
-       s(g` bes` e)
-       s(fis` a` es)
-
-       s(g` bes` d -"dim.")
-       s(g` a` c)
-       s(fis` a` c)
-       s(fis` a` c)
-       r16\p [g` a` c] [b` g` b` g`] r g` r g`
-%#     s(a` c fis -"poco cresc.")
-       t(a`,c,fis,-"poco cresc.")
-       s(c fis a)
-       s(b` d g)
-       s(b` d f -"dim.")
-       s(g` c es)
-       s(fis` c es)
-       s(fis` c es)
-       r16 [g`(\< b` d] [b` g` b` d] [es c a` )\!fis] |
-       <
-               {\voiceone g2.-\fermata\mf}
-               {\voicetwo <b`2. d>}
-       >
-       \onevoice
-       \bar "|.";
-}
-
-two = \melodic{
-       \octave c;
-       \clef bass;
-       % c4 r [g8-.(\ped )es-.\*] |
-       c4 r [g8-.( )es-.] |
-       c4 r [g8-.( )es-.] |
-       c4 r [as8-.( )f-.] |
-
-       c4 r [as8-.( )f-.] |
-       c4 r [as8-.( )f-.] |
-       c4 r [as8-.( )f-.] |
-
-       c4-- r [es8 c] |
-       bes`!4-- r [es8 c] |
-       as`!4-- r [es8 c] |
-
-       g`4-- r [es8 c] |
-       fis`4-- r [es8 c] |
-       fis`4 r [fis8 d] |
-
-       g`4 r [d8 bes`] |
-       g`4 r [bes`8 g`] |
-       es`4 r [g8 es] |
-
-       c4 r [c8 a`] |
-       d`4 r [d8 a`] |
-       d`4 r [d8 a`] |
-       d`4 r [d8 bes`] |
-
-
-       d`4 r [es8 c] |
-       d`4 r [g8 d] |
-       d`4 r [a8 fis] |
-
-       d`4 r [g8 es] |
-       d`4 r [fis8 d] |
-       d`4 r [e8 cis] |
-       d`4 r [es8 c] |
-
-       d`4 r [d8 a`] |
-       d`4 r [cis8 bes`] |
-       d`4 r [c!8 a`] |
-
-       d`4 r [bes`8 g`] |
-       d`4 r [es8 c] |
-       d`4 r [d8 a] |
-
-       g`4 r [es8 c] |
-       g`4 r [d8 b`] |
-       g`4 r [es8 c] |
-       
-       g`4 r [es8 c] |
-       g`4 r [g8 d] |
-       g`4 r [as8 f] |
-       g`4 r [es8 c] |
-
-       g`4 r [es8 c] |
-       g`4 r [es8 c] |
-       g`4 r r |
-       g`2._\fermata 
-       \bar "|.";
-}
-
-global  = \melodic{
-       \meter 3/4;
-       \key bes es as;
-}
-
-treble_staff = \type Staff = treble <
-       \global
-       \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
-       \clef "bass";
-       \global
-       \two
->
-
-grand_staff = \type Grand_staff <
-       \treble_staff
-       \bass_staff
->
-
-a4 = \paper{
-       linewidth= 193.\mm;
-}
-
-\score{
-       % Semplice e non troppo legato
-       \grand_staff
-       \paper{ \a4 }
-       \midi{ \tempo 4 = 100; }
-}
diff --git a/mutopia/J.S.Bach/preludes-4.ly b/mutopia/J.S.Bach/preludes-4.ly
deleted file mode 100644 (file)
index 7ebf406..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-\header{
-filename =      "preludes-4.ly";
-title =         "4";
-opus = "BWV 925";
-% piece = "\\numfont 4";
-piece = "4";
-% blz 8
-% Clavierb"uchlein f"ur W. Fr. Bach
-% Clav. W. Fr. Bach: 27-Praeludium ex d neutral
-% ca 1720
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "jcn";
-copyright =     "public domain";
-}
-
-one = \melodic{
-       \octave c'';
-       \textstyle "italic";
-       r16\p_"legato" 
-       \textstyle "finger";
-       [d,-1( fis,-3 d,-1] [a,-2 b,-3 cis-4 a,-3]
-       [d-3 cis-2 d-1 e-2] [d-1 fis-3 e-2 d-1] |
-       \textstyle "finger";
-       \stemup  
-       )cis4-2 fis-5 ~ [fis8 fis-4] e4-3 ~ | 
-       e16\< \stemboth [a,16( cis a,] [d-2 e fis d-1]
-       [g-3 fis g a-4] [g-3 b a \!g] |
-       \stemup
-       )fis4-"2\\_3" [e8-2 a-5] <fis4-4 d-2> <gis-5 e-3> |
-       <a4-5( e> <fis-4 d-2> <[)g!16-5 d> fis-2 g-3 a-4] 
-       \stemboth
-       [g-3 b a g] |
-       \textstyle "italic";
-       [fis_"dim." e fis-3 g] [fis-3 a-5 g fis]
-       \textstyle "finger";
-       e4-"2\\_5" ~ e16 [e,( fis, g, ] |
-       \textstyle "italic";
-       [a,-4_"dim." g,-1 a, b,] [a,-2 c-4 b, a,]
-       [g,-1 fis,-2 g,-3 a,] [g,-3 b, a, g,] |
-       \stemup
-       )fis,4\p 
-       \skip 4*7; |
-       \textstyle "finger";
-       d4.\mf cis8-"4\\_5" ~ cis b,4-5 a,8-"4\\_5" ~ |
-       \textstyle "italic";
-       a, g,4-5 fis,8-4 ~ [fis,16 fis,-4-"dim." e,-3 d,-2] 
-       \textstyle "finger";
-       e,4-"3\\_5" ~ |
-       [e,16 e,-5 d, cis,] d,4-5 ~ [d,16 d,-5 cis, b,,] cis,4-5 |
-       \stemboth
-       [fis,,16-1\p a,,-2 d,-5\< c,-4] [b,,-1 d,-2 g,-5 fis,-4]
-       [d,-1 b,-5 a, g,] [fis,-2 e,-1 d,-4 \!c,!-3] |
-       [b,,-2 d,-1 g, a,] [fis,8-\prall e,16-4 d,-3]
-       [d,8. e,16~] [e, d,8 cis,16] |
-       \stemup
-       r16 [d,-1\< fis, d,] [g, a, b, g,-1] [c-3 b, c d] [c e d-4 \!c] |
-       b,4-5 a, ~ [a,8 g,-5 ~] [g,16 fis,8-4 e,16-3] |
-       [fis,8-4 e,-5~] [e, d,-5~] d,4 cis,-4 |
-       d,2\p-"rall." ~ [d,16 a,,-2( b,,-3 cis,-4] )d,4-5 |
-       \bar "|.";
-}
-
-two = \melodic{
-       \octave c;
-       \textstyle "finger";
-% ugh: koor
-%      \translator Staff=bass \octave c; \stemup
-%      \stemup 
-       fis4-1( e8-2 a4 a4 gis8-2 | 
-       ) a8
-       \translator Staff=treble \octave c''; \stemdown
-       a,4 a,8 b,4.-"2\\_1" cis8 ~ | 
-       cis8
-       \translator Staff=bass \octave c; \stemup
-       a8 ~ [a d'] ~ d' d'4-> cis'8 | 
-       d'8
-       \translator Staff=treble \octave c''; \stemdown
-       d4-> cis8-1 ~ cis b,4-1 b,8 |
-       r8 a,4 a,8
-       \translator Staff=bass \octave c; \stemup
-       [g'8-1( fis'-2] )e'4-1 ~ | 
-       e'4 d' ~ [d'16 d'-1 cis'-2 b-1] cis'4-2 ~ |
-       [cis'8 a-3] d'4.-1 d'4^> cis'8-2 |
-       \translator Staff=treble \octave c''; \stemdown
-       d,4 
-       \stemboth
-       r16 [b,,-1\< d,-2 b,,~] <g,4-5 e,-3 b,,>
-       r16 [cis,-1 e,-2 \!cis,~] |
-       <a,4-5 fis,-3 cis,> r16 [d,-1 fis,-2 d,~] <b,4-5 g,-3 d,>
-       r16 [fis,-1 a, fis,~] |
-       \stemdown
-       fis,4 e, d, cis, |
-       b,, a,, b,,4. b,,8 |
-       a,,4
-       \translator Staff=bass \octave c; \stemup
-       r16 [b-3 fis-1 a-2] g4-1 r16 [a-3 e-1 g-2] |
-       \skip 4*4; \skip 16*1;
-       \translator Staff=treble \octave c''; \stemdown
-       d,8.-1 ~ [d,8 c,] d,4 [a,,8 g,,] |
-       \translator Staff=bass \octave c; \stemup
-       [fis'8 c'-1] b4-1 \stemdown <a
-       \translator Staff=treble \octave c''; \stemdown
-       a,,4.-2>
-       \stemdown
-       a,8~ |
-       [a, g,-3~] [g,16 e, fis,8~] [fis,16 d,8.~] [d,8. cis,!16] |
-       \translator Staff=bass \octave c; \stemup
-%      <[d'8-2 a-1> <a~ g]> <a4 [fis16-2> e-1 fis-2 d-1]
-       <
-               { \voiceone  [d'8-2 a~] a4 }
-               { \voicethree  [a8-1 g] [fis16-2 e-1 fis-2 d-1] }
-       >
-       \voiceone 
-       [g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] |
-       [g g-1 fis-2 e-1] fis4-2 ~ fis2
-       \bar "|.";
-}
-
-three = \melodic{
-       \octave c;
-%      \stemdown 
-       d4-3 c-4 b, e-3 |
-       a16 [a,-5\mf( cis-3 a,-5] [d-2 e-1 fis-2 d-4]
-       [g-1 fis-3 g a] [g b a g] |
-       )fis4 fis e a-4 |
-       d'16 \stemboth [d-5\f( fis-3 d-5] [a-2 b-1 cis'-2 a-4]
-       [d'-1 cis'-3 d' e'] [d'-4 fis'-2 e'-1 ) d'] |
-       [cis'-3 b-4 cis'-3 d'-2] [c'-4 e'-2 d'-3 c'-4] 
-       \stemdown b4-5 [cis'8-4 b-3(] |
-       [a-4 )fis-5 b-2 a-3] [gis-4 e-5 a-3 g-4] |
-       fis4. d8-5 e4-5 a4-3 |
-       \stemboth
-       r16 [d-4( fis-2 d-4] [)g8-.-1 g,-.-5]
-       r16 [e-4( g-2 e-4] [)a8-. a,-.-5] |
-       r16 [fis-4( a fis] [)b8-. b,-.] r16 [g-4( b g] [)d'8-. d-.] |
-       r16 [d,16-5( fis,-3 d,] [a,-2 b,-1 cis-2 a,-4] [d b,-5 d-3 b,]
-       [fis-2 g a-2 fis-4] |
-       )fis16 [g,( b, g,] [d-2 e fis-2 d-4] [)g8-. g,-.] r16 [cis-4( e cis] |
-       [)fis8-. fis,-.] \stemdown r16 [b,-4( d b,] [)e8-. e,-.] 
-       r16 [a,-4 cis a,] |
-       \stemboth
-       [d-1 e-3 fis-2 d-4] [g-1 fis-2 e-3 d-1] [cis!-3 a,-5 b, cis]
-       [d-2 e fis-2 d-4] |
-       [g8 e-3] \stemdown [a a,] [b,8.-4 g,16-5] a,4-4 |
-       [d8-5 a-2~] [a g-3~] [g g-3] fis4-4 |
-       \stemup
-       r16 [g-2 b-1 g-3] [d'8.-1 c'16-1] [b8.-2 bes16-3] [a8-1 g] |
-       \stemdown
-       r16 [a,-2 cis!-1 a-2] [d-1 e fis d] [e8-1 d-2] [e-1 a,-2] |
-       [d a,-2~] [a,16 a,-2 b, cis-2] d2 |
-}
-
-four = \melodic{
-       \skip 4*36;
-       \octave c';
-%      \stemup 
-%      \property Voice.hshift = 1 
-       a2 fis |
-       d
-%      \property Voice.hshift = 0 
-       \skip 4*11;
-       \translator Staff=bass \octave c; \stemup
-       a4 ~ [a16 d-2 g8-1] [fis e-1] |
-       \stemdown
-       d1 ~ | 
-       d ~ | 
-       d, ~
-       d,2 d,2
-}
-
-global  = \melodic{
-       \meter 4/4;
-       \key fis cis;
-}
-
-treble_staff = \type Staff = treble <
-       \global
-       { \voiceone \one }
-       { \voicefour \four }
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
-       \clef "bass";
-       \global
-%      { \voiceone \two }
-       { \type Voice = bone \skip 1*0; \property Voice.ydirection = \up \two }
-       { \voicetwo \three }
->
-
-grand_staff = \type Grand_staff <
-       \treble_staff
-       \bass_staff
->
-
-widea4 = \paper{
-       linewidth= 193.\mm;
-%      arithmetic_basicspace = 2.;
-%      arithmetic_multiplier = 6.\pt;
-       arithmetic_basicspace = 3.;
-       arithmetic_multiplier = 6.\pt;
-}
-
-\score{
-        % Allegretto
-       \grand_staff    
-       \paper{ \widea4 }
-       \midi{ \tempo 4 = 70; }
-}
diff --git a/mutopia/J.S.Bach/preludes-5.ly b/mutopia/J.S.Bach/preludes-5.ly
deleted file mode 100644 (file)
index 2584662..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-\header{
-filename =      "preludes-5.ly";
-title =         "5";
-% piece = "\\numfont 5";
-piece = "5";
-opus = "BWV 926";
-% blz 2
-% Clavierb"uchlein f"ur W. Fr. Bach
-% Clav. W. Fr. Bach: 4-Praeludium 2
-% ca 1720
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "jcn";
-copyright =     "public domain";
-}
-
-one = \melodic{
-       \octave c';
-       \textstyle "italic";
-       [d8-1\p a-5-"legato" f-3 d-1 a-5 f-3] |
-       [d-1 a-5 f-3 d-1 a-5 f-3] |
-       [d-1\< bes-4 g-2 d-1 bes-4 \!g-2] |
-       [d-1 bes-4 g-2 d-1 bes-5 g-3] |
-       [cis-1\mf g-4 e-2 cis-1 g-4 e-2] |
-       [cis-1 bes-5 g-4 e-2 a-5 g-4] |
-       [f-3\< d-1 f-2 a-4 f-1 a-2] |
-       [d'-5 a-1 d'-2 f'-4 d'-1 \!f'-2] |
-       [b'\> f'-3 e' d' c'-3 b] |
-       [a gis-3 fis e d'-5 \!b-2] |
-       < 
-               {
-                       \voiceone 
-                       \textstyle "roman";
-                       c'4-\mordent^"(\\textsharp)"\p r r |
-                       c'4-\mordent^"(\\textsharp)" r r
-                       \textstyle "italic";
-               }
-               { \voicetwo  a4 r r | a4 r r }
-       > |
-       \onevoice 
-       [a'8\mf( es'-3\> d' c' bes!-3 a] |
-       [g fis-3 e!-2 d-1 c'-4 \!a] |
-       [)bes8-\mordent\p( d'8-5 bes-3 g-1] )g'4 |
-       r8 [d'-5( c' bes a-\prall g] |
-       [)a-2 c'-4( a f] ) f'4 |
-       r8 [c'-5 bes a g-\prall f] |
-       [g-2 bes-4 a g f-1 e-2] |
-       [f-3 d-1 f-2 a-3 d'-5 g-2] |
-       < 
-               { 
-                       \voiceone 
-                       % ... textnatural
-                       [cis'8-\prall e'8-5-"poco cresc." cis'-3 a e' cis']
-               }
-               { \voicetwo  a4 }
-       >
-       \onevoice 
-       [a8 e'-5 cis' a bes!-3 a] |
-       [g e'-5 cis'-3 g e'-5 cis'-3] |
-       [g-1 e'-5 cis' g a-3 g] |
-       [f-"dim." d'-5 bes f d' bes] |
-       [f d'-5 bes f d' bes] |
-       [fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3] |
-       [fis-2 c'-5 a-3 fis-2 c'-5 a-3] |
-       [bes-4 g-1 fis-2 g-3 d-1 g-2] |
-       [bes-4 g-2 d-1 bes-5 g-3 d-1] |
-       [e-2\p g-4 fis-3 g-1 bes-4 g-2] |
-       [es-1 bes-4 g-2 es bes g] |
-       [cis-1 bes-4 g-2 cis bes g] |
-       [cis-1 bes-4 g-2 cis-1 a-5 g-4] |
-       [f-3 a f d a-5 f] |
-       [d-1 a-5 f-3 d-1 cis-2 d-1] |
-       [e-3\< g-5 e-3 bes,-1 g-5 e-3] |
-       [bes,-1 g-5 e-3 \!cis-2 a,-1 g-5] |
-       [f16-4\mf d-2 c-1 bes,-3] \stemup a,-2 s16 s8 s4 |
-% ugh
-%      s1 |
-       s4 s4 s4 |
-       s4 s16 [d16-1-"m.d." f-2 a-4] \stemdown [d-2-"m.g." f a] \stemup d'-1 |
-       \stemboth
-       [f' a'-4 f' d'] [f'-4 d' b d'-5] [gis-2 b a gis] |
-       <g'!4.-5\f e' a> a'8-5 
-       <
-               {
-                       \voiceone 
-                       f'4-4\> ~ | \![f'8 e'] [e'32-4 f' e'8. ~] [e'8 d'-3]
-               }
-               { \voicetwo  <d'4 a> r4 cis'-2 }
-       > |
-       \onevoice 
-       [d'8-4 c'!-3 a-1 d'-4 bes-2 g-1] |
-       [c'-5 a-3 fis-2 bes-4 g e ] |
-       [a-5 fis-"dim. e rall." d g-5 e cis-2] |
-       <
-               { \voiceone  <fis2-.-5\p a,> }
-               { \voicetwo  [d32( cis d8. ~] ) d2 }
-       > |
-       \bar "|.";
-}
-
-
-two = \melodic{
-       \clef "bass";
-       \octave c;
-%      [d32( cis )d8.] r4 r |
-       d4-\mordent r r |
-       d,4 r r |
-       d-\mordent r r |
-       d,4 r r |
-       d-\mordent r r |
-%      d r r |
-       d,4 r r |
-       [d8-2 a,-5 d-2 f-1 d-4 f-2] |
-       [a-1 f-4 a-2 d'-1 a-2 d'-1] |
-       gis4-3 r r |
-       e-4( )gis-2 e |
-       [a8-4 e'-1 c'-2 a-4 e'-1 c'-2 ] |
-       [g!-5 es'-1 c'-1 g-5 es'-1 c'-1 ] |
-       fis4-5 r r 
-       d-4( ) fis d-5 |
-       \textstyle "roman";
-       g4-\mordent^"(\\textsharp)" r r8 f!8 |
-       \textstyle "italic";
-       e4-\prall r r |
-       f4-\mordent r r8 e |
-       d4 r8 [f-1 e d] |
-       [e-2 d-3 cis-4 e-1 d-2 cis-3] |
-       d4-2( )c! bes,-4 |
-       a,( )a a, |
-       a,( )a a, |
-       a,( )a a, |
-       a,( )a a, |
-       bes, r r |
-       bes,-5( )bes bes, |
-       a, r r |
-       a,-2( )d-1 d, |
-       g, r r |
-       g,( )g g, |
-       g, r r |
-       g,( )g g, |
-       a, r r |
-       a,( )a a, |
-       a, r r |
-       a,( )a a, |
-       cis, r r |
-       cis,( )cis cis, |
-       d,-4 s16
-       \stemdown
-       [g16-1-"m.g." f e] [f-2 a d-3 f] | 
-       a,
-       \stemup
-       [d-5-"m.d." c bes,] a, 
-       \stemdown [g,-2 f,-"m.g." e,] [d, f,-4 a,-2 d-1] |
-       \stemup
-%      [f-2\ped a]
-       [f-2-"Ped." a]
-       \stemdown
-%      [d-4-"m.g." f-"cresc."] a s s8 s4\dep |
-       [d-4-"m.g." f-"cresc."] a s s8 s4-"*" |
-       \stemboth
-% ugh, whole rest has duration of one bar
-%      r1 |
-       r4 r r |
-%{
-       ugh, forget,' the 8 below:
-       [cis-3( e cis a,] [d16-1 c bes, a,] |
-       and lily dumps koor
-lilypond: ../flower/include/varray.hh:116: struct Rhythmic_grouping *& Array<Rhythmic_grouping *>::elem(int) const: Assertion `i >=0&&i<size_' failed.
-Aborted (core dumped)
-%}
-       [cis8-3( e cis a,] [d16-1 c bes, a,] |
-       [)g,8 g a-2( g-3 a-1 a,] |
-       )d4-3 d'-1 d |
-       d r r |
-       d,( )d d, |
-       d,2. |
-       \bar "|.";
-}
-
-global = \melodic{
-       \meter 3/4;
-       \key bes;
-}
-
-treble_staff = \type Staff = treble <
-       \global
-       \one
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
-       \clef "bass";
-       \global
-       \two
->
-
-grand_staff = \type Grand_staff <
-       \treble_staff
-       \bass_staff
->
-
-widea4 = \paper {
-       \paper_twenty
-%      arithmetic_basicspace = 2.;
-%      arithmetic_multiplier = 6.\pt;
-       arithmetic_basicspace = 2.;
-       arithmetic_multiplier = 8.\pt;
-       linewidth= 193.\mm;
-}
-
-\score{
-        % Moderato
-       \grand_staff
-       \paper{ \widea4 }
-       \midi{ \tempo 4 = 90; }
-}
-
diff --git a/mutopia/J.S.Bach/preludes-6.ly b/mutopia/J.S.Bach/preludes-6.ly
deleted file mode 100644 (file)
index 2a23c20..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-\header{
-filename =      "preludes-6.ly";
-title =         "6";
-% piece = "\\numfont 5";
-piece = "5";
-opus = "BWV 940";
-% blz 11
-% Six Petits Pr'eludes
-% Collection Johann Peter Kellner
-% ca 1703 - 1707
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "jcn";
-copyright =     "public domain";
-}
-
-one = \melodic{
-       \octave c';
-       \skip 4*4; |
-       \stemup
-       r4 d'2-5( cis'4-4 |
-       \stemboth
-       [)d'16-5\mf a'-4( g' f'] [e' f'-4 cis'-2 d'-1] 
-       [e'32-3 d' e'8 f'16] [d'8.-1 cis'16-3] |
-       \stemup
-       )cis'4\> ~ [cis'16 a \!d'8 ~] d'4 c'-5 |
-       b2-4 ~ b4 a-5 ~ |
-       [a16 a-5 \stemup g! f] g4-4\< ~ g f-3 ~ |
-       [\!f16 a g f] [e16 g8.-5 ~] [g16 g-5 f-4 e-3] [d-1 f8.-4 ~] |
-       [f16 f-3 e d] b4 a-5 g-5 |
-       fis4-4 g r8\<-"rall." [g16-1( bes-2] \!e'4-5 |
-       \!)d'1-5
-       \bar "|.";
-}
-
-two = \melodic{
-       \octave c';
-       r16\p [d'-5( c'-4 bes-3] [a-2 bes-3 f-1 g-2] 
-       [a32-3 g a8 bes16-1] [g8. f16-1] |
-       \stemdown
-       )f2 e2 |
-       \translator Staff=bass \octave c; \stemup
-       r4 a-1 bes-2 b-1 |
-       \translator Staff=treble \octave c'; \stemdown
-       r16 [b-3 a-1 g-2] [f8. f16-2] e2 ~ |
-       e2 ~ e4 ~ [e16 e-2 f! d-1] |
-       s4 [e32 d e8.~] e4 d4 ~ |
-       d4. [cis16-2 d-1] cis4 d-1 ~ |
-       d8 r r16 [e-2 f d] r16 [e-2 f d] r [d-1 e-3 cis] |
-       r16 [e-3 d-1 c!-2] [bes,! d8.] s4 r16\> [bes-2 a-2 \!g-1] |
-       fis1-2
-}
-
-three = \melodic{
-       \octave c;
-       \stemup
-       f2-1( e-2 |
-       \stemboth
-       [)d16 d'( c' bes] [a-4 bes-2 f-5 g-4] 
-       [a32 g a8 bes16-2]
-       [g8.-4 f16-5] |
-       )f2-5 g4-4 gis |
-       a2-2 ~ [a16 a-1( g f] [e-4 f-2 c-5 d] |
-       [e32 d e8 f16] [d8.-4 c16-5] \stemboth )c4.-5 d8-4 |
-       \stemdown
-       e4 ~ [e16 f-2( e-3 d-4] [cis a, b, cis-3] [d-4 e-3 f-2 d-4] |
-       \textstyle "finger";
-       )bes,!2-"5\\_4" a, ~ |
-       a, a, |
-       d, cis-5 |
-       a1-2
-       \bar "|.";
-}
-
-four = \melodic{
-       \octave c;
-       \stemdown 
-       d2-3 cis-4 |
-       \skip 4*12;
-       \translator Staff=treble \octave c'; \stemup \property Voice.hshift = 1 
-       a4 gis-2 ~ [gis16 gis-3 fis e]
-       \skip 4*1;
-       \translator Staff=bass \octave c; \stemdown \property Voice.hshift = 0 
-       \stemup
-       b2-1 a-1 |
-       g a4. [gis16 a] |
-       gis2 <[g8 cis> <f-3 d-1]> e4-2 |
-       d4. [fis16-3 g-2] r16 bes8.-1 ~ bes4 |
-       \stemdown
-       d1-5
-}
-
-global = \melodic{
-       \meter 4/4;
-       \key bes;
-}
-
-
-treble_staff = \type Staff = treble <
-       \global
-       \one
-       \two
->
-
-bass_staff = \type Staff = bass <
-% bass = Staff <
-       \clef "bass";
-       \global
-       \three
-       \four
->
-
-grand_staff = \type Grand_staff <
-       \treble_staff
-       \bass_staff
->
-
-a4 = \paper{
-       linewidth = 193.\mm;
-}
-
-\score{
-        % Allegretto
-       \grand_staff
-       \paper{ \a4 }
-       \midi{ \tempo 4 = 40; }
-}
-
diff --git a/mutopia/J.S.Bach/preludes.ly b/mutopia/J.S.Bach/preludes.ly
deleted file mode 100644 (file)
index 406c08d..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-\header{
-filename =      "preludes.ly";
-% mmm
-title =         "DOUZE PETITES PR\'ELUDES";
-% urg subtitle = "Clavierb\\"uchlein";
-subtitle = "Clavierbuechlein";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "jcn";
-copyright =     "public domain";
-}
-
-\include "preludes-1.ly"
-\include "preludes-2.ly"
-\include "preludes-3.ly"
-\include "preludes-4.ly"
-\include "preludes-5.ly"
-\include "preludes-6.ly"
diff --git a/mutopia/J.S.Bach/sarabande-alto.ly b/mutopia/J.S.Bach/sarabande-alto.ly
deleted file mode 100644 (file)
index 00f03ca..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-\header{
-filename =      "sarabande-alto.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Sarabande";
-% opus =        "BWV 1008";
-opus =  "";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c';
-}
-
-\include "sarabande-urtext.ly";
-
-sarabande_alto_global = \melodic{
-       \meter 3/4;
-       \key bes;
-       \clef alto;
-       \skip 2.*12;
-       \bar ":|:";
-       \skip 2.*16;
-       \bar ":|";
-}
-
-sarabande_alto_scripts = \melodic{
-}
-
-sarabande_alto_staff = \type Staff <
-       \$sarabande
-       \$sarabande_alto_global
-       \$sarabande_alto_scripts
->
-
-\score{
-       \$sarabande_alto_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 40;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/sarabande-cello.ly b/mutopia/J.S.Bach/sarabande-cello.ly
deleted file mode 100644 (file)
index 444600f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-\header{
-filename =      "sarabande-cello.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-piece = "Sarabande";
-% opus =        "BWV 1008";
-opus =  "";
-composer =      "Johann Sebastian Bach (1685-1750)";
-enteredby =     "JCN";
-copyright =     "public domain";
-}
-
-%{
- Tested Features:breaking algorithm, chords, multivoice, accents, 
- dotted slurs
-%}
-
-\version "0.1.14";
-
-urg_urg = \melodic {
-      \octave relative;
-      \octave c;
-}
-
-\include "sarabande-urtext.ly";
-
-sarabande_cello_global = \melodic{
-       \meter 3/4;
-       \key bes;
-       \clef bass;
-       \skip 2.*12;
-       \bar ":|:";
-       \skip 2.*16;
-       \bar ":|";
-}
-
-sarabande_cello_scripts = \melodic{
-}
-
-sarabande_cello_staff = \type Staff <
-       \$sarabande
-       \$sarabande_cello_global
-       \$sarabande_cello_scripts
->
-
-\score{
-       \$sarabande_cello_staff
-       \include "scs-paper.ly";
-       \midi{ 
-               \tempo 4 = 40;
-       }
-}
-
diff --git a/mutopia/J.S.Bach/sarabande-urtext.ly b/mutopia/J.S.Bach/sarabande-urtext.ly
deleted file mode 100644 (file)
index cdf66f0..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-% sarabande-urtext.ly
-% belongs together with -cello.ly and -alto.ly
-% (who is going to make a -violin.ly?)
-
-%{
-Well, there are still some scripts in this "urtext".
-But merging music and scripts doen't work too well yet (see alto_scripts).
-%}
-
-n = { \slurnormal }
-d = { \slurdotted }
-
-sarabande_a = \melodic{
-%      \octave relative;
-       \voiceone \d[d,8.()e16] e4.-\trill([d16 )e] |
-       f4. \onevoice [e8(d)c] |
-       [bes g']\n[f e16(f][g a bes)d,] |
-       cis4.-\trill\d[b8(a)g] |
-       % copy bar 1, half bar 2
-       \voiceone \d[d'8.()e16] e4.-\trill([d16 )e] |
-       %5
-       f'4. \onevoice [d8(d)e] |
-       \n[g bes16()a][c()bes a()g][d'8 f,] |
-       \voiceone e4.-\trill \onevoice \d[d8(c)bes] |
-       \voiceone \n[f' g16()a] a4. [g16()f] |
-       [g8 a16()bes]a4. [c16()d]|
-       % 11
-       \onevoice \d [e,8()f][c,, g'][f'()e] |
-       f4 f,2 |
-       \voiceone a''4 \d a4.-\trill()bes8 |
-       [c bes16()a] \onevoice [fis8.-\trill()es16][d8()c] |
-       [bes g'][a, fis'][es'()d] |
-       %16
-       \voiceone bes4.-\trill \onevoice [a8(g)f!] |
-       [g bes,()a f'(g)a] |
-       [d, as,()g es'(f)g]|
-       [cis, bes'][a g16()f][e!8 f16()d] |
-       [cis8 e16()a][a,8. g'16]\n[f8()e] |
-       %21
-       \voiceone [d e16()f]f4. [e16()d] |
-       [e8 f16()g]g4. [a16()bes] |
-       \d[a8 cis16()d][d,8 e16(f32)g][f8-\trill \n e16()d] |
-       d4 [d,16 a'( b cis][d e f )g] |
-       %25
-       [a(b c)b] c4. [b16()a] |
-       \d[b(cis d )cis] d4. \n[e16()f] |
-       \onevoice [d(cis)d f,] [a,8 e']\d[d'()cis] |
-       d4 d,,2 |
-       \octave c';
-}
-
-sarabande_b = \melodic{
-%      \octave relative;
-       \voicetwo
-% dispute
-%      d4 a,2 |
-%      this avoids the clash bug
-       d8. s16 a,2 |
-       <d,4. a'> s8*3 |
-       s2.*2
-%      d4 a,2 |
-       d8. s16 a,2 |
-       <d,4. a'> s8*3 |
-       s2. |
-       <c,4. g'> s8*3  |
-       a4 <bes4. d> r8 |
-       bes4 <g2 f'> |
-       s2.*2 |
-       \d[f8()es] e4. r8 |
-       d4 s2 |
-       s2. |
-       <g,4. d'> s8*3  |
-       s2.*4 |
-       bes4 g2  |
-       g4 <cis,4. bes'> s8 |
-       <f,8 a d'> r r g, a4 |
-       s2. |
-       f'4 fis4. s8 |
-       <g,4 d'> gis'4. s8 |
-       \octave c,;
-}
-
-
-sarabande = \type Voice \melodic<
-       \$sarabande_a
-       \$sarabande_b
->
-
diff --git a/mutopia/J.S.Bach/scs-paper.ly b/mutopia/J.S.Bach/scs-paper.ly
deleted file mode 100644 (file)
index d972223..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-\paper{
-       linewidth= 180.\mm;
-       gourlay_maxmeasures = 10.0;
-       % for simple testing only!
-%      castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
-       \include "bar-numbering.ly";
-}
diff --git a/mutopia/J.S.Bach/scsii-alto.ly b/mutopia/J.S.Bach/scsii-alto.ly
deleted file mode 100644 (file)
index e0ba581..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-\header{
-instrument="Alto";
-}
-
-instrument="alto";
-\include "solo-cello-suite-ii.ly"
-
diff --git a/mutopia/J.S.Bach/scsii-cello.ly b/mutopia/J.S.Bach/scsii-cello.ly
deleted file mode 100644 (file)
index 8434573..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-\header{
-instrument="Cello";
-}
-
-instrument="cello";
-\include "solo-cello-suite-ii.ly"
-
diff --git a/mutopia/J.S.Bach/solo-cello-suite-ii.ly b/mutopia/J.S.Bach/solo-cello-suite-ii.ly
deleted file mode 100644 (file)
index a9c1e2e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-\header{
-filename =      "solo-cello-suite-ii.ly";
-title =         "Solo Cello Suites";
-subtitle = "Suite II";
-opus =  "BWV 1008";
-composer =      "Johann Sebastian Bach (1685-1750)";
-}
-
-% urg
-
-% \include "prelude-" + \instrument + ".ly";
-
-i = "prelude-" + \instrument + ".ly";
-ii = "allemande-" + \instrument + ".ly";
-iii = "courante-" + \instrument + ".ly";
-iv = "sarabande-" + \instrument + ".ly";
-v = "menuetto-" + \instrument + ".ly";
-vi = "gigue-" + \instrument + ".ly";
-
-\include \i;
-\include \ii;
-\include \iii;
-\include \iv;
-\include \v;
-% \include \vi;
index 1fab56068f4987e99e5e014044f7daed110dcdbe..630abd597804aea54bf8f43e182ad86e10d180dc 100644 (file)
@@ -11,197 +11,193 @@ copyright =        "Public Domain";
 %{
        
 %}
-\version "0.1.14";
+\version "1.0.0";
 
 
 global = 
-    \melodic {
-         \meter 4/4;                % should be \meter C
-    }
-  
+       \melodic {
+       \time 4/4;                % should be \time C
+       }
+       
 tenor =
-    \melodic {
-        \clef "violin";
-        \octave c';
+       \melodic \relative c' {
+       \clef "violin";
 
-        \stemdown
-        r8 [c8 d e] [f. g32 f] [e8 a] |
-        [d g] ~ [g16 a g f] [e f e d] [c d c b,] |
-        [a,8 fis] g4 ~ [g8 fis16 e] [f8 d] |
-        [g f! e d] c r r g ~ |
+       \stemdown
+       r8 [c8 d e] [f. g32 f] [e8 a] |
+       [d, g] ~ [g16 a g f] [e f e d] [c d c b ] |
+       [a 8 fis'] g4 ~ [g8 fis16 e] [f8 d] |
+       [g f! e d] c r r g' ~ |
 %% 5
-        [g f16 e] f4 ~ [f16 f e8] d4 |
-        [c8 f] r16 [g f e] [f8 d] g4 ~ |
+       [g f16 e] f4 ~ [f16 f e8] d4 |
+       [c8 f] r16 [g f e] [f8 d] g4 ~ |
        g4 r4 r2 |
        r1 |
-       r8 [g8 a b] [c'. d'32 c'] [b8 e']
+       r8 [g8 a b] [c . d 32 c ] [b8 e ]
 %% 10
-       [a d'] ~ [d'16 e' d' c'] b8 r8 r d |
-       [e fis] [g. a32 g] [fis8 b e a] ~ |
+       [a, d ] ~ [d 16 e  d  c ] b8 r8 r d, |
+       [e fis] [g. a32 g] [fis8 b e, a] ~ |
        [a16 b a gis] [fis8 f!] [e d] ~ [d16 e fis gis] |
        [a gis a b] [gis fis gis a] b8 r8 r4 |
-       r8 [c8 d e] \stemup [f. g32 f] [e8 a] |
+       r8 [c,8 d e] \stemup [f. g32 f] [e8 a] |
 %% 15
-       [d g] ~ [g16 a g f] e8 \stemdown [e fis g] ~ |
+       [d, g] ~ [g16 a g f] e8 \stemdown [e fis g] ~ |
        [g8 fis] [gis8 a] ~ [a g! a b] |
        \stemboth
-       [c'. d'32 c'] [b8 e'] [a d'] ~ [d'16 e' d' c'] |
-       [b8 g' cis' d'] [e' cis' d' e' ] |
-       \stemdown a8 r8 r e [fis g] \stemboth [a. b32 a] |
+       [c . d 32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
+       [b8 g'  cis,  d ] [e  cis  d  e  ] |
+       \stemdown a,8 r8 r e [fis g] \stemboth [a. b32 a] |
 %% 20
-       [g8 c' fis b] ~ [b16 c' b a] \stemdown [g fis e d] \stemboth |
-       e4 \stemdown d ~ [d16 a g f!] [e g f! a] |
-       g4 ~ [g16 a bes8] c'4 [d'8 g] |
+       [g8 c  fis, b] ~ [b16 c  b a] \stemdown [g fis e d] \stemboth |
+       e4 \stemdown d ~ [d16 a' g f!] [e g f! a] |
+       g4 ~ [g16 a bes8] c 4 [d 8 g,] |
        \stemboth g4. f8 ~ [f e] d4 |
        \stemdown e8 a4 g8 ~ [g8 f g a] |
 %% 25
-       [bes8. c'32 b] [a8 d'] [g c'] ~ [c'16 d' c' bes] |
+       [bes8. c 32 b] [a8 d ] [g, c ] ~ [c 16 d  c  bes] |
        [a bes a g] [f g f e] d4 ~ [d8. g16] |
-       a4 r16 [f'16 d'8] e'2 |
-    }
+       a4 r16 [f' 16 d 8] e 2 |
+       }
 
 
 soprane =
-    \melodic {
-        \octave c';
-        \stemup
-        r1 |
-        r2 r8 [g8 a b] |
-        [c'. d'32 c'] [b8 e'] [a d'] ~ [d'16 e' d' c'] |
-        [b g a b] [c' b c' d'] [e' d' e' fis'] [g'8 b] |
+       \melodic \relative c' {
+
+       \stemup
+       r1 |
+       r2 r8 [g'8 a b] |
+       [c . d 32 c ] [b8 e ] [a, d ] ~ [d 16 e  d  c ] |
+       [b g a b] [c  b c  d ] [e  d  e  fis ] [g 8 b,] |
 %% 5
-       [c' a] [d'16 c' b a] [g8. g16] [f e f g] |
-       [a g a b] c'2 b4 |
-       \octave c'';
+       [c  a] [d 16 c  b a] [g8. g16] [f e f g] |
+       [a g a b] c 2 b4 |
        r8 [c8 d e] [f. g32 f] [e8 a] |
-       [d g] ~ [g16 a g f] [e8 a] ~ [a16 b a g] |
+       [d, g] ~ [g16 a g f] [e8 a] ~ [a16 b a g] |
        f2 [e8. fis16] g4 ~
 %% 10
-       g4 fis [g16 f! e d] [c d c b,] |
-       [a,16 c b, a,] g,8 r8 r16 [c16 b, a,] [gis,8 e] |
-       [d c16 b,16] [a, gis, a, b,] [c fis, a, gis,] [b,8 a,16 b,]
-       [c8 f e d] ~ [d c16 b,] [b,8. a,16] |
-       a,4 r4 r2 |
+       g4 fis [g16 f! e d] [c d c b ] |
+       [a 16 c b  a ] g 8 r8 r16 [c16 b  a ] [gis 8 e'] |
+       [d c16 b 16] [a  gis  a  b ] [c fis,  a  gis ] [b 8 a 16 b ]
+       [c8 f e d] ~ [d c16 b ] [b 8. a 16] |
+       a 4 r4 r2 |
 %% 15
-       r2 r8 [g,8 a, b,] |
-       [c8. d32 c] [b,8 c] [d e] [f!. g32 f!] |
-       [e8 a d g] ~ [g16 a g f] [e8 a] |
-       [d8 bes] [a g16 f] [g f g e] [f g g f32 g] |
-       [a16 cis d g] [e8. d16] d8 r8 r4 |
+       r2 r8 [g 8 a  b ] |
+       [c8. d32 c] [b 8 c] [d e] [f!. g32 f!] |
+       [e8 a d, g] ~ [g16 a g f] [e8 a] |
+       [d,8 bes'] [a g16 f] [g f g e] [f g g f32 g] |
+       [a16 cis, d g] [e8. d16] d8 r8 r4 |
 %% 20
-       r2 r4 r8 g, |
-       [a, b,] [c. d32 c] [b,8 e a, d] ~ |
-       [e16 e d c] [b, c d e] [f g a g] [f e d c] |
-       b,4 [c8 d] g, c4 b,8 |
-       c4 [b,8 bes,8] a, d4 c8 |
+       r2 r4 r8 g,  |
+       [a  b ] [c. d32 c] [b 8 e a,  d] ~ |
+       [e16 e d c] [b  c d e] [f g a g] [f e d c] |
+       b 4 [c,8 d] g  c4 b 8 |
+       c4 [b 8 bes 8] a  d4 c8 |
 %% 25
        [d8 e] f4 ~ [f16 a g f] [e f e d] |
-       c2 r16 [g,32 a, b,!16 c] [d e f8] ~ |
-       [f32 c d e f16 g] [a8. b16] <g2 c'2> |
-    }
+       c2 r16 [g 32 a  b !16 c] [d e f8] ~ |
+       [f32 c d e f16 g] [a8. b16] <g2 c 2> |
+       }
 
 alt =
-    \melodic {
-        \clef "bass";
-        \octave c;
+       \melodic \relative c {
+       \clef "bass";
+
        
        \stemup
        r1 |
        r |
        r |
-       r8 [g8 a b] [c'. d'32 c'] [b8 e'] |
+       r8 [g'8 a b] [c . d 32 c ] [b8 e ] |
 %% 5
-       [a d'] ~ [d'16 e' d' c'] [b8 c' ~ c' bes8] |
-       [a d' g c'] r16 [a16 b c'] d'4 |
-       g4 r8 g8 [a b] [c'. d'32 c'] |
-       [b8 e' a d'] ~ [d'16 e' d' c'!] [b!8 e'] ~ |
-       e'4 d'4 [c'16 b c' a] [e' d' c' b] |
+       [a, d ] ~ [d 16 e  d  c ] [b8 c  ~ c  bes8] |
+       [a d  g, c ] r16 [a16 b c ] d 4 |
+       g,4 r8 g8 [a b] [c . d 32 c ] |
+       [b8 e  a, d ] ~ [d 16 e  d  c !] [b!8 e ] ~ |
+       e 4 d 4 [c 16 b c  a] [e'  d  c  b] |
 %% 10
-       [c'16 a b c'] [d' c' b a] g4 r4 |
+       [c 16 a b c ] [d  c  b a] g4 r4 |
        r1 |
-       r8 [e8 fis gis] [a. b32 a] [gis8 c'] |
-       [fis b] ~ [b16 c' b a] gis8 a4 gis8 |
-       a4 r8 g8 [a b] c'. [d'32 c'] |
+       r8 [e8 fis gis] [a. b32 a] [gis8 c ] |
+       [fis, b] ~ [b16 c  b a] gis8 a4 gis8 |
+       a4 r8 g8 [a b] c . [d 32 c ] |
 %% 15
-       [b8 e' a d'] ~ [d' g] d'4 |
-       [c'8 a] e'4 d'8 r8 r4 |
-       r8 [a8 b cis'] [d'. e'32 d'] [c'!8 f'] |
-       [b8 e'] ~ [e'16 f' e' d'] cis'8 r8 r4 |
-       r8 [a8 b cis'] [d'. e'32 d'] [c'!8 fis'] |
+       [b8 e  a, d ] ~ [d'  g,] d 4 |
+       [c 8 a] e' 4 d 8 r8 r4 |
+       r8 [a8 b cis ] [d . e 32 d ] [c !8 f ] |
+       [b,8 e ] ~ [e 16 f  e  d ] cis 8 r8 r4 |
+       r8 [a8 b cis ] [d . e 32 d ] [c !8 fis ] |
 %% 20
-       [b e'] ~ [e'16 fis' e' d'] c'2 ~ |
-       [c'16 d' c' b] [a g a fis] [g8 b c' d'] |
-       [e'. f'32 e'] [d'8 g'] [c' f'] ~ [f'16 g' f' e'] |
-       d'4 [e'8 d'] ~ [d' g] g4 ~
-       [g8 c d e] [f. g32 f] [e8 a] |
+       [b, e ] ~ [e 16 fis  e  d ] c 2 ~ |
+       [c 16 d  c  b] [a g a fis] [g8 b c  d ] |
+       [e . f 32 e ] [d 8 g ] [c,  f ] ~ [f 16 g  f  e ] |
+       d 4 [e 8 d ] ~ [d  g,] g4 ~
+       [g8 c, d e] [f. g32 f] [e8 a] |
 %% 25
-       [d g] ~ [g16 a g f] [e d e f] [g a bes g] |
-       [a e f g] [a b c' a] b2 |
-       c'1 |
-    }
+       [d, g] ~ [g16 a g f] [e d e f] [g a bes g] |
+       [a e f g] [a b c  a] b2 |
+       c 1 |
+       }
 
 bass =
-    \melodic {
-        \clef "bass";
-        \octave c;
+       \melodic \relative c {
+       \clef "bass";
+
 
        \stemdown
-        r1 |
+       r1 |
        r |
        r |
        r |
 %% 5
        r2 r8 [c8 d e] |
-       [f. g32 f] [e8 a] [d g] ~ [g16 a g f] |
-       [e f e d] [c d c b,] [a,8 d a fis] |
-       [g16 a bes g] [cis8 d] a4 e4 |
-       [a16 b c' d'] [c' b a g] c'8 r8 r4 |
+       [f. g32 f] [e8 a] [d, g] ~ [g16 a g f] |
+       [e f e d] [c d c b ] [a' 8 d a fis] |
+       [g16 a bes g] [cis,8 d] a'4 e4 |
+       [a16 b c  d ] [c  b a g] c 8 r8 r4 |
 %% 10
-       r2 r8 [g,8 a, b,] |
-       [c. d32 c] [b,8 e] [a, d] ~ [d16 e d c] |
-       b,8 e4 d8 c f!4 e8 ~ |
+       r2 r8 [g, 8 a  b ] |
+       [c. d32 c] [b 8 e] [a,  d] ~ [d16 e d c] |
+       b 8 e4 d8 c f!4 e8 ~ |
        e d4 e8 [f! e16 d] e4 |
-       a,4 r4 r2 |
+       a, 4 r4 r2 |
 %% 15
-       r8 [g,8 a, b,] [c. d32 c] [b,8 e] |
-       [a,8 d] ~ [d16 e d c] [b,8 bes, a, g'] |
-       [a,8 fis g e] d4 [e8 f!] |
-       [g8. a32 g] [f8 bes] [e a] ~ [a16 bes a g] |
-       [f e f d] [g8 a] d2 ~ |
+       r8 [g 8 a  b ] [c. d32 c] [b 8 e] |
+       [a, 8 d] ~ [d16 e d c] [b 8 bes  a  g'' ] |
+       [a,, 8 fis' g e] d4 [e8 f!] |
+       [g8. a32 g] [f8 bes] [e, a] ~ [a16 bes a g] |
+       [f e f d] [g8 a] d,2 ~ |
 %% 20
-       [d16 e d c] [b, a, g, fis,] [e,8 e fis g] ~ |
+       [d16 e d c] [b  a  g  fis ] [e' 8 e fis g] ~ |
        [g a16 g16] [fis8 d] g2 ~ |
-       g2 a4 [b8 c'] |
-       [f16 a g f] [e d c b,] [c d e f] [g8 g,] |
+       g2 a4 [b8 c ] |
+       [f,16 a g f] [e d c b ] [c d e f] [g8 g, ] |
        c1 ~ |
 %% 25
        c1 ~ |
        c1 ~ |
        c1 |
-    }
+       }
 
-        
+       
 \score {
-    \melodic \type Grand_staff < 
-                \multi 2 <
-                       \global 
-                       \soprane
-                       \tenor
-                 >
-                 \multi 2 <
-                       \global
-                       \alt
-                      \bass
-                 >
-             >
+       \melodic \type GrandStaff < 
+               \type Staff = one <
+                       \global 
+                       \soprane
+                       \tenor
+               >
+               \type Staff = two <
+                       \global
+                       \alt
+                       \bass
+               >
+       >
 
-    \paper{
+       \paper{
        gourlay_maxmeasures =5.;
-%      castingalgorithme = \Wordwrap
-    }
-    \midi {
-        \tempo 4 = 84;
-    }
+       castingalgorithme = \Wordwrap
+       }
+%      \midi { \tempo 4 = 84; }
 }
 
 % EOF
index aa4418b7188b106d24da3d84f64f0f5faa4059ee..1cc7e167beb716fad0a3a0da3fd72090615b2450 100644 (file)
  Tested Features: stem direction, multivoice, forced accidentals.
 %}
 
-\version "0.1.14";
+\version "1.0.0";
 
 \include "nederlands.ly"                 % for correct parsing of note names
 
 global = \melodic {
-  \meter 4/4;
-  \key bes es as;
+  \time 4/4;
+  \accidentals bes es as;
   \skip 1*31;
   \bar "|."; |
 }
   
-dux = \melodic {
+dux = \melodic \relative c'' {
   \clef violin;
-  \octave c';
 
   \stemdown
-  r8 [c'16 b] [c'8 g] [as c'16 b] [c'8 d'] |
-  [g c'16 b] [c'8 d'] [f16 g] as4 [g16 f] |
-  [es c' b a] [g f! es d] [c8 es' d' c'] |
-  [bes a bes c'] [fis g a fis] |
-%% 5
-  g4 r16 [c d es] [f g as8~] [as16 d es f] |
-  [g a bes8] ~ [bes16 es f g] [as g f es] [d8 c'16 b!] |
+  r8 [c16 b] [c8 g] [as c16 b] [c8 d ] |
+  [g, c16 b] [c8 d ] [f,16 g] as4 [g16 f] |
+  [es c'  b a] [g f! es d] [c8 es'  d  c ] |
+  [bes a bes c ] [fis, g a fis] |
+%%5
+  g4 r16 [c, d es] [f g as8~] [as16 d, es f] |
+  [g a bes8] ~ [bes16 es, f g] [as g f es] [d8 c'16 b!] |
                                                     % forced accident!
-  c'4 r4 r8 [f' es' d'] |
+  c4 r4 r8 [f  es  d ] |
   r8 [as g f] [g f16 es] [f8 d] | 
-  g4 r8 b [c' c'16 b] [c'8 g] |
-%% 10   
+  g4 r8 b [c  c16 b] [c8 g] |
+%%10   
   as4 r8 a [bes bes16 a] [bes8 f] |
   g4 r8 g [as as g f] |
-  \translator Staff = bass \stemup \octave c;
-   r8 [as bes c'] r8 [as16 g] [as8 f8] |
-  [bes8 c' bes as] [bes g f es] |
-  [f des' c' bes] [c' as g f] |
-%% 15
+  \translator Staff = bass \stemup 
+   r8 [as, bes c ] r8 [as16 g] [as8 f8] |
+  [bes8 c  bes as] [bes g f es] |
+  [f des'  c  bes] [c  as g f] |
+%%15
   g8
-   \translator Staff = treble \stemdown \octave c';
-   [g16 fis] [g8 c] [es g16 fis!] [g8 a] |
-  [d g16 fis] [g8 a!] [c16 d] es4 [d16 c] |         % forced accident!
-  bes,8 r8 r16 [d e fis] [g a bes8] ~ [bes16 e f g] |
-  [a bes c'8] ~ [c'16 fis16 g a] [bes8 es!16 d] [es8 g,] |
-  [as, f16 es] [f8 a,8] [bes, g16 f] [g8 b,] |
-%% 20
-  [c16 f es d] [c Bes! As G] [F8 as g f] |
-  [es d es f] [B c d B] |
+   \translator Staff = treble \stemdown
+   [g'16 fis] [g8 c,] [es g16 fis!] [g8 a] |
+  [d, g16 fis] [g8 a!] [c,16 d] es4 [d16 c] |         % forced accident!
+  bes8 r8 r16 [d e fis] [g a bes8] ~ [bes16 e, f g] |
+  [a bes c8] ~ [c16 fis,16 g a] [bes8 es,!16 d] [es8 g, ] |
+  [as  f'16 es] [f8 a,8] [bes  g'16 f] [g8 b, ] |
+%%20
+  [c16 f es d] [c bes! as g] [f8 as' g f] |
+  [es d es f] [b, c d b] |
   c4 r8 e8 [f f16 e] [f8 c] |
-  d4 r8 d8 [es8 es16 d] [es8 Bes] |
+  d4 r8 d8 [es8 es16 d] [es8 bes] |
   c2 ~ [c8 d16 es] [f es f d] |
-%% 25
-  B8 r8 r B c r r es |
+%%25
+  b8 r8 r b c r r es |
   d r r f ~ f r r f |
   [es as g f] [es d es f] |
-  [B c d B] [B c] r c |
-  [f16 d es c] ~ [c8 B] c4 r8 e |
-%% 30
+  [b, c d b] [b c] r c |
+  [f16 d es c] ~ [c8 b] c4 r8 e |
+%%30
   f4 r8 f [f es16 d] [es8 <f as]> |
-  <B d> r <B d> r <G2 c> |
+  <b, d> r <b d> r <g2 c> |
 }
 
 
-comes = \melodic {
-  \octave c'';
+comes = \melodic \relative c''  {
   \stemup
 
   r1 |
   r1 |
-  r8 [g16 fis] [g8 c] [es g16 fis] [g8 a] |
-  [d8 g16 fis] [g8 a] [c16 d] es4 [d16 c] |
-%% 5
-  [bes,8 es16 d] [es8 g,8] [as, f16 es] [f8 a,
-  [bes,8 g16 f] [g8 b,] [c8 d16 es] f4 ~ |
-  [f8 es16 d] [c16 bes,! as, g,] [f,8 as g f] 
-  [es d es f] [b, c d b,] |
-  [c g16 fis] [g8 d] es4 r8 e8 |
-%% 10 
+  r8 [g'16 fis] [g8 c,] [es g16 fis] [g8 a] |
+  [d,8 g16 fis] [g8 a] [c,16 d] es4 [d16 c] |
+%%5
+  [bes8 es16 d] [es8 g,8] [as  f'16 es] [f8 a, 
+  [bes8 g'16 f] [g8 b, ] [c8 d16 es] f4 ~ |
+  [f8 es16 d] [c16 bes ! as  g ] [f8 as' g f] 
+  [es d es f] [b,  c d b ] |
+  [c g'16 fis] [g8 d] es4 r8 e8 |
+%%10 
   [f f16 e] [f8 c8] d4 r8 d |
-  [es8 es16 d] [es8 bes,] [c es16 d] [es8 f] |
-  \stemboth [bes, es16 d] [es8 f] [as,16 bes,] c4 [bes,16 as,] |
-  [G16 Es F G] [As Bes c d] [es d c d] [es f g a] |
-  [bes F G As] [Bes c d e] [f es d es] [ f g a b] |
-%% 15
-  \stemup [c'8 b16 a] [g f! es d] [c8 es d c] |
-  [Bes A Bes c] [Fis! G A Fis] |                    % forced accident
-  [G8 d16 c] d8 r8 r8 [e16 d] e8 r8 |
-  r [fis16 e] fis8 r r [G16 F] G8 r8 |
-  r8 [A16 G] A8 r r [B16 A] B8 r |
-%% 20
-  r8 [c16 b,] [c8 g,] [As c16 b,] [c8 d] |
-  [G c16 B] [c8 d] [F16 G] As4 [G16 F] |
-  [Es8 c16 B] [c8 G] As4 r8 A |
-  [Bes8 Bes16 A] [Bes8 F8] g,4 r8 G ~ |
-  [G As16 Bes] [c B c As] F2 ~ |
-%% 25
-  [F8 d16 c] [d8 F] [Es es16 d] [es8 G] |
-  [F f16 es] [f8 As] [G16 f es d] [c B A G] |
-  [c8 f es d] r [As G F] |
-  [G F16 Es] [F8 D] [As G] r A |
-  [B c] [F16 Es D C] C8 [c16 B] [c8 G] |
-%% 30
-  [As c16 B] [c8 <d b,! as,!]> [G8 c16 B] [c8 d] |
-  [F16 G] As4 [G16 F] E2 |
+  [es8 es16 d] [es8 bes ] [c es16 d] [es8 f] |
+  \stemboth [bes,  es16 d] [es8 f] [as,16 bes ] c4 [bes16 as ] |
+  [g16 es f g] [as bes c d] [es d c d] [es f g a] |
+  [bes f, g as] [bes c d e] [f es d es] [ f g a b] |
+%%15
+  \stemup [c8 b16 a] [g f! es d] [c8 es d c] |
+  [bes a bes c] [fis,! g a fis] |                    % forced accident
+  [g8 d'16 c] d8 r8 r8 [e16 d] e8 r8 |
+  r [fis16 e] fis8 r r [g,16 f] g8 r8 |
+  r8 [a16 g] a8 r r [b16 a] b8 r |
+%%20
+  r8 [c16 b ] [c8 g ] [as c16 b ] [c8 d] |
+  [g, c16 b] [c8 d] [f,16 g] as4 [g16 f] |
+  [es8 c'16 b] [c8 g] as4 r8 a |
+  [bes8 bes16 a] [bes8 f8] g4 r8 g ~ |
+  [g as16 bes] [c b c as] f2 ~ |
+%%25
+  [f8 d'16 c] [d8 f,] [es es'16 d] [es8 g,] |
+  [f f'16 es] [f8 as,] [g16 f' es d] [c b a g] |
+  [c8 f es d] r [as g f] |
+  [g f16 es] [f8 d] [as' g] r a |
+  [b c] [f,16 es d c] c8 [c'16 b] [c8 g] |
+%%30
+  [as c16 b] [c8 <d b ! as !]> [g,8 c16 b] [c8 d] |
+  [f,16 g] as4 [g16 f] e2 |
 }
 
 
-bassdux = \melodic {
+bassdux = \melodic \relative c' {
   \clef bass;
-  \octave c';
 
   r1 |
   r |
   r |
   r |
-%% 5
+%%5
   r |
   r1 |
-  r8 [c16 B] [c8 G] [As c16 B] [c8 d] |
-  [G c16 B] [c8 d] [F16 G] As4 [G16 F] | 
 \octave c; [es c' b a] [g f es d] [c d es d] [c Bes! As! G] |
+  r8 [c16 b] [c8 g] [as c16 b] [c8 d] |
+  [g, c16 b] [c8 d] [f,16 g] as4 [g16 f] | 
[es c'  b a] [g f es d] [c d es d] [c bes! as! g] |
                                                     % -> \classic_accidentals
-%% 10
-  [F bes as g] [f es d c] [Bes c d c] [Bes As G F] |
-  [Es as g f] [es des c Bes] [As8 c' bes as] |
-  [g8 f g as] [d es f d] |
+%%10
+  [f bes' as g] [f es d c] [bes c d c] [bes as g f] |
+  [es as' g f] [es des c bes] [as8 c'  bes as] |
+  [g8 f g as] [d, es f d] |
   [es as g f] [g es d c] |
-  [d bes as g] [as f es d!] |
-%% 15
-  es8 r8 r4 r8 [c Bes A] |
-  r [es d c] [d c16 Bes] [c8 d] |
-  [G8 bes16 a] [bes8 d] [es c'16 bes] [c'8 e] |
-  [f d'16 c'] [d'8 fis] g4 r16 [G A B] |
-  [c16 d es8~] [es16 A Bes c] [d es f8~] [f16 b, c d] |
-%% 20    
-  es8 r r e [f F Es! D] |                           % -> \classic_accidentals
-  r [As G F] [G F16 Es] [F8 G] |
-  [c16 d  es d] [c Bes As G] [F bes as g] [f es d c] |
-  [Bes c d c] [Bes As G F] [Es as g f] [es d c Bes] |
-  [As Bes c Bes] [As G F Es] [D g f es] [d c B A] |
-%% 25
-  G4 r4 r16 [G A B] [c d es f] |
-  [g f as g] [f es d c] [B8 c16 B] [c8 G] |
-  [As c16 B] [c8 d] [G c16 B] [c8 d] |
-  [F16 G] As4 [G16 F] Es4 r8 es |
-  [d c g G]
-%% 30
-  \multi 2 <
+  [d bes' as g] [as f es d!] |
+%%15
+  es8 r8 r4 r8 [c bes a] |
+  r [es' d c] [d c16 bes] [c8 d] |
+  [g,8 bes'16 a] [bes8 d,] [es c'16 bes] [c8 e,] |
+  [f d'16 c ] [d8 fis,] g4 r16 [g, a b] |
+  [c16 d es8~] [es16 a, bes c] [d es f8~] [f16 b,  c d] |
+%%20    
+  es8 r r e [f f, es! d] |                           % -> \classic_accidentals
+  r [as' g f] [g f16 es] [f8 g] |
+  [c16 d  es d] [c bes as g] [f bes' as g] [f es d c] |
+  [bes c d c] [bes as g f] [es as' g f] [es d c bes] |
+  [as bes c bes] [as g f es] [d g' f es] [d c b a] |
+%%25
+  g4 r4 r16 [g a b] [c d es f] |
+  [g f as g] [f es d c] [b8 c16 b] [c8 g] |
+  [as c16 b] [c8 d] [g, c16 b] [c8 d] |
+  [f16 g] as4 [g16 f] es4 r8 es |
+  [d c g g]
+%%30
+  \type Staff <
     { \stemup c2 ~ | c1 ~ | c1 }
-    { \stemdown C2 ~ | C1 ~ | C1 }
+    { \stemdown c,2 ~ | c1 ~ | c1 }
   >
 }
 
         
 \score {
  
-    \type Grand_staff < 
+    \type GrandStaff < 
       \type Staff = treble < 
         \global 
         \dux
@@ -179,11 +176,13 @@ bassdux = \melodic {
     >
 
   \paper {
-    gourlay_maxmeasures = 5.;
+    gourlay_maxmeasures =5.;
+%    castingalgorithm = \Wordwrap;
+
   }
 
   \midi {
-    \tempo 4 = 84;
+    \tempo 4 =84;
   }
 }
 
index 368602e9f7c11097ac3f03ec5f10e84a1ec7a4f5..2cb87d29139e5706fcb8e21af3d6336be6650759 100644 (file)
@@ -8,22 +8,21 @@ enteredby =    "Shay Rojansky";
 copyright =     "Public Domain";
 }
 
-\version "0.1.14";
+\version "1.0.0";
 
 global = 
     \melodic {
-        \meter 4/4;                % should be \meter C
+        \time 4/4;                % should be \time C
     }
   
 
 % should do programmable input.
 
 soprane =
-    \melodic {
+    \melodic \transpose c'' {
         \clef "violin";
-        \octave c';
 
-       \multi 2 <
+       \type Staff <
        % Real soprane
        {\stemup
        r8 [g16 c'] [e' g c' e'] r8 [g16 c'] [e' g c' e'] |
@@ -81,7 +80,7 @@ soprane =
 bass =
     \melodic {
         \clef "bass";
-        \octave c;
+
 
        \stemdown
        c'2 c' |
@@ -94,7 +93,7 @@ bass =
        b b |
        a a |   
 %% 10
-       \multi 2 <
+       \type Staff <
        % Alt
        {\stemup
        r16 a8. ~ a4 r16 a8. ~ a4 |
@@ -162,7 +161,7 @@ bass =
 
         
 \score {
-    \melodic \type Grand_staff < 
+    \melodic \type GrandStaff < 
                   <
                        \global 
                        \soprane
index 98f6c8a309054170dfcf50904b77f931849de77a..8d8eb6f5d03c9fc788a40106d6a54019606bdcf5 100644 (file)
@@ -12,8 +12,7 @@ define(handymeasure, `intromeasure(translit($*,` ', `,'))')
 
 
 
-trebleIntro=\melodic {
-\octave c';
+trebleIntro=\melodic \transpose c'' {
 handymeasure(c' es d c)
 handymeasure(as f e c)
 handymeasure(b f es d)
@@ -40,7 +39,6 @@ handymeasure(as c B d)
 }
 
 bassIntro = \melodic {
-\octave c;
 handymeasure(c g f es)
 handymeasure(c as g f)
 handymeasure(c as g f)
@@ -71,7 +69,6 @@ handymeasure(G es d f)
 
 middlepiece = \melodic
 {
-       \octave c;
        \stemdown
        [G B d] 
        \stemup f [as f ef] [b f d' b'] [as f e f] |
@@ -79,10 +76,9 @@ middlepiece = \melodic
        \stemup g [c' g fis g ] [es' c' g' es'] [c' as g as]| 
        \stemdown [G A fis] 
        \translator Staff=treble
-       \stemsboth \octave c';
-       c [es c B c] [fis  c a fis] [es c B c] |
+       \stemsboth \transpose c'' { c [es c B c] [fis  c a fis] [es c B c] }
 }
 
 
 
-}
+
index 7728ec9abbf0527eebbb0591df0e05e6412681d5..f788a8272449b6bb258538e1e04bc156eddffa9a 100644 (file)
@@ -1,21 +1,16 @@
 # mutopia/Makefile
 
-# subdir level:
-#
 depth = ..
-#
 
-# descent order into subdirectories:
-#
 SUBDIRS = J.S.Bach Coriolan W.A.Mozart
-EXTRA_DISTFILES +=  TODO
+
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
+
+EXTRA_DIST_FILES +=  TODO
 
 examples=standchen gallina
 
 
-#
-# generic stuff/Makefile
-#
-include $(depth)/make/Mutopia.make
 
-include $(depth)/make/WWW.make
+include $(stepdir)/WWW.make
index 7239bc104c4a7c18dec9f23b50574460c0d040e6..5b6b806a81f10ca8c30bda731006eb0d97f297fd 100644 (file)
@@ -1,3 +1,4 @@
        - more composers > 70y +
        - (more) free composers
-       - beethoven's coriolan
+       - Beethoven's Coriolan: brass and woodwind 
+       - more Cello Suites
index 3eafd9f141f83bf4a8144287330a014603aeff32..92a284a43112bc825f664433d425e0ff7efc863c 100644 (file)
@@ -1,21 +1,10 @@
+# mutopia/W.A.Mozart
 
-# subdir level:
-#
 depth = ../..
-#
 
-EXTRA_DISTFILES=
-
-# descent order into subdirectories:
-#
-SUBDIRS = 
-# 
-
-# generic stuff/Makefile
-#
-include ./$(depth)/make/Mutopia.make
-#
+include $(depth)/make/Stepmake.make
+include $(make-dir)/Mutopia.make
 
 examples=cadenza
 
-include $(depth)/make/WWW.make
+include $(stepdir)/WWW.make
index 8fcf3f08d7489befe7eda5f3d40fea24e1aa3dbd..431214056af3972003502fde5cbe3918b3b2501b 100644 (file)
@@ -13,7 +13,7 @@ Tested Features: cadenza mode
 Ugh.. Wish we had grace notes....  It adds another dimension to this
 piece of music.  %}
 
-\version "0.1.14";
+\version "1.0.0";
 
 
 cad = \melodic  \relative c' {
index 18998066bc7ab7263770a059ff2a874f43d0c00e..a4a6998269c91ab57e80efd1d05dbbdc2193dfbf 100644 (file)
@@ -1,12 +1,28 @@
+\header{
+title =         "Konzert Nr. 3 Es dur"
+subtitle = "f\\\"ur Horn und Orchester";
+description =   "Third horn concerto, for horn in Es";
+composer =      "W. A. Mozart (1756-1792)";
+enteredby =     "HWN";
+opus = "K.V. 447";
+copyright =     "public domain";
+}
 
 
-\version "0.1.14";
+\version "1.0.0";
 
 allegro =
        \melodic
        \relative c'
 {
-
+       \time 4/4;
+       \partial 4;
+       R1*4
+       c'2^"tutti" g
+       c, r
+       R1*1
+       r8 [g' g g] [g g e c]
+       g4 g, r2
        R1*18
        r2 r4 g'4 |
        e'4. () c8 [f (d c )b ]
@@ -61,7 +77,7 @@ allegro =
        d
        c
        c,
-       e''
+       e'
        e,
        c'2 [b8( a gis )a]
        [gis8 e gis b ] e4 r |
@@ -133,8 +149,8 @@ allegro =
 
 romanze = \melodic \relative c' {
 
-       \key bes;
-       \meter 2/2;
+       \key F;
+       \time 2/2;
        c'4.() f8 a,4 a
        [bes8( c d bes] )g4 r8 g
        a r bes r c r [d()bes]
@@ -157,7 +173,7 @@ romanze = \melodic \relative c' {
        % mark B
        c1\f
        R1*9
-       f''4.(\p )d8 b4 r8 g
+       f'4.(\p )d8 b4 r8 g
        g'4.() e8 c4 r8 cis |
        d4(~ [d16 e d )e] [f8 () d f() d]
        c2()b4 r
@@ -220,7 +236,7 @@ rondo = \melodic    \relative c'
 {
        \partial 8;
        g'8 |
-       \meter 6/8;
+       \time 6/8;
        \grouping 8*3 8*3;
        \rondotheme
        
@@ -342,11 +358,14 @@ rondo = \melodic  \relative c'
        c4 r8 c4 r8
        c4 r8 r4 r8
 }
+
+default_paper = \include "part-paper.ly"
+
 \score
 {
-       {       \property Score.SkipBars = 1
-               \allegro
-       }
+       \allegro
+       \paper{ }
+       \midi{ \tempo 4=90; }
 }
 
 \score
@@ -354,14 +373,15 @@ rondo = \melodic  \relative c'
        {       \property Score.SkipBars = 1
                \romanze
        }
+               \paper{ \tempo 4 = 70; }        
+       \midi{}
 }
 \score
 {
-       {       \property Score.SkipBars = 1
-               \rondo
-       }
+       \rondo
+
        \paper{
-%      castingalgorithm =\Wordwrap;
+               \tempo 4 = 100;
        }
        \midi{}
 }
diff --git a/mutopia/W.A.Mozart/out/dummy.dep b/mutopia/W.A.Mozart/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 916a86c6beb6ae07e292988da7c316f5a4c9fc82..5d97250b0010898bd48f82462459accc9b38690d 100644 (file)
@@ -1,11 +1,13 @@
 \header{
-title =         "La Gallina a 2 violini";
+title =         "La Gallina Ã  2 violini";
 date =  "1637";
 source =        "the manuscript of Canzoni overo Sonate Concertate "
         "libro terzo, opera duodecima ";
 composer =      "Tarquinio Merula (1594/95-1665)";
 enteredby =     "Mats Bengtsson";
 copyright =     "Public Domain ";
+subtitle = "from Canzoni overo Sonate Concertate libro terzo, "
+       "opera duodecima 1637";
 }
 
 
@@ -43,149 +45,147 @@ Voice engraver by uncommenting the lines in the paper
 definition below. --MB
 %} 
 
-\version "0.1.15";
+\version "1.0.0";
 
-vi1=\melodic{
-  \meter 4/4;
-  \octave c'';
+vi1=\melodic \relative c'' {
+  \time 4/4;
 
-  [d8 d d d] d4 [A16 B c A] |
-  [B8 G ][ G G16 A][ B8 G ][ G G16 A] | 
-  [B8 G ][ G A16 B] c4 B |
-  [A8 D] G2 Fis4 |
-  G2 r2 |
+  [d8 d d d] d4 [a16 b c a] |
+  [b8 g ][ g g16 a][ b8 g ][ g g16 a] | 
+  [b8 g ][ g a16 b] c4 b |
+  [a8 d,] g2 fis4 |
+  g2 r2 |
   r1 |
-  [d8 d d d] d4 [A16 B c A] |
-  [B8 G ][ G G16 A][ B8 G ][ G G16 A] | 
-  [B8 G ][ G A16 B][ c8 e d c] |
-  [B G] c2 B4 |
+  [d'8 d d d] d4 [a16 b c a] |
+  [b8 g ][ g g16 a][ b8 g ][ g g16 a] | 
+  [b8 g ][ g a16 b][ c8 e d c] |
+  [b g] c2 b4 |
   c2 r |
   r1 |
-  [g8 g g g] g4 [d16 e f d] |
+  [g'8 g g g] g4 [d16 e f d] |
   [e8 c ][ c c16 d][ e8 c ][ c c16 d] |
   [e8 c ][ c d16 e] f4 e |
-  [d8 G] c2 B4 |
-  [c8 G ][ G G16 A] B4 G |
-  r8 G [G G16 A] B4 G |
-  r8 [E16 Fis ][ G8 G] [ Fis! G G Fis!] |
-  G2 r |
+  [d8 g,] c2 b4 |
+  [c8 g ][ g g16 a] b4 g |
+  r8 g [g g16 a] b4 g |
+  r8 [e16 fis ][ g8 g] [ fis! g g fis!] |
+  g2 r |
   r1 |
-  r16 [d c B ][ A G Fis E] [D8 d ][ d d16 c] |
-  [B8 d ][ d d16 c][ B8 d ][ d d16 e] |
+  r16 [d' c b ][ a g fis e] [d8 d' ][ d d16 c] |
+  [b8 d ][ d d16 c][ b8 d ][ d d16 e] |
   fis4 g2 fis!4 |
-  r16 [g f e ][ d c B A][ G8 g ][ g g16 f] |
+  r16 [g f e ][ d c b a][ g8 g' ][ g g16 f] |
   [e8 g ][ g g16 f][ e8 g ][ g g16 a] |
-  b4 c'2 b4 |
-  [c'8 g ][ g g16 f] e4 d |
+  b4 c2 b4 |
+  [c8 g ][ g g16 f] e4 d |
   r8 g [g g16 f] e4 d |
-  r8 [d16 A ][ B8 B16 c] A2 |
-  B1 |
-  \meter 3/2;
+  r8 [d16 a ][ b8 b16 c] a2 |
+  b1 |
+  \time 3/2;
   \tempo 2=140;
   r4 d d d d d |
   e1. |
   r4 c c c c c |
   d1. |
-  r4 [d8 c] B4 [c8 d] G4 [A8 B] |
-  E1. |
-  r4 [e8 d] cis4 [d8 e] A4[ B8 cis!] |
-  Fis1. |
-  r4 d d d d d |
-  e [e8 d] c4 [d8 e] A4 [B8 c] |
-  Fis4 [fis8 e] d4 [e8 fis!] B4 [c8 d] |
-  G4 g g g g g |
-  a4 [c'8 b] a4 [b8 c'] f4 [g8 a] |
-  d4 g g g g g |
-  a [d8 c] B4 [c8 d] A2 |
-  \meter 4/4;
+  r4 [d8 c] b4 [c8 d] g,4 [a8 b] |
+  e,1. |
+  r4 [e'8 d] cis4 [d8 e] a,4[ b8 cis!] |
+  fis,1. |
+  r4 d' d d d d |
+  e [e8 d] c4 [d8 e] a,4 [b8 c] |
+  fis,4 [fis'8 e] d4 [e8 fis!] b,4 [c8 d] |
+  g,4 g' g g g g |
+  a4 [c8 b] a4 [b8 c] f,4 [g8 a] |
+  d,4 g g g g g |
+  a [d,8 c] b4 [c8 d] a2 |
+  \time 4/4;
   \tempo 4=80;
-  B1 |
-  [d8 d d d] d4 [A16 B ][ c A] |
-  [B8 G ][ G G16 A] [B8 G ][ G G16 A] | 
-  [B8 G]  c2 B4 |
+  b1 |
+  [d8 d d d] d4 [a16 b c a] |
+  [b8 g ][ g g16 a] [b8 g ][ g g16 a] | 
+  [b8 g]  c2 b4 |
   c2 r |
-  [g8 g g g] g4 [d16 e f d] |
-  [e8 G ][ G G16 A] [B8 d ][ d d16 e] |
+  [g'8 g g g] g4 [d16 e f d] |
+  [e8 g, ][ g g16 a] [b8 d ][ d d16 e] |
   fis4 g2 fis!4 |
-  r16 [g f e ][ d c B A] [G8 g ][ g g16 f] |
+  r16 [g f e ][ d c b a] [g8 g' ][ g g16 f] |
   e2 r8 d [d d16 e] |
-  [fis a g fis ][ e d c B] [A8 d ][ d d16 e] |
+  [fis a g fis ][ e d c b] [a8 d ][ d d16 e] |
   fis4 g2 fis!4 |
   \cadenza 1;
   g\breve
   \bar "|.";
 }
 
-vi2=\melodic{
-  \meter 4/4;
-  \octave c'';
+vi2=\melodic \relative c'' {
+  \time 4/4;
 
   r1 | r | r | 
-  [d8 d d d] d4 [A16 B c A] |
-  [B8 G ][ G G16 A] [B8 G ][ G G16 A] | 
-  [B8 G ][ G A16 B] c4 B |
-  [A8 D] G2 Fis4 |
-  G2 r2 |
+  [d8 d d d] d4 [a16 b c a] |
+  [b8 g ][ g g16 a] [b8 g ][ g g16 a] | 
+  [b8 g ][ g a16 b] c4 b |
+  [a8 d,] g2 fis4 |
+  g2 r2 |
   r1 |
-  [g8 g g g] g4 [d16 e f d] |
+  [g'8 g g g] g4 [d16 e f d] |
   [e8 c ][ c c16 d] [e8 c ][ c c16 d] |
   [e8 c ][ c d16 e] f4 e |
-  [d8 G] c2 B4 |
+  [d8 g,] c2 b4 |
   c2 r |
   r1 |
-  [g8 g g g] g4 [d16 e f d] |
-  e2 r8 G [G G16 A] |
-  B4 G r8 G [G A16 B] | 
-  c4 B A2 |
-  G r16 [d c B ][ A G Fis E] |
-  [D8 d ][ d d16 c] [B8 d ][ d d16 e] |
+  [g'8 g g g] g4 [d16 e f d] |
+  e2 r8 g, [g g16 a] |
+  b4 g r8 g [g a16 b] | 
+  c4 b a2 |
+  g r16 [d' c b ][ a g fis e] |
+  [d8 d' ][ d d16 c] [b8 d ][ d d16 e] |
   fis4 g g4. fis!8 |
   g2 r |
-  r16 [d c B ][ A G Fis E] [D8 d ][ d d16 c] |
-  B4 c2 B4 |
-  c d G2 |
-  r16 [g f e ][ d c B A] [G8 g ][ g g16 f] |
+  r16 [d c b ][ a g fis e] [d8 d' ][ d d16 c] |
+  b4 c2 b4 |
+  c d g,2 |
+  r16 [g' f e ][ d c b a] [g8 g' ][ g g16 f] |
   e4 d r8 g [g g16 f] |
-  e4 d r8 [c16 G ][ B8 B16 c] |
-  A4 G2 Fis4 |
-  G1 |
-  \meter 3/2;
+  e4 d r8 [c16 g ][ b8 b16 c] |
+  a4 g2 fis4 |
+  g1 |
+  \time 3/2;
   r1. |
-  r4 [g8 f] e4 [f8 g] c4 [d8 e] |
-  A1. |
-  r4 [a8 g] fis4 [g8 a] d4 [e8 fis!] |
-  B1. |
-  r4 g g g g g |
+  r4 [g'8 f] e4 [f8 g] c,4 [d8 e] |
+  a,1. |
+  r4 [a'8 g] fis4 [g8 a] d,4 [e8 fis!] |
+  b,1. |
+  r4 g' g g g g |
   a1. |
   r4 a a a a a |
-  b [d8 c] B4 [c8 d] G4 [A8 B] |
-  E4 [g8 f] e4 [f8 g] c4 [d8 e] |
-  A4 [a8 g] fis4 [g8 a] d4 [e8 fis!] |
-  B4 [b8 a] g4 [a8 b] e4 [fis8 g] |
-  c4 A A A A A |
-  B [d8 c] B4 [c8 d] D4 E |
-  Fis2 G Fis! |
-  \meter 4/4;
-  G1 |
+  b [d,8 c] b4 [c8 d] g,4 [a8 b] |
+  e,4 [g'8 f] e4 [f8 g] c,4 [d8 e] |
+  a,4 [a'8 g] fis4 [g8 a] d,4 [e8 fis!] |
+  b,4 [b'8 a] g4 [a8 b] e,4 [fis8 g] |
+  c,4 a a a a a |
+  b [d8 c] b4 [c8 d] d,4 e |
+  fis2 g fis! |
+  \time 4/4;
+  g1 |
   r1 | r1 |
-  [g8 g g g] g4 [d16 e f d] |
-  [e8 c ][ c c16 d] [e8 G ][ G G16 A] |
-  [B8 G] c2 B4 |
+  [g'8 g g g] g4 [d16 e f d] |
+  [e8 c ][ c c16 d] [e8 g, ][ g g16 a] |
+  [b8 g] c2 b4 |
   c2 r |
-  r16 [d c B ][ A G Fis E] [D8 d ][ d d16 c] |
-  B4 c2 B4 |
-  [c8 G ][ G G16 A] [B d c B ][ A G Fis E] |
-  [D8 d ][ d d16 e] [fis16 a g fis ][ e d c B] |
-  [A d c B ][ A G Fis E] D4 d |
+  r16 [d c b ][ a g fis e] [d8 d' ][ d d16 c] |
+  b4 c2 b4 |
+  [c8 g ][ g g16 a] [b d c b ][ a g fis e] |
+  [d8 d' ][ d d16 e] [fis16 a g fis ][ e d c b] |
+  [a d c b ][ a g fis e] d4 d' |
   \cadenza 1;
-  B\breve
+  b\breve
   \bar "|.";
 }
 
-bc=\melodic{
+
+bc=\melodic\transpose c'{
   \clef "bass";
-  \meter 4/4;
-  \octave c;
+  \time 4/4;
 
   G2 d^"4 3" | G1 |
   g2 c4 G | d1^"3 4 3" |
@@ -203,7 +203,7 @@ bc=\melodic{
   G1^"3 4 3" | c4 B c g |
   c B c G | d1^"3 4 3" |
   G1 |
-  \meter 3/2;
+  \time 3/2;
   g1. | c |
   f | d^"\\textsharp" |
   g | c |
@@ -212,7 +212,7 @@ bc=\melodic{
   d^"\\textsharp" | e |
   f | g1 B2 |
   d1.^"3 4 3" |
-  \meter 4/4;
+  \time 4/4;
   G1 |
   g2 fis | g G |
   g1^"3 4 3" | c |
@@ -226,7 +226,7 @@ bc=\melodic{
 }
 
 \score{
-  \type Staff_group <
+  \type StaffGroup <
     \vi1
     \vi2
     \bc
index e89abf35e70219201f62093141a64e0f721c716c..48fed8cf124f8df6cb48dc3647f84517ef0b264a 100644 (file)
@@ -8,7 +8,7 @@ enteredby =      "jcn";
 copyright =     "public domain";
 latexheaders=    "headers";
 } 
-\version "0.1.15";
+\version "1.0.0";
 
 %{
 Silly latex file dropped; use ly2dvi
@@ -30,16 +30,16 @@ Converted to relative octave from los-toros-oboe.ly:
 hoboonestart = \melodic
   \relative c'{
 % ugh: cant copy: allegro/primo tempo
-       \textstyle "large";
+       \property Voice . textstyle =  "large"
        [es''16-.^"Allegro" es-. es-. es-.] [es8-. d-.] |
-       \textstyle "italic";
+       \property Voice . textstyle =  "italic"
 }
 
 hobooneintro = \melodic  \relative c'{
 
-%      \textstyle "roman";
+%      \property Voice . textstyle =  "roman"
 %      [es''16-.-"Allegro" es-. es-. es-.] [es8-. d-.] |
-%      \textstyle "italic";
+%      \property Voice . textstyle =  "italic"
        [f''8.-> es16(] [)d8 c-.] |
        [bes16( c d es] [)d8 c-.] |
        [bes-. as->~] [as16( g f g] |
@@ -107,18 +107,18 @@ hoboonemid = \melodic     \relative c'{
        [d16-. d-. d-. d-.] [d8.-. es16->] |
        [d16 d d d] [d8 es16-.] r16-\fermata^"court"^"tr\\`es" |
        % Un peu plus lent.
-       \textstyle "bold";
+       \property Voice . textstyle =  "bold"
 
 % ugh
-%      d4(\<^"Un peu plus lent" \textstyle "italic; _"tr\\`es \\'el\\'egant"
+%      d4(\<^"Un peu plus lent" \property Voice . textstyle =  "italic _"tr\\`es \\'el\\'egant"
 %      d4(\^"Un peu plus lent et \\'el\\'egant"<
-       \textstyle "italic"; 
+       \property Voice . textstyle =  "italic" 
        d4(\<
        [e8 \!fis8] |
 %      [)b-. a-.] [g16( fis e )d] |
-       \textstyle "bold";
-       [)b-.^"Un peu plus lent et \\'el\\'egant" a-.] [''g16( fis' e )d] |
-       \textstyle "italic"; 
+       \property Voice . textstyle =  "bold"
+       [)b-.^"Un peu plus lent et \\'el\\'egant" a-.] [g,,16( fis' e )d] |
+       \property Voice . textstyle =  "italic" 
        [d( c b\< c] [)\!fis'8-. e-.] |
        d,,4-> ~ [d16 e( fis g] |
        [a b\< d fis] [)\!a8-. g-.] |
@@ -154,9 +154,9 @@ hoboonemid = \melodic       \relative c'{
 hoboonesecondstart = \melodic   \relative c'{
 
 % ugh: cant copy: allegro/primo tempo
-       \textstyle "large";
+       \property Voice . textstyle =  "large"
        [es''16-.\ff^"Tempo 1$^o$" es-. es-. es-.] [es8-. d-.] |
-       \textstyle "italic";
+       \property Voice . textstyle =  "italic"
        
 }
        
@@ -195,7 +195,7 @@ hoboonelast = \melodic   \relative c'{
        [bes'16-.\ff bes-. bes-. bes-.] [bes8-. ces16->] r16^"court"-\fermata |
        % ugh: eight measures rest (ugh: r1 -> four beats...)
        % eiht measures rest..
-       \textstyle "bold";
+       \property Voice . textstyle =  "bold"
 %      r2^"Un peu plus lent et \\'el\\'egant"
        R2*8
 %      r4 r8\p bes |
@@ -203,14 +203,14 @@ hoboonelast = \melodic   \relative c'{
        r8\p bes,, |
 %      g2->^"Un peu plus lent et \\'el\\'egant" ~ |
        g2-> ~ |
-       \textstyle "italic";
+       \property Voice . textstyle =  "italic"
        g8 r r c |
        c2-> ~ |
        c8 r r bes'\f |
        [bes8.->\f g16-.] [es16-. bes-. g-. as-.] |
        [bes-.-"dim." c-. d-. f-.] [es8-. c-.] |
        d2-> ~ |
-       [d16-"dim."( es f g] [)'as8 as-.] |
+       [d16-"dim."( es f g] [)as,8 as-.] |
        [ces8.->\p( )bes16-.] bes4 ~ |
        [bes16( c! d f] [)es8 g,-.] |
        [g8.->( )as16] as4 ~ |
@@ -233,9 +233,9 @@ hoboonelast = \melodic   \relative c'{
        g8-. r f4-> ~ |
        [f8 es-. ces8.-. as16-.] |
        % `a deux
-       \textstyle "large";
+       \property Voice . textstyle =  "large"
        [ces8.->^"Plus vite" bes16-.(] [a bes es d] |
-       \textstyle "italic";
+       \property Voice . textstyle =  "italic"
        [)c!8.-> bes16] [a( bes es )d] |
        [c->( bes es )d] [c->( bes es )d] |
        % same measure
@@ -244,9 +244,9 @@ hoboonelast = \melodic   \relative c'{
        [g )f d( es] [f g as a] |
        [c )bes bes,( c] [d es f g] |
        [as g f g] [as bes c d] |
-       \textstyle "large";
+       \property Voice . textstyle =  "large"
        [)es-.^"Tempo 1$^o$" g,-. g-. g-.] [g8-. g-.] |
-       \textstyle "italic";
+       \property Voice . textstyle =  "italic"
        bes4.-> g8-. |
        gis2->( |
        )as! |
@@ -261,9 +261,9 @@ hoboonelast = \melodic   \relative c'{
        g4.-> g8-. |
        es4.-> es8-. |
        bes4.-> bes8-. |
-       \textstyle "large";
+       \property Voice . textstyle =  "large"
        g'4.->^"Presto" g8-. |
-       \textstyle "italic";
+       \property Voice . textstyle =  "italic"
        es4.-> es8-. |
        [bes-. bes-. es-. g-.] |
        [bes-. bes,-. es-. g-.] |
@@ -282,13 +282,13 @@ hoboone = \melodic {
 }
 
 global = \melodic{
-       \key bes es as;
-       \meter 2/4;
+       \key es;
+       \time 2/4;
        \skip 4*110;
-       \key fis; |
+       \key g; |
        \bar "||";
        \skip 4*58;
-       \key bes es as; |
+       \key es; |
        \bar "||";
        \skip 4*220;
        \bar "|.";
diff --git a/mutopia/out/dummy.dep b/mutopia/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 8e03c6e663f0dc077cbc659875d9daa29f913db5..9454dfede0d086757d2a5b504f2e6e215ec93879 100644 (file)
@@ -9,6 +9,6 @@ description = "A schubert song in 16 pt";
 copyright =     "public domain";
 } 
 
-\version "0.1.15";
+\version "1.0.0";
 
 \include "standchen.ly"
index 1eb5190776a547e8826cb11a89020e5a1045848b..ea129b36c34f9a20a79adc230a58b71ffa1e2b9a 100644 (file)
@@ -9,7 +9,7 @@ copyright =      "public domain";
 description = "A schubert song in 20 pt";
 } 
 
-\version "0.1.15";
+\version "1.0.0";
 
 % fool make-website
 % \include "standchen.ly";
index 2400bf28d6f88d64239b79b6a497a38b499f7737..64f5e71d681d18b57068bf4817f0aa4582684a7f 100644 (file)
@@ -1,7 +1,7 @@
 \header{
 filename =      "standchen.ly";
 title    = "St\"andchen";
-subtitle = "(Serenade)\\\``Leise flehen meine Lieder''";
+subtitle = "(Serenade)\\\``Leise flehen meine Lieder";
 opus =  "D. 957 No. 4";
 composer =      "Franz Schubert (1797-1828)"
         "Text by Ludwig Rellstab (1799-1860)";
@@ -10,68 +10,65 @@ copyright =  "public domain";
 } 
 
 %{
- Tested Features@ multivoice, accents, lyrics, chords, piano music,
+ Tested Features@ multivoice accents lyrics chords piano music
 multiple \paper{}s in one \score 
 %}
 
-\version "0.1.15";
+\version "1.0.0";
 
-$vocal_verse1 = \melodic{
-       \octave c';
-       
+$vocal_verse1 = \melodic\relative c{
        % ugh: treble/bass
 %      \clef treble;
 %      \clef violin;
-       [/3 g8( )as] g \] c'4. g8 |
-       [/3 f8( )g] f \] c'4 f8 r |
+       [/3 g''8( )as] g \] c4. g8 |
+       [/3 f8( )g] f \] c'4 f,8 r |
        g4.-> f8 [/3 f( )es] d \] |
        es2 r4 |
        % ugh: a whole should be a measure
        %r1 |
-       r2. |
-       r2. |
-       [/3 g8( )as] g \] es'4. g8 |
-       [/3 f8( )g] f \] d'4. c'8 |
+       R2. |
+       R2. |
+       [/3 g8( )as] g \] es'4. g,8 |
+       [/3 f8( )g] f \] d'4. c8 |
        bes4. as8 [/3 as( )g] f \] |
        g2 r4 |
-       r2. |
-       r2. |
-       g8. b16 es'4. d'8 |
-       c'8. g16 es4. c8 |
+       R2. |
+       R2. |
+       g8. b16 es4. d8 |
+       c8. g16 es4. c8 |
        % [/3 as\grace( bes ] )
-       [/3 as8( )g] as \] c'4. as8 |
+       [/3 as'8( )g] as \] c4. as8 |
        g2. |
        %[/3 f\grace( g] )
        [/3 f8( )e] f \] as4. f8 |
        es!2. |
-       g8. b16 es'4. d'8 |
-       c'8. g16 e4. c8 |
+       g8. b16 es4. d8 |
+       c8. g16 e4. c8 |
        % [/3 a\grace( b] )
-       [/3 a!8( ) gis] a \] c'4. a8 |
+       [/3 a'!8( ) gis] a \] c4. a8 |
        g!2. |
        % [/3 a\grace( b] )
-       [/3 d'8\f cis'] d' \] f'4. b8 |
-       c'!2. |
+       [/3 d'8\f cis] d \] f4. b,8 |
+       c!2. |
 }
 
-$vocal_through = \melodic{
-       \octave c';
-       g8. g16 b8. b16 d'8. d16 |
+$vocal_through = \melodic\relative c{
+       g''8. g16 b8. b16 d8. d,16 |
        c'4 b r |
-       g4. b8 d'8. c'16 |
+       g4. b8 d8. c16 |
        b2 r4 |
-       e'4. d'8 [/3 d'( )c'] b \] |
-       a8. b16 c'4-> a8 r |
-       r2. |
-       r2. |
+       e4. d8 [/3 d( )c] b \] |
+       a8. b16 c4-> a8 r |
+       R2. |
+       R2. |
        % 4 bars copied from end verse 1
        % [/3 a\grace( b] )
-       [/3 a!8( ) gis] a \] c'4. a8 |
+       [/3 a!8( ) gis] a \] c4. a8 |
        g!2. |
        % [/3 a\grace( b] )
-       [/3 d'8\f cis'] d' \] f'4. b8 |
-       c'!2. ~ |
-       c'4 r c' |
+       [/3 d'8\f cis] d \] f4. b,8 |
+       c!2. ~ |
+       c4 r c |
        as2. |
        g |
        es2 r4 |
@@ -87,8 +84,8 @@ $lyric_verse1 = \lyric{
        _ _ _ |
 % 11
        \[/3 In4 den8 \] stil-4. len8 |
-       \[/3 Hainr4 her-8 \] nie-4. der,8 |
-       Lieb4. chen,8 \[/3 komm4 zu8 \] |
+       \[/3 Hainr4 her-8 \] nie-4. der8 |
+       Lieb4. chen8 \[/3 komm4 zu8 \] |
        mir!2 _4 |
        _4 _ _ |
        _ _ _ |
@@ -102,9 +99,9 @@ $lyric_verse1 = \lyric{
 % 23 
        Des8. Ver-16 r\"a-4. ters8 |
        feind-8. lich16 Lau-4. schen8 |
-       \[/3 F\"urch-4 te,8 \] Hol-4. de,8 |
-       nicht,2. |
-       \[/3 f\"urch-4 te,8 \] Hol-4. de,8 |
+       \[/3 F\"urch-4 te8 \] Hol-4. de8 |
+       nicht2. |
+       \[/3 f\"urch-4 te8 \] Hol-4. de8 |
        nicht.2. |
 }
        
@@ -113,7 +110,7 @@ $lyric_verse2 = \lyric{
        \[/3 H\"orst4 die8 \] Nach-4. ti-8 
        \[/3 gal-4 len8 \] schla-4 gen?8 _8
        Ach!4. sie8 \[/3 fleh-4 en8 \] 
-       dich,2 _4
+       dich2 _4
        _4 _ _ 
        _4_ _
 
@@ -127,11 +124,11 @@ $lyric_verse2 = \lyric{
 
 % 17
        Sie-8. ver-16 stehn4. des8
-       Bus-8. ens16 Seh-4. nen,8
+       Bus-8. ens16 Seh-4. nen8
        \[/3 Ken-4 nen8 \] Lieb-4. es-8 
-       schmerz,2.
+       schmerz2.
        \[/3 Ken-4 nen8 \] Lieb-4. es-8 
-       schmerz,2.
+       schmerz2.
 
 % 23
        R\"uh-8. ren16 mit4. den8 
@@ -145,14 +142,14 @@ $lyric_verse2 = \lyric{
 $lyric_through = \lyric{
 % 37
        La\ss8. auch16 dir8. die16 Brust8. be-16 |
-       we-4 gen, _ |
-       Lieb-4. chen,8 h\"o-8. re16 |
+       we-4 gen _ |
+       Lieb-4. chen8 h\"o-8. re16 |
        mich!2 _4 |
-       Be-8. bend16 harr'4 ich8 _8 |
+       Be-8. bend16 harr4 ich8 _8 |
        dir8. ent-16 ge-4 gen!8 _8 |
-       \[/3 Komm,4 be-8 \] gl\"u4. cke8 |
+       \[/3 Komm4 be-8 \] gl\"u4. cke8 |
        mich!2. |
-       \[/3 Komm,4 be-8 \] gl\"u4. cke8 |
+       \[/3 Komm4 be-8 \] gl\"u4. cke8 |
        mich!2. |
        _2 be-4 |
        gl\"u-2. |
@@ -160,189 +157,195 @@ $lyric_through = \lyric{
        mich!2 _4 |
 }
 
-$treble_intro = \melodic{
-       \octave c';
+$treble_intro = \melodic\relative c{
        \clef violin;
-       % ugh: i'd like to type this!
-       %r8\pp [<g,-. c-.> <c-. es-.> <g,-. c-.> <c-. es-.> <g,-. c-.>] |
-       r8\pp <[g,-. c-.> <c-. es-.> <g,-. c-.> <c-. es-.> <g,-. c-.]> |
-       r8 <[as,-. c-.> <c-. es-.> <as,-. c-.> <c-. es-.> <as,-. c-.]> |
-       r8 <[as,-. c-.> <c-. d-.> <as,-. c-.> <c-. d-.> <as,-. c-.]> |
-       r8 <[g,-. b,-.> <b,-. d-.> <g,-. b,-.> <b,-. d-.> <g,-. b,-.]> |
+       % ugh: id like to type this!
+       %r8\pp [<g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.>] |
+       r8\pp <[g'-. c-.> <c-. es-.> <g-. c-.> <c-. es-.> <g-. c-.]> |
+       r8 <[as-. c-.> <c-. es-.> <as-. c-.> <c-. es-.> <as-. c-.]> |
+       r8 <[as-. c-.> <c-. d-.> <as-. c-.> <c-. d-.> <as-. c-.]> |
+       r8 <[g-. b-.> <b-. d-.> <g-. b-.> <b-. d-.> <g-. b-.]> |
        \break
-       
 }
 
-$treble_verse1 = \melodic{
-       \octave c';
+$treble_verse1 = \melodic\relative c{
 %      \clef violin;
-       r8 <[g, c> <c es> <g, c> <c es> <g, c]> |
-       r8 <[f, c> <c d> <f, c> <c d> <f, c]> |
-       r8 <[f, g, b,> <g, b, d> <f, g, b,> <g, b, d> <f, g, b,]> |
-       r8 <[es, g, c> <g, c es> <es, g, c> <g, c es> <es, g, c]> |
-       <g'4.( b> <)f'8 d'> <[/3 f' d'> <es' c'> <d' b]1/1> |
-       <c'2. es'> |
-       r8 <[g, c> <c es> <g, c> <c es> <g, c]> |
-       r8 <[f, c> <c d> <f, c> <c d> <f, c]> |
-       r8 <[f, as, bes,> <as, bes, d> <f, g, bes,> <g, bes, d> <f, g, bes,]> |
-       r8 <[es, g, bes,> <g, bes, es> <es, g, bes,> <g, bes, es]> 
-       <{ es'( | )bes4. as8}{ c'( | )d4.( )f8 } > 
+       %5
+       r8 <[g' c> <c es> <g c> <c es> <g c]> |
+       r8 <[f c'> <c' d> <f, c'> <c' d> <f, c']> |
+       r8 <[f g b> <g b d> <f g b> <g b d> <f g b]> |
+       r8 <[es g c> <g c es> <es g c> <g c es> <es g c]> |
+       <g''4.( b,> <)f8 d> <[/3 f d> <es c> <d b]1/1> |
+       %10
+       <c2. es> |
+       r8 <[g, c> <c es> <g c> <c es> <g c]> |
+       r8 <[f c'> <c' d> <f, c'> <c' d> <f, c']> |
+       r8 <[f as bes> <as bes d> <f g bes> <g bes d> <f g bes]> |
+       r8 <[es g bes> <g bes es> <es g bes> <g bes es]> 
+       <{ es''( | )bes4. as8}{ c( | )d,4.( )f8 } > 
        < [/3 f as> <es g> <d f]1/1> |
+       %16
        <es2. g> |
-       r8 <[f, g,> <g, b,> <f, g,> <g, b,> <f, g,]> |
-       r8 <[es, g,> <g, c> <es, g,> <g, c> <es, g,]> |
-       r8\pp <[es, as, c> <as, c es> <es, as, c> <as, c es> <es, as, c]> |
-       r8 <[es, g, bes,> <g, bes, es,> <es, g, bes,> <g, bes, es,> <es, g, bes,]> |
+       r8 <[f, g> <g b> <f g> <g b> <f g]> |
+       r8 <[es g> <g c> <es g> <g c> <es g]> |
+       r8\pp <[es as c> <as c es> <es as c> <as c es> <es as c]> |
+       %20
+       r8 <[es g bes> <g bes es> <es g bes> <g bes es> <es g bes]> |
        % [/3 as\grace( bes )
-       [/3 as8(( g )as]1/1 c'4.-> ) as8 |
+       [/3 as'8(( g )as]1/1 c4.-> ) as8 |
        g2. |
-       r8 <[f, g,> <g, b,> <f, g,> <g, b,> <f, g,]> |
-       r8 <[e, g,> <g, c> <e, g,> <g, c> <e, g,]> |
-       r8 <[f, a, c> <a, c f> <f, a, c> <a, c f> <f, a, c]> |
-       r8 <[e, g, c> <g, c e> <e, g, c> <g, c e> <e, g, c]> |
-       <{[/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[/3 f e f \] a4. f8 } > |
+       r8 <[f, g> <g b> <f g> <g b> <f g]> |
+       r8 <[e g> <g c> <e g> <g c> <e g]> |
+       r8 <[f a c> <a c f> <f a c> <a c f> <f a c]> |
+       r8 <[e g c> <g c e> <e g c> <g c e> <e g c]> |
+       <{[/3 f8\f( e f]1/1 a4. )f8 } {\[/3 f' e f \] a4. f8 } > |
        <e2 e'> r4 |
 }
 
-$treble_eentje = \melodic{
-       \octave c';
-       <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
+$treble_eentje = \melodic\relative c{
+       <f'2\mf as!(> <[as8.->( c> <)f16 )as]> |
        <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
-       <f4. g> <[b,8-. g-.(> <d-. g-.> <f-. )g-.]> |
+       <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
        <e2 g\pp> <e4 g> |
-       <f2\mf a(> <[a8.( c'> <)f16 )a]> |
+       <f2\mf a(> <[a8.( c> <)f16 )a]> |
        <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
-       <f4. g> <[b,8-. g-.(> <d-. g-.> <f-. )g-.]> |
+       <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
+       %60
        <e2. g> |
 }
 
-$treble_through = \melodic{
-       \octave c';
-       r2. |
+$treble_through = \melodic\relative c{
+       %61
+       R2. |
        % lily: 221: warning: Junking request: Span_dynamic_req: the \>
-       <[g,8.\< g> <g,16 g> <b,8. b> <\! b,16\> b16> <d8. d'> <d16 d']> |
-       % lily: 222: warning: Can't find cresc to end.
-       < { c4( )b, } { c'4( )b } > \!r |
+       <[g'8.\< g'> <g16 g'> <b8. b'> <\! b16\> b'16> <d8. d'> <d16 d']> |
+       % lily: 222: warning: Cant find cresc to end.
+       < { c4( )b } { c'4( )b } > \!r |
 % ugh
-%      <g,4. g> <b,8 b> <[d8.-> d'->> c'16] |
-       <g,4. g> <b,8 b> [d'8.-> c'16] |
-% ugh, ugh: connecting chords
-       < { d2.\f( )a2} { e2. ~ e2 } { b2. c2 }> r4 |
+%      <g4. g> <b8 b> <[d8.-> d->> c16] |
+       <g4. g'> <b8 b'> [d'8.-> c16] |
+% ugh ugh: connecting chords
+       %65
+       < { d,2.\f( )a'2} { e2. ~ e2 } { b'2. c,2 }> r4 |
        < 
                {
                        \voiceone 
-                       [a8. b16] c'4->( )a8 r |
-                       [a8. b16] c'4->( )a8 r |
+                       [a8. b16] c4->( )a8 r |
+                       [a8. b16] c4->( )a8 r |
                }
                { 
                        \voicetwo 
-                       <d4\f f> <d2 f> |
+                       <d,4\f f> <d2 f> |
                        <c!4\f es> <c2 es> |
                }
        >
        % 4 bars copied from end verse1
-       r8 <[f,\p a, c> <a, c f> <f, a, c> <a, c f> <f, a, c]> |
-       r8 <[e, g, c> <g, c e> <e, g, c> <g, c e> <e, g, c]> |
-       <{[/3 f'8\f( e' f']1/1 a'4. )f'8 } {\[/3 f e f \] a4. f8 } > |
-       <e2 e'> r4 |
+       r8 <[f,\p a c> <a c f> <f a c> <a c f> <f a c]> |
+       %70
+       r8 <[e g c> <g c e> <e g c> <g c e> <e g c]> |
+       <{[/3 f8\f( e f]1/1 a4. )f8 } {\[/3 f' e f \] a4. f8 } > |
+       <e'2 e'> r4 |
        <es2 es'> r4 |
        <d2 d'> r4 |
-       <b,2 b> r4 |
+       %75
+       <b2 b'> r4 |
        <c2 c'> <e4\pp g> |
 
        % four copied from begin eentje
-       <f2\mf as!(> <[as8.->( c'> <)f16 )as]> |
+       <f2\mf as!(> <[as8.->( c> <)f16 )as]> |
        <e4. g> <[e8-. g-.(> <e-. g-.> <e-. )g-.]> |
-       <f4. g> <[b,8-. g-.(> <d-. g-.> <f-. )g-.]> |
-       \textstyle "italic";
+       <f4. g> <[b,8-. g'-.(> <d-. g-.> <f-. )g-.]> |
+       %80
+       \property Voice . textstyle =  "italic"
        <e2._"dim." g> |
-       <g,2. e g> |
-       <g,2.-\fermata e g> |
+       <g,2. e' g> |
+       <g2.-\fermata e' g> |
 }
 
-$bass_intro = \melodic{
-       \octave c;
+$bass_intro = \melodic\relative c{
        \clef bass;
-       <c,2 c> r4 |
-       <as,,2 as,> r4 |
-       <f,,2 f,> r4 |
-       <g,,2 g,> r4 |
+       <c,2 c'> r4 |
+       <as2 as'> r4 |
+       <f2 f'> r4 |
+       <g2 g'> r4 |
 }
 
-$bass_verse1 = \melodic{
-       \octave c;
+$bass_verse1 = \melodic\relative c{
 %      \clef bass;
-       <c,2 c> r4 |
-       <as,,2 as,> r4 |
-       <g,,2 g,> r4 |
-       <c,2 c> r4 |
-       <g,,8 g,> <[g d'> <d' f'> <g d'> <d' f'> <g d']> |
-       <c,8 c> <[g c'> <c' es'> <g c'> <c' es'> <g c']> |
-       <c,2 c> r4 |
-       <as,,2 as,> r4 |
-       <bes,,2 bes,> r4 |
-       <es,,2 es,> r4 |
-       bes,,8 <[bes, f> <f bes> <bes, f> <f bes> <bes, f]> |
-       es,,8 <[bes, es> <es g> <bes, es> <es g> <bes, es]> |
-       <g,,2 g,> r4 |
-       <c,2 c> r4 |
-       <as,,2 as,> r4 |
-       <es,,2 es,> r4 |
-       <bes,,8 bes,> <[f bes> <bes d'> <f bes> <bes d'> <f bes]> |
-       <es,,8 es,> <[es g bes> <g bes es'> <es g bes> <g bes es'> <es g bes]> |
-       <g,,2 g,> r4 |
-       <c,2 c> r4 |
-       <f,,2 f,> r4 |
-       <c,2 c> r4 |
-       <g,,8 g,> <[d g> <g b> <d g> <g b> <d g]> |
-       c,8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
+       <c,2 c'> r4 |
+       <as2 as'> r4 |
+       <g2 g'> r4 |
+       <c2 c'> r4 |
+       <g8 g'> <[g'' d'> <d' f> <g, d'> <d' f> <g, d']> |
+       <c,,8 c'> <[g'' c> <c es> <g c> <c es> <g c]> |
+       <c,,2 c'> r4 |
+       <as2 as'> r4 |
+       <bes2 bes'> r4 |
+       <es,2 es'> r4 |
+       bes'8 <[bes' f'> <f' bes> <bes, f'> <f' bes> <bes, f']> |
+       es,,8 <[bes'' es> <es g> <bes es> <es g> <bes es]> |
+       <g,2 g'> r4 |
+       <c2 c'> r4 |
+       <as2 as'> r4 |
+       <es2 es'> r4 |
+       <bes'8 bes'> <[f'' bes> <bes d> <f bes> <bes d> <f bes]> |
+       <es,,8 es'> <[es'' g bes> <g bes es> <es g bes> <g bes es> <es g bes]> |
+       <g,,2 g'> r4 |
+       <c2 c'> r4 |
+       <f,2 f'> r4 |
+       <c'2 c'> r4 |
+       <g8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
+       c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
 }
 
-$bass_eentje = \melodic{
-       \octave c;
-       <c,8 c> <[c f as!> <f as c'> <c f as> <f as c'> <c f as]> |
-       c,8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
-       <g,,8 g,> <[d g> <g b> <d g> <g b> <d g]> |
-       c,8 <[e g> <g c'> <e g> <g c'> <e g]> |
-       <c,8 c> <[c f a> <f a c'> <c f a> <f a c'> <c f a]> |
-       c,8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
-       <g,,8 g,> <[d g> <g b> <d g> <g b> <d g]> |
-       c,8 <[e g> <g c'> <e g> <g c'> <e g]> |
+$bass_eentje = \melodic\relative c{
+       <c,8 c'> <[c' f as!> <f as c> <c f as> <f as c> <c f as]> |
+       c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
+       <g,8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
+       c,8 <[e' g> <g c> <e g> <g c> <e g]> |
+       <c,8 c'> <[c' f a> <f a c> <c f a> <f a c> <c f a]> |
+       c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
+       <g,8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
+       c,8 <[e' g> <g c> <e g> <g c> <e g]> |
 }
 
-$bass_through = \melodic{
-       \octave c;
-       <g,,8 g,> <[g, b, d> <b, d f> <g, b, d> <as,!-> b-> d->> <b, d f]> |
-       <g,,8 g,> <[g, d> <d f> <g, d> <as,-> b-> d->> <b, d f]> |
+$bass_through = \melodic\relative c{
+       %61
+       <g,8 g'> <[g' b d> <b d f> <g b d> <as!-> b-> d->> <b d, f]> |
+       <g,8 g'> <[g' d'> <d' f> <g, d'> <as-> b'-> d,->> <b d f]> |
        % copied
-       <g,,8 g,> <[g, d> <d f> <g, d> <as,-> b-> d->> <b, d f]> |
-       <g,,8 g,> <[g, d e> <d f> <g, d> <gis,-> b,-> d->> <b, d f]> |
-       <gis,,8 gis,> <[d e> <e b> <d e> <e b> <d e]> |
-       <a,,8 a,> <[c e> <e a> <c e> <e a> <c e]> |
-       <a,,8 a,> <[a, d f> <d f a> <a, d f> <d f a> <a, d f]> |
-       <a,,8 a,> <[a, c e> <c e a> <a, c e> <c e a> <a, c e]> |
+       <g,8 g'> <[g' d'> <d' f> <g, d'> <as-> b'-> d,->> <b d f]> |
+       <g,8 g'> <[g' d' e> <d' f> <g, d'> <gis-> b-> d->> <b d f]> |
+       %65
+       <gis,8 gis'> <[d'' e> <e b'> <d e> <e b'> <d e]> |
+       <a,8 a'> <[c' e> <e a> <c e> <e a> <c e]> |
+       <a,8 a'> <[a' d f> <d f a> <a d f> <d f a> <a d f]> |
+       <a,8 a'> <[a' c e> <c e a> <a c e> <c e a> <a c e]> |
        % 4 bars copied from end verse1
-       <f,,2 f,> r4 |
-       <c,2 c> r4 |
-       <g,,8 g,> <[d g> <g b> <d g> <g b> <d g]> |
-       c,8 <[c e g> <e g c'> <c e g> <e g c'> <c e g]> |
-
-       <c,8 c> <[c es! g> <es g c'> <c es! g> <es g c'> <c es! g]> |
-       <f,,8 f,> <[d f> <f as!> <d f> <f as!> <d f]> |
-       <g,,8 g,> <[d f> <f g> <d f> <f g> <d f]> |
-       c,8 <[c e> <e g> <c e> <e g> <c e]> |
-       c,8 <[c f> <f as> <c f> <f as> <c f]> |
-       c,8 <[c e> <e g> <c e> <e g> <c e]> |
-       g,,8 <[g, d> <d f> <g, d> <d f> <g, d]> |
+       <f,2 f'> r4 |
+       %70
+       <c'2 c'> r4 |
+       <g8 g'> <[d'' g> <g b> <d g> <g b> <d g]> |
+       c,8 <[c' e g> <e g c> <c e g> <e g c> <c e g]> |
+
+       <c,8 c'> <[c' es! g> <es g c> <c es! g> <es g c> <c es! g]> |
+       <f,,8 f'> <[d'' f> <f as!> <d f> <f as!> <d f]> |
+       %75
+       <g,,8 g'> <[d'' f> <f g> <d f> <f g> <d f]> |
+       c,8 <[c' e> <e g> <c e> <e g> <c e]> |
+       c,8 <[c' f> <f as> <c f> <f as> <c f]> |
+       c,8 <[c' e> <e g> <c e> <e g> <c e]> |
+       g,8 <[g' d'> <d' f> <g, d'> <d' f> <g, d']> |
        % copied from two bars back
-       c,8 <[c e> <e g> <c e> <e g> <c e]> |
-       c,8 <[c e> <e g> <c e> <e g> <c e]> |
-       <c,2._\fermata g, c> |
+       %80
+       c,8 <[c' e> <e g> <c e> <e g> <c e]> |
+       c,8 <[c' e> <e g> <c e> <e g> <c e]> |
+       <c,2._\fermata g' c> |
 }
                
 global = \melodic{
-       \meter 3/4; 
-       \key bes es as;
+       \time 3/4; 
+       \key es;
        \skip 4 * 12;
        \break
        \skip 4 * 234;
@@ -357,8 +360,8 @@ $lyric_four = \lyric{
        _ _ _
 }
 
-lyrics = \melodic{
-       \meter 3/4; 
+lyrics = {
+       \time 3/4; 
 %      \skip 4 * 12; 
        \$lyric_four
        \$lyric_verse1
@@ -387,7 +390,6 @@ $vocal_staff = \type Staff = vocal<
        \$vocals
 >
 
-% treble = \melodic{
 treble = {
        \$treble_intro 
        \$treble_verse1 
@@ -401,7 +403,7 @@ $treble_staff = \type Staff = treble<
        \treble
 >
 
-bass = \melodic{
+bass = {
        \$bass_intro 
        \$bass_verse1 
        \$bass_eentje
@@ -414,23 +416,18 @@ $bass_staff = \type Staff = bass<
        \bass
 >
 
-$grand_staff = \type Grand_staff<
+$grand_staff = \type GrandStaff<
        \$treble_staff
        \$bass_staff
 >
 
-a4 = \paper{
-       linewidth= 193.\mm;
-       \include "score-bar-numbering.ly";
-}
-
 \score{
        <
                \$vocal_staff
                \$lyric_staff
                \$grand_staff
        >
-       \paper{ \a4 }
+       \include "score-paper.ly";
        \midi{
                \tempo 4 = 54;
        }
diff --git a/out/dummy.dep b/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/po/Makefile b/po/Makefile
new file mode 100644 (file)
index 0000000..d951b5a
--- /dev/null
@@ -0,0 +1,32 @@
+# title           makefile for po
+# file    po/Makefile 
+
+depth = ..
+
+NAME = lilypond
+MODULE_NAME = po
+
+PO_FILES = $(wildcard *.po)
+MO_FILES = $(addprefix $(outdir)/, $(PO_FILES:.po=.mo))
+HELP_CATALOGS = $(PO_FILES:%.po=%)
+CATALOGS = $(HELP_CATALOGS:lilypond=)
+EXTRA_DIST_FILES = TODO $(PO_FILES)
+
+include $(depth)/make/Stepmake.make 
+include $(stepdir)/Po_rules.make
+
+default: $(MO_FILES)
+
+localinstall: $(MO_FILES)
+       for i in $(CATALOGS); do \
+         $(INSTALL) -d $(localedir)/$$i/LC_MESSAGES; \
+         $(INSTALL) -m 644 $(outdir)/$$i.mo \
+         $(localedir)/$$i/LC_MESSAGES/$(package).mo; \
+       done
+
+localuninstall:
+       for i in $(CATALOGS); do \
+         rm -f $(localedir)/$$i/LC_MESSAGES/$(package).mo; \
+         rmdir $(localedir)/$$i/LC_MESSAGES; \
+       done
+
diff --git a/po/TODO b/po/TODO
new file mode 100644 (file)
index 0000000..b854f34
--- /dev/null
+++ b/po/TODO
@@ -0,0 +1,63 @@
+ISSUES -- please read this before doing too much real translating...
+
+       * encapsulate locale strings in _( ) or _f ( )
+       * fix/standardise messages
+         - it's silly to translate wrong strings
+         - no leading/trailing punctuation in strings: e.g.
+           _ ("foo found") iso _ ("foo found.), _ ("foo found.\n), ...
+         - no leading/trailing whitespace in strings
+
+         - Think about translation issues.  
+           In a lot of cases,it's better to translate a whole message
+           the english grammar mustn't be imposed on the transator.
+           So, iso
+             _ ("stem at") + moment.str () + _("doen't fit in beam")
+           have
+             _f ("stem at %s doen't fit in beam", moment.str ())
+           ?
+
+           Otoh:
+             en: can't open: `foo.ly'
+             nl: kan `foo.ly' niet openen     (1)
+                 kan niet openen: `foo.ly'*   (2)
+                 niet te openen: `foo.ly'*    (3)
+
+           The first nl message, although gramatically and stylish correct,
+           is not friendly for parsing by humans (even if they speak dutch).
+           I guess we'd prefer something like (2) or (3)...
+
+         - don't modularise too much; a lot of words cannot be translated
+           without context.
+           it's probably safe to treat most occurences of words like
+             stem, beam, crescendo as separately translatable words.
+
+       * don't! translate/gettextify:
+         - debug strings
+         - output (ps) strings
+
+TODO
+       * native speakers (naïeve sprekerds) that make/take care of {it,..}.po
+       * concurrently update Documentation/tex/computer.data
+       * convince xgettext my name is <janneke@gnu.org> iso 
+         <fred@botervlieg.flower> :-)
+       * create user-friendly input format for multiple languages?
+
+SOLVED/HOWTO
+       * because i never install LilyPond, i made these links:
+
+           ln -s $LILYPOND_SOURCEDIR/po/out/nl.mo 
+               /usr/share/locale/nl/LC_MESSAGES/lilypond.mo
+           ln -s $LILYPOND_SOURCEDIR/po/out/it.mo 
+               /usr/share/locale/it/LC_MESSAGES/lilypond.mo
+
+         then simply type, e.g.
+
+           LANG=nl lilypond -h
+
+       * (howto?) avoid keep translating for moving target
+         - make po-update
+         - mv po/out/*.po po (manually!)
+         - edit po/*.po
+         - make -C po
+         - make show-po-update LANGUAGE=xx
+
diff --git a/po/it.po b/po/it.po
new file mode 100644 (file)
index 0000000..d8ac69d
--- /dev/null
+++ b/po/it.po
@@ -0,0 +1,891 @@
+msgid ""
+msgstr ""
+"Date: 1998-05-30 00:17:12+0200\n"
+"From:  <tdemunni@sybase.com>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po/out --add-comments --keyword=_ --keyword=_f\n"
+"Files: bow.cc int.cc\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr "EOF in una corda"
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr "attentione: "
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr ""
+
+#: flower-debug.cc:17
+msgid "Debug output disabled.  Compiled with NPRINT."
+msgstr ""
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr "opzione `%s' chiede un argumento"
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr "opzione `%s' non permette un argumento"
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr "opzione non riconosciuto `%s'"
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr "argumento non valide `%s' all'opzione `%s'"
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr "non posso aprire il documento: `%s'"
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr "errore: "
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr "Errore non fatale: "
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+msgid "position unknown"
+msgstr "posizione sconosciuto"
+
+#: mapped-file-storage.cc:65
+msgid "map_fd: "
+msgstr ""
+
+#: mapped-file-storage.cc:74
+msgid "can't map file"
+msgstr "non posso mappare il documento"
+
+#: mapped-file-storage.cc:109
+msgid "vm_deallocate: "
+msgstr ""
+
+#: simple-file-storage.cc:56
+msgid "Huh? got %d, expected %d characters"
+msgstr "Come? ce ne ho %d, ho aspettato %d carattere"
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr ""
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr "dimensione da ridere: %s, %s"
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr ""
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr "aggiustami per favore"
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr ""
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr ""
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr ""
+
+#: break.cc:25
+msgid "0 lines"
+msgstr "0 linee"
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr "1 linea (da %.0f colonne)"
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr "%d linee (con una media di %.f colonne)"
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr ""
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr "approssimato: %s:"
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr "calcolato esattamente: %s"
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr "durata: %.2f secondi"
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr ""
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr ""
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr ""
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr ""
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr ""
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr ""
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr ""
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr ""
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr ""
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr "%s aspettato"
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr ""
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr ""
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr ""
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr ""
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr ""
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr ""
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr ""
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr ""
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr "Uso: %s [OPZIONE]... [DOCUMENTO]..."
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr "Stampa partitura oppure suona MIDI dal FILE o <stdin>"
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr "Opzioni: "
+
+#: main.cc:72
+msgid "  -a, --about            about LilyPond\n"
+msgstr "  -a, --about            cos'è LilyPond\n"
+
+#: main.cc:54 main.cc:75
+msgid "  -D, --debug            enable debugging output\n"
+msgstr ""
+
+#: main.cc:78
+msgid "  -d, --dependencies     write Makefile dependencies for every input file\n"
+msgstr ""
+
+#: main.cc:60 main.cc:81
+msgid "  -I, --include=DIR      add DIR to search path\n"
+msgstr "  -I, --include=DIR      add DIR to search path\n"
+
+#: main.cc:84
+msgid "  -i, --init=FILE        use FILE as init file\n"
+msgstr "  -i, --init=DOC         usa DOC come documento iniziale\n"
+
+#: main.cc:57 main.cc:87
+msgid "  -h, --help             this help\n"
+msgstr "  -h, --help             questo sostegno\n"
+
+#: main.cc:90
+msgid "  -M, --no-paper         produce midi output only\n"
+msgstr "  -M, --no-paper         produce solo output midi\n"
+
+#: main.cc:93
+msgid "  -o, --output=FILE      set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid "  -Q, --find-fourths     show all intervals greater than a fourth\n"
+msgstr ""
+
+#: main.cc:99
+msgid "  -t, --test             switch on experimental features\n"
+msgstr "  -t, --test             usa truchi sperimentali\n"
+
+#: main.cc:78 main.cc:102
+msgid "  -T, --no-timestamps    don't timestamp the output\n"
+msgstr ""
+
+#: main.cc:105
+msgid "  -V, --ignore-version   ignore mudela version\n"
+msgstr ""
+
+#: main.cc:87 main.cc:108
+msgid "  -w, --warranty         show warranty and copyright\n"
+msgstr ""
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr ""
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr ""
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr ""
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr "GNU LilyPond -- Il tipografo musicale del progetto GNU"
+
+#: main.cc:113 main.cc:161
+msgid ""
+"    This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+"USA.\n"
+msgstr ""
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr ""
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr ""
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr ""
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr ""
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr ""
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr ""
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr ""
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr ""
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr "Analizzare..."
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr ""
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr ""
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr "Preprocessare elementi..."
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr "Calcolare posizioni di colonne..."
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr "Postprocessare elementi..."
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr "Prodotto di TeX verso %s..."
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr ""
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr ""
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr ""
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr ""
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ""
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr ""
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr "Prodotto di MIDI verso %s..."
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr ""
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr ""
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr ""
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr ""
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr ""
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr "Interpretare musica..."
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr ""
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr ""
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr ""
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr ""
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr ""
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr ""
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr ""
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr ""
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr ""
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr ""
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr ""
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr ""
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+msgid ""
+"LilyPond is the GNU Project music typesetter.  This program can print\n"
+"beautiful sheet music from a music definition file.  It can also play\n"
+"mechanical performances to a MIDI file.  Features include multiple\n"
+"staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,\n"
+"beams, slurs, triplets, formatting scores, part extraction.  It includes\n"
+"a nice font of musical symbols.\n"
+msgstr ""
+"LilyPond \350 il tipografo musicale del progetto GNU.   Questo programma e\n"
+"fatto per stampare bella partitura da un documento definito per musica.\n"
+"Pu\362 anche sonare le prestazioni meccaniche ad un documento MIDI.  Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenzas, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione della parte.  Una seria completa di\n"
+"caratteri musicali \350 compresa.\n"
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU.   Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI.  Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte.  \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"LilyPond is de muziekzetter van het GNU Project.  Dit programma drukt\n"
+"prachtige bladmuziek volgens een muzikaal definitie bestand.  Ook kan\n"
+"het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
+"Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen.  Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid "  -b, --no-quantify      write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid "  -k, --key=ACC[:MINOR]  set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid "  -n, --no-silly         assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid "  -o, --output=FILE      set FILE as default output\n"
+msgstr ""
+
+#: main.cc:72
+msgid "  -p, --no-plets         assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid "  -q, --quiet            be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid "  -v, --verbose          be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid "  -x, --no-double-dots   assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#.    return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr ""
diff --git a/po/lilypond.po b/po/lilypond.po
new file mode 100644 (file)
index 0000000..2352a85
--- /dev/null
@@ -0,0 +1,884 @@
+msgid ""
+msgstr ""
+"Date: 1998-07-21 09:44:01+0200\n"
+"From:  <fred@botervlieg.flower>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po/out --add-comments --keyword=_ --keyword=_f\n"
+"Files: config.h gettext.h gettextP.h hash-string.h libgettext.h bindtextdom.c dcgettext.c dgettext.c finddomain.c gettext.c intl-compat.c loadmsgcat.c localealias.c textdomain.c\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr ""
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr ""
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr ""
+
+#: flower-debug.cc:17
+msgid "Debug output disabled.  Compiled with NPRINT."
+msgstr ""
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr ""
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr ""
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr ""
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr ""
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr ""
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr ""
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr ""
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+msgid "position unknown"
+msgstr ""
+
+#: mapped-file-storage.cc:65
+msgid "map_fd: "
+msgstr ""
+
+#: mapped-file-storage.cc:74
+msgid "can't map file"
+msgstr ""
+
+#: mapped-file-storage.cc:109
+msgid "vm_deallocate: "
+msgstr ""
+
+#: simple-file-storage.cc:56
+msgid "Huh? got %d, expected %d characters"
+msgstr ""
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr ""
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr ""
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr ""
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr ""
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr ""
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr ""
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr ""
+
+#: break.cc:25
+msgid "0 lines"
+msgstr ""
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr ""
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr ""
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr ""
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr ""
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr ""
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr ""
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr ""
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr ""
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr ""
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr ""
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr ""
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr ""
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr ""
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr ""
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr ""
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr ""
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr ""
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr ""
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr ""
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr ""
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr ""
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr ""
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr ""
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr ""
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr ""
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr ""
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr ""
+
+#: main.cc:72
+msgid "  -a, --about            about LilyPond\n"
+msgstr ""
+
+#: main.cc:54 main.cc:75
+msgid "  -D, --debug            enable debugging output\n"
+msgstr ""
+
+#: main.cc:78
+msgid "  -d, --dependencies     write Makefile dependencies for every input file\n"
+msgstr ""
+
+#: main.cc:60 main.cc:81
+msgid "  -I, --include=DIR      add DIR to search path\n"
+msgstr ""
+
+#: main.cc:84
+msgid "  -i, --init=FILE        use FILE as init file\n"
+msgstr ""
+
+#: main.cc:57 main.cc:87
+msgid "  -h, --help             this help\n"
+msgstr ""
+
+#: main.cc:90
+msgid "  -M, --no-paper         produce midi output only\n"
+msgstr ""
+
+#: main.cc:93
+msgid "  -o, --output=FILE      set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid "  -Q, --find-fourths     show all intervals greater than a fourth\n"
+msgstr ""
+
+#: main.cc:99
+msgid "  -t, --test             switch on experimental features\n"
+msgstr ""
+
+#: main.cc:78 main.cc:102
+msgid "  -T, --no-timestamps    don't timestamp the output\n"
+msgstr ""
+
+#: main.cc:105
+msgid "  -V, --ignore-version   ignore mudela version\n"
+msgstr ""
+
+#: main.cc:87 main.cc:108
+msgid "  -w, --warranty         show warranty and copyright\n"
+msgstr ""
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr ""
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr ""
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr ""
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr ""
+
+#: main.cc:113 main.cc:161
+msgid ""
+"    This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+"USA.\n"
+msgstr ""
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr ""
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr ""
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr ""
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr ""
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr ""
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr ""
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr ""
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr ""
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr ""
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr ""
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr ""
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr ""
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr ""
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr ""
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr ""
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr ""
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr ""
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr ""
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr ""
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ""
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr ""
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr ""
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr ""
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr ""
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr ""
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr ""
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr ""
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr ""
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr ""
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr ""
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr ""
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr ""
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr ""
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr ""
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr ""
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr ""
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr ""
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr ""
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr ""
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr ""
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+msgid ""
+"LilyPond is the GNU Project music typesetter.  This program can print\n"
+"beautiful sheet music from a music definition file.  It can also play\n"
+"mechanical performances to a MIDI file.  Features include multiple\n"
+"staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,\n"
+"beams, slurs, triplets, formatting scores, part extraction.  It includes\n"
+"a nice font of musical symbols.\n"
+msgstr ""
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU.   Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI.  Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte.  \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"LilyPond is de muziekzetter van het GNU Project.  Dit programma drukt\n"
+"prachtige bladmuziek volgens een muzikaal definitie bestand.  Ook kan\n"
+"het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
+"Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen.  Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid "  -b, --no-quantify      write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid "  -k, --key=ACC[:MINOR]  set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid "  -n, --no-silly         assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid "  -o, --output=FILE      set FILE as default output\n"
+msgstr ""
+
+#: main.cc:72
+msgid "  -p, --no-plets         assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid "  -q, --quiet            be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid "  -v, --verbose          be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid "  -x, --no-double-dots   assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#.    return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr ""
diff --git a/po/nl.po b/po/nl.po
new file mode 100644 (file)
index 0000000..85fb726
--- /dev/null
+++ b/po/nl.po
@@ -0,0 +1,905 @@
+msgid ""
+msgstr ""
+"Date: 1998-05-26 11:26:28+0200\n"
+"From:  <janneke@gnu.org>\n"
+"Content-Type: text/plain; charset=\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po --add-comments --keyword=_\n"
+"Files: bow.cc int.cc\n"
+
+#: data-file.cc:52
+msgid "EOF in a string"
+msgstr "EOF in een string"
+
+#: data-file.cc:121 input.cc:86 midi-parser.cc:100 warn.cc:21
+msgid "warning: "
+msgstr "waarschuwing: "
+
+#: dstream.cc:159
+msgid "Not enough fields in Dstream init."
+msgstr "Onvoldoende velden in Dstream init."
+
+#: flower-debug.cc:17
+msgid "Debug output disabled.  Compiled with NPRINT."
+msgstr "Ontluis berichten zijn uitgeschakeld.  Vertaald met NPRINT."
+
+#: lgetopt.cc:103
+msgid "option `%s' requires an argument"
+msgstr "optie `%s' vereist een argument"
+
+#: lgetopt.cc:107
+msgid "option `%s' doesn't allow an argument"
+msgstr "optie `%s' staat geen argument toe"
+
+#: lgetopt.cc:111
+msgid "unrecognized option: `%s'"
+msgstr "onbekende optie: `%s'"
+
+#: lgetopt.cc:117
+msgid "invalid argument `%s' to option `%s'"
+msgstr "onjuist argument: `%s' voor optie `%s'"
+
+#: text-stream.cc:8
+msgid "<stdin>"
+msgstr ""
+
+#: mapped-file-storage.cc:87 midi-stream.cc:77 mudela-stream.cc:102 parser.yy:1378 scores.cc:37 simple-file-storage.cc:44 tex-stream.cc:28 text-stream.cc:21
+msgid "can't open file: `%s'"
+msgstr "kan bestand niet openen: `%s'"
+
+#: input.cc:91 warn.cc:7 warn.cc:15
+msgid "error: "
+msgstr "fout: "
+
+#: input.cc:97
+msgid "Non fatal error: "
+msgstr "Niet noodlottige fout: "
+
+#: input.cc:105 source-file.cc:62 source-file.cc:155
+msgid "position unknown"
+msgstr "positie onbekend"
+
+#: mapped-file-storage.cc:65
+msgid "map_fd: "
+msgstr ""
+
+#: mapped-file-storage.cc:74
+msgid "can't map file"
+msgstr "kan bestand niet inkaarten"
+
+#: mapped-file-storage.cc:109
+msgid "vm_deallocate: "
+msgstr ""
+
+#: simple-file-storage.cc:56
+msgid "Huh? got %d, expected %d characters"
+msgstr "Huh? kreeg %d, verwachtte %d tekens"
+
+#: abbreviation-beam-engraver.cc:76 beam-grav.cc:90
+msgid "unterminated beam"
+msgstr "onafgesloten balk"
+
+#: afm.cc:114
+msgid "can't find character called `%s'"
+msgstr ""
+
+#: atom.cc:31
+msgid "ridiculous dimension: %s, %s"
+msgstr "belachelijke dimensie: %s, %s"
+
+#: beam-grav.cc:106
+msgid "Stem must have Rhythmic structure."
+msgstr ""
+
+#: beam-grav.cc:113
+msgid "stem doesn't fit in beam"
+msgstr "stok past niet in balk"
+
+#: beam-grav.cc:124
+msgid "please fix me"
+msgstr "repareer mij alsjeblieft"
+
+#: beam-grav.cc:125
+msgid "stem at %s doesn't fit in beam"
+msgstr "stok op %s past niet in balk"
+
+#: beam.cc:117
+msgid "beam with less than two stems"
+msgstr "balk met minder dan twee stokken"
+
+#. when all too short, normal stems win..
+#: beam.cc:562
+msgid "weird beam shift, check your knees"
+msgstr "vreemde balk verplaatsing, controleer uw knie-en"
+
+#: break.cc:25
+msgid "0 lines"
+msgstr "0 regels"
+
+#: break.cc:27
+msgid "1 line (of %.0f columns)"
+msgstr "1 regel (van %.0f kolommen)"
+
+#: break.cc:29
+msgid "%d lines (with an average of %.1f columns)"
+msgstr "%d regels (van gemiddeld %.1f kolommen)"
+
+#: break.cc:159
+msgid "score does not have any columns"
+msgstr "partituur heeft geen enkele kolom"
+
+#: break.cc:183
+msgid "approximated: %s"
+msgstr "geschat: %s"
+
+#: break.cc:185
+msgid "calculated exactly: %s"
+msgstr "exact berekend: %s"
+
+#: break.cc:186 score.cc:111
+msgid "time: %.2f seconds"
+msgstr "duur: %.2f seconden"
+
+#: change-iterator.cc:25
+msgid "can't change `%s' to `%s'"
+msgstr "kan `%s' niet in `%s' veranderen"
+
+#: clef-grav.cc:137
+msgid "unknown clef type "
+msgstr "onbekende sleutel"
+
+#: collision.cc:62
+msgid "No stem direction set. Ignoring column in clash."
+msgstr "Geen stokrichting gezet.  Negeer kolom in botsing."
+
+#: collision.cc:75
+msgid "Too many clashing notecolumns. Ignoring them."
+msgstr "Te veel botsende nootkolommen.  Ik negeer ze."
+
+#: command-request.cc:209
+msgid "don't know how handle empty keys"
+msgstr ""
+
+#: crescendo.cc:47
+msgid "crescendo"
+msgstr ""
+
+#: crescendo.cc:47 lookup.cc:338 lookup.cc:371 lookup.cc:389
+msgid "too small"
+msgstr "te klein"
+
+#: debug.cc:56
+msgid "Floating point exception"
+msgstr "Drijvende komma uitzondering"
+
+#: debug.cc:140
+msgid "can't set mem-checking"
+msgstr ""
+
+#: dimen.cc:31
+msgid "unknown length unit: `%s'"
+msgstr ""
+
+#: dimen.cc:40
+msgid "NaN"
+msgstr "NaN"
+
+#: dynamic-grav.cc:85 slur-grav.cc:72
+msgid "can't find both ends of %s"
+msgstr "kan uiteinden van %s niet beide vinden"
+
+#: dynamic-grav.cc:86
+msgid "cresc"
+msgstr ""
+
+#: dynamic-grav.cc:162
+msgid "unended crescendo"
+msgstr "niet beeindigd crescendo"
+
+#: identifier.cc:49
+msgid "Wrong identifier type: "
+msgstr ""
+
+#: identifier.cc:50
+msgid "%s expected"
+msgstr "%s verwacht"
+
+#: includable-lexer.cc:38 midi-score-parser.cc:24 scores.cc:108 scores.cc:113
+msgid "can't find file: `%s'"
+msgstr "kan bestand niet vinden: `%s'"
+
+#: ineq-constrained-qp.cc:167
+msgid "Ineq_constrained_qp::solve (): Constraint off by %f"
+msgstr "Ineq_constrained_qp::solve (): voorwaarde zit er %f naast"
+
+#: ineq-constrained-qp.cc:222
+msgid "didn't converge!"
+msgstr "ik convederde niet!"
+
+#: ineq-constrained-qp.cc:224
+msgid "Too much degeneracy. "
+msgstr ""
+
+#: key-grav.cc:109
+msgid "No key name: assuming `C'"
+msgstr ""
+
+#: local-key-grav.cc:34
+msgid "out of tune"
+msgstr "vals"
+
+#: local-key-grav.cc:34 meter-grav.cc:28
+msgid "can't find"
+msgstr "kan niet vinden"
+
+#: lookup.cc:337 lookup.cc:343
+msgid "piano brace"
+msgstr "piano accolade"
+
+#: lookup.cc:344 lookup.cc:395
+msgid "too big"
+msgstr "te groot"
+
+#: lookup.cc:370 lookup.cc:388 lookup.cc:394
+msgid "bracket"
+msgstr "haak"
+
+#: main.cc:65
+msgid "Usage: %s [OPTION]... [FILE]..."
+msgstr "Gebruik: %s [OPTIE]... [BESTAND]..."
+
+#: main.cc:66
+msgid "Typeset music and or play MIDI from FILE or <stdin>"
+msgstr "Zet muziek en of speel MIDI van FILE of <stdin>"
+
+#: main.cc:48 main.cc:69
+msgid "Options:"
+msgstr "Opties:"
+
+#: main.cc:72
+msgid "  -a, --about            about LilyPond\n"
+msgstr "  -a, --about            over LilyPond\n"
+
+#: main.cc:54 main.cc:75
+msgid "  -D, --debug            enable debugging output\n"
+msgstr "  -D, --debug            toon ontluis berichten\n"
+
+#: main.cc:78
+msgid "  -d, --dependencies     write Makefile dependencies for every input file\n"
+msgstr "  -d, --dependencies     schrijf Makefile afhankelijkheden voor elk\n"
+"                           invoerbestand\n"
+
+#: main.cc:60 main.cc:81
+msgid "  -I, --include=DIR      add DIR to search path\n"
+msgstr "  -I, --include=INDEX    voeg INDEX toe aan zoekpad\n"
+
+#: main.cc:84
+msgid "  -i, --init=FILE        use FILE as init file\n"
+msgstr "  -i, --init=BESTAND     gebruik BESTAND voor initialisatiebestand\n"
+
+#: main.cc:57 main.cc:87
+msgid "  -h, --help             this help\n"
+msgstr "  -h, --help             deze hulp\n"
+
+#: main.cc:90
+msgid "  -M, --no-paper         produce midi output only\n"
+msgstr "  -M, --no-paper         produceer alleen midi uitvoer\n"
+
+#: main.cc:93
+msgid "  -o, --output=FILE      set FILE as default output base\n"
+msgstr ""
+
+#: main.cc:96
+msgid "  -Q, --find-fourths     show all intervals greater than a fourth\n"
+msgstr "  -Q, --find-fourths     toon alle intervallen groter dan een kwart\n"
+
+#: main.cc:99
+msgid "  -t, --test             switch on experimental features\n"
+msgstr "  -t, --test             doe experimentele kunstjes\n"
+
+#: main.cc:78 main.cc:102
+msgid "  -T, --no-timestamps    don't timestamp the output\n"
+msgstr "  -T, --no-timestamps    zet geen tijdstempel in de uitvoer\n"
+
+#: main.cc:105
+msgid "  -V, --ignore-version   ignore mudela version\n"
+msgstr "  -V, --ignore-version   negeer mudela versie\n"
+
+#: main.cc:87 main.cc:108
+msgid "  -w, --warranty         show warranty and copyright\n"
+msgstr "  -w, --warranty         toon garantie en copyright\n"
+
+#: main.cc:111
+msgid "GNU LilyPond was compiled with the following settings:"
+msgstr "GNU LilyPond is vertaald met de volgende instellingen:"
+
+#: main.cc:139
+msgid "GNU LilyPond is Free software, see --warranty"
+msgstr "GNU LilyPond is Vrij bedenksel, zie --warranty"
+
+#: main.cc:107 main.cc:142 main.cc:155
+msgid "Copyright (c) %s by"
+msgstr "Copyright (c) %s "
+
+#: main.cc:109 main.cc:144 main.cc:157
+msgid "Han-Wen Nienhuys <hanwen@cs.uu.nl>"
+msgstr ""
+
+#: main.cc:110 main.cc:145 main.cc:158
+msgid "Jan Nieuwenhuizen <janneke@gnu.org>"
+msgstr ""
+
+#: main.cc:153
+msgid "GNU LilyPond -- The GNU Project music typesetter"
+msgstr "GNU LilyPond -- De Muziekzetter van het GNU Project"
+
+#: main.cc:113 main.cc:161
+msgid ""
+"    This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy (refer to the file COPYING) of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,\n"
+"USA.\n"
+msgstr ""
+"    Dit programma is vrij bedenksel; u mag het verspreiden en/of\n"
+"veranderen onder de voorwaarden van de GNU Algemene Openbare Licentie\n"
+"versie 2, zoals gepubliceerd door de Free Software Foundation.\n"
+"\n"
+"    Dit programma wordt verspreid in de hoop dat het nuttig zal zijn,\n"
+"maar ZONDER ENIGE GARANTIE; zelfs zonder de impliciete garantie voor\n"
+"het UITBATEN of als zijnde GESCHIKT VOOR EEN BEPAALD DOEL.  Zie de GNU\n"
+"Algemene Openbare Licentie voor details.\n"
+"\n"
+"    Als het goed is, heeft u bij dit programma een copie (zie het bestand\n"
+"COPYING) ontvangen van de GNU Algemene Openbare Licentie; zoniet, schrijf\n"
+"dan naar de Free Software Foundation, Inc., 675 Mass Ave, Cambridge, \n"
+"MA 02139, USA.\n"
+
+#: meter-grav.cc:28
+msgid "lost in time"
+msgstr "hoe laat is het"
+
+#: midi-item.cc:364
+msgid "unconventional key: flats: %d, sharps: %d"
+msgstr "vreemde toonsoort: %d mollen, %d kruizen"
+
+#: midi-item.cc:410
+msgid "silly duration"
+msgstr ""
+
+#: midi-item.cc:424
+msgid "silly pitch"
+msgstr ""
+
+#: midi-stream.cc:29 tex-stream.cc:58
+msgid "error syncing file (disk full?)"
+msgstr "kan file niet wegschrijven (disk vol?)"
+
+#: musical-pitch.cc:145
+msgid "Interval greater than quart, relative: %s"
+msgstr "Interval groter dan kwart, relatief: %s"
+
+#: musical-request.cc:93
+msgid "transposition by %s makes accidental larger than two"
+msgstr "transpositie van %s geeft tripel kruizen/mollen  "
+
+#: musical-request.cc:439
+msgid "never heard of dynamic scale `\\%s', assuming %s"
+msgstr "zo hard kan ik niet `\\%s', ik doe gewoon %s"
+
+#: my-lily-lexer.cc:120
+msgid "redeclaration of `\\%s'"
+msgstr "`\\%s' wordt opnieuw gedeclareerd"
+
+#: my-lily-lexer.cc:149
+msgid "error at EOF: %s"
+msgstr "fout aan het einde van file: %s"
+
+#: my-lily-parser.cc:62
+msgid "Parsing..."
+msgstr "Ontleden..."
+
+#: my-lily-parser.cc:71
+msgid "braces don't match"
+msgstr "haakjes passen niet"
+
+#: p-score.cc:178
+msgid "Can't solve this casting problem exactly; revert to Word_wrap"
+msgstr "Kan breekprobleem niet exact oplossen; verval naar Word_wrap"
+
+#: p-score.cc:197
+msgid "Preprocessing elements..."
+msgstr "Voorbewerken van elementen..."
+
+#: p-score.cc:201
+msgid "Calculating column positions..."
+msgstr "Berekenen van kolomposities..."
+
+#: p-score.cc:205
+msgid "Postprocessing elements..."
+msgstr "Nabewerken van elementen..."
+
+#: p-score.cc:231
+msgid "TeX output to %s..."
+msgstr "TeX uitvoer naar %s..."
+
+#: p-score.cc:245
+msgid "% outputting Score, defined at: "
+msgstr ""
+
+#: paper-def.cc:61
+msgid "unknown paper variable: `%s'"
+msgstr "onbekende \\paper variabele"
+
+#: paper-def.cc:65
+msgid "not a real variable"
+msgstr "variabele is geen reeal getal"
+
+#. perhaps multiple text events?
+#: performance.cc:54
+msgid "Creator: "
+msgstr "Schepper: "
+
+#: performance.cc:63
+msgid "Automatically generated"
+msgstr "Automatisch gegenerederd"
+
+#: mudela-stream.cc:84 performance.cc:68 tex-stream.cc:47
+msgid ", at "
+msgstr ", bij "
+
+#: performance.cc:76
+msgid "from musical definition: %s"
+msgstr "van muzikale definitie: %s"
+
+#: performance.cc:141
+msgid "MIDI output to %s..."
+msgstr "MIDI uitvoer naar %s..."
+
+#: plet-engraver.cc:83
+msgid "unterminated plet"
+msgstr "onsterfelijke -ool"
+
+#: plet-spanner.cc:85
+msgid "lonely plet"
+msgstr "eenzame -ool"
+
+#: qlpsolve.cc:88 qlpsolve.cc:139
+msgid "degenerate constraints"
+msgstr "voorwaarde is gedegenerederd"
+
+#: request-iterator.cc:68
+msgid "junking request: `%s'"
+msgstr "schroot verzoek: `%s'"
+
+#: score-column.cc:55
+msgid "ignoring zero duration added to column at %s"
+msgstr ""
+
+#: score-grav.cc:145
+msgid "Unbound spanner `%s'"
+msgstr "Vrijgezelle spanner `%s'"
+
+#: score.cc:57
+msgid "no toplevel translator"
+msgstr ""
+
+#: score.cc:60
+msgid "Interpreting music..."
+msgstr "Vertolken van muziek..."
+
+#: score.cc:70
+msgid "need music in a score"
+msgstr "zonder muziek geen partituur"
+
+#. should we? hampers debugging.
+#: score.cc:106
+msgid "errors found, /*not processing score*/"
+msgstr ""
+
+#: scores.cc:34
+msgid "writing dependency file: `%s'..."
+msgstr ""
+
+#: scores.cc:78
+msgid "score contains errors; will not process it"
+msgstr ""
+
+#: script.cc:60
+msgid "script needs stem direction"
+msgstr "schrift benodigt stokrichting"
+
+#: slur-grav.cc:49
+msgid "unterminated slur"
+msgstr "onsterfelijke boog"
+
+#: slur-grav.cc:72
+msgid "slur"
+msgstr ""
+
+#: spanner.cc:44
+msgid "left spanpoint is right spanpoint\n"
+msgstr ""
+
+#: spanner.cc:101
+msgid "Spanner `%s' with equal left and right spanpoints"
+msgstr ""
+
+#: spring-spacer.cc:82
+msgid "unconnected column: %d"
+msgstr ""
+
+#: spring-spacer.cc:186
+msgid "I'm too fat; call Oprah"
+msgstr ""
+
+#: spring-spacer.cc:344
+msgid "solution doesn't satisfy constraints"
+msgstr ""
+
+#: spring-spacer.cc:623
+msgid "can't find a ruling note at %s"
+msgstr ""
+
+#: spring-spacer.cc:629
+msgid "no minimum in measure at %s"
+msgstr ""
+
+#: staff-side.cc:61
+msgid "Staff_side::get_position_f(): somebody forgot to set my direction, returning -20"
+msgstr ""
+
+#: stem.cc:102
+msgid "weird stem size; check for narrow beams"
+msgstr "vreemde stoklengte; controleer op krappe balken"
+
+#: symtable.cc:50
+msgid "Symtable `%s': unknown symbol: `%s'"
+msgstr ""
+
+#: symtable.cc:61
+msgid "Symtable `%s' unknown"
+msgstr ""
+
+#: mudela-stream.cc:74 tex-stream.cc:37
+msgid "% Creator: "
+msgstr ""
+
+#: mudela-stream.cc:79 tex-stream.cc:42
+msgid "% Automatically generated"
+msgstr ""
+
+#: text-item.cc:47
+msgid "Text_item::get_position_f(): somebody forgot to set my vertical direction, returning -20"
+msgstr ""
+
+#: tie-grav.cc:114 tie.cc:50
+msgid "lonely tie"
+msgstr ""
+
+#: ties-grav.cc:82
+msgid "Can't find a note head at the right to attach Tie"
+msgstr ""
+
+#: time-description.cc:17
+msgid "cadenza"
+msgstr "cadens"
+
+#: time-description.cc:106
+msgid "partial measure must be non-negative"
+msgstr ""
+
+#: time-description.cc:108
+msgid "partial measure too large"
+msgstr ""
+
+#: timing-translator.cc:32
+msgid "conflicting timing request"
+msgstr ""
+
+#: timing-translator.cc:64
+msgid "meter change not allowed here"
+msgstr "maatwisseling is hier niet geoorloofd"
+
+#: timing-translator.cc:87
+msgid "barcheck failed by: %s"
+msgstr "misplaatste maatstreep: %s"
+
+#: translator-ctors.cc:40
+msgid "unknown translator `%s'"
+msgstr ""
+
+#: translator-group.cc:149
+msgid "can't find or create `%s' called `%s'"
+msgstr ""
+
+#: translator-group.cc:263
+msgid "can't find or create `%s'"
+msgstr ""
+
+#: translator-group.cc:353
+msgid "can't find `%s'"
+msgstr "kan niet vinden `%s'"
+
+#: word-wrap.cc:68
+msgid "ugh, this measure is too long"
+msgstr "ugh, deze maat is te lang"
+
+#: word-wrap.cc:69
+msgid "breakpoint: %d"
+msgstr ""
+
+#: word-wrap.cc:70
+msgid "generating stupido solution"
+msgstr ""
+
+#: word-wrap.cc:88
+msgid "I don't fit; put me on Montignac"
+msgstr "Ik ben te dik."
+
+#: parser.yy:300 parser.yy:303
+msgid "incorrect mudela version: %s (%s, %s)"
+msgstr "verkeerde mudela versie: %s (%s, %s)"
+
+#: parser.yy:477
+msgid "More than one music block"
+msgstr ""
+
+#: parser.yy:1047 parser.yy:1225 parser.yy:1252
+msgid "not a duration: %d"
+msgstr "is geen duur: %d"
+
+#: parser.yy:1049 parser.yy:1254
+msgid "can't abbreviate"
+msgstr ""
+
+#: parser.yy:1264
+msgid "have to be in Note mode for notes"
+msgstr ""
+
+#: parser.yy:1286
+msgid "have to be in Lyric mode for lyrics"
+msgstr ""
+
+#: lexer.ll:125
+msgid "EOF found inside a comment"
+msgstr ""
+
+#: lexer.ll:163
+msgid "undefined identifier: `%s'"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:168
+msgid "missing end quote"
+msgstr ""
+
+#. backup rule
+#: lexer.ll:191 lexer.ll:195
+msgid "white expected"
+msgstr ""
+
+#: lexer.ll:342
+msgid "illegal character: `%c'"
+msgstr ""
+
+#: lexer.ll:392
+msgid "unknown escaped string: `\\%s'"
+msgstr ""
+
+#: out/BLURB.hh:2
+msgid ""
+"LilyPond is the GNU Project music typesetter.  This program can print\n"
+"beautiful sheet music from a music definition file.  It can also play\n"
+"mechanical performances to a MIDI file.  Features include multiple\n"
+"staffs, meters, clefs, keys, lyrics, versatile input language, cadenzas,\n"
+"beams, slurs, triplets, formatting scores, part extraction.  It includes\n"
+"a nice font of musical symbols.\n"
+msgstr ""
+"LilyPond is de muziekzetter van het GNU Project.  Dit programma drukt\n"
+"prachtige bladmuziek volgens een muzikaal definitie bestand.  Ook kan\n"
+"het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
+"Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en losse partijen.  Een fraaie set\n"
+"muziektekens is inbegrepen.\n"
+
+#: out/COPERTINA.hh:2
+msgid ""
+"LilyPond \350 il tipografo musicale del progetto GNU.   Questo programma \350\n"
+"fatto per stampare belle partiture da un documento definito per musica.\n"
+"Pu\362 anche suonare le prestazioni meccaniche ad un documento MIDI.  Le\n"
+"caratteristiche includono i personali multipli, tester, chiavi, suoni,\n"
+"lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,\n"
+"segni di formattazione, estrazione delle parte.  \310 compresa una seria \n"
+"completa di caratteri musicali.\n"
+msgstr ""
+
+#: out/FLAPTEKST.hh:2
+msgid ""
+"LilyPond is de muziekzetter van het GNU Project.  Dit programma drukt\n"
+"prachtige bladmuziek volgens een muzikaal definitie bestand.  Ook kan\n"
+"het een mechanische uitvoering afspelen naar een MIDI bestand.\n"
+"Bijzondere kunstjes zijn verscheidene notenbalken, maatsoorten,\n"
+"sleutels, toonaarden, zangteksten, krachtige invoer taal, cadensa,\n"
+"balken, boogjes, triolen, partituren, en uittreksels voor individuele \n"
+"partijen.  Een fraaie set muziektekens is inbegrepen.\n"
+msgstr ""
+
+#: main.cc:43
+msgid "Usage: %s [OPTION]... [FILE]"
+msgstr ""
+
+#: main.cc:45
+msgid "Translate midi-file to mudela"
+msgstr ""
+
+#: main.cc:51
+msgid "  -b, --no-quantify      write exact durations, e.g.: a4*385/384\n"
+msgstr ""
+
+#: main.cc:63
+msgid "  -k, --key=ACC[:MINOR]  set key: ACC +sharps/-flats; :1 minor\n"
+msgstr ""
+
+#: main.cc:66
+msgid "  -n, --no-silly         assume no plets or double dots, smallest is 32\n"
+msgstr ""
+
+#: main.cc:69
+msgid "  -o, --output=FILE      set FILE as default output\n"
+msgstr "  -o, --output=BESTAND   zet BESTAND als verval uitvoer\n"
+
+#: main.cc:72
+msgid "  -p, --no-plets         assume no plets\n"
+msgstr ""
+
+#: main.cc:75
+msgid "  -q, --quiet            be quiet\n"
+msgstr ""
+
+#: main.cc:81
+msgid "  -s, --smallest=N       assume no shorter (reciprocal) durations than N\n"
+msgstr ""
+
+#: main.cc:84
+msgid "  -v, --verbose          be verbose\n"
+msgstr ""
+
+#: main.cc:90
+msgid "  -x, --no-double-dots   assume no double dotted notes\n"
+msgstr ""
+
+#: main.cc:105
+msgid "Mi2mu, translate midi to mudela"
+msgstr ""
+
+#: midi-parser.cc:64
+msgid "zero length string encountered"
+msgstr ""
+
+#: midi-score-parser.cc:45
+msgid "MIDI header expected"
+msgstr ""
+
+#. is this signed?
+#: midi-score-parser.cc:50
+msgid "Invalid header length"
+msgstr ""
+
+#: midi-score-parser.cc:53
+msgid "Invalid midi format"
+msgstr ""
+
+#: midi-score-parser.cc:56
+msgid "Invalid number of tracks"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "can't handle %s"
+msgstr ""
+
+#: midi-score-parser.cc:59
+msgid "non-metrical time"
+msgstr ""
+
+#: midi-score-parser.cc:95
+msgid "Parsing...\n"
+msgstr ""
+
+#: midi-track-parser.cc:70
+msgid "junking note-end event: channel = %d, pitch = %d"
+msgstr ""
+
+#: midi-track-parser.cc:125
+msgid "invalid running status"
+msgstr ""
+
+#: midi-track-parser.cc:326
+msgid "unimplemented MIDI meta-event"
+msgstr ""
+
+#: midi-track-parser.cc:331
+msgid "invalid MIDI event"
+msgstr ""
+
+#: midi-track-parser.cc:346
+msgid "MIDI track expected"
+msgstr ""
+
+#: midi-track-parser.cc:351
+msgid "invalid track length"
+msgstr ""
+
+#. heu, -2: should be - 1 1/2: A -> fis
+#: mudela-item.cc:62
+msgid "%% \"%s\"; %% not supported yet"
+msgstr ""
+
+#: mudela-item.cc:107
+msgid "#32 in quarter: %d"
+msgstr ""
+
+#: mudela-score.cc:96
+msgid "ugh"
+msgstr ""
+
+#: mudela-score.cc:108
+msgid "Lily output to %s..."
+msgstr ""
+
+#: mudela-score.cc:118 mudela-score.cc:167
+msgid "track "
+msgstr ""
+
+#: mudela-score.cc:152
+msgid "Processing..."
+msgstr ""
+
+#: mudela-score.cc:163
+msgid "Creating voices..."
+msgstr ""
+
+#: mudela-score.cc:176
+msgid "NOT Filtering tempo..."
+msgstr ""
+
+#: mudela-score.cc:185
+msgid "NOT Quantifying columns..."
+msgstr ""
+
+#: mudela-score.cc:189
+msgid "Quantifying columns..."
+msgstr ""
+
+#.    return;
+#: mudela-score.cc:224
+msgid "Settling columns..."
+msgstr ""
+
+#: mudela-staff.cc:100
+msgid "% midi copyright:"
+msgstr ""
+
+#: mudela-staff.cc:101
+msgid "% instrument:"
+msgstr ""
+
+#: mudela-stream.cc:36
+msgid "lily indent level: %d"
+msgstr ""
+
+#: mudela-stream.cc:88
+msgid "% from input file: "
+msgstr ""
+
+#: version.cc:12
+msgid "of"
+msgstr "van"
diff --git a/scripts/Makefile b/scripts/Makefile
new file mode 100644 (file)
index 0000000..17ce13c
--- /dev/null
@@ -0,0 +1,15 @@
+# bin/Makefile
+
+depth = ..
+
+include $(depth)/make/Stepmake.make 
+
+
+include $(stepdir)/Scripts.make
+
+# want release, make-patch too!
+SEXECUTABLES=convert-mudela mudela-book ly2dvi
+
+include $(stepdir)/Executable.make
+
+
diff --git a/scripts/convert-mudela.py b/scripts/convert-mudela.py
new file mode 100644 (file)
index 0000000..4872dd6
--- /dev/null
@@ -0,0 +1,264 @@
+#!@PYTHON@
+
+# convert-mudela.py -- convertor for mudela versions
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1998 
+
+# TODO
+#   use -f and -t for -s output
+
+# NEWS
+# 0.2
+#  - rewrite in python
+
+program_name = 'convert-mudela'
+version = '0.2'
+
+
+
+import os
+import sys
+import __main__
+import getopt
+from string import *
+import regex
+import regsub
+import time
+mudela_version_re_str ='\\\\version *\"\(.*\)\"'
+mudela_version_re = regex.compile(mudela_version_re_str)
+
+def program_id ():
+       return '%s version %s' %(program_name,  version);
+
+def identify ():
+       sys.stdout.write (program_id () + '\n')
+
+def gulp_file(f):
+       try:
+               i = open(f)
+               i.seek (0, 2)
+               n = i.tell ()
+               i.seek (0,0)
+       except:
+               print 'can\'t open file: ' + f + '\n'
+               return ''
+       s = i.read (n)
+       if len (s) <= 0:
+               print 'gulped empty file: ' + f + '\n'
+       i.close ()
+       return s
+
+
+def str_to_tuple (s):
+       return tuple (map (atoi, split (s,'.')))
+
+def tup_to_str (t):
+       return join (map (lambda x: '%s' % x, list (t)), '.')
+
+def version_cmp (t1, t2):
+       for x in [0,1,2]:
+               if t1[x] - t2[x]:
+                       return t1[x] - t2[x]
+       return 0
+               
+
+def guess_mudela_version(filename):
+       s = gulp_file (filename)
+       if mudela_version_re.search(s) <> -1:
+               return mudela_version_re.group(1)
+       else:
+               return ''
+
+def help ():
+       sys.stdout.write (
+               ("Usage: %s [OPTION]... [FILE]...\n" 
+               + "Try to convert to newer mudela-versions\n"
+               + "Options:\n"
+               + "  -h, --help             print this help\n"
+               + '  -e, --edit             in place edit\n'
+               + '  -f, --from=VERSION     start from version\n'
+               + '  -s, --show-rules       print out all rules.\n'
+               + '  -t, --to=VERSION       target version\n') % program_name)
+       sys.exit (0)
+
+class FatalConversionError:
+       pass
+
+conversions = []
+
+def show_rules (file):
+       for x in conversions:
+               file.write  ('%s: %s\n' % (tup_to_str (x[0]), x[2]))
+
+############################
+               
+if 1:                                  # need new a namespace
+       def conv (lines):
+               found =0
+               for x in lines:
+                       if regex.search ('\\\\octave', x) <> -1:
+                               found = 1
+                               break
+               if found:
+                       sys.stderr.write ('\nNot smart enough to convert \\octave\n')
+                       raise FatalConversionError()
+               return lines
+               
+
+       conversions.append (
+               ((0,1,19), conv, 'deprecated \\octave; can\'t convert automatically'))
+
+
+if 1:                                  # need new a namespace
+       def conv (lines):
+               newlines = []
+               for x in lines:
+                       x = regsub.gsub ('\\\\textstyle\\([^;]+\\);',
+                                        '\\\\property Lyrics . textstyle = \\1', x)
+                       x = regsub.gsub ('\\\\key\\([^;]+\\);', '\\\\accidentals \\1;', x)
+                       newlines.append (x)
+               return newlines
+               
+
+       conversions.append (
+               ((0,1,20), conv, 'deprecated \\textstyle, new \key syntax'))
+
+
+if 1:                                  # need new a namespace
+       def conv (lines):
+               newlines = []
+               for x in lines:
+                       x = regsub.gsub ('\\\\musical_pitch',
+                                        '\\\\musicalpitch',x)
+                       x = regsub.gsub ('\\\\meter',
+                                        '\\\\time',x)
+                       newlines.append (x)
+               return newlines
+               
+
+       conversions.append (
+               ((0,1,21), conv, '\\musical_pitch -> \\musicalpitch, '+
+                '\\meter -> \\time\n'))
+
+if 1:                                  # need new a namespace
+       def conv (lines):
+               return lines
+
+       conversions.append (
+               ((1,0,0), conv, '0.1.21 -> 1.0.0 '))
+
+
+
+############################
+
+def get_conversions (from_version, to_version):
+       def version_b (v, f = from_version, t = to_version):
+               return version_cmp (v[0], f) > 0 and version_cmp (v[0], t) <= 0
+       return filter (version_b, conversions)
+
+
+def latest_version ():
+       return conversions[-1][0]
+
+def do_conversion (infile, from_version, outfile, to_version):
+       
+       conv_list = get_conversions (from_version, to_version)
+
+       sys.stderr.write ('Applying conversions: ')
+       lines = infile.readlines();
+       last_conversion = ()
+       try:
+               for x in conv_list:
+                       sys.stderr.write (tup_to_str (x[0])  + ', ')
+                       lines = x[1] (lines)
+                       last_conversion = x[0]
+                       
+               sys.stderr.write ('\n')
+
+       except FatalConversionError:
+               sys.stderr.write ('Error while converting; I won\'t convert any further')
+
+       for x in lines:
+               if last_conversion:
+                       x = regsub.sub (mudela_version_re_str, '\\version \"%s\"' % tup_to_str (last_conversion), x)
+               outfile.write(x)
+
+class UnknownVersion:
+       pass
+
+def do_one_file (infile_name):
+       outfile_name = ''
+       if __main__.edit:
+               outfile_name = infile_name + '.NEW'
+       elif __main__.outfile_name:
+               outfile_name = __main__.outfile_name
+
+       if __main__.from_version:
+               from_version = __main__.from_version
+       else:
+               guess = guess_mudela_version (infile_name)
+               if not guess:
+                       raise UnknownVersion()
+               from_version = str_to_tuple (guess)
+
+       if __main__.to_version:
+               to_version = __main__.to_version
+       else:
+               to_version = latest_version ()
+
+
+       if infile_name:
+               infile = open (infile_name,'r')
+       else:
+               infile = sys.stdin
+
+       if outfile_name:
+               outfile =  open (outfile_name, 'w')
+       else:
+               outfile = sys.stdout
+
+       
+       do_conversion (infile, from_version, outfile, to_version)
+
+       if __main__.edit:
+               os.rename (infile_name, infile_name + '~')
+               os.rename (infile_name + '.NEW', infile_name)
+
+
+edit = 0
+to_version = ()
+from_version = ()
+outfile_name = ''
+
+identify ()
+(options, files) = getopt.getopt (
+       sys.argv[1:], 'f:t:seh', ['show-rules', 'help', 'edit', 'from', 'to'])
+
+for opt in options:
+       o = opt[0]
+       a = opt[1]
+       if o== '--help' or o == '-h':
+               help ()
+       elif o== '--from' or o=='-f':
+               from_version = str_to_tuple (a)
+       elif o== '--to' or o=='-t':
+               to_version = str_to_tuple (a)
+       elif o== '--edit' or o == '-e':
+               edit = 1
+       elif o== '--show-rules' or o == '-s':
+               show_rules (sys.stdout)
+               sys.exit(0)
+       else:
+               print o
+               raise getopt.error
+
+
+for f in files:
+       if f == '-':
+               f = ''
+       try:
+               do_one_file (f)
+       except UnknownVersion:
+               pass
diff --git a/scripts/ly2dvi.sh b/scripts/ly2dvi.sh
new file mode 100644 (file)
index 0000000..07226c8
--- /dev/null
@@ -0,0 +1,997 @@
+#!/bin/sh
+#
+# Script to make a LaTeX file for Lilypond
+#
+# Written by Jan Arne Fagertun <Jan.A.Fagertun@energy.sintef.no>
+#  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.12"
+NAME=ly2dvi.sh
+IDENTIFICATION="$NAME $VERSION" 
+NOW=`date`
+echo "$IDENTIFICATION" 1>&2
+
+# TODO:
+#  prevent orphaned "Lily is here" strings
+
+# NEWS
+
+# 0.12
+#  - -S/--sourcedir switch
+#
+
+#
+#0.11.jcn3
+# - mudelaDefs fixes, (thanks PC)
+#0.11.jcn2
+# - pass -I, --include to Lily
+# - bf: split $LILYINCLUDE and try all dirs
+# - bf: geometry left/top
+#
+#0.11.pc
+# - fix backslash gobbling, reduce number of separate processes used
+# - require readable rc files, allow rc file in /usr/local/share/lilypond/lilyrc
+# - use latex path, not tex path
+# - Don't override if kpsepath returns non-NULL
+# - Don't clobber x.tex if it wasn't created by ly2dvi
+#
+#
+#0.11.jcn1
+# - find .fly files too
+#
+#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 <jvromans@squirrel.nl> 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 [OPTION]... [FILE]...
+
+Options:
+  -D,--debug           increase verbosity
+  -F,--headers=        name of additional LaTeX headers file
+  -H,--Height=         set paper height (points) (see manual page)
+  -I,--include=DIR     add DIR to search path of LilyPond
+  -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
+  -S,--sourcedir       set sourcedir 
+
+  files may be (a mix of) input to or output from lilypond(1)
+EOF
+}
+
+
+#
+# SVr4 echo swallows backslashes, and there's no way to turn it off.
+# Therefore use Echo whenever backslashes may be important.
+# printf is in the posix.2 standard -- which means it's in 
+# all modern shells.
+#
+Echo() {
+       printf "%s\n" "$@"
+}
+
+#
+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
+}
+
+doRcFiles()
+{
+#
+# RC-files ?
+#
+for D in /usr/local/share/ /usr/local/share/lilypond/ /etc/ $HOME/. ./.
+do
+  RCfile=$D"lilyrc"
+  [ -r $RCfile ] && . $RCfile
+done
+fORI=$ORIENTATION
+fLNG=$LANGUAGE
+fPSZ=$PAPERSIZE
+fLHF=$LATEXHF
+unset ORIENTATION LANGUAGE PAPERSIZE LATEXHF
+}
+
+
+
+#
+# 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
+SOURCEDIR=""
+LILYPOND_EXECUTABLE=lilypond
+doRcFiles
+
+
+
+# Keywords defined in titledefs.tex
+#
+TF="`kpsewhich -n latex tex titledefs.tex`"
+MU_DEF=""
+if [ -r "${TF:=/usr/local/share/texmf/tex/lilypond/titledefs.tex}" ]
+then
+  MU_DEF=`sed -n -e 's/.*newcommand\*{.\(mudela[^}]*\)}.*$/\1/p' "$TF"`
+fi
+
+: "${MU_DEF:=mudelatitle mudelasubtitle mudelacomposer \
+          mudelameter mudelaopus mudelaarranger mudelapiece \
+         mudelapoet mudelainstrument \
+         }"
+
+#
+# debugging
+#
+debug_echo=:
+#
+# All files in one LaTeX run
+#
+SEPFILE=N
+#
+# Find command line options and switches
+#
+# "x:" x takes argument
+#
+switches="DF:H:I:KLNO:W:dhkl:o:p:S: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
+      ;;
+    I  )
+      LILYOPTS="$LILYOPTS -I $OPTARG"
+      LILYINCLUDE="$LILYINCLUDE:$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
+      ;;
+    S  )
+      SOURCEDIR=$OPTARG
+      ;;
+    \? )
+      help;
+      exit -1
+      ;;
+    # a long option!
+    -)
+      $debug_echo "long option: \`$OPTARG'"
+      case "$OPTARG" in
+        He*|-He*)
+          PHEIGHT"`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"=
+          ;;
+        W*|-W*)
+          PWIDTH="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
+          ;;
+        dep*|-dep*)
+          LILYOPTS="$LILYOPTS -d"
+          ;;
+        d*|-d*)
+          [ $debug_echo = echo ] && set -x
+          debug_echo=echo
+          ;;
+        hea*|-hea*)
+          LATEXHF="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
+          ;;
+        h*|-h*)
+          help;
+         exit 0
+          ;;
+        i*|-i*)
+          dir="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
+         LILYOPTS="$LILYOPTS --include=$dir"
+         LILYINCLUDE="$LILYINCLUDE:$dir"
+         ;;
+        keepli*|-keepli*)
+          KEEP_LILY_OUTPUT=Y
+          ;;
+        k*|-k*)
+          KEEP_LY2DVI_OUTPUT=Y
+          ;;
+        land*|-land*)
+          ORIENTATION=landscape
+          ;;
+        lang*|-lang*)
+          LANGUAGE="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
+          ;;
+       n*|-n*)
+         PNUM="\pagestyle{empty}"
+         ;;
+       or*|-or*)
+         ORIENTATION="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
+         ;;
+       ou*|-ou*)
+         OUTPUTDIR="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
+         ;;
+        p*|-p*)
+          PAPERSIZE="`expr \"$OPTARG\" ':' '[^=]*=\(.*\)'`"
+          ;;
+        separa*|-sep*)
+         SEPFILE=Y
+          ;;
+       sourcedir*|-sourcedir*)
+         SOURCEDIR=$OPTARG
+         ;;
+        *|-*)
+          echo "$0: illegal option -- \"$OPTARG\""
+          help;
+          exit -1
+          ;;
+      esac
+  esac
+done
+shift `expr $OPTIND - 1`
+
+if [ "$SOURCEDIR" != "" ]; then
+# apparently MakeTeXTFM can't handle relative dirs
+       SOURCEDIR=`cd $SOURCEDIR; pwd`
+       export LILYINCLUDE="$SOURCEDIR/init:$SOURCEDIR/mf/out:$LILYINCLUDE"
+       export TEXINPUTS="$SOURCEDIR/tex:$TEXINPUTS:"
+       export MFINPUTS="$SOURCEDIR/mf:$MFINPUTS:"
+       export LILYPOND_EXECUTABLE="$SOURCEDIR/lily/out/lilypond"
+
+       set|grep MF
+       set|grep TEXIN
+fi
+
+#
+# Input file name
+#
+if [ "$1" = "" ]
+then
+  help
+  $debug_echo "$IDENTIFICATION: No input file name given"
+  exit 1
+fi
+# regexp_quote -- quote a string as a regular expression for egrep or sed
+regexp_quote(){
+       Echo "$@" | sed 's/\([]\[\.*?+^$]\)/\\\1/g'
+}
+#
+#
+mudelaDefs(){
+# Include \def\mudela-definitions
+#
+for L in $MU_DEF
+do
+  for F in "$File" "$OF"
+  do
+    LL=`sed -n 's/\\\\def\\\\'"$L"'{\([^}]*\)}.*$/\1/p' "$F"`
+    [ "$LL" ] && {
+         Echo "$1\\"$L'{'"$LL"'}%'                                >> $LatF
+         break
+    }
+  done
+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 ')' / 2`"pt
+$debug_echo "Text left = $HMARG"
+VMARG="`expr '(' $PHp - $THp ')' / 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, 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{}%
+\def\mudelaopus{}%
+\def\mudelapiece{}%
+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
+  OIFS="$IFS"
+  IFS=':'
+  x=`echo $LILYINCLUDE | sed "s!:! !g"`
+  IFS="$OIFS"
+  for lypath in . $x
+  do
+    if [ -f "$lypath/$1" ]
+    then
+      GF="$lypath/$1"
+      return
+    fi
+
+    if [ -f "$lypath/$1.ly" ]
+    then
+      GF="$lypath/$1.ly"
+      return
+    fi
+    if [ -f "$lypath/$1.fly" ]
+    then
+       GF="$lypath/$1.fly"
+       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 
+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=25.0cm
+      fi
+    else
+      $debug_echo $IDENTIFICATION": Mudela file name not found."
+      TW=15.5cm
+      TH=25.0cm
+    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_EXECUTABLE $LILYOPTS $IF 2>&1  | tee $LOGFILE
+    OF="`sed -n -e 's/TeX output to \([^\.]*\.tex\)\.\.\.$/\1/p' $LOGFILE`"
+    $debug_echo "==> $OF"
+    LILY_OUTPUT_FILES="$LILY_OUTPUT_FILES $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
+  done
+done
+if [ $SEPFILE = N ]
+then
+  endFile
+fi
+#
+# OK - finished
+#
diff --git a/scripts/mudela-book.py b/scripts/mudela-book.py
new file mode 100644 (file)
index 0000000..ce491b8
--- /dev/null
@@ -0,0 +1,246 @@
+
+# python version of mudela-book.  WIP.
+
+#  TODO: center option
+
+# log:
+
+# 0.3:
+#   rewrite in Python.
+
+import os
+import string
+import regex
+import getopt
+import sys
+import regsub
+
+outdir = 'out/'
+program_version = '0.3'
+
+
+
+
+def file_exist_b(name):
+    try: 
+       f = open(name)
+    except IOError:
+       return 0
+    f.close ()
+    return 1
+
+class CompileStatus:
+       pass
+
+def file_mtime (name):
+    return os.stat (name)[8] #mod time
+
+def compile (command, infile, outfile):
+       indate = file_mtime (infile)
+       try:
+               outdate = file_mtime (outfile)
+               recompile = indate > outdate
+
+       except os.error:
+               recompile = 1
+
+       if recompile:
+               sys.stderr.write ('invoking `%s\'\n' % command)
+               
+               status = os.system (command)
+               if status:
+                       raise CompileStatus
+
+
+class Mudela_output:
+       def __init__ (self):
+               self.basename = ''
+               self.fragment = 0
+               self.size = 16
+               
+       def open (self, basename):
+               self.basename = basename
+               self.temp_file = "%s/%s" %(outdir, 'mudela-temp.ly')
+               self.file = open (self.temp_file, 'w')
+               self.file.write ('\\include \"paper%d.ly\"\n' % self.size)
+               if self.size == 16:
+                       s = 'sixteen'
+               else:
+                       s = 'twenty'
+
+               self.file.write ('default_paper = \\paper { \\paper_%s\n linewidth = -15.\\cm; }\n' % s)
+               
+               if self.fragment:
+                       self.file.write ('\\score { \\melodic { ')
+
+       def write (self,s):
+               self.file.write (s)
+
+       def close (self):
+               if self.fragment:
+                       self.file.write (
+                               '}\n \\paper { linewidth = -1.0\\cm;\n' +
+                               'castingalgorithm = \\Wordwrap; } }\n')
+
+
+               self.file.close ()
+
+               inf=self.basename + '.ly'
+               outf = self.basename + '.tex'           
+               if not file_exist_b (inf):
+                       status = 1
+               else:
+#                      print 'invoking %s' %('diff %s %s' % (self.temp_file, inf))
+                       status = os.system ('diff -q %s %s' % (self.temp_file, inf))
+#                      print 'status %d' % status
+
+               if status:
+                       os.rename (self.temp_file, inf)
+
+               compile ('lilypond  -o %s %s'%  (self.basename, inf), inf, outf)
+#                      os.rename (self.basename + '.tex', outdir  +)
+               
+       
+
+class Tex_output:
+       def __init__ (self, name):
+               self.output_fn = '%s/%s' % (outdir, name)
+               self.mudela = 0
+               self.file = open (self.output_fn , 'w')
+               self.verbatim = 0               
+       def open_mudela (self, basename):
+
+               self.mudela_basename =basename
+               if self.verbatim:
+                       self.file.write ('\\begin{verbatim}\n')
+               self.mudela = 1
+
+       def write (self, s):
+               self.file.write (s)
+                       
+       def write_mudela (self, s):
+               if self.verbatim:
+                       self.file.write (s)
+                       
+       def close_mudela (self):
+               if self.verbatim:
+                       self.file.write ('\\end{verbatim}\n')
+                       self.verbatim = 0
+               
+               self.file.write (
+                   '\\preMudelaExample\\input %s\n\postMudelaExample' %(self.mudela_basename))
+               self.mudela = 0
+
+
+
+
+
+begin_mudela_re = regex.compile ('^ *\\\\begin{mudela}')
+begin_mudela_opts_re = regex.compile ('^ *\\\\begin{mudela}\[\(.*\)\]')
+end_mudela_re = regex.compile ('^ *\\\\end{mudela}')
+section_re = regex.compile ('\\\\section')
+chapter_re = regex.compile ('\\\\chapter')
+
+
+class Tex_input:
+       def __init__ (self, name, outname):
+               self.infile = open (name)
+               self.outname = outname
+               self.chapter = 0
+               self.section = 0
+               self.fine_count =0
+               self.mudtex = Tex_output (self.outname)
+               self.mudela = None
+       def set_sections (self, l):
+               if section_re.search (l) <> -1:
+                       self.section = self.section + 1
+               if chapter_re.search (l) <> -1:
+                       self.section = 0
+                       self.chapter = self.chapter + 1
+
+                       
+       def gulp_mudela (self):
+               pass
+
+       def gen_basename (self):
+               return '%s/%s-%d.%d.%d' % (outdir, self.outname,self.chapter,self.section,self.fine_count)
+       def do_it(self):
+               lines = self.infile.readlines ()
+               for line in lines:
+                       if begin_mudela_re.search (line) <> -1:
+                               if begin_mudela_opts_re.search (line) <> -1:
+                                       opts = begin_mudela_opts_re.group (1)
+                               else:
+                                       opts = ''
+                               optlist = string.split (opts, ',')
+                               self.mudela = Mudela_output ()
+                               if 'fragment' in optlist:
+                                       self.mudela.fragment = 1
+                               if '16pt' in optlist:
+                                       self.mudela.size = 16
+                               if '20pt' in optlist:
+                                       self.mudela.size = 20
+                               
+                               if 'verbatim' in optlist:
+                                       self.mudtex.verbatim = 1
+
+                               b = self.gen_basename ()
+                               self.mudtex.open_mudela (b)
+                               self.mudela.open (b)
+
+
+                               continue
+                       elif end_mudela_re.search (line) <> -1:
+                               self.mudela.close ()
+                               self.mudtex.close_mudela ()
+                               self.mudela = None
+                               self.fine_count = self.fine_count + 1
+                               continue
+                           
+                       if self.mudela:
+                               self.mudela.write (line)
+                               self.mudtex.write_mudela (line)
+                       else:
+                               self.mudtex.write (line)
+                       self.set_sections(line)
+               del self.mudtex
+               
+
+def help():
+    sys.stdout.write("Usage: mudela-book [options] FILE\n"
+                + "Generate hybrid LaTeX input from Latex + mudela"
+                + "Options:\n"
+                + "  -h, --help             print this help\n"
+                + "  -d, --outdir=DIR       prefix directory\n" 
+                + "  -o, --outname=FILE     prefix for filenames\n"
+                    )
+    sys.exit (0)
+
+
+
+sys.stderr.write ('This is %s version %s\n' % ('mudela-book', program_version))
+
+outname = ''
+(options, files) = getopt.getopt(
+       sys.argv[1:], 'hd:o:', [ 'outdir=', 'outname=', 'help'])
+for opt in options:
+       o = opt[0]
+       a = opt[1]
+       if o == '--outname' or o == '-o':
+               outname = a
+       if o == '--outdir' or o == '-d':
+               outdir = a
+       if o == '--help' or o == '-h':
+               help ()
+
+
+for f in files:
+    my_outname = outname
+    if not my_outname:
+       my_outname = regsub.sub ('\\(.*\\)\\.doc', '\\1', f)
+
+    inp = Tex_input (f, my_outname)
+    inp.do_it ()
+       
+
+
diff --git a/stepmake/AUTHORS.txt b/stepmake/AUTHORS.txt
new file mode 100644 (file)
index 0000000..ba6e0f2
--- /dev/null
@@ -0,0 +1,24 @@
+
+NAME
+
+AUTHORS - who did what on StepMake?
+
+DESCRIPTION
+
+This file lists authors of StepMake, and what they wrote.
+
+AUTHORS
+
+o Jan Nieuwenhuizen <janneke@gnu.org>,
+    http://www.digicash.com/~jan
+
+    Main author.
+o Han-Wen Nienhuys <hanwen@cs.uu.nl>, 
+    http://www.cs.uu.nl/people/hanwen
+
+    Main author.
+
+CONTRIBUTORS
+
+o Jeffrey B. Reed <daboys@bga.com>,
+    Windows-nt fixes.
diff --git a/stepmake/Documentation/Makefile b/stepmake/Documentation/Makefile
new file mode 100644 (file)
index 0000000..0c43e2f
--- /dev/null
@@ -0,0 +1,24 @@
+# Documentation/Makefile
+
+depth = ..
+
+include $(depth)/make/Stepmake.make 
+
+OUTTXT_FILES = $(OUTYO_FILES:.yo=.txt) $(OUTIN_FILES:.yo=.txt)
+EXTRA_DIST_FILES = 
+SUBDIRS=topdocs
+
+
+include $(stepdir)/Documentation.vars.make
+include $(stepdir)/Documentation_rules.make
+
+default: do-doc
+
+do-doc: $(OUTTXT_FILES)
+
+# ugh
+check-doc-deps: do-doc
+       true
+
+doc: do-doc
+
diff --git a/stepmake/Documentation/automake.yo b/stepmake/Documentation/automake.yo
new file mode 100644 (file)
index 0000000..12e7683
--- /dev/null
@@ -0,0 +1,124 @@
+article(Automake -- Urgh!)(HWN and JCN)()
+
+sect(Introduction)
+
+Every once in a while, we get comments on our `non-standard' (non GNU
+compliant) configuration/compilation system.  In this document, we try
+to explain why we built our own system.  We focus on Automake, but of
+course writing complex file(Makefile.in)s without generating them
+automatically is an even more deadly sin in our opinion.
+
+
+sect(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, file(make)
+itself is broken, and any tool built on top of file(make) is broken as well.
+
+
+sect(Irritations)
+
+We'll start with the superficial irritations first:
+itemize(
+it() 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 1250
+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.
+
+
+it() Automake tries to cater for every taste of file(make).  But anyone
+who does more than the trivial code(configure; make install) has to
+install Automake and GNU make anyway (for example, you need GCC and
+GNU Make for dependency tracking).
+
+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 while
+developing.  This means that it is counterproductive to use Automake
+for non-essential programs that are under (heavy) development.
+
+
+it()
+Support for filetypes in built in to Automake, and cannot be added on
+the fly: 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.
+
+There are as many file types as there are languages and compilers.
+Extending Automake to support all these languages is error-prone, and
+creates nasty version dependencies between an Automake-using package
+and Automake itself.  A package should be able to supply its own
+specific rules and targets.
+
+it() Dependency handling is unreliable in our experience. On
+several occasions we had unexplainable errors, that went away after
+doing a code(make distclean), and recompile.
+
+it() It is slower, much slower than a tailored solution.  This
+diffence in speed can be as large as 800%. (On JCNs machine a
+code(make dist) takes 17 minutes in stead of 2) for every distribution
+made; this constitutes 45 minutes of irritation on an average hacking-night.
+
+it() For a large project, a specialised file(Makefile) system costs
+relatively little extra effort.  The extra effort pays itself back in
+speed and control.
+
+it() The file(Makefile)s, file(Makefile.in)s, 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.)  )
+
+sect(Fundamental problems)
+
+Many of the fundamental problems can be traced back to flaws in make:
+
+itemize(
+it() 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.
+
+it() 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 compilation system, we worked around this
+non-feature by using generic include files as a stopgap function
+call.)
+
+
+
+it() code(VPATH) is a broken concept: programs should not try to be
+intelligent on their own; being intelligent is something the
+programmer should do.  make should do exactly as it is told, and make
+should enable easy formulation of these commands.
+)
+
+Automake 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.
+
+
+sect(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/stepmake/Documentation/layout.yo b/stepmake/Documentation/layout.yo
new file mode 100644 (file)
index 0000000..5f30475
--- /dev/null
@@ -0,0 +1,20 @@
+verb(
+    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 file($HOME/usr/src)
+and (for building rpms only) in file($HOME/.rpmrc):
+verb(
+    topdir: /home/fred/usr/src/RedHat
+)
diff --git a/stepmake/Documentation/topdocs/AUTHORS.yo b/stepmake/Documentation/topdocs/AUTHORS.yo
new file mode 100644 (file)
index 0000000..e14f5d0
--- /dev/null
@@ -0,0 +1,27 @@
+nsect(NAME)
+
+AUTHORS - who did what on StepMake?
+
+nsect(DESCRIPTION)
+
+This file lists authors of StepMake, and what they wrote.
+
+nsect(AUTHORS)
+itemize(
+it()nemail(Jan Nieuwenhuizen)(janneke@gnu.org),
+    lurl(http://www.digicash.com/~jan)
+    nl()
+    Main author.
+it()nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl), 
+    lurl(http://www.cs.uu.nl/people/hanwen)
+    nl()
+    Main author.
+)
+
+nsect(CONTRIBUTORS)
+
+itemize(
+it()nemail(Jeffrey B. Reed)(daboys@bga.com),
+    Windows-nt fixes.
+)
+
diff --git a/stepmake/Documentation/topdocs/BLURB.in b/stepmake/Documentation/topdocs/BLURB.in
new file mode 100644 (file)
index 0000000..7af77f0
--- /dev/null
@@ -0,0 +1,6 @@
+StepMake is a drop-in package that takes care of generic Makefile and
+packaging/distribution issues.  It enables you to write only the simplest of
+Makefile snippets, while providing a series powerful make targets.  Features
+include speed, wildcarding, out/ dir build, stateless Makefiles and package
+clustering.  It includes some handy scripts for making (package-)diffs and
+patches, making binary distributions etc.
diff --git a/stepmake/Documentation/topdocs/INSTALL.yo b/stepmake/Documentation/topdocs/INSTALL.yo
new file mode 100644 (file)
index 0000000..4060944
--- /dev/null
@@ -0,0 +1,162 @@
+nsect(NAME)
+
+INSTALL - installing StepMake
+
+nsect(DESCRIPTION)
+
+This page documents installation and usage of StepMake
+
+nsect(ABSTRACT)
+
+verbinclude(BLURB.in)
+
+To use StepMake with your package, you do something remotely like:
+verb(
+    tar xzf releases/stepmake-0.1.23
+    cd package-x.x.x/                 # package to be StepMake-ised
+    ./../stepmake-0.1.23/bin/stepmakeise.sh
+)
+You'll have to customize at least the files:
+verb(
+    ./VERSION .
+    ./configure.in 
+)
+to your package's needs.  You might want to take a look at:
+verb(
+    ./make/Toplevel.make.in
+    ./config.hh.in
+    ./config.make.in
+)
+
+Also, you should put a Makefile in every subdirectory of your
+package.  These makefiles generally are quite simple, e.g. this 
+is a the makefile for an include directory of LilyPond:
+verb(
+    # lily/include/Makefile
+
+    depth = ../..
+    include $(depth)/make/Stepmake.make
+)
+
+it will identify all code(.h, .hh, ...) files and take care of distributing 
+them.
+
+There's a file(make/Template.make) that you can use as an example.
+See also the Makefiles in the LilyPond or Yodl package.
+
+
+Once included in your package, StepMake (or in fact, any 
+StepMake-ised package) behaves as a normal subdirectory;
+make commands such as 'make dist' recurse into the stepmake tree
+(For a list of available targets, type code(make help) after
+configuring).
+Stepmake (and any changes made) will be distributed with the main
+pacakage.  However, StepMake doesn't lose its independency, change
+to the stepmake directory, and it'll behave as a main package.
+You shouldn't version directory names of subpackages, otherwise
+you'll see that package twice in each patch when you upgrade.
+
+nsect(PREREQUISITES)
+
+To use StepMake with a package you need:
+
+itemize(
+it()A GNU system: StepMake is known to work 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.
+it()GNU make 
+it()GNU autoconf
+)
+
+nsect(RECOMMENDED)
+
+Although not strictly necessary, these are recommended to have.
+
+itemize(
+it()Python
+it()Yodl.  All documentation will be in Yodl. (1.22.jcn3)
+it()GNU find
+)
+
+nsect(INTERNALS)
+COMMENT(Hmm, started-out as an email...)
+
+Over time, we put a lot of effort in the configure, make, distribute
+system (CMDS) for LilyPond.  Some months ago, we realised it was not
+standard GNU --- we require GNU make for building, and Python for extra
+scripting.  In an effort to be more GNU, we tried automake, but after two
+weeks we realised the costs were too high for us and we reverted to our
+own system (see file(automake.urgh)).  Not long after that i was confronted
+with two other packages that lacked a decent CMDS.  I realised that Lily's
+would be perfect, it's modular and easy.  The only problem was to make a
+clean cut between generic and Lily specific stuff.  The result was
+StepMake: a bunch of generic makefiles, found in:
+verb(
+    stepmake/stepmake/*.make
+)
+eneric helper scripts:
+verb(
+    stepmake/bin/*.sh
+    stepmake/bin/*.py
+)
+and modular configure functions:
+verb(
+    stepmake/configure.in
+    stepmake/aclocal.m4
+    stepmake/config.hh.in
+    stepmake/config.make.in
+)
+
+Of course, every package has its own configure- and make peculiarities.
+The best way to create the configure scripts is to copy them from
+nop(stepmake)footnote(Actually, stepmake/bin/stepmakeise.sh will do
+that for you.) into you package's toplevel directory.  For most
+packages, you'll only have to comment in/out some functions in
+file(configure.in).
+
+Package specific makefiles go in:
+verb(
+    make/Targets.make
+    make/Rulese.make
+    make/Substitute.make
+)
+and are included by the generic StepMake makefiles.
+
+nsect(MAINTAINING)
+
+If you want to make and manage (binary) distributions, create and apply
+patches, you'll need some framework that's outside of the package's
+sourcetree.
+For a number of simple  maintenance tasks, StepMake will therefore assume
+the following directory structure:
+
+includefile(../layout.yo)
+
+Check and update the layout with the command:
+verb(
+    ./stepmake/bin/stepdirs.sh
+)
+
+nsect(SEE ALSO)
+
+code(../PATCHES.txt)
+
+nsect(CONFIGURING)
+
+Stepmake comes with a number of precooked configure functions for
+general needs, such as AC_STEPMAKE_COMPILE for simple C development
+and AC_STEPMAKE_CXX for C++.
+
+See configure.in and comment in/out the functions that your package
+needs.  For specific needs, you can write your own autoconf code,
+see code(info autoconf).
+
+nsect(AUTHORS)
+
+nemail(Jan Nieuwenhuizen)(janneke@gnu.org)
+
+nemail(Han-Wen Nienhuys)(hanwen@cs.uu.nl)
+
+Have fun!
+
diff --git a/stepmake/Documentation/topdocs/Makefile b/stepmake/Documentation/topdocs/Makefile
new file mode 100644 (file)
index 0000000..64f1483
--- /dev/null
@@ -0,0 +1,35 @@
+# Documentation/topdocs/Makefile
+
+depth = ../..
+
+SUBDIRS=
+BLURBS=BLURB #COPERTINA FLAPTEKST
+AT_FILES = $(BLURBS) # 
+at-dir = $(doc-dir)/
+at-ext = .in
+
+include $(depth)/make/Stepmake.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/stepmake/INSTALL.txt b/stepmake/INSTALL.txt
new file mode 100644 (file)
index 0000000..c856e2e
--- /dev/null
@@ -0,0 +1,20 @@
+
+
+    
+NAME
+
+
+INSTALL - installing StepMake
+
+
+    
+DESCRIPTION
+
+
+This page documents installation and usage of StepMake
+
+
+    
+ABSTRACT
+
+
diff --git a/stepmake/NEWS b/stepmake/NEWS
new file mode 100644 (file)
index 0000000..f837a4f
--- /dev/null
@@ -0,0 +1,246 @@
+pl 41
+       - standard naming: _FILES
+       - use install-sh
+       - junked most check-X-deps
+       - standard naming: dir/out/library.a
+       - split C++ / C stuff in separate files.  Moved out of default stuff
+       - automake.yo updates
+       - fake-yodl.sh
+
+pl 40
+       - bf's: texinfo
+       - bf's: package-zip.sh for bash-2.0
+       - typo package-diff
+
+pl 39
+       - disabled toplevel index
+
+pl 38
+       - bf's: topweb, Documentation
+       - bf: ls-latex
+
+pl 37
+       - bf's: add-html-footer (ok, i've been reading /.)
+       
+pl 36.hwn1
+       - Metafont.make
+       - use := assignment for shell & wildcard stuff
+
+pl 36
+       - bf: Executable.make install
+
+pl 35
+       - bf: Po_rules
+       - grand foreach hack (HWN)
+
+pl 34
+       - stepmake/*shared.make
+
+pl 33
+       - make dist fix
+       - yodl/lily website fixes
+
+pl 32
+       - DEPTH: enable fixing of 'yodl using yodl'
+       - bf's: package-diff: --dir-* 
+
+pl 31.hwn1
+       - bf ls-latex.py; added format
+
+pl 31
+       - fixed make-flags
+       - fixup package-diff and added to-dir, from-dir
+
+pl 30.hwn2
+       - 
+
+pl 30.hwn1
+       - doc++ target  
+       - make -> $(MAKE)
+
+pl 30
+       - add-html-footer: html/body/title
+
+pl 29.hwn1
+       - automake.urgh -> automake.yo
+
+pl 29
+       - counter fix
+
+pl 28
+       - mini fix voor soladeris (HWN)
+       - add-html-footer fixes
+       - dropped pl
+
+pl 27
+       - irix fixes(?) (HWN)
+
+pl 26.jcn3
+       - update.py: try at stupid advice
+       - bf: ls-latex .yo author
+       - bf: Excutable.make install
+
+pl 26.jcn2
+       - no changes
+
+pl 26.hwn1
+       - no changes; just testin' make update
+
+pl 26.jcn1
+       - no changes
+
+pl 26
+       - make apply
+       - package-to.diff.gz
+       - package-from-to.diff.gz with state-vector
+       - state vector
+
+pl 25
+       - bf: add-html-footer.py: version_str iso tuple
+       - typo: Executable.make
+       - for 2latex: yodl2latex of yodl-1.30.0.pre9
+       - package depth 'detected' by configure (kinda ugh)
+       - fixes (HWN)
+
+pl 24
+       - 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
+       - debian fixes
+       - SEXECUTABLES / EXECUTABLES (JBR)
+       - fixed package-zip.sh (again?)
+       - bf's: make zip
+       - some doco
+       - bf: STRIPFILES
+       - rpm from tarball in $(depth)/$(outdir)
+       - dropped lilypython, pythonblurb
+       - bf's: flower.py/packagepython.py/package-diff.py
+
+
+pl 23.hwn2
+       - add mailaddress to package-diff, beautifications
+
+pl 23.hwn1
+       - release.py: check make dist retval
+       - revamped rpm stuff. 
+       - bf abs-step-bindir
+
+
+pl 23
+       - relaxed 'error' to '-echo' for non-vital utilities
+       - table-to-html.py
+       - bin/stepdirs.sh
+       - bin/stepmakeise.sh
+       - --package-ised
+       - windows-nt fixes (JBR)
+
+pl 22
+       - new zip stuff
+
+pl 21
+       - packagepythonified add-html-footer, ls-latex
+       - packagepython (dankje lieverd)
+       - LD
+       - bf: don't diff .pyc
+       - yodl2 -> YODL2
+       - AC_STEPMAKE_YODL
+       - vars: GCC/TROFF/LD
+
+pl 20
+       - bf: ls-latex: .yo author + title
+       - htmldoc fix
+       - ls-latex
+       - add-html-footer
+       - po stuff
+       - latex + bibtex
+       - latex2yodl fixes
+
+pl 19
+       - add htmlfooter to all yodl chapter files
+       - .latex for latex files
+       - tex2html -> latex2html.sh
+
+pl 18
+       - package-zet.sh
+       - cleaned-out configure -> aclocal.m4
+       - (step)make targets:
+         * diff
+         * help
+         * rpm
+         * zip
+       - tex2yodl.pl helper
+       - patches are now called $package-$TOPLEVEL_VERSION.diff
+       - fixed @FILE@ and @VAR@ substitute
+       - bf: DO_CXX_COMPILE
+
+pl 17
+       - C rules :-)
+       - bf's Template.make
+
+pl 16
+       - more lily macros -> generic stepmake
+       - dropped POD configuration
+       - used it
+       - pod2yodl: one time conversion helper
+
+pl 15
+       - fixes: texi2man
+
+pl 14
+       - text2html
+
+pl 13
+       - texinfo support
+       - removed mudela rules
+
+pl 12
+       - irix patch
+
+pl 11
+       - 'urg comment' by wendy
+       - python fixes
+
+pl 10
+       - more from lily
+       - sed-stuff
+
+pl 9
+       - configure fix for irix tr
+       - bf: Install_*.make
+       - bf: PACKAGE_ ROOTDIR
+
+pl 8
+       - some python stuff from lily
+
+pl 7
+       - PACKAGE_NAME
+       - BLURB
+       - INSTALL doco
+       - Documentation/
+
+pl 6
+       - bf: include makedir/Rules.make too
+       - Documentation/automake.urgh
+
+pl 5
+       - allow chained make-dist
+
+pl 4
+       - DOTTEXT->.txt
+
+pl 3
+       - included more Lily makefiles
+
+pl 2
+       - dropped $(package) in makefile names
+       - moved stepmake makes to stepmake/
+
+pl 1
+       - preparing for verbatim include
+
+pl 0
+       - shared between lilypond-0.1.69 lilyx-0.1.0
diff --git a/stepmake/README b/stepmake/README
new file mode 100644 (file)
index 0000000..22375a6
--- /dev/null
@@ -0,0 +1,18 @@
+StepMake
+
+This is a simple generic make package.
+It is being used by LilyPond and Harmonia
+(and StepMake itself, of course)
+
+You're looking at her embryonal state -- things are *supposed* 
+to be broken.
+
+Fixes/patches/suggestions appreciated.
+
+StepMake is Free Software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License 
+version 2 as published by the Free Software Foundation.
+
+Jan Nieuwenhuizen <janneke@gnu.org>
+ftp://pcnov095.win.tue.nl/pub/lilypond/development
+
diff --git a/stepmake/TODO b/stepmake/TODO
new file mode 100644 (file)
index 0000000..a6c1c38
--- /dev/null
@@ -0,0 +1,23 @@
+       * urg, fix flower.py dirname, tarball etc. (package-diff, release)
+
+       * (re-)enable use outside of make system, e.g.
+         
+         - /usr/bin/make-patch for direct use on tarballs
+
+       * drop silly 'package' prefixes
+
+       * all perl scripts to python
+
+       * more doco
+         - Variable names of StepMake, e.g. 'depth', 'EXTRA_DISTFILES' etc.
+         - AC_STEPMAKE calls
+
+       * template package
+
+       * move bin stuff from LilyPond to stepmake
+
+       * shared lib (use libtool)
+
+       * fix autoconf, allowing aclocal.m4 to be included only once
+         (if possible from stepmake/bin)
+
diff --git a/stepmake/VERSION b/stepmake/VERSION
new file mode 100644 (file)
index 0000000..89e1366
--- /dev/null
@@ -0,0 +1,9 @@
+PACKAGE_NAME=StepMake
+MAJOR_VERSION=0
+MINOR_VERSION=1
+PATCH_LEVEL=41
+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/stepmake/aclocal.m4 b/stepmake/aclocal.m4
new file mode 100644 (file)
index 0000000..0f54b68
--- /dev/null
@@ -0,0 +1,653 @@
+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
+
+    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
+])
+
+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_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_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, [
+    
+
+    AC_MSG_CHECKING(TeX/MF root dir directory)    
+
+    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'
+       AC_STEPMAKE_WARN(Cannot determine the TeX-directory. Please use --enable-tex-prefix)
+    fi
+
+    find_texprefix="$find_root_prefix/$find_texpostfix"
+
+    # only assign if variablename not empty
+    if test x != "x[$]$1"; then
+       $1='${prefix}'/"$find_texpostfix"
+    fi
+    AC_MSG_RESULT($find_texprefix)
+
+])
+
+# find a directory inside a prefix, 
+# $1 the prefix (expanded version)
+# $2 variable to assign
+# $3 the directory name 
+# $4 description
+AC_DEFUN(AC_FIND_DIR_IN_PREFIX, [
+    
+    AC_MSG_CHECKING($4 directory)    
+    find_dirdir=`(cd $1; 
+      $FIND ./ -type d -a -name $3 -print |sort|head -1|sed 's#^\./##')`
+    
+
+    if test "x$find_dirdir" = x; then
+       find_dirdir="/$3";
+       AC_STEPMAKE_WARN(Cannot determine $4 subdirectory. Please set from command-line)
+       true
+    fi
+    $2=$find_dirdir
+    AC_MSG_RESULT($1/$find_dirdir)
+])
+
+# ugh.  this is hopeless
+AC_DEFUN(AC_KPSE_TEX_DIR, [
+       kpse_paths=`(kpsepath -n latex tex; kpsepath -n tex tex) | sed 's/:/ /g' | tr ' ' '\012' |sort | uniq -d`
+       kpse_syspaths=`echo $kpse_paths | grep '!'| sed 's/!//g'`
+       echo $kpse_paths
+       if test -w "$kpse_syspaths";
+       then
+               dir=`echo $kpse_syspaths | head -1`
+       else
+               dir=`echo $kpse_paths | grep -v '!'| head -1`
+       fi
+       if test "$prefix" = "NONE"; then
+               local_prefix=$ac_default_prefix
+               local_prefix_quote='${prefix}'
+
+       else
+               local_prefix=$prefix
+               local_prefix_quote=$prefix
+       fi
+       echo $local_prefix_quote = $local_prefix
+       echo $dir
+       echo $dir  | sed 's!'$local_prefix'!\$local_prefix_quote!g'
+])
+
+AC_DEFUN(AC_TEX_SUBDIR, [
+dnl    AC_REQUIRE([AC_TEX_PREFIX])
+    AC_FIND_DIR_IN_PREFIX($find_texprefix, $1, tex,TeX input)
+    $1="$TEXPREFIX/$$1"
+])
+
+AC_DEFUN(AC_MF_SUBDIR, [
+dnl     AC_REQUIRE([AC_TEX_PREFIX])
+    AC_FIND_DIR_IN_PREFIX($find_texprefix, $1, source, MF input)
+    $1="$TEXPREFIX/$$1"
+])
+
+AC_DEFUN(AC_CHECK_SEARCH_RESULT, [
+       result="`echo \"$1\" | grep echo`"
+       if test "x$1" = "xerror" -o "x$result" != "x"; then
+               AC_STEPMAKE_WARN(can\'t find $2. $3)
+       fi
+])
+
+# Configure paths for GTK+
+# Owen Taylor     97-11-3
+
+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
+  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, &micro) != 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
+  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)
+])
+
+
+# Configure paths for GTK--
+# Jan Nieuwenhuizen   98-06-3
+
+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)
+])
+
diff --git a/stepmake/bin/Makefile b/stepmake/bin/Makefile
new file mode 100644 (file)
index 0000000..5ef2288
--- /dev/null
@@ -0,0 +1,10 @@
+# bin/Makefile
+
+depth = ..
+
+include $(depth)/make/Stepmake.make 
+
+EXTRA_DIST_FILES = install-sh config.sub config.guess
+
+include $(stepdir)/Scripts.make
+
diff --git a/stepmake/bin/add-html-footer.py b/stepmake/bin/add-html-footer.py
new file mode 100644 (file)
index 0000000..e8a858a
--- /dev/null
@@ -0,0 +1,134 @@
+#!@PYTHON@
+
+"""
+Print a nice footer.  add the top of the NEWS file (up to the ********)
+"""
+
+program_name = 'add-html-footer'
+version = '0.1'
+
+import sys
+import os
+from string import *
+import getopt
+import __main__
+
+fullname = "unknown"
+news_file = ''
+
+index_file=''
+banner_file = ''
+news_file=''
+news =''
+(options, files) = getopt.getopt(sys.argv[1:], 'hp:', ['help', 'news=', 'index=', 'package=']) 
+
+def help ():
+    sys.stdout.write ("Usage: add-html-footer [OPTION]... HTML-FILE\n"
+                "Add a nice footer, add the top of the NEWS file (up to the ********)\n\n"
+                + "Options:\n"
+                + "  -h, --help             print this help\n"
+                + "  -p, --package=DIR      specify package\n"
+                     )
+    sys.exit (0)
+
+for opt in options:
+    o = opt[0]
+    a = opt[1]
+    if o == '--news':
+       news_file = a
+    elif o == '--index':
+       index_file = a
+    elif o == '-h' or o == '--help':
+       help ()
+    elif o == '-p' or o == '--package':
+       topdir = a
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+
+def set_vars():
+    os.environ["CONFIGSUFFIX"] = 'www';
+    if os.name == 'nt':
+        import ntpwd
+        pw = ntpwd.getpwname(os.environ['USERNAME'])
+    else:
+        import pwd
+        pw = pwd.getpwuid (os.getuid());
+
+    __main__.fullname=pw[4]
+
+set_vars ()
+
+backstr = '\n<hr>Please take me <a href=%s>back to the index</a>\n\
+of ' + package.Name + '\n'
+builtstr = '\n<hr><font size=-1>\n\
+This page was built  from ' + package.name + '-%s by <p>\n\
+<address><br>%s &lt<a href=mailto:%s>%s</a>&gt</address>\n\
+<p></font>' 
+
+def footstr(index):
+    s = backstr % index
+    s = s + builtstr % (version_tuple_to_str (package.version), fullname,
+                        packager.mail, packager.mail)
+    return s
+
+banner = footstr (index_file)
+banner_id = '<! banner_id >'
+
+
+if news_file:
+    news = gulp_file (news_file)
+    i = regex.search ('^\*\*', news)
+    news = news[:i]
+    
+def check_tag (tag, sub, s, bottom):
+    tag = lower (tag)
+    TAG = upper (tag)
+    s = regsub.sub (tag, TAG, s)
+    i = regex.search (TAG, s)
+    if i < 0:
+        if bottom:
+           s = s + sub + '\n'
+       else:
+           s = sub + '\n' + s
+    return s
+    
+for f in files:
+    s = gulp_file (f)
+
+    if news_file:
+       s = regsub.sub ('top_of_NEWS', '<XMP>\n'+ news  + '\n</XMP>\n', s)
+
+    s = check_tag ('<body', '', s, 0)
+    if regex.search ('<BODY', s) == -1:
+       s = '<BODY>\n' + s
+    s = regsub.sub ('<BODY>', '<BODY BGCOLOR=WHITE><FONT COLOR=BLACK>', s)
+    if regex.search (banner_id, s) == -1:
+       s = regsub.sub ('</body>', '</BODY>', s)
+       s = regsub.sub ('</BODY>', banner_id  + banner + '</BODY>', s)
+    else:
+       s = check_tag ('</body>', '</BODY>', s, 1)
+
+    title = '<HEAD><TITLE>' \
+       + package.Name + ' -- ' + os.path.basename (os.path.splitext(f)[0]) \
+       + '</TITLE></HEAD>'
+    s = check_tag ('<title>', title, s, 0)
+
+    s = check_tag ('<html>', '<HTML>', s, 0)
+    s = check_tag ('</html>', '</HTML>', s, 1)
+
+    #urg
+    if regex.search ('@COUNTER_REF@', s) != -1:
+       counter = ''
+       try:
+           counter = os.environ[package.NAME + '_COUNTERPATH']
+           counter = '<hr><img src="' + counter + '">\n'
+       except:
+           pass
+       s = regsub.gsub ('@COUNTER_REF@', counter, s)
+
+    dump_file (f, s)
+
+
diff --git a/stepmake/bin/config.guess b/stepmake/bin/config.guess
new file mode 100755 (executable)
index 0000000..413ed41
--- /dev/null
@@ -0,0 +1,883 @@
+#! /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/stepmake/bin/config.sub b/stepmake/bin/config.sub
new file mode 100755 (executable)
index 0000000..213a6d4
--- /dev/null
@@ -0,0 +1,954 @@
+#! /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/stepmake/bin/fake-yodl.sh b/stepmake/bin/fake-yodl.sh
new file mode 100644 (file)
index 0000000..f28f602
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+IDENTIFICATION=fake-yodl.sh
+
+OUTPUT='/dev/null'
+
+while getopts ':d:o:' OPT;
+do
+case $OPT in
+o)
+    OUTPUT=$OPTARG
+    ;;
+*)
+    ;;
+    esac
+done
+
+
+
+shift `expr $OPTIND - 1`
+#
+# Input file name
+#
+if [ "$1" = "" ]
+then
+  echo "$IDENTIFICATION: No input file name given"
+  exit 1
+fi
+
+echo Faking Yodl: copying $1 to $OUTPUT
+
+
+cp $1 $OUTPUT
diff --git a/stepmake/bin/flower.py b/stepmake/bin/flower.py
new file mode 100755 (executable)
index 0000000..b105098
--- /dev/null
@@ -0,0 +1,87 @@
+#!@PYTHON@
+
+# 
+# flower.py -- python flower lib
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+# 
+
+import sys
+from string import *
+
+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/stepmake/bin/install-dot-exe.sh b/stepmake/bin/install-dot-exe.sh
new file mode 100755 (executable)
index 0000000..c4128c5
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+# install-dot-exe.sh  -- add .exe for cygnus gnu-windows
+# hack for doos install; cygnus should support rpm
+
+realinstall=install
+
+args=''
+while [ $# -ne 0 ] 
+do
+    case $1 in
+       -*) args="$args $1"
+           ;;
+
+        *) if [ -f $1.exe ]; then
+               args="$args $1.exe"
+           else
+               args="$args $1"
+           fi
+           ;;
+    esac
+    shift
+done
+
+$realinstall $args
diff --git a/stepmake/bin/install-layout.sh b/stepmake/bin/install-layout.sh
new file mode 100644 (file)
index 0000000..4e54a99
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+# install-layout.sh --- build an installation layout
+#
+prefix=$HOME/usr
+dirs='bin src/patches src/releases lib/texmf/tex lib/texmf/mf/source/public'
+
+for i in $dirs; do
+       if [ ! -e $prefix/$i ]; then
+               echo +mkdir -p $prefix/$i
+               mkdir -p $prefix/$i
+       fi
+done
diff --git a/stepmake/bin/install-sh b/stepmake/bin/install-sh
new file mode 100755 (executable)
index 0000000..398f7f8
--- /dev/null
@@ -0,0 +1,241 @@
+#! /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/stepmake/bin/latex2yodl.sh b/stepmake/bin/latex2yodl.sh
new file mode 100644 (file)
index 0000000..42be94d
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/sh
+# latex2yodl.sh -- one time convert helper
+
+if test $# -lt 1
+then
+   echo "Usage: latex2yodl FILE..."; 
+   exit 2
+fi
+for i in $*
+do
+    echo $i
+    base=`basename $base .latex`
+    base=`basename $base .tex`
+    base=`basename $i .doc`
+    yo=$base.yo
+    rm -f $yo
+    perl -pe '
+       s/([a-zA-Z][a-zA-Z]*)\~/bind($1)/g;
+       s/%(.*)/COMMENT($1)/g;
+       s/\$\^{([^}]*)}$/ sups($1)/g;
+       s/\$\_{([^}]*)}$/ subs($1)/g;
+       s/\$\^(.)$/ sups($1)/g;
+       s/\$\_(.)$/ subs($1)/g;
+       s/\\appendix/appendix()/g;
+       s/\\footnote{([^}]*)}/ footnote($1)/g;
+       s/\\cite{([^}]*)}/ cite($1)/g;
+       s/(\\marginpar{[^}]*})/latexcommand($1)/g;
+       s/\\chapter *{([^}]*)}/chapter($1)/g;
+       s/\\chapter *\* *{([^}]*)}/nchapter($1)/g;
+       s/\\section *{([^}]*)}/sect($1)/g;
+       s/\\section *\* *{([^}]*)}/nsect($1)/g;
+       s/\\subsection *{([^}]*)}/subsect($1)/g;
+       s/\\subsection *\* *{([^}]*)}/nsubsect($1)/g;
+       s/\\begin{itemize}.*/itemize(/g;
+       s/\\item *{([^}]*)}/dit($1)/g;
+       s/\\item *[[]([^]]*)[]]/dit($1)/g;
+       s/\\item */it()/g;
+       s/\\(caption{[^}]*})/latexcommand(XXX$1)/g;
+       s/\\(begin{figure}.*)/latexcommand(XXX$1)/g;
+       s/\\(end{figure}.*)/latexcommand(XXX$1\n)/g;
+       s/\\begin{mudela}[[]([^]]*)[]]/mudela($1)(/g;
+       s/\\begin{mudela}.*/mudela()(/g;
+       s/\\end{mudela}/)/g;
+       s/\\(begin{table}.*)/latexcommand(XXX$1)/g;
+       s/\\(end{table}.*)/latexcommand(XXX$1)/g;
+       s/\\begin{tabular}{(.*)}/table(ncol)($1)(/g;
+       s/\\begin{verbatim}.*/verb(/g;
+       s/\\begin{([^}]*)}/$1(/g;
+       s/\\end{([^}]*)}/)/g;
+       s/{\\em ([^}]*)}/em($1)/g;
+       s/\\emph{([^}]*)}/em($1)/g;
+       s/\\ref{([^}]*)}/ref($1)/g;
+       s/\\texttt{([^}]*)}/code($1)/g;
+       s/\\file{([^}]*)}/file($1)/g;
+       s/\\label{([^}]*)}/label($1)/g;
+       s/\\verb[+]([^+]*)[+]/code($1)/g;
+       s/\\verb[|]([^|]*)[|]/code($1)/g;
+       s/XXX/\\/g;
+       ' $i > $yo
+done
+
diff --git a/stepmake/bin/ls-latex.py b/stepmake/bin/ls-latex.py
new file mode 100644 (file)
index 0000000..e1995fc
--- /dev/null
@@ -0,0 +1,204 @@
+#!@PYTHON@
+
+# name isn't really appropriate now ...
+
+name = 'ls-latex'
+version = '0.1'
+
+import sys
+import os
+from string import *
+
+import __main__
+import glob
+import regex
+
+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.format = ''
+
+       
+def read_latex_header (fn):
+    s = gulp_file (fn)
+    i = regex.search( '\\\\begin{document}', s)
+
+    if i < 0:
+       sys.stderr.write( 'Huh? empty file?')
+       s = '\\author{(unknown)}\\title{(unknown)}'
+       
+    s = s[:i]
+    s = regsub.gsub('%.*$', '', s)
+    s = regsub.gsub('\n', ' ', s)
+
+    header = Latex_head()
+    header.filename= fn;
+
+    if latex_author_re.search (s) == -1 :
+       sys.stderr.write( 'huh? No author?')
+       header.author = 'unknown'
+    else:
+        header.author = latex_author_re.group (1)
+    if latex_title_re.search (s) == -1:
+       sys.stderr.write( 'huh?  No title?')
+       header.title = 'unknown'
+    else:
+           header.title = latex_title_re.group (1)
+    header.outfile = fn
+    header.outfile = regsub.gsub ('\.latex$', '.ps.gz', header.outfile)
+    header.outfile = regsub.gsub ('\.tex$', '.ps.gz', header.outfile)
+    header.outfile = regsub.gsub ('\.doc$', '.ps.gz', header.outfile)
+    header.format = 'gzipped postscript'
+    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 :
+       sys.stderr.write ('gulped file: ' + fn + '\n')
+       raise 'huh?'
+
+    header = Latex_head()
+    header.filename= fn;
+    header.author = bib_author_re.group (1)
+    if bib_title_re.search (s) == -1:
+       sys.stderr.write ('gulped file: ' + fn + '\n')
+       raise 'huh?'    
+    header.title = bib_title_re.group (1)
+    header.outfile = regsub.gsub ( '\.bib$', '.html' , fn)
+    header.format = 'HTML'    
+    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:
+       sys.stderr.write ('gulped file: ' + fn + '\n')
+       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 read_texinfo_header (fn):
+    header = Latex_head ()
+    s = gulp_file (fn)
+    i = regex.search( '@node ', s)
+    s = s[i+5:]
+    i = regex.search( ',', s)
+    if i < 0:
+       sys.stderr.write ('gulped file: ' + fn + '\n')
+       raise 'huh?'
+    header.title = s[:i]
+    header.filename = fn
+    header.outfile = regsub.gsub ('\.texinfo$', '.html', fn)
+    header.format = 'HTML'
+    return  header
+
+# urg
+# should make a 'next_parens'
+yo_article_re = regex.compile('article(\\([^)]*\\))[ \t\n]*(\\([^)]*\\))')
+yo_report_re = regex.compile('report(\\([^)]*\\))[\t\n ]*(\\([^)]*\\))')
+yo_sect_re  =  regex.compile('sect(\\([^)]*\\))')
+yo_chap_re  =  regex.compile('sect(\\([^)]*\\))')
+
+def read_yo_header (fn):
+    header = Latex_head ()
+    s = gulp_file (fn)
+    if 0:
+           pass
+    elif yo_report_re.search (s) <> -1:
+           header.author = yo_report_re.group(2)
+           header.title = yo_report_re.group(1)
+    elif yo_article_re.search (s) <> -1:
+           header.author = yo_article_re.group(2)
+           header.title = yo_article_re.group(1)
+    elif yo_chap_re.search (s) <> -1:
+           header.title = yo_chap_re.group (1)
+    elif yo_sect_re.search (s) <> -1:
+           header.title = yo_sect_re.group (1)
+    header.filename = fn
+    header.outfile = regsub.gsub ('\.yo$', '.html', fn)
+    header.format = 'HTML'
+    return  header
+
+
+def print_html_head (l,o,h):
+    pre =o
+
+    l.write ('<li><a href=%s>%s (%s)</a>' % (pre + h.outfile, h.title, h.format ))
+    if h.author:
+       l.write ('<p>by %s</p>' % h.author)
+    l.write ('</li>\n')
+
+def help ():
+    sys.stdout.write ("Usage: ls-latex [OPTION]... FILE...\n"
+                "Generate html index file for FILE...\n\n"
+                + "Options:\n"
+                + "  -h, --help             print this help\n"
+                + "  -p, --package=DIR      specify package\n"
+                     )
+    sys.exit (0)
+
+import getopt
+
+(options, files) = getopt.getopt(sys.argv[1:], 
+    'e:hp:', ['help', 'prefix=', 'package=', 'title='])
+
+tex = ''
+output =''
+pre = ''
+title = ''
+for opt in options:
+    o = opt[0]
+    a = opt[1]
+    if o == '--prefix':
+       pre = a
+    elif o == '--title':
+       title = a  
+    elif o == '-h' or o == '--help':
+       help ()
+    elif o == '-p' or o == '--package':
+       topdir = a
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+
+l = sys.stdout
+
+l.write ('<html><title>%s</title><h1> %s</h1><ul>\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)
+    elif regex.search ('\\.texinfo$', x) <> -1:
+       head = read_texinfo_header (x)
+    elif regex.search ('\\.yo$', x) <> -1:
+       head = read_yo_header (x)
+    else:
+       head = read_latex_header (x)
+    if head.title == '':
+       head.title = head.filename
+    print_html_head (l, pre, head)
+
+l.write ('</ul></html>')
+
diff --git a/stepmake/bin/make-version.sh b/stepmake/bin/make-version.sh
new file mode 100755 (executable)
index 0000000..3be1435
--- /dev/null
@@ -0,0 +1,13 @@
+#!/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/stepmake/bin/ntpwd.py b/stepmake/bin/ntpwd.py
new file mode 100644 (file)
index 0000000..a656a8d
--- /dev/null
@@ -0,0 +1,29 @@
+"""Winnt access into /etc/passwd via account name"""
+
+import sys
+import string
+
+def getpwname( name, pwfile='/etc/passwd' ):
+    "Get password record that matches the specified name"
+    try:
+        _fd = open( pwfile, 'r' )
+    except:
+        sys.stderr.write("Error unable to locate" + pwfile + "\n")
+        sys.stderr.write("Consult gnu-win32 command mkpasswd\n")
+        sys.exit(1)
+
+    _data = _fd.read()
+    _fd.close()
+        
+    for _line in string.split(_data, '\n'):
+        _record=string.split( _line, ':' );
+        if _record[0] == name:
+            return _record
+    return ()
+
+def _test():
+    pw = getpwname( 'jeff' )
+    print pw[4]
+
+if __name__ == '__main__':
+       _test()
diff --git a/stepmake/bin/package-diff.py b/stepmake/bin/package-diff.py
new file mode 100644 (file)
index 0000000..dfbbebc
--- /dev/null
@@ -0,0 +1,282 @@
+#!@PYTHON@
+
+name = 'package-diff'
+version = '0.62'
+
+import sys
+import os
+from string import *
+import getopt
+import pipes
+
+def program_id ():
+       return name + ' ' + version;
+
+
+def mailaddress():
+       try:
+               return os.environ['MAILADDRESS']
+       except KeyError:
+               return '(address unknown)'
+
+
+def identify ():
+       sys.stdout.write (program_id () + '\n')
+
+class Flags:
+       def __init__ (self):
+               self.to_version = 0
+               self.from_version = 0
+               self.package = 0
+
+flags = Flags ()
+
+def help ():
+       sys.stdout.write (
+               'Generate a patch to go to current version\n'
+               '  -f, --from=FROM      old is FROM\n'
+               '  -h, --help           print this help\n'
+               '  -p, --package=DIR    specify package\n'
+               '  -r, --release        diff against latest release\n'  
+               '  -t, --to=TO          to version TO\n'  
+               '  -F, --dir-from=FROM  diff from directory FROM\n'  
+               '  -T, --dir-to=TO      diff to directory 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 ()
+
+def remove_automatic (dirnames):
+       files = []
+       # urg, again?
+       from flower import *
+       files = files + multiple_find (pats, dirnames)
+
+       for f in files:
+               os.remove (f)
+
+def dirname (v):
+       # urg, again?
+       from packagepython import *
+       return flags.package.name + '-' + version_tuple_to_str (v)
+
+def tarball(v):
+       return dirname (v)  + '.tar.gz'
+
+def released_tarball(v):
+       return flags.package.release_dir + tarball (v)
+
+
+def remove_configure (dir):
+       os.chdir (dir)
+       # ugh
+       os.system ('rm -f *.ly')
+
+       # should do 'make distclean ?'
+       os.system ('rm -rf debian/out')
+       os.system ('rm -f Makefile config.cache config.h config.hh config.log config.make config.status')
+       os.system ('rm -f stepmake/Makefile stepmake/config.hh stepmake/config.log stepmake/config.make')
+
+       # ugh: symlinks
+       os.system ('rm -f stepmake/stepmake/stepmake')
+       os.system ('rm -f stepmake/stepmake/bin')
+
+
+# ugh, how to get rid of .tex files generated by lily?
+pats = ['.dstreamrc', 'configure', '*.diff', '*.diff.gz', '*.lsm', '*.pyc', '*.spec', '*.txt']
+
+header = 'Generated by %s using %s,\
+\nFrom = %s, To = %s\n\
+\n\
+usage \n\
+\n\
+    cd %s-source-dir; patch -E -p1 < %s\n\
+\n\
+Patches do not contain automatically generated files \n\
+or (urg) empty directories, \n\
+i.e., you should rerun autoconf, configure \n\
+and possibly make outdirs.\n\n'
+
+def makediff (fromdir, todir, patch_name):
+
+       # urg, again?
+       from packagepython import *
+
+       remove_automatic ([fromdir, todir])
+
+       # ugh
+       remove_configure (fromdir)
+       remove_configure (todir)
+       os.chdir (todir)
+       
+       fromname = fromdir
+       toname = todir
+       if os.path.dirname (fromname) == os.path.dirname (toname):
+               fromname = os.path.basename (fromname)
+               toname = os.path.basename (toname)
+               fromdir = '../' + fromname
+
+       f = open (patch_name, 'w')
+       f.write (header %
+               (mailaddress (), program_id (),  fromname, toname, 
+                flags.package.name, os.path.basename (patch_name)))
+
+       # write state vector
+       f.write ('--state\n')
+       state_vec = gulp_file ('make/STATE-VECTOR')
+       from_str = version_tuple_to_str (flags.from_version)
+       to_str = version_tuple_to_str (flags.to_version)
+       i = regex.search (from_str, state_vec)
+       if i == -1:
+               f.write (from_str + '\n')
+       else:
+               state_vec = state_vec[i:]
+       i = regex.search (to_str, state_vec)
+       if i == -1:
+               f.write (to_str + '\n')
+       else:
+               i = i + len (version_tuple_to_str (flags.to_version)) + 1
+               state_vec = state_vec[:i]
+               f.write (state_vec)
+       f.write ('++state\n')
+       f.close ()
+                       
+       sys.stderr.write ('diffing to %s... ' % patch_name)
+       os.system ('pwd')
+       print ('diff -urN %s . >> %s' % (fromdir, patch_name))
+       os.system ('diff -urN %s . >> %s' % (fromdir, patch_name))
+       os.system ('gzip --quiet -9f %s' % patch_name)
+   
+def main ():
+       os.environ['GZIP'] = '-q'
+       identify ()
+       print 'argv: ' + join (sys.argv[2:])
+       (options, files) = getopt.getopt (sys.argv[1:], 
+               'hF:f:o:p:rT:t:', ['from=', 'dir-from=', 'dir-to=', 'help', 'output=', 'package=', 'release', 'to='])
+
+       patch_name = ''
+       from_src = ''
+       to_src = ''
+       release=0
+       from_version=0
+       to_version=0
+       for opt in options:
+               o = opt[0]
+               a = opt[1]
+               if o == '--from' or o == '-f':
+                        from_version = a
+               elif o == '--to' or o == '-t':
+                        to_version = a
+               elif o == '--dir-from' or o == '-F':
+                        from_src = a;
+               elif o == '--dir-to' or o == '-T':
+                        to_src = a;
+               elif o == '--help' or o == '-h':
+                       help ()
+                       return 0;
+               elif o == '--output' or o == '-o':
+                       patch_name = os.path.join (os.getcwd (), a)
+               elif o == '-p' or o == '--package':
+                       topdir = a
+               elif o == '--release' or o == '-r':
+                       release=1
+               else:
+                       raise getopt.error
+
+       sys.path.append (topdir + '/stepmake/bin')
+       from packagepython import *
+       package = Package (topdir)
+       flags.package = package
+       packager = Packager ()
+       from flower import *
+
+       if from_src:
+               from_package = Package (from_src)
+               flags.from_version = from_package.version
+       if from_version:
+               flags.from_version = version_str_to_tuple (from_version)
+               from_src = ''
+                       
+       if to_src:
+               to_package = Package (to_src)
+               flags.to_version = to_package.version
+       if to_version:
+               flags.to_version = version_str_to_tuple (to_version)
+               to_src = ''
+                       
+       if not flags.to_version:
+               flags.to_version = package.version
+
+       if not flags.from_version:
+               flags.from_version = prev_version (flags.to_version)
+
+       # urg
+       if release:
+               flags.from_version = (flags.from_version[0], 
+                       flags.from_version[1], flags.from_version[2], '');
+
+       import tempfile
+       prev_cwd = os.getcwd ();
+
+       os.system ('rm -rf /tmp/package-diff') 
+       try:
+               os.mkdir ('/tmp/package-diff')
+       except:
+               pass
+               
+       from_diff = dirname (flags.from_version)
+       to_diff =  dirname (flags.to_version)
+       if to_diff == from_diff:
+               if from_src:
+                     from_diff = from_diff + '.src'
+               elif to_src:
+                     to_diff = to_diff + '.src'
+               else:
+                     sys.stderr.write (name + ': nothing to do: to == from == ' + from_diff + '\n')
+                     sys.exit (1)
+
+       if not patch_name:
+               pn = to_diff + '.diff'
+               patch_name =  os.path.join (os.getcwd (), pn)
+
+       from_diff = '/tmp/package-diff/' + from_diff
+       to_diff =  '/tmp/package-diff/' + to_diff
+
+       if not from_src:
+               os.chdir ('/tmp/package-diff')
+               untar (released_tarball (flags.from_version))
+               os.chdir (prev_cwd)
+       else:
+               sys.stderr.write ('copying ' + from_src + ' to ' + from_diff + '\n')
+               # os.system ('cp -pr %s %s' % (srcdir, from_diff))
+               os.system ('mkdir -p %s '% (from_diff))
+               os.chdir (from_src)
+               os.system ('tar cf - --exclude out --exclude out-www . \
+                       | tar -xf - -C %s' % from_diff)
+
+
+       if not to_src:
+               os.chdir ('/tmp/package-diff')
+               untar (released_tarball (flags.to_version))
+               os.chdir (prev_cwd)
+       else:
+               sys.stderr.write ('copying ' + to_src + ' to ' + to_diff + '\n')
+               os.system ('mkdir -p %s '% (to_diff))
+               # os.system ('cp -pr %s %s'  (to_src, to_diff))%
+               os.chdir (to_src)
+               os.system ('tar -cf - --exclude out --exclude out-www . \
+                       . | tar -xf - -C %s ' % to_diff)
+
+       os.chdir (to_diff)
+       makediff (from_diff, to_diff, patch_name) 
+
+       os.chdir ('/tmp/package-diff')
+       sys.stderr.write ('cleaning ... ')
+       os.system ('rm -fr %s %s' % (from_diff, to_diff))
+       sys.stderr.write ('\n')
+       os.chdir (prev_cwd)
+
+main ()
diff --git a/stepmake/bin/package-zet.sh b/stepmake/bin/package-zet.sh
new file mode 100755 (executable)
index 0000000..9c8cf8e
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+# package-zet.sh --- help configure a StepMake package's sourcetree
+# normally invoked by a script like:
+# 
+#   zet-pack.sh  ( e.g.: ". bin/zet-lily.sh")
+#
+PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
+package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+#
+# You should set ${PACKAGE}_SOURCEDIR to the latest unpacked source dir,
+# it will default to:
+#
+#  $sources/$package  (e.g.: LILYPOND_SOURCEDIR=/home/fred/usr/src/lilypond)
+#
+
+
+PACKAGE_SOURCEDIR=`eval echo '\$'${PACKAGE}_SOURCEDIR`
+if [ "x$PACKAGE_SOURCEDIR" = "x" ]; then
+    eval ${PACKAGE}_SOURCEDIR="$prefix/src/$package"
+    export ${PACKAGE}_SOURCEDIR
+    PACKAGE_SOURCEDIR=`eval echo '\$'${PACKAGE}_SOURCEDIR`
+fi
+#
+# and create links to here, if necessary
+#
+if [ ! -r $sources ]; then
+       (cd ..; ln -s `pwd` $sources)
+fi
+#
+sourcetree=`basename \`pwd\``
+(cd ..; rm -f $package 2>&1 > /dev/null)
+(cd ..; ln -s $sourcetree $package)
+#
+mkdir -p $prefix/bin
+result=`echo $PATH | grep "$HOME/usr/bin"`
+if [ "x$result" = "x" ];then
+    PATH=$PATH:$HOME/usr/bin
+fi
+result=`echo $PATH | grep "$sources/$package/bin"`
+if [ "x$result" = "x" ];then
+    PATH=$PATH:$sources/$package/bin
+fi
diff --git a/stepmake/bin/package-zip.sh b/stepmake/bin/package-zip.sh
new file mode 100644 (file)
index 0000000..f8c8001
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+# package-zip.sh --- make a windoze distribution
+
+set -x
+
+if [ $# -lt 2 ]; then
+       echo "Usage: package-zip.sh PACKAGE_SOURCEDIR FILE..."
+       exit 2
+fi
+
+topdir=$1
+shift
+. $topdir/VERSION
+
+VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+if [ "x$MY_PATCH_LEVEL" != "x" ]; then
+       VERSION=$VERSION.$MY_PATCH_LEVEL
+fi
+
+package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
+name=$package-$VERSION
+ZIP="zip -r -9"
+builddir="/tmp/$package-doos"
+
+{ cd $topdir/..; PACKAGE_ROOTDIR=`pwd`; export PACKAGE_ROOTDIR; }
+
+zip="$PACKAGE_ROOTDIR/doos/zip/$name.exe.zip"
+
+
+if [ ! -e $PACKAGE_ROOTDIR/doos/zip ]; then
+       doo mkdir -p $PACKAGE_ROOTDIR/doos/zip
+fi
+
+set -x
+
+cd $PACKAGE_ROOTDIR/doos || exit 1
+
+rm -rf $package-*
+
+tar xzf $PACKAGE_ROOTDIR/releases/$name.tar.gz || exit 1
+cd $name
+
+export PATH=/usr/doos/bin:$PATH
+./configure --host=i386-pc-linux --target=i386-pc-cygwin32 --prefix=/usr --enable-debugging --enable-printing --enable-checking
+
+make
+rm -rf $builddir
+make prefix="$builddir/usr" DOTEXE=.exe install
+make prefix="$builddir/usr" installextradoc
+
+rm -f $zip
+(cd $builddir; $ZIP $zip $*)
+# urg
+true "Wrote: $zip"
+
+# huh?
+# ln out/$name.exe.zip $zip
+
diff --git a/stepmake/bin/packagepython.py b/stepmake/bin/packagepython.py
new file mode 100755 (executable)
index 0000000..68c7abd
--- /dev/null
@@ -0,0 +1,173 @@
+#!/usr/bin/python
+
+# packagepython.py --  implement general StepMake-wide python stuff
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
+#                Jan Nieuwenhuizen <janneke@gnu.org>
+
+import regex
+import regsub
+from string import *
+# from flower import *
+import sys
+import os
+import getopt
+
+make_assign_re = regex.compile('^\([A-Z_]*\)=\(.*\)$')
+
+def read_makefile (fn):
+       file = open (fn)
+       lines = file.readlines()
+
+       mi = pa = mj = 0
+       mp = ''
+
+       make_dict = {}
+       for l in lines:
+               if make_assign_re.search(l) <> -1:
+                       nm = make_assign_re.group(1)
+                       val = make_assign_re.group(2)
+                       make_dict[nm] = val
+       return make_dict
+
+class Package:
+       def __init__ (self, dirname):
+               dict = read_makefile (dirname + '/VERSION')
+               version_list = []
+               for x in [ 'MAJOR_VERSION', 'MINOR_VERSION',   'PATCH_LEVEL']:
+                       version_list.append (atoi (dict[x]))
+               version_list.append (dict['MY_PATCH_LEVEL'])
+               self.topdir = dirname
+               self.groupdir = self.topdir + '/..'
+               self.patch_dir = self.groupdir + '/patches/'
+               self.release_dir = self.groupdir + '/releases/'
+               self.test_dir = self.groupdir + '/test/'
+               self.version =  tuple(version_list)
+               self.Name = dict['PACKAGE_NAME']
+               self.name = lower (self.Name)
+               if self.name == 'lilypond':
+                       self.nickname = 'lelie'
+               else:
+                       self.nickname = self.name
+               self.NAME = upper (self.Name)
+
+
+class Packager:
+       def __init__ (self):
+               try:
+                       m= os.environ['MAILADDRESS']
+               except KeyError:
+                       m= '(address unknown)'
+               self.mail= m
+
+
+def full_version_tup(tup):
+       t = [0,0,0,'']
+       for i in range (4):
+         try:
+                 t[i] = tup[i]
+         except IndexError:
+                 break
+       return tuple(t)
+
+def split_my_patchlevel(str):
+       return (regsub.sub('[0-9]*$', '', str),
+               atoi(regsub.sub('[^0-9]*', '', str)))
+       
+
+def next_version(tup):
+       l = list(full_version_tup (tup))
+       t3name=t3num=''
+       if l[3]:
+               (t3name,t3num)= split_my_patchlevel (l[3])
+               if t3num: 
+                       t3num = '%d' % (t3num + 1)
+               else:
+                       t3num = t3name =''
+       else:
+               l[2] = l[2] +1
+
+       return tuple(l[0:3] + [t3name +  t3num])
+
+def prev_version(tup):
+       l = list(full_version_tup (tup))
+       t3name=t3num=''
+       if l[3]:
+               (t3name,t3num)= split_my_patchlevel (l[3])
+               if t3num and t3num - 1 > 0:
+                       t3num = '%d' %(t3num - 1)
+               else:
+                       t3num = t3name =''
+
+       else:
+               l[2] = l[2] -1
+               
+       return tuple(l[0:3] + [t3name +  t3num])
+
+def version_tuple_to_str(tup):
+       tup = full_version_tup (tup)
+       if tup[3]:
+               my = '.' + tup[3]
+       else:
+               my = ''
+       return ('%d.%d.%d' % tup[0:3]) + my
+
+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 version_compare (tupl, tupr):
+       tupl = full_version_tup (tupl)
+       tupr = full_version_tup (tupr)
+       for i in (0,1,2):
+               if tupl[i] - tupr[i]: return tupl[i] - tupr[i]
+       if tupl[3] and tupr[3]:
+               lname = regsub.sub('[0-9]*$', '', tupl[3])
+               lnum = atoi(regsub.sub('[^0-9]*', '', tupl[3]))
+               rname = regsub.sub('[0-9]*$', '', tupr[3])
+               rnum = atoi(regsub.sub('[^0-9]*', '', tupr[3]))
+               if lname != rname:
+                       raise 'ambiguous'
+               return sign (lnum - rnum)
+       if tupl[3]:
+               return 1
+       else:
+               return -1
+
+       
+if __name__ == '__main__':
+       p = Package ('.')
+       v=  p.version
+       print v, prev_version(v), next_version(v)
+       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 full_version_tup ((0,1))
+
+       
+def dump_file(f, s):
+       i = open(f, 'w')
+       i.write(s)
+       i.close ()
+
+def gulp_file(f):
+       try:
+               i = open(f)
+               i.seek (0, 2)
+               n = i.tell ()
+               i.seek (0,0)
+       except:
+               sys.stderr.write( 'can\'t open file %s\n ' % f)
+               return ''
+       s = i.read (n)
+       if len (s) <= 0:
+               sys.stderr.write( 'gulped empty file: %s\n'% f)
+       return s
+
+
diff --git a/stepmake/bin/pod2yodl.sh b/stepmake/bin/pod2yodl.sh
new file mode 100644 (file)
index 0000000..a94937e
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+# pod2yodl.sh -- one time convert helper
+
+if test $# -lt 1
+then
+   echo "Usage: pod2yodl FILE..."; 
+   exit 2
+fi
+for i in $*
+do
+    echo $i
+    base=`basename $i .in`
+    base=`basename $base .pod`
+    yo=$base.yo
+    rm -f $yo
+    perl -pe '
+       s/=head1 *(.*)/nsect($1)/g;
+       s/=head2 *(.*)/nsubsect($1)/g;
+       s/=head3 *(.*)/nsubsubsect($1)/g;
+       s/=over.*(.*)/itemize(/g;
+       s/=item *\*/it()/g;
+       s/=item *(.*)/dit($1)/g;
+       s/=back.*/)/g;
+       s/=begin.*//g;
+       s/=end.*//g;
+       s/C<([^>]*)>/code($1)/g;
+       s/F<([^>]*)>/file($1)/g;
+       s/B<([^>]*)>/bf($1)/g;
+       s/I<([^>]*)>/em($1)/g;
+       s/<[Aa] *[Hh][Rr][Ee][Ff]=\"*([^>\"])\"([^<]*)<\/[Aa]>/ url($2)($1)/g;
+       s/<[Aa] *[Hh][Rr][Ee][Ff]=\"*([^>\"])\"([^<]*)/ url($2)($1)/g;
+       s/<[Aa] *[Hh][Rr][Ee][Ff]=\"*([^>\"])\"/ url()($1)/g;
+       s/.*<\/[Aa]>/($1)/g;
+       s/<(.*@.*)>/email($1)/g;
+       s/(http:\/\/[^ ]*)/ lurl($1)/g;
+       s/(ftp:\/\/[^ ]*)/ lurl($1)/g;
+       s/@([A-Z_]*)@/verbinclude($1.in)/g;
+       ' $i > $yo
+done
+
diff --git a/stepmake/bin/release.py b/stepmake/bin/release.py
new file mode 100755 (executable)
index 0000000..6397ceb
--- /dev/null
@@ -0,0 +1,74 @@
+#!@PYTHON@
+# release.py
+
+name = 'release'
+version = '0.1'
+
+import os
+import sys
+import getopt
+
+(options, files) = getopt.getopt(sys.argv[1:], 'hp:', ['help', 'package=']) 
+
+def help ():
+    sys.stdout.write ("Usage: release [OPTION]...\n"
+                "Make a tarball and patch and combined ../test/updeet\n\n"
+                + "Options:\n"
+                + "  -h, --help             print this help\n"
+                + "  -p, --package=DIR      specify package\n"
+                     )
+    sys.exit (0)
+
+for opt in options:
+    o = opt[0]
+    a = opt[1]
+    if o == '-h' or o == '--help':
+       help ()
+    elif o == '-p' or o == '--package':
+       topdir = a
+
+sys.path.append (topdir + '/stepmake/bin')
+from packagepython import *
+package = Package (topdir)
+packager = Packager ()
+from flower import *
+
+os.chdir(package.topdir)
+status =os.system('make dist')
+if status:
+    raise 'make dist failed'
+
+cur_ver = package.version
+# urg?
+# print tarball(cur_ver)
+barbaal=package.name + '-' + version_tuple_to_str (cur_ver) + '.tar.gz'
+print barbaal
+# os.rename('out/' + tarball(cur_ver), released_tarball(cur_ver))
+# hmmm
+os.remove(package.release_dir + barbaal)
+os.link('out/' + barbaal, package.release_dir + barbaal)
+os.chdir(package.test_dir)
+os.system('set -x; rm ' + package.test_dir + package.name + '*gz')
+# os.link(released_tarball(cur_ver), tarball(cur_ver))
+os.link(package.release_dir + barbaal, barbaal)
+
+# 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
+
+# urg
+# os.system('@PYTHON@ ' + package.topdir + '/stepmake/bin/package-diff.py --package=' + topdir)
+os.system('python ' + package.topdir + '/stepmake/bin/package-diff.py --package=' + topdir)
+
+pn = package.name + '-%s' % version_tuple_to_str(cur_ver)
+pn = pn + '.diff'
+pn = pn + '.gz'
+rel_pn = package.patch_dir + pn
+
+os.rename(pn, rel_pn)
+os.link(rel_pn, pn)
+
+os.system('tar cf ' + package.nickname + ' *gz')
+
diff --git a/stepmake/bin/show-latest.sh b/stepmake/bin/show-latest.sh
new file mode 100644 (file)
index 0000000..731efad
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+# show-latest.sh --- show latest lily
+
+# @PERL@ @step-bindir@/out/show-latest.pl --package=@package@ $*
+# urg
+#@step-bindir@/out/show-latest --the-package=@package@ $*
+if [ $# -lt 1 ]; then
+       print="-p"
+fi
+@abs-step-bindir@/out/package-latest --the-package=@package@ $* $print
+
diff --git a/stepmake/bin/stepdirs.sh b/stepmake/bin/stepdirs.sh
new file mode 100755 (executable)
index 0000000..fbda8e9
--- /dev/null
@@ -0,0 +1,47 @@
+#!/bin/sh
+# stepdirs.sh
+
+help () {
+       echo "Usage: stepmake/bin/stepdirs.sh"
+}
+
+if [ $# -ne 0 ]; then
+       help
+       exit 2
+fi
+
+if [ ! -r stepmake ]; then
+       help
+       exit 2
+fi
+
+if [ -r VERSION ]; then
+       . ./VERSION
+       if [ "x$PACKAGE_NAME" = "xStepMake" ]; then
+               help
+               exit 2
+       fi
+fi
+
+dirs="RedHat doos patches releases test"
+
+echo -n "Checking StepMake layout..."
+for i in $dirs; do
+       if [ ! -r ../$i ]; then
+               missing="$missing ../$i"
+       fi
+done
+
+if [ "x$missing" = "x" ]; then
+       echo ok
+       exit 0
+fi
+
+echo
+
+echo "Creating missing directories:"
+for i in $missing; do
+       (set -x; mkdir $i)
+done
+
+echo done
diff --git a/stepmake/bin/stepmakeise.sh b/stepmake/bin/stepmakeise.sh
new file mode 100755 (executable)
index 0000000..2fdb05c
--- /dev/null
@@ -0,0 +1,105 @@
+#!/bin/sh
+# stepmakeise.sh
+
+help () {
+       cat <<EOF
+Usage: ../stepmake-x.x.x/bin/stepmakeise.sh
+Include or update package's StepMake.
+EOF
+}
+
+name=`basename $0`
+reldir=../releases
+stepbin=`dirname $0`
+
+if [ $# -ne 0 ]; then
+       help
+       exit 2
+fi
+
+value ()
+{
+    expression=`echo $1 | sed 's/\./ \\\\\* 100 + /g'`
+    # urg?  $1=`expr $expression`
+    urg=/tmp/stepmakeise.$$
+    echo expr $expression > $urg
+    echo `. $urg`
+    rm -f $urg
+}
+
+if [ -r stepmake ]; then
+       . ./stepmake/VERSION
+       if [ "x$PACKAGE_NAME" != "xStepMake" ]; then
+               echo "$name: huh 1?"
+               exit 1
+       fi
+       echo "Stepmake found"
+       echo -n "Checking version..."
+       VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+       # urg
+       version=$VERSION
+       if [ "$MY_PATCH_LEVEL" != "" ]; then
+               VERSION=$VERSION.$MY_PATCH_LEVEL
+       fi
+       echo " $version"
+else
+       VERSION="0.0.0"
+       version=$VERSION
+fi
+
+if [ true ]; then
+       # urg
+       echo -n "Checking latest..."
+       if [ ! -r $reldir ]; then
+               echo "$name: huh 2?"
+               exit 1
+       fi
+       LATEST=`cd $reldir; ls -t1 stepmake-*.tar.gz | head -1 | sed 's!stepmake-!!' | sed 's!.tar.gz!!'`
+       # urg
+       latest=`echo $LATEST | sed 's/\.[a-zA-Z][a-zA-Z]*[0-9]*$//'`
+       latest_val=`value $latest`
+       echo " $latest"
+       version_val=`value $version`
+       if [ $latest_val -le $version_val ]; then
+           echo "relax, StepMake is up to date"
+           exit 0
+       fi
+       echo -n "Updating StepMake..."
+       (set +x; rm -rf stepmake; tar xzf $reldir/stepmake-$LATEST.tar.gz; mv stepmake-$LATEST stepmake)
+       echo "ok"
+fi
+
+if [ -r VERSION ]; then
+       echo "$name: warning: VERSION found: not stepmakeising"
+       echo "You should rerun configure"
+       rm -f Makefile
+       exit 0
+fi
+
+files="VERSION make aclocal.in configure.in config.hh.in config.make.in"
+for i in $files; do
+       if [ -r $i ]; then
+               echo "$name: can't stepmakise: $i already present"
+               exit 1
+       fi
+done
+
+echo -n "Stepmakeising..."
+for i in $files; do
+       cp -prv stepmake/$i .
+done
+
+cat <<EOF
+ok
+Please edit the folowing files to your package's needs:
+
+    VERSION
+    configure.in 
+
+and look at:
+
+    make/Toplevel.make.in
+    config.hh.in
+    config.make.in
+EOF
+
diff --git a/stepmake/bin/tar-docxx.sh b/stepmake/bin/tar-docxx.sh
new file mode 100644 (file)
index 0000000..9d20383
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/sh
+
+cwd=`pwd`
+
+if [ "$1" = "" ]; then
+    echo usage tar-docxx TARBALL
+    exit 2
+else
+  TARBALL=$1
+fi
+
+
+# mail-address
+if [ "$MAILADDRESS" != "" ]; then
+       echo mail address is $MAILADDRESS
+else
+       echo "mail-address:6: warning: \$MAILADDRESS undefined" > /dev/stderr
+       echo $USER@`hostname`
+fi
+
+
+if [ ! -e $TARBALL ]; then
+  echo $TARBALL does not exist
+  exit 2
+fi
+
+TARBALLBASE=`basename $TARBALL`
+
+TAROUTDIR=/tmp/tar-docxx
+rm -rf $TAROUTDIR
+mkdir -p $TAROUTDIR
+echo untarring ...
+tar -C $TAROUTDIR -zxf $TARBALL '*cc' '*.c' '*.hh' '*.h'
+
+cd $TAROUTDIR 
+DATE=`date`
+
+cat << EOF > banner.html
+  This program documentation comes from $TARBALLBASE.  It was generated by
+  $USERNAME &lt<a href="mail:$MAILADDRESS">$MAILADDRESS</a>&gt on $DATE
+EOF
+
+mkdir docxx;
+echo doc++ ...
+doc++ -pSf -B banner.html -d docxx `find -type f`
+echo tarring ...
+tar -czf $cwd/progdocs.tar.gz docxx/
+
+rm -rf $TAROUTDIR
diff --git a/stepmake/bin/template.py b/stepmake/bin/template.py
new file mode 100644 (file)
index 0000000..d98efed
--- /dev/null
@@ -0,0 +1,60 @@
+#!@PYTHON@
+
+# template.py -- 
+# 
+# source file of the GNU LilyPond music typesetter
+# 
+# (c) 1998 
+
+program_name = 'template'
+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 program_name + ' version ' + version;
+
+def identify ():
+    sys.stdout.write (program_id () + '\n')
+
+def help ():
+    sys.stdout.write ("Usage: %s [OPTION]... [FILE]...\n"
+                      "I'm not a program, use me as a template to create one\n\n"
+                      + "Options:\n"
+                      + "  -h, --help           print this help\n"
+                     + "  -p, --package=DIR    specify package\n"
+                      % (program_name)
+                     )
+    sys.exit (0)
+
+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 *
+
diff --git a/stepmake/bin/texi2man.sh b/stepmake/bin/texi2man.sh
new file mode 100644 (file)
index 0000000..58144a0
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/sh
+# texi2man.sh
+
+if [ $# -ne 2 ]; then
+       echo "Usage: texi2man TEXINFO-FILE MAN-FILENAME"
+       exit 2
+fi
+
+date=`date +%d/%b/%y`
+#urg
+package_name=LilyPond
+#urg urg
+version=0.1.71
+
+infile=$1
+outfile=$2
+name=`basename $1 .texinfo`
+name=`basename $name .texi`
+name=`echo $name | tr '[A-Z]' '[a-z]'`
+NAME=`echo $name | tr '[a-z]' '[A-Z]'`
+
+echo .TH\ $NAME\ 1\ \"$date\" "$package_name Documentation" >$outfile
+
+NEWLINE="
+"
+cat $infile | 
+#urg, wish we could fix texi2roff :-(
+sed 's!.*\\input .*texinfo.*!!' |
+sed 's!^@chapter.*!@section NAME!' |
+# sed 's!^@node *[Ii]nvoking.*!@section SYNOPSIS!' |
+sed 's!^@node.*!!' |
+# perl -pe "{s/\@node ([^,]*).*/\@section /;\$i=\$1; \$i=~tr [a-z] [A-Z]; chop; \$_.=\$i . \"\n\";}" |
+perl -pe "{s/\@section (.*)/\@section /;\$i=\$1; \$i=~tr [a-z] [A-Z]; chop; \$_.=\$i . \"\n\";}" |
+sed 's!^@subsection .*!!' |
+sed 's!^@c *@texi2man@!@!' |
+perl -pe "s/\@url{([^}]*)}/\$1/" |
+perl -pe "s/\@email{([^},]*)}/<\$1>/" |
+perl -pe "s/\@email{([^},]*),([^}]*)}/\$2, <\$1>/" |
+sed "s!DESCRIPTION!& NEWLINE\
+This manual page was automatically generated from $infile by $0.  For more details, please refer to the info pages: NEWLINE\
+    info $name NEWLINE\
+!" |
+sed "s!NEWLINE!\\$NEWLINE!g" |
+# debugging:
+tee $infile.texi2roff |
+texi2roff -ms |
+sed 's!^\.ds __ !.SH !' |
+# /\&\n(H1.\n(H2      \*(__
+sed 's!.*(H1.*!!' |
+cat >> $outfile
+
diff --git a/stepmake/bin/text2html.sh b/stepmake/bin/text2html.sh
new file mode 100644 (file)
index 0000000..0547aae
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+# text2html.sh
+
+if [ $# -ne 2 ]; then
+       echo "Usage: text2html TEXT-FILE HTML-FILENAME"
+       exit 2
+fi
+
+infile=$1
+outfile=$2
+rm -f $outfile
+echo "<body>" > $outfile
+echo "<xmp>" >> $outfile
+cat $infile >> $outfile
+echo "</xmp>" >> $outfile
+echo "</body>" >> $outfile
+
diff --git a/stepmake/bin/zet-step.sh b/stepmake/bin/zet-step.sh
new file mode 100755 (executable)
index 0000000..b45e937
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+# zet-step.sh --- configure StepMake sourcetree
+# nice in first character unique name
+#
+export PACKAGE_NAME=StepMake
+prefix=$HOME/usr
+#
+#
+. ./stepmake/bin/package-zet.sh
+#
+# The package root dir looks like this:
+#
+# <SEE INSTALL.txt>
+#
+# ln -sf $STEPMAKEL_SOURCEDIR/src/stepmake/out/step $prefix/bin/step
+
+./configure --prefix=$prefix
+
diff --git a/stepmake/config.hh.in b/stepmake/config.hh.in
new file mode 100644 (file)
index 0000000..1efa897
--- /dev/null
@@ -0,0 +1,14 @@
+/* @configure_input@ */
+
+/* Hmm */
+#define PACKAGE "@package@"
+
+/* Toplevel version */
+#define  TOPLEVEL_VERSION "@TOPLEVEL_VERSION@"
+
+/* default init and input dir */
+#define  DIR_DATADIR "@DIR_DATADIR@"
+
+/* default locale dir */
+#define  DIR_LOCALEDIR "@DIR_LOCALEDIR@"
+
diff --git a/stepmake/config.make.in b/stepmake/config.make.in
new file mode 100644 (file)
index 0000000..23f15f8
--- /dev/null
@@ -0,0 +1,59 @@
+# -*-Makefile-*-
+
+# @configure_input@
+
+package-depth = @package_depth@
+
+INSTALL = @INSTALL@
+USER_CXXFLAGS = @CXXFLAGS@ @CPPFLAGS@
+USER_LDFLAGS = 
+
+CC = @CC@
+CXX = @CXX@
+GCC = @GCC@
+LD = @LD@
+PACKAGE = @PACKAGE@
+package = @package@
+PACKAGE_NAME = @PACKAGE_NAME@
+stepmake = @stepmake@
+CONFIGSUFFIX = @CONFIGSUFFIX@
+MAKEINFO = @MAKEINFO@
+ICFLAGS = @ICFLAGS@
+ILDFLAGS = @ILDFLAGS@
+libdir = @libdir@
+prefix = @prefix@
+TEXPREFIX = @TEXPREFIX@
+TEXDIR = @TEXDIR@
+MFDIR = @MFDIR@
+mandir = @mandir@
+infodir = @infodir@
+exec_prefix = @exec_prefix@
+bindir = @bindir@
+includedir = @includedir@
+datadir = @datadir@
+localedir = @localedir@
+EXTRA_LIBES = @EXTRA_LIBES@ @LIBS@
+RANLIB = @RANLIB@
+DEFS = @DEFS@
+#SET_MAKE = @SET_MAKE@
+DEFINES = @DEFS@ @DEFINES@
+COMPILEINFO = @COMPILEINFO@
+DOTEXE = @DOTEXE@
+BASH = @BASH@
+BISON = @BISON@
+FIND = @FIND@
+FLEX = @FLEX@
+LN = @LN@
+MSGFMT = @MSGFMT@
+PERL = @PERL@
+PYTHON = @PYTHON@
+TAR= @TAR@
+TROFF = @TROFF@
+YODL= @YODL@
+YODL2HTML= @YODL2HTML@
+YODL2LATEX= @YODL2LATEX@
+YODL2MAN= @YODL2MAN@
+YODL2TEXINFO= @YODL2TEXINFO@
+YODL2TXT= @YODL2TXT@
+ZIP = @ZIP@
+
diff --git a/stepmake/configure b/stepmake/configure
new file mode 100755 (executable)
index 0000000..d77a257
--- /dev/null
@@ -0,0 +1,1585 @@
+#! /bin/sh
+
+# Guess values for system-dependent variables and create Makefiles.
+# Generated automatically using autoconf version 2.12 
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+
+# Defaults:
+ac_help=
+ac_default_prefix=/usr/local
+# Any additions from configure.in:
+ac_help="$ac_help
+  enable-config=FILE      put configure settings in config-FILE.make"
+ac_help="$ac_help
+  with-localedir=LOCALE   use LOCALE as locale dir. Default: PREFIX/share/locale "
+ac_help="$ac_help
+  with-lang=LANG          use LANG as language to emit messages"
+
+# Initialize some variables set by options.
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+build=NONE
+cache_file=./config.cache
+exec_prefix=NONE
+host=NONE
+no_create=
+nonopt=NONE
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+target=NONE
+verbose=
+x_includes=NONE
+x_libraries=NONE
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datadir='${prefix}/share'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+libdir='${exec_prefix}/lib'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+infodir='${prefix}/info'
+mandir='${prefix}/man'
+
+# Initialize some other variables.
+subdirs=
+MFLAGS= MAKEFLAGS=
+# Maximum number of lines to put in a shell here document.
+ac_max_here_lines=12
+
+ac_prev=
+for ac_option
+do
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval "$ac_prev=\$ac_option"
+    ac_prev=
+    continue
+  fi
+
+  case "$ac_option" in
+  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) ac_optarg= ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case "$ac_option" in
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir="$ac_optarg" ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build="$ac_optarg" ;;
+
+  -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=*)
+    cache_file="$ac_optarg" ;;
+
+  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
+  | --da=*)
+    datadir="$ac_optarg" ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    eval "enable_${ac_feature}=no" ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
+    fi
+    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "enable_${ac_feature}='$ac_optarg'" ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix="$ac_optarg" ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he)
+    # Omit some internal or obsolete options to make the list less imposing.
+    # This message is too long to be a string in the A/UX 3.1 sh.
+    cat << EOF
+Usage: configure [options] [host]
+Options: [defaults in brackets after descriptions]
+Configuration:
+  --cache-file=FILE       cache test results in FILE
+  --help                  print this message
+  --no-create             do not create output files
+  --quiet, --silent       do not print \`checking...' messages
+  --version               print the version of autoconf that created configure
+Directory and file names:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [same as prefix]
+  --bindir=DIR            user executables in DIR [EPREFIX/bin]
+  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
+  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
+  --datadir=DIR           read-only architecture-independent data in DIR
+                          [PREFIX/share]
+  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
+                          [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
+  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
+  --includedir=DIR        C header files in DIR [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
+  --infodir=DIR           info documentation in DIR [PREFIX/info]
+  --mandir=DIR            man documentation in DIR [PREFIX/man]
+  --srcdir=DIR            find the sources in DIR [configure dir or ..]
+  --program-prefix=PREFIX prepend PREFIX to installed program names
+  --program-suffix=SUFFIX append SUFFIX to installed program names
+  --program-transform-name=PROGRAM
+                          run sed PROGRAM on installed program names
+EOF
+    cat << EOF
+Host type:
+  --build=BUILD           configure for building on BUILD [BUILD=HOST]
+  --host=HOST             configure for HOST [guessed]
+  --target=TARGET         configure for TARGET [TARGET=HOST]
+Features and packages:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --x-includes=DIR        X include files are in DIR
+  --x-libraries=DIR       X library files are in DIR
+EOF
+    if test -n "$ac_help"; then
+      echo "--enable and --with options recognized:$ac_help"
+    fi
+    exit 0 ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host="$ac_optarg" ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir="$ac_optarg" ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir="$ac_optarg" ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir="$ac_optarg" ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir="$ac_optarg" ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst \
+  | --locals | --local | --loca | --loc | --lo)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
+  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
+    localstatedir="$ac_optarg" ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir="$ac_optarg" ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir="$ac_optarg" ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix="$ac_optarg" ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix="$ac_optarg" ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix="$ac_optarg" ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name="$ac_optarg" ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir="$ac_optarg" ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir="$ac_optarg" ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site="$ac_optarg" ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir="$ac_optarg" ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir="$ac_optarg" ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target="$ac_optarg" ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers)
+    echo "configure generated by autoconf version 2.12"
+    exit 0 ;;
+
+  -with-* | --with-*)
+    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    case "$ac_option" in
+      *=*) ;;
+      *) ac_optarg=yes ;;
+    esac
+    eval "with_${ac_package}='$ac_optarg'" ;;
+
+  -without-* | --without-*)
+    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
+    # Reject names that are not valid shell variable names.
+    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
+      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
+    fi
+    ac_package=`echo $ac_package| sed 's/-/_/g'`
+    eval "with_${ac_package}=no" ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes="$ac_optarg" ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries="$ac_optarg" ;;
+
+  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
+    ;;
+
+  *)
+    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
+      echo "configure: warning: $ac_option: invalid host type" 1>&2
+    fi
+    if test "x$nonopt" != xNONE; then
+      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
+    fi
+    nonopt="$ac_option"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
+fi
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+# 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
+# 6 checking for... messages and results
+# 5 compiler messages saved in config.log
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>./config.log
+
+echo "\
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+" 1>&5
+
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Also quote any args containing shell metacharacters.
+ac_configure_args=
+for ac_arg
+do
+  case "$ac_arg" in
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c) ;;
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
+  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
+  esac
+done
+
+# NLS nuisances.
+# Only set these to C if already set.  These must not be set unconditionally
+# because not all systems understand e.g. LANG=C (notably SCO).
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
+# Non-C LC_CTYPE values break the ctype check.
+if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
+if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -rf conftest* confdefs.h
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
+echo > 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=make/stepmake.lsm.in
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then its parent.
+  ac_prog=$0
+  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
+  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
+  srcdir=$ac_confdir
+  if test ! -r $srcdir/$ac_unique_file; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r $srcdir/$ac_unique_file; then
+  if test "$ac_srcdir_defaulted" = yes; then
+    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
+  else
+    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
+  fi
+fi
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
+
+# Prefer explicitly selected file to automatically selected ones.
+if test -z "$CONFIG_SITE"; then
+  if test "x$prefix" != xNONE; then
+    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
+  else
+    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
+  fi
+fi
+for ac_site_file in $CONFIG_SITE; do
+  if test -r "$ac_site_file"; then
+    echo "loading site script $ac_site_file"
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  echo "loading cache $cache_file"
+  . $cache_file
+else
+  echo "creating cache $cache_file"
+  > $cache_file
+fi
+
+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
+
+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
+
+
+
+
+# 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
+    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 bin $srcdir/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.
+
+    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 <<EOF
+#define PACKAGE "${PACKAGE_NAME}"
+EOF
+
+    cat >> confdefs.h <<EOF
+#define TOPLEVEL_VERSION "${FULL_VERSION}"
+EOF
+
+
+    package_depth=`dirname $cache_file`
+    
+
+    AUTOGENERATE="This file was automatically generated by configure"
+    
+    absolute_builddir="`pwd`"
+    
+
+    # No versioning on directory names of sub-packages 
+    stepmake=stepmake
+    
+
+    CONFIGSUFFIX=
+    # Check whether --enable-config or --disable-config was given.
+if test "${enable_config+set}" = set; then
+  enableval="$enable_config"
+  CONFIGSUFFIX=$enableval
+fi
+
+
+    if test "$CONFIGSUFFIX" != "" ; then
+       CONFIGFILE=config-$CONFIGSUFFIX
+    else
+       CONFIGFILE=config
+    fi
+    
+     
+    
+# Make sure we can run config.sub.
+if $ac_config_sub sun4 >/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:635: checking host system type" >&5
+
+host_alias=$host
+case "$host_alias" in
+NONE)
+  case $nonopt in
+  NONE)
+    if host_alias=`$ac_config_guess`; then :
+    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+    fi ;;
+  *) host_alias=$nonopt ;;
+  esac ;;
+esac
+
+host=`$ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
+
+    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:660: 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"
+
+    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:694: 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
+
+test -n "$FIND" && break
+done
+test -n "$FIND" || FIND="error"
+
+
+
+
+    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:731: 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
+
+test -n "$TAR" && break
+done
+test -n "$TAR" || TAR="error"
+
+    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:765: 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 "$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_BASH="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+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 "$BASH" && break
+done
+test -n "$BASH" || BASH="/bin/sh"
+
+
+    # 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:798: 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
+
+    
+
+
+    
+       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
+
+    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
+
+       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
+    
+    
+    
+
+    
+    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 <<EOF
+#define DIR_DATADIR "${DIR_DATADIR}"
+EOF
+
+
+
+
+# For all packages except the StepMake package itself
+# AC_CONFIG_SUBDIRS(stepmake)
+
+# Uncomment the configuration options your package needs.
+# AC_STEPMAKE_COMPILE
+# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
+# AC_STEPMAKE_CXX
+# AC_STEPMAKE_GXX
+# AC_STEPMAKE_CXXTEMPLATE
+# AC_STEPMAKE_LEXYACC
+# AC_STEPMAKE_LIB
+# AC_STEPMAKE_LIBTOOL
+
+    lang=English
+    ALL_LINGUAS="en nl"
+
+    # 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
+  localedir='${prefix}/share/locale'
+fi
+
+
+    # Check whether --with-lang or --without-lang was given.
+if test "${with_lang+set}" = set; then
+  withval="$with_lang"
+  language=$with_lang
+else
+  language=English
+fi
+
+
+    echo $ac_n "checking language""... $ac_c" 1>&6
+echo "configure:927: 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
+
+
+# AC_STEPMAKE_GETTEXT
+# AC_STEPMAKE_MAN
+# AC_STEPMAKE_MSGFMT
+# AC_STEPMAKE_TEXMF
+
+    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:959: 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 "$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_YODL="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+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 "$YODL" && break
+done
+test -n "$YODL" || YODL="-echo no yodl"
+
+       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:993: 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 "$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_YODL2HTML="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+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 "$YODL2HTML" && break
+done
+test -n "$YODL2HTML" || YODL2HTML="-echo no yodl"
+
+       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:1027: 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 "$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_YODL2LATEX="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+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 "$YODL2LATEX" && break
+done
+
+       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:1060: 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
+  if test -n "$YODL2MAN"; then
+  ac_cv_prog_YODL2MAN="$YODL2MAN" # 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_YODL2MAN="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+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
+
+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:1094: 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 "$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_YODL2TEXINFO="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+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 "$YODL2TEXINFO" && break
+done
+test -n "$YODL2TEXINFO" || YODL2TEXINFO="-echo no yodl"
+
+       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:1128: 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 "$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_YODL2TXT="$ac_prog"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+fi
+fi
+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 "$YODL2TXT" && break
+done
+test -n "$YODL2TXT" || YODL2TXT="-echo no yodl"
+
+    else
+       
+       
+       
+       
+       
+       
+       export YODL YODL2HTML YODL2LATEX YODL2MAN YODL2TEXINFO YODL2TXT
+    fi
+
+
+# AM_PATH_GTK(1.0.0,,AC_MSG_ERROR([please install proper version of gtk]))
+# AM_PATH_GTK__(0.9.4,,AC_MSG_ERROR([please install proper version of gtk--]))
+
+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:1176: 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"
+
+# AC_CHECK_SEARCH_RESULT($YODL2TEXINFO, yodl,  
+#    You should install Yodl 1.30.pre6 or better)
+
+
+    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
+# scripts and configure runs.  It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already.  You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+  case `(ac_space=' '; set) 2>&1` in
+  *ac_space=\ *)
+    # `set' does not quote correctly, so add quotes (double-quote substitution
+    # turns \\\\ into \\, and sed turns \\ into \).
+    sed -n \
+      -e "s/'/'\\\\''/g" \
+      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+    ;;
+  *)
+    # `set' quotes correctly as required by POSIX, so do not add quotes.
+    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+    ;;
+  esac >> confcache
+if cmp -s $cache_file confcache; then
+  :
+else
+  if test -w $cache_file; then
+    echo "updating cache $cache_file"
+    cat confcache > $cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Any assignment to VPATH causes Sun make to only execute
+# the first set of double-colon rules, so remove it if not needed.
+# If there is a colon in the path, we need to keep it.
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
+fi
+
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
+
+DEFS=-DHAVE_CONFIG_H
+
+# Without the "./", some shells look in PATH for config.status.
+: ${CONFIG_STATUS=./config.status}
+
+echo creating $CONFIG_STATUS
+rm -f $CONFIG_STATUS
+cat > $CONFIG_STATUS <<EOF
+#! /bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# $0 $ac_configure_args
+#
+# Compiler output produced by configure, useful for debugging
+# configure, is in ./config.log if it exists.
+
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
+for ac_option
+do
+  case "\$ac_option" in
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
+    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
+  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
+    echo "$CONFIG_STATUS generated by autoconf version 2.12"
+    exit 0 ;;
+  -help | --help | --hel | --he | --h)
+    echo "\$ac_cs_usage"; exit 0 ;;
+  *) echo "\$ac_cs_usage"; exit 1 ;;
+  esac
+done
+
+ac_given_srcdir=$srcdir
+
+trap 'rm -fr `echo "$CONFIGFILE.make:config.make.in $CONFIGFILE.hh:config.hh.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+# Protect against being on the right side of a sed subst in config.status.
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
+$ac_vpsub
+$extrasub
+s%@CFLAGS@%$CFLAGS%g
+s%@CPPFLAGS@%$CPPFLAGS%g
+s%@CXXFLAGS@%$CXXFLAGS%g
+s%@DEFS@%$DEFS%g
+s%@LDFLAGS@%$LDFLAGS%g
+s%@LIBS@%$LIBS%g
+s%@exec_prefix@%$exec_prefix%g
+s%@prefix@%$prefix%g
+s%@program_transform_name@%$program_transform_name%g
+s%@bindir@%$bindir%g
+s%@sbindir@%$sbindir%g
+s%@libexecdir@%$libexecdir%g
+s%@datadir@%$datadir%g
+s%@sysconfdir@%$sysconfdir%g
+s%@sharedstatedir@%$sharedstatedir%g
+s%@localstatedir@%$localstatedir%g
+s%@libdir@%$libdir%g
+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%@MAKE@%$MAKE%g
+s%@FIND@%$FIND%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%@YODL@%$YODL%g
+s%@YODL2HTML@%$YODL2HTML%g
+s%@YODL2LATEX@%$YODL2LATEX%g
+s%@YODL2MAN@%$YODL2MAN%g
+s%@YODL2TEXINFO@%$YODL2TEXINFO%g
+s%@YODL2TXT@%$YODL2TXT%g
+s%@MAKEINFO@%$MAKEINFO%g
+
+CEOF
+EOF
+
+cat >> $CONFIG_STATUS <<\EOF
+
+# Split the substitutions into bite-sized pieces for seds with
+# small command number limits, like on Digital OSF/1 and HP-UX.
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
+ac_file=1 # Number of current file.
+ac_beg=1 # First line for current file.
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
+ac_more_lines=:
+ac_sed_cmds=""
+while $ac_more_lines; do
+  if test $ac_beg -gt 1; then
+    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
+  else
+    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
+  fi
+  if test ! -s conftest.s$ac_file; then
+    ac_more_lines=false
+    rm -f conftest.s$ac_file
+  else
+    if test -z "$ac_sed_cmds"; then
+      ac_sed_cmds="sed -f conftest.s$ac_file"
+    else
+      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
+    fi
+    ac_file=`expr $ac_file + 1`
+    ac_beg=$ac_end
+    ac_end=`expr $ac_end + $ac_max_sed_cmds`
+  fi
+done
+if test -z "$ac_sed_cmds"; then
+  ac_sed_cmds=cat
+fi
+EOF
+
+cat >> $CONFIG_STATUS <<EOF
+
+CONFIG_FILES=\${CONFIG_FILES-"$CONFIGFILE.make:config.make.in"}
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
+
+  # Remove last slash and all that follows it.  Not all systems have dirname.
+  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+    # The file is in a subdirectory.
+    test ! -d "$ac_dir" && mkdir "$ac_dir"
+    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
+    # A "../" for each directory in $ac_dir_suffix.
+    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
+  else
+    ac_dir_suffix= ac_dots=
+  fi
+
+  case "$ac_given_srcdir" in
+  .)  srcdir=.
+      if test -z "$ac_dots"; then top_srcdir=.
+      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
+  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
+  *) # Relative path.
+    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
+    top_srcdir="$ac_dots$ac_given_srcdir" ;;
+  esac
+
+
+  echo creating "$ac_file"
+  rm -f "$ac_file"
+  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
+  case "$ac_file" in
+  *Makefile*) ac_comsub="1i\\
+# $configure_input" ;;
+  *) ac_comsub= ;;
+  esac
+
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  sed -e "$ac_comsub
+s%@configure_input@%$configure_input%g
+s%@srcdir@%$srcdir%g
+s%@top_srcdir@%$top_srcdir%g
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
+fi; done
+rm -f conftest.s*
+
+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
+# NAME is the cpp macro being defined and VALUE is the value it is being given.
+#
+# ac_d sets the value in "#define NAME VALUE" lines.
+ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
+ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
+ac_dC='\3'
+ac_dD='%g'
+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
+ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_uB='\([     ]\)%\1#\2define\3'
+ac_uC=' '
+ac_uD='\4%g'
+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
+ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
+ac_eB='$%\1#\2define\3'
+ac_eC=' '
+ac_eD='%g'
+
+if test "${CONFIG_HEADERS+set}" != set; then
+EOF
+cat >> $CONFIG_STATUS <<EOF
+  CONFIG_HEADERS="$CONFIGFILE.hh:config.hh.in"
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+fi
+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
+  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
+  case "$ac_file" in
+  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
+       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+  *) ac_file_in="${ac_file}.in" ;;
+  esac
+
+  echo creating $ac_file
+
+  rm -f conftest.frag conftest.in conftest.out
+  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
+  cat $ac_file_inputs > conftest.in
+
+EOF
+
+# Transform confdefs.h into a sed script conftest.vals that substitutes
+# the proper values into config.h.in to produce config.h.  And first:
+# Protect against being on the right side of a sed subst in config.status.
+# Protect against being in an unquoted here document in config.status.
+rm -f conftest.vals
+cat > conftest.hdr <<\EOF
+s/[\\&%]/\\&/g
+s%[\\$`]%\\&%g
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
+s%ac_d%ac_u%gp
+s%ac_u%ac_e%gp
+EOF
+sed -n -f conftest.hdr confdefs.h > conftest.vals
+rm -f conftest.hdr
+
+# This sed command replaces #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+cat >> conftest.vals <<\EOF
+s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
+EOF
+
+# Break up conftest.vals because some shells have a limit on
+# the size of here documents, and old seds have small limits too.
+
+rm -f conftest.tail
+while :
+do
+  ac_lines=`grep -c . conftest.vals`
+  # grep -c gives empty output for an empty file on some AIX systems.
+  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
+  # Write a limited-size here document to conftest.frag.
+  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
+  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
+  echo 'CEOF
+  sed -f conftest.frag conftest.in > conftest.out
+  rm -f conftest.in
+  mv conftest.out conftest.in
+' >> $CONFIG_STATUS
+  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
+  rm -f conftest.vals
+  mv conftest.tail conftest.vals
+done
+rm -f conftest.vals
+
+cat >> $CONFIG_STATUS <<\EOF
+  rm -f conftest.frag conftest.h
+  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
+  cat conftest.in >> conftest.h
+  rm -f conftest.in
+  if cmp -s $ac_file conftest.h 2>/dev/null; then
+    echo "$ac_file is unchanged"
+    rm -f conftest.h
+  else
+    # Remove last slash and all that follows it.  Not all systems have dirname.
+      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
+      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
+      # The file is in a subdirectory.
+      test ! -d "$ac_dir" && mkdir "$ac_dir"
+    fi
+    rm -f $ac_file
+    mv conftest.h $ac_file
+  fi
+fi; done
+
+EOF
+cat >> $CONFIG_STATUS <<EOF
+
+EOF
+cat >> $CONFIG_STATUS <<\EOF
+
+exit 0
+EOF
+chmod +x $CONFIG_STATUS
+rm -fr confdefs* $ac_clean_files
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
+
+
+    rm -f Makefile
+    cp make/Toplevel.make.in ./Makefile
+    chmod 444 Makefile
+
diff --git a/stepmake/configure.in b/stepmake/configure.in
new file mode 100644 (file)
index 0000000..30b29f4
--- /dev/null
@@ -0,0 +1,37 @@
+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/stepmake.lsm.in)
+AC_CONFIG_HEADER($CONFIGFILE.hh:config.hh.in)
+
+# Bootstrap StepMake configure
+AC_STEPMAKE_INIT
+
+# For all packages except the StepMake package itself
+# AC_CONFIG_SUBDIRS(stepmake)
+
+# Uncomment the configuration options your package needs.
+# AC_STEPMAKE_COMPILE
+# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
+# 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_MAN
+# AC_STEPMAKE_MSGFMT
+# AC_STEPMAKE_TEXMF
+AC_STEPMAKE_YODL
+
+# AM_PATH_GTK(1.0.0,,AC_MSG_ERROR([please install proper version of gtk]))
+# AM_PATH_GTK__(0.9.4,,AC_MSG_ERROR([please install proper version of gtk--]))
+
+AC_CHECK_PROGS(MAKEINFO, makeinfo, error)
+# AC_CHECK_SEARCH_RESULT($YODL2TEXINFO, yodl,  
+#    You should install Yodl 1.30.pre6 or better)
+
+AC_STEPMAKE_END
diff --git a/stepmake/make/Makefile b/stepmake/make/Makefile
new file mode 100644 (file)
index 0000000..719d05f
--- /dev/null
@@ -0,0 +1,9 @@
+# file    make/Makefile 
+
+depth = ..
+
+include $(depth)/make/Stepmake.make 
+BLURBS=BLURB # COPERTINA FLAPTEKST
+
+include $(stepdir)/Makedir.shared.make
+
diff --git a/stepmake/make/Rules.make b/stepmake/make/Rules.make
new file mode 100644 (file)
index 0000000..38dafc0
--- /dev/null
@@ -0,0 +1,8 @@
+# title           package specific rules
+# file    make/Rules.lilymake.make
+
+$(outdir)/%: %.in
+       rm -f $@
+       cat $< | $(sed-atfiles) | $(sed-atvariables) > $@
+
+
diff --git a/stepmake/make/STATE-VECTOR b/stepmake/make/STATE-VECTOR
new file mode 100644 (file)
index 0000000..29637a2
--- /dev/null
@@ -0,0 +1,18 @@
+0.1.26
+0.1.26.jcn1
+0.1.26.hwn1
+0.1.26.jcn2
+0.1.26.jcn3
+0.1.27
+0.1.28
+0.1.29
+0.1.30
+0.1.32
+0.1.33
+0.1.34
+0.1.35
+0.1.36
+0.1.37
+0.1.38
+0.1.39
+0.1.40
diff --git a/stepmake/make/Stepmake.make b/stepmake/make/Stepmake.make
new file mode 100644 (file)
index 0000000..a1e6cdb
--- /dev/null
@@ -0,0 +1,20 @@
+# make/Stepmake.make
+
+include $(depth)/make/Toplevel_version.make
+
+# Don't try to outsmart us, you puny computer!
+ifeq (0,${MAKELEVEL})
+  MAKE:=$(MAKE) --no-builtin-rules
+endif
+
+ifndef config
+  configuration=config
+else
+  configuration=config-$(config)
+endif
+
+include $(depth)/$(configuration).make
+
+stepdir = $(depth)/$(stepmake)/stepmake
+-include $(stepdir)/Include.make
+
diff --git a/stepmake/make/Substitute.make b/stepmake/make/Substitute.make
new file mode 100644 (file)
index 0000000..8d5549b
--- /dev/null
@@ -0,0 +1,17 @@
+# Substitute.make
+
+ATVARIABLES = \
+  BASH\
+  DATE\
+  date\
+  DIR_DATADIR\
+  PACKAGE\
+  package\
+  PERL\
+  PYTHON\
+  SHELL\
+  TOPLEVEL_VERSION\
+  step-bindir\
+  abs-step-bindir\
+
+
diff --git a/stepmake/make/Targets.make b/stepmake/make/Targets.make
new file mode 100644 (file)
index 0000000..5a6603f
--- /dev/null
@@ -0,0 +1,26 @@
+# title           package specific targets
+# file    make/Targets.make
+
+.PHONY : check-dist-deps check-make-deps check-rpm-doc-deps check-html-deps check-www-doc check-rpm-icons
+
+check-dist-deps: check-make-deps
+
+check-html-deps:
+       $(MAKE) -C $(depth)/Documentation html
+
+check-www-doc:
+       $(MAKE) CONFIGSUFFIX='www' -C Documentation outdirs
+       $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
+
+# check-rpm-doc-deps: 
+#      $(MAKE) -C $(depth)/Documentation gifs
+
+check-rpm-icons:
+
+check-make-deps:
+       $(MAKE) -C $(depth)/make
+
+# urg urg
+$(configheader): $(depth)/$(configuration).hh
+       cp $< $@
+
diff --git a/stepmake/make/Toplevel.make.in b/stepmake/make/Toplevel.make.in
new file mode 100644 (file)
index 0000000..244f56d
--- /dev/null
@@ -0,0 +1,40 @@
+# -*-Makefile-*-
+# title         specific top level makefile for StepMake
+
+# subdir level:
+#
+depth = .
+#
+
+# descent order into subdirectories:
+#
+SUBDIRS = bin make stepmake Documentation
+#
+
+# bootstrap stepmake:
+#
+include $(depth)/make/Stepmake.make 
+#
+
+# list of distribution files:
+#
+SCRIPTS = configure aclocal.m4
+README_FILES = NEWS README TODO
+README_TXT_FILES = AUTHORS.txt INSTALL.txt
+EXTRA_DIST_FILES = $(IN_FILES) VERSION $(README_FILES)  $(SCRIPTS) 
+NON_ESSENTIAL_DIST_FILES = $(README_TXT_FILES)
+
+#
+
+include $(stepdir)/Toplevel.make
+
+
+
+localdist: do-top-doc
+
+do-top-doc:
+       -$(MAKE) -C Documentation/topdocs/ README_TOP_FILES="$(README_TXT_FILES)" copy-to-top
+
+$(README_TXT_FILES): do-top-doc
+
+
diff --git a/stepmake/make/Toplevel_version.make b/stepmake/make/Toplevel_version.make
new file mode 100644 (file)
index 0000000..4a1e24e
--- /dev/null
@@ -0,0 +1,8 @@
+# Toplevel_version.make
+
+include $(depth)/VERSION
+TOPLEVEL_MAJOR_VERSION:=$(MAJOR_VERSION)
+TOPLEVEL_MINOR_VERSION:=$(MINOR_VERSION)
+TOPLEVEL_PATCH_LEVEL:=$(PATCH_LEVEL)
+# use to send patches, always empty for released version:
+TOPLEVEL_MY_PATCH_LEVEL:=$(MY_PATCH_LEVEL)
diff --git a/stepmake/make/User.make b/stepmake/make/User.make
new file mode 100644 (file)
index 0000000..598bc73
--- /dev/null
@@ -0,0 +1,15 @@
+# title           user changeable settings
+# file    make/User.make
+
+# will be split into CFLAGS/EXTRA_CFLAGS etc, 
+# so that defineable generically and per module
+
+#
+# -lefence = ElectricFence.
+#
+# ElectricFence is a memory debugger which uses the 
+# VM hardware to trap malloc/free errors.
+#
+
+EXTRALIB+= #-lefence
+
diff --git a/stepmake/make/Variables.make b/stepmake/make/Variables.make
new file mode 100644 (file)
index 0000000..3c5a39d
--- /dev/null
@@ -0,0 +1,20 @@
+# title           package specific variables
+# file    make/Variables.lilymake.make
+#
+# do not change this file for site-wide extensions; please use 
+# make/$(outdir)/Site.make; 
+#
+# Any change in files in this directory (make/) would be distributed, if 
+# you do make dist 
+#
+
+# dummydeps
+#
+DUMMYDEPS=\
+
+#
+
+STEPMAKE_INCLUDES =
+STEPMAKE_LDFLAGS =
+STEPMAKE_LIBES =
+
diff --git a/stepmake/make/out/stepmake.lsm b/stepmake/make/out/stepmake.lsm
new file mode 100644 (file)
index 0000000..4d16f1c
--- /dev/null
@@ -0,0 +1,15 @@
+Begin3
+Title: StepMake
+Version: 0.1.41
+Entered-date: 10AUG98
+Description: 
+Keywords: music notation typesetting midi fonts engraving
+Author: janneke@gnu.org (Jan Nieuwenhuizen)
+       hanwen@cs.ruu.nl (Han-Wen Nienhuys)
+Maintained-by: janneke@gnu.org (Jan Nieuwenhuizen)
+Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
+       40k stepmake-0.1.41.tar.gz 
+Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
+       40k stepmake-0.1.41.tar.gz 
+Copying-policy: GPL
+End
diff --git a/stepmake/make/out/stepmake.spec b/stepmake/make/out/stepmake.spec
new file mode 100644 (file)
index 0000000..60ebe82
--- /dev/null
@@ -0,0 +1,26 @@
+Name: stepmake
+Version: 0.1.41
+Release: 1
+Copyright: GPL
+Group: Development
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/stepmake-0.1.41.tar.gz
+Summary: generic make package
+Packager: janneke@gnu.org (Jan Nieuwenhuizen)
+Buildroot: /tmp/stepmake-install
+
+%description 
+
+
+%prep
+%setup
+%build
+./configure --prefix=/usr
+make all
+%install
+rm -rf $RPM_BUILD_ROOT
+make prefix="$RPM_BUILD_ROOT/usr" install
+%files
+# urg
+/usr/bin/make-patch
+%post
+
diff --git a/stepmake/make/stepmake.lsm.in b/stepmake/make/stepmake.lsm.in
new file mode 100644 (file)
index 0000000..1e00adf
--- /dev/null
@@ -0,0 +1,15 @@
+Begin3
+Title: StepMake
+Version: @TOPLEVEL_VERSION@
+Entered-date: @DATE@
+Description: @BLURB@
+Keywords: music notation typesetting midi fonts engraving
+Author: janneke@gnu.org (Jan Nieuwenhuizen)
+       hanwen@cs.ruu.nl (Han-Wen Nienhuys)
+Maintained-by: janneke@gnu.org (Jan Nieuwenhuizen)
+Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
+       40k @package@-@TOPLEVEL_VERSION@.tar.gz 
+Original-site: pcnov095.win.tue.nl /pub/lilypond/development/
+       40k @package@-@TOPLEVEL_VERSION@.tar.gz 
+Copying-policy: GPL
+End
diff --git a/stepmake/make/stepmake.spec.in b/stepmake/make/stepmake.spec.in
new file mode 100644 (file)
index 0000000..ded7146
--- /dev/null
@@ -0,0 +1,26 @@
+Name: @package@
+Version: @TOPLEVEL_VERSION@
+Release: 1
+Copyright: GPL
+Group: Development
+Source0: pcnov095.win.tue.nl:/pub/lilypond/development/@package@-@TOPLEVEL_VERSION@.tar.gz
+Summary: generic make package
+Packager: janneke@gnu.org (Jan Nieuwenhuizen)
+Buildroot: /tmp/stepmake-install
+
+%description 
+@BLURB@
+
+%prep
+%setup
+%build
+./configure --prefix=/usr
+make all
+%install
+rm -rf $RPM_BUILD_ROOT
+make prefix="$RPM_BUILD_ROOT/usr" install
+%files
+# urg
+/usr/bin/make-patch
+%post
+
diff --git a/stepmake/stepmake/C++.make b/stepmake/stepmake/C++.make
new file mode 100644 (file)
index 0000000..8f39b4e
--- /dev/null
@@ -0,0 +1,4 @@
+
+include $(stepdir)/C++_rules.make
+include $(stepdir)/C++_vars.make
+include $(stepdir)/C++_files.make
diff --git a/stepmake/stepmake/C++_files.make b/stepmake/stepmake/C++_files.make
new file mode 100644 (file)
index 0000000..d61a475
--- /dev/null
@@ -0,0 +1,14 @@
+
+#
+# template files:
+TCC_FILES := $(wildcard *.tcc)
+HH_FILES := $(wildcard *.hh)
+CC_FILES := $(wildcard *.cc)
+INL_FILES := $(wildcard *.icc)
+YY_FILES := $(wildcard *.yy)
+LL_FILES := $(wildcard *.ll)
+
+SOURCE_FILES+=$(YY_FILES) $(CC_FILES) $(INL_FILES) $(TCC_FILES) $(HH_FILES) $(LL_FILES)
+OBJECT_FILES+=$(YY_FILES:.yy=.o) $(CC_FILES:.cc=.o) $(LL_FILES:.ll=.o)
+
+TAGS_FILES += $(TCC_FILES) $(HH_FILES) $(INL_FILES) $(CC_FILES)
diff --git a/stepmake/stepmake/C++_rules.make b/stepmake/stepmake/C++_rules.make
new file mode 100644 (file)
index 0000000..df26b06
--- /dev/null
@@ -0,0 +1,27 @@
+# title           C++ rules
+# file    make/C++_rules.make
+
+.SUFFIXES: .cc .o .hh .yy .ll  .dep
+
+# compile rules:
+#
+$(outdir)/%.o: %.cc
+       $(DO_CXX_COMPILE)
+
+$(outdir)/%.o: $(outdir)/%.cc
+       $(DO_CXX_COMPILE)
+
+$(outdir)/%.cc: %.yy
+       $(BISON) $<
+       mv $<.tab.c $@
+
+$(outdir)/%.hh: %.yy
+       $(BISON) -d $<
+       mv $<.tab.h $@
+       mv $<.tab.c $(basename $@).cc
+
+$(outdir)/%.cc: %.ll
+       $(FLEX) -Cfe -p -p -t $< > $@
+# could be faster:
+#      $(FLEX) -8 -Cf -t $< > $@
+
diff --git a/stepmake/stepmake/C++_vars.make b/stepmake/stepmake/C++_vars.make
new file mode 100644 (file)
index 0000000..889b3f6
--- /dev/null
@@ -0,0 +1,14 @@
+
+# added two warnings that are treated by cygwin32's gcc 2.7.2 as errors.
+# huh, but still, no warnings even provoced with linux's gcc 2.7.2.1?
+
+# -pipe makes it go faster, but is not supported on all platforms. 
+# EXTRA_CXXFLAGS= -Wall -Winline -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
+EXTRA_CXXFLAGS= -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wconversion
+
+
+CXXFLAGS = $(ICFLAGS) $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS) $(MODULE_CFLAGS) $(USER_CXXFLAGS) $(EXTRA_CXXFLAGS) $(MODULE_CXXFLAGS)
+CXX_OUTPUT_OPTION = $< -o $@
+DO_CXX_COMPILE=$(DODEP) $(CXX) -c $(CXXFLAGS) $(CXX_OUTPUT_OPTION)
+
+
diff --git a/stepmake/stepmake/C.make b/stepmake/stepmake/C.make
new file mode 100644 (file)
index 0000000..2548c77
--- /dev/null
@@ -0,0 +1,24 @@
+
+# header files:
+H_FILES := $(wildcard *.h)
+C_FILES := $(wildcard *.c)
+Y_FILES := $(wildcard *.y)
+L_FILES := $(wildcard *.l)
+
+SOURCE_FILES+=$(Y_FILES) $(C_FILES) $(L_FILES) $(H_FILES)
+OBJECT_FILES+=$(Y_FILES:.y=.o) $(C_FILES:.c=.o) $(L_FILES:.l=.o)
+
+TAGS_FILES += C_FILES H_FILES
+# C/C++
+# 
+
+ALL_C_SOURCES += $(H_FILES) $(C_FILES) $(Y_FILES)
+
+include $(stepdir)/C_rules.make
+
+# compiler:
+#
+DO_C_COMPILE = $(DODEP) $(CC) -c $(CFLAGS) $(C_OUTPUT_OPTION) 
+C_OUTPUT_OPTION = $< -o $@
+
+CFLAGS = $(ICFLAGS) $(DEFINES) $(INCLUDES) $(USER_CFLAGS) $(EXTRA_CFLAGS) $(MODULE_CFLAGS)
diff --git a/stepmake/stepmake/C_rules.make b/stepmake/stepmake/C_rules.make
new file mode 100644 (file)
index 0000000..a2bf496
--- /dev/null
@@ -0,0 +1,26 @@
+# stepmake/C_rules.make
+
+.SUFFIXES: .c .o .h .y .l .dep
+
+$(outdir)/%.o: %.c
+       $(DO_C_COMPILE)
+
+$(outdir)/%.o: $(outdir)/%.c
+       $(DO_C_COMPILE)
+
+$(outdir)/%.c: %.y
+       $(BISON) $<
+#      mv $<.tab.c $@
+       mv parser.tab.c $@
+
+$(outdir)/%.h: %.y
+       $(BISON) -d $<
+#      mv $<.tab.h $@
+       mv parser.tab.h $@
+       mv parser.tab.c $(basename $@).c
+
+$(outdir)/%.c: %.l
+       $(FLEX) -Cfe -p -p -t $< > $@
+# could be faster:
+#      $(FLEX) -8 -Cf -t $< > $@
+
diff --git a/stepmake/stepmake/Documentation.shared.make b/stepmake/stepmake/Documentation.shared.make
new file mode 100644 (file)
index 0000000..1a8ee9b
--- /dev/null
@@ -0,0 +1,48 @@
+# stepmake/Documentation.shared.make
+# urg: stuff shared between yodl/lily/stepmake
+
+# could/should do this for bin/Makefile make/Makefile too
+
+### below here is shared between lily/yodl/Documentation and topdocs...
+
+AT_FILES = $(BLURBS) # 
+at-dir = $(doc-dir)/
+at-ext = .in
+
+include $(stepdir)/Documentation.vars.make
+include $(stepdir)/Documentation_rules.make
+
+do-doc: $(OUTTXT_FILES) 
+
+# ugh. FIXME
+ifeq ($(strip $(README_TOP_FILES)),)
+readme-top_FILES-html:
+else
+
+readme-top_FILES-html:
+       for i in $(README_TOP_FILES); do \
+         $(SHELL) $(step-bindir)/text2html.sh $(outdir)/$$i.txt $(outdir)/$$i.html; \
+         $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=$(depth)/../index.html $(outdir)/$$i.html; \
+       done
+endif
+
+local-WWW:  readme-top_FILES-html $(OUTHTML_FILES) $(OUTREADME_HTML_FILES) 
+
+doc: do-doc
+
+# what to do here?
+ifneq ($(strip $(INFO_FILES)),)
+
+INFOINSTALL=$(MAKE) INSTALLATION_OUT_DIR=$(infodir) depth=$(depth) INSTALLATION_OUT_FILES="$(INFO_FILES)" -f $(stepdir)/Install_outfiles.sub.make $@
+
+$(outdir)/$(package).info: check-texinfo-deps $(OUTTEXINFO_FILES)
+       $(MAKEINFO) -o $@ $(outdir)/topinfo.texinfo
+
+localinstall: # $(INFO_FILES)
+       $(INSTALL) -d $(infodir)
+       $(INFOINSTALL)
+localuninstall:
+       $(INFOINSTALL)
+
+endif
+
diff --git a/stepmake/stepmake/Documentation.vars.make b/stepmake/stepmake/Documentation.vars.make
new file mode 100644 (file)
index 0000000..a12f31e
--- /dev/null
@@ -0,0 +1,20 @@
+# Documentation files
+#
+YO_FILES := $(wildcard *.yo)
+POD_FILES := $(wildcard *.pod)
+TEXINFO_FILES := $(wildcard *.texinfo)
+OUTYO_FILES = $(addprefix $(outdir)/,$(YO_FILES))
+OUTPOD_FILES = $(addprefix $(outdir)/,$(POD_FILES))
+OUTTEXINFO_FILES = $(addprefix $(outdir)/,$(TEXINFO_FILES))
+
+#
+ALL_DOC_FILES = $(POD_FILES) $(TEXINFO_FILES) $(YO_FILES)
+OUTTXT_FILES = $(OUTYO_FILES:.yo=.txt) $(OUTIN_FILES:.yo=.txt)
+OUTHTML_FILES = $(OUTYO_FILES:.yo=.html) $(OUTIN_FILES:.yo=.html) # $(OUTREADME_HTML_FILES)
+# OUTTEXINFO_FILES= $(addprefix $(outdir)/, $(addsuffix .texinfo,$(basename $(YO_FILES) .yo)))
+# OUTTEXINFO_FILES = $(outdir)/topinfo.texinfo $(outdir)/mutopia.texinfo
+OUTREADME_TXT_FILES=$(addprefix $(outdir)/,$(addsuffix .txt, $(README_TOP_FILES)))
+OUTREADME_HTML_FILES=$(addprefix $(outdir)/,$(addsuffix .html, $(README_TOP_FILES)))
+
+
+ALL_SOURCES += $(ALL_DOC_FILES)
diff --git a/stepmake/stepmake/Documentation_rules.make b/stepmake/stepmake/Documentation_rules.make
new file mode 100644 (file)
index 0000000..6e98289
--- /dev/null
@@ -0,0 +1,25 @@
+# Docrules.make
+
+# special rules for the documentation section.
+# There are too many to add to the general rules
+
+.SUFFIXES: .1 .data .html .gif .xpm .tex .txt
+
+$(outdir)/%.gif: %.xpm
+       xpmtoppm $< | ppmtogif > $@
+
+$(outdir)/%.txt: $(outdir)/%.1
+       troff -man -Tascii $< | grotty -b -u -o > $@
+
+#urg should generalise and move Lilypond -> StepMake
+$(outdir)/%.html: %.data $(depth)/VERSION
+       $(PYTHON) $(step-bindir)/table-to-html.py --package=$(topdir) -o $@ $<
+       $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) $@
+
+$(outdir)/%.tex: %.data $(depth)/VERSION
+       $(PYTHON) $(step-bindir)/table-to-html.py --package=$(topdir) -o $@ --latex $<
+
+include $(stepdir)/Yodl_rules.make
+include $(stepdir)/Texinfo_rules.make
+-include $(make-dir)/Docrules.make
+
diff --git a/stepmake/stepmake/Executable.make b/stepmake/stepmake/Executable.make
new file mode 100644 (file)
index 0000000..1516ad7
--- /dev/null
@@ -0,0 +1,34 @@
+# Executable.make
+
+# dependency list of executable:
+#
+
+default: $(EXECUTABLE)
+
+$(EXECUTABLE): $(configheader) $(O_FILES) $(outdir)/version.hh $(MODULE_LIBES)
+       $(foreach a, $(MODULE_LIBS), $(MAKE) -C $a && ) true
+       $(LD_COMMAND) $(O_FILES) $(LOADLIBES)
+
+exe: $(EXECUTABLE)
+
+
+
+localinstall: installexe
+
+localuninstall: uninstallexe
+
+installexe: all
+       $(INSTALL) -d $(bindir)
+       $(foreach a, $(EXECUTABLES), \
+               $(INSTALL) -m 755 $(outdir)/$(a) $(bindir)/$(a)$(DOTEXE) && \
+               strip $(bindir)/$(a)$(DOTEXE) && ) true
+       $(foreach a, $(SEXECUTABLES), \
+               $(INSTALL) -m 755 $(outdir)/$(a) $(bindir) &&) true
+
+uninstallexe:
+       $(foreach a, $(EXECUTABLES), rm -f $(bindir)/$(a)$(DOTEXE) &&) true
+       $(foreach a, $(SEXECUTABLES), rm -f $(bindir)/$(a) &&) true
+
+
+%/$(outdir)/library.a:
+       $(MAKE) -C $(dir $@)/.. default
diff --git a/stepmake/stepmake/Files.make b/stepmake/stepmake/Files.make
new file mode 100644 (file)
index 0000000..2c2ede8
--- /dev/null
@@ -0,0 +1,27 @@
+# Files.make
+
+
+# list of object _FILES:
+#
+SOURCE_FILES =
+
+O_FILES = $(addprefix $(outdir)/,$(OBJECT_FILES))
+#
+
+DEP_FILES := $(wildcard $(depdir)/*.dep)
+
+# (Why not Makefile too?)
+#
+MAKE_FILES := $(wildcard *.make)
+#
+
+IN_FILES := $(wildcard *.in)
+SOURCE_FILES += $(IN_FILES)
+SOURCE_FILES += $(MAKE_FILES)
+# Preprocessed .in documentation _FILES:
+#
+OUTIN_FILES = $(addprefix $(outdir)/, $(IN_FILES:%.in=%))
+#
+
+ALL_SOURCES = $(SOURCE_FILES)
+
diff --git a/stepmake/stepmake/Include.make b/stepmake/stepmake/Include.make
new file mode 100644 (file)
index 0000000..61f6eff
--- /dev/null
@@ -0,0 +1,7 @@
+# Include.make
+
+include $(stepdir)/Variables.make
+include $(stepdir)/Files.make
+include $(stepdir)/Targets.make
+include $(stepdir)/Rules.make
+
diff --git a/stepmake/stepmake/Install_outfiles.make b/stepmake/stepmake/Install_outfiles.make
new file mode 100644 (file)
index 0000000..53b2321
--- /dev/null
@@ -0,0 +1,15 @@
+# Initial_outfiles.make
+
+localinstall: localinstall-files
+
+localinstall-files: $(INSTALLATION_OUT_FILES)
+       $(INSTALL) -d $(INSTALLATION_OUT_DIR)
+       $(foreach i, $(INSTALLATION_OUT_FILES), \
+               $(INSTALL) -m 644 $(i) $(INSTALLATION_OUT_DIR) && )true
+
+localuninstall: localuninstall-files
+
+localuninstall-files:
+       $(foreach  i, $(notdir $(INSTALLATION_OUT_FILES)), \
+               rm -f $(INSTALLATION_OUT_DIR)/$(i) && ) true
+       -rmdir $(INSTALLATION_OUT_DIR)
diff --git a/stepmake/stepmake/Install_outfiles.sub.make b/stepmake/stepmake/Install_outfiles.sub.make
new file mode 100644 (file)
index 0000000..d5f9920
--- /dev/null
@@ -0,0 +1,5 @@
+# Initial_outfiles.sub.make
+
+include $(depth)/make/Stepmake.make
+include $(stepdir)/Install_outfiles.make
+
diff --git a/stepmake/stepmake/Installfiles.make b/stepmake/stepmake/Installfiles.make
new file mode 100644 (file)
index 0000000..93d4083
--- /dev/null
@@ -0,0 +1,15 @@
+# Installfiles.make
+
+localinstall: localinstall-files
+
+localinstall-files:
+       $(INSTALL) -d $(INSTALLATION_DIR)
+       $(foreach i,  $(INSTALLATION_FILES),\
+               $(INSTALL) -m 644 $(i) $(INSTALLATION_DIR) &&)true
+
+localuninstall: localuninstall-files
+
+localuninstall-files:
+       $(foreach i,  $(INSTALLATION_FILES),
+               rm -f $(INSTALLATION_DIR)/$(i) && ) true
+       -rmdir $(INSTALLATION_DIR)
diff --git a/stepmake/stepmake/Intlrules.make b/stepmake/stepmake/Intlrules.make
new file mode 100644 (file)
index 0000000..41a4421
--- /dev/null
@@ -0,0 +1,7 @@
+
+LIBINTL=$(outdir)/libintl.a
+check-lib-intl:
+       $(MAKE) -C $(depth)/intl lib
+
+include $(stepdir)/C.make
+
diff --git a/stepmake/stepmake/Library.make b/stepmake/stepmake/Library.make
new file mode 100644 (file)
index 0000000..c3a88cf
--- /dev/null
@@ -0,0 +1,3 @@
+
+include $(stepdir)/Library_vars.make
+include $(stepdir)/Library_targets.make
diff --git a/stepmake/stepmake/Library_targets.make b/stepmake/stepmake/Library_targets.make
new file mode 100644 (file)
index 0000000..f032aa5
--- /dev/null
@@ -0,0 +1,17 @@
+# dependency list of library:
+#
+
+
+default: $(LIBRARY)
+
+$(outdir)/library.a: $(configheader) $(O_FILES) $(MODULE_LIBES)
+       $(AR_COMMAND) $(O_FILES)
+       $(RANLIB_COMMAND)
+
+$(SHAREDLIBRARY):  $(configheader) $(O_FILES) $(MODULE_LIBES)
+       $(LD_COMMAND) $(O_FILES) -o $@.$(VERSION)
+       rm -f $@
+       ln -sf $(outdir)/$(LIB_PREFIX)$(NAME).so.$(VERSION) $@.$(MAJOR_VERSION)
+       ln -sf $(LIB_PREFIX)$(NAME).so.$(VERSION) $@
+
+
diff --git a/stepmake/stepmake/Library_vars.make b/stepmake/stepmake/Library_vars.make
new file mode 100644 (file)
index 0000000..f488bfb
--- /dev/null
@@ -0,0 +1,20 @@
+ifndef LIB_SUFFIX
+LIB_SUFFIX = .a
+endif
+
+LIB_PREFIX = lib
+
+# librarian:
+#
+AR = ar
+AR_COMMAND = $(AR) $(ARFLAGS) $@
+
+#
+ifeq ($(RANLIB),error)
+RANLIB_COMMAND=$(AR) ts $@
+else
+RANLIB_COMMAND=$(RANLIB) $@
+endif
+# linker:
+LIBRARY = $(outdir)/library.a
+SHAREDLIBRARY=$(outdir)/$(LIB_PREFIX)$(NAME).so
diff --git a/stepmake/stepmake/Makedir.shared.make b/stepmake/stepmake/Makedir.shared.make
new file mode 100644 (file)
index 0000000..aee95bf
--- /dev/null
@@ -0,0 +1,31 @@
+# stepmake/Makedir.shared.make
+# urg: stuff shared between yodl/lily/stepmake
+
+LSM_FILES:= $(wildcard *.lsm.in)
+OUTLSM_FILES=$(addprefix $(outdir)/,$(basename $(LSM_FILES), .in))
+SPEC_FILES:= $(wildcard *.spec.in)
+OUTSPEC_FILES=$(addprefix $(outdir)/,$(basename $(SPEC_FILES), .in))
+
+EXTRA_DIST_FILES = $(state-vector)
+
+# these two outdir FILES are distributed, since they make sense to have 
+# without running configure and make.
+OUT_DIST_FILES= $(OUTLSM_FILES) $(OUTSPEC_FILES)
+
+
+spec: $(OUTSPEC_FILES)
+
+$(OUTSPEC_FILES): $(depth)/VERSION 
+$(OUTLSM_FILES): $(depth)/VERSION
+
+AT_FILES = $(BLURBS) # 
+at-dir = $(doc-dir)/
+at-ext = .in
+
+# is this still used?
+rpmdocs=BUGS TODO NEWS DEDICATION ANNOUNCE README
+rpmdvis=$(rpmmudocs:.doc=.dvi)
+rpmexamples= $(addprefix input/, $(notdir $(shell ls $(depth)/input/*.ly)))
+
+
+localdist:   $(OUTSPEC_FILES) $(OUTLSM_FILES)
diff --git a/stepmake/stepmake/Makefile b/stepmake/stepmake/Makefile
new file mode 100644 (file)
index 0000000..a270421
--- /dev/null
@@ -0,0 +1,23 @@
+# title           makefile for stepmake
+
+# subdir level:
+#
+depth = ..
+#
+
+# descent order into subdirectories:
+#
+SUBDIRS =
+#
+
+# bootstrap stepmake:
+#
+-include $(depth)/make/Stepmake.make 
+#
+
+# gory hack: stepmake itself is a stepmake package.
+default:
+       rm -f stepmake
+       ln -s ../stepmake .
+       rm -f bin
+       ln -s ../bin .
diff --git a/stepmake/stepmake/Manual.make b/stepmake/stepmake/Manual.make
new file mode 100644 (file)
index 0000000..5186b1d
--- /dev/null
@@ -0,0 +1,15 @@
+# Manual.make
+
+MANGROFF = $(addprefix $(outdir)/, $(addsuffix .$(SECTION)))
+
+localinstall: $(MANGROFFS)
+       $(INSTALL) -d $(mandir)/man$(SECTION)
+       $(INSTALL) -m 644 $(MANGROFFS) $(mandir)/man$(SECTION)
+
+
+localuninstall:
+       (cd  $(mandir)/man$(SECTION)/; rm -f $(MANGROFF))
+
+
+
+
diff --git a/stepmake/stepmake/Metafont.make b/stepmake/stepmake/Metafont.make
new file mode 100644 (file)
index 0000000..ed0e227
--- /dev/null
@@ -0,0 +1,15 @@
+MF_FILES = $(wildcard *.mf)
+FONT_FILES = $(wildcard *[0-9].mf)
+EXTRA_DIST_FILES += $(MF_FILES)
+
+$(outdir)/%.dvi: %.mf
+       mf $<
+       gftodvi  $(basename $<)
+       mv   $(basename $<).dvi $(outdir)
+       rm $(basename $<).*gf
+
+$(outdir)/%.log: %.mf
+       mf $<
+       mv $(@F) $@
+       rm $(basename $< ).*gf
+
diff --git a/stepmake/stepmake/Package.make b/stepmake/stepmake/Package.make
new file mode 100644 (file)
index 0000000..d0d29f1
--- /dev/null
@@ -0,0 +1,36 @@
+# stepmake/Package.make
+
+package-icon=$(outdir)/$(package)-icon.gif
+
+deb:
+       $(MAKE) -C $(depth)/debian
+
+# urg
+#(cd $(depth)/../debian/$(distname); \
+#  ln -sf debian DEBIAN; )
+# su -c 'dpkg-deb -b $(depth)/../debian/$(distname)'
+# urg, why aren't there any decent manual pages for dpkg or rpm?
+       su -c '(cd $(depth)/../debian; \
+         rm -rf $(distname) $(distname).deb;\
+         tar xz -C $(depth)/../debian -f $(release-dir)/$(distname).tar.gz; \
+         cd $(distname);\
+         dpkg-buildpackage -b; \
+       )'
+
+makeflags=$(patsubst %==, %, $(patsubst %----,%,$(MAKEFLAGS:%=--%)))
+
+diff:
+       $(PYTHON) $(step-bindir)/package-diff.py --package=$(topdir) $(makeflags)
+
+release: 
+       $(PYTHON) $(step-bindir)/release.py --package=$(topdir)
+
+rpm: $(depth)/$(package-icon) dist
+       su -c 'rpm -tb $(depth)/$(outdir)/$(distname).tar.gz'
+
+update:
+       $(PYTHON) $(step-bindir)/update.py --package=$(topdir) $(makeflags)
+
+zip:
+       $(SHELL) $(step-bindir)/package-zip.sh $(topdir) $(prefix:/%=%)
+
diff --git a/stepmake/stepmake/Po_rules.make b/stepmake/stepmake/Po_rules.make
new file mode 100644 (file)
index 0000000..ccff7a1
--- /dev/null
@@ -0,0 +1,28 @@
+# Porules.make
+
+.SUFFIXES: .po .mo
+
+$(outdir)/%.mo: %.po
+       $(MSGFMT) -o $@ $<
+
+# sed-pofile = sed 's/^. \#: .*//'
+sed-pofile = sed 's/^\#: .*//'
+sed-makestuff = sed 's/[a-zA-Z_/]*make\[[0-9]*\].*//'
+sed-edstuff = sed 's/[ \.,adic0-9]*//' | sed 's/---//' | sort -u
+
+po-update:
+       $(foreach i,$(CATALOGS), \
+         rm -f $(po-dir)/$(outdir)/$(i).po; \
+         tupdate $(po-dir)/$(outdir)/$(package).po $(po-dir)/$(i).po \
+           > $(po-dir)/$(outdir)/$(i).po && ) true
+       $(foreach i,$(CATALOGS), \
+         changes=`$(MAKE) --silent -C $(po-dir) LANGUAGE=$$i show-po-changes $(ERROR_LOG) | $(sed-makestuff)`; \
+         if test "$$changes" != "" ; then \
+           echo "*** Changes for language $$i; check po/$(outdir)/$$i.po ***"; \
+           echo -e "changes: \`$$changes'";\
+         fi; && ) true
+
+
+show-po-changes:
+       diff -e $(po-dir)/$(outdir)/$(LANGUAGE).po $(po-dir)/$(LANGUAGE).po \
+         | $(sed-pofile) | $(sed-edstuff)
diff --git a/stepmake/stepmake/Pod_rules.make b/stepmake/stepmake/Pod_rules.make
new file mode 100644 (file)
index 0000000..dd5b7cc
--- /dev/null
@@ -0,0 +1,32 @@
+# Pod_rules.make
+
+.SUFFIXES: .1 .5 .html .pod .txt
+
+pod2html=pod2html
+pod2groff=pod2man --center="$(PACKAGE_NAME) documentation" --section="0"\
+       --release="$(PACKAGE_NAME) $(VERSION)" $< > $@
+
+
+# perl 5.003/4
+POD2HTML_5003=$(POD2HTML) $< ; mv $(notdir $@) $(outdir)/ || true
+# urg, broken.  if you must have perl 5004, better install pod2html from 5003
+POD2HTML_5004=$(POD2HTML) --noindex --infile $< --outfile=$@;  sh $(depth)/bin/add-URLs.sh $@
+
+do_pod2html=$($(POD2HTML_VERSION))
+
+$(outdir)/%.html: $(outdir)/%.pod $(depth)/VERSION
+       $(do_pod2html) 
+       $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index $(depth)/../index.html $@
+
+$(outdir)/%.pod: %.pod
+       cp $< $@
+
+$(outdir)/%.5: %.pod
+       $(pod2groff)
+
+$(outdir)/%.1: %.pod
+       $(pod2groff)
+
+$(outdir)/%.1: $(outdir)/%.pod
+       -$(pod2groff)
+
diff --git a/stepmake/stepmake/Rules.make b/stepmake/stepmake/Rules.make
new file mode 100644 (file)
index 0000000..97e210c
--- /dev/null
@@ -0,0 +1,39 @@
+# title           generic make rules
+# file    make/Rules.make
+
+# this is supposed to clear all suffixes:
+.SUFFIXES:
+
+$(outdir)/%: %.m4
+       $(M4) $< > $@
+
+%.dep:
+       touch $@
+
+%.gz: %
+       gzip -c9 $< > $@
+
+# bit docrules, these...
+$(outdir)/%.dvi: $(outdir)/%.tex
+       (cd $(outdir); tex \\nonstopmode \\input $(<F))
+
+$(outdir)/%.dvi: $(outdir)/%.latex
+       (cd $(outdir); \
+         latex \\nonstopmode \\input $(<F);\
+         bibtex $(basename $(<F));\
+         latex \\nonstopmode \\input $(<F);\
+         latex \\nonstopmode \\input $(<F);\
+       )
+
+$(outdir)/%.ps: $(outdir)/%.dvi
+       dvips -ta4 -o $@ $<
+
+
+# hmm, always include these, or include via package/make/Rules.make?
+include $(stepdir)/Substitute.make
+include $(make-dir)/Rules.make
+
+$(outdir)/%: %.in
+       rm -f $@
+       cat $< | $(sed-atfiles) | $(sed-atvariables) > $@
+
diff --git a/stepmake/stepmake/Script_files.make b/stepmake/stepmake/Script_files.make
new file mode 100644 (file)
index 0000000..ef705ba
--- /dev/null
@@ -0,0 +1,10 @@
+
+
+PERL_SCRIPTS_IN := $(wildcard *.pl)
+PERL_SCRIPTS = $(addprefix $(outdir)/, $(PERL_SCRIPTS_IN:.pl=))
+SH_SCRIPTS_IN := $(wildcard *.sh)
+SH_SCRIPTS = $(addprefix $(outdir)/, $(SH_SCRIPTS_IN:.sh=))
+PYTHON_SCRIPTS_IN := $(wildcard *.py)
+PYTHON_SCRIPTS = $(addprefix $(outdir)/, $(PYTHON_SCRIPTS_IN:.py=))
+ALL_SCRIPTS_IN = $(SH_SCRIPTS_IN) $(PERL_SCRIPTS_IN) $(PYTHON_SCRIPTS_IN)
+EXTRA_DIST_FILES += $(ALL_SCRIPTS_IN)
diff --git a/stepmake/stepmake/Scripts.make b/stepmake/stepmake/Scripts.make
new file mode 100644 (file)
index 0000000..a0e79f7
--- /dev/null
@@ -0,0 +1,21 @@
+# Scripts.make
+
+
+include $(stepdir)/Script_files.make
+
+all: $(PERL_SCRIPTS) $(PYTHON_SCRIPTS) $(SH_SCRIPTS)
+
+$(outdir)/%: %.pl
+       cat $< | $(sed-atvariables) > $@
+       chmod 755 $@
+
+#FIXME.  Check for bash?
+$(outdir)/%: %.sh
+       cat $< | $(sed-atvariables) > $@
+       chmod 755 $@
+
+
+$(outdir)/%: %.py
+       cat $< | $(sed-atvariables) > $@
+       chmod 755 $@
+
diff --git a/stepmake/stepmake/Substitute.make b/stepmake/stepmake/Substitute.make
new file mode 100644 (file)
index 0000000..d4f1840
--- /dev/null
@@ -0,0 +1,35 @@
+# Substitute.make
+
+include $(make-dir)/Substitute.make
+
+sed-endline = sed 's!$$!\\!'
+sed-newline = sed 's!$$!\n!'
+sed-quotes = sed "s!\'!\\\&!g"
+sed-quote-line = sed 's!.*$$!\"&\"!'
+
+date := $(shell date '+%d%b%y'|tr '[a-z]' '[A-Z]' )
+DATE = $(date)
+
+# for all FILE in AT_FILES:
+# substitute occurrences of @FILE@ with contents $(at-dir)BLA$(at-ext)
+sed-atfiles = cat $(foreach i, $(AT_FILES), \
+  | sed '/@$i@/r $(at-dir)$i$(at-ext)' | sed 's%@$i@%%g')
+
+# for all VAR in ATVARIABLES
+# substitute occurrences of @VAR@ with $(VAR)
+sed-atvariables = cat $(foreach i, $(ATVARIABLES), | sed 's!@$i@!$($i)!g')
+
+# these are obsolete
+# use ATVARIABLES
+sed-date=sed 's!@DATE@!${date}!g'
+sed-PACKAGE = sed 's!@PACKAGE@!${PACKAGE}!g'
+sed-bash = sed 's!@BASH@!$(BASH)!'
+sed-dir-datadir = sed 's!@DIR_DATADIR@!$(DIR_DATADIR)!'
+sed-package=sed 's!@package@!${package}!g'
+sed-perl = sed 's!@PERL@!$(PERL)!'
+sed-python = sed 's!@PYTHON@!$(PYTHON)!'
+sed-sh = sed 's!@SH@!$(SH)!'
+sed-shell = sed 's!@SH@!$(SHELL)!' | sed 's!@BASH@!$(BASH)!'
+sed-version= sed 's!@TOPLEVEL_VERSION@!${TOPLEVEL_VERSION}!g'
+sed-step-bindir = sed 's!@STEP_BINDIR@!$(pwd)/$(step-bindir)!'
+
diff --git a/stepmake/stepmake/Targets.make b/stepmake/stepmake/Targets.make
new file mode 100644 (file)
index 0000000..43d9877
--- /dev/null
@@ -0,0 +1,194 @@
+# title           generic make targets
+# file    make/Targets.make
+
+.PHONY : all clean config default dist doc doc++  exe help html lib TAGS\
+        po
+
+# target all:
+#
+all:    default
+       $(LOOP)
+
+
+# be careful about deletion.
+clean: localclean
+       -rm -f $(outdir)/*
+       $(LOOP)
+
+distclean: clean 
+       $(LOOP)
+       $(MAKE) local-distclean
+
+maintainerclean: 
+       $(LOOP)
+       $(MAKE) local-maintainerclean
+       $(MAKE) local-distclean
+
+new-po:
+       if test -r $(po-dir); then \
+         rm -f $(po-dir)/$(outdir)/$(package).po; \
+         touch $(po-dir)/$(outdir)/$(package).po; \
+       fi
+
+ifeq ($(strip $(depth)),.)
+po: new-po
+       $(LOOP)
+localpo:
+       @true
+else
+po: localpo
+       $(LOOP)
+ALL_PO_SOURCES = $(ALL_C_SOURCES) $(wildcard $(outdir)/*.hh) $(wildcard $(outdir)/*.cc)
+localpo:
+ifneq ($(strip $(ALL_PO_SOURCES)),)
+       @echo $(ALL_PO_SOURCES)
+       xgettext --c++ --default-domain=$(package) --join \
+        --output-dir=$(po-dir)/$(outdir) --add-comments \
+        --keyword=_ --keyword=_f $(ALL_PO_SOURCES)
+endif
+endif
+
+po-update: po
+       $(MAKE) -C $(po-dir) po-update
+
+show-po-changes:
+       $(MAKE) -C $(po-dir) show-po-changes
+
+# configure:
+#
+config:
+       ./$(depth)/configure
+#
+
+
+# target help:
+#
+generic-help:
+       @echo -e "\
+Makefile for $(PACKAGE_NAME) $(TOPLEVEL_VERSION)\n\
+Usage: $(MAKE) ["VARIABLE=value"]... [TARGET]\n\
+\n\
+Targets:\n"
+
+help: generic-help local-help
+       @echo -e "\
+  all         update everything\n\
+  clean       remove all genated stuff in $(oudir)\n\
+  config      rerun configure\n\
+  deb         build Debian package\n\
+  default     same as the empty target\n\
+  diff        generate patch: $(package)-$(TOPLEVEL_VERSION).diff.gz\n\
+  .           Options:\n\
+  .             from=0.1.74\n\
+  .             help==\n\
+  .             release==\n\
+  .             to=0.1.74.jcn2\n\
+  distclean   cleaner than clean (duh)\n\
+  doc         update all documentation\n\
+  doc++       make doc++ documentation\n\
+  exe         update all executables\n\
+  help        this help\n\
+  install     install programs and data (prefix=$(prefix))\n\
+  lib         update all libraries\n\
+  release     roll tarball and generate patch\n\
+  rpm         build RedHat package\n\
+  tar         same as dist\n\
+  TAGS        genarate tagfiles\n\
+  zip         build binary doze distribution\n\
+\n\
+Make may be invoked from any subdirectory\n\
+Note that all commands recurse into SUBSDIRS\n\
+"\
+#
+
+local-help:
+
+doc:
+#      $(MAKE) -C $(depth)/Documentation do-doc
+       $(MAKE) -C $(depth)/Documentation all
+
+
+# Ugh.  C++ specific.
+doc++:
+       (cd $(outdir); sh ../$(step-bindir)/tar-docxx.sh $(package)-$(TOPLEVEL_VERSION).tar.gz)
+
+
+
+check-state-vector:
+       if [ "`tail -1 $(state-vector)`" != "$(TOPLEVEL_VERSION)" ]; then\
+         echo $(TOPLEVEL_VERSION) >> $(state-vector); \
+       fi
+
+
+localdist: $(DIST_FILES) $(OUT_DIST_FILES) $(NON_ESSENTIAL_DIST_FILES)
+       $(LN) $(DIST_FILES) $(distdir)/$(localdir)
+
+#UGH UGH . make ifdef doesn't mix with string substitution semantics (late expansion vs. early expansion)
+# 
+       if [ "$(NON_ESSENTIAL_DIST_FILES)x" != "x" ] ; then \
+               $(LN) $(NON_ESSENTIAL_DIST_FILES) $(distdir)/$(localdir); \
+       fi
+       if [ "$(OUT_DIST_FILES)x" != "x" ] ; then \
+               mkdir $(distdir)/$(localdir)/out; \
+               $(LN) $(OUT_DIST_FILES) $(distdir)/$(localdir)/out; \
+       fi
+       $(foreach i, $(SUBDIRS), mkdir $(distdir)/$(localdir)/$(i); \
+           $(MAKE) distdir=../$(distdir) localdir=$(localdir)/$(i) -C $(i) localdist &&) true
+
+
+
+html: $(HTML_FILES)
+
+TAGS:
+       -if [ "$(TAGS_FILES)" != "" ]; then \
+               etags -CT $(TAGS_FILES) || \
+               ctags -h ".h.hh.tcc.icc" $(TAGS_FILES) $(ERROR_LOG); \
+       fi
+
+       $(LOOP)
+
+$(outdir)/version.hh: VERSION
+       sh ./$(step-bindir)/make-version.sh > $@
+
+
+# should this be in Rules?
+configure: configure.in aclocal.m4
+       autoconf - < $<> $@
+       chmod +x configure
+
+localclean:
+
+local-distclean:
+
+local-maintainerclean:
+
+install-strip:
+       $(MAKE) INSTALL="$(INSTALL) -s" install
+
+install: localinstall
+       $(LOOP)
+
+localinstall:
+
+uninstall: localuninstall
+       $(LOOP)
+
+localuninstall:
+
+installextradoc:
+       $(INSTALL) -d $(prefix)/doc/$(package)
+       $(foreach i, $(EXTRA_DOC_FILES),\
+               cp -r $(i) $(prefix)/doc/$(package) &&) true
+
+WWW: local-WWW
+       $(LOOP)
+
+include $(stepdir)/Package.make
+include $(make-dir)/Targets.make
+
+include $(outdir)/dummy.dep $(DEP_FILES)
+
+$(outdir)/dummy.dep:
+       -mkdir $(outdir)
+       touch $(outdir)/dummy.dep
+
diff --git a/stepmake/stepmake/Template.make b/stepmake/stepmake/Template.make
new file mode 100644 (file)
index 0000000..739a02a
--- /dev/null
@@ -0,0 +1,50 @@
+# THIS IS A TEMPLATE FOR SUB-PROJECT MAKEFILES
+# /Makefile
+
+# subdir level:
+#
+depth = ..
+#
+
+# identify module:
+#
+NAME = 
+#
+
+# descent order into subdirectories:
+#
+SUBDIRS =
+#
+
+# dependencies and linkage of custom libraries:
+#
+
+MODULE_LIBES = # $(depth)/lib $(depth)/flower
+#
+
+# list of extra distribution files:
+# Makefile, C++ and pod are dist'ed automatically
+EXTRA_DIST_FILES = 
+#
+
+# bootstrap stepmake:
+#
+include $(depth)/make/Stepmake.make 
+#
+
+# module compile settings: (not generally needed!)
+#
+EXTRA_CFLAGS =
+EXTRA_CXXFLAGS =
+EXTRA_LDFLAGS =
+#
+
+# main target of this module:
+#
+default: $(EXECUTABLE)
+# default: $(LIBRARY)
+#
+
+# EXECUTABLES=
+# include $(stepmake)/Executable.make
+
diff --git a/stepmake/stepmake/Texinfo_rules.make b/stepmake/stepmake/Texinfo_rules.make
new file mode 100644 (file)
index 0000000..a1f223b
--- /dev/null
@@ -0,0 +1,41 @@
+# Texinfo_rules.make
+
+.SUFFIXES: .1 .html .texinfo
+
+texi2man = $(step-bindir)/out/texi2man $< $@
+texi2html =\
+    rm -f $@.urg;\
+    cat $< | sed "s!@include.*!!" > $@.urg;\
+    $(TEXI2HTML) $@.urg;\
+    rm -f $@.urg;\
+    mv $(@F).urg.html $@;\
+    rm -f $(@F:%.html=%.html.urg_toc.html);\
+    add-URLs $@
+
+$(outdir)/%.1: %.texinfo
+       $(texi2man)
+
+# $(outdir)/%.info: %.texinfo
+#      $(MAKEINFO) -o $@ $<
+
+$(outdir)/%.info: $(outdir)/%.texinfo
+       $(MAKEINFO) -o $@ $<
+
+# $(outdir)/%.html: %.texinfo
+#      $(texi2html)
+#      add-html-footer --index $(depth)/../index.html $@
+
+# texi2html is as broken as pod2html 5004 :-) 
+# we'll have to use pod2html 5003 for now.
+# don't burn your .pod sources!
+#
+$(outdir)/%.html: $(outdir)/%.texinfo
+       $(texi2html)
+       $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index $(depth)/../index.html $@
+
+$(outdir)/%.texinfo: %.texinfo
+       cp $< $@
+
+$(outdir)/%.1: $(outdir)/%.texinfo
+       -$(texi2man)
+
diff --git a/stepmake/stepmake/Toplevel.make b/stepmake/stepmake/Toplevel.make
new file mode 100644 (file)
index 0000000..52d1256
--- /dev/null
@@ -0,0 +1,62 @@
+# -*-Makefile-*-
+# title           Toplevel.make
+
+# override Variables.make:
+# do not dist ./Makefile (is copied from make/Toplevel.make)
+# 
+DIST_FILES := $(EXTRA_DIST_FILES) 
+#
+
+localdist: configure 
+
+local-distclean: 
+       rm -f config.hh config.make Makefile config.cache \
+               config.status config.log index.html
+
+local-maintainerclean:
+       rm -f configure
+
+Makefile: make/Toplevel.make.in
+       chmod +w $@
+       echo "# WARNING WARNING WARNING WARNING" > $@
+       echo "# do not edit! this is generated from make/Toplevel.make.in" >> $@
+       cat $< >> $@
+       chmod -w $@
+
+htmldoc: 
+       $(MAKE) CONFIGSUFFIX='www' local-WWW
+       $(MAKE) CONFIGSUFFIX='www' -C Documentation WWW
+       rm -f `find . -name \*.html~ -print`
+       tar cfz $(outdir)/htmldoc.tar.gz  `find Documentation -type d -name 'out-www' -print` index.html $(shell ls *.gif $(ERRORLOG))
+
+
+# if you fix this, please fix yodl too!
+check-top-web:
+       $(MAKE) -C Documentation/topdocs WWW
+
+local-WWW: #index.html 
+
+index.html: check-top-web NEWS
+       $(sed-version) < Documentation/topdocs/$(outdir)/topweb.html > $@
+       $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=Documentation/top-docs/out-www/index.html $@
+
+WWW-clean:
+       $(MAKE) CONFIGSUFFIX='www' clean
+
+
+dist:  check-state-vector
+       rm -rf $(distdir)
+       -mkdir $(distdir)
+       $(MAKE) localdist $(distdir)
+       chmod -R a+r $(distdir)
+       chmod  a+x `find $(distdir) -type d -print` 
+       (cd ./$(depth)/$(outdir); $(TAR) cf - $(DIST_NAME) | gzip -9 > $(DIST_NAME).tar.gz)
+# ugh.
+# Can't compare "stage1" dist with "stage2" dist in this way?
+       -ln -f $(depth)/$(outdir)/$(distname).tar.gz $(release-dir)
+       rm -rf ./$(distdir)/
+
+local-help:
+       @echo -e "\
+  dist        roll tarball: $(outdir)/$(package)-$(TOPLEVEL_VERSION).tar.gz\n"
+
diff --git a/stepmake/stepmake/Variables.make b/stepmake/stepmake/Variables.make
new file mode 100644 (file)
index 0000000..59e84b2
--- /dev/null
@@ -0,0 +1,160 @@
+# title           generic variables
+# file    make/Variables.make
+#
+# do not change this file for site-wide extensions; please use 
+# make/$(outdir)/Site.make; 
+#
+# Any change in files in this directory (make/) would be distributed, if 
+# you do make dist 
+
+# directory names:
+
+# depth from group-dir
+# not eh, normally used
+DEPTH = $(depth)/$(package-depth)
+
+topdir := $(shell cd $(depth); pwd)
+pwd := $(shell pwd)
+
+
+ifdef CONFIGSUFFIX
+outdir=out-$(CONFIGSUFFIX)
+else
+outdir=out
+endif
+
+# derived names
+ifeq ($(distdir),)
+  distdir = $(depth)/$(outdir)/$(DIST_NAME)
+  DIST_NAME = $(package)-$(TOPLEVEL_VERSION)
+endif
+distname = $(package)-$(TOPLEVEL_VERSION)
+
+depdir = $(outdir)
+
+
+
+# obsolete?
+makeout = $(depth)/make/$(outdir)
+docout = $(depth)/Documentation/$(outdir)
+binout = $(depth)/bin/$(outdir)
+
+doc-dir = $(depth)/Documentation
+make-dir = $(depth)/make
+po-dir = $(depth)/po
+
+# -c is for copying
+INSTALL = $(stepdir)/../bin/install-sh -c
+
+# user settings:
+#
+include $(make-dir)/Variables.make
+include $(make-dir)/User.make
+#
+
+# urg
+# sort-out which of these are still needed
+#
+$(package)_bindir = $(depth)/bin
+step-bindir = $(depth)/$(stepmake)/bin
+abs-step-bindir = $(topdir)/$(stepmake)/bin
+#
+group-dir = $(shell cd $(DEPTH)/..; pwd)
+release-dir = $(group-dir)/releases
+patch-dir = $(group-dir)/patches
+#
+# i have in $HOME/.rpmrc
+#     topdir: /home/fred/usr/src/Redhat
+#
+rpm-sources = $(release-dir)
+rpm-build = $(group-dir)/RedHat/BUILD
+#
+
+# hmm
+configheader=$(outdir)/config.hh
+
+# need to be defined in local Makefiles:
+#
+FOOBAR = 
+# the version:
+#
+ifneq ($(MY_PATCH_LEVEL),$(FOOBAR))
+VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL).$(MY_PATCH_LEVEL)
+else
+VERSION=$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_LEVEL)
+endif
+
+ifneq ($(TOPLEVEL_MY_PATCH_LEVEL),$(FOOBAR))
+TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL).$(TOPLEVEL_MY_PATCH_LEVEL)
+else
+TOPLEVEL_VERSION=$(TOPLEVEL_MAJOR_VERSION).$(TOPLEVEL_MINOR_VERSION).$(TOPLEVEL_PATCH_LEVEL)
+endif
+state-vector = $(make-dir)/STATE-VECTOR
+#
+
+# clean file lists:
+#
+ERROR_LOG = 2> /dev/null
+SILENT_LOG = 2>&1 >  /dev/null
+date := $(shell date +%x)      #duplicated?
+
+# compile and link options:
+#
+ARFLAGS = ru
+
+INCLUDES =  -Iinclude -I$(outdir) $($(PACKAGE)_INCLUDES)
+LDFLAGS = $(ILDFLAGS) $(USER_LDFLAGS) $(EXTRA_LDFLAGS) $(MODULE_LDFLAGS) $($(PACKAGE)_LDFLAGS)
+
+MODULE_LIBES=$(addsuffix /$(outdir)/library.a, $(MODULE_LIBS))
+LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES)
+# urg: for windows ?
+# LOADLIBES = $(MODULE_LIBES) $($(PACKAGE)_LIBES) $(EXTRA_LIBES) -lstdc++
+#
+
+# macro compiler:
+#
+M4 = m4
+# 
+
+#
+LD_COMMAND = $(LD) $(LDFLAGS) -o $@
+#
+
+# dependencies:
+#
+depfile = $(depdir)/$(subst .o,.dep,$(notdir $@))#
+DODEP=rm -f $(depfile); DEPENDENCIES_OUTPUT="$(depfile) $(outdir)/$(notdir $@)"
+#
+
+
+# generic target names:
+#
+ifdef NAME
+EXECUTABLE = $(outdir)/$(NAME)$(EXE)
+else
+EXECUTABLE =
+endif
+
+EXECUTABLES = $(notdir $(EXECUTABLE))
+
+
+#
+
+#replace to do stripping of certain objects
+STRIPDEBUG=true 
+
+DIST_FILES=$(EXTRA_DIST_FILES) Makefile $(ALL_SOURCES)
+DOCDIR=$(depth)/$(outdir)
+
+
+STRIP=strip --strip-debug
+ifdef stablecc
+ STABLEOBS=$(addprefix $(outdir)/,$(stablecc:.cc=.o))
+endif
+
+# substitute $(STRIP) in Site.make if you want stripping
+DO_STRIP=true
+
+
+LOOP=$(foreach i,  $(SUBDIRS),  $(MAKE) -C $(i) $@ &&) true
+
diff --git a/stepmake/stepmake/WWW.make b/stepmake/stepmake/WWW.make
new file mode 100644 (file)
index 0000000..b4c2b27
--- /dev/null
@@ -0,0 +1,17 @@
+# WWW.make
+
+ly_examples=$(addprefix $(outdir)/, $(addsuffix .ly.txt, $(examples)))
+fly_examples=$(addprefix $(outdir)/, $(addsuffix .fly.txt, $(flexamples)))
+
+all_examples=$(flexamples) $(examples)
+
+ps_examples=$(addprefix $(outdir)/, $(addsuffix .ps.gz, $(all_examples)))
+gif_examples=$(addprefix $(outdir)/, $(addsuffix .gif, $(all_examples)))
+
+html_subdirs=$(addprefix --subdirs ,$(SUBDIRS))
+
+## UGH!  lily specific
+local-WWW: $(ly_examples) $(fly_examples) $(ps_examples) $(gif_examples)
+       (cd $(outdir); $(PYTHON) ../$(buildscripts)/mutopia-index.py --package=$(topdir) --prefix=../ --suffix=/$(outdir) $(html_subdirs) $(all_examples))
+       $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=$(depth)/$(outdir)/index.html $(outdir)/index.html
+
diff --git a/stepmake/stepmake/Yodl_rules.make b/stepmake/stepmake/Yodl_rules.make
new file mode 100644 (file)
index 0000000..34542d3
--- /dev/null
@@ -0,0 +1,26 @@
+# Yodl_rules.make
+
+.SUFFIXES: .1 .5 .7 .dvi .html .latex .ps .texinfo .txt .yo
+
+$(outdir)/%.1: %.yo
+       $(YODL2MAN) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.5: %.yo
+       $(YODL2MAN)  -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.7: %.yo
+       $(YODL2MAN) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.html: %.yo
+       $(YODL2HTML) -doutdir=$(outdir) --live-data=3 -o $@ $<
+       $(PYTHON) $(step-bindir)/add-html-footer.py --package=$(topdir) --index=$(depth)/../index.html $@ $(wildcard $(basename $@)[0-9][0-9].html)
+
+$(outdir)/%.latex: %.yo
+       $(YODL2LATEX) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.texinfo: %.yo
+       $(YODL2TEXINFO) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
+$(outdir)/%.txt: %.yo
+       $(YODL2TXT) -doutdir=$(outdir) --live-data=3 -o $@ $<
+
index 367d4f6ebcb64b86802759ef76a54d01c648d4b9..3b22c6a630f53e30fef2644580c66b2f438d9b76 100644 (file)
@@ -1,47 +1,19 @@
-# project  LilyPond -- the musical typesetter
 # title           makefile for test
-# file    test/Makefile 
-#
-# Copyright (c) 1997 by
-#      Jan Nieuwenhuizen <jan@digicash.com>
-#      Han-Wen Nienhuys <hanwen@stack.nl>
-#
-
-# subdir level:
-#
-depth = ..
-#
-
-# generic variables:
-#
-include ./$(depth)/make/Variables.make 
-#
+# test/Makefile
 
-# identify module:
-#
-NAME = test
-MODULE_NAME = test
+depth = ..
 
-# descent order into subdirectories:
-#
-SUBDIRS =
-#
+NAME = lily-test
+MODULE_NAME = lily-test
 
-include ./$(depth)/make/Files.make
+MODULE_CXXFLAGS = -I$(depth)/flower/include -I$(depth)/flower -I$(depth)/lily/include -I$(depth)/lily
 
-# list of custom libraries:
-#
-CUSTOMLIBES = \
+include $(depth)/make/Stepmake.make
+include $(stepdir)/C++.make
 
-LOADLIBES +=
-#
+EXTRA_DIST_FILES = VERSION
 
-# main target of this module:
-#
-default: $(EXECUTABLE)
-include ./$(depth)/make/Files.make 
-include ./$(depth)/make/Targets.make
-include ./$(depth)/make/Rules.make
-#
+# default: $(EXECUTABLE)
 
+# include $(stepdir)/Executable.make
 
diff --git a/test/VERSION b/test/VERSION
new file mode 100644 (file)
index 0000000..97cdc4d
--- /dev/null
@@ -0,0 +1,6 @@
+MAJOR_VERSION = 0
+MINOR_VERSION = 0
+PATCH_LEVEL = 0
+# use to send patches, always empty for released version:
+MY_PATCH_LEVEL = 
+#
diff --git a/test/out/dummy.dep b/test/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 9a7713e43dba50d2ee7b3bdd10c6dd5e93603f66..13480c8146e221ac43df67de8e0cd0132626beae 100644 (file)
@@ -1,20 +1,14 @@
 # tex/Makefile
 
-# subdir level:
-#
 depth = ..
-#
-#
-include ./$(depth)/make/Include.make
-#
 
-# list of distribution files:
-# 
-TEXFILES = $(wildcard *.tex)
-DISTFILES = Makefile $(TEXFILES)
-#
+include $(depth)/make/Stepmake.make
+
+TEX_FILES = $(wildcard *.tex)
+DIST_FILES = Makefile $(TEX_FILES)
 
 INSTALLATION_DIR=$(TEXDIR)/lilypond
-INSTALLATION_FILES=$(TEXFILES)
+INSTALLATION_FILES=$(TEX_FILES)
+
+include $(stepdir)/Installfiles.make
 
-include $(depth)/make/Installfiles.make
index f7fd285720512a8172d0597ac3ba555a92f0e926..d00e359195085509972b0d8bff00eb66350d3774 100644 (file)
@@ -1,64 +1,87 @@
 % fetdefs.tex
 % encapsulating tex backend for auto-generated feta definitions
 
+\def\placebox#1#2#3{%
+        \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}}%
+
+
 \def\fetsixteendefs{%
-  \font\feta = feta16
-  \font\fetanummer = feta-nummer8
-  \font\dynfont = feta-din10 scaled \magstep 1
-  \font\bracefont = feta-braces16
-  \font\bracketfont = feta-brackets16
-  \font\fingerfont = feta-nummer4
+  \font\fetasixteen = feta16
+  \font\fetanummersixteen = feta-nummer8
+  \font\dynfontsixteen = feta-din10 scaled \magstep 1
+  \font\bracefontsixteen = feta-braces16
+  \font\fingerfontsixteen = feta-nummer4
+  \font\markfontsixteen = feta-nummer10
+\def\currentsize{sixteen}
 }
 
 \def\fettwentydefs{%
-  \font\feta = feta20
-  \font\fetanummer = feta-nummer10
-  \font\dynfont = feta-din10 scaled \magstep 2
-  \font\bracefont = feta-braces20
-  \font\bracketfont = feta-brackets20
-  \font\fingerfont = feta-nummer5
+  \font\fetatwenty = feta20
+  \font\fetanummertwenty = feta-nummer10
+  \font\dynfonttwenty = feta-din10 scaled \magstep 2
+  \font\bracefonttwenty = feta-braces20
+  \font\fingerfonttwenty = feta-nummer5
+  \font\markfonttwenty = feta-nummer12
+\def\currentsize{twenty}
 }
 
 \def\fettwentysixdefs{%
-  \font\feta = feta26
-  \font\fetanummer = feta-nummer12
-  \font\dynfont = feta-din10 scaled \magstep 3
-  \font\bracefont = feta-braces16
-  \font\bracketfont = feta-brackets20
-  \font\fingerfont = feta-nummer7
+  \font\fetatwentysix = feta26
+  \font\fetanummertwentysix = feta-nummer12
+  \font\dynfonttwentysix = feta-din10 scaled \magstep 3
+  \font\bracefonttwentysix = feta-braces16
+  \font\fingerfonttwenty = feta-nummer7
+  \font\markfonttwentysix = feta-nummer14
+\def\currentsize{twentysix}
 }
 
 \def\fetthirteendefs{%
-  \font\feta = feta13
-  \font\fetanummer = feta-nummer5
-  \font\dynfont = feta-din10 scaled \magstep 0
-  \font\bracefont = feta-braces16
-  \font\bracketfont = feta-brackets16
-  \font\fingerfont = feta-nummer3
+  \font\fetathirteen = feta13
+  \font\fetanummerthirteen = feta-nummer5
+  \font\dynfontthirteen = feta-din10 scaled \magstep 0
+  \font\bracefontthirteen = feta-braces16
+  \font\fingerfontthirteen = feta-nummer3
+  \font\markfonttwentysix = feta-nummer8
+\def\currentsize{thirteen}
 }
 
 \def\fetelevendefs{%
-  \font\feta = feta11
-  \font\fetanummer = feta-nummer5
-  \font\dynfont = feta-din10        % scaled \magstep-1
-  \font\bracefont = feta-braces16
-  \font\bracketfont = feta-brackets16
-  \font\fingerfont = feta-nummer3
+  \font\fetaeleven = feta11
+  \font\fetanummereleven = feta-nummer5
+  \font\dynfonteleven = feta-din10        % scaled \magstep-1
+  \font\bracefonteleven = feta-braces16
+  \font\fingerfonteleven = feta-nummer3
+  \font\markfonttwentysix = feta-nummer7
+\def\currentsize{eleven}
 }
 
-
 \def\sixteenfonts{\fetsixteendefs\cmrsixteen}
 \def\twentyfonts{\fettwentydefs\cmrtwenty}
 \def\twentysixfonts{\fettwentysixdefs\cmrtwenty}
 \def\elevenfonts{\fetelevendefs\cmreleven}
 \def\thirteenfonts{\fetthirteendefs\cmrthirteen}
 
+
+\def\bracefont{\csname bracefont\currentsize\endcsname}
+\def\fetanummer{\csname fetanummer\currentsize\endcsname}
+\def\dynfont{\csname dynfont\currentsize\endcsname}
+\def\fingerfont{\csname fingerfont\currentsize\endcsname}
+\def\markfont{\csname markfont\currentsize\endcsname}
+
+%\sixteenfonts
+%\twentysixfonts
+%\twentyfonts
+%\elevenfonts
+%\thirteenfonts
+
+\def\switchfont#1{\def\currentsize{#1}\csname feta\currentsize\endcsname}
+
 \def\fetdef#1#2{%
   \def#1{\hbox{\fetchar{#2}}}}
-\def\fetchar#1{\feta\char#1}
+\def\fetchar#1{\char#1}
 
 %\input feta16
-\input feta20
+%\input feta20
 
 % stacked numbers; overrules def in lilyponddefs
 % widest num should be .40 balkheight
   \else
     \vbox to 0pt{%
       \vss
-      \hbox to 0.45\staffheight{\hss\fetanummer #1\hss}%
+      \hbox to 0.45\staffheight{\hss \fetanummer #1\hss}%
       \nointerlineskip
-      \hbox to 0.45\staffheight{\hss\fetanummer #2\hss}%
+      \hbox to 0.45\staffheight{\hss \fetanummer #2\hss}%
       \vss}%
   \fi}
 
index 074eb7d1ce7466155f937066a7694e6e8268fe0d..7740d62496b6c4de9c193ac3e01bdfa5033eba9f 100644 (file)
@@ -157,7 +157,9 @@ staffheight 4 div /interline exch def
   exch
 } bind def
 %
-interline 2 div /bracket_b exch def
+% too fat for 20pt
+% interline 2 div /bracket_b exch def
+interline 3 div /bracket_b exch def
 interline 2 mul /bracket_w exch def
 staffrulethickness /stafflinethickness exch def
 stafflinethickness 2 mul /bracket_t exch def
index 00ad42fc3580cdecdc8e079729733833ee048dcd..08ad2b5190c718321312881761484bf337c65469 100644 (file)
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % macros to shorten other definitions
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\def\musicdef#1#2{\def#1{\musicchar{#2}}}
-\def\musicchar#1{\musicfnt\char#1}
-\def\rationalmultiply#1*#2/#3{\multiply #1 by #2 \divide #1 by #3}
-
-
-\def\maccentraise#1#2{\dimen0=\noteheight
-        \rationalmultiply\dimen0*#2%
-        \raise\dimen0\hbox{#1}}
-\def\maccentdef#1#2#3{\def#1{\maccentraise{\musicchar{#2}}{#3}}}
-\def\vertcenter#1{\vbox to 0pt{\vss #1\vss}}
-
 \def\musicmathdef#1#2{\def#1{\musicmathchar{#2}}}
 \def\musicmathchar#1{\musicmathfont\char#1}
 
@@ -53,8 +42,9 @@
 \parindent=0pt
 \newdimen\smallspace
 \newdimen\interlinedist
+
 \newdimen\stemthickness
-\newcount\n
+\newcount\n                     %duh. meaningful identifiers.
 \newdimen\staffheight
 \newdimen\notewidth
 \newdimen\noteheight
@@ -72,7 +62,7 @@
 
   \def\cmrtwenty{
           \font\smalltextfont=cmr8
-        \font\meterfont=cmbx15
+        \font\meterfont=cmbx12 at 15pt
           \font\textmusic=cmmi12
 %        \font\musicmathfont=cmsy10 %%Not used?? /MB
         \ifundefined{documentclass}
                 \font\italicfont=cmti10 scaled \magstep1
                 \font\boldfont=cmbx10
                 \font\largefont=cmbx12
-                \font\Largefont=cmbx14
-                \font\hugefont=cmbx15 scaled \magstep 2
+                \font\typewriterfont=cmtt10
+                %\font\Largefont=cmbx14
+                \font\Largefont=cmbx12 scaled \magstep 2
+                \font\hugefont=cmbx12 scaled \magstep 3
         \else
 %                \def\settext##1{{\normalfont\normalsize ##1}}
                 \def\settext##1{{\normalfont ##1}}
                 \def\setitalic##1{\textit{\normalsize ##1}}
                 \def\setbold##1{\textbf{\normalsize ##1}}
+                \def\settypewriter##1{\texttt{\normalsize ##1}}
                 \def\setlarge##1{\textbf{\large ##1}}
                 \def\setLarge##1{\textbf{\Large ##1}}
                 \def\sethuge##1{\textbf{\huge ##1}}
                 \font\normaltextfont=cmr8 %\textfont is a primitive
                 \font\italicfont=cmti9
                 \font\boldfont=cmbx8
+                \font\typewriterfont=cmtt9
                 \font\largefont=cmbx10
                 \font\Largefont=cmbx12
                 \font\hugefont=cmbx12 scaled \magstep 2
                 \def\settext##1{{\normalfont\footnotesize ##1}}
                 \def\setitalic##1{\textit{\small ##1}}
                 \def\setbold##1{\textbf{\footnotesize ##1}}
+                \def\settypewriter##1{\texttt{\normalsize ##1}}
                 \def\setlarge##1{\textbf{\normalsize ##1}}
                 \def\setLarge##1{\textbf{\large ##1}}
                 \def\sethuge##1{\textbf{\Large ##1}}
                 \font\italicfont=cmti7
                 \font\boldfont=cmbx7
                 \font\largefont=cmbx9
+                \font\typewriterfont=cmtt7
                 \font\Largefont=cmbx10
                 \font\hugefont=cmbx12
         \else
                 \font\normaltextfont=cmr6
                 \font\italicfont=cmti6
                 \font\boldfont=cmbx6
+                \font\typewriterfont=cmtt6
                 \font\largefont=cmbx8
                 \font\Largefont=cmbx9
                 \font\hugefont=cmbx10
 
 % stacked horizontal lines 
 
+\def\interscoreline{\vskip 16pt}
+\def\setdynamic#1{\dynfont #1}
+\def\setfinger#1{\fingerfont #1}
+\def\setnumber#1{\fetanummer #1}
+\def\setmark#1{\markfont #1}
+
+% big fat marks, if errors are detected.
+\def\columnerrormark{\placebox{-5pt}{0pt}{\bf C!}}
+\def\scorelineerrormark{\placebox{0pt}{-10pt}{\bf L!}}
+\def\errormark{{\bf E!}}
+\def\unknown{{\bf u}}
+
 \input dyndefs
 \input fetdefs
 
 \def\defaultthinbar{\thinbar{\staffheight}}
 \def\defaultthickbar{\thickbar{\staffheight}}
 %? what-s wrong with rightalign?
-\def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\defaultthinbar\hskip\smallspace\defaultthickbar}}
+\def\repeatstopbar{\rightalign{\repeatcolon\kern2\smallspace\defaultthinbar\kern\smallspace\defaultthickbar}}
 \def\repeatstartbar{\hbox{\defaultthickbar\kern\smallspace\defaultthinbar\kern2\smallspace\repeatcolon}}
 \def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\defaultthickbar\kern\smallspace\defaultthickbar\kern2\smallspace\repeatcolon}}
 
 %compatibility
+%urg
+\fetdef\repeatcolon{18}
 \def\repeatbar{\repeatstopbar}
 \def\startrepeat{\repeatstartbar}
 \def\repeatbarstartrepeat{\repeatstopstart}
 \def\maatstreep#1{\thinbar{#1}}
 \def\startbar#1{\leftalign{\thickbar{#1}\kern\smallspace\thinbar{#1}}}
 \def\finishbar#1{\rightalign{\thinbar{#1}\kern\smallspace\thickbar{#1}}}
+\def\fatdoublebar#1{\hbox{\phantom{\repeatcolon\kern2\smallspace}\thickbar{#1}\kern\smallspace\thickbar{#1}}}
 
 
 \def\stem#1#2{\hbox{\kern -.5\stemthickness
         \vrule width\stemthickness height#2 depth-#1}}
 
-\def\placebox#1#2#3{%
-        \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}%
-}
-
 
+% ugh
+% see e.g. input/test/beam-pos.ly
+%
+% something's wrong with the aligment; sometimes all symbols
+% look to be placed a bit too high (there's an ugly fix for
+% the staccato-dot in script.cc)
+% but this varies from line to line: it seems that xdvi
+% does some rounding; i can't really check this from screen on i
+% 600x600 res.
+%
 \def\rulesym#1#2{\dimen0=#1%
         \vrule height .5\dimen0 depth .5\dimen0 width #2}
+\def\shiftedrulesym#1#2{\dimen0=#1%
+        \vrule height .7\dimen0 depth .3\dimen0 width #2}
+\def\tinyrulesym#1#2{\dimen0=#1%
+        \vrule height .1\dimen0 depth .1\dimen0 width #2}
+%would be nice for checking alignment
+\def\openrulesym#1#2{\dimen0=#1%
+        \vbox to \dimen0{\vss%
+        \hbox{\vrule height .1\dimen0 width #2}%
+        \hbox{\vrule height .2\dimen0 width 0pt}%
+        \hbox{\vrule height .4\dimen0 width #2}%
+        \hbox{\vrule height .2\dimen0 width 0pt}%
+        \hbox{\vrule height .1\dimen0 width #2}%
+        \vss}}
+%\let\rulesym\shiftedrulesym
+%\let\rulesym\tinyrulesym
+%\let\rulesym\openrulesym
+
 \ifundefined{documentclass}
         \def\settext#1{\normaltextfont #1}
         \def\setitalic#1{\italicfont #1}
         \def\setbold#1{\boldfont #1}
+        \def\settypewriter#1{\typewriterfont #1}
         \def\setlarge#1{\largefont #1}
         \def\setLarge#1{\Largefont #1}
         \def\sethuge#1{\hugefont #1}
 \fi
-
-\def\setdynamic#1{\dynfont #1}
-\def\setfinger#1{\fingerfont #1}
-\def\setnumber#1{\fetanummer #1}
-
 % the interline symbol. Redefine to remove it.
 \def\defaultlineseparator{\vbox{\mussepline\vskip -5pt\mussepline}}
 \def\lineseparator{\defaultlineseparator}
 }
 
 
-\def\interscoreline{\vskip 16pt}
-        
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% big fat marks, if errors are detected.
-\def\columnerrormark{\placebox{-5pt}{0pt}{\bf C!}}
-\def\scorelineerrormark{\placebox{0pt}{-10pt}{\bf L!}}
-\def\errormark{{\bf E!}}
-\def\unknown{{\bf u}}
-
 \def\postheader{}
-\ifundefined{documentclass}
-        \footline={\ifnum\pageno=1
-        {\smalltextfont\mudelacopyright\hfil \LilyIdString
-        }\else{\hfil\the\pageno\hfil}\fi
-}\else
+
+
+
+
+\ifundefined{documentclass}%
+%        \ifundefined{nolilyfooter}
+% Can't nest \ifundefined ??
+        \footline={\ifnum\pageno=1\smalltextfont\mudelacopyright\hfil \LilyIdString
+                \else\hfil\the\pageno\hfil\fi}%
+        \advance\hoffset by -.6in
+ %       \fi%
+\else
+\let\nopagenumbers\relax
         %% FIXME
         \def\ps@plain{
                 \renewcommand{\@oddhead}{}%
                 \renewcommand{\@evenfoot}{}%
                 \renewcommand{\@evenhead}{}%
-                \renewcommand{\@oddfoot}{\ifnum\thepage=1
-        {\hfil \LilyIdString
-        }\else{foo\hfil\the\pageno\hfil}\fi}}
+                \renewcommand{\@oddfoot}{%
+                        \ifnum\thepage=1{\hfil \LilyIdString}%
+                        \else{%
+                                foo\hfil\the\pageno\hfil}%
+                        \fi}}
         \def\ps@empty{
                 \renewcommand{\@oddhead}{}%
                 \renewcommand{\@evenfoot}{}%
                 \renewcommand{\@evenhead}{}%
-                \renewcommand{\@oddfoot}{\ifnum\thepage=1
-        {\hfil \LilyIdString
-        }\else{foo\hfil\the\pageno\hfil}\fi}}
+                \renewcommand{\@oddfoot}{%
+                        \ifnum\thepage=1{\hfil \LilyIdString}%
+                        \else{foo\hfil\the\pageno\hfil}%
+                        \fi}}%
 \fi
-
+\nopagenumbers
 
 % debugging stuff:
 % \vbox to 0pt{\vskip .5cm \hruler{48}{3pt}\vss}
diff --git a/tex/mudela-book.tex b/tex/mudela-book.tex
new file mode 100644 (file)
index 0000000..5df5c77
--- /dev/null
@@ -0,0 +1,34 @@
+
+\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{}
diff --git a/tex/out/dummy.dep b/tex/out/dummy.dep
deleted file mode 100644 (file)
index e69de29..0000000
index 420f5fe9ac247bc1ac52e4aaf122f30302147524..51df6979e71724cd23abb7f16e055039795bb9b4 100644 (file)
 \def\theinstrument{}
 \def\theopus{}
 \def\thepiece{}
+\def\themetre{}
+\def\thepoet{}
 %
 % duh.  LaTeX has a \title too.
-\renewcommand*{\title}[1]{\def\thetitle{#1\\}}
-\newcommand*{\subtitle}[1]{\def\thesubtitle{#1\\}}
-\newcommand*{\composer}[1]{\def\thecomposer{#1\\}}
+\renewcommand*{\title}[1]{\def\thetitle{#1}}
+\newcommand*{\subtitle}[1]{\def\thesubtitle{#1}}
+\newcommand*{\composer}[1]{\def\thecomposer{#1}}
 \newcommand*{\arranger}[1]{\def\thearranger{#1}}
 \newcommand*{\instrument}[1]{\def\theinstrument{#1}}
 \newcommand*{\opus}[1]{\def\theopus{#1}}
 \newcommand*{\piece}[1]{\def\thepiece{#1}}
+\newcommand*{\metre}[1]{\def\themetre{#1}}
+\newcommand*{\poet}[1]{\def\thepoet{#1}}
 %
-\newcommand*{\mudelatitle}[1]{\def\thetitle{#1\\}}
-\newcommand*{\mudelasubtitle}[1]{\def\thesubtitle{#1\\}}
-\newcommand*{\mudelacomposer}[1]{\def\thecomposer{#1\\}}
+\newcommand*{\mudelatitle}[1]{\def\thetitle{#1}}
+\newcommand*{\mudelasubtitle}[1]{\def\thesubtitle{#1}}
+\newcommand*{\mudelacomposer}[1]{\def\thecomposer{#1}}
 \newcommand*{\mudelaarranger}[1]{\def\thearranger{#1}}
 \newcommand*{\mudelainstrument}[1]{\def\theinstrument{#1}}
 \newcommand*{\mudelaopus}[1]{\def\theopus{#1}}
 \newcommand*{\mudelapiece}[1]{\def\thepiece{#1}}
+\newcommand*{\mudelametre}[1]{\def\themetre{#1}}
+\newcommand*{\mudelapoet}[1]{\def\thepoet{#1}}
 %
-\def\makelilytitle
-{
-  {\center\bfseries\center\sethuge{\thetitle}}
-        \par
-       {\center\bfseries\setLarge{\thesubtitle}}
+%
+\def\mudelanull{}%
+%
+\def\makelilytitle{%
+  \begin{center}
+        \bfseries
+        \ifx\mudelanull\thetitle\else\sethuge{\thetitle}\\ \fi
+        \ifx\mudelanull\thesubtitle\else\setLarge{\thesubtitle}\\ \fi
+  \end{center}
   \bigskip
-  {\flushright\setlarge{\normalfont\scshape\thecomposer}\par}
   % urg
   \edef\saveparskip{\parskip}\parskip-5mm
-  {\flushright\settext{\theopus}\par}
-  {\flushright\settext{\thearranger}\par}
+  \begin{minipage}[t]{0.45\textwidth}
+        \ifx\mudelanull\thepoet\else\settext{\thepoet}\\ \fi
+        \ifx\mudelanull\themetre\else\settext{\themetre}\\ \fi
+  \end{minipage}\hspace*{\fill}
+  \begin{minipage}[t]{0.45\textwidth}
+      \begin{flushright}
+          \ifx\mudelanull\thecomposer\else\setlarge{\normalfont\scshape\thecomposer}\\ \fi
+          \ifx\mudelanull\theopus\else\settext{\theopus}\\ \fi
+          \ifx\mudelanull\thearranger\else\settext{\thearranger}\\ \fi
+        \end{flushright}%
+  \end{minipage}\par
   \parskip\saveparskip
   {\center\setlarge{\theinstrument}\par}
   {\flushleft\setLarge{\normalfont\scshape\thepiece}}
+  \leavevmode
 }
 \def\makelilypiecetitle
 {
diff --git a/vimrc b/vimrc
index b8123fcb10ca80d3cdf42d7bbbd545d8daab8edb..76e16104ebbc489c6a5a20b0ddef8a88311cc48e 100644 (file)
--- a/vimrc
+++ b/vimrc
@@ -18,10 +18,14 @@ map \e[20~ :w\r:se makeprg=make\ -k\r:make
 map \e[21~ :w\r:se makeprg=lilypond\ %:t\r:make\r
 "
 " F11 check buffer for quarts
-map \e[23~ :w\r:se makeprg=lilypond\ -Q%:t\r:make\r
+map \e[23~ :w\r:se makeprg=lilypond\ -Q\ %:t\r:make\r
+"
+" shift F10: run buffer through lily -M
+map \e[34~ :w\r:se makeprg=lilypond\ -M\ %:t\r:make\r
 "
 "
 " errorformat for lily (with columns) and gcc
 " (how to see multiple-line error messages?)
 "
 se errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,In\ file\ included\ from\ %f:%l:,\^I\^Ifrom\ %f:%l%m
+