summaryrefslogtreecommitdiff
path: root/support/w2latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/w2latex
Initial commit
Diffstat (limited to 'support/w2latex')
-rw-r--r--support/w2latex/Doc/W2LaTeX.aux28
-rw-r--r--support/w2latex/Doc/W2LaTeX.dvibin0 -> 41720 bytes
-rw-r--r--support/w2latex/Doc/W2LaTeX.log64
-rw-r--r--support/w2latex/Doc/W2LaTeX.tex559
-rw-r--r--support/w2latex/Doc/W2LaTeX.toc27
-rw-r--r--support/w2latex/Doc/w2latexuser.tex863
-rw-r--r--support/w2latex/EXEMPLES/11word.rtf24
-rw-r--r--support/w2latex/EXEMPLES/12word.rtf20
-rw-r--r--support/w2latex/EXEMPLES/13word.rtf30
-rw-r--r--support/w2latex/EXEMPLES/14word.rtf21
-rw-r--r--support/w2latex/EXEMPLES/20word.aux1
-rw-r--r--support/w2latex/EXEMPLES/20word.dvibin0 -> 1440 bytes
-rw-r--r--support/w2latex/EXEMPLES/20word.log172
-rw-r--r--support/w2latex/EXEMPLES/20word.rtf13
-rw-r--r--support/w2latex/EXEMPLES/20word.tex111
-rw-r--r--support/w2latex/EXEMPLES/2word.rtf13
-rw-r--r--support/w2latex/EXEMPLES/3word.rtf9
-rw-r--r--support/w2latex/EXEMPLES/4word.rtf10
-rw-r--r--support/w2latex/EXEMPLES/5word.rtf12
-rw-r--r--support/w2latex/EXEMPLES/6word.rtf10
-rw-r--r--support/w2latex/EXEMPLES/7word.rtf26
-rw-r--r--support/w2latex/EXEMPLES/8word.rtf32
-rw-r--r--support/w2latex/EXEMPLES/99word.rtf25
-rw-r--r--support/w2latex/EXEMPLES/9word.rtf15
-rw-r--r--support/w2latex/EXEMPLES/All_About_Grep.rtf407
-rw-r--r--support/w2latex/EXEMPLES/BDwais.rtf100
-rw-r--r--support/w2latex/EXEMPLES/DOgurevich.rtf17
-rw-r--r--support/w2latex/EXEMPLES/DOjervell.rtf25
-rw-r--r--support/w2latex/EXEMPLES/DOleivant-2.rtf16
-rw-r--r--support/w2latex/EXEMPLES/DOliste.rtf56
-rw-r--r--support/w2latex/EXEMPLES/DOmartin-lof.rtf18
-rw-r--r--support/w2latex/EXEMPLES/Dyckhoff.rtf33
-rw-r--r--support/w2latex/EXEMPLES/RTF-Spec.rtf699
-rw-r--r--support/w2latex/EXEMPLES/Symbol.rtf7
-rw-r--r--support/w2latex/EXEMPLES/Texte.rtf6
-rw-r--r--support/w2latex/EXEMPLES/Users_Guide.rtf268
-rw-r--r--support/w2latex/EXEMPLES/chap1.rtf387
-rw-r--r--support/w2latex/EXEMPLES/chap2.rtf289
-rw-r--r--support/w2latex/EXEMPLES/chap3.rtf914
-rw-r--r--support/w2latex/EXEMPLES/chap4.rtf624
-rw-r--r--support/w2latex/EXEMPLES/chap5.rtf466
-rw-r--r--support/w2latex/EXEMPLES/corrig.rtf94
-rw-r--r--support/w2latex/EXEMPLES/corrig2.rtf97
-rw-r--r--support/w2latex/EXEMPLES/dyck.rtf38
-rw-r--r--support/w2latex/EXEMPLES/matrix.rtf10
-rw-r--r--support/w2latex/EXEMPLES/rtftohtml_overview.rtf63
-rw-r--r--support/w2latex/EXEMPLES/sample_styles.rtf146
-rw-r--r--support/w2latex/german/ascii.c509
-rw-r--r--support/w2latex/german/changes.de18
-rw-r--r--support/w2latex/german/changes.wh24
-rw-r--r--support/w2latex/german/pcansi.rtf77
-rw-r--r--support/w2latex/german/rtf.y3027
-rw-r--r--support/w2latex/german/tab.c8897
-rw-r--r--support/w2latex/rtf.ascii.c443
-rw-r--r--support/w2latex/rtf.context.c182
-rw-r--r--support/w2latex/rtf.fields.c143
-rw-r--r--support/w2latex/rtf.fonts.c246
-rw-r--r--support/w2latex/rtf.formule.c333
-rw-r--r--support/w2latex/rtf.lex.c744
-rw-r--r--support/w2latex/rtf.lex.h59
-rw-r--r--support/w2latex/rtf.math.c337
-rw-r--r--support/w2latex/rtf.motcom.h615
-rw-r--r--support/w2latex/rtf.tab.c8895
-rw-r--r--support/w2latex/rtf.y3025
64 files changed, 34439 insertions, 0 deletions
diff --git a/support/w2latex/Doc/W2LaTeX.aux b/support/w2latex/Doc/W2LaTeX.aux
new file mode 100644
index 0000000000..393848eba3
--- /dev/null
+++ b/support/w2latex/Doc/W2LaTeX.aux
@@ -0,0 +1,28 @@
+\relax
+\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {1}Consid{é}rations G{é}n{é}rales}{3}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.1}Les diff{é}rents types de tokens}{3}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.2}La structure d'un mot de commande RTF}{4}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.3}Les diff{é}rents {é}tats}{4}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.4}L'analyseur lexical}{5}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.5}Le texte}{6}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.6}Les environnements}{6}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.7}Les formules}{7}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.8}Les Fontes}{7}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.9}L'ent{ê}te {\string\prm\space L\kern -.36em\raise .3ex\hbox {\string\psc\space a}\kern -.15em T\kern -.1667em\lower .7ex\hbox {E}\kern -.125emX}}{8}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.10}Les tableaux}{8}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.11}Autres objets}{9}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.12}Images}{9}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.13}Am{é}liorations {à} r{é}aliser}{9}}
+\@writefile{toc}{\string\contentsline\space {subsection}{\string\numberline\space {1.14}Comment r{é}aliser des extensions}{9}}
+\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {2}Fichiers sources et fonctions incluses.}{10}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.1} rtf.lex.c }{10}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.2} rtf.formule.c }{10}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.3} rtf.fonts.c }{11}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.4} rtf.context.c }{11}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.5} rtf.ascii }{12}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.6} rtf.fields.c }{12}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.7} rtf.output }{12}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.8} rtf.tab.c }{12}}
+\@writefile{toc}{\string\contentsline\space {subsubsection}{\string\numberline\space {2.0.9} rtf.motcom.h }{12}}
+\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {3}Documents de R{é}f{é}rence}{13}}
+\@writefile{toc}{\string\contentsline\space {section}{\string\numberline\space {4}Disclaimer}{14}}
diff --git a/support/w2latex/Doc/W2LaTeX.dvi b/support/w2latex/Doc/W2LaTeX.dvi
new file mode 100644
index 0000000000..a2073d5fc1
--- /dev/null
+++ b/support/w2latex/Doc/W2LaTeX.dvi
Binary files differ
diff --git a/support/w2latex/Doc/W2LaTeX.log b/support/w2latex/Doc/W2LaTeX.log
new file mode 100644
index 0000000000..2689cd6104
--- /dev/null
+++ b/support/w2latex/Doc/W2LaTeX.log
@@ -0,0 +1,64 @@
+This is MLTeX, Version 3.14+ (format=lplain 92.1.28) 29 JUL 1994 12:05
+**&latex W2LaTeX.tex
+(W2LaTeX.tex
+LaTeX Version 2.09 <14 January 1991>
+(/user/tex92/local/lib/tex/inputs/article.sty
+Document Style `article' <16 Mar 88>/multilingual 1-nov-89 +++
+(/user/tex92/local/lib/tex/inputs/art10.sty)
+\c@part=\count82
+\c@section=\count83
+\c@subsection=\count84
+\c@subsubsection=\count85
+\c@paragraph=\count86
+\c@subparagraph=\count87
+\c@figure=\count88
+\c@table=\count89
+)
+(/user/tex92/local/lib/tex/inputs/french.sty
+\@unused=\write3
+
+
+ Option de style FRENCH V3.00 -- 2 janvier 1992 -- (GUTenberg & co)
+(/user/tex92/local/lib/tex/inputs/english.sty)
+\c@chapter=\count90
+\@tempbi=\box25
+\@tempbii=\box26
+\@tempbiii=\box27
+\@tempbiiii=\box28
+\@tempbvi=\box29
+\@tempbvii=\box30
+\@openquotes=\box31
+\@hminusem=\dimen99
+\l@ngue=\count91
+\@ordinal=\count92
+) (W2LaTeX.aux)
+Warning: Font/shape `cmr/bx/sc ' undefined on input line 14.
+Warning: Using `cmr/bx/n' instead on input line 14.
+[1
+
+] (W2LaTeX.toc)
+\tf@toc=\write4
+ [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
+Overfull \hbox (20.36697pt too wide) in paragraph at lines 552--556
+[][]\cmr/m/n/10 Ce do-cu-ment se rap-porte au pro-gramme W2L[]T[]X, réa-lisé pa
+r Ja-vier Garmendia[],
+
+\hbox(8.14003+3.01385)x345.0, glue set - 1.0
+.\hbox(0.0+0.0)x15.0
+.\setlanguage1 (hyphenmin 2,3)
+.\cmr/m/n/10 C
+.\cmr/m/n/10 e
+.\glue 3.33333 plus 1.66666 minus 1.11111
+.etc.
+
+[14] (W2LaTeX.aux) )
+Here is how much of TeX's memory you used:
+ 553 strings out of 6648
+ 4621 string characters out of 52915
+ 38163 words of memory out of 262141
+ 2707 multiletter control sequences out of 9500
+ 19589 words of font info for 74 fonts, out of 72000 for 255
+ 31 hyphenation exceptions out of 607
+ 16i,7n,18p,279b,322s stack positions out of 300i,40n,60p,3000b,4000s
+
+Output written on W2LaTeX.dvi (14 pages, 41720 bytes).
diff --git a/support/w2latex/Doc/W2LaTeX.tex b/support/w2latex/Doc/W2LaTeX.tex
new file mode 100644
index 0000000000..51fa16a56a
--- /dev/null
+++ b/support/w2latex/Doc/W2LaTeX.tex
@@ -0,0 +1,559 @@
+\documentstyle[twoside,french]{article}
+\pagestyle{headings}
+
+\begin{titlepage}
+\title{\bf W2\LaTeX : Traducteur de Formats Descripteurs de Texte}
+\author{{Javier Garmendia} \\ {\scriptsize jgarmend@cyberspace.org}\\
+ {Pour le Centre International de Rencontres Math\'ematiques} \\
+ {Jean-Louis Maltret} \\ {\scriptsize jlm@cirm.univ-mrs.fr}}
+\date{Juin-Juillet 1994}
+\end{titlepage}
+
+\begin{document}
+
+\maketitle
+\begin{abstract}
+W2\LaTeX\ est un outil de conversion entre deux formats descripteurs de texte,
+permettant de traduire un document r\'edig\'e sous certaines versions de Word\copyright pour
+obtenir du code \LaTeX . Le document source pour W2\LaTeX\ devra \^etre, afin de faciliter la
+portabilit\'e, en RTF (Rich Text Format), un format propri\'etaire de
+Microsoft\copyright .
+\par
+W2\LaTeX\ n'utilise pas les fonctions cr\'e\'ees par Paul Dubois pour r\'ealiser des lecteurs RTF.
+ Ceci pr\'esente en partie l'avantage d'avoir une reconnaissance propre du document d'origine en
+suivant les sp\'ecifications de Microsoft pour Word 6.0.
+Il est constitu\'e
+d'un seul programme executable, sans feuilles de style, sans lybraries \`a installer. On peut attendre
+ de W2\LaTeX\ une conversion de documents contenant des param\`etres de pr\'esentation et de mise en page, mais
+aussi de formules math\'ematiques, et de certains types de tableaux.
+\par
+Ce document contient des informations techniques sur le programme.
+
+\end{abstract}
+\newpage
+\pagebreak
+\tableofcontents
+\newpage
+
+\section{Consid\'erations G\'en\'erales}
+\subsection{Les diff\'erents types de tokens}
+\par Le but de l'analyseur lexical est de d\'ecouper le texte \`a analyser en tokens
+qui seront transmis \`a la fonction r\'ealisant l'analyse gramaticale (que nous appellerons
+yyparse). Cette fonction v\'erifie la correction syntaxique du texte original, et d\'etermine \`a
+chaque instant
+quelle construction a \'et\'e r\'ealis\'ee, et ce que cela repr\'esente.
+\par
+ Nous avons declar\'e plusieurs sortes de tokens, car le type de leur valeur s\'emantique
+variera pour certains d'entre eux. Bison (et bien s\^ur Yacc aussi) imposent la limitation suivante au
+niveau de l'analyse semantique des tokens: \begin{quote} Seuls les tokens de type char pourront avoir
+une valeur s\'emantique permettant de les diff\'erentier gramaticalement. \end{quote}
+Ainsi, nous pourrons d\'eclarer des r\`egles
+de grammaire du style:
+\begin{quote}
+ expression: terme operateur terme;
+\end{quote}
+ O\`u op\'erateur est un {\bf +} ou un {\bf-}; Mais il est aussi possible de faire:
+\begin{quote}
+ expression: terme '+' terme $|$ terme '-' terme ;
+\end{quote}
+\par
+ Cette derni\`ere r\`egle prendra en compte la valeur du token interm\'ediaire pour d\'eterminer s'il s'agit
+d'une addition ou d'une soustraction. Par contre, il n'est pas possible de passer un mot de commande
+compos\'e de plusieurs caract\`eres ou ayant une structure plus complexe. Par exemple:
+\begin{quote}
+ racine: 'sqrt' expression;
+\end{quote}
+ n'est pas une r\`egle valable.
+\par
+ Il faut donc avoir un analyseur lexical qui fasse la relation entre les chaines de caract\`eres
+et des entiers, qui seront des tokens typ\'es comme des chaines de charact\`eres. Ceci afin de
+r\'ecup\'erer la valeur
+s\'emantique pour un traitement ult\'erieur. En reprenant l'exemple pr\'ec\'edent, on d\'eclarerait:
+\begin{quote}
+ \%token $<$char *$>$ SQRT\\
+ racine: SQRT expression;
+\end{quote}
+ et l'analyseur lexical attriburait:
+\begin{quote}
+ yylval="sqrt";\\
+ return SQRT;
+\end{quote}
+\par
+ Dans notre cas, nous aurons besoin de plusieurs types de tokens. Un type pour les mots de commande.
+Un autre pour les valeurs num\'eriques, ainsi qu'un type pour le texte. Nous rajouterons en plus un type
+pour les caract\`eres individuels, et un type pour les caract\`eres qui sont un mot de commande.
+ Cette declaration
+Bison se fait de la fa\c{c}on suivante:
+\begin{quote}
+ \%union \{ char calu; int numo; char* motcomm; char carcomm; char* pcdata; \}
+\end{quote}
+ dans le fichier de grammaire.
+ Ensuite il faudra typer les tokens.
+
+\subsection{La structure d'un mot de commande RTF}
+
+ Un mot de commande RTF est compos\'e des \'el\'ements suivants:
+\begin{itemize}
+\item Le caract\`ere "$\backslash$".
+\item Des caract\`eres alphab\'ethiques minuscules.
+\item Un \'eventuel param\`etre chiffr\'e.
+\item Un s\'eparateur.
+\begin{itemize}
+\item Dans le cas o\`u un param\`etre num\'erique est pr\'esent, il n'est pas n\'ecessaire d'avoir de
+s\'eparateur.
+\item Dans les autres cas, le s\'eparateur peut \^etre: "$\backslash$", "\{", "\}, ";", " ".
+\item Si le s\'eparateur est un espace " ", il sera ignor\'e. Sinon, le s\'eparateur sera transmis
+comme token \`a la prochaine analyse.
+\end{itemize}
+\end{itemize}
+
+\subsection{Les diff\'erents \'etats}
+
+ Lors de l'analyse du code RTF, il faut tenir compte de l'etat contextuel pour
+effectuer l'analyse lexicale differemment. Il y a plusieurs etats:
+\begin{enumerate}
+\item RTF:
+\begin{quote}
+ C'est le cas standard. On analyse et reconnait les mots de commande
+ et les passages de texte. On tiens compte aussi des caract\`eres de
+ commande comme d\`ecrit plus bas.
+\end{quote}
+\item Equation:
+\begin{quote}
+ Si on se trouve dans ce mode, il faut tenir en compte le fait que
+ l'on a modifi\'e le fichier d'entr\'ee, et qu'il s'agit maintenant du
+ fichier auxiliaire. Les caract\`eres de commande prennent une
+ signification particuliaire.
+\end{quote}
+\item Erreur:
+\begin{quote}
+ On a d\'etect\'e une erreur, et on analyse de fa\c{c}on \`a pouvoir la corriger.
+ Il faut alors sauter des morceaux de RTF (et donc perdre des informations)
+ mais de fa\c{c}on \`a en conserver le maximun.
+\end{quote}
+\end{enumerate}
+
+\subsection{L'analyseur lexical}
+
+ La structure de l'analyseur lexical est la suivante:
+\begin{enumerate}
+\item Si on est en \'etat de traitement des erreurs:
+\begin{enumerate}
+\item Si c'est le premier token demand\'e juste apr\`es la d\'etection de l'erreur:
+\begin{quote}
+ On avance jusqu'au debut du paragraphe suivant, et
+ on retourne le token PZERROR apr\`es avoir ins\'er\'e dans le fichier de sortie
+ le message d'erreur en \LaTeX .
+\end{quote}
+\item Si c'est le deuxi\`eme:
+\begin{quote}
+ On retourne PAR, et on anule l'\'etat de traitement des erreurs.
+\end{quote}
+\end{enumerate}
+\item On lit un caract\`ere dans le fichier d'entr\'ee:
+\item Si on est en mode Equation et si c'est un d\'elimiteur d'\'equation:
+\begin{quote}
+ On le retourne.
+\end{quote}
+\item Si on a trouv\'e la fin du fichier d'entr\'ee:
+\begin{enumerate}
+\item Si on \'etait en mode Equation (fichier d'entr\'ee auxiliaire), on replace le bon
+ fichier d'entr\'ee pour la suite.
+\item Sinon, on a termin\'e l'analyse.
+\end{enumerate}
+\item S'il s'agit d'un retour \`a la ligne:
+\begin{quote}
+ On l'ignore: RTF coupe les lignes comme il veut.
+\end{quote}
+\item S'il s'agit d'un caract\`ere d\'elimiteur: '\{' '\}' ';'
+\begin{quote}
+ On le retourne.
+\end{quote}
+\item S'il s'agit d'un d\'ebut de mot de commande: '$\backslash$'
+\begin{enumerate}
+\item On lit le reste de la commande.
+\item En tenant compte des caract\`eres sp\'eciaux: '\{' '\}' '$\backslash$' ';'
+ et en v\'erifiant que le mot de commande existe.
+\item Si le mot de commande n'existe pas ou n'est pas connu,
+ il est ignor\'e.
+\item S'il s'agit d'un caract\`ere de contr\^ole, on lit le param\`etre et on le passe a yyparse.
+\item On \'elimine les espaces utilis\'es comme d\'elimiteurs.
+\item Il faut tenir compte aussi des particularit\'es du mode \'equation.
+\end{enumerate}
+\item S'il s'agit d'un nombre et que le mot de commande lu pr\'ec\'edemment acceptait un param\`etre chiffr\'e:
+\begin{quote}
+ On lit les caract\`eres composant le nombre et on le passe a yyparse.
+\end{quote}
+\item Si ce n'est ni un mot de commande, ni un entier, ni un caract\`ere de contr\^ole simple, c'est du texte.
+\begin{enumerate}
+\item On le range dans un tampon, et on passe a yyparse un token PCDATA avec pour valeur s\'emantique
+ le pointeur sur le tampon.
+\item Il faut tenir compte aussi des particularit\'es du mode \'equation.
+\end{enumerate}
+\end{enumerate}
+\subsection{Le texte}
+
+ Les portions de texte pur 7bits sont consid\'er\'ees comme des tokens a part entiere et d'un seul bloc.
+Le programme W2\LaTeX\ poss\`ede des instructions permettant de v\'erifier que l'on n'exc\`ede pas la taille des tampons alloues,
+auquel cas le tampon est rallong\'e. Ceci permet de traiter les blocs de texte en suivant les sp\'ecifications, et o\`u la
+seule limitation de place serait due \`a un manque de m\'emoire de la machine (ou de m\'emoire allou\'ee par process). Ce texte sera
+transcrit tel quel dans le fichier \LaTeX\ de destination.
+\par
+ Une seule limitation est pr\'evue \`a cet effet: certains caract\`eres 7 bits ont une signification particuliaire pour
+\LaTeX . Ils seront traduits en leur equivalent par la fonction {\tt puretext}. (e.g.: \$ \_ / ...).
+
+\subsection{Les environnements}
+
+ La traduction des differents environnements est faite d\`es la reconnaissance d'un d\'ebut d'environnement. C'est \`a dire,
+que l'on n'attend pas la fin d'un paragraphe, ou d'une portion de texte dans un environnement particulier pour le transcrire.
+Ceci facilite le traitement Bison, mais se montre probl\'ematique parfois. Pour faciliter la t\^ache, nous avons implement\'e de nombreuses
+variables globales, \`a titre de FLAGS, qui sont lev\'ees au moment de l'\'etablissement d'un envirronnement, et qui sont baiss\'ees lors
+de la fermeture du mode en question.
+\par
+ Par exemple, d\`es que l'on trouve le mot de commande RTF 'qc' qui signifie que le paragraphe suivant va \^etre centr\'e, W2\LaTeX\
+produit sur le fichier de sortie l'equivalent \LaTeX : '\verb+\begin{center}+'. Ensuite, lors de la fin du paragraphe, il faut v\'erifier le
+contexte. Si RTF ne le pr\'ecise pas autrement, les paragraphes suivants seront aussi centr\'es, et donc on n'a rien \`a faire.
+Mais si on retrouve la commande RTF 'pard', il faut remettre tous les flags a 0, et fermer tous les environnements. Heureusement,
+le systeme de drapeaux fonctionne car en RTF on ne peut pas imbriquer deux environnements conflictifs. Et dans le cas o\`u des
+environnements de nature diff\'erente seraient pr\'esents simultan\'ement, ils seront hi\'erarchis\'es, et leur ordre de priorit\'e sera
+invers\'e lors de la fermeture. A titre d'exemple, le typage des caracteres (bold, italique ...) est moins prioritaire que le
+typage des paragraphes (centr\'e ...).
+
+\subsection{Les formules}
+
+ Les formules ne font pas partie de RTF lui-m\^eme, et les sp\'ecifications correspondantes sont fonction de l'aplication
+qui a g\'en\'er\'e le document. En cons\'equence, il faudra re-programmer les fonctions de traitement de ces champs pour des documents g\'en\'er\'es
+par d'autres aplications que Word 6.0 et que les versions 5.0 pour Mac et 2.0 pour PC qui sont celles qui ont d\'ej\`a \'et\'e impl\'ement\'ees.
+\par
+ Les formules font partie d'un ensemble de champs nom\'es a juste titre 'fields' dans les specifications RTF. Nous disposons
+des sp\'ecifications des fields de Word 6.0, qui ressemblent fortement (aux majuscules, symboles delimiteurs, et quelques mots de
+commande pr\`es) aux versions pr\'ec\'edentes de Word pour Mac et PC.
+\par
+ Remarquons qu'il existe toute une panoplie de 'fields' propres a Word qui n'ont pas \'et\'e consid\'er\'es dans la version
+actuelle de W2\LaTeX .
+
+
+\subsection{Les Fontes}
+
+ Nous n'avons pas tent\'e d'impl\'ementer de nouvelles polices de caract\`eres pour ne pas rentrer en conflict avec des configurations
+o\`u elles ne seraient pas pr\'esentes. Donc, toutes les polices sont transform\'ees en cmr, aux exceptions suivantes:
+\begin{enumerate}
+\item La police Symbol (Microsoft garanti (?) que cette police aura la m\^eme structure sur Mac que sur PC). Elle est enti\`erement
+retranscrite avec les \'equivalents \LaTeX\ lorsque ces \'equivalences ou approximations existent. Sinon, un symbole @ sera utilis\'e.
+\item Les polices non proportionelles (Courier...) qui seront transcrites en 'tt'.
+\begin{quote}
+ Cette correspondance entre les polices se trouve dans le fichier rtf.fonts.c dans le tableau EqFontsRTF\_TeX. Toute
+personalisation est ais\'ee par edition de ce fichier et recompilation. Les correspondances entre les symboles se font dans
+le m\^eme fichier au sein du tableau FontSymboles.
+\end{quote}
+\end{enumerate}
+ Dans le cas o\`u W2\LaTeX\ serait port\`e pour une utilisation sur un systeme avec d'autres polices ou symboles (cf AMS), l'\'edition
+de ces tableaux et des constantes d\'efinissant les tailles des dits tableaux devrait \^etre ais\'ee.
+\par
+ Il fallait se fixer une police par defaut. Et surtout une taille de police. Le choix a \'et\'e port\'e sur la valeur
+prise par Word par defaut lors de l'installation premi\`ere du logiciel: 10pt. Une table se trouvant dans ce m\^eme fichier (rtf.fonts.c)
+d\'ecrit la correspondance entre les tailles des polices en nombre de points et les param\`etres \LaTeX\ (\verb+\small, \Huge, ...+). Notons que cette table a \'et\'e
+\'etablie \`a partir des donn\'ees trouv\'ees dans le manuel de \LaTeX , correspondant au style 10pt.
+
+\subsection{L'ent\^ete \LaTeX}
+
+ La taille de la page par defaut est supos\'ee A4. La feuille de style \LaTeX\ correspondante \'etant un standard, ca nous a sembl\'e le
+plus judicieux. Toute modification peut se faire dans la grammaire (rtf.y) \`a la ligne decrivant la regle {\tt input}.
+\par
+ Les marges sont fix\'ees en fonction des param\`etres fournis par le fichier RTF, ainsi que les tailles des indentations,
+et quelques red\'efinitions de noms de polices standard.
+\par
+ Cette red\'efinition des polices est due \`a la mauvaise d\'ecoupe en blocs de RTF. En effet, certains parametres RTF sont donn\'es
+en plein milieu d'un bloc, et on ne sait pas quand est-ce qu'ils vont avoir fin. Ainsi, il est possible de transcrire des blocs sans
+d\'elimiteurs de d\'ebut et de fin de bloc. Pour faire en sorte que \LaTeX\ accepte ces changements, il faut forcer un changement de
+police compl\`etement. Vous trouverez une nouvelle instruction (la seule) introduite par W2\LaTeX\ qui d\'efinit simplement la police cmr10.
+Il s'agit de la commande '\verb+\pzrm+'.
+
+
+\subsection{Les tableaux}
+
+ Le c\^ot\'e le plus flou de W2\LaTeX\ se situe certainement au niveau des tableaux. S'ils sont traduits, leur structure de
+tableau n'est pas conserv\'ee. Ils ne seront pas encadr\'es (du moins proprement). Mais le {\em look} \LaTeX\ sera conserv\'e.
+\par
+ Ceci est du \`a la libert\'e suivante permise en RTF et pas en \LaTeX . En RTF on peut avoir une cellule d'un tableau qui
+soit compos\'ee de plusieurs paragraphes, ce qui (sauf erreur de ma part), n'est pas possible directment en \LaTeX\ . A moins de...
+transformer le contenu des tableaux en {\em minipages}. C'est ce que nous avons fait. Chaque cellule d'un tableau est une minipage.
+Ces minipages sont juxtapos\'ees sur une meme ligne pour former une ligne du tableau. Heureusement, lorsque \LaTeX\ centre toutes ces
+minipages (par defaut; on peut demander autre chose aussi :-) sur la ligne en cours, ce qui fait que l'aspect du tableau, hormis
+les cadres, sera le m\^eme.
+\par
+ De notables am\'eliorations sont \`a aporter sur ce point l\`a. Nous avons essay\'e de mettre ces minipages dans un tableau,
+mais le resulat n'\'etait pas celui esp\'er\'e, car les cellules dans RTF sont donn\'ees par leur largeur, et ca fait en g\'eneral
+d\'eborder le tableau de la page. Nous avons quand m\^eme laiss\'e l'option d'encadrer chacune des minipages \`a l'aide d'une fbox.
+Le resultat n'est pas beau. Pour l'obtenir, il suffit d'inclure \`a la fin de la ligne de commande l'option '-uglyframes':
+\begin{quote}
+ $>$ w2latex inputfile.rtf -uglyframes
+\end{quote}
+
+\subsection{Autres objets}
+
+ Toutes les r\`egles de grammaire (sauf ommission) correspondant \`a des objets OLE ou aux images,
+ont \'et\'e cod\'ees dans le fichier
+de grammaire: rtf.y. Ils ne sont pas trait\'es pour l'instant. Certains sont irr\'ealisables
+(inclusion de documents g\'en\'er\'es par des tableurs...).
+\par
+ Les formats \'etant extr\`emement nombreux, il faudrait toute une panoplie de convertisseurs.
+
+\subsection{Images}
+
+ Les images peuvent \^etre cod\'ees de nombreuses fa\c{c}ons, et sous diff\'erents formats.
+Les plus courrants sont le Windows Metafile
+et le format de MacDraw. Ne possedant pas les sp\'ecifications de ces formats d'images, nous laisserons
+un cadre blanc de la taille
+(approch\'ee) de l'image dans le document \LaTeX\ g\'en\'er\'e.
+\par
+ La taille des images \'etant cod\'ee parfois en points, parfois en twips, parfois en pixels...
+il est possible que pour des images
+g\'en\'er\'ees avec des logiciels de dessin particuliers, il y ait un probl\`eme de taille des cadres blancs.
+
+\subsection{Am\'eliorations \`a r\'ealiser}
+Certains points restent sans doute \`a am\'eliorer. En particulier le traitement des tableaux,
+les nouveaux fields, et d'\'eventuels nouveaux formats de formules pour des documents g\'en\'er\'es
+par d'autres applications ou d'autres versions de Word.
+\par
+Il serait int\'eressant de pouvoir disposer de traducteurs de formats d'images pour obtenir
+du post-script inclus dans le fichier \LaTeX\ obtenu. Ceci serait possible, car les images (quel
+que soit leur format, sont transcrites en hexad\'ecimal dans le fichier RTF. Il est donc possible
+d'en faire un fichier de sortie binaire.
+
+\subsection{Comment r\'ealiser des extensions}
+En ce qui concerne les formules, il suffit de voir le formatage diff\'erent des formules MAC ou PC.
+Ces deux formats ont \'et\'e trait\'es en parall\`ele, et un troisi\`eme format s'inserrerait de la
+m\^eme fa\c{c}on.
+\par
+Pour les tableaux, il faudrait peut-\^etre repartir de la grammaire. Et surtout trouver une astuce
+pour pouvoir tenir compte des encadrements et autres param\`etres de formatage.
+\par
+Les {\em fields} sont enti\`erement trait\'es dans le fichier {\tt rtf.fields.c}, qu'il suffirait
+de completer par de nouvelles fonctions les traitant, ainsi que leur d\'etection au m\^eme point que
+se fait celle des \'equations.
+
+
+
+\newpage
+\section{Fichiers sources et fonctions incluses.}
+
+
+\subsubsection{ rtf.lex.c }
+\begin{tabbing}
+xxxxxxxxxxxxxx\=xxx\=\kill
+Function name \>: \>{\tt valdefFD }\\
+Description \>: \>\begin{minipage}[t]{10cm}Attribue les valeurs par defaut aux differents champs
+ de formatage du document \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt puretext }\\
+Description \>: \>\begin{minipage}[t]{10cm}Lorsque l'on trouve une chaine de caract\`eres pure, il faut
+enlever les
+ retours \`a la ligne. En effet WORD coupe les lignes trop longues en plein milieu des mots !!
+ De m\^eme, il y a des caract\`eres ASCII 7 bits que \LaTeX\ consid\`ere comme des mots de commande. Il faut les
+ transformer dans son propre format. Ceci ne peut etre fait \`a l'interieur de la grammaire, car
+ le texte 7 bits est un token \`a part enti\`ere. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt getcode }\\
+Description \>: \>\begin{minipage}[t]{10cm}A partir de la chaine de caract\`eres d'un mot de commande
+renvoie son type et
+ l\`eve un flag en cas de non reconnaissance. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt Avance\_Champ }\\
+Description \>: \>\begin{minipage}[t]{10cm}Avance tant que le champ \`a ignorer n'est pas termin\'e
+\end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt Avance\_Sauve\_Champ }\\
+Description \>: \>\begin{minipage}[t]{10cm}Avance tant que le champ \`a ignorer n'est pas termin\'e et
+le sauve dans un fichier auxiliaire \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt Avance\_Sauve\_ChampMAC }\\
+Description \>: \>\begin{minipage}[t]{10cm}Avance tant que le champ \`a ignorer n'est pas termin\'e et
+le sauve dans un fichier auxiliaire.
+ Mais pour le MAC. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt yylex }\\
+Description \>: \>\begin{minipage}[t]{10cm}Analyseur Lexical d'un fichier RTF. Fournit les Tokens \`a
+yyparse. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt yyerror }\\
+Description \>: \>\begin{minipage}[t]{10cm}Fonction de traitement des erreurs. Elle est apell\'ee
+automatiquement par yyparse,
+ gener\'ee par Bision, lorsqu'une erreur s'est produite. Si on est au sein de l'ent\^ete,
+on positionne le flag de
+ pr\'esence de \LaTeX . Si on est dans le corps du texte, on positionne le flag d'Erreur,
+pour que l'analyseur
+ lexical ignore tout jusqu'au debut du prochain paragraphe. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt main }\\
+Description \>: \>\begin{minipage}[t]{10cm}Fonction Principale: Analyse les param\`etres, ouvre les
+flux, et apelle yyparse(). \end{minipage}\\
+\end{tabbing}
+
+
+\subsubsection{ rtf.formule.c }
+\begin{tabbing}
+xxxxxxxxxxxxxx\=xxx\=\kill
+Function name \>: \>{\tt moulineFormule }\\
+Description \>: \>\begin{minipage}[t]{10cm}Apr\`es d\'etection d'une formule, on la mouline de facon \`a rectifier les
+ absurdit\'es de formatage de RTF-Fields. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt moulineFormuleMAC }\\
+Description \>: \>\begin{minipage}[t]{10cm}Apr\`es detection d'une formule MAC, on la mouline de facon \`a rectifier les
+ absurdit\'es de formatage de RTF-Fields. Mais pour le Mac.\end{minipage}\\
+\end{tabbing}
+
+
+\subsubsection{ rtf.fonts.c }
+\begin{tabbing}
+xxxxxxxxxxxxxx\=xxx\=\kill
+Function name \>: \>{\tt nouvfonte }\\
+Description \>: \>\begin{minipage}[t]{10cm}Cr\'ee un nouveau maillon avec la description d'une fonte \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt cherchefonte }\\
+Description \>: \>\begin{minipage}[t]{10cm}A partir du num\'ero de fonte, cherche une fonte donn\'ee. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt parcoursfontes }\\
+Description \>: \>\begin{minipage}[t]{10cm}fonction de debuggage. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt chercheEqTeX }\\
+Description \>: \>\begin{minipage}[t]{10cm}Cherche un equivalent \LaTeX\ pour un nom de fonte RTF \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt EqTeXTaille }\\
+Description \>: \>\begin{minipage}[t]{10cm}D\'etermine la taille de police \`a utiliser, \`a partir de la donn\'ee RTF,
+ et retourne la chaine de caract\`eres \'equivalente TeX. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt printSymbol }\\
+Description \>: \>\begin{minipage}[t]{10cm}Imprime un Symbole, en fonction de l'environnement dans lequel on se trouve. \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt printText }\\
+Description \>: \>\\
+%**************************************************************************************************
+Function name \>: \>{\tt printApostrophe }\\
+Description \>: \>\\
+\end{tabbing}
+
+
+
+\subsubsection{ rtf.context.c }
+\begin{tabbing}
+xxxxxxxxxxxxxx\=xxx\=\kill
+Function name \>: \>{\tt nouvcontext }\\
+Description \>: \>\begin{minipage}[t]{10cm}Cr\'ee un nouveau maillon contexte \`a partir de sa description et retourne un
+ pointeur sur ce maillon \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt contextback }\\
+Description \>: \>\\
+%**************************************************************************************************
+Function name \>: \>{\tt parcourscontexts }\\
+Description \>: \>\begin{minipage}[t]{10cm}Parcours de la liste chain\'ee de contextes. (Debuggage); \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt endkeepcontext }\\
+Description \>: \>\begin{minipage}[t]{10cm}Termine le contexte courrant mais le garde en tant que contexte courrant.
+ Utile pour les Tableaux, car \LaTeX\ impose de terminer les environnements
+ avant de sortir de la minipage, alors que RTF ne le fait pas.
+ A utiliser suivi immediatement de showcontext... \end{minipage}\\
+%**************************************************************************************************
+Function name \>: \>{\tt showcontext }\\
+Description \>: \>\begin{minipage}[t]{10cm}Exprime les caracteristiques du contexte courrant. A utiliser en particulier
+ pour les tableaux apr\`es endkeepcontext \end{minipage}\\
+
+\end{tabbing}
+
+
+\subsubsection{ rtf.ascii }
+Ce fichier contient les tables de correspondance ASCII entre MAC, PC et \LaTeX .
+
+
+
+\subsubsection{ rtf.fields.c }
+\begin{tabbing}
+xxxxxxxxxxxxxx\=xxx\=\kill
+Function name \>: \>{\tt filtrefields }\\
+Description \>: \>\begin{minipage}[t]{10cm}Recup\`ere un champ field et le pr\'epare \`a \^etre analyse par yylex \end{minipage}\\
+\end{tabbing}
+
+
+
+\subsubsection{ rtf.output }
+Le fichier {\tt rtf.output} est g\'en\'er\'e par Bison si on l'ex\'ecute avec l'option {\tt -v}.
+Il d\'etaille l'\'etat de la grammaire et de ses r\`egles. Les conflicts qui existent actuellement
+sont dus au fait que la grammaire RTF n'est pas LALR1. Ils ne devraient pas causer de probl\`eme.
+Lors de l'impl\'ementattion de nouvelles r\`egles, il faudra veiller \`a ce que ce nombre n'augmente
+pas.
+
+
+\subsubsection{ rtf.tab.c }
+Il s'agit du fichier g\'en\'er\'e par Bison, et qui sera lui compil\'e pour obtenir l'ex\'ecutable.
+Pour le compiler:
+\begin{quote}
+ $>$cc -o w2latex rtf.tab.c
+\end{quote}
+et \c{c}a y est!
+
+
+\subsubsection{ rtf.motcom.h }
+Ce fichier contient la table de correspondance entre les mots de commande RTF et les tokens. Il s'agit des
+m\^emes mots, mais en majuscules. Lors de l'impl\'ementation de nouvelles r\`egles demandant de nouveaux
+tokens, il ne faut pas oublier de les r\'epertorier ici (et d'augmenter le nombre des \'el\'ements du tableau
+d\'efini dans l'ent\^ete du fichier.
+
+
+
+\newpage
+\section{Documents de R\'ef\'erence}
+
+\begin{itemize}
+\item BISON: The Yacc compatible Parser Generator
+\begin{quote}
+ Bison Version 1.20\\
+ By Charles Donnelly and Richard Stallman
+\end{quote}
+\item A Gentle Introduction to \TeX .
+\begin{quote}
+ Michael Doob\\
+ University of Manitoba
+\end{quote}
+\item Notes de Cous \LaTeX .
+\begin{quote}
+ Claude Gomez\\
+ INRIA
+\end{quote}
+\item Essential \LaTeX .
+\begin{quote}
+ Jon Warbrick
+\end{quote}
+\item \LaTeX : user's guide and Reference Manual
+\begin{quote}
+ Leslie Lamport\\
+ Addison-Wesley
+\end{quote}
+\item Microsoft Rich Text Format (RTF) Specification
+\begin{quote}
+ Microsoft\copyright \\
+ Application Note\\
+ RTF VErsion 1.3 1994
+\end{quote}
+\item Fields Reference
+\begin{quote}
+ Microsoft\copyright\ Word\copyright \\
+ Version 6.0
+\end{quote}
+\end{itemize}
+
+
+
+
+
+
+
+\newpage
+\section{Disclaimer}
+Ce document se rapporte au programme W2\LaTeX , r\'ealis\'e par Javier
+Garmendia\footnote{jgarmend@cyberspace.org}, et a \'et\'e r\'ealis\'e pour le Centre International de
+Rencontres Math\'ematiques de Luminy (Marseille), sous la direction de Jean-Louis
+Maltret\footnote{jlm@cirm.univ-mrs.fr}.
+
+\end{document}
+
+
diff --git a/support/w2latex/Doc/W2LaTeX.toc b/support/w2latex/Doc/W2LaTeX.toc
new file mode 100644
index 0000000000..edc2f3d22c
--- /dev/null
+++ b/support/w2latex/Doc/W2LaTeX.toc
@@ -0,0 +1,27 @@
+\contentsline {section}{\numberline {1}Consid{é}rations G{é}n{é}rales}{3}
+\contentsline {subsection}{\numberline {1.1}Les diff{é}rents types de tokens}{3}
+\contentsline {subsection}{\numberline {1.2}La structure d'un mot de commande RTF}{4}
+\contentsline {subsection}{\numberline {1.3}Les diff{é}rents {é}tats}{4}
+\contentsline {subsection}{\numberline {1.4}L'analyseur lexical}{5}
+\contentsline {subsection}{\numberline {1.5}Le texte}{6}
+\contentsline {subsection}{\numberline {1.6}Les environnements}{6}
+\contentsline {subsection}{\numberline {1.7}Les formules}{7}
+\contentsline {subsection}{\numberline {1.8}Les Fontes}{7}
+\contentsline {subsection}{\numberline {1.9}L'ent{ê}te {\prm L\kern -.36em\raise .3ex\hbox {\psc a}\kern -.15em T\kern -.1667em\lower .7ex\hbox {E}\kern -.125emX}}{8}
+\contentsline {subsection}{\numberline {1.10}Les tableaux}{8}
+\contentsline {subsection}{\numberline {1.11}Autres objets}{9}
+\contentsline {subsection}{\numberline {1.12}Images}{9}
+\contentsline {subsection}{\numberline {1.13}Am{é}liorations {à} r{é}aliser}{9}
+\contentsline {subsection}{\numberline {1.14}Comment r{é}aliser des extensions}{9}
+\contentsline {section}{\numberline {2}Fichiers sources et fonctions incluses.}{10}
+\contentsline {subsubsection}{\numberline {2.0.1} rtf.lex.c }{10}
+\contentsline {subsubsection}{\numberline {2.0.2} rtf.formule.c }{10}
+\contentsline {subsubsection}{\numberline {2.0.3} rtf.fonts.c }{11}
+\contentsline {subsubsection}{\numberline {2.0.4} rtf.context.c }{11}
+\contentsline {subsubsection}{\numberline {2.0.5} rtf.ascii }{12}
+\contentsline {subsubsection}{\numberline {2.0.6} rtf.fields.c }{12}
+\contentsline {subsubsection}{\numberline {2.0.7} rtf.output }{12}
+\contentsline {subsubsection}{\numberline {2.0.8} rtf.tab.c }{12}
+\contentsline {subsubsection}{\numberline {2.0.9} rtf.motcom.h }{12}
+\contentsline {section}{\numberline {3}Documents de R{é}f{é}rence}{13}
+\contentsline {section}{\numberline {4}Disclaimer}{14}
diff --git a/support/w2latex/Doc/w2latexuser.tex b/support/w2latex/Doc/w2latexuser.tex
new file mode 100644
index 0000000000..be054fbfeb
--- /dev/null
+++ b/support/w2latex/Doc/w2latexuser.tex
@@ -0,0 +1,863 @@
+%
+% This document was generated using
+% w2LaTeX
+% Bug Reports: jgarmend@cyberspace.org
+%
+
+\documentstyle[a4]{article}
+
+\parindent = 0 pt
+
+\oddsidemargin0cm
+
+\evensidemargin0cm
+
+\hoffset18pt
+
+\textwidth434pt
+
+\vsize=572pt
+
+\font\mathex=cmex10
+
+\font\pzrm=cmr10
+
+\pagestyle{myheadings}
+
+\begin{document}
+
+\par %
+\normalsize \pzrm \pzrm \normalsize \pzrm
+\par
+\par %
+\normalsize \pzrm
+\begin{center}
+{%
+\bf \LARGE \bf Word2\LaTeX\
+\par }%
+
+\end{center}
+
+\par %
+\normalsize \pzrm
+\begin{center}
+{%
+\bf \Large \bf Traducteur de Formats de Texte.
+\par
+\par }%
+
+\end{center}
+
+\par %
+\normalsize \pzrm
+\begin{center}
+Javier Garmendia,
+\par ES2I pour le:
+\par Centre International de Rencontres Math\'ematiques,
+\par Parc Scientifique de Luminy (Marseille).
+\par
+\par 14 Juillet 1994.
+\par
+\par
+\end{center}
+
+\par %
+\normalsize \pzrm
+\begin{center}
+Ce document a \'et\'e\ r\'edig\'e\ sous Word\copyright , et traduit en \LaTeX\ en utilisant Word2\LaTeX .
+\par
+\end{center}
+
+
+\par %
+\normalsize \pzrm
+\begin{center}
+{%
+\bf Abstract
+\par }%
+
+\par %
+
+\end{center}
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\leftskip = 18 pt
+\rightskip = 36 pt Word2\LaTeX\ est un outil de conversion de formats descripteurs de texte, permettant de traduire un document r\'edig\'e\ sous certaines versions de Word\copyright \ pour obtenir du code \LaTeX . Le but premier \'etant de convertir des documents issus du traitement de texte Word\copyright , le document source pour Word2\LaTeX\ sera sous l'un des formats de sortie de ce logiciel. En l'occurence, et pour faciliter la portabilit\'e, en RTF (Rich Text Format), un format propri\'etaire de Microsoft\copyright .
+\par
+\leftskip = 18 pt
+\rightskip = 36 pt
+\parindent = 18 pt
+Word2\LaTeX\ n'utilise pas les fonctions cr\'e\'ees par Paul Dubois pour r\'ealiser des lecteurs de RTF. Ceci pr\'esente en partie l'avantage d'avoir une reconnaissance propre du document d'origine. Il est constitu\'e\ d'un seul programme ex\'ecutable, sans feuilles de style, sans librairies \`a\ installer. Le but premier de Word2\LaTeX\ est de permettre la conversion de documents contenant des param\`etres de pr\'esentation et de mise en page, mais aussi de formules math\'ematiques, et de tableaux.
+\par
+\leftskip = 18 pt
+\rightskip = 36 pt
+\parindent = 18 pt
+
+\leftskip = 0 pt
+\rightskip = 0 pt
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\leftskip = 18 pt
+\rightskip = 36 pt Ce document pr\'esente les principales fonctionalit\'es de Word2\LaTeX , et indique comment l'obtenir et l'installer.
+\par
+\leftskip = 18 pt
+\rightskip = 36 pt
+\parindent = 18 pt
+
+\leftskip = 0 pt
+\rightskip = 0 pt
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+\newpage {%
+\bf \Large \bf 1. Introduction
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf
+\hspace{36pt}
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Ce document d\'ecrit le traducteur de RTF vers du \LaTeX . Il a \'et\'e\ \'ecrit en C. Cependant l'analyse grammaticale a \'et\'e\ r\'ealis\'ee en utilisant l'excellent g\'en\'erateur de compilateurs du GNU: Bison
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Ce traducteur:
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Permet de traduire tout ce qui est texte 'simple': caract\`eres en gras, italique, soulign\'e, caract\`eres sp\'eciaux de la police Symbol...
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\par %
+
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Conserve le plus pr\'ecisemment possible la mise en page: Largeur de la colonne de texte, justification, texte \`a\ droite, centr\'e, taille des tabulations et des retraits.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\par %
+
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Traduit les formules math\'ematiques, aussi bien \`a\ partir du format math\'ematique de Word sous PC, que celui de Word sous Macintosh. En effet, le codage des formules math\'ematiques ne se fait pas de la m\^eme fa\c{c}on sous les deux environnements.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\par %
+
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Traduit le plus pr\'ecisemment possible les caract\`eres accentu\'es, et caract\`eres sp\'eciaux pour leur \'equivalent ISO-LATIN-1. (\'e\`a\`e\^A\ \S \"o\ae \^A\^e\copyright {\cal Sun}@)
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\par %
+
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Conserve la structure des tableaux, mais ne les encadre pas. Ce point sera \'eventuellement am\'elior\'e\ dans des versions futures.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\par %
+
+\parindent = 18 pt
+$\bullet $\ G\`ere la taille des polices de caract\`eres, autant que possible.
+\par
+\parindent = 18 pt
+
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Pour all\'eger la distribution et faciliter le fonctionnement, le programme par d\'efaut traduit toute police du type Times en CMR et celles de type Helvetica, Courier en environnement 'typewriter'. La Section XYZ d\'ecrit l'installation de nouvelles polices.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\par %
+
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Poss\`ede de nombreuses limitations dues au nombre \'etonant de versions existantes de RTF. Ce point est consid\'er\'e\ dans la S\'ection 2.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\par %
+
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Peut \'evoluer (et j'esp\`ere qu'il le fera) facilement, gr\^ace \`a\ la structure gramaticale adopt\'ee. Les points restant en suspens sont d\'etaill\'es dans la Section XYZ.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf 2. Le Format d'Origine: Rich Text Format.}%
+
+\par %
+
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Word2\LaTeX\ a \'et\'e\ r\'ealis\'e\ sous la norme RTF publi\'ee par Microsoft, pour la version 6.0 et suivantes de son logiciel de traitement de textes: Word. Cependant, les exemples et tests r\'ealis\'es lors du d\'eveloppement de Word2\LaTeX\ sont issus des versions 2.0 pour PC, et 5.1 pour Macintosh. Ceci nous a permis, en particulier, de d\'etecter des incompatibilit\'es entre les versions pr\'ec\'edentes du format RTF.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Notons aussi que RTF est un format qui n'est pas uniquement g\'en\'er\'e\ par Word, mais aussi par d'autres traitements de texte fonctionnant sous diff\'erents environnements. L'avantage commun avec \LaTeX\ de la codification ASCII 7 bits permet une traduction avec Word2\LaTeX\ sous un environnement quelconque.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Seule limitation: les formules. La norme RTF 1.23 ne consid\`ere les formules qu'en tant que 'champs' ou 'fields' externes et propres \`a\ chaque traitement de texte. Il existe des sp\'ecifications correspondant aux {%
+\it fields}%
+\ pr\'esents dans Word 6.0. Le codage au sein des versions ant\'erieures de Word ayant \'et\'e\ diff\'erent, il est probable que certains documents ne puissent pas \^etre traduits de mani\`ere satisfaisante.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Voici un exemple des commandes RTF permettant d'\'ecrire l'int\'egrale de sin(x) entre 0 et 1:
+\par
+\parindent = 18 pt
+$\bullet $\ Version Macintosh 5.1:
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Version PC 2.0:
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Dans les Sp\'ecifications:
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Nous ne rentrerons pas dans le d\'etail des absurdit\'es et incorrections admises dans ce langage de description. Nous voulons simplement signaler que nous avons fait de notre mieux pour pouvoir relire les documents r\'ealis\'es ant\'erieurement \`a\ la version 6.0.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf 3. Mat\'eriel N\'ec\'essaire;\ Installation}%
+{%
+\Large
+\par
+\parindent = 18 pt
+}%
+{%
+\bf \Large \bf
+\hspace{36pt}
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Tout ce dont vous avez besoin pour installer et faire fonctionner Word2\LaTeX\ est un ordinateur avec un compilateur de langage C. En ce qui concerne Word2\LaTeX , vous n'avez m\^eme pas besoin d'avoir Word, ni m\^eme \LaTeX ! Les librairies de base (stdio.h, stdlib.h, string.h et malloc.h) devraient suffir pour la compilation de la version 1.0 de Word2\LaTeX .
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+D\'etarez, d\'ecompressez, d\'ezipez en fonction de l''environnement dans lequel vous vous trouvez, et compilez le fichier rtf.tab.c.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Sous Unix, tapez:
+\par
+\parindent = 18 pt
+
+\hspace{36pt}cc rtf.tab.c -o w2\LaTeX\
+\par
+\parindent = 18 pt
+ou mieux:
+\par
+\parindent = 18 pt
+
+\hspace{36pt}gcc rtf.tab.c -o w2\LaTeX\
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Vous n'avez pas besoin de Make, vous pouvez mettre l'ex\'ecutable o\`u\ vous voudrez. (Oui! en ce qui me concerne, vous pouvez le mettre dans /tmp !).
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+Le programme a \'et\'e\ test\'e\ sur Sun Solaris, SGI, IBM RS-6000 (AIX), Linux, DOS, et System 7.
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf
+\hspace{36pt}
+\par
+\parindent = 18 pt
+4. Utilisation de Word2\LaTeX\
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+Syntaxe:
+\par
+\parindent = 18 pt
+
+\hspace{36pt}\% w2\LaTeX\ $<$inputfile[.rtf]$>$ [-uglyframes]
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Dans cette premi\`ere version du programme, il n'y a qu'une option, qui sera d\'ecrite plus tard. Le fichier d'entr\'ee doit \^etre au format RTF (obtenu en sauvegardant sous Word avec l'option du menu: Save As...). Si tout se passe bien (et m\^eme s'il y a des erreurs), Word2\LaTeX\ g\'en\`ere un fichier \LaTeX\ appel\'e\ {%
+\it inputfile}%
+.tex.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Ce fichier de sortie poss\`ede une structure \LaTeX\ standard: le "documentstyle" est par d\'efaut 'report', et la taille de la page imprim\'ee A4. Dans des versions succ\'essives, on tachera de param\'etrer ceci.
+\par
+\parindent = 18 pt
+Les dimensions des marges et des tabulations par d\'efaut (qui sont fonction du fichier RTF d'origine), sont r\'egl\'es avant la directive "begin\{document\}".
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Un inconv\'enient majeur des traducteurs automatiques (et celui-ci n'est sans doute pas une exception \`a\ la r\`egle), c'est qu'ils ne traduisent correctement, et dans le meilleur des cas que 95\% des donn\'ees). Il faut donc en g\'en\'eral relire le fichier \LaTeX\ g\'en\'er\'e. Dans le meilleur des cas (o\`u\ aucune erreur ne s'est produite lors de la traduction), il faut quand m\^eme que le r\'esultat soit relativement lisible. Pour ce faire, nous avons d\'ecid\'e\ de placer le plus de "retours \`a\ la lgne" que possible. Pour ne pas casser la structure du fichier \LaTeX , de nombreuses lignes se terminent par des "\%", ce qui fait que \LaTeX\ ignore le reste de la ligne y compris le retour chariot.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf 5. Performances et Limitations de Word2\LaTeX .
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Dans la version 1.0 (celle qui acompagne ce document), l'int\'egralit\'e\ du texte est traduit. Les symboles (et en particulier ceux de la police Symbol) sont traduits par leur homologue \LaTeX\ (les symboles AMS ne sont pas support\'es actuellement), ou par un symbole voisin dans les cas d\'efavorables. Certains symboles sont n\'eanmoins intraduisibles. Ils seront repr\'esent\'es dans le document \LaTeX\ par un @. La pr\'esence de ce symbole peut donc signifier trois choses:
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+$\bullet $\ Il y avait un @ dans le document d'origine.
+\par
+\parindent = 18 pt
+$\bullet $\ Dans le document source se trouve un symbole non repr\'esent\'e\
+\par
+\parindent = 18 pt
+$\bullet $\ Il y a eu une erreur de traduction d'un symbole.
+\par
+\parindent = 18 pt
+
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Les caract\'eristiques du texte seront maintenues en ce qui concerne le texte en {%
+\bf Gras}%
+, en {%
+\it Italique}%
+, ou {%
+\underline {Soulign\'e}%
+}%
+. Notez par contre le mauvais r\'esultat d'un fragment de texte trop grand en soulign\'e. \LaTeX\ le fera d\'eborder sur les marges. Remarquons qu'il ne s'agit pas l\`a\ d'un d\'efaut du traducteur, mais d'une caract\'eristique de \LaTeX , dont le principe est qu'aucun texte ne doit \^etre soulign\'e. Lors de la r\'ealisation du traducteur Word2\LaTeX , nous avions pens\'e\ \`a\ permettre la d\'ecoupe des phrases soulign\'ees en mots isol\'es. Le r\'esultat \'etant des plus horribles, nous l'avons abandonn\'e\ de suite.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 67 pt
+
+\leftskip = 107 pt
+\rightskip = -35 pt Les marges seront respect\'ees, dans la limite des diff\'erences entre les polices Word et \LaTeX . Et les retraits faits dans le corps du texte seront traduits et respect\'es. Ce paragraphe en est un exemple. Les tabulations et retraits des marges ont \'et\'e\ modifi\'es par rapport au paragraphe pr\'ec\'edent. Observez le r\'esultat.
+\par
+\leftskip = 107 pt
+\rightskip = -35 pt
+\parindent = 67 pt
+
+\leftskip = 0 pt
+\rightskip = 0 pt
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Les formules math\'ematiques seront reprises aussi. Il faut noter que la traduction des formules se fait uniquement si celles-ci ont \'et\'e\ r\'ealis\'e\'es en utilisant les commandes 'Ins\'erer ... Objet ... Formule'. Le format g\'en\'er\'e\ par l'\'editeur d'\'equations est propri\'et\'e\ de Microsoft, et \`a\ notre connaissance, il n'a pas \'et\'e\ rendu publique.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Les tableaux sont traduits eux aussi, mais \'etant donn\'e\ le codage \'etrange des tableaux en RTF, le moyen utilis\'e\ est de les transformer en une suite de "minipages" juxtapos\'ees. En effet, sous Word, il peut y avoir plusieurs paragraphes \`a\ l'int\'erieur d'un tableau, de fa\c{c}on tout \`a\ fait naturelle. Ceci n'est pas permis en principe par \LaTeX . Pour passer outre, nous avons d\'ecid\'e\ d'int\'egrer la structure de minipages. De cette fa\c{c}on, on garde la plus grande ressemblance structurelle avec le document d'origine.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+Le probl\`eme se pose pour les tableaux encadr\'es. Les minipages n'ayant pas toutes les m\^emes dimensions, le r\'esultat peut \^etre relativement affreux. Par d\'efaut, les tableaux n'auront aucun cadre. Si vous sp\'ecifiez dans la ligne de commande l'option {%
+\it -uglyframes}%
+, les minipages seront encadr\'ees. On esp\`ere trouver une solution pour la gestion des tableaux dans les versions succ\'essives.
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf 6. Divers
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf 7. Remerciements
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf 8. Copyright
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\hspace{36pt}
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf \Large \bf 9. Index
+\par
+\parindent = 18 pt
+}%
+
+\parindent = 0 pt
+
+\par %
+\normalsize \pzrm
+\parindent = 18 pt
+{%
+\bf
+\hspace{36pt}
+\par
+\parindent = 18 pt
+
+\par
+\parindent = 18 pt
+}%
+
+\par %
+
+\parindent = 18 pt
+
+\end{document}
diff --git a/support/w2latex/EXEMPLES/11word.rtf b/support/w2latex/EXEMPLES/11word.rtf
new file mode 100644
index 0000000000..32f51e62eb
--- /dev/null
+++ b/support/w2latex/EXEMPLES/11word.rtf
@@ -0,0 +1,24 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy15\hr8\min27}{\version1}{\edmins1}{\nofpages0}{\nofwords65536}{\nofchars65536}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \qr \fs20\lang1036 {\ul Marseille, le 15 Juin 1994}
+\par \pard \qj Javier Garmendia Torres
+\par CIRM - LUMINY
+\par
+\par \tab Ce document contient quelques exemples de formules math\'e9matiques r\'e9alis\'e9es avec la version 2.0 du logiciel de traitement de texte {\b WORD} pour windows.
+\par \pard \qc {\b Une s}{\b \'e9}{\b rie de formules math}{\b \'e9}{\b matiques:}{\b
+\par }\pard Une {\b\i int}{\b\i \'e9}{\b\i grale}:{\field{\*\fldinst eq \\I(0,1,x+sin(2x))}{\fldrslt }} avec du{\b\i\ul texte de pa}rt et d'autre de la formule.
+\par Une {\b\i int}{\b\i \'e9}{\b\i grale} plus compl\'e8xe:{\field{\*\fldinst eq \\I(x,2x,sin(2y+x))dy}{\fldrslt }}.Une {\ul fraction} rationelle: {\field{\*\fldinst eq \\F(sin(x),log(x+sin(3x)))}{\fldrslt }}. Une somme de {\i\ul fractions} rationelles:
+{\field{\*\fldinst eq \\F(1,x) + \\F(x+2-sin(x),2)}{\fldrslt }}. Une {\b\i racine}: {\field{\*\fldinst eq \\R(,x+th(3x))}{\fldrslt }}. Une somme de {\b racines} n-i\'e8mes: {\field{\*\fldinst eq \\R(k+n,x+sin(ch(3x))) + \\R(173,exp(x+3))}{\fldrslt }}
+ Une int\'e9grale avec une fracti{\b\i on ratio}nelle et une racine
+\par \pard \qc {\field{\*\fldinst eq \\I(0,1,\\I(x,\\F(1,x),\\F(\\R(\\F(x+sin(x),3),log(sin(x))),\\F(\\R(\\R(27,3x+ch(x)),\\R(,3x)),4))))}{\fldrslt }}
+\par \pard Un vecteur entre pare{\i ntheses et co}mpos\'e9 de formules:
+\par \pard \qc {\field{\*\fldinst eq \\B(\\A(\\F(x+sin(x),1),\\R(27,sin(x)+ch(th(x))),\\I(1,2,log(x+sin(x)))))}{\fldrslt }}
+\par \pard Une formu{\ul le ce}ntr\'e9e:
+\par \pard \qc (sc) : {\field{\*\fldinst eq \\F(sin(x),x)}{\fldrslt }}
+\par \pard Et une d{\b\i erni}{\b\i \'e8}{\b\i re a dr}oite:
+\par \pard \qr x={\field{\*\fldinst eq \\R(,\\R(3,\\R(,x+sin(x)+log(x)+1)))}{\fldrslt }}+y
+\par \pard
+\par
+\par
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/12word.rtf b/support/w2latex/EXEMPLES/12word.rtf
new file mode 100644
index 0000000000..cd79972530
--- /dev/null
+++ b/support/w2latex/EXEMPLES/12word.rtf
@@ -0,0 +1,20 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy16\hr11\min51}{\revtim\yr1994\mo6\dy16\hr11\min52}{\version3}{\edmins12}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \qr \fs20\lang1036 {\ul Marseille, le 16 juin 1994
+\par }\pard \qj {\b Javier Garmendia Torres
+\par }{\b CIRM - Luminy
+\par }\pard \qj\fi993\li567
+\par \pard \qj\fi993\li567 Ce document vise la r\'e9alisation de tests portant sur les indentations et les changements de largeurs des marges. Des retraits \'e0 gauche du paragraphe et \'e0 son d\'e9but ont \'e9t\'e9 r\'e9alis\'e9s \'e0 l'aide de la r\'e9
+glette situ\'e9e sur la partie sup\'e9rieure de l'\'e9cran (sour Microsoft Word 2.0 pour Windows).
+\par Un deuxi\'e8me paragraphe commence ici avec le m\'eame style. M\'eames indentations, et poss\'e9dant des tabulations (entre ici\tab et\tab l\'e0) au milieu du texte. Le prochain paragraphe sera compl\'e8tement \'e0 gauche de la page, de largeur r\'e9
+duite:
+\par \pard \qj\fi284\ri5953 Ici commence le troisi\'e8me paragraphe, dont la longueur est r\'e9duite approximativement au tiers de la page sur laquelle on \'e9crit. La tabulation en d\'e9but de paragraphe a aussi \'e9t\'e9 r\'e9duite...
+\par \pard \qj\fi284\ri5953 Essayons maintenant de placer un paragraphe plus \'e0 droite:
+\par \pard \qj\fi567\li3686\ri2551 Ce paragraphe devrait \'eatre approximativement centr\'e9. Remarquons que ce ne sont pas de colonnes, mais qu'il s'agit bien de paragraphes \'e0 part enti\'e8re. Et que le centrage n'a pas \'e9t\'e9
+ fait avec des commandes <center> mais bien avec des indentations.
+\par \pard \qj\fi708\li5104\ri-284 Et un dernier paragraphe pour v\'e9rifier la justification vers la droite (en d\'e9passant un peu les marges par rapport aux deux premiers paragraphes.
+\par \pard \qr\fi708\li5104\ri-284
+\par \pard \qr\fi708\li5104\ri-284 {\b Javier GARMENDIA}{\b
+\par }\pard
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/13word.rtf b/support/w2latex/EXEMPLES/13word.rtf
new file mode 100644
index 0000000000..e4c0f32a6d
--- /dev/null
+++ b/support/w2latex/EXEMPLES/13word.rtf
@@ -0,0 +1,30 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy16\hr15\min54}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036 {\pard\plain \fs20\lang1036 {\object\objemb\objw2420\objh600
+{\*\objclass Equation}{\*\objdata 0105000002000000090000004571756174696f6e000000000004000000416c6c0080000000
+02010101000a01030d01000112826c12826f128267028228128378028229000b010301000001030e000001028831000112827312826912826e0282281283780282290000000296280296290000000a02862b031700000112826312826f128273028228128378028229000b11110d0286f20286f20286f200000025730000
+000001050000050000000d0000004d45544146494c455049435400ac100000defbffffe80400000800ac1022045e2f
+010009000003660200000500100000000000050000000902000000000400000002010100050000000102ffffff00040000002e01190005000000310201000000050000000b0200000000050000000c02c003200f0b00000026060f000c004d617468547970650000800008000000fa020000080000000000000004000000
+2d010000050000001402480191000500000013024801d10208000000fa0200001000000000000000040000002d010100050000001402a302ab020500000013028702dc0208000000fa0200002000000000000000040000002d0102000500000014028f02dc0205000000130223032303040000002d010100050000001402
+23032b03050000001302730189030500000014027301890305000000130273018807050000001402c002a20310000000fb0280fe0000000000009001000000000002001054696d657300e814040000002d01030008000000210503006c6f670000000000050000001402c002930507000000210501002800000000000500
+00001402c002fb060700000021050100290000000000050000001402c002160b0800000021050300636f730000000000050000001402c002150d0700000021050100280000000000050000001402c0027d0e07000000210501002900000000000500000014022e02980010000000fb0220ff000000000000900100000000
+0002001054696d6573009814040000002d01040004000000f0010300080000002105030073696e00000000000500000014022e02a80107000000210501002800000000000500000014022e0280020700000021050100290000000000050000001402c002360610000000fb0280fe00000000000090010100000000020010
+54696d6573000b15040000002d01030004000000f00104000700000021050100780000000000050000001402c002b80d07000000210501007800000000000500000014022e020a0210000000fb0220ff0000000000009001010000000002001054696d657300e314040000002d01040004000000f0010300070000002105
+0100780000000000050000001402f500790110000000fb0220ff0000000000009001000000000002001054696d6573000b15040000002d01030004000000f00104000700000021050100310000000000050000001402f800180010000000fb0240fe0000000000009001000000020002000046656e636573001104000000
+2d01040004000000f00103000700000021050100460000000000050000001402260218000700000021050100480000000000050000001402a50118000700000021050100470000000000050000001402f800dd0207000000210501004900000000000500000014022602dd0207000000210501004b000000000005000000
+1402a501dd0207000000210501004a0000000000050000001402c002d90710000000fb0280fe0000000000009001000000020002001053796d626f6c0000040000002d01030004000000f001040007000000210501002b00000000000500000014024603fa0810000000fb0280fb00000000000090010000000200020000
+46656e6365730011040000002d01040004000000f001030008000000210503007a7a7a000000000010000000fb021000070000000000bc02000000000102022253797374656d0006040000002d01030004000000f00104000300000000006e732064e97461696c6ce9657300000000000000}{\result {\dn16
+{\pict\wmetafile8\picw4268\pich1058\picwgoal2420\pichgoal600
+010009000003660200000500100000000000050000000902000000000400000002010100050000000102ffffff00040000002e01190005000000310201000000050000000b0200000000050000000c02c003200f0b00000026060f000c004d617468547970650000800008000000fa0200000800000000000000040000002d
+010000050000001402480191000500000013024801d10208000000fa0200001000000000000000040000002d010100050000001402a302ab020500000013028702dc0208000000fa0200002000000000000000040000002d0102000500000014028f02dc0205000000130223032303040000002d0101000500000014022303
+2b03050000001302730189030500000014027301890305000000130273018807050000001402c002a20310000000fb0280fe0000000000009001000000000002001054696d657300e814040000002d01030008000000210503006c6f670000000000050000001402c002930507000000210501002800000000000500000014
+02c002fb060700000021050100290000000000050000001402c002160b0800000021050300636f730000000000050000001402c002150d0700000021050100280000000000050000001402c0027d0e07000000210501002900000000000500000014022e02980010000000fb0220ff00000000000090010000000000020010
+54696d6573009814040000002d01040004000000f0010300080000002105030073696e00000000000500000014022e02a80107000000210501002800000000000500000014022e0280020700000021050100290000000000050000001402c002360610000000fb0280fe0000000000009001010000000002001054696d6573
+000b15040000002d01030004000000f00104000700000021050100780000000000050000001402c002b80d07000000210501007800000000000500000014022e020a0210000000fb0220ff0000000000009001010000000002001054696d657300e314040000002d01040004000000f0010300070000002105010078000000
+0000050000001402f500790110000000fb0220ff0000000000009001000000000002001054696d6573000b15040000002d01030004000000f00104000700000021050100310000000000050000001402f800180010000000fb0240fe0000000000009001000000020002000046656e6365730011040000002d010400040000
+00f00103000700000021050100460000000000050000001402260218000700000021050100480000000000050000001402a50118000700000021050100470000000000050000001402f800dd0207000000210501004900000000000500000014022602dd0207000000210501004b0000000000050000001402a501dd020700
+0000210501004a0000000000050000001402c002d90710000000fb0280fe0000000000009001000000020002001053796d626f6c0000040000002d01030004000000f001040007000000210501002b00000000000500000014024603fa0810000000fb0280fb0000000000009001000000020002000046656e636573001104
+0000002d01040004000000f001030008000000210503007a7a7a000000000010000000fb021000070000000000bc02000000000102022253797374656d0006040000002d01030004000000f00104000300000000006e732064e97461696c6ce9657300000000000000}}}}}qsdfqsdf
+\par
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/14word.rtf b/support/w2latex/EXEMPLES/14word.rtf
new file mode 100644
index 0000000000..3f471c8fd9
--- /dev/null
+++ b/support/w2latex/EXEMPLES/14word.rtf
@@ -0,0 +1,21 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy24\hr14\min15}{\revtim\yr1994\mo6\dy24\hr14\min15}{\version2}{\edmins2}{\nofpages0}{\nofwords65536}{\nofchars65536}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \qr \fs20\lang1036 {\ul Marseille, le 16 juin 1994
+\par }\pard \qj {\b Javier Garmendia Torres
+\par }{\b CIRM - Luminy
+\par }\pard \qj\fi993\li567
+\par \pard \qj\fi993\li567 Ce document vise la r\'e9alisation de tests portant sur les indentations et les changements de largeurs des marges. Des retraits \'e0 gauche du paragraphe et \'e0 son d\'e9but ont \'e9t\'e9 r\'e9alis\'e9s \'e0 l'aide de la r\'e9
+glette situ\'e9e sur la partie sup\'e9rieure de l'\'e9cran (sour Microsoft Word 2.0 pour Windows).
+\par \pard \qj\fi993\li567 Un deuxi\'e8me paragraphe commence ici avec le m\'eame style. {\b\fs54 M\'eames} indentations, et poss\'e9dant des tabulations (entre ici\tab et\tab l\'e0) au milieu du texte. Le prochain paragraphe sera compl\'e8tement \'e0 {\fs16
+gauche de} la page, {\fs32 de largeur} r\'e9duite:
+\par \pard \qj\fi284\ri5953 Ici commence le troisi\'e8me paragraphe, dont la longueur est r\'e9duite {\fs28 approximativement} au tiers de la page {\fs10 sur laquelle} on \'e9crit. La tabulation en d\'e9but de paragraphe a aussi \'e9t\'e9 r\'e9duite...
+\par \pard \qj\fi284\ri5953 Essayons maintenant de placer un paragraphe plus \'e0 droite:
+\par \pard \qj\fi567\li3686\ri2551 Ce paragraphe devrait \'eatre approximativement centr\'e9. Remarquons que ce ne sont pas de colonnes, {\fs38 mais qu'il s'agit bien} de paragraphes \'e0 part enti\'e8re. Et que le centrage n'a pas \'e9t\'e9
+ fait avec des commandes <center> mais bien avec des indentations.
+\par \pard \qj\fi708\li5104\ri-284 Et un dernier paragraphe pour v\'e9rifier la justification vers la droite (en d\'e9passant un peu les marges par rapport aux deux premiers paragraphes.
+\par \pard \qr\fi708\li5104\ri-284
+\par \pard \qr\fi708\li5104\ri-284 {\b Javier GARMENDIA
+\par }\pard
+\par \pard
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/20word.aux b/support/w2latex/EXEMPLES/20word.aux
new file mode 100644
index 0000000000..f23e54680b
--- /dev/null
+++ b/support/w2latex/EXEMPLES/20word.aux
@@ -0,0 +1 @@
+\relax
diff --git a/support/w2latex/EXEMPLES/20word.dvi b/support/w2latex/EXEMPLES/20word.dvi
new file mode 100644
index 0000000000..b0e9ed3a23
--- /dev/null
+++ b/support/w2latex/EXEMPLES/20word.dvi
Binary files differ
diff --git a/support/w2latex/EXEMPLES/20word.log b/support/w2latex/EXEMPLES/20word.log
new file mode 100644
index 0000000000..2595566c48
--- /dev/null
+++ b/support/w2latex/EXEMPLES/20word.log
@@ -0,0 +1,172 @@
+This is MLTeX, Version 3.14+ (format=lplain 92.1.28) 27 JUL 1994 17:38
+**&latex 20word.
+(20word.tex
+LaTeX Version 2.09 <14 January 1991>
+(/user/tex92/local/lib/tex/inputs/article.sty
+Document Style `article' <16 Mar 88>/multilingual 1-nov-89 +++
+(/user/tex92/local/lib/tex/inputs/art10.sty)
+\c@part=\count82
+\c@section=\count83
+\c@subsection=\count84
+\c@subsubsection=\count85
+\c@paragraph=\count86
+\c@subparagraph=\count87
+\c@figure=\count88
+\c@table=\count89
+)
+(/user/tex92/local/lib/tex/inputs/a4.sty
+Style option `A4' 1.2a <30 Nov 90> (NP and JLB)
+English documentation <26 Feb 90> (JLB)
+)
+No file 20word.aux.
+
+Underfull \hbox (badness 3679) in paragraph at lines 35--36
+[]\cmr/bx/n/10 Cette cel-lule est en
+
+\hbox(6.94444+0.0)x116.0, glue set 3.32957
+.\hbox(0.0+0.0)x0.0
+.\cmr/bx/n/10 C
+.\cmr/bx/n/10 e
+.\cmr/bx/n/10 t
+.\cmr/bx/n/10 t
+.etc.
+
+LaTeX error. See LaTeX manual for explanation.
+ Type H <return> for immediate help.
+! Something's wrong--perhaps a missing \item.
+\@latexerr ...for immediate help.}\errmessage {#1}
+
+\endcenter ->\if@newlist \@noitemerr
+ \fi \if@inlabel \indent \fi \ifhmode \u...
+
+\end #1->\csname end#1\endcsname
+ \@checkend {#1}\if@endpe \global \let \@gte...
+l.50 \end{center}
+
+?
+
+Overfull \hbox (25.22221pt too wide) in paragraph at lines 34--58
+[]$[]$$[]$$[]$ $[]$
+
+\hbox(13.5+8.5)x434.0, glue set - 1.0
+.\hbox(0.0+0.0)x0.0
+.\mathon
+.\vbox(12.94444+7.94444)x116.0
+..\hbox(6.94444+0.0)x116.0, glue set 3.32957
+...\hbox(0.0+0.0)x0.0
+...\cmr/bx/n/10 C
+...\cmr/bx/n/10 e
+...\cmr/bx/n/10 t
+...\cmr/bx/n/10 t
+...etc.
+..\penalty 300
+..\glue(\baselineskip) 7.55556
+..\hbox(4.44444+1.94444)x116.0, glue set 95.38763fil
+...\cmr/bx/n/10 g
+...\cmr/bx/n/10 r
+...\cmr/bx/n/10 a
+...\cmr/bx/n/10 s
+...\penalty 10000
+...etc.
+..\glue 0.0
+.\mathoff
+.\mathon
+.etc.
+
+
+Underfull \hbox (badness 10000) in paragraph at lines 63--63
+[]\pzrm Une
+
+\hbox(6.83331+0.0)x116.0
+.\hbox(0.0+0.0)x0.0
+.\pzrm U
+.\pzrm n
+.\pzrm e
+.\glue(\rightskip) 0.0
+
+
+Underfull \hbox (badness 5622) in paragraph at lines 66--66
+[]\pzrm Une autre très longue
+
+\hbox(6.94444+1.94444)x114.0, glue set 3.83333
+.\hbox(0.0+0.0)x0.0
+.\pzrm U
+.\pzrm n
+.\pzrm e
+.\glue 3.33333 plus 1.66666 minus 1.11111
+.etc.
+
+
+Underfull \hbox (badness 4132) in paragraph at lines 79--80
+[]\pzrm Puis jus-ti-fions la ligne
+
+\hbox(6.94444+1.94444)x114.0, glue set 3.46109
+.\hbox(0.0+0.0)x0.0
+.\pzrm P
+.\pzrm u
+.\pzrm i
+.\pzrm s
+.etc.
+
+
+Overfull \hbox (23.0pt too wide) in paragraph at lines 63--87
+[]$[]$$[]$$[]$$[]$
+
+\hbox(33.91666+28.91666)x434.0
+.\hbox(0.0+0.0)x0.0
+.\mathon
+.\vbox(18.88889+13.88887)x116.0
+..\hbox(6.83331+0.0)x116.0
+...\hbox(0.0+0.0)x0.0
+...\pzrm U
+...\pzrm n
+...\pzrm e
+...\glue(\rightskip) 0.0
+..\penalty 150
+..\glue(\baselineskip) 5.05556
+..\hbox(6.94444+1.94444)x116.0, glue set - 0.39478
+...\pzrm c
+...\pzrm e
+...\pzrm l
+...\discretionary []
+...\pzrm l
+...etc.
+..\penalty 150
+..etc.
+.\mathoff
+.\mathon
+.etc.
+
+
+Overfull \hbox (23.0pt too wide) in paragraph at lines 92--103
+[]$[]$$[]$$[]$$[]$
+
+\hbox(9.32779+4.32779)x434.0
+.\hbox(0.0+0.0)x0.0
+.\mathon
+.\vbox(6.97217+1.97217)x116.0
+..\hbox(6.94444+1.9999)x116.0, glue set 43.99985fil
+...\hbox(0.0+0.0)x0.0
+...\mathon
+...\vbox(6.83331+1.9999)x13.05559 []
+...\mathoff
+...\glue 3.33333 plus 1.66666 minus 1.11111
+...etc.
+..\glue 0.0
+.\mathoff
+.\mathon
+.etc.
+
+[1
+
+] (20word.aux) )
+Here is how much of TeX's memory you used:
+ 191 strings out of 6648
+ 1768 string characters out of 52915
+ 28158 words of memory out of 262141
+ 2390 multiletter control sequences out of 9500
+ 18987 words of font info for 72 fonts, out of 72000 for 255
+ 31 hyphenation exceptions out of 607
+ 16i,6n,15p,153b,168s stack positions out of 300i,40n,60p,3000b,4000s
+
+Output written on 20word.dvi (1 page, 1440 bytes).
diff --git a/support/w2latex/EXEMPLES/20word.rtf b/support/w2latex/EXEMPLES/20word.rtf
new file mode 100644
index 0000000000..985793434e
--- /dev/null
+++ b/support/w2latex/EXEMPLES/20word.rtf
@@ -0,0 +1,13 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo7\dy12\hr15\min55}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036 A partir de cette ligne commence un tableau 3x4:
+\par \trowd \trgaph70\trleft-70 \cellx2198\cellx4466\cellx6734\cellx9002\pard \intbl {\b Cette cellule est en gras}\cell {\i Celle-ci en italique}\cell \pard \qc\intbl Du texte Centr\'e9\cell \pard \qr\intbl Du texte \'e0 droite\cell \pard \intbl \row \trowd
+\trgaph70\trleft-70 \cellx2198\cellx4466\cellx6734\cellx9002\pard \intbl Une cellule tr\'e8s, tr\'e8s longue qui d\'e9borde sur trois lignes\cell \pard \qj\intbl Une autre tr\'e8s longue aussi, mais justifi\'e9e cette fois-ci.\cell \pard \intbl Une petite
+\cell \pard \qc\intbl Centr\'e8
+\par \pard \qj\intbl Puis justifions la ligne suivante.
+\par \pard \qr\intbl Et \'e0 droite.\cell \pard \intbl \row \trowd \trgaph70\trleft-70 \cellx2198\cellx4466\cellx6734\cellx9002\pard \intbl {\ul Un} mot soulign\'e9\cell La suite du tableau.\cell Et la fin avec une formule:\cell {\field{\*\fldinst eq \\I(0,1,
+\\F(sin(x),x) dx)}{\fldrslt }}\cell \pard \intbl \row \pard Et ici se termine le test.
+\par
+\par
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/20word.tex b/support/w2latex/EXEMPLES/20word.tex
new file mode 100644
index 0000000000..e56d0da377
--- /dev/null
+++ b/support/w2latex/EXEMPLES/20word.tex
@@ -0,0 +1,111 @@
+%
+% This document was generated using
+% w2LaTeX
+% Bug Reports: jgarmend@cyberspace.org
+%
+
+\documentstyle[a4]{article}
+
+\parindent = 0 pt
+
+\oddsidemargin0cm
+
+\evensidemargin0cm
+
+\hoffset18pt
+
+\textwidth434pt
+
+\vsize=572pt
+
+\font\mathex=cmex10
+
+\font\pzrm=cmr10
+
+\pagestyle{myheadings}
+
+\begin{document}
+
+\par %
+\normalsize \pzrm \normalsize A partir de cette ligne commence un tableau 3x4:
+\par
+\par %
+\normalsize \pzrm
+\begin{minipage}{116pt}{%
+\bf Cette cellule est en gras}%
+\end{minipage}
+\begin{minipage}{114pt}{%
+\it Celle-ci en italique}%
+\end{minipage}
+\begin{minipage}{113pt}
+\par %
+\normalsize \pzrm
+\begin{center}
+Du texte Centr\'e
+\end{center}%
+\end{minipage}
+\begin{minipage}{114pt}
+\begin{center}%
+
+\end{center}
+
+\par %
+\normalsize \pzrm
+\begin{flushright}
+Du texte \`a\ droite
+\end{flushright}%
+\end{minipage}
+
+\par %
+\normalsize \pzrm
+\par %
+\normalsize \pzrm
+\begin{minipage}{116pt}Une cellule tr\`es, tr\`es longue qui d\'eborde sur trois lignes\end{minipage}
+\begin{minipage}{114pt}
+\par %
+\normalsize \pzrm Une autre tr\`es longue aussi, mais justifi\'ee cette fois-ci.\end{minipage}
+\begin{minipage}{113pt}
+\par %
+\normalsize \pzrm Une petite\end{minipage}
+\begin{minipage}{114pt}
+\par %
+\normalsize \pzrm
+\begin{center}
+Centr\`e
+\par
+\end{center}
+
+\par %
+\normalsize \pzrm Puis justifions la ligne suivante.
+\par
+\par %
+\normalsize \pzrm
+\begin{flushright}
+Et \`a\ droite.
+\end{flushright}%
+\end{minipage}
+
+\par %
+\normalsize \pzrm
+\par %
+\normalsize \pzrm
+\begin{minipage}{116pt}{%
+\underline {Un}%
+}%
+\ mot soulign\'e\end{minipage}
+\begin{minipage}{114pt}La suite du tableau.\end{minipage}
+\begin{minipage}{113pt}Et la fin avec une formule:\end{minipage}
+\begin{minipage}{114pt}{%
+$ \int_{0}^{1}{\frac{sin(x)}{x}%
+dx}%
+ $}%
+\end{minipage}
+
+\par %
+\normalsize \pzrm
+\par %
+\normalsize \pzrm Et ici se termine le test.
+\par
+\par
+\par
+\end{document}
diff --git a/support/w2latex/EXEMPLES/2word.rtf b/support/w2latex/EXEMPLES/2word.rtf
new file mode 100644
index 0000000000..21f39833ee
--- /dev/null
+++ b/support/w2latex/EXEMPLES/2word.rtf
@@ -0,0 +1,13 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy2\hr17\min35}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036 Normal
+\par {\i Italique}
+\par {\b Bold}
+\par {\b\i BoldItalique}
+\par {\ul Souligne}
+\par {\b\ul SouligneBold}
+\par {\i\ul SouligneItalique}
+\par {\b\i\ul SouligneBoldItalique}
+\par
+\par }
diff --git a/support/w2latex/EXEMPLES/3word.rtf b/support/w2latex/EXEMPLES/3word.rtf
new file mode 100644
index 0000000000..f04973d3d2
--- /dev/null
+++ b/support/w2latex/EXEMPLES/3word.rtf
@@ -0,0 +1,9 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy6\hr14\min35}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036
+
+\par \'e9 - \'e0 - \'e8 - \'f9 - \'ee
+\par
+\par
+\par }
diff --git a/support/w2latex/EXEMPLES/4word.rtf b/support/w2latex/EXEMPLES/4word.rtf
new file mode 100644
index 0000000000..881bb28491
--- /dev/null
+++ b/support/w2latex/EXEMPLES/4word.rtf
@@ -0,0 +1,10 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy8\hr17\min44}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036 Ceci est un texte {\b EXPERIMENTAL .
+\par }\pard \qj {\b \tab }Tabulation a droite et du texte jusqu'a la fin de la ligne. Je complete avec du texte jusqu'a la fin de la ligne. Oh! que la ligne est longue... Et je vais meme {\i teminer} le {\ul paragraphe}
+ pour le justifier (et voir ce que ca donne). Decidement, ces paragraphes sont longs. Voila la fin d'un paragraphe justifie.
+\par
+\par Et on arrive a la fin du test.
+\par \pard
+\par }
diff --git a/support/w2latex/EXEMPLES/5word.rtf b/support/w2latex/EXEMPLES/5word.rtf
new file mode 100644
index 0000000000..2d2f74900c
--- /dev/null
+++ b/support/w2latex/EXEMPLES/5word.rtf
@@ -0,0 +1,12 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy8\hr17\min54}{\version1}{\edmins0}{\nofpages0}{\nofwords65536}{\nofchars65536}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036
+Ceci est un autre texte experimental. A partir de cette ligne commence un tableau (3 colonnes 5 lignes).
+\par \trowd \trgaph70\trleft-70 \cellx2954\cellx5978\cellx9002\pard \intbl Voici la case 1,1\cell Et ici se trouve la case 1,2\cell Nous arrivons a la 1,3\cell \pard \intbl \row \trowd \trgaph70\trleft-70 \cellx2954\cellx5978\cellx9002\pard \intbl
+Et on change de ligne: 2,1\cell Deuxieme colonne, Deuxieme ligne\cell Col 3 Ligne 2\cell \pard \intbl \row \pard \intbl On approche le centre: 3,1\cell Le centre du tableau: 3,2\cell col 3 ligne 3\cell \pard \intbl \row \pard \intbl
+La quatrieme ligne Colonne 1\cell En gras: {\b ligne 4 col 2}\cell Italique: {\i col3 ligne 4}\cell \pard \intbl \row \trowd \trgaph70\trleft-70 \cellx2954\cellx5978\cellx9002\pard \intbl Derniere ligne 1ere colonne\cell La fin approche: Ligne 5 col 2
+\cell Soulignons la fin: {\ul col3 ligne 5}\cell \pard \intbl \row \pard Et en dehors du tableau, on arrive a la fin du document de test.
+\par
+\par
+\par }
diff --git a/support/w2latex/EXEMPLES/6word.rtf b/support/w2latex/EXEMPLES/6word.rtf
new file mode 100644
index 0000000000..eaeb75a91b
--- /dev/null
+++ b/support/w2latex/EXEMPLES/6word.rtf
@@ -0,0 +1,10 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy10\hr16}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0
+\deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036 A partir de cette ligne le texte est centre:
+\par \pard \qc Voici une premiere ligne centree.
+\par Et en voici une deuxieme.
+\par Enfin la derniere.
+\par \pard On revient au texte justifie.
+\par
+\par }
diff --git a/support/w2latex/EXEMPLES/7word.rtf b/support/w2latex/EXEMPLES/7word.rtf
new file mode 100644
index 0000000000..479068d057
--- /dev/null
+++ b/support/w2latex/EXEMPLES/7word.rtf
@@ -0,0 +1,26 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy10\hr16\min54}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \qr \fs20\lang1036 {\ul Marseille, le 10 Juin 1994
+\par }\pard Javier Garmendia Torres
+\par Centre International de Rencontres Mathematiques
+\par
+\par
+\par \pard \qc {\b\ul WORD TO LATEX}{\b\ul
+\par }{\i Traduction de Formats de Traitement de texte.}
+\par
+\par \pard \qj \tab Ce texte est un premier document visant a tester l'efficacite du traducteur de formats de {\b RTF} vers {\i LaTeX}. Les specifications utilisees pour la conception de ce logiciel sont issues de {\b\i\ul Microsoft}
+ (c) et datent (\\) du mois de Janvier 1994, relativement au format {\b RTF} utilise dans la version 6.0 du logiciel de traitement de texte {\b WORD}. (N.B.: Ce premier paragraphe devrait etre justifie, et commancant avec un retrait de 1 tabulation).
+\par \tab Le programme {\i WordToLaTeX} vise a permettre la traduction sous le langage de compilation de texte {\i TeX} (agremente des macros fournies dans le pakagge {\i LaTeX}) a partir d'un texte realise sous {\b WORD}. Les tests sont effectue
+s grace a la version 2.0 de {\b WORD} pour {\b\i\ul Windows} qui est comparable en ressources avec la version 5.0 du meme traitement de texte mais fonctionnant sous l'environnement {\b\i\ul Machintosh}.
+\par \tab Le texte suivant decrit les caracteristiques de mise en page qui le caracterisent:
+\par \tab \tab {\b\i Ce paragraphe a ete indente avec deux tabulations a gauche et est en italique bold.}{\b\i
+\par }\tab \tab \tab Ce paragraphe, par contre {\i\ul a ete indente avec trois tabulations a gauche et est en italique souligne.}{\i\ul
+\par }{\i\ul
+\par }\pard Ce paragraphe par contre n'est pas justifie, "document visant a tester l'efficacite du traducteur de formatsdocument visant a tester l'efficacite du traducteur de formatsdocument visant a tester l'efficacite du traducteur de formats
+document visant a tester l'efficacite du traducteur de formatsdocument visant a tester l'efficacite du traducteur de formatsdocument visant a tester l'efficacite du traducteur de formatsdocument visant a tester l'efficacite du traducteur de formats
+document visant a tester l'efficacite du traducteur de formatsdocument visant a tester l'efficacite du traducteur de formatsdocument visant a tester l'efficacite du traducteur de formats.
+\par
+\par \pard \qr {\b\i\ul Javier Garmendia}{\b\i\ul
+\par }\pard
+\par }
diff --git a/support/w2latex/EXEMPLES/8word.rtf b/support/w2latex/EXEMPLES/8word.rtf
new file mode 100644
index 0000000000..d2f9dbf6bd
--- /dev/null
+++ b/support/w2latex/EXEMPLES/8word.rtf
@@ -0,0 +1,32 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy13\hr15\min15}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \qr \fs20\lang1036 {\ul Lundi 13 Juin 1994
+\par }\pard \qj Javier Garmendia Torres
+\par CIRM - Luminy
+\par \pard \qc {\b WORD TO LATEX}
+\par {\i Traducteur de formats de Traitement}{\i s}{\i de Texte}{\i .}
+\par \pard \qj
+\par \tab Ce document devrait permettre de tester le codage des accents et des caract\'e8res sp\'e9ciaux lors de la traduction des fichiers g\'e9n\'e9r\'e9s avec la version 2.0 de Word sous Windows (\'e9quivalente \'e0 la version 5.0 de WORD sous Mac). Nou
+s tenterons de repr\'e9senter la plupart des caract\'e8res ASCII - 8 bits cod\'e9s directement \'e0 partir du clavier ou en utilisant les r\'e9f\'e9rences des tables.
+\par \tab Ce test devra permetre la v\'e9rification exhaustive de ce codage, m\'eame \'e0 l'interieur d'un paragraphe avec un style bien particulier.
+\par \pard \qc Par exemple, les mots suivants seront centr\'e9s dans la page, certains
+\par seront en {\i italique}, {\b bold} ou {\ul soulign\'e9}:
+\par h\'f4pital {\b ch\'e2teau} {\i ma\'efs} {\ul j'esp\'e8re} \'eatre {\b\i para\'eetre} \'e9l\'e9phant
+\par {\i\ul soup\'e7on} l\'e0 {\b\i\ul ambigu\'eb} o\'f9 \'e7a?
+\par \pard \qr Les mots suivants seront \'e0 droite de la page:
+\par \'bfQu\'e9 tal {\b est}{\b \'e1}{\b s}?
+\par \'a1Qu\'e9 buen {\i\ul d}{\i\ul \'ed}{\i\ul a} hace hoy, {\b\ul ni}{\b\ul \'f1}{\b\ul a}!
+\par Peut-\'eatre qu'il pr\'e9f\'e8re le caf\'e9 glac\'e9
+\par Mein Tee ist {\b hei}{\b \'df}
+\par Le n\'9cud papillon est \'e9l\'e9gant
+\par A ferry from {\i \'d6}{\i land} to {\b \'c5}{\b land}
+\par \pard \qj \tab Et cette phrase est justifi\'e9e: avec un ast\'e9risque: *, un dollar: $, {\i un pourcent: %}, un di\'e8se: #, un arrobasque: @, un symbole de livre anglaise: {\b pound \'a3}, un symbole de {\i paragraphe}: \'a7 des point
+s d'interrogation? ou d'exclamation! et des signes de ponctuation (telles que les parenth\'e8ses) ou \{que les accolades\} et les [crochets] suivis d'une tilde~en plein milieu de la phrase, de Marks&Spencer, et un petit symbole\'a4sorti de l'espace.
+ Voici une panoplie de lettres sp\'e9ciales acentu\'e9es: \'c0\'c1\'c2\'c3\'c4\'c5\'c6\'c7 \'c8\'c9\'ca\'cb\'cc\'cd\'ce\'cf\'d0\'d1\'d2 \'d3\'d4\'d5\'d6\'d8 \'d9\'da\'db\'dc\'dd\'e0 \'e1\'e2\'e3\'e4 \'e5\'e6\'e7\'e8\'e9\'ea\'eb\'ec \'ed\'ee\'ef\'f1\'f2
+\'f3 \'f4\'f5\'f6\'f7\'f8\'f9\'fa\'fb\'fc\'fd\'ff. Voici la fin de ce document approcher...
+\par \pard \qr {\b\ul Javier Garmendia}{\b\ul
+\par }\pard \qj \tab
+\par \pard \qr
+\par \pard
+\par }
diff --git a/support/w2latex/EXEMPLES/99word.rtf b/support/w2latex/EXEMPLES/99word.rtf
new file mode 100644
index 0000000000..587f7ab5f2
--- /dev/null
+++ b/support/w2latex/EXEMPLES/99word.rtf
@@ -0,0 +1,25 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy15\hr8\min27}{\version1}{\edmins1}{\nofpages0}{\nofwords65536}{\nofchars65536}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \qr \fs20\lang1036 {\ul Marseille, le 15 Juin 1994}
+\par \pard \qj Javier Garmendia Torres
+\par CIRM - LUMINY
+\par
+\par \tab Ce document contient quelques exemples de formules math\'e9matiques r\'e9alis\'e9es avec la version 2.0 du logiciel de traitement de texte {\b WORD} pour windows.
+\par \pard \qc {\b Une s}{\b \'e9}{\b rie de formules math}{\b \'e9}{\b matiques:}{\b
+\par }\pard Une {\b\i int}{\b\i \'e9}{\b\i grale}:{\field{\*\fldinst eq \\I(0,1,x+sin(2x))}{\fldrslt }} avec du{\b\i\ul texte de pa}rt et d'autre de la formule.
+\par Une {\b\i int}{\b\i \'e9}{\b\i grale} plus compl\'e8xe:{\field{\*\fldinst eq \\I(x,2x,sin(2y+x))dy \\i( {\f20\fs20 0};{\f20\fs20 t}{\f20 };{\f20 }\\f({\f20 }{\f20\fs20 2};{\f20\fs20 \'b9(1 }{\f20 + s}{\f20\fs18\up6 2}{\f20 }){\f20 }){\f20 ds}){\f20 }}{\fldrslt }}.Une {\ul fraction} rationelle: {\field{\*\fldinst eq \\F(sin(x),log(x+sin(3x)))}{\fldrslt }}. Une somme de {\i\ul fractions} rationelles:
+{\field{\*\fldinst eq \\F(1,x) + \\F(x+2-sin(x),2)}{\fldrslt }}. Une {\b\i racine}: {\field{\*\fldinst eq \\R(,x+th(3x))}{\fldrslt }}. Une somme de {\b racines} n-i\'e8mes: {\field{\*\fldinst eq \\R(k+n,x+sin(ch(3x))) + \\R(173,exp(x+3))}{\fldrslt }}
+ Une int\'e9grale avec une fracti{\b\i on ratio}nelle et une racine
+\par \pard \qc {\field{\*\fldinst eq \\i( {\f20\fs20 0};{\f20\fs20 t}{\f20 };{\f20 }\\f({\f20 }{\f20\fs20 2};{\f20\fs20 \'b9}({\'b9 1 }{\f20 + s}{\f20\fs18\up6 2}{\f20 }){\f20 }){\f20 ds}){\f20 }
+ \\I(0,1,\\I(x,\\F(1,x),\\F(\\R(\\F(x+sin(x),3),log(sin(x))),\\F(\\R(\\R(27,3x+ch(x)),\\R(,3x)),4))))}{\fldrslt }}
+\par \pard Un vecteur entre pare{\i ntheses et co}mpos\'e9 de formules:
+\par \pard \qc {\field{\*\fldinst eq \\B(\\A(\\F(x+sin(x),1),\\R(27,sin(x)+ch(th(x))),\\I(1,2,log(x+sin(x)))))}{\fldrslt }}
+\par \pard Une formu{\ul le ce}ntr\'e9e:
+\par \pard \qc (sc) : {\field{\*\fldinst eq \\F(sin(x),x)}{\fldrslt }}
+\par \pard Et une d{\b\i erni}{\b\i \'e8}{\b\i re a dr}oite:
+\par \pard \qr x={\field{\*\fldinst eq \\R(,\\R(3,\\R(,x+sin(x)+log(x)+1)))}{\fldrslt }}+y
+\par \pard
+\par
+\par
+\par }
diff --git a/support/w2latex/EXEMPLES/9word.rtf b/support/w2latex/EXEMPLES/9word.rtf
new file mode 100644
index 0000000000..3ccb49d834
--- /dev/null
+++ b/support/w2latex/EXEMPLES/9word.rtf
@@ -0,0 +1,15 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy13\hr15\min47}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036 Voici une s\'e9rie de formules math\'e9matiques:
+\par Tout d'abord une int\'e9grale: {\field{\*\fldinst eq \\I(0,1,y) f(x,y) }{\fldrslt }}
+\par Ensuite une Matrice:{\field{\*\fldinst eq \\A(x1.x2.x3,y1.y2.y3)}{\fldrslt }}
+\par mais ce n'est pas beau: {\field{\*\fldinst eq \\X(\\A(x1 x2,x3 x4,x5 x6))}{\fldrslt }}
+\par Une fraction rationelle:{\field{\*\fldinst eq \\F(f(x)+3,g(x)-g(x-h))}{\fldrslt }}
+\par Une racine: {\field{\*\fldinst eq \\R(3,x+x2+2)}{\fldrslt }}
+\par Une liste: {\field{\*\fldinst eq \\L(x1,x2,x3)}{\fldrslt }}
+\par Des coordonn\'e9es: {\field{\*\fldinst eq \\S(3.4)}{\fldrslt }}
+\par Une superposition?: {\field{\*\fldinst eq \\O(3.5)}{\fldrslt }}
+\par Et fin du test.
+\par
+\par }
diff --git a/support/w2latex/EXEMPLES/All_About_Grep.rtf b/support/w2latex/EXEMPLES/All_About_Grep.rtf
new file mode 100644
index 0000000000..53db44d3de
--- /dev/null
+++ b/support/w2latex/EXEMPLES/All_About_Grep.rtf
@@ -0,0 +1,407 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f200\fnil MitreLogo;}{\f201\fnil MitreSymbol;}
+{\f2222\fnil MITRE;}{\f14988\fnil BI Garamond BoldItalic;}{\f14989\fnil B Garamond Bold;}{\f14990\fnil I Garamond LightItalic;}{\f14991\fnil Garamond;}{\f15018\fnil BI Palatino BoldItalic;}{\f15019\fnil B Palatino Bold;}{\f15020\fnil I Palatino Italic;}
+{\f15021\fnil Palatino;}}{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\tqc\tx4320\tqr\tx8640
+\f156 \sbasedon0\snext243 footer;}{\s244\tqc\tx4320\tqr\tx8640 \f156 \sbasedon0\snext244 header;}{\f156 \sbasedon222\snext0 Normal;}{\s1\fi720 \f156 \sbasedon0\snext1 Description Paragraph;}{\s2\li900\ri720 \f156 \sbasedon0\snext2 Item;}{\s3 \f156\fs36
+\sbasedon0\snext3 Chapter Header;}}{\info{\author Rich Siegel}}\margl1440\margr2160\widowctrl\ftnbj\ftnrestart \sectd \linemod0\linex0\cols1\colsx0\endnhere {\header \pard\plain \li180\ri-20\tx7200\tx9619 \f156 {\f20\fs20 \par
+}}{\footer \pard\plain \li180\ri-20\tx7200\tx9619 \f156 {\f20\fs20 \par
+}}\pard\plain \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 \f156 {\f21 ____________________________________________________________\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f21\fs28 INTRODUCTION TO GREP\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f21 ____________________________________________________________\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f20\fs20 grep}{\f20\fs20 is a a method of pattern matching that derives from the Unix\'aa system. You are probably familiar with simpl
+e pattern matching from using word processors; when you ask a word processor to find all instances of the word "black", it is performing a simple pattern match, where each letter has to match literally. Matching strings in this manner is not very hard.
+\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20
+But the ability to match strings in a more general manner is both more powerful and more complicated. It allows for sophisticated pattern matching operations, such as matching all words that begin with the letter "P" and end with the letters "er", or dele
+ting the first word of every line. Grep provides a powerful means of doing this.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+\par
+\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f21 \page ____________________________________________________________\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f21\fs28 HOW GREP WORKS\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f21 ____________________________________________________________\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20
+The "grep" mode of searching and replacing is a powerful tool. At the expense of being somewhat slower than normal text searching, using grep allows the user to search for one of a set of many strings instead of a particular string. As a simple example,
+you can search for any occurrence of an identifier beginning with the letter }{\f22\fs20 P}{\f20\fs20 , or all lines that begin with a left brace.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 A }{\b\f20\fs20 pattern}{\f20\fs20
+ is a string of characters that, in turn, describes a set of strings of characters. An example of a set of strings is the set of all strings that begin with the letter }{\f22\fs20 P}{\f20\fs20 and end with the letter }{\f22\fs20 r}{\f20\fs20
+; the strings "Ptr" and "ProcPtr" are members of this set. We say that a string is }{\b\f20\fs20 matched}{\f20\fs20 by a pattern if it is a member of the set described by the pattern. Patterns are composed of sub-patterns which are patte
+rns in themselves; this is how complicated patterns may be formed.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+Some examples of grep patterns:\par
+\par
+To replace a Pascal comment with a C comment, you would use \par
+}{\f22\fs20 \tab \{\\([^\}]*\\)\}\par
+}{\f20\fs20 to match the comment and\par
+}{\f22\fs20 \tab /*\\1*/\par
+}{\f20\fs20 to replace it.\par
+To change all words that begin with the letter}{\f22\fs20 P }{\f20\fs20 to begin with the letter}{\f22\fs20 Q}{\f20\fs20 , you would use\par
+}{\f22\fs20 \tab \\<P\\([A-Za-z0-9]*\\)\\>\par
+}{\f20\fs20 to match the word and\par
+}{\f22\fs20 \tab Q\\1\par
+}{\f20\fs20 to replace it.\par
+\par
+To change a list of names; ie:\par
+}{\f22\fs20 \tab FrameRect\par
+\tab PaintRect\par
+\tab EmptyRect\par
+\par
+}{\f20\fs20 to a list of names, followed by strings containing those names; i.e.}{\f22\fs20 \par
+\tab FrameRect,\tab "FrameRect",\par
+\tab PaintRect,\tab "PaintRect",\par
+\tab EmptyRect,\tab "EmptyRect",\par
+\par
+}{\f20\fs20 you would use\par
+}{\f22\fs20 \tab \\([A-Za-z][A-Za-z]*\\)\par
+}{\f20\fs20 to match the name and\par
+}{\f22\fs20 \tab \\1,\tab "\\1",\par
+}{\f20\fs20 to replace it.\par
+\par
+\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20
+You don't have to understand how these work now; in fact, it would be surprising if you do. The following section goes through the grep pattern matching and replacement rules step by step, so that by the end of it you should be able to understand how eac
+h of these grep patterns works and be able to make your own.\page \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f21 ____________________________________________________________\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f21\fs28 PATTERN MATCHING AND REPLACEMENT RULES\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f21 ____________________________________________________________\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f20\fs20 A note on notation:}{\f20\fs20
+ Writing about patterns and strings can be very confusing, since patterns and strings are made up of characters, as is this text. Therefore, we use certain typographical conventions to distinguish various usages.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 All literal characters will be in the courier font; therefore,}{\f22\fs20 a }{\f20\fs20 and}{\f22\fs20 xyz }{\f20\fs20
+refer to those literal strings of characters.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 All patterns, when talked about in the abstract, will be italicized; therefore, }{\i\f20\fs20 p}{\f20\fs20 and }{\i\f20\fs20 q}{\f20\fs20
+ refer to abstract patterns.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 All strings, when talked about in the abstract, will be Greek letters; therefore, \'a7 and \'b5 refer to abstract strings.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20
+Sometimes we will be referring to parts of strings or patterns within longer ones. In these cases, the parts that are being referred to will be underlined. Therefore, in the string}{\f22\fs20 xx}{\f22\fs20\ul aab}{\f22\fs20 x}{\f20\fs20
+, only the sub-string}{\f22\fs20 aab }{\f20\fs20 is actually being referred to; the other letters are used for context.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 In the examples, a string that can occur anywhere in a line will be preceded and followed by an ellipsis (}{\f22\fs20 \'c9)}{\f20\fs20 ; i.e. }{\f22\fs20
+\'c9xyz\'c9}{\f20\fs20 . If it can occur only at the beginning of the line, it will only be followed by an ellipsis; i.e., }{\f22\fs20 xyz\'c9}{\f20\fs20
+. Similarly, if it can occur only at the end of the line, it will be preceded but not followed by an ellipsis.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 In some cases, the state of case sensitivity affects the results of a pattern match. In the examples we have noted when this is this case.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f21\fs28\ul Pattern matching}{\f20\fs28 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f21 Simple matching}{\f21 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+1. Any character, with certain exceptions described below, is a pattern that matches itself.\par
+\par
+}{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx9619 {\f20\fs20 \tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \tab }{\f20\fs20\ul With case sensitivity}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f22\fs20 X}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9X\'c9\tab \par
+}{\f20\fs20 \tab doesn't match\tab }{\f22\fs20 \'c9x\'c9\tab }{\f20\fs20 on}{\f22\fs20 \par
+}{\f20\fs20 \tab but matches\tab }{\f22\fs20 \'c9x\'c9\tab }{\f20\fs20 off\par
+\par
+\par
+\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 2.}{\i\f20\fs20 \tab }{\f20\fs20 A pattern }{\i\f20\fs20 x}{\f20\fs20 followed by a pattern }{\i\f20\fs20 y}{\f20\fs20 forms a pattern }{\i\f20\fs20 xy}{
+\f20\fs20 that matches any string \'a7\'b5 where \'a7 can be matched by }{\i\f20\fs20 x}{\f20\fs20 and \'b5 can be matched by }{\i\f20\fs20 y}{\f20\fs20 . We can, of course, take the compound pattern }{\i\f20\fs20 xy}{\f20\fs20
+ and concatenate yet another pattern }{\i\f20\fs20 z}{\f20\fs20 onto it, forming the pattern }{\i\f20\fs20 xyz}{\f20\fs20 .\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \tab }{\f20\fs20\ul With case sensitivity}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f22\fs20 XY}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9XY\'c9\par
+}{\f20\fs20 \par
+\tab }{\f22\fs20 Ptr}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9Ptr\'c9}{\f20\fs20 \par
+\tab \tab doesn't match\tab }{\f22\fs20 \'c9ptr\'c9\tab }{\f20\fs20 on}{\f22\fs20 \par
+}{\f20\fs20 \tab \tab but does match\tab }{\f22\fs20 \'c9ptr\'c9\tab }{\f20\fs20 off}{\f22\fs20 \par
+}{\f20\fs20 \par
+\par
+\par
+3.\tab The character}{\f22\fs20 . }{\f20\fs20 is a pattern that will match any character.\par
+\par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f22\fs20 P.r}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9Ptr\'c9\tab \par
+\tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9P.r\'c9\tab }{\f20\fs20 \par
+}{\f22\fs20 \par
+}{\f20\fs20 \tab }{\f22\fs20 ..}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9ab\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9a.\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 4.\tab The character}{\f22\fs20 \\ }{\f20\fs20 followed by any character except}{\f22\fs20 (}{\f20\fs20 ,}{\f22\fs20 )}{\f20\fs20 ,}{\f22\fs20 <}{
+\f20\fs20 ,}{\f22\fs20 >}{\f20\fs20 ,}{\f22\fs20 }{\f20\fs20 or one of the digits }{\f22\fs20 1}{\f20\fs20 -}{\f22\fs20 9}{\f20\fs20 is a pattern that matches that character.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f22\fs20 P\\.r}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9P.r\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab }{\f20\fs20 but doesn't match}{\f22\fs20 \'c9Ptr\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\par
+}{\f20\fs20 \tab }{\f22\fs20 P\\\\r}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9P\\r\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 5.\tab A string of characters }{\i\f20\fs20 s}{\f20\fs20 surrounded by square brackets (}{\f22\fs20 [ }{\f20\fs20 and a}{\f22\fs20 ]) }{\f20\fs20
+forms a pattern}{\f22\fs20 [}{\i\f22\fs20 s}{\f22\fs20 ] }{\f20\fs20 that matches a single instance of one of the characters in the string }{\i\f20\fs20 s}{\f20\fs20 . Note that the case sensitivity flag does }{\f20\fs20\ul not}{\f20\fs20
+ apply to characters between square brackets: letters must match exactly.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+\tab }{\f22\fs20 [abc]}{\f20\fs20 \tab matches\tab \tab }{\f22\fs20 \'c9}{\f22\fs20\ul a}{\f22\fs20 b\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab }{\f20\fs20 and matches\tab \tab }{\f22\fs20 \'c9x}{\f22\fs20\ul b}{\f22\fs20 \'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab }{\f20\fs20 but doesn't match\tab }{\f22\fs20 \'c9}{\f22\fs20\ul ab}{\f22\fs20 \'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f22\fs20 \par
+}{\f20\fs20 \tab }{\f22\fs20 [abc][xyz]}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9ax\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab }{\f20\fs20 but doesn't match\tab }{\f22\fs20 \'c9ab\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\par
+}{\f20\fs20 \tab }{\f22\fs20 [abc]x}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9bx\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab }{\f20\fs20 but doesn't match}{\f22\fs20 \tab \'c9Bx}{\b\f22\fs20 \'c9}{\f20\fs20 \par
+\par
+\par
+\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 5a.\tab The pattern}{\f22\fs20 [^}{\f20\fs20 \'a7}{\f22\fs20 ] }{\f20\fs20 matches any character that is not in the string \'a7
+. Special characters will be taken literally in this context. Again, case sensitivity doesn't apply to characters between square brackets.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f22\fs20 [^abc]}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9x\'c9\par
+\tab \tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9A\'c9\par
+\tab \tab }{\f20\fs20 but doesn't match\tab }{\f22\fs20 \'c9a\'c9\par
+\tab \par
+}{\f20\fs20 \tab }{\f22\fs20 [^abc]a}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9xa\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab }{\f20\fs20 but doesn't match\tab }{\f22\fs20 \'c9aa\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\f20\fs20 \par
+\tab }{\f22\fs20 [^.]a}{\f20\fs20 \tab \tab matches\tab }{\f22\fs20 \'c9xa\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab }{\f20\fs20 but doesn't match\tab }{\f22\fs20 \'c9.a\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\f20\fs20 \par
+\par
+\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 5b.\tab If a string of three characters in the form}{\f22\fs20 [}{\i\f22\fs20 a}{\f22\fs20 -}{\i\f22\fs20 b}{\f22\fs20 ] }{\f20\fs20
+occurs in in the pattern }{\i\f20\fs20 p}{\f20\fs20 , this represents all of the characters from }{\i\f22\fs20 a}{\f20\fs20 to }{\i\f22\fs20 b}{\f20\fs20 inclusive. All special characters are taken literally; i.e.,}{\f22\fs20 [!-.] }{\f20\fs20
+denotes the characters from }{\f22\fs20 ! to .}{\f20\fs20 . Notice that the only way to include the character}{\f22\fs20 ] }{\f20\fs20 in }{\i\f20\fs20 p}{\f20\fs20
+ is to make it the very first character. Likewise, the only way to include the character}{\f22\fs20 - }{\f20\fs20 in }{\i\f20\fs20 p}{\f20\fs20 is to have it either at the very beginning or the very end of }{\i\f20\fs20 p}{\f20\fs20
+. Single characters and ranges may both be used between brackets.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+\tab }{\f22\fs20 [a-c]}{\f20\fs20 \tab \tab matches\tab }{\f22\fs20 \'c9}{\f22\fs20\ul a}{\f22\fs20 c\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\f20\fs20 \tab \tab \tab and matches\tab }{\f22\fs20 \'c9x}{\f22\fs20\ul c}{\f22\fs20 \'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f22\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f22\fs20 [1x-z]a}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9}{\f22\fs20\ul 1a}{\f22\fs20 \'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9}{\f22\fs20\ul x}{\f22\fs20 a\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f22\fs20 [-x-z]a}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9}{\f22\fs20\ul -a}{\f22\fs20 \'c9\par
+\tab \tab \tab }{\f20\fs20 and matches\tab \'c9}{\f20\fs20\ul xa}{\f20\fs20 \'c9}{\f22\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 6.\tab Any pattern }{\i\f20\fs20 p}{\f20\fs20 formed by any combination of rules 1 or 3-5b followed by a}{\f22\fs20 * }{\f20\fs20 forms the pattern}{
+\f22\fs20 }{\i\f20\fs20 p}{\f22\fs20 * }{\f20\fs20 that matches zero or more consecutive occurrences of characters matched by}{\f22\fs20 }{\i\f20\fs20 p}{\f20\fs20 .\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}{\b\f20\fs20 \tab Examples:\par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \tab }{\f20\fs20\ul With case sensitivity}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f22\fs20 [a-c]*}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9a\par
+\tab \tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9acbca\par
+\tab \tab \tab }{\f20\fs20 and matches\tab nothing\par
+}{\f22\fs20 \par
+}{\f20\fs20 \tab }{\f22\fs20 A[a-z]*}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9A\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9Abcb\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\tab \tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9abc\'c9}{\f20\fs20 \tab on}{\f22\fs20 \par
+\tab \tab }{\f20\fs20 but doesn't match\tab }{\f22\fs20 \'c9abc\'c9}{\f20\fs20 \tab off}{\f22\fs20 \par
+\par
+}{\f20\fs20 \tab }{\f22\fs20 .*}{\f20\fs20 \tab \tab matches\tab anything from\par
+\tab \tab \tab \tab \tab beginning of a \par
+\tab \tab \tab \tab \tab line to the end of\par
+\tab \tab \tab \tab \tab the line\par
+}{\f22\fs20 \par
+}{\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \tab }{\f22\fs20 [abc]*}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9}{\f22\fs20\ul b}{\f22\fs20 \par
+\tab \tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9}{\f22\fs20\ul ab}{\f22\fs20 \par
+\tab \tab }{\f20\fs20 but doesn't match just\tab }{\f22\fs20 \'c9}{\f22\fs20\ul a}{\f22\fs20 b\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f22\fs20 \tab \tab }{\f20\fs20 (because it matches\par
+\tab \tab the longest string\par
+\tab \tab possible)}{\f22\fs20 \par
+\par
+}{\f20\fs20 \tab (}{\f22\fs20 .*)}{\f20\fs20 \tab \tab matches\tab }{\f22\fs20 \'c9(aaa)\'c9}{\f20\fs20 \tab \par
+}{\f22\fs20 \tab \tab \tab }{\f20\fs20 and matches\tab }{\f22\fs20 \'c9()\'c9}{\f20\fs20 \tab \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 \page {\b\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f20\fs20 A closer example:\par
+\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 Let us examine more closely how the pattern}{\f22\fs20 (.*) }{\f20\fs20
+matches text. This pattern will match any string that is enclosed in parentheses. This includes the string}{\f22\fs20 ()}{\f20\fs20 , since the sub-pattern}{\f22\fs20 .* }{\f20\fs20 will match the empty string between the}{\f22\fs20 ( }{\f20\fs20
+and the}{\f22\fs20 )}{\f20\fs20 . But what about the string}{\f22\fs20 (())}{\f20\fs20 ? Since the pattern}{\f22\fs20 .* }{\f20\fs20 will match any number of occurrences of all characters, won't it match the}{\f22\fs20 (() }{\f20\fs20
+and cause the last}{\f22\fs20 ) }{\f20\fs20 in the string to fail to match? Or conversely, won't the sub-pattern}{\f22\fs20 (.* }{\f20\fs20 match the whole string, leaving the}{\f22\fs20 ) }{\f20\fs20 at the end of the pattern unmatched?\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 The answer to this is that any pattern of the form}{\f22\fs20 }{\i\f20\fs20 p}{\f22\fs20 * }{\f20\fs20 in a pattern}{\f22\fs20 }{\i\f20\fs20 p}{
+\f22\fs20 *}{\i\f20\fs20 y}{\f22\fs20 }{\f20\fs20 will match the }{\f20\fs20\ul largest}{\f20\fs20 number of occurrences of whatever }{\i\f20\fs20 p}{\f20\fs20 matches }{\f20\fs20\ul that still allows a match to }{\i\f20\fs20\ul y}{\f20\fs20
+. Therefore, in matching}{\f22\fs20 (()) }{\f20\fs20 against the pattern}{\f22\fs20 (.*), }{\f20\fs20 only the inner parentheses in the string}{\f22\fs20 (()) }{\f20\fs20 will be matched by the sub-pattern}{\f22\fs20 .*}{\f20\fs20 .\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+\par
+\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\b\f21 Remembering sub-strings\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20
+We now have the ability to form patterns that are composed of sub-patterns, and will find it useful to "remember" sub-strings matched by sub-patterns and to be able to match against those substrings.\par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 \par
+}\pard \li180\ri-20\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx7200\tx9619 {\f20\fs20 7.\tab A pattern surrounded by}{\f22\fs20 \\( }{\f20\fs20 and}{\f22\fs20 \\) }{\f20\fs20
+is a pattern that matches whatever the sub-pattern matches. This is useful for matching two or more instances of the same string and when doing replacements.\par
+\par
+\tab }{\b\f20\fs20 Example:\par
+}{\f20\fs20 \par
+\tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+\tab }{\f22\fs20 \\(abc\\)}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9abc}{\f20\fs20 \par
+\tab }{\f22\fs20 \\(ab(\\)}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9ab(\par
+\par
+\par
+}{\f20\fs20 \par
+8.\tab A}{\f22\fs20 \\ }{\f20\fs20 followed by }{\i\f20\fs20 n}{\f20\fs20 , where }{\i\f20\fs20 n}{\f20\fs20 is one of the digits }{\f22\fs20 1-9}{\f20\fs20
+, is a pattern that matches whatever was matched by the sub-pattern beginning with the "nth" occurrence of }{\f22\fs20 \\(}{\f20\fs20 . A pattern}{\f22\fs20 \\}{\i\f20\fs20 n}{\f20\fs20 may be followed by an}{\f22\fs20 *}{\f20\fs20
+, and forms a pattern}{\f22\fs20 }{\f20\fs20 \\}{\i\f20\fs20 n}{\f22\fs20 * }{\f20\fs20 that matches zero or more occurrences of whatever }{\f22\fs20 \\}{\i\f20\fs20 n}{\f20\fs20 matches.\par
+\par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+\tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+\tab }{\f22\fs20 \\(abc\\)\\1}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9abcabc\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+\par
+}{\f20\fs20 \tab }{\f22\fs20 \\(a.c\\)\\1}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9axcaxc\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\f20\fs20 \tab \tab \tab but not\tab \tab }{\f22\fs20 \'c9axcazc\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\f20\fs20 \tab \tab \tab nor\tab \tab }{\f22\fs20 \'c9axcaXc\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\b\f20\fs20 \par
+}{\f20\fs20 Note that in this last pattern, the sub-pattern}{\f22\fs20 \\1 }{\f20\fs20 does not imply a re-application of the sub-pattern}{\f22\fs20 a.c}{\f20\fs20 , but what}{\f22\fs20 a.c }{\f20\fs20 matches. If}{\f22\fs20 \\(a.c\\) }{\f20\fs20
+was matched with the string}{\f22\fs20 axc}{\f20\fs20 , then the sub-pattern}{\f22\fs20 \\1 }{\f20\fs20 would try to match the literal string}{\f22\fs20 axc }{\f20\fs20 against the remainder of the search string. Therefore, the pattern}{\f22\fs20 \\
+(a.c\\)\\1 }{\f20\fs20 will match}{\f22\fs20 axcaxc}{\f20\fs20 , but will not match}{\f22\fs20 axcazc}{\f20\fs20 .\par
+\par
+\par
+\page \par
+}{\b\f21 Constraining matches}{\b\f20 \par
+}{\b\f20\fs20 \par
+}{\f20\fs20 Sometimes it is useful to be able to "constrain" patterns to match only if certain conditions in the context outside the string matched are met.\par
+\par
+9.\tab A pattern surrounded by}{\f22\fs20 \\< }{\f20\fs20 and}{\f22\fs20 \\> }{\f20\fs20 is a pattern that matches whatever is matched by the sub-pattern, provided that the first and last characters of the matched string can be matched by}{\f22\fs20
+ [A-Za-z0-9_] }{\f20\fs20 and that the characters immediately surrounding the matched string cannot be matched by}{\f22\fs20 [A-Za-z0-9_] }{\f20\fs20 (i.e., can be matched by}{\f22\fs20 [^A-Za-z0-9_]}{\f20\fs20 ).\par
+\par
+\tab This is used to match any string that matches the sub-pattern only if the matched string begins and ends on a "word" boundary (a "word" being a C identifier).\par
+\par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+\tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+\tab }{\f22\fs20 \\<ab*\\>}{\f20\fs20 \tab matches\tab }{\f22\fs20 \'c9+}{\f22\fs20\ul ab}{\f22\fs20 +\'c9}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\f20\fs20 \tab \tab but doesn't match\tab }{\f22\fs20 \'c9}{\f22\fs20\ul +ab+}{\f22\fs20 \'c9\par
+\tab }{\f20\fs20 \tab and doesn't match}{\f22\fs20 \tab \'c9+}{\f22\fs20\ul ab}{\f22\fs20 c+}{\f20\fs20 \par
+}{\f22\fs20 \par
+}{\f20\fs20 \par
+\par
+10.\tab A pattern }{\i\f20\fs20 p}{\f20\fs20 that is preceded by a}{\f22\fs20 ^ }{\f20\fs20 forms a pattern}{\f22\fs20 ^}{\i\f22\fs20 p}{\f20\fs20 . If the pattern}{\f22\fs20 ^}{\i\f22\fs20 p}{\f20\fs20
+ is not preceded by any other pattern, it matches whatever }{\i\f20\fs20 p}{\f20\fs20 matches as long as the first character matched by }{\i\f20\fs20 p}{\f20\fs20 occurs at the beginning of a line. If the pattern}{\f22\fs20 ^}{\i\f22\fs20 p}{
+\f20\fs20 is preceded by another pattern, then the}{\f22\fs20 ^ }{\f20\fs20 is taken literally.\par
+\par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+\tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+\tab }{\f22\fs20 ^ab*}{\f20\fs20 \tab matches\tab \tab }{\f22\fs20\ul ab}{\f22\fs20 \'c9}{\f20\fs20 \tab \par
+\tab \tab but doesn't match\tab }{\f22\fs20 x}{\f22\fs20\ul ab}{\f22\fs20 \'c9}{\f20\fs20 \tab \par
+\par
+}{\f22\fs20 \tab ab^ab*}{\f20\fs20 \tab matches\tab }{\f22\fs20 ab^ab\'c9}{\f20\fs20 \tab \par
+\par
+\par
+\par
+11.\tab A pattern }{\i\f20\fs20 p}{\f20\fs20 that is followed by a}{\f22\fs20 $ }{\f20\fs20 forms a pattern }{\i\f20\fs20 p}{\f22\fs20 $}{\f20\fs20 . If the pattern }{\i\f20\fs20 p}{\f22\fs20 $}{\f20\fs20
+ is not followed by any other pattern, it matches whatever }{\i\f20\fs20 p}{\f20\fs20 matches as long as the last character matched by }{\i\f20\fs20 p}{\f20\fs20 occurs at the end of a line. If the pattern }{\i\f20\fs20 p}{\f22\fs20 $ }{\f20\fs20
+is followed by another pattern, then the }{\f22\fs20 $}{\f20\fs20 is taken literally.\par
+\par
+\tab }{\b\f20\fs20 Examples:\par
+}{\f20\fs20 \par
+\tab }{\f20\fs20\ul Pattern}{\f20\fs20 \tab \tab \tab \tab }{\f20\fs20\ul Text}{\f20\fs20 \par
+\tab }{\f22\fs20 ab$}{\f20\fs20 \tab matches\tab \tab }{\f22\fs20 \'c9ab}{\f20\fs20 \tab }{\f22\fs20 \par
+}{\f20\fs20 \tab \tab but doesn't match\tab }{\f22\fs20 \'c9}{\f22\fs20\ul ab}{\f22\fs20 x}{\f20\fs20 \tab }{\f22\fs20 \par
+\par
+}{\f20\fs20 \tab }{\f22\fs20 ab$ab}{\f20\fs20 \tab matches\tab \tab }{\f22\fs20 \'c9ab$ab\'c9\par
+}{\f20\fs20 \par
+\tab }{\f22\fs20 ^ab$}{\f20\fs20 \tab matches\tab \tab }{\f22\fs20 ab}{\f20\fs20 \par
+\tab \tab but doesn't match\tab }{\f22\fs20 ab\'c9\par
+\par
+\par
+}{\f20\fs20 \tab Note that the characters }{\f22\fs20 ^}{\f20\fs20 and }{\f22\fs20 $}{\f20\fs20 constrain pattern matches to begin or end at line boundaries, and so can be combined to constr
+ain a pattern to match an entire line only (as in the above example).\par
+\par
+We mentioned at the beginning the ability to search for any identifier beginning with the letter }{\f22\fs20 P}{\f20\fs20 . This would be accomplished with the pattern }{\f22\fs20 \\<[Pp][A-Za-z0-9_]*\\>}{\f20\fs20
+. Note that, if you have case sensitivity is off, then the patterns}{\f22\fs20 \\<P[A\endash Za\endash z0\endash 9_]*\\> }{\f20\fs20 and }{\f22\fs20 \\<p[A-Za-z0-9_]*\\>}{\f20\fs20
+ would match the same strings. Also, if word-match is on, then any of these patterns with the}{\f22\fs20 \\<}{\f20\fs20 and}{\f22\fs20 \\>}{\f20\fs20 removed will match the same strings.\par
+\par
+\par
+\par
+}{\b\f21 Replacement\par
+}{\f20\fs20 \par
+Grep provides not only a more sophisticated method of searching, but a sophisticated method of replacing as well. In a replacement string, the following substitutions are made before any text replacement occurs:\par
+\par
+1.\tab Each occurrence of the character }{\f22\fs20 &}{\f20\fs20 is replaced with whatever was last matched by the pattern.\par
+\par
+}{\b\f20\fs20 \tab Examples:\par
+}{\f20\fs20 \par
+\tab }{\f20\fs20\ul "Find" string}{\f20\fs20 \tab }{\f20\fs20\ul "Replace" string}{\f20\fs20 \tab }{\f20\fs20\ul Original text}{\f20\fs20 \tab }{\f20\fs20\ul Result}{\f20\fs20 \par
+}{\f22\fs20 \tab abc}{\f20\fs20 \tab \tab }{\f22\fs20 +&}{\f20\fs20 \tab \tab }{\f22\fs20 \'c9abc\'c9}{\f20\fs20 \tab \tab }{\f22\fs20 \'c9+abc\'c9}{\f20\fs20 \par
+}{\f22\fs20 \tab abc}{\f20\fs20 \tab \tab }{\f22\fs20 &&}{\f20\fs20 \tab \tab }{\f22\fs20 \'c9abc\'c9}{\f20\fs20 \tab \tab }{\f22\fs20 \'c9abcabc\'c9}{\f20\fs20 \par
+\tab \par
+\par
+2.\tab Each occurrence of a string of the form }{\f22\fs20 \\}{\i\f20\fs20 n}{\f20\fs20 , where }{\i\f20\fs20 n}{\f20\fs20 is one of the digits }{\f22\fs20 1}{\f20\fs20 -}{\f22\fs20 9}{\f20\fs20 , is repla
+ced by whatever was last matched by the sub-pattern beginning with the }{\i\f22\fs20 n}{\f20\fs20 th occurrence of }{\f22\fs20 \\(}{\f20\fs20 .\par
+\par
+}{\b\f20\fs20 \tab Examples:\par
+}{\f20\fs20 \par
+\tab }{\f20\fs20\ul "Find" string}{\f20\fs20 \tab \tab }{\f20\fs20\ul "Replace" string}{\f20\fs20 \tab }{\f20\fs20\ul Original text}{\f20\fs20 \tab }{\f20\fs20\ul Result}{\f20\fs20 \par
+}{\f22\fs20 \tab \\(a*\\)\\(b*\\)}{\f20\fs20 \tab }{\f22\fs20 \\1\\2}{\f20\fs20 \tab \tab }{\f22\fs20 aabb\'c9}{\f20\fs20 \tab \tab }{\f22\fs20 aabb\'c9\par
+\tab \par
+\tab \\(a*\\)\\(b*\\)}{\f20\fs20 \tab }{\f22\fs20 \\2\\1}{\f20\fs20 \tab \tab }{\f22\fs20 aabb\'c9}{\f20\fs20 \tab \tab }{\f22\fs20 bbaa\'c9}{\f20\fs20 \par
+\tab \par
+\par
+\par
+\par
+3.\tab Each occurrence of a string of the form }{\f22\fs20 \\}{\i\f22\fs20 p}{\f20\fs20 , where }{\i\f22\fs20 p}{\f20\fs20 is other than one of the digits 1-9, is replaced by }{\i\f22\fs20 p}{\f20\fs20 .\par
+\par
+}{\b\f20\fs20 \tab Examples:\par
+}{\f20\fs20 \par
+\tab }{\f20\fs20\ul "Find" string}{\f20\fs20 \tab \tab }{\f20\fs20\ul "Replace" string}{\f20\fs20 \tab }{\f20\fs20\ul Original text}{\f20\fs20 \tab }{\f20\fs20\ul Result}{\f20\fs20 \par
+}{\f22\fs20 \tab \\(a*\\)\\(b*\\)}{\f20\fs20 \tab }{\f22\fs20 \\1&\\2\\}{\f20\fs20 \tab }{\f22\fs20 aabb\'c9}{\f20\fs20 \tab \tab }{\f22\fs20 aa&bb\'c9\par
+\tab \par
+\tab \\(a*\\)\\(b*\\)}{\f20\fs20 \tab }{\f22\fs20 \\\\\\2\\1\\\\}{\f20\fs20 \tab }{\f22\fs20 aabb\'c9}{\f20\fs20 \tab \tab }{\f22\fs20 \\bbaa\\\'c9}{\f20\fs20 \par
+\par
+\par
+\tab This allows you to not only be able to search for a string satisfying a complex set of conditions, but also to be able to do a subsequent replacement that varies depending on the string that is matched.\par
+\par
+\par
+\page \par
+}{\b\f21\fs28 Some Examples\par
+}{\b\f20\fs20 \par
+}{\f20\fs20 \bullet \tab
+Suppose that you have written a program that is to become a Macintosh application (i.e., it uses the Macintosh ToolBox instead of stdio for the user interface). Suppose also that you have discovered that you have forgotten to put a }{\f22\fs20 \\p}{
+\f20\fs20 at the beginning of your string constants, so that your program is trying to
+ pass C strings instead of Pascal strings to the ToolBox (which only knows how to deal with Pascal strings). You can easily change all your C strings to Pascal strings by specifying }{\f22\fs20 "\\(.*\\)" }{\f20\fs20 as the search pattern and }{
+\f22\fs20 "\\\\p\\1" }{\f20\fs20 as the replacement string.\par
+\par
+\bullet \tab Suppose you decided to reverse the two arguments of the function "foo". You might try the pattern }{\f22\fs20 foo(\\([^,]*\\),\\([^)]*\\))}{\f20\fs20 as the search pattern and }{\f22\fs20 foo(\\2, \\1)}{\f20\fs20
+ as the replacement pattern. How does the search pattern work?\par
+\par
+\tab Let's assume we're trying to match some text that looks like }{\f22\fs20 foo(1,*bar)\par
+}{\f20\fs20 \par
+\bullet \tab }{\f22\fs20\ul foo(}{\f22\fs20 \\([^,]*\\),\\([^)]*\\))\tab }{\f20\fs20 matches}{\f22\fs20 \tab }{\f22\fs20\ul foo(}{\f22\fs20 1,*bar)\par
+}{\f20\fs20 \bullet \tab }{\f22\fs20 foo(}{\f22\fs20\ul \\([^,]*\\)}{\f22\fs20 ,\\([^)]*\\))\tab }{\f20\fs20 matches}{\f22\fs20 \tab foo(}{\f22\fs20\ul 1}{\f22\fs20 ,*bar)\par
+}{\f20\fs20 \bullet \tab }{\f22\fs20 foo(\\([^,]*\\)}{\f22\fs20\ul ,}{\f22\fs20 \\([^)]*\\))\tab }{\f20\fs20 matches}{\f22\fs20 \tab foo(1}{\f22\fs20\ul ,}{\f22\fs20 *bar)\par
+}{\f20\fs20 \bullet \tab }{\f22\fs20 foo(\\([^,]*\\),}{\f22\fs20\ul \\([^)]*\\)}{\f22\fs20 )\tab }{\f20\fs20 matches}{\f22\fs20 \tab foo(1,}{\f22\fs20\ul *bar}{\f22\fs20 )\par
+}{\f20\fs20 \bullet \tab }{\f22\fs20 foo(\\([^,]*\\),\\([^)]*\\)}{\f22\fs20\ul )}{\f22\fs20 \tab }{\f20\fs20 matches}{\f22\fs20 \tab foo(1,*bar}{\f22\fs20\ul )}{\f22\fs20 \par
+}{\f20\fs20 \par
+\tab Since }{\f22\fs20 \\([^,]*\\) }{\f20\fs20 matched }{\f22\fs20 1}{\f20\fs20 and }{\f22\fs20 \\([^)]*\\) }{\f20\fs20 matched}{\f22\fs20 *bar}{\f20\fs20 , the two arguments to foo, the replacement pattern }{\f22\fs20 foo(\\2, \\1)}{\f20\fs20
+ will result in }{\f22\fs20 foo(*bar,\~1)}{\f20\fs20 \par
+\par
+\tab This, unfortunately, won't work in the case of }{\f22\fs20 foo(1,(*bar)+2)}{\f20\fs20 , since }{\f22\fs20 \\([^)]*\\)}{\f20\fs20 will match only up to the first right parenthesis, leaving }{\f22\fs20 +2)}{\f20\fs20
+ unmatched. If we're sure that all calls to foo end with a semi-colon, however, we can change our pattern to }{\f22\fs20 foo(\\([^,]*\\),\\([^;]*\\)); . }{\f20\fs20
+In this pattern, instead of trying to match the second argument by matching everything up to the first right parenthesis, we match everything up to the}{\f22\fs20 );}{\f20\fs20 which terminates the invocation of foo.\par
+\par
+In this example we showed how to analyze a grep pattern by examining sub-patterns. This is a good way of figuring out
+ how to build a pattern as well. grep can be thought of as a small and rather cryptic programming language, with each pattern a program and sub-pattern a statement in this language. If you try to create a grep pattern by testing a small sub-pattern, then
+ adding and testing additional sub-patterns until the complete pattern is built, you may find building complex grep patterns not nearly as daunting as you first thought.\par
+\par
+\par
+}} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/BDwais.rtf b/support/w2latex/EXEMPLES/BDwais.rtf
new file mode 100644
index 0000000000..61ed57d92d
--- /dev/null
+++ b/support/w2latex/EXEMPLES/BDwais.rtf
@@ -0,0 +1,100 @@
+{\rtf1\ansi\deflang1024\deff0{\fonttbl{\f0\froman Times Roman;}{\f1\fnil Times;}{\f2\fmodern Courier;}}{\colortbl;\red0\green0\blue0;}{\stylesheet{\f1\cf1 \snext0 Normal;}{\s1 \f1\cf1 \sbasedon0\snext1 Cellule;}{\s2\tqc\tx5044\tqr\tx9636 \f1\cf1
+\sbasedon0\snext2 EnTêtePiedDePage;}{\s3 \f1\cf1 \sbasedon0\snext3 NoteDeBasDePage;}}{\info}\paperw11904\paperh16836\margl1133\margr1133\margt1416\margb1416\widowctrl\ftnbj\sectd\marglsxn1133\margrsxn1133\margtsxn1416\margbsxn1416\pgwsxn11904
+\pghsxn16836\pghsxn16836\sbknone\headery360\footery360\endnhere\pard\plain \qc \f1\cf1 {\b\fs36 CIRM Marseille-Luminy}
+\par
+\par {\b\fs36 Bases de donn\'e9es math\'e9matiques }
+\par
+\par {\b\fs36 15 juillet 1994}
+\par {\b\fs36 }
+\par \pard\plain \f1\cf1
+\par \pard\plain \qj \f1\cf1 \tab Le CIRM met \'e0 la disposition de la communaut\'e9 math\'e9matique fran\'e7aise et internationale un ensemble d'informations utiles aux chercheurs. Ces informations sont structur\'e9es sous forme de plusieurs bases
+de donn\'e9es informatis\'e9es accessibles depuis l'ext\'e9rieur du centre.
+\par \pard\plain \f1\cf1
+\par {\b 1. Les bases de donn\'e9es}
+\par
+\par \pard\plain \qj \f1\cf1 \tab Elles sont au nombre de trois :
+\par
+\par \tab - Les {\i ouvrages de la biblioth\'e8que}, qui comprend des notices bibliographiques pour les livres, th\'e8ses et rapports de recherche repertori\'e9s.
+\par \tab - Les {\i p\'e9riodiques de la biblioth\'e8que}, qui donne l'\'e9tat des collections de revues auxquelles la biblioth\'e8que est ou a \'e9t\'e9 abonn\'e9e.
+\par \tab - Les {\i r\'e9sum\'e9s des colloques} tenus au CIRM, qui fournit une pr\'e9sentation de chaque colloque depuis 1992 avec une fiche descriptive pour l'expos\'e9 de chaque conf\'e9rencier.
+\par \pard\plain \f1\cf1
+\par {\b 2. Les moyens d'acc\'e9s}
+\par
+\par \pard\plain \qj \f1\cf1 \tab Le CIRM, reli\'e9 au r\'e9seau r\'e9gional R3T2, et de l\'e0 au r\'e9seau national RENATER et \'e0 Internet, est accessible depuis tout poste informatique connect\'e9 sur l'un de ces r\'e9seaux.
+\par
+\par {\tab Les 3 bases de donn\'e9es sont servies par l'interm\'e9diaire d'un serveur Wais, logiciel du domaine public qui est d'usage courant dans les universit\'e9s et laboratoires de recherche.}
+\par
+\par \tab Les utilisateurs acc\'e8dent aux bases gr\'e2ce \'e0 un programme Wais ou \'e0 tout programme compatible sup\'e9rieur, du type Mosaic. Les requ\'eates sont faites sous forme de mots libres, \'e9ventuellement tronqu\'e9s, avec possibilit
+\'e9 de les lier par des connecteurs logiques (ET, OU, SAUF). La recherche est alors effectu\'e9e dans l'ensemble des textes et les fiches trouv\'e9es sont transmises au demandeur.
+\par \pard\plain \f1\cf1
+\par {\b 3. Le contenu}
+\par
+\par \pard\plain \qj \f1\cf1 {\i \tab - ouvrages de la biblioth\'e8que }{: la fiche de chaque ouvrage comprend, outre les informations de base (auteur, titre, \'e9diteur), une liste de mots-cl\'e9s qui permettent \'e0 la fois un acc\'e9s \'e0 la fiche
+lors d'une recherche th\'e9matique et l'information crois\'e9e lors de la consultation}
+\par \pard\plain \f1\cf1
+\par \pard\plain \f1\cf1 {\f2\fs20 CIRM> Horowitz, J. Coord.#... Les grands syst\'e8mes des sciences ...}
+\par {\f2\fs20 ******************************************************************}
+\par {\f2\fs20 Auteur : Horowitz, J. Coord.#Lions, J. L. Coord.}
+\par {\f2\fs20 Titre : Les grands syst\'e8mes des sciences et de la technologie}
+\par {\f2\fs20 Editeur : Masson, Paris#Milan#Barcelone, 1994}
+\par {\f2\fs20 Code AMS : 00A35#00A30#00A69#00A71#00A72#00A79#76NXX#01A74#00A99#00A71#01A99#62-02#}
+\par {\f2\fs20 Collection: Collection recherches en math\'e9matiques appliqu\'e9es}
+\par {\f2\fs20 Numero : 0028}
+\par {\f2\fs20 ISBN : 2-225-84293-0}
+\par {\f2\fs20 Inventaire: L16412}
+\par {\f2\fs20 Mots-cles :}
+\par {\f2\fs20 \tab technologie#math\'e9matique appliqu\'e9e#mod\'e8le math\'e9matique}
+\par {\f2\fs20 \tab#mod\'e9lisation#math\'e9matique#\'e9lectromagn\'e9tisme#g\'e9ophysique}
+\par {\f2\fs20 \tab#\'e9quation cin\'e9tique#fusion thermonucl\'e9aire#institution}
+\par {\f2\fs20 \tab scientifique#CEA#\'e9cole des mines#thermodynamique}
+\par {\f2\fs20 \tab#combustion#vorticit\'e9#industrie#fissure#vapeur atomique}
+\par \pard\plain \f1\cf1 {\f2\fs20 \tab#isotope#laser#climat#analyse asymptotique#physique des}
+\par \pard\plain \f1\cf1 {\f2\fs20 \tab particules#particule charg\'e9e#\'e9quation d'onde#\'e9pist\'e9mologie#philosophie}
+\par {\f2\fs20 \tab des sciences#physique nucl\'e9aire#physique des lasers#\'e9lectron}
+\par {\f2\fs20 \tab libre#\'e9conomie#syst\'e8me dynamique#organisation de la recherche#stabilit\'e9}
+\par {\f2\fs20 \tab nucl\'e9aire#relativit\'e9#optique#dynamique mol\'e9culaire#fluide charg\'e9#fusion}
+\par {\f2\fs20 \tab nucl\'e9aire par laser#math\'e9matique vue par le public#\'e9cole}
+\par {\f2\fs20 \tab Polytechnique#transform\'e9e de Wigner#\'e9quation de Liouville}
+\par \pard\plain \f1\cf1 {\f2\fs20 \tab#science et soci\'e9t\'e9#champ magn\'e9tique#g\'e9om\'e9trie diff\'e9rentielle}
+\par \pard\plain \f1\cf1 {\f2\fs20 \tab globale#ing\'e9nierie#mouvement brownien#espace lin\'e9aire de matrice#grand}
+\par {\f2\fs20 \tab syst\'e8me#\'e9coulement extr\'e8me compressible#m\'e9canique des fluides}
+\par {\f2\fs20 \tab compressibles#m\'e9tal irradi\'e9#physico-chimie#\'e9tat}
+\par {\f2\fs20 \tab limite#thermodynamique#analyse num\'e9rique#m\'e9thode des diff\'e9rences}
+\par {\f2\fs20 \tab finies#mod\'e9lisation en g\'e9ologie#industrie p\'e9troli\'e8re#}
+\par
+\par \pard\plain \f1\cf1
+\par
+\par \pard\plain \qj \f1\cf1 {\i \tab - p\'e9riodiques de la biblioth\'e8que}{ : pour chaque revue disponible sont indiqu\'e9s le titre et les indications d'\'e9dition ainsi que les num\'e9ros poss\'e9d\'e9s et les lacunes}
+\par \pard\plain \f1\cf1
+\par {\f2\fs20 TITRE : JOURNAL DE LA SOCIETE DE STATISTIQUE...}
+\par {\f2\fs20 ************************************************************}
+\par {\f2\fs20 TITRE}
+\par {\f2\fs20 JOURNAL DE LA SOCIETE DE STATISTIQUE DE PARIS (FRANCE)}
+\par {\f2\fs20 ABREV}
+\par {\f2\fs20 ABREV. AMS : J. SOC. STATIST.}
+\par {\f2\fs20 TOM}
+\par {\f2\fs20 1986 VOL.4 ----->}
+\par {\f2\fs20 ORI}
+\par {\f2\fs20 ENVOI SMF}
+\par {\f2\fs20 LAC}
+\par {\f2\fs20 MQ : VOL.1 A 3}
+\par
+\par \pard\plain \qj \f1\cf1 {\i \tab - r\'e9sum\'e9s des colloques}{ : chaque expos\'e9 donne lieu \'e0 un r\'e9sum\'e9, \'e9crit en TeX, traitement de texte utilis\'e9 habituellement en }math\'e9matique
+\par \pard\plain \f1\cf1
+\par {\f2\fs20 % D.Genoud : Codage et d\'e9codage d'expressions math\'e9matiques}
+\par {\f2\fs20 \\input cirm.def}
+\par {\f2\fs20 \\item\{\} Algorithmique et Programmation}
+\par {\f2\fs20 \\item\{\} CIRM 4 - 8 mai 1992}
+\par {\f2\fs20 \\item\{\} organisateur : D. Monasse}
+\par {\f2\fs20 \\item\{\} \{\\bf D.Genoud\} Codage et d\'e9codage d'expressions math\'e9matiques.}
+\par {\f2\fs20 \\par}
+\par {\f2\fs20 \\bigskip}
+\par {\f2\fs20 \\par}
+\par {\f2\fs20 \\item\{\} L'expos\'e9 pr\'e9sente plusieurs programmes r\'e9dig\'e9s en Turbo-Pascal}
+\par {\f2\fs20 consistant \'e0 entrer une expression $f(x)$ \'e0 une variable et \'e0 la coder}
+\par {\f2\fs20 formellement sous diff\'e9rentes formes classiques (en notations polonaises}
+\par {\f2\fs20 inverse ou directe, sous formes d'arbres ....}
+\par
+\par {\i \tab - }{\b d\'e9veloppements}{ : 2 am\'e9liorations sont actuellement en cours, l'une porte sur la possibilit\'e9 de naviguer dans la base des ouvrages gr\'e2ce aux mots-cl\'e9s, l'autre sur l'aide aux utilisateurs pour localiser les ouvrages
+sur les rayons. }
+\par }
diff --git a/support/w2latex/EXEMPLES/DOgurevich.rtf b/support/w2latex/EXEMPLES/DOgurevich.rtf
new file mode 100644
index 0000000000..2e9043812e
--- /dev/null
+++ b/support/w2latex/EXEMPLES/DOgurevich.rtf
@@ -0,0 +1,17 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\sbasedon222\snext0 Normal;}}{\info{\title
+DOgurevich.rtf}{\author Centre International de Rencontres Mathematiques}}\paperw11880\paperh16820\margl1701\margr1701\margt1417\margb1417\deftab709\widowctrl\ftnbj\makebackup \sectd \linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere
+\pard\plain \qc\sl360 {\b\f16 Evolving Algebras\par
+\par
+Yuri Gurevich , University of Michigan\par
+}\pard \sl360 {\f16 \par
+\par
+}\pard \sl360 {\f16 The main goal of the evolving algebra method is to provide succint and executable formal specifications for algorithms. Here the term algorithm is taken in a broad sense including programming lang
+uages, architectures, distibuted and real-time protocols, etc... Such specifications may be used for designing algorithms ; for testing, verifying and proving various properties of algorithms ; for documenting, maintaining, understanding and teaching algor
+ithms. The EA project started as an attempt to improve on Turing's thesis. Computation models and specification methods seem to be world apart. The EA project may be seen as an attempt to bridge the gap. The EA thesis says, rougly speaking, that every algo
+rithm can be viewed as an evolving algebra. The EA computation model has been used to prove a linear-time hierarchy theorem, but for the most part evolving algebra are used for specification and related purposes. In the talk, we plan to motivate and explai
+n basic evolving algebras, argue for the EA thesis, state the linear-time hierarchy theorem and illustrate the uses of evolving algebras as specification tool.\par
+}\pard \par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/DOjervell.rtf b/support/w2latex/EXEMPLES/DOjervell.rtf
new file mode 100644
index 0000000000..f312339650
--- /dev/null
+++ b/support/w2latex/EXEMPLES/DOjervell.rtf
@@ -0,0 +1,25 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\sbasedon222\snext0 Normal;}}{\info{\title
+DOjervell.RTF}{\author Centre International de Rencontres Mathematiques}}\paperw11880\paperh16820\margl1701\margr1701\margt1417\margb1417\deftab709\widowctrl\ftnbj\makebackup \sectd \linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere
+\pard\plain \qc\sl360 {\b\f16 Trakhtenbrot theorem for propositional linear logic\par
+\par
+Herman R. Jervell\par
+}\pard \sl360 {\f16 \par
+\par
+}\pard \sl360 {\f16 This is joint work with Staal Aanderaa. Boris Trakhtenbrot has proved the following strengthening of undecidability of derivability in predicate logic.\par
+}\pard \sl360 {\f16 For formulas F the following is recursively inseparable\par
+\tab - F is derivable\par
+\tab - F has a finite model as a counterexample\par
+\par
+}\pard \sl360 {\f16 We prove a Trakhenbrot theorem for propositional linear logic. For formulas\par
+}\pard \sl360 {\f16 \par
+F in propositional linear logic the following is recursively inseparable\par
+\tab - F is derivable\par
+\tab - F has a finite phase structure as a counterexample\par
+\par
+}\pard \sl360 {\f16 The interpolation theorem is true for propositional linear logic. Using the Trakhtenbrot theorem we can however prove that there is no recursive function of formulas A and B giving and interpolant C of
+ A --> B. The theorems are true both for the intuitionistic and the classical case.\par
+}\pard \par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/DOleivant-2.rtf b/support/w2latex/EXEMPLES/DOleivant-2.rtf
new file mode 100644
index 0000000000..0b22ac58da
--- /dev/null
+++ b/support/w2latex/EXEMPLES/DOleivant-2.rtf
@@ -0,0 +1,16 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\sbasedon222\snext0 Normal;}}{\info{\title
+DOleivant-2.rtf}{\author Centre International de Rencontres Mathematiques}}\paperw11880\paperh16820\margl1701\margr1701\margt1417\margb1417\deftab709\widowctrl\ftnbj\makebackup \sectd \linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere
+\pard\plain \qc\sl360 {\b\f16 Transfer principles between logic-based approaches to computational complexity \par
+}\pard \qc\sl360 {\b\f16 \par
+Daniel Leivant\par
+}\pard \sl360 {\f16 \par
+}\pard \sl360 {\f16 Transfer principles are useful in organizing and unifying the many logic-based approaches to computational complexity. They also suggest new results and elucidate difficulties and anomalies.\par
+}\pard \sl360 {\f16 We consider approaches to computational complexity based on provability in second and first order formalism, on definability in applicative languages, and on finite model theory. We show how conservation is a principle leading
+ from second to first order provability, and how variants in the Schoenfinkel.-Curry-Howard homomorphism lead from the latter to applicative programs. We exhibit a general boundedness principle that leads from predicative provability to bounded arithmet
+ic and from predicative recurrence to bounded recurrence \'88 la Cobham and Ritchie.\par
+}\pard \sl360 {\f16 Finally, we show that simple labeling leads from the latter to characterizations in finite model theory.\par
+}\pard \par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/DOliste.rtf b/support/w2latex/EXEMPLES/DOliste.rtf
new file mode 100644
index 0000000000..ae85c11b25
--- /dev/null
+++ b/support/w2latex/EXEMPLES/DOliste.rtf
@@ -0,0 +1,56 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\f20 \sbasedon222\snext0 Normal;}}{\info{\title
+DOliste.rtf}{\author Centre International de Rencontres Mathematiques}}\paperw11880\paperh16820\margl1134\margr1134\margt1134\margb1134\deftab709\widowctrl\ftnbj\makebackup \sectd \linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere\titlepg
+\pard\plain \qc\li2260\ri2812\box\brdrs \f20 {\b\i\f16\fs28 \par
+}\pard \qc\li2260\ri2812\box\brdrs {\b\i\f16\fs28 Programme des conf\'8erences\par
+}\pard \qc\li2260\ri2812\box\brdrs {\b\i\f16\fs28 \par
+}\pard {\f16 \par
+\par
+}\pard {\f16\fs20 \par
+}{\b\scaps\f16\fs20 Boerger}{\b\f16\fs20 Egon (Pise) :}{\i\f16\fs20 \tab \tab \tab On Reliable System Specification with Evolving Algebras.\par
+\tab \tab \tab \tab \tab \tab The Example of Lamport's Bakery Algorithms.\par
+\par
+}\pard \ri-1102 {\b\scaps\f16\fs20 DAnos V}{\b\f16\fs20 incent}{\b\scaps\f16\fs20 . (P}{\b\f16\fs20 aris VII)}{\b \tab \tab \tab }{\i Classical natural deductions\par
+}\pard {\i\f16\fs20 \par
+}{\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Dyckhoff}{\b\f16\fs20 Roy (St Andrew) :\tab }{\i\f16\fs20 \tab Permutations and Computations.\par
+}{\b\f16\fs20 \par
+}\pard {\b\scaps\f16\fs20 Gurevich}{\b\f16\fs20 Yuri (A. Arbor) :\tab }{\i\f16\fs20 \tab \tab Evolving Algebras : a tool for specification and complexity \tab \tab \tab \tab \tab \tab analysis.\par
+}\pard {\b\f16\fs20 \par
+}\pard {\b\scaps\f16\fs20 Hofmann}{\b\f16\fs20 Martin (Edimbourg) :}{\i\f16\fs20 \tab \tab On the interpretation of dependent types in locally \tab \tab \tab \tab \tab \tab \tab cartesian closed categories.\par
+}\pard {\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Honsell f}{\b\f16\fs20 (Udine) :\tab \tab }{\i\f16\fs20 \tab \tab Co-induction : some examples, some problems\par
+}{\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Jervell}{\b\f16\fs20 Herman (Oslo) :\tab \tab \tab }{\i\f16\fs20 Trakhtenbrot theorem for linear logic.\par
+}{\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Kanovich}{\b\f16\fs20 M. (Moscou) :\tab }{\i\f16\fs20 \tab \tab Resource sensitive type verification\par
+}{\b\f16\fs20 \par
+}\pard {\b\scaps\f16\fs20 Krivine}{\b\f16\fs20 Jean-Louis (Paris VII) :}{\i\f16\fs20 \tab \tab Weak second order lambda-calculus and imperative \tab \tab \tab \tab \tab \tab \tab programming.\par
+}\pard {\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Lambeck}{\b\f16\fs20 J. (Mac Gill) :\tab }{\i\f16\fs20 \tab \tab Titre non pr\'8ecis\'8e.\par
+}{\b\f16\fs20 \par
+}\pard {\b\scaps\f16\fs20 Leivant}{\b\f16\fs20 D. (Indiana) :\tab }{\i\f16\fs20 \tab \tab Transfer principles between logic-based approaches to \tab \tab \tab \tab \tab \tab computational complexity\par
+}\pard {\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Martin-Lof }{\b\f16\fs20 Peter (Leiden) :\tab }{\i\f16\fs20 \tab Might there exist absoluty undecidable proposition.\par
+}{\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Orlowska}{\b\f16\fs20 Ewa (Varsovie) : }{\i\f16\fs20 \tab \tab Algebraic models of information logics\par
+}{\b\f16\fs20 \par
+}\pard {\b\scaps\f16\fs20 Paulin-Mohring}{\b\f16\fs20 Christine (Lyon) :}{\i\f16\fs20 \tab Using streams to represent and prove properties of circuits \tab \tab \tab \tab \tab \tab in Coq : an example.\par
+}\pard {\b\scaps\f16\fs20 \par
+}\pard {\b\scaps\f16\fs20 Salvesen}{\b\f16\fs20 Anne (Oslo) :\tab \tab \tab }{\i\f16\fs20 Classes, inheritage and dynamic binding for type theory \tab \tab \tab \tab \tab \tab with explicite substitution.\par
+}\pard {\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Scedrov}{\b\f16\fs20 A. (Philadelphia) :}{\i\f16\fs20 \tab \tab Stochastic interaction and linear logic.\par
+}{\b\f16\fs20 \par
+}{\b\scaps\f16\fs20 Schwichtenberg}{\b\f16\fs20 Helmut (Munich) :}{\i\f16\fs20 \tab Termination for higher order rewrite systems.\par
+\par
+}\pard \ri-1008 {\b S}{\b\scaps\f16\fs20 cott p}{\b . (U}{\b\f16\fs20 ottawa)}{\b \tab \tab \tab }{\i Linear Lauchli Semantics and Full Completeness Theorems}{\i\f16\fs20 \par
+}\pard {\i\f16\fs20 \par
+}\pard \ri-1102 {\b S}{\b\scaps\f16\fs20 oloviev }{\b S}{\b\f16\fs20 oloviev}{\b . (A}{\b\f16\fs20 orrhus}{\b )}\tab \tab {\i Some sufficient conditions of the completeness of the equality \par
+\tab \tab \tab \tab \tab \tab of canonical morphisms in a given closed category.\par
+}\pard {\i\f16\fs20 \par
+}{\b\scaps\f16\fs20 Urzyczyn}{\b\f16\fs20 Pawel (Varsovie) :\tab }{\i\f16\fs20 \tab Remarks on recursive types.\par
+\par
+}\pard {\b\scaps\f16\fs20 Van Dalen}{\b\f16\fs20 D. (Utrecht) :\tab \tab }{\i\f16\fs20 \tab Professeur invit\'8e ne donnant pas de conf\'8erence.\par
+}} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/DOmartin-lof.rtf b/support/w2latex/EXEMPLES/DOmartin-lof.rtf
new file mode 100644
index 0000000000..0f15145d1d
--- /dev/null
+++ b/support/w2latex/EXEMPLES/DOmartin-lof.rtf
@@ -0,0 +1,18 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\sbasedon222\snext0 Normal;}}{\info{\title
+DOmartin-lof.rtf}{\author Centre International de Rencontres Mathematiques}}\paperw11880\paperh16820\margl1701\margr1701\margt1417\margb1417\deftab709\widowctrl\ftnbj\makebackup \sectd \linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere
+\pard\plain \qc\sl360 {\b\f16 MIGHT THERE EXIST ABSOLUTELY UNDECIDABLE PROPOSITIONS ?\par
+\par
+Per Martin-L\'9af\par
+}\pard \sl360 {\b\f16 \par
+}\pard \qc\sl360 {\b\f16 Department of Mathematics, University of Stockholm\par
+106 91 Stockholm, Sweden\par
+}\pard \sl360 {\b\f16 \par
+}{\f16 \par
+}{\b\f16\ul Abstract\par
+}{\f16 \par
+}\pard \sl360 {\f16 No, there are no absolutely undecidable propositions. The purpose of my talk is to explain why.\par
+}\pard \par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/Dyckhoff.rtf b/support/w2latex/EXEMPLES/Dyckhoff.rtf
new file mode 100644
index 0000000000..810abc58ff
--- /dev/null
+++ b/support/w2latex/EXEMPLES/Dyckhoff.rtf
@@ -0,0 +1,33 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\f16 \sbasedon222\snext0 Normal;}}{\info{\title
+Abstract for ICLP}{\author EBM}}\paperw11900\paperh16840\margl1080\margr1080\margt-1080\margb-720\widowctrl\ftnbj\fracwidth \sectd \sbknone\linemod0\linex0\cols1\endnhere \pard\plain \qc \f16 {\b\fs36 Permutations and computations\par
+}\pard \qc {\b\fs20 \par
+}\pard \qc Roy Dyckhoff\par
+\pard \qc\sb240 School of Mathematical & Computational Sciences, \par
+\pard \qc St Andrews University, St Andrews, Scotland\par
+\pard \qc\sb240 rd@dcs.st-and.ac.uk\par
+\pard \qj\sb240\sl320 {\b Abstract}. We consider the surjective Prawitz translation {\f23 f} from (sequent calculus) cut-free deriva
+tions to (natural) normal deductions, in order to examine the relationship between the uniform sequent calculus derivations of Miller, Nadathur, Pfenning & Scedrov [4] and the normal natural deductions of Prawitz [6,7] for first-order minimal logic. We con
+jecture (but cannot yet prove) that {\f23 f} identifies two such derivations iff they are permutation-equivalent, in the sense of Kleene\rquote
+s work [1] on permutations of intuitionistic derivations, a result similar to work of Zucker [8] on permutative conversions (for the system with cut and without the constants for disjunction and existential quantification). For the restricted language {
+\i fohH} of first-order hereditary Harrop sequents (no occurrences of disjunctions or existential quantifiers that would trigger use of {\f23 \'da}L or {\f23 $}L), we show (i) that {\f23 f} maps the uniform derivations of [4] onto the set {\b EN}
+ of deductions in [6] expanded normal form; and (ii) (if the conjecture is true) that {\f23 f} identifies two such derivations iff they are permutation-equivalent using just the permutations involving {\f23 \'c9}L, &L and {\f23 "}
+L. Third, restricting even further to the language {\i D} of definite formulae and goals, we show (i) that {\f23 f }maps the simple uniform derivations of Miller [2] onto {\b EN} and (ii) (again, if the conjecture is true) that {\f23 f}
+ identifies two such derivations iff they are permutation-equivalent using just the permutations involving &L and {\f23 "}
+L. This gives a bijection (also studied in [5]) from the set of uniform proofs with backchaining (a system [3] intermediate between sequent calculus and natural deduction) onto {\b EN}. \par
+\pard \qj\fi360\sl320 Thus, the logic programmer\rquote s restriction to the use for {\i D}
+ of uniform proofs with backchaining is complete not merely (as is well-known) w.r.t. derivability but also, in a bijective fashion, w.r.t. the construction of expanded normal deductions. We anticipate these ideas to be useful in a proof-theoretic integrat
+ion of functional and logic programming (based on natural deduction and sequent calculus respectively).\par
+\pard \par
+\pard \qj\fi-720\li720\sb40\sl240 {\fs22 [1]\tab Kleene,\~S.\~C.: Permutability of inferences in Gentzen\rquote s calculi LK and LJ, Mem. Amer. Math. Soc. (1952), 1\endash 26.\par
+[2]\tab Miller,\~D.: A logical analysis of modules in logic programming, J. Logic Programming }{\b\fs22 6}{\fs22 (1989), 79\endash 108.\par
+[3]\tab Miller,\~D.: Abstractions in logic programs, in: Odifreddi,\~P.\~(editor), Logic and computer science, vol. }{\b\fs22 31}{\fs22 of APIC Studies in Data Processing, Academic Press 1990, 329\endash 359.\par
+}\pard \qj\fi-720\li720\sl240 {\fs22 [4]\tab Miller,\~D., G.\~Nadathur, F.\~Pfenning & A.\~Scedrov\~: Uniform proofs as a foundation for logic programming, Annals of Pure and Applied Logic }{\b\fs22 51 }{\fs22 (1991), 125\endash 157.\par
+}\pard \qj\fi-720\li720\sb40\sl240 {\fs22 [5]\tab Pfenning, F.: Unpublished lecture notes, 1994.\par
+[6]\tab Prawitz,\~D.: Natural deduction, Almquist & Wiksell, Stockholm 1965.\par
+}\pard \qj\fi-720\li720\sb40 {\fs22 [7]\tab Prawitz,\~D.: Ideas and results in proof theory, in:}{\fs26 }{\fs22 Fenstad,\~J.\~E.: Proc. of the second Scandinavian logic symposium, North-Holland 1971, 235\endash 308.\par
+[8]\tab Zucker,\~J.: The correspondence between cut-elimination and normalization, Annals of Mathematical Logic}{\b\fs22 7}{\fs22 (1974), 1\endash 112.\par
+}\pard \par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/RTF-Spec.rtf b/support/w2latex/EXEMPLES/RTF-Spec.rtf
new file mode 100644
index 0000000000..1619f5ddcc
--- /dev/null
+++ b/support/w2latex/EXEMPLES/RTF-Spec.rtf
@@ -0,0 +1,699 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}{\f15\fnil N Helvetica Narrow;}{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}
+{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f200\fnil Dingbats;}{\f201\fnil Footnote;}{\f2006\fnil Architect;}}{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\tqc\tx4320\tqr\tx8640 \f20\fs20 \sbasedon0\snext243 footer;}{\s244\tqc\tx4320\tqr\tx8640 \f20\fs20 \sbasedon0\snext244
+header;}{\s255\sb240 \b\i\f21 \sbasedon0\snext0 heading 1;}{\f20\fs20 \sbasedon222\snext0 Normal;}{\s2 \f22\fs20 \sbasedon0\snext2 rtf encoding,re;}{\s3 \f22\fs20 \sbasedon0\snext3 rtf;}{\s4 \b\i\f21 \sbasedon0\snext4 Title;}{\s5\fi360\li2880 \f20\fs20
+\sbasedon0\snext5 body text;}}
+\margr1080\widowctrl\ftnbj \sectd \linemod0\linex0\cols1\endnhere\titlepg
+
+\pard\plain\sb1000\sa1000\qc\f20\b\fs72 Microsoft\line
+Rich Text Format Specification\par
+
+\pard\plain\li960\ri960\sa120\f21\i {\b Note: }This document was edited for distribution
+with the XcRichText widget by Dan Connolly <connolly@convex.com>.
+The cover pages have been reproduced
+by hand.
+\par
+
+\fi0 Annotations in Helvetica italic discuss the format as implemented by
+the XcRichText widget.
+\page
+\pard\plain\sb180\f20 Information in this document is subject to change without notice
+and does not represent a commitment on the part of Microsoft Corporation.
+\par
+
+You have the royalty-free right to reproduce and distribute
+products that use RTF (Rich Text Format) as a file conversion
+medium provided that you: (a) do not use Microsoft's name, logo,
+or trademarks to market your software product; and (b) agree to
+indemnify, hold harmless, and defend Microsoft from and against
+any claims or lawsuits, including attorneys' fees, that arise
+from the use or distribution of your software.
+\par
+
+You may reproduce and distribute this specification provided that
+it is preproduced in its entirety including this copyright page.
+\par
+
+If you have suggestions for enhancements or extensions to the RTF
+Specification, have developed an application using RTF, or wish
+to receive the most up-to-date copy of the RTF specification,
+please write:
+\par
+
+Microsoft Corporation\line
+Department: RTF\line
+16011 NE 36th Way\line
+Box 97017\line
+Redmond, WA 98073-9717\line
+\par
+
+(C) Copyright Microsoft Corporation, 1987-1989
+\par
+
+\par
+\page
+{\header \pard\plain \s244\tqc\tx4320\tqr\tx8640 \f20\fs20 \tab \tab Rich Text Format \chpgn \par
+}
+\pard\plain \s4 \b\i\f21 Rich Text Format\par
+\pard\plain \f20\fs20 \par
+\pard\plain \s255\sb240 \b\i\f21 RTF Syntax\par
+\pard\plain \f20\fs20 \par
+{\pard\plain\li960\ri960\sa240\f21\i {\b Note: }The implementation of the
+basic RTF syntax is a C++ adaptation of Paul DuBois' RTF-Stuff distribution.
+\par}
+
+\pard\plain\f20 The Rich Text Format (RTF) standard is a method of encoding formatted text and graphics for easy transfer between applications. Currently, users depend on special translation software to move word processing documents between
+different DOS applications, and between DOS applications and Apple Macintosh applications.\par
+\pard \par
+\pard
+The RTF standard provides a standard format for text and graphics interchange that can be used with different output devices, operating environments, and operating systems. RTF uses the ANSI, Macintosh, or IBM PC character set to control the representatio
+n and formatting of a document, both on the screen and in print. With the RTF standard, documents composed under different operating systems and with different software applications can be transferred between those operating systems and applications.
+\par
+\pard \par
+\pard An RTF file consists of unformatted text, "control words," "control symbols," and "groups." A standard RTF file consists of only 7-bit ASCII characters for ease of transport.\par
+\pard \par
+\pard A "control word" is a specially formatted command that RTF uses to mark printer control codes and information that applications use to manage documents. A control word consists of a backslash followed by an alphabetic string and a delimiter, as sho
+wn in the following example\:\par
+\pard \par
+\pard\plain \s2 \f22\fs20 \\rtf1...\par
+\pard\plain \f20\fs20 \par
+A B C\par
+\par
+A\tab Backslash begins each control word\par
+C\tab Alphabetic string\par
+C\tab Numeric delimiter\par
+\par
+\pard
+The delimiter can be a space or one or more nonalphabetic characters. If a numeric parameter immediately follows the control word, this parameter is the delimiter, and is itself followed by a delimiter, also consisting of a space or one or more nonalphabet
+ic characters.\par
+\pard \page \par
+\pard A "control symbol" consists of a backslash followed by a single, nonalphabetic character. For example, {\f22 \\~} represents a nonbreaking space. Control symbols take no delimiters.\par
+\pard \par
+\pard A "group" consists of text and control words or control symbols enclosed in braces (\{\}
+). Formatting specified within a group affects only the text within the group. Generally, text within a group inherits any formatting of the text preceding the group. How
+ever, Microsoft implementations of RTF assume that the footnote, header/footer, and annotation groups (described later in this document) do not inherit formatting of the preceding text. Therefore,
+ to ensure that these groups will always be formatted correctly, you should set the formatting within these groups to the default with the {\f22 \\sectd}, {\f22 \\pard}, and {\f22 \\plain} control words, and then add any desired formatting.\par
+\pard \par
+\pard Any other characters in the file are plain text. As mentioned above, the backslash (\\) and braces (\{\}) have special meaning in RTF. To use these characters as text, precede them with a backslash.\par
+\pard \par
+\pard Software that takes a formatted file and turns it into an RTF file is called a "writer." Softwar
+e that translates an RTF file into a formatted file is called a "reader." An RTF writer separates the application's control information from the plain text and writes a new file containing the plain text and the RTF groups associated with that text. An RTF
+ reader does the converse of this procedure.\par
+\pard \par
+\pard An entire RTF file is considered a group and must be enclosed in braces. The control word {\f22 \\rtf}{\i\f22 n} must follow the first open brace. The numeric parameter identifies the version of the RTF standard used. The RTF s
+tandard described in this document corresponds to version 1.\par
+\pard \par
+\pard The order of groups within an RTF file is important. Each group specifies the part of the document affected by the group and the different attributes of that text. An RTF file must begin with the following two control words in the following order\:
+\par
+\pard \par
+\'b7 RTF version ({\f22 \\rtf}{\i\f22 n})\par
+\par
+\'b7 Character set\par
+\par
+\pard The RTF file can also include groups for fonts, styles, screen color, pictures, footnotes, annotations, headers and footers, summary information, fields, and boo
+kmarks, as well as document, section, paragraph, and character formatting properties. If the font, style, screen color, and summary information groups and document formatting properties are included, they must precede the first plain text character in the
+document. If included, the group for fonts should precede the group for styles.\par
+\pard \par
+The groups are discussed in the following sections. If a group isn't used, it can be omitted.\par
+\par
+\pard Certain groups, referred to as "destinations," mark the beginning of a collection of related text. An example of this is the {\f22 \\footnote}
+ group, where the footnote text follows the control word. Destinations added after the RTF specification published in the March 1987 Microsoft Systems Journal may be preceded by the control symbol {\f22 \\*}
+. This control symbol identifies destinations whose related text should be ignored if the RTF reader does not recognize the destination. RTF writers should follow this convention when adding new control words. Destinations whose related text should be ins
+erted into the document even if the destination is not recognized should not use {\f22 \\*}. In this document, all destinations that use {\f22 \\*} will be shown with {\f22 \\*} as part of the control word.\par
+\pard \page \par
+\pard\plain \s255\sb240 \b\i\f21 The Character Set\par
+\pard\plain \f20\fs20 \par
+\pard After specifying the RTF writer you must declare the character set. The RTF specification currently supports the following character sets\:\par
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2880\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Character set\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2880\clbrdrt\brdrs \cellx8640\pard
+\intbl {\f22 \\ansi}\cell \pard \intbl ANSI (default)\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2880\cellx8640\pard \intbl {\f22 \\mac}\cell \pard \intbl Apple Macintosh\cell \pard \intbl \row \pard \intbl {\f22 \\pc}\cell \pard \intbl
+IBM PC\cell \pard \intbl \row \pard \intbl {\f22 \\pca}\cell \pard \intbl IBM PC page 850, used by IBM Personal System/2\cell \pard \intbl \row \pard \par
+{\pard\plain\li960\ri960\sa240\f21\i {\b Note: }The XcRichText widget
+currently ignores character set specifications. The character set used
+by the RTF file is assumed to match the character set of the X font.
+\par}
+
+\pard\plain \s255\sb240 \b\i\f21 The Font Table\par
+\pard\plain \f20\fs20 \par
+\pard This group contains descriptions of fonts and begins with the control word {\f22 \\fonttbl}. All fonts available to the RTF writer can be included in the font table, even if the document doesn't use all the fonts.\par
+\pard \par
+\pard A font is defined by its name, a font number, and a font family, as shown in the following example. Semicolons are used as delimiters between fonts.\par
+\pard \par
+{\f22 \{\\fonttbl\\f0\\froman Tms Rmn;\}}...\par
+\par
+\par
+ A B C D\par
+\par
+A Control word\par
+B Font number\par
+C Font family\par
+D Font name\par
+\par
+\pard The font numbers represent the full font definitions in the group, and vary with each document. The font families are listed below\:\par
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Font family\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx1800\clbrdrt\brdrs \cellx8640\pard
+\intbl {\f22 \\fnil\cell }\pard \intbl Unknown or default fonts (default)\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\froman\cell }\pard \intbl
+Roman, proportionally spaced serif fonts (TmsRmn, Palatino, etc.)\cell \pard \intbl \row \pard \intbl {\f22 \\fswiss\cell }\pard \intbl Swiss, proportionally spaced sans serif fonts (Swiss, etc.)\cell \pard \intbl \row \pard \intbl {\f22 \\fmodern\cell
+}\pard \intbl Fixed-pitch serif and sans serif fonts (Courier, Elite, Pica, etc.)\cell \pard \intbl \row \pard \intbl {\f22 \\fscript\cell }\pard \intbl Script fonts (Cursive, etc.)\cell \pard \intbl \row \pard \intbl {\f22 \\fdecor\cell }\pard \intbl
+Decorative fonts (Old English Zapf Chancery, etc.)\cell \pard \intbl \row \pard \intbl {\f22 \\ftech\cell }\pard \intbl Technical, symbol, and mathematical fonts (Symbol, etc.)\cell \pard \intbl \row \pard \par
+\pard If an RTF file uses a default font, the default font number is specified with the {\f22 \\deff}{\i\f22 n}
+ control word which must precede the font table group. The RTF writer supplies the default font number used in the creation of the document as the numeric argument. The RTF reader then translates this number through the font table into the most similar fon
+t available on the reader's system.\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }The XcRichText widget
+uses its fontPatterns resource to translate RTF font families
+to groups of X fonts. See the man page for details.
+\par}
+
+\pard \page \par
+\pard\plain \s255\sb240 \b\i\f21 The Style Sheet\par
+\pard\plain \f20\fs20 \par
+\pard The style sheet group begins with the control word {\f22 \\stylesheet}. This group contains definitions and
+descriptions of the various styles used in the document. The style sheet is declared only once, in the RTF file header. All styles in the document's style sheet can be included, even if not all the styles are used.\par
+\pard \par
+\pard In some applications, styles are based on, or are the basis for, other styles. In these cases, two other control words can be used\:\par
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1440\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx1440\clbrdrt\brdrs \cellx8640\pard \intbl {
+\f22 \\sbasedon}{\i\f22 n}{\f22 \cell }\pard \intbl Defines the number of the style on which current style is based\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1440\cellx8640\pard \intbl {\f22 \\snext}{\i\f22 n}{\f22 \cell }\pard \intbl
+Defines next style associated with current style; if omitted, next style is the current style\cell \pard \intbl \row \pard \par
+\pard An example of an RTF style sheet and styles is shown in the following example. In this example, Postscript is declared but not used. Some of the control words in this example are discussed in the following sections.\par
+\pard \par
+...\par
+\par
+\pard\plain \s3 \f22\fs20 \{\\stylesheet\{\\fs20 \\sbasedon222\\snext0 Normal;\}\{\\s1\\qr\\fs20\par
+A\'bb \\sbasedon0\\snext1 FLUSHRlGHT;\}\{\\s2\\fi-720\\li720\\fs20\\ri2880\\fs20\par
+\\sbasedon0\\snext2 IND;\}\}\par
+\pard\plain \f20\fs20 \par
+...\par
+\par
+\pard\plain \s3 \f22\fs20 \\widowctrl\\ftnbj\\ftnrestart\\sectd\\linex0\\endnhere\par
+\\pard\\plain\\fs20 This is Normal style.\par
+\\par\\pard\\plain\\s1\par
+B\'bb This is right justified. I call this style FLUSHRIGHT.\par
+\\par\\pard\\plain\\s2\par
+\pard \s3 This is an indented paragraph. I call this style IND. It produces a hanging indent.\par
+\pard \s3 \par
+\\par\}\par
+\pard\plain \f20\fs20 \par
+This is Normal Style.\par
+\par
+This is right justified. I call this style FLUSHRIGHT.\par
+This is an indented paragraph. I call this style IND.\par
+It produces a hanging indent.\par
+\par
+A Style sheet\par
+B Styles applied to text\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }The stylesheet is
+mostly an editing feature. The XcRichText widget ignores stylsheets.
+\par}
+
+\pard \page \par
+\pard \par
+\par
+\pard\plain \s255\sb240 \b\i\f21 The Color Table\par
+\pard\plain \f20\fs20 \par
+\par
+\pard Screen colors, character colors, and other color information are contained in the color table group. The control word {\f22 \\colortbl}
+ begins this group. Values for red, green, blue, and the foreground and background colors are shown in the following list. These parameter values correspond to the color indexes used by Microsoft Windows (0-255). Each color table entry is defined by the am
+ount of red, green, and blue it has. For more information on color setup, see your Windows documentation.\par
+\pard \par
+The following are valid control words for this group\:\par
+\par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx6480\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2160\clbrdrt\brdrs \cellx6480\pard \intbl {
+\f22 \\red}{\i\f22 n}{\f22 \cell }\pard \intbl Red index\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx6480\pard \intbl {\f22 \\green}{\i\f22 n}{\f22 \cell }\pard \intbl Green index\cell \pard \intbl \row \pard \intbl {\f22 \\blue}{
+\i\f22 n}{\f22 \cell }\pard \intbl Blue index\cell \pard \intbl \row \pard \intbl {\f22 \\cf}{\i\f22 n}{\f22 \cell }\pard \intbl Foreground color (default is 0)\cell \pard \intbl \row \pard \intbl {\f22 \\cb}{\i\f22 n}{\f22 \cell }\pard \intbl
+Background color (default is 0)\cell \pard \intbl \row \pard \par
+\par
+\pard
+Each definition must be delimited by a semicolon, even if the definition is omitted. If a color definition is omitted, the RTF reader uses its default color. In the example below, three colors are defined. The first color is omitted, as shown by the semico
+lon following the {\f22 \\colortbl} control word.\par
+\pard \par
+\pard\plain \s3 \f22\fs20 \{\\colortbl;\\red0\\green0\\blue0;\\red0\\green0\\blue255;\}\par
+\pard\plain \f20\fs20 \par
+\pard The following example defines a block of text in color (where supported). Note that the cf/cb index is the index of an entry in the color table, which represents a red/green/blue color combination.\par
+\pard \par
+...\par
+\par
+\pard\plain \s3 \f22\fs20 \{\\f1\\cb1\\cf2 This is colored text. The background is color 1 and the foreground is color 2.\}\par
+\pard\plain \f20\fs20 \par
+If the file is translated by software that does not display color, this group is ignored.\par
+\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Foreground colors
+are supported by the XcRichText widget. The \\red, \\green, and \\blue
+values are scaled and used as arguments to XAllocColor (using the colormap
+from the widget's core resources).
+\par}
+
+\pard\plain \s255\sb240 \b\i\f21 Pictures\par
+\pard\plain \f20\fs20 \par
+\pard An RTF file can include picture files composed with other applications. These files are in hexadecimal (default) or binary format. The control word {\f22 \\pict} begins this group. Control words tha
+t define and describe the picture parameters follow the {\f22 \\pict} control word.\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Picture groups
+are assumed to be hex encoded Sun Raster images, either 1- or 8-bit, with
+RLE encoding. Most RTF picture control words are not supported. Supported
+control words are indicated by [X].
+\par}
+
+\pard \page \par
+\pard \par
+\pard These control words are listed in the table that follows. Some measurements in this table are in twips; a twip is one-twentieth of a printer's point. The control words for picture border patterns ({\f22 \\brdrs}, {\f22 \\brdrdb}, {\f22 \\brdrth}, {
+\f22 \\brdrsh}, {\f22 \\brdrdot}, and {\f22 \\brdrhair}) are ignored when translated into Microsoft Word for the Macintosh, which uses character properties to make borders.\par
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx8640\pard \intbl {\f22 \\brdrs\cell }\pard \intbl
+Single border for picture\cell \pard \intbl \row \pard \intbl {\f22 \\brdrdb\cell }\pard \intbl Double border for picture\cell \pard \intbl \row \pard \intbl {\f22 \\brdrth\cell }\pard \intbl Thick border for picture\cell \pard \intbl \row \pard \intbl {
+\f22 \\brdrsh\cell }\pard \intbl Shadow border for picture\cell \pard \intbl \row \pard \intbl {\f22 \\brdrdot\cell }\pard \intbl Dotted border for picture\cell \pard \intbl \row \pard \intbl {\f22 \\brdrhair\cell }\pard \intbl Hairline border for picture
+\cell \pard \intbl \row \pard \intbl {\f22 \\macpict\cell }\pard \intbl Source of picture is Macintosh Quick Draw\cell \pard \intbl \row \pard \intbl {\f22 \\wmetafile}{\i\f22 n}{\f22 \cell }\pard \intbl
+Source of picture is Windows metafile; argument identifies the metafile type; default is 1 (MM_TEXT)\cell \pard \intbl \row \pard \intbl {\f22 \\wbitmap}{\i\f22 n}{\f22 \cell }\pard \intbl
+Source of picture is a bitmap; argument identifies the bitmap type; default is 0 (logical bitmap)\cell \pard \intbl \row \pard \intbl {\f22 \\picw}{\i\f22 n}{\f22 \cell }{\f21 [X]}\pard \intbl xExt field if picture is metafile; picture width in pi
+xels if picture is bitmap or from Macintosh Quick Draw\cell \pard \intbl \row \pard \intbl {\f22 \\pich}{\i\f22 n}{\f22 \cell }{\f21 [X]}\pard \intbl yExt field if picture is metafile; picture height in pixels if picture is bitmap or from Macintosh Quick Draw\cell
+\pard \intbl \row \pard \intbl {\f22 \\picwGoal}{\i\f22 n}{\f22 \cell }\pard \intbl Desired width of picture in twips\cell \pard \intbl \row \pard \intbl {\f22 \\pichGoal}{\i\f22 n}{\f22 \cell }\pard \intbl Desired height of picture in twips\cell \pard
+\intbl \row \pard \intbl {\f22 \\picscalex}{\i\f22 n}{\f22 \cell }\pard \intbl Horizontal scaling value; argument is a value between 1 and 100 (default is 10)\cell \pard \intbl \row \pard \intbl {\f22 \\picscaley}{\i\f22 n}{\f22 \cell }\pard \intbl
+Vertical scaling value; argument is a value between 1 and 100 (default is 10)\cell \pard \intbl \row \pard \intbl {\f22 \\picscaled\cell }\pard \intbl Scales picture to fit within specified frame; used only with \\macpict pictures\cell \pard \intbl \row
+\pard \intbl {\f22 \\piccropt}{\i\f22 n}{\f22 \cell }\pard \intbl Top cropping value in twips; positive value crops toward center of picture; negative value crops away from center, adding space border around picture (default is 0)\cell \pard \intbl \row
+\pard \intbl {\f22 \\piccropb}{\i\f22 n}{\f22 \cell }\pard \intbl Bottom cropping value in twips; positive value crops toward center of picture; negative value crops away from center, adding space border around picture (default is 0)\cell \pard \intbl
+\row \pard \intbl {\f22 \\piccropl}{\i\f22 n}{\f22 \cell }\pard \intbl Left cropping value in twips; positive value crops toward center of picture; negative value crops away from center, adding space border around picture (default is 0)\cell \pard \intbl
+\row \pard \intbl {\f22 \\piccropr}{\i\f22 n}{\f22 \cell }\pard \intbl Right cropping value in twips; positive value crops toward center of picture; negative value crops away from center, adding space border around picture (default is 0)\cell \pard
+\intbl \row \pard \intbl {\f22 \\wbmbitspixel}{\i\f22 n}{\f22 \cell }\pard \intbl Bitmap bits/pixel (default is 1)\cell \pard \intbl \row \pard \intbl {\f22 \\wbmplanes}{\i\f22 n}{\f22 \cell }\pard \intbl Number of bitmap planes (default is 1)\cell \pard
+\intbl \row \pard \intbl {\f22 \\wbmwidthbytes}{\i\f22 n}{\f22 \cell }\pard \intbl Bitmap width in bytes\cell \pard \intbl \row \pard \intbl {\f22 \\bin}{\i\f22 n}{\f22 \cell }\pard \intbl
+Picture is in binary format; numeric parameter is number of bytes to follow\cell \pard \intbl \row \pard \par
+\pard \page \par
+\pard The {\f22 \\wbitmap} control word is optional; if neither {\f22 \\wmetafile} nor {\f22 \\macpict} is specified, the picture is assumed to be a Windows bitmap.\par
+\pard \par
+\pard
+Be careful with spaces following control words when dealing with pictures in binary format. When reading files, RTF considers the first space the delimiter and subsequent spaces part of the document text. Therefore, any extra white space is attached to t
+he picture, with unpredictable results.\par
+\pard \par
+\pard RTF writers should not use the carriage-return-line-feed (CRLF) combination to break up pictures in binary format. In this case, the CRLF will be treated as literal text and considered part of the picture data.\par
+\pard \par
+\pard The picture in hexadecimal or binary format follows the picture group control words. The following example illustrates the group format and the result.\par
+\pard \par
+\pard\plain \s3 \f22\fs20 \{\\pict\\wbitmap0\\picw170\\pich77\\wbmbitspixel1\\wbmplanes1\par
+\\wbmwidthbytes22\\picwgoal505\par
+\\pichgoal221\par
+\\picscalex172\par
+\\picscaley172\par
+4912000000000273023d1101a030\par
+3901000a000000000273023d98\par
+0048000200000275\par
+0240000200010275023e000000000\par
+273023dO00002b90002b90002\par
+b90002b90002b9\par
+0002b90002b90002b90002b90002b90002\par
+b92222b90002b90002b90\par
+002b90002b9\par
+D002b90002b90002b90002b9000\par
+\pard\plain \ri-3600\tx576 \f20\fs20 {\b \par
+}\pard A Source\par
+B Width\par
+C Height\par
+D Bits per pixel\par
+E Bitmap planes\par
+F Width of picture in bytes\par
+G Desired picture width\par
+H Desired picture height\par
+I Horizontal scaling value\par
+J Vertical scaling value\par
+K Hexadecimal data\par
+\par
+\pard\plain \s255\sb240 \b\i\f21 Footnotes\par
+\pard\plain \f20\fs20 {\i \par
+}\pard The group containing footnote text begins with the control word {\f22 \\footnote}{\b . }Footnotes are anchored to the character that immediately precedes the footnote group. If automatic footnoting is defined, the grou
+p can be preceded by a footnote reference character, identified by the control word {\f22 \\chftn}{\b .\par
+}\pard \tqc\tx720\tqc\tx1440\tqc\tx2160\tqc\tx2880\tx0 \page \par
+\pard The following is an example of a group containing footnotes\:\par
+\par
+\pard\plain \s3 \f22\fs20 \\ftnbj\\ftnrestart\\sectd \\linemod0\\linex0\\endnhere \\pard\\plain \\ri1170 \\fs20 \{\\up6 Mead's landmark study has been amply annotated.\\chftn \par
+(footnote \\pard\\plain \\s246 \\fs20 \{\\up6\\chftn \}See Sahlins, Bateson, and Geertz for a complete bibliography.\}\par
+It was her work in America during the Second World War, however, that forms the basis for this paper. As others have noted, \\chftn\par
+\pard \s3 \{\\footnote \\pard\\plain \\s246 \\fs20 \{\\up6\\chftn\}\par
+\pard \s3 A complete bibliography will be found at the end of this chapter.\} this period was a turning point for Margaret Mead. \par
+\pard \s3 \\par\par
+\pard\plain \f20\fs20 \par
+\pard Mead's landmark study has been amply annotated.{\up6 1} It was her work in America during the Second World War. however. that forms the basis for this paper. As others have noted{\up6 2} this period was a turning point for Margaret Mead.\par
+\pard \par
+\pard {\up6 1}See Sahlins, Bateson, and Geertz for a complete bibliography.\par
+{\up6 2}A complete bibliography will be found at the end of this chapter.\par
+\pard \par
+A Footnotes\par
+\par
+\pard See "Section Formatting Properties," "Document Formatting Properties," and "Special Characters" later in this document for other control words relating to footnotes.\par
+\pard \par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Footnotes are ignored
+by the XcRichText widget.
+\par}
+
+\pard\plain \s255\sb240 \b\i\f21 Annotations{\plain \b\f21 \par
+}\pard\plain \f20\fs20 {\i \par
+}\pard The group containing annotation text begins with the control word {\f22 \\*\\annotation}{\b . }
+Annotations are anchored to the character that immediately precedes the annotation group. The group must be preceded by an annotation reference character, identified by the control word {\f22 \\chatn}, which
+ itself must be preceded by a group that begins with the control word {\f22 \\*\\atnid}, and contains the identification text for the author of the annotation.\par
+\pard \par
+An example of annotation text follows\:\par
+\par
+\pard\plain \s3 \f22\fs20 ...\par
+\par
+\pard \s3 An example of a paradigm might be Newtonian physics or Darwinian biology.\{\\v\\fs16\{\\atnid bz\}\\chatn\{\\annotation \par
+\\pard\\plain \\s224 \\fs20 \{\\field\{\\fldinst page \\\\#"'Page\: '#'\\line"'\}\{\\fldrslt\}\}\{\\fs16 \\chatn \} \par
+How about some examples that deal with social science? That's what this paper is about.\}\}\par
+\pard \s3 ...\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Annotations are ignored
+by the XcRichText widget.
+\par}
+
+\pard\plain \f20\fs20 {\i \page \par
+}\pard\plain \s255\sb240 \b\i\f21 Headers and Footers{\plain \b\f21 \par
+}\pard\plain \f20\fs20 {\i \par
+}\pard Headers and footers are treated as separate groups in RTF. These groups must precede the first plain text character in the given document section. The control words {\f22 \\header} and {\f22 \\footer} begin these groups.\par
+\pard \par
+\pard Headers and footers can be defined for each section. If none is defined for a given section, the headers and footers from the previous section (if any) are used.\par
+\pard \par
+The control words {\f22 \\header} and {\f22 \\footer} can be replaced by the following control words, as appropriate\:\par
+\par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx6480\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2160\clbrdrt\brdrs \cellx6480\pard \intbl {
+\f22 \\headerl\cell }\pard \intbl Header on left pages only\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx6480\pard \intbl {\f22 \\headerr\cell }\pard \intbl Header on right pages only\cell \pard \intbl \row \pard \intbl {\f22 \\
+headerf\cell }\pard \intbl Header on first page only\cell \pard \intbl \row \pard \intbl {\f22 \\footerl\cell }\pard \intbl Footer on left pages only\cell \pard \intbl \row \pard \intbl {\f22 \\footerr\cell }\pard \intbl Footer on right pages only\cell
+\pard \intbl \row \pard \intbl {\f22 \\footerf\cell }\pard \intbl Footer on first page only\cell \pard \intbl \row \pard \par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Headers and footers are ignored
+by the XcRichText widget.
+\par}
+
+\pard\plain \s255\sb240 \b\i\f21 Information\par
+\pard\plain \f20\fs20 \par
+\pard
+The RTF file can also contain an information group, which is translated but not displayed with the text. This information can include the title, author, key words, comments, and other information specific to the file. This information can be used when a do
+cument management utility is available.\par
+\pard \par
+\pard This group begins with the control word {\f22 \\info}{\b . }
+Some applications, such as Word, ask a user to type this docurnent information when saving the document in native format. When the document is then saved or translated into RTF, the RTF writer specifies this information using the following control words. T
+hese control words are destinations, and should be enclosed in braces (\{\}).\par
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2160\clbrdrt\brdrs \cellx8640\pard \intbl {
+\f22 \\title\cell }\pard \intbl Title of document\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx8640\pard \intbl {\f22 \\subject\cell }\pard \intbl Subject of document\cell \pard \intbl \row \pard \intbl {\f22 \\author\cell }\pard
+\intbl Author of document\cell \pard \intbl \row \pard \intbl {\f22 \\operator\cell }\pard \intbl Person who last made changes to document\cell \pard \intbl \row \pard \intbl {\f22 \\keywords\cell }\pard \intbl Selected key words for document\cell \pard
+\intbl \row \pard \intbl {\f22 \\comment\cell }\pard \intbl Comments; text is ignored\cell \pard \intbl \row \pard \intbl {\f22 \\version\cell }\pard \intbl Version number of document\cell \pard \intbl \row \pard \intbl {\f22 \\doccomm\cell }\pard \intbl
+Comments displayed in Edit Summary Info dialog box\cell \pard \intbl \row \pard \page \par
+\pard The RTF writer may automatically enter other control words, as shown in the following list\:\par
+\par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx6480\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2160\clbrdrt\brdrs \cellx6480\pard \intbl {
+\f22 \\vern}{\i\f22 n}{\f22 \cell }\pard \intbl Internal version number\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx6480\pard \intbl {\f22 \\creatim\cell }\pard \intbl Creation time\cell \pard \intbl \row \pard \intbl {\f22 \\revtim
+\cell }\pard \intbl Revision time\cell \pard \intbl \row \pard \intbl {\f22 \\printim\cell }\pard \intbl Last print time\cell \pard \intbl \row \pard \intbl {\f22 \\buptim\cell }\pard \intbl Backup time\cell \pard \intbl \row \pard \intbl {\f22 \\edmins}{
+\i\f22 n}{\f22 \cell }\pard \intbl Total editing time (in minutes)\cell \pard \intbl \row \pard \intbl {\f22 \\yr}{\i\f22 n}{\f22 \cell }\pard \intbl Year\cell \pard \intbl \row \pard \intbl {\f22 \\mo}{\i\f22 n}{\f22 \cell }\pard \intbl Month\cell \pard
+\intbl \row \pard \intbl {\f22 \\dy}{\i\f22 n}{\f22 \cell }\pard \intbl Day\cell \pard \intbl \row \pard \intbl {\f22 \\hr}{\i\f22 n}{\f22 \cell }\pard \intbl Hour\cell \pard \intbl \row \pard \intbl {\f22 \\min}{\i\f22 n}{\f22 \cell }\pard \intbl Minute
+\cell \pard \intbl \row \pard \intbl {\f22 \\nofpages}{\i\f22 n}{\f22 \cell }\pard \intbl Number of pages\cell \pard \intbl \row \pard \intbl {\f22 \\nofwords}{\i\f22 n}{\f22 \cell }\pard \intbl Number of words\cell \pard \intbl \row \pard \intbl {\f22 \\
+nofchars}{\i\f22 n}{\f22 \cell }\pard \intbl Number of characters\cell \pard \intbl \row \pard \intbl {\f22 \\id}{\i\f22 n}{\f22 \cell }\pard \intbl Internal ID number\cell \pard \intbl \row \pard \par
+\pard Entries without the n parameter have the {\f22 \\yr \\mo \\dy \\hr \\min}{\b }format. An example of an information group follows.\par
+\pard \par
+\pard\plain \s3 \f22\fs20 \{\\info\{\\title The Panda's Thumb\}\{\\author Stephen J. Gould\}\{\\keywords science natural history \}\}\par
+\pard\plain \f20\fs20 \par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }The information group is
+ignored by the XcRichText widget.
+\par}
+
+\pard\plain \s255\sb240 \b\i\f21 Fields{\plain \b\f21 \par
+}\pard\plain \f20\fs20 {\i \par
+}The field group contains the text of Word fields. The field group begins with the control word {\f22 \\field}.\par
+\par
+The following control words can follow the {\f22 \\field} control word\:\par
+\par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2160\clbrdrt\brdrs \cellx8640\pard \intbl {
+\f22 \\flddirty\cell }\pard \intbl Change has been made to the field result since the field was last updated\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx8640\pard \intbl {\f22 \\fldedit\cell }\pard \intbl
+Text has been added to, or removed from, the field result since the field was last updated\cell \pard \intbl \row \pard \intbl {\f22 \\fldlock\cell }\pard \intbl Field is locked and cannot be updated\cell \pard \intbl \row \pard \intbl {\f22 \\fldpriv
+\cell }\pard \intbl Result is not in a form suitable for display (for example, binary data used by fields whose result is a picture)\cell \pard \intbl \row \pard \page \par
+\pard \par
+\pard Two subgroups are available within the {\f22 \\field} group. They must be enclosed in braces (\{\}) and begin with the following control words\:\par
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx6480\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx6480\pard \intbl {\f22 \\*\\fldinst\cell }\pard
+\intbl Field instructions\cell \pard \intbl \row \pard \intbl {\f22 \\fldrslt\cell }\pard \intbl Most recently calculated result of the field\cell \pard \intbl \row \pard \par
+\pard The {\f22 \\fldrslt} control word should be included even if no result has been calculated. This simplifies the RTF reader's task, because even readers that do not recognize fields can generally include the value of the {\f22 \\fldrslt}
+ group in the document.\par
+\pard \par
+An example of some field text follows\:\par
+\par
+\pard \ri5184\tx1440\tx2880 IA\tab |C\tab IC\par
+\par
+\pard 1 I\par
+\par
+\pard\plain \s3 \f22\fs20 \{\\field\\fldedit\{\\fldinst author\}\{\\fldrslt Joe Smith\}\}\\par\\pard \{\\field\{\\fldinst time\\\\@"h\:mm AM/PM"\}\{\\fldrslt 8\:12 AM\}\}\par
+\pard\plain \f20\fs20 \par
+{\i A Begins fieId group }\par
+{\i B Field instructions\par
+C Field result\par
+\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Field instructuions are ignored
+by the XcRichText widget. The {\f22 \\fldrslt} group is displayed.
+\par}
+
+}\pard\plain \s255\sb240 \b\i\f21 Index Entries{\plain \b\f21 \par
+}\pard\plain \f20\fs20 {\i \par
+}\pard The index entry group begins with the control word {\f22 \\xe}. Following this control word is the text of the index entry and other, optional control words that further define the index entry.\par
+\pard \par
+\pard If the text of the index entry is not formatted as hidden text with the {\f22 \\v} control word (see "Character Formatting Properties," later in this document), the text is put into the document as well as into the index. Similarly, the text of the
+{\f22 \\txe} subgroup, described later, becomes part of the document if it is not formatted as hidden text.\par
+\pard \par
+The following control words may also be used\:\par
+\par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx6480\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2160\clbrdrt\brdrs \cellx6480\pard \intbl {
+\f22 \\bxe\cell }\pard \intbl Formats the page number or cross-reference bold\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx6480\pard \intbl {\f22 \\ixe\cell }\pard \intbl Formats the page number or cross-reference italic\cell \pard
+\intbl \row \pard \par
+\pard The following control words are destinations within the {\f22 \\xe} group and are followed by text arguments. These control words and their arguments must be enclosed in braces (\{\})\:\par
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2520\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2520\clbrdrt\brdrs \cellx8640\pard \intbl {
+\f22 \\txe }{\i\f22 text}{\f22 \cell }\pard \intbl Uses text instead of a page number\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2520\cellx8640\pard \intbl {\f22 \\rxe }{\i\f22 bookmark-name}{\f22 \cell }\pard \intbl
+Generates page numbers for the range of text specified by bookmark-name\cell \pard \intbl \row\par
+{\pard\plain\pard\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Index entries are treated
+as normal text by the XcRichText widget. That is, unless they are formatted
+as invisible text, they will be displayed.
+\par}
+
+\pard \page \par
+\pard \tqc\tx720\tqc\tx1440\tqc\tx2160\tqc\tx2880\tqc\tx0 \par
+\pard\plain \s255\sb240 \b\i\f21 Table of Contents Entries{\plain \b\f21 \par
+}\pard\plain \f20\fs20 {\i \par
+}\pard The table of contents entry group begins with the control word {\f22 \\tc}. It is followed by the text of the table of contents entry and optional switches.\par
+\pard \par
+\pard As with index entries, text that is not formatted as hidden with the {\f22 \\v} character formatting control word should be put into the document.\par
+\pard \par
+The following control words can also be used in this group\:\par
+\par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx1800\clbrdrt\brdrs \cellx8640\pard \intbl {
+\f22 \\tcf}{\i\f22 n}{\f22 \cell }\pard \intbl Type of table being compiled; n is mapped by existing Microsoft software to a Ietter between A and Z; default is 67, which maps to C, used for tables of contents\cell \pard \intbl \row \trowd
+\trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\tcl}{\i\f22 n}{\f22 \cell }\pard \intbl Level number (default is l)\cell \pard \intbl \row \pard \par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Table of contents entries are treated
+as normal text by the XcRichText widget. That is, unless they are formatted
+as invisible text, they will be displayed.
+\par}
+
+\pard\plain \s255\sb240 \b\i\f21 Bookmarks\par
+\pard\plain \f20\fs20 \par
+\pard This group contains two control words\: {\f22 \\*\\bkmkstart},{\b }to indicate the start of the specified bookmark, and {\f22 \\*\\bkmkend},{\b }to indicate the end of the specified bookmark. A bookmark is shown in the following example\:\par
+\pard \par
+\pard\plain \s3 \f22\fs20 ...\par
+\par
+\pard \s3 \\pard\\plain \\fs20 Kuhn believes that science, rather than discovering in experience certain structured relationships, actually creates (or already participates in) a presupposed structure to which it fits the data. \{\\bkmkstart paradigm\}
+Kuhn calls such a presupposed{\b }structure a paradigm.\{\\bkmkend paradigm\}\par
+\pard \s3 \par
+...\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Bookmark groups
+are ignored.
+\par}
+
+\pard\plain \s255\sb240 \b\i\f21 Document Formatting Properties{\plain \b\f21 \par
+}\pard\plain \f20\fs20 \par
+\pard This section lists the control words that act on the attributes of a document, such as margins and footnote placement. These attributes must precede the first plain text character in the document.\par
+\pard \par
+\pard The following control words specify document formatting. If you omit a control word, RTF uses the default value shown in parentheses. Measurements are in twips.\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Most document formatting
+properties don't apply to text displayed in an X window. These control
+words are not supported, except {\f22 \\deftab}.
+\par}
+
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl {\b \row }\trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2160\clbrdrt\brdrs \cellx8640\pard
+\intbl {\f22 \\paperw}{\i\f22 n}{\f22 \cell }\pard \intbl Paper width (12,240)\cell {\f20 overridden by window width}\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx8640\pard \intbl {\f22 \\paperh}{\i\f22 n}{\f22 \cell }\pard \intbl Paper height (15,840)\cell \pard \intbl
+\row \pard \intbl {\f22 \\margl}{\i\f22 n}{\f22 \cell }\pard \intbl Left margin (1,800)\cell \pard \intbl \row \pard \intbl {\f22 \\margr}{\i\f22 n}{\f22 \cell }\pard \intbl Right margin (1,800)\cell \pard \intbl \row \pard \intbl {\f22 \\margt}{\i\f22 n}
+{\f22 \cell }\pard \intbl Top margin (1,440)\cell \pard \intbl \row \pard \intbl {\f22 \\margb}{\i\f22 n}{\f22 \cell }\pard \intbl Bottom margin (1,440)\cell \pard \intbl \row \pard \intbl {\f22 \\facingp\cell }\pard \intbl
+Facing pages (activates odd/even headers and gutters)\cell \pard \intbl \row \pard \intbl {\f22 \\gutter}{\i\f22 n}{\f22 \cell }\pard \intbl Gutter width (0)\cell \pard \intbl \row \pard \page \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx8640\pard \intbl {\b\f22 Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx2160\clbrdrt\brdrs \cellx8640\pard
+\intbl {\f22 \\deftab}{\i\f22 n}{\f22 \cell }\pard \intbl Default tab width (720)\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx8640\pard \intbl {\f22 \\widowctrl\cell }\pard \intbl Widow control\cell \pard \intbl \row \pard \intbl {
+\f22 \\hyphhotz\cell }\pard \intbl Hyphenation hot zone ( amount of space at right margin in which words are hyphenated)\cell \pard \intbl \row \pard \intbl {\f22 \\ftnsep\cell }\pard \intbl Text argument separates footnotes from document\cell \pard
+\intbl \row \pard \intbl {\f22 \\ftnsepc\cell }\pard \intbl Text argument separates continued footnotes from document\cell \pard \intbl \row \pard \intbl {\f22 \\ftncn\cell }\pard \intbl Text argument is a notice for continued footnotes\cell \pard \intbl
+\row \pard \intbl {\f22 \\endnotes\cell }\pard \intbl Footnotes at end of section (default)\cell \pard \intbl \row \pard \intbl {\f22 \\enddoc\cell }\pard \intbl Footnotes at end of document\cell \pard \intbl \row \pard \intbl {\f22 \\ftntj\cell }\pard
+\intbl Footnotes beneath text\cell \pard \intbl \row \pard \intbl {\f22 \\ftnbj\cell }\pard \intbl Footnotes at bottom of page\cell \pard \intbl \row \pard \intbl {\f22 \\ftnstart}{\i\f22 n}{\f22 \cell }\pard \intbl Beginning footnote number ( 1 )\cell
+\pard \intbl \row \pard \intbl {\f22 \\ftnrestart\cell }\pard \intbl Footnote numbers restart on each page\cell \pard \intbl \row \pard \intbl {\f22 \\pgnstart}{\i\f22 n}{\f22 \cell }\pard \intbl Beginning page number ( 1 )\cell \pard \intbl \row \pard
+\intbl {\f22 \\linestart}{\i\f22 n}{\f22 \cell }\pard \intbl Beginning line number ( 1 )\cell \pard \intbl \row \pard \intbl {\f22 \\landscape\cell }\pard \intbl Landscape format\cell \pard \intbl \row \pard \intbl {\f22 \\fracwidth\cell }\pard \intbl
+Uses fractional character widths when printing (Macintosh (tm)\cell \pard \intbl \row \pard \intbl {\f22 \\*\\nextfile\cell }\pard \intbl Destination; argument is file name of file to print or index next; must be enclosed in braces ( \{\} )\cell \pard
+\intbl \row \pard \intbl {\f22 \\*\\template\cell }\pard \intbl Destination; argument is file name of related template file; must be enclosed in braces ( \{\} )\cell \pard \intbl \row \pard \intbl {\f22 \\makeback\cell }\pard \intbl
+Backup copy is made automatically when document is saved\cell \pard \intbl \row \pard \intbl {\f22 \\defformat\cell }\pard \intbl Tells RTF reader that document should be saved in RTF format\cell \pard \intbl \row \pard \intbl {\f22 \\revisions\cell
+}\pard \intbl Turns on revision marking\cell \pard \intbl \row \pard \intbl {\f22 \\margmirror\cell }\pard \intbl Switches margin definitions on left and right pages\cell \pard \intbl \row \pard \intbl {\f22 \\revprop}{\i\f22 n}{\f22 \cell }\pard \intbl
+Argument indicates how revised text will be displayed; 0, no properties shown; 1, bold; 2, italic; 3, underline (default); 4, double underline\cell \pard \intbl \row \pard \intbl {\f22 \\revbar}{\i\f22 n}{\f22 \cell }\pard \intbl
+Vertical lines mark altered text, based on the argument 0, no marking; 1, Ieft margin; 2 right mugin; 3, outside (Ieft on Ieft pages, right on right pages; default)\cell \pard \intbl \row \pard \par
+\pard\plain \s255\sb240 \b\i\f21 Section Formatting Properties{\plain \b\f21 \par
+}\pard\plain \f20\fs20 \par
+\pard The following control words are used to specify section formatting properties. Default values are shown in parentheses.\par
+\pard \par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Most section formatting
+properties are beyond the scope of the XcRichText widget. These control
+words are not supported.
+\par}
+
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx8640\pard \intbl {\f22 \\sectd\cell }\pard \intbl
+Reset to default section properties\cell \pard \intbl \row \pard \intbl {\f22 \\sbknone\cell }\pard \intbl No section break\cell \pard \intbl \row \pard \intbl {\f22 \\sbkcol\cell }\pard \intbl Section break starts new column\cell \pard \intbl \row \pard
+\intbl {\f22 \\sbkpage\cell }\pard \intbl Section break starts new page (default)\cell \pard \intbl \row \pard \page \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx2160\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \cellx2160\cellx8640\pard \intbl {\f22 \\sbkeven\cell }\pard
+\intbl Section break starts at even page\cell \pard \intbl \row \pard \intbl {\f22 \\sbkodd\cell }\pard \intbl Section break starts at odd page\cell \pard \intbl \row \pard \intbl {\f22 \\pgnstarts}{\i\f22 n}{\f22 \cell }\pard \intbl
+Beginning page number (1)\cell \pard \intbl \row \pard \intbl {\f22 \\pgncont\cell }\pard \intbl Continuous page numbering (default)\cell \pard \intbl \row \pard \intbl {\f22 \\pgnrestart\cell }\pard \intbl Page numbers restart at {\f22 \\pgnstarts} value
+\cell \pard \intbl \row \pard \intbl {\f22 \\pgndec\cell }\pard \intbl Page number format is decimal\cell \pard \intbl \row \pard \intbl {\f22 \\pgnucrm\cell }\pard \intbl Page number format is uppercase roman numeral\cell \pard \intbl \row \pard \intbl {
+\f22 \\pgnlcrm\cell }\pard \intbl Page number format is lowercase roman numeral\cell \pard \intbl \row \pard \intbl {\f22 \\pgnucltr\cell }\pard \intbl Page number format is upper case Ietter\cell \pard \intbl \row \pard \intbl {\f22 \\pgnlcltr\cell
+}\pard \intbl Page number format is lower case letter\cell \pard \intbl \row \pard \intbl {\f22 \\pgnx}{\i\f22 n}{\f22 \cell }\pard \intbl Page number is n twips from Ieft margin (720)\cell \pard \intbl \row \pard \intbl {\f22 \\pgny}{\i\f22 n}{\f22
+\cell }\pard \intbl Page number is n twips from bottom margin ( 720)\cell \pard \intbl \row \pard \intbl {\f22 \\headery}{\i\f22 n}{\f22 \cell }\pard \intbl Header is n twips from top of page (1080)\cell \pard \intbl \row \pard \intbl {\f22 \\footery}{
+\i\f22 n}{\f22 \cell }\pard \intbl Footer is n twips from bottom of page (1080)\cell \pard \intbl \row \pard \intbl {\f22 \\linemod}{\i\f22 n}{\f22 \cell }\pard \intbl Line number modulus (amount to increase each line number) (1)\cell \pard \intbl \row
+\pard \intbl {\f22 \\linex}{\i\f22 n}{\f22 \cell }\pard \intbl Distance from line number to left text margin in twips (360)\cell \pard \intbl \row \pard \intbl {\f22 \\linestarts}{\i\f22 n}{\f22 \cell }\pard \intbl Beginning line number (1)\cell \pard
+\intbl \row \pard \intbl {\f22 \\linerestart\cell }\pard \intbl Line numbers restart at {\f22 \\linestarts}{\b }value\cell \pard \intbl \row \pard \intbl {\f22 \\lineppage\cell }\pard \intbl Line numbers restart each page\cell \pard \intbl \row \pard
+\intbl {\f22 \\linecont\cell }\pard \intbl Line numbers continued from preceding section\cell \pard \intbl \row \pard \intbl {\f22 \\vertalt\cell }\pard \intbl Text is top aligned (default)\cell \pard \intbl \row \pard \intbl {\f22 \\vertal\cell }\pard
+\intbl Text is bottom aligned\cell \pard \intbl \row \pard \intbl {\f22 \\vertalc\cell }\pard \intbl Text is centered vertically\cell \pard \intbl \row \pard \intbl {\f22 \\vertalj\cell }\pard \intbl Text is justified vertically\cell \pard \intbl \row
+\pard \intbl {\f22 \\cols}{\i\f22 n}{\f22 \cell }\pard \intbl Number of columns (snaking) (1)\cell \pard \intbl \row \pard \intbl {\f22 \\colsx}{\i\f22 n}{\f22 \cell }\pard \intbl Space between columns in twips (720)\cell \pard \intbl \row \pard \intbl {
+\f22 \\linebetcol\cell }\pard \intbl Line between columns\cell \pard \intbl \row \pard \intbl {\f22 \\endnhere\cell }\pard \intbl Endnotes included in section\cell \pard \intbl \row \pard \intbl {\f22 \\titlepg\cell }\pard \intbl
+Title page has special format\cell \pard \intbl \row \pard \par
+\pard\plain \s255\sb240 \b\i\f21 Paragraph Formatting Properties\par
+\pard\plain \f20\fs20 {\i \par
+}\pard The following control words are used to specify paragraph formatting properties. Default values are shown in parentheses. When specifying border properties, the border segment control word ({\f22 \\brdrt}, {\f22 \\brdrb}, {\f22 \\brdrl}, {\f22 \\
+brdrr}, or {\f22 \\box}) must precede the control word(s) specifymg the pattern for the border, to ensure compatibility with previous versions of RTF.\par
+\pard \par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Basic paragraph formatting
+is supported by the XcRichText widget. Borders are not supported.
+Tables are supported to a limited extent.
+\par}
+
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl {\b \row }\trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx1800\clbrdrt\brdrs \cellx8640\pard
+\intbl {\f22 \\pard\cell }\pard \intbl Resets to default paragraph properties\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\s}{\i\f22 n}{\f22 \cell }\pard \intbl
+Designates style; if a style is specified style properties must be specified with the paragraph\cell \pard \intbl \row \pard \intbl {\f22 \\ql\cell }\pard \intbl Left aligned (default)\cell \pard \intbl \row \pard \page \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx1800\clbrdrt\brdrs \cellx8640\pard \intbl {
+\f22 \\qr\cell }\pard \intbl Right aligned\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\qj\cell }\pard \intbl Justified\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\qc\cell }\pard \intbl Centered\cell \pard
+\intbl \row \pard \intbl {\f22 \\fi}{\i\f22 n}{\f22 \cell }\pard \intbl First-line indent (0)\cell \pard \intbl \row \pard \intbl {\f22 \\li}{\i\f22 n}{\f22 \cell }\pard \intbl Left indent (0)\cell \pard \intbl \row \pard \intbl {\f22 \\ri}{\i\f22 n}{
+\f22 \cell }\pard \intbl Right indent (0)\cell \pard \intbl \row \pard \intbl {\f22 \\sb}{\i\f22 n}{\f22 \cell }\pard \intbl Space before (0){\i \cell }\pard \intbl {\i \row }\pard \intbl {\f22 \\sa}{\i\f22 n}{\f22 \cell }\pard \intbl Space after (0)
+\cell \pard \intbl \row \pard \intbl {\f22 \\sl}{\i\f22 n}{\f22 \cell }\pard \intbl Space between lines (if this control word is missing or if {\f22 \\sl000}
+ is used, line spacing is automatically determined by tallest character in line); if positive value, use this size if it is greater than the tallest character, otherwise use tallest character; if negative value, use the absolute value of number, even if ta
+llest character is taller\cell {\f21\i Only positive values supported.}
+\pard \intbl \row \pard \intbl {\f22 \\intbl\cell }\pard \intbl Paragraph is part of a table\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\keep\cell }\pard \intbl Keep paragraph intact\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {
+\f22 \\keepn\cell }\pard \intbl Keep paragraph with next\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\sbys\cell }\pard \intbl Side-by-side paragraphs\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\pagebb\cell }\pard \intbl Break page before the paragraph
+\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\noline\cell }\pard \intbl No line numbering\cell \pard \intbl \row \pard \intbl {\f22 \\tx}{\i\f22 n}{\f22 \cell }\pard \intbl Tab position in twips from left margin\cell \pard \intbl \row \pard \intbl {\f22 \\
+tqr\cell }\pard \intbl Flush-right tab\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\tqc\cell }\pard \intbl Centered tab\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\tqdec\cell }\pard \intbl Decimal tab\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\tb\cell
+}\pard \intbl Bar tab\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrt\cell }\pard \intbl Border top\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrb\cell }\pard \intbl Border bottom\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrl\cell }\pard \intbl
+Border left\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrr\cell }\pard \intbl Border right\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\box\cell }\pard \intbl Border around paragraph (box paragraph)\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrs
+\cell }\pard \intbl Single-thickness border\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrth\cell }\pard \intbl Thick border\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrsh\cell }\pard \intbl Shadowed border\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22
+\\brdrdb\cell }\pard \intbl Double border\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrdot\cell }\pard \intbl Dotted border\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\brdrhair\cell }\pard \intbl Hairline border\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {
+\f22 \\brsp}{\i\f22 n}{\f22 \cell }\pard \intbl Space in twips between borders and object\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\tldot\cell }\pard \intbl Leader dots\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\tlhyph\cell }\pard \intbl Leader hyphens
+\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\tlul\cell }\pard \intbl leader underline\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\tlth\cell }\pard \intbl leader thick line\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard {\i \page \par
+}\pard\plain \s255\sb240 \b\i\f21 Absolute-Positioned Objects\par
+\pard\plain \f20\fs20 {\i \par
+}These paragraph formatting control words specify the location of the paragraph on the\par
+page.\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Absolute positioned
+objects are note supported by the XcRichText widget.
+\par}
+
+\par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx1800\clbrdrt\brdrs \cellx8640\pard \intbl {
+\f22 \\posx}{\i\f22 n}{\f22 \cell }\pard \intbl Positions paragraph n twips from left edge of reference frame\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\posxc\cell }\pard \intbl
+Centers paragraph horizontally within reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\posxi\cell }\pard \intbl Positions paragraph horizontally inside reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\posxl\cell }\pard \intbl
+Positions paragraph to left within reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\posxo\cell }\pard \intbl Positions paragraph horizontally outside reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\posxr\cell }\pard \intbl Positions
+ paragraph to right within reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\posy}{\i\f22 n}{\f22 \cell }\pard \intbl Positions paragraph n twips from top edge of reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\posyil\cell }\pard
+\intbl Positions paragraph vertically to be in-line\cell \pard \intbl \row \pard \intbl {\f22 \\posyt\cell }\pard \intbl Positions paragraph at top of reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\posyc\cell }\pard \intbl
+Centers paragraph vertically within reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\posyb\cell }\pard \intbl Positions paragraph at bottom of reference frame\cell \pard \intbl \row \pard \intbl {\f22 \\absw}{\i\f22 n}{\f22 \cell }\pard \intbl
+Absolute width of paragraph text in twips\cell \pard \intbl \row \pard \intbl {\f22 \\dxfrtext}{\i\f22 n}{\f22 \cell }\pard \intbl Horizontal distance in twips of an absolutely postioned paragraph from text in main text flow\cell \pard \intbl \row \pard
+\intbl {\f22 \\pvmrg\cell }\pard \intbl Position vertically relative to margin\cell \pard \intbl \row \pard \intbl {\f22 \\pvpg\cell }\pard \intbl Position vertically relative to page\cell \pard \intbl \row \pard \intbl {\f22 \\phmrg\cell }\pard \intbl
+Position horizontally relative to margin\cell \pard \intbl \row \pard \intbl {\f22 \\phpg\cell }\pard \intbl Position horizontally relative to page\cell \pard \intbl \row \pard \intbl {\f22 \\phcol\cell }\pard \intbl
+Position horizontally relative to column\cell \pard \intbl \row \pard \ri4896\tx2448 \par
+\pard The following is an example of absolute-positioned text in a document\par
+\par
+\pard\plain \s3 \f22\fs20 ...\par
+\pard \s3 \\par \\pard \\pvpg\\phpg\\posxc\\posyt\\absw5040\\dxfrtextl73 {\ul abs} {\ul pos} {\ul paral}\par
+\\par \\pard \\phmrg\\posxo\\posyc \\dxfrtext1 152 {\ul abs} {\ul pos} {\ul para2}\par
+\pard \s3 \par
+...\par
+\pard\plain \f20\fs20 \par
+{\i A Text to be positioned\par
+\par
+}\pard\plain \s255\sb240 \b\i\f21 Tables{\plain \b\f21 \par
+}\pard\plain \f20\fs20 {\i \par
+}\pard A table is a collection of paragraphs. A table row is a continuous sequence of paragraphs partitioned into cells. The last paragraph of a cell is terminated by a cell mark (the {\f22 \\cell}
+ control word), and the row is terminated by a row mark (the {\f22 \\row} control word) There is no RTF table group; the {\f22 \\intbl} paragraph formatting control word identifies the paragraph as part of a table.\par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }Tables are not
+really supported by the XcRichText widget. {\f22 \\cell} is treated
+like {\f22 \\tab}, and {\f22 \\row} is treated like {\f22 \\par}.
+\par}
+
+\pard \tqc\tx720\tqc\tx1440\tqc\tx2160\tqc\tx2880\tqc\tx0 \page \par
+\pard {\i \par
+}\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx1800\clbrdrt\brdrs \cellx8640\pard \intbl {
+\f22 \\clbrdrb\cell }\pard \intbl Bottom table cell border\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\clbrdrt\cell }\pard \intbl Top table cell border\cell \pard \intbl \row \pard \intbl {\f22 \\clbrdrl
+\cell }\pard \intbl Left table cell border\cell \pard \intbl \row \pard \intbl {\f22 \\clbrdrr\cell }\pard \intbl Right table cell border\cell \pard \intbl \row \pard \intbl {\f22 \\trowd\cell }\pard \intbl Sets table row defaults\cell \pard \intbl \row
+\pard \intbl {\f22 \\trql\cell }\pard \intbl Left justifies table row with respect to its table column\cell \pard \intbl \row \pard \intbl {\f22 \\trqr\cell }\pard \intbl Right justifies table row with respect to its containing column\cell \pard \intbl
+\row \pard \intbl {\f22 \\trqc\cell }\pard \intbl Centers table row with respect to its containing column\cell \pard \intbl \row \pard \intbl {\f22 \\trgaph}{\i\f22 n}{\f22 \cell }\pard \intbl Half the space between cells of a table row in twips\cell
+\pard \intbl \row \pard \intbl {\f22 \\trrh}{\i\f22 n}{\f22 \cell }\pard \intbl
+Height of a table row in twips; when 0, height is sufficient for all text in line; when positive, height is guaranteed to be at least the specified height; when negative, the absolute value of the height is used, regardless of the height o
+f the text in the line\cell \pard \intbl \row \pard \intbl {\f22 \\trleft}{\i\f22 n}{\f22 \cell }\pard \intbl Position of Ieftmost edge of table with respect to the left edge of its column\cell \pard \intbl \row \pard \intbl {\f22 \\cellx}{\i\f22 n}{\f22
+\cell }\pard \intbl Moves the right boundary of a table cell, including its half of the space between cells\cell \pard \intbl \row \pard \intbl {\f22 \\clmgf\cell }\pard \intbl The first cell in a range of table cells to be merged\cell \pard \intbl \row
+\pard \intbl {\f22 \\clmrg\cell }\pard \intbl Contents of table cell are merged with preceding cell\cell \pard \intbl \row \pard \par
+The following example shows some table text\:\par
+\par
+\pard\plain \s3 \f22\fs20 ...\par
+\\par\\trowd\\trqc\\trgaph108\\trrh280\\trleft36\par
+\\clbrdrt\\brdrth\\clbrdrn\\brdrth\\clbrdrb\\brdrdb\par
+\\clbrdr\\brdrdb\\celbx3636\\clbrdrt\\brdrth\par
+\\clbrdrl\\brdrdb \\clbrdrb\\brdrdb \\dbrdrr\\brdrdb\par
+\\cellx7236\\clbrdrt\\brdrth\\dbrdrl\\brdrdb\par
+\\clbrdrb\\brdrdb\\clbrdr\\brdrdb\\cellx10836\\pard \\intbl\par
+\\cell \\pard \\intbl \\cell \\pard \\intbl \\cell \\pard \\intbl \\row\par
+\\trowd \\trqc\\trgaph108\\trrh280\\trleft36 \\dbrdrt\\brdrdb\par
+\\clbrdrl\\brdrth \\clbrdrb \\brdrsh\\brdrs \\dbrdrr\\brdrdb\par
+\\cellx3636\\clbrdr\\brdrdb \\dbrdr\\brdrdb\par
+\\clbrdrb\\brdrsh\\brdrs \\dbrdrr\\brdrdb\par
+\\cellx7236\\clbrdrt \\brdrdb \\dbrdr \\brdrdb\par
+\\clbrdrb\\brdrsh\\brdrs \\clbrdrr\\brdrdb \\celbx10836\\pard\par
+\\intbl \\cell \\pard \\intbl \\cell \\pard \\intbl \\cell \\pard\par
+\\intbl \\row \\pard\par
+...\par
+\pard\plain \tqc\tx720\tqc\tx1440\tqc\tx2160\tqc\tx2880\tqc\tx0 \f20\fs20 \par
+\pard \tqc\tx720\tqc\tx1440\tqc\tx2160\tqc\tx2880\tqc\tx0 \page \par
+\pard\plain \s255\sb240 \b\i\f21 {\plain \b\f21 Character Formatting Properties\par
+}\pard\plain \f20\fs20 {\i \par
+}\pard
+The last group controls character formatting properties. A control word preceding plain text turns on the specified attribute. Some control words (indicated by an asterisk following the description) can be turned off by the control word followed by a zero
+(0). For example, {\f22 \\b} turns bold on, while {\f22 \\b0} turns bold off.\par
+\pard \par
+
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\plain\cell }\pard \intbl
+Resets application's default character formatting properties\cell \pard \intbl \row \pard \intbl {\f22 \\b\cell }\pard \intbl Bold*\cell \pard \intbl \row \pard \intbl {\f22 \\i\cell }\pard \intbl Italic*\cell \pard \intbl \row \pard \intbl {\f22 \\strike
+\cell }\pard \intbl Strikethrough*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\outl\cell }\pard \intbl Outline*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\shad\cell }\pard \intbl Shadow*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\scaps\cell }\pard
+\intbl Small capitals*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\caps\cell }\pard \intbl All capitals*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\v\cell }\pard \intbl Hidden text*\cell \pard \intbl \row \pard \intbl {\f22 \\f}{\i\f22 n}{\f22 \cell
+}\pard \intbl Font number\cell \pard \intbl \row \pard \intbl {\f22 \\fs}{\i\f22 n}{\f22 \cell }\pard \intbl Font size in half-points (default is 24)\cell \cell\pard \intbl \row \pard \intbl {\f22 \\expnd}{\i\f22 n}{\f22 \cell }\pard \intbl
+Expansion or compression of leading between characters in quarter-points; a negative value compresses (0)\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\ul\cell }\pard \intbl Continuous underline*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\ulw\cell }\pard
+\intbl Word underline*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\uld\cell }\pard \intbl Dotted underline*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\uldb\cell }\pard \intbl Double underline*\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard \intbl {\f22 \\ulnone\cell
+}\pard \intbl Stops all underlining\cell \pard \intbl \row \pard \intbl {\f22 \\up}{\i\f22 n}{\f22 \cell }\pard \intbl Superscript position in half-points (default is 6)\cell \pard \intbl \row \pard \intbl {\f22 \\dn}{\i\f22 n}{\f22 \cell }\pard \intbl
+Subscript position in half-points (default is 6)\cell \pard \intbl \row \pard \intbl {\f22 \\revised\cell }\pard \intbl Text has been added since revision marking was turned on\cell {\f21\i Not supported.}\cell\pard \intbl \row \pard {\i \par
+}\pard\plain \s255\sb240 \b\i\f21 Special Characters{\plain \b\f21 \par
+}\pard\plain \f20\fs20 {\i \par
+}\pard
+Special RTF characters are listed below. If a character is not recognized by the RTF reader, it is ignored and the text following it is considered plain text. The RTF specification is flexible enough to allow new characters to be added for interchange with
+ other software.\par
+\pard \par
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning}{\b\i \cell }\pard \intbl {\i \row }\trowd \trgaph80\trleft-80 \clbrdrt\brdrs \cellx1800\clbrdrt\brdrs \cellx8640
+\pard \intbl {\f22 \\chdate\cell }\pard \intbl Current date (as in headers)\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\chtime\cell }\pard \intbl Current time (as in headers)\cell \pard \intbl \row \pard
+\intbl {\f22 \\chpgn\cell }\pard \intbl Current page number (as in headers)\cell \pard \intbl \row \pard \intbl {\f22 \\chftn\cell }\pard \intbl Automatic footnole reference (footnotes follow in a group)\cell \pard \intbl \row \pard \intbl {\f22 \\chatn
+\cell }\pard \intbl Annotion reference (annotation text follows in a group)\cell \pard \intbl \row \pard \intbl {\f22 \\chftnsep\cell }\pard \intbl Anchoring character for footnote separator\cell \pard \intbl \row \pard \page \par
+{\pard\plain\li960\ri960\tx0\sb240\sa240\f21\i {\b Note: }The above
+special characters are not supported.
+\par}
+
+\trowd \trgaph80\trleft-80 \clbrdrb\brdrs \cellx1800\clbrdrb\brdrs \cellx8640\pard \intbl {\b Control word\cell }\pard \intbl {\b Meaning\cell }\pard \intbl \row \trowd \trgaph80\trleft-80 \cellx1800\cellx8640\pard \intbl {\f22 \\chftnsepc\cell }\pard
+\intbl Anchoring character for footnote continuation\cell \pard \intbl \row \pard \intbl {\f22 \\|\cell }\pard \intbl Formula character\cell \pard \intbl \row \pard \intbl {\f22 \\~\cell }\pard \intbl Nonbreaking space\cell {\f21\i acts like a regular space.}\cell\pard \intbl \row \pard \intbl
+{\f22 \\-\cell }\pard \intbl Optional hyphen\cell \pard \intbl \row \pard \intbl {\f22 \\_\cell }\pard \intbl Nonbreaking hyphen\cell {\f21\i acts like a regular hyphen.}\cell\pard \intbl \row \pard \intbl {\f22 \\'}{\i\f22 hh}{\f22 \cell }\pard \intbl
+A hexadecimal value, based on the specified character set (may be used to identify 8-bit values)\cell \pard \intbl \row \pard \intbl {\f22 \\cell\cell }\pard \intbl End of table cell\cell {\f21\i Acts like \\tab.}\cell\pard \intbl \row \pard \intbl {\f22 \\row\cell }\pard \intbl End
+ of table row\cell {\f21\i Acts like \\line.}\cell\pard \intbl \row \pard \intbl {\f22 \\par\cell }\pard \intbl End of paragraph\cell \pard \intbl \row \pard \intbl {\f22 \\sect\cell }\pard \intbl End of section and paragraph\cell \pard \intbl \row \pard \intbl {\f22 \\page\cell
+}\pard \intbl Required page break\cell \pard \intbl \row \pard \intbl {\f22 \\column\cell }\pard \intbl Required column break\cell \pard \intbl \row \pard \intbl {\f22 \\line\cell }\pard \intbl Required line break (no paragraph break)\cell \pard \intbl
+\row \pard \intbl {\f22 \\tab\cell }\pard \intbl Tab character, same as ASCII 9\cell \pard \intbl \row \pard \intbl {\f22 \\\:\cell }\pard \intbl Specifies a subentry in an index entry\cell \pard \intbl \row \pard \intbl {\f22 \\*\cell }\pard \intbl
+Marks a destination whose text should be ignored if not understood by the RTF reader\cell \pard \intbl \row \pard \par
+\pard An ASCII 9 will be accepted as a tab character. The code {\f22 \\<ASCII10>} (line feed) or {\f22 \\<ASCIIl3>} (carriage return) is treated as the control word {\f22 \\par}. You must incl
+ude the backslashes or RTF will ignore the control word. You may also want to insert a carriage-return-line-feed pair (without backslashes) at least every 255 characters for better text transmission over communication lines.\par
+\pard \tqc\tx720\tqc\tx1440\tqc\tx2160\tqc\tx2880\tx0 \par
+}
diff --git a/support/w2latex/EXEMPLES/Symbol.rtf b/support/w2latex/EXEMPLES/Symbol.rtf
new file mode 100644
index 0000000000..e4c62fdb23
--- /dev/null
+++ b/support/w2latex/EXEMPLES/Symbol.rtf
@@ -0,0 +1,7 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo6\dy28\hr7\min58}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036 {\f1 azertyuiopqsdfghjklmwxcvbn,;:!\'b2&\'e9"'(-\'e8_\'e7\'e0
+)=1234567890\'b0+AZERTYUIOPQSDFGHJKLMWXCVBN?./\'a7<>\'f9%*\'b5$\'a3}{\f1 \'e2\'ea}{\f1 \'fb\'ee\'f4\'f6\'ef\'fc}{\f1 \'ff\'eb}{\f1 \'e4\'d4\'ce\'db\'ca\'c2\'d6\'cf\'dc\'a8Y\'cb\'c4}
+\par
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/Texte.rtf b/support/w2latex/EXEMPLES/Texte.rtf
new file mode 100644
index 0000000000..6cdc60583f
--- /dev/null
+++ b/support/w2latex/EXEMPLES/Texte.rtf
@@ -0,0 +1,6 @@
+{\rtf1\ansi\deflang1024\deff0{\fonttbl{\f0\froman Times Roman;}{\f1\fnil Times;}}{\colortbl;\red0\green0\blue0;}{\stylesheet{\f1\cf1 \snext0 Normal;}{\s1 \f1\cf1 \sbasedon0\snext1 Cellule;}{\s2\tqc\tx5044\tqr\tx9636 \f1\cf1 \sbasedon0\snext2
+EnTêtePiedDePage;}{\s3 \f1\cf1 \sbasedon0\snext3 Normale;}{\s4 \f1\cf1 \sbasedon0\snext4 NoteDeBasDePage;}}{\info}\paperw11904\paperh16836\margl1133\margr1133\margt1416\margb1416\widowctrl\ftnbj\sectd\marglsxn1133\margrsxn1133\margtsxn1416
+\margbsxn1416\pgwsxn11904\pghsxn16836\pghsxn16836\sbknone\headery360\footery360\endnhere\pard\plain \f1\cf1
+\par est une formule sans sens.
+\par
+\par }
diff --git a/support/w2latex/EXEMPLES/Users_Guide.rtf b/support/w2latex/EXEMPLES/Users_Guide.rtf
new file mode 100644
index 0000000000..ce040a5cfc
--- /dev/null
+++ b/support/w2latex/EXEMPLES/Users_Guide.rtf
@@ -0,0 +1,268 @@
+{\rtf1\defformat\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f5\fscript Venice;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f16\fnil Palatino;}{\f20\froman Times;}{\f21\fswiss Helvetica;}
+{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f34\fnil New Century Schlbk;}{\f1724\fnil Kashmir;}{\f2515\fnil MT Extra;}{\f2853\fnil BobGothic;}{\f2944\fnil Handwriting;}}{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\li360\brdrt\brdrs \tx2700\tqc\tx4320\tqr\tx9720 \b\f20 \sbasedon0\snext243 footer;}{\s245\li360 \f20\fs18\up6
+\sbasedon0\snext0 footnote reference;}{\s246\li360 \f20\fs20 \sbasedon0\snext246 footnote text;}{\s250\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon251\snext0 heading 6;}{\s251\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon252\snext0 heading 5;}{
+\s252\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon253\snext0 heading 4;}{\s253\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon254\snext0 heading 3;}{\s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 \sbasedon255\snext0 heading 2;}{
+\s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 \sbasedon0\snext0 heading 1;}{\li360 \f20 \sbasedon222\snext0 Normal;}{\s1\fi-720\li1080\tx1440 \f20 \sbasedon0\snext1 ol;}{\s2\li360 \i\f20 \sbasedon0\snext2 address;}{\s3\fi-720\li1440\tx1440 \f20
+\sbasedon1\snext3 ol 1;}{\s4\fi-720\li1800\tx1800 \f20 \sbasedon3\snext4 ol 2;}{\s5\li1440\ri1440 \i\f20 \sbasedon0\snext5 blockquote;}{\s6\fi-900\li2340\tx2340 \f20 \sbasedon4\snext6 ol 3;}{\s7\fi360\tx360\tx3600\tx4320\tx7200\tx10700 \f20
+\sbasedon8\snext7 dir;}{\s8\fi-3960\li4320\tx4320 \f20 \sbasedon1\snext8 glossary;}{\s9\fi-1080\li2880\tx2880 \f20 \sbasedon6\snext9 ol 4;}{\s10\fi-1260\li3420\tx3420 \f20 \sbasedon9\snext10 ol 5;}{\s11\fi-720\li1080\tx1440 \f20 \sbasedon1\snext11 menu;}{
+\s12\fi-3960\li4680\tx4680 \f20 \sbasedon8\snext12 glossary 1;}{\s13\fi-3960\li5040\tx5040 \f20 \sbasedon12\snext13 glossary 2;}{\s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 \sbasedon0\snext14 pre;}{
+\s15\fi-3960\li5400\tx5400 \f20 \sbasedon13\snext15 glossary 3;}{\s16\fi-3960\li5760\tx5760 \f20 \sbasedon15\snext16 glossary 4;}{\s17\fi-3960\li6120\tx6120 \f20 \sbasedon16\snext17 glossary 5;}{\s18\fi-720\li1080\tx1440 \f20 \sbasedon1\snext18
+numbered list;}{\s19\fi-720\li1440\tx1440 \f20 \sbasedon3\snext19 numbered list 1;}{\s20\fi-720\li1800\tx1800 \f20 \sbasedon4\snext20 numbered list 2;}{\s21\fi-900\li2340\tx2340 \f20 \sbasedon6\snext21 numbered list 3;}{\s22\fi-1080\li2880\tx2880 \f20
+\sbasedon9\snext22 numbered list 4;}{\s23\fi-1260\li3420\tx3420 \f20 \sbasedon10\snext23 numbered list 5;}{\s24\fi-180\li540\tx540 \f20 \sbasedon18\snext24 bullet list;}{\s25\fi-180\li900\tx900 \f20 \sbasedon19\snext25 bullet list 1;}{
+\s26\fi-180\li1260\tx1260 \f20 \sbasedon20\snext26 bullet list 2;}{\s27\fi-180\li1620\tx1620 \f20 \sbasedon21\snext27 bullet list 3;}{\s28\fi-180\li1980\tx1980 \f20 \sbasedon22\snext28 bullet list 4;}{\s29\fi-180\li2340\tx2340 \f20 \sbasedon23\snext29
+bullet list 5;}{\s30\fi360\li360\tx720\tx3960\tx4320\tx7560\tx10700 \f20 \sbasedon7\snext30 dir 1;}{\s31\fi360\li720\tx1080\tx4320\tx7920\tx10700 \f20 \sbasedon30\snext31 dir 2;}{\s32\fi360\li1080\tx1440\tx4680\tx8280\tx10700 \f20 \sbasedon31\snext32
+dir 3;}{\s33\fi360\li1440\tx1800\tx5040\tx8640\tx10700 \f20 \sbasedon32\snext33 dir 4;}{\s34\fi360\li1800\tx2160\tx5400\tx10700 \f20 \sbasedon33\snext34 dir 5;}{\s35\fi-720\li1440\tx1440 \f20 \sbasedon3\snext35 menu 1;}{\s36\fi-720\li1800\tx1800 \f20
+\sbasedon4\snext36 menu 2;}{\s37\fi-900\li2340\tx2340 \f20 \sbasedon6\snext37 menu 3;}{\s38\fi-1080\li2880\tx2880 \f20 \sbasedon9\snext38 menu 4;}{\s39\fi-1260\li3420\tx3420 \f20 \sbasedon10\snext39 menu 5;}{\s40\fi-720\li1080\tx1440 \f20
+\sbasedon18\snext40 small gloss;}{\s41\fi-720\li1440\tx1440 \f20 \sbasedon19\snext41 small gloss 1;}{\s42\fi-720\li1800\tx1800 \f20 \sbasedon20\snext42 small gloss 2;}{\s43\fi-900\li2340\tx2340 \f20 \sbasedon21\snext43 small gloss 3;}{
+\s44\fi-1080\li2880\tx2880 \f20 \sbasedon22\snext44 small gloss 4;}{\s45\fi-1260\li3420\tx3420 \f20 \sbasedon23\snext45 small gloss 5;}{\s46\fi-180\li540\tx540 \f20 \sbasedon24\snext46 ul;}{\s47\fi-180\li900\tx900 \f20 \sbasedon25\snext47 ul 1;}{
+\s48\fi-180\li1260\tx1260 \f20 \sbasedon26\snext48 ul 2;}{\s49\fi-180\li1620\tx1620 \f20 \sbasedon27\snext49 ul 3;}{\s50\fi-180\li1980\tx1980 \f20 \sbasedon28\snext50 ul 4;}{\s51\fi-1260\li3420\tx3420 \f20 \sbasedon0\snext51 ul 5;}{\s52\li360\sb120\sa120
+\brdrb\brdrth \f20 \sbasedon0\snext0 hr;}}{\info{\title rtftohtml Users Guide}{\author Chris Hector cjh@cray.com}}\widowctrl\ftnbj\fracwidth \sectd \sbknone\linemod0\linex0\cols1\endnhere \pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36
+rtftohtml Users Guide\par
+\pard\plain \li360 \f20 This document contains directions for using the {\i rtftohtml} filter. \par
+\pard \li360 There are two ways that the rtftohtml filter may be used. You can take existing documents and translate them to HTML, or write new documents explicitly for the World Wide Web. This filter should accomodate both uses.\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 An Overview of rtftohtml\par
+\pard\plain \li360 \f20 rtftohtml reads up RTF format documents and translates them to HTML. In processing text, the filter chooses HTML markup based on three characteristics. These are\par
+\pard\plain \s18\fi-720\li1080\tx1440 \f20 1)\tab The destination of the text. Example destinations are header, footer, nootnote, picture.\par
+\pard \s18\fi-720\li1080\tx1440 2)\tab The paragraph style. Paragraph styles are user-definable entities, but some are pre-defined by the word processing package. For Microsoft Word (on the Macintosh) examples are "Normal" and "heading 1". \par
+\pard \s18\fi-720\li1080\tx1440 3)\tab The text attributes. Examples of text styles are bold, courier, 12 point.\par
+\pard\plain \li360 \f20 \par
+\pard \li360
+The filter has built-in rules for dealing with destinations. For paragraph and text styles, the rules for translation are contained in a file called html-trans. By modifying this file, you can train rtftohtml to perform the correct translations for your do
+cuments. The most common change that you will need to make is to add your own paragraph styles to html-trans.\par
+\pard \li360 \par
+\pard \li360 rtftohtml should produce reasonable HTML output for most documents. Here is what you can expect:\par
+\pard\plain \s24\fi-180\li540\tx540 \f20 \bullet \tab Your output should appear in a file called "xx.html" where "xx" or "xx.rtf" was your input file name.\par
+\pard \s24\fi-180\li540\tx540 \bullet \tab Bold, italic and underlined text should appear with <b>,<i> and <u> markup\par
+\bullet \tab Courier font text should appear with <tt> markup\par
+\bullet \tab Tables will be formatted using <pre> markup (only plain text is supported in tables.)\par
+\bullet \tab Footnotes will appear at the end of your document with hypertext links to them.\par
+\bullet \tab Table of contents, indexes, headers and footers are discarded.\par
+\pard \s24\fi-180\li540\tx540 \bullet \tab All paragraph styles use in your document must appear in the file "html-trans". This allows you to create a mapping from any paragraph style to any HTML markup.
+There are many pre-defined styles in html-trans, including "heading 1..6". (If a paragraph style is not found, a warning will be generated and the text will be written to the HTML file with no special markup.)\par
+\pard \s24\fi-180\li540\tx540 \bullet \tab Each graphic in your file will be written out to a separate file. The filename will be "xxn.ext" where "xx" or "xx.rtf" was your input, "n" is a unique number and "ext" will be either "pict"
+ for Macintosh PICT format graphics or "wmf" for Windows Meta-Files format graphics. The HTML file will create links to these files, using either "<A HREF=" or "<IMG SRC=" links. {\b
+SINCE most WWW browsers do not understand "wmf" or "pict" format files, the link will be to xxn.gif. }This presumes that you will run some {\b other} filter to translate your graphic files to gif.\par
+\bullet \tab Text that is connected with copy/paste-link constructs will generate hypertext links.\par
+\pard\plain \li360 \f20 \par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 How it works\par
+\pard\plain \li360 \f20 rtftohtml begins by reading html-trans and the character translation files. The rest of the processing is a loop of reading your RTF file and writing HTML. A high level overview of this loop looks like this:\par
+\pard\plain \s18\fi-720\li1080\tx1440 \f20 1)\tab Read the next character. In doing so, the filter also reads all of the RTF markup that specifies the destination, paragraph and text styles of the next character.\par
+\pard \s18\fi-720\li1080\tx1440 2)\tab Process the destination information. Normally, text is destined for the "body" of the document. Sometimes, the text belongs in a header, footnote or footer. The filter
+ discards any text for headers, footers. For a footnote, the filter writes the text at the end of the document and generates a link to it.\par
+\pard \s18\fi-720\li1080\tx1440 3)\tab
+Process any SPECIAL text styles. The filter compares the text style information to see if it matches any entries in the .TMatch table (in html-trans). If there is a match and the entry is for "_Discard", "_Literal", "_Hot", "_HRef", "_Name" or "_Footnot
+e" then the text will be processed accordingly. For example, "_Discard" text is discarded and "_Name" text will generate an anchor using the text as a name.\par
+\pard \s18\fi-720\li1080\tx1440 4)\tab
+If the text was not SPECIAL, process the paragraph style. The filter takes the name of the paragraph style and looks it up in the list of paragraph styles in html-trans (in the .PMatch table). If the paragraph style is not found in the table it uses the
+ first entry : "Normal". This entry has a nesting level and the name of the HTML "paragraph"{\fs18\up6 \chftn {\footnote \pard\plain \s246\fi-360\li720 \f20\fs20 {\fs18\up6 \chftn }\tab
+In HTML, there are tags like <h1>, <ol> which describe the paragraph.s, and tags like <b> and <tt> which describe text. I call these "paragraph" markup and "text" markup respectively.}}
+ markup to use. Using the HTML paragraph" markup name, the filter (using the .PTag table) knows what tags to generate for the text. \par
+\pard \s18\fi-720\li1080\tx1440 5)\tab
+If the text was not SPECIAL, process the text styles again. The filter compares the text style information to see if it matches any entries in the .TMatch table (in html-trans). In this step, it is possible to match more than one entry. For each matched
+ entry in the .TMatch table, the filter uses the HTML "text" markup name, the filter (using the .TTag table) knows what tags to generate for the text. \par
+\pard\plain \li360 \f20 \par
+\pard \li360 Using this process, the filter can generate any HTML markup for any combination of paragraph style and text style. \par
+\pard \li360 \par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 What about Graphics?\par
+\pard\plain \li360 \f20
+Graphics are imbedded in RTF in either a binary format or an (ASCII) hex dump of that binary. I have never seen a binary format graphic - I don't think that the filter will process binary correctly. It does handle the hex format of graphics, by converting
+ the hex back into binary and writing the binary to a file. The file extension is chosen by looking at the original type of the graphic. The following list shows the file types and their extensions:\par
+\pard \li360 \par
+\pard\plain \s8\fi-3960\li4320\tx4320 \f20 Macintosh PICT \tab .pict - also, 256 bytes of nulls are prepended to the graphic. This is to conform to the PICT file format.\par
+\pard \s8\fi-3960\li4320\tx4320 Windows Meta-files\tab .meta \tab - ???? Is this ok???\par
+Windows Bit-map\tab .bmp\tab - ???? Is this ok???\par
+\pard\plain \li360 \f20 \par
+\pard \li360
+In addition, the filter produces a link to the file containing the graphic. Now, since the above graphic formats are not very portable, the filter assumes that you will convert these files to something more useful, like GIF. So the format of the link is:
+\par
+\pard \li360 {\f22 <a href="basenameN.ext">Click here for a Picture</a>\par
+}where \par
+\pard\plain \s24\fi-180\li540\tx540 \f20 \bullet \tab {\f22 basename} is the name of the input document (without the .rtf extension)\par
+\bullet \tab {\f22 N} is a unique number (starting at 1)\par
+\pard \s24\fi-180\li540\tx540 \bullet \tab {\f22 ext} is an extension. This defaults to GIF, but can be overidden with the -P command line option.\par
+\pard \s24\fi-180\li540\tx540 \par
+\pard\plain \li360 \f20 You can also change the link to an IMG form. If you specify the -I command line option, all links to graphics will be of the form:\par
+\pard \li360 {\f22 <IMG src="basenameN.ext">}\par
+\par
+\pard \li360 There is one other special case. If a graphic is encountered when the filter is in the process of generating a link, the IMG form of the link is used even without the -I command line option.\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 Special Processing\par
+\pard\plain \li360 \f20 In the following discussion of SPECIAL processing, I will assume that rtftohtml has not been customized. If it has, the text styles used to create special effects may be different. \par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Making a Named Anchor\par
+\pard\plain \li360 \f20
+To make a named anchor, you simply enter the name in the document where you would like the anchor to appear. Then format the text using Outline and Hidden. Be careful in formatting the text that you format ONLY the name - be careful
+ not to format leading and trailing spaces or paragraph marks. As an example, if the text - Named Anchor Example - were formatted with Outline and Hidden, it would produce the HTML output :\par
+\pard \li360 <a name="Named Anchor Example"></a>\par
+\par
+\pard \li360 To change the formatting that produces named anchors, you need to modify the entry in html-trans that specifies "_Name" formatting.\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Footnote/Endnote Processing\par
+\pard\plain \li360 \f20 If your RTF document contains footnotes or endnotes, the filter will place the text of the footnote at the end of the HTML do
+cument. At the footnote reference mark, the filter will generate a hypertext link to the text of the footnote. This works with either automatically numbered footnotes{\fs18\up6 \chftn {\footnote \pard\plain \s246\li360 \f20\fs20 {\fs18\up6 \chftn }\tab
+Look, there is one now!}}, or user supplied footnote reference marks{\fs18\up6 +{\footnote \pard\plain \s246\li360 \f20\fs20 {\fs18\up6 +} \tab There is my mark.}} . \par
+\pard \li360
+This processing has one special requirement. The rtftohtml filter requires that footnote reference marks be formatted as Superscript, and that NO other text be formatted with Superscript. If your footnote reference marks are not formatted as Superscript, y
+ou must identify some formatting that is unique to footnote reference marks and then specify this in html-trans in the entry describing "_Footnote".\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Discarding Unwanted Text\par
+\pard\plain \li360 \f20 If you have text that you do not want to appear in the HTML output, simply format the text as Hidden and Plain (that is, no underline, outline...). \par
+If you wish to modify the formatting that discards text, you need to change the entry in html-trans that specifies "_Discard".{\b \par
+}\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Imbedding HTML in a Document\par
+\pard\plain \li360 \f20 Normally, if your RTF document contained the text "<cite>hello</cite>", t
+he translator would output this as: "&lt;cite&gt;hello&lt;/cite&gt;". This ensures that the text would appear in your HTML output exactly as it appeared in the original RTF document. If, however, you want the <cite></cite> to be interpreted as HTML markup,
+ you must format the tags using Hidden and Shadow. The filter will then send the tags through without translation. \par
+\pard \li360 When the rtftohtml filter produces HTML markup, it keeps track of the nesting level of tags to ensure that you don't get something like <b><
+cite>hello</b></cite> which would be incorrect markup. If you imbed HTML markup in your document, the filter will NOT be aware of it. You must ensure that your markup appears correctly nested.\par
+\pard \li360 If you wish to modify the formatting for imbedded HTML, you need to change the entry in html-trans that specifies "_Literal".{\b \par
+}\pard \li360 {\b \par
+}\par
+\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 Customizing rtftohtml\par
+\pard\plain \li360 \f20 Some customizations of rtftohtml require a little understanding of how the filter work, others require a lot. All of the customizations involve editing either html-trans or one of the character translation files. \par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 html-trans File Format\par
+\pard\plain \li360 \f20 In html-trans there are four tables. They are .PT
+ag, .TTag, .PMatch and .TMatch. These tables begin with the name (in column one) and continue until the next table starts. All blank lines and lines beginning with a '#' are discarded. '#' lines a
+re typically used for comments. The tables themselves are composed of records containing a fixed number of fields which are separated by commas. The fields are either strings (which should be quoted) integers or bitmasks.\par
+\pard \li360 \par
+\pard\plain \s253\li360\sb120\sa120\keepn \b\f20\fs28 .PTag Table\par
+\pard\plain \li360 \f20 Each entry in the .PTag table describes an HTML paragraph markup. The format is: \par
+.PTag\par
+\pard \li360 #"name","starttag","endtag","col2mark","tabmark","parmark",allowtext,cannest,DeleteCol1,fold\par
+\pard\plain \s8\fi-3960\li4320\tx4320 \f20 {\b name}\tab A unique name for this entry. These names are referenced in the .PMatch table.\par
+{\b starttag}\tab This string will be output once at the beginning of any text for this markup.\par
+{\b endtag}\tab This string will be output once at the end of any text for this markup.\par
+{\b col2mark}\tab This string will be output in place of the first tab in every paragraph (used for lists)\par
+{\b parmark}\tab This string will be output in place of each paragraph mark. (usually <br> or <p>)\par
+\pard \s8\fi-3960\li4320\tx4320 {\b allowtext}\tab If 0, no text markup will be allowed within this markup. (for example <pre> or <h1> don't format well if they contain additional markup.\par
+\pard \s8\fi-3960\li4320\tx4320 {\b cannest}\tab If 1, other paragraph markup will be allowed to nest within this markup. (used for nesting lists)\par
+\pard \s8\fi-3960\li4320\tx4320 {\b DeleteCol1}\tab If 1, all text up to the first tab in a paragraph will be deleted. (used to strip out bullets that when going to unordered lists (<ul>).\par
+{\b fold}\tab If 1, the filter will add newlines to the HTML to keep the number of characters in a line to less than 80. For <pre> or <listing> elements, this should be set to 0.\par
+\pard\plain \li360 \f20 \par
+\par
+\pard\plain \s252\li360\sb120\sa120\keepn \b\f20\fs28 Sample .PTag Entries\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 "h1","<h1>\\n","</h1>\\n","\\t","\\t","<br>\\n",0,0,0\par
+\pard\plain \li360 \f20 This is a level 1 heading. The "\\n" in the start and end-tag fields forcesa newline in the HTML markup. Since newlines are ignored in HTML (except in <pre>) it's only effect is to make the HTML output more readable.
+ There is no difference between the first tab and any other. They both translate to a tab mark. Paragraph marks generate "<br>" followed by a newline (just for looks). Text markup (like <b>) is not allowed within <h1> text
+, because we leave that up to the HTML client. No nesting is allowed - (see the discussion on nested styles). No text is deleted.\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 \par
+"Normal","","\\n","\\t","\\t","<p>\\n",1,0,0\par
+\pard\plain \li360 \f20 This is the default for normal text. Regular text in HTML has no required start and end-tags. The "\\
+n" in the end-tag field forces a newline in the HTML markup. Since newlines are ignored in HTML (except in <pre>) it's only effect is to make the HTML output more readable.
+ There is no difference between the first tab and any other. They both translate to a tab mark. Paragraph marks generate "<p>" followed by a newline (just for looks). Text markup (like <b>) is allowed within Normal text. No nesting is allowed
+- (see the discussion on nested styles). No text is deleted.\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 \par
+\pard \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 "ul","<ul>\\n<li>","</ul>","\\t","\\t","\\n<li>",1,1,0\par
+\pard\plain \li360 \f20 This is the entry for unordered lists. This generates a "<ul>\\n<li>" at the start of the list and "</ul>/n" at the end.
+There is no difference between the first tab and any other. They both translate to a tab mark. Paragraph marks generate "<li>" preceded by a newline (just for looks). Text mark
+up (like <b>) is allowed, and this entry may be nested - and it allows others to be nested within it. This allows nested lists. No text is deleted.\par
+\pard \li360 \par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 "ul-d","<ul>\\n<li>","</ul>","\\t","\\t","\\n<li>",1,1,1\par
+\pard\plain \li360 \f20 This entry is identical to the previous except that the DeleteCol1 field is set to 1. This is used to remove bullets (which really appear in the RTF) because we don't want to see them in the HTML.\par
+\pard \li360 \par
+\pard\plain \s253\li360\sb120\sa120\keepn \b\f20\fs28 .TTag Table\par
+\pard\plain \li360 \f20 Each entry in the .TTag table describes an HTML text markup. The format is: \par
+.TTag\par
+"name","starttag","endtag"\par
+\pard\plain \s8\fi-3960\li4320\tx4320 \f20 {\b name}\tab A unique name for this entry. These names are referenced in the .PMatch table.\par
+{\b starttag}\tab This string will be output once at the beginning of any text for this markup.\par
+{\b endtag}\tab This string will be output once at the end of any text for this markup.\par
+\pard\plain \li360 \f20 Note that
+unlike the .PTag table, no text markup should appear more than once. (Of course there is no good reason that it should appear.) If you have two entries with <b></b> start and end tags, it would be possible to get HTML of the form <b><b> text</b></b>. I don
+'t know if this is invalid markup, but it sure is ugly.\par
+\pard \li360 \par
+\pard\plain \s253\li360\sb120\sa120\keepn \b\f20\fs28 .PMatch Table\par
+\pard\plain \li360 \f20 Each entry in the .PMatch correlates a paragraph style name to some entry in the .PTag table. The format is: \par
+.PMatch\par
+"Paragraph Style",nesting_level,"PTagName"\par
+\pard\plain \s8\fi-3960\li4320\tx4320 \f20 {\b Paragraph Style}\tab The paragraph style name that appears in the RTF input.\par
+{\b nesting_level}\tab The nesting level. This should be zero except for nested list entries.\par
+{\b PTagName}\tab The name of the .PTag entry that should be used for paragraphs with this paragraph style. \par
+\pard\plain \li360 \f20 \par
+\par
+\pard\plain \s252\li360\sb120\sa120\keepn \b\f20\fs28 Sample .PMatch Entries\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 "heading 1",0,"h1"\par
+\pard\plain \li360 \f20 This is a level 1 heading. Any paragraphs with this paragraph style will be mapped to the entry in the .PTag table named "h1".\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 \par
+\pard \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 "numbered list",0,"ol-d"\par
+\pard\plain \li360 \f20 This is used for numbered lists. Any paragraphs with this paragraph style will be mapped to the entry in the .PTag table named "ol-d". \par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 \par
+\pard \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 "numbered list 2",2,"ol-d"\par
+\pard\plain \li360 \f20 This is an entry for a nested paragraph style. The nesting level of two is used to indicate that this paragraph should appear in the HTML nested within two levels of paragraph markups. The
+ paragraph marked with this style may only appear after a paragraph style that has a nesting level of 1 or greater.\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 \par
+\pard\plain \li360 \f20 \par
+\pard\plain \s253\li360\sb120\sa120\keepn \b\f20\fs28 .TMatch Table\par
+\pard\plain \li360 \f20 Each entry in the .TMatch table describes processing for text styles. The format is: \par
+.TMatch\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 "Font",FontSize,Match,Mask,"TextStyleName"\par
+\pard\plain \s8\fi-3960\li4320\tx4320 \f20 {\b Font}\tab The name of a Font, or "" if all fonts match this entry.\par
+{\b FontSize}\tab The point-size of the font, or 0 if all point sizes match this entry.,\par
+{\b Match}\tab A bit-mask, where each bit represents a text attribute. These bits are compared to the attributes of the style being output. They must match for this entry to be matched. One in a bit position means that the text style is set, a zero is
+not set.\par
+{\b Mask}\tab A bit-mask, where each bit represents a text attribute. In comparing the style of the text being processed, to the Match bit-mask, this field is used to select the bits that matter. If a zero appears in a
+bit-position, then that style attribute is ignored (for the purpose of matching this entry.) Only 1 bits are used in the above comparision.\par
+{\b TextStyleName}\tab This is either the name of an entry in the .TTag table indicating the HTML markup to use, or it is one of "_Discard", "_Name", "_HRef", "_Hot", or "_Literal".\par
+\pard\plain \li360 \f20 \par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 The order of bits in the Match and Mask bit-maps are:\par
+# v^bDWUHACSOTIB - Bold\par
+# v^bDWUHACSOTI - Italic\par
+# v^bDWUHACSOT - StrikeThrough\par
+# v^bDWUHACSO - Outline\par
+# v^bDWUHACS - Shadow\par
+# v^bDWUHAC - SmallCaps\par
+# v^bDWUHA - AllCaps\par
+# v^bDWUH - Hidden\par
+# v^bDWU - Underline\par
+# v^bDW - Word Underline\par
+# v^bD - Dotted Underline\par
+# v^b - Double Underline\par
+# v^ - SuperScript\par
+# v - SubScript\par
+\pard\plain \li360 \f20 \par
+\par
+\pard\plain \s252\li360\sb120\sa120\keepn \b\f20\fs28 Sample .PTag Entries\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 # double-underline/not hidden -> hot text\par
+# double-underline/hidden -> href\par
+# v^bDWUHACSOTIB,v^bDWUHACSOTIB\par
+"",0,00100000000000,00100010000000,"_Hot"\par
+"",0,00100010000000,00100010000000,"_HRef"\par
+\pard\plain \li360 \f20
+The first entry will match any text formatted with double underline EXCEPT if it is hidden text. This is accomplished by using those two bits to compare (the MASK field) and having a 1 in the double underline bit and a zero for the hidden text bit. The sec
+ond entry will match any text formatted with BOTH double und
+erline and hidden text. Any text that matches the first will be treated as the hot text of a link. Any text that matches the second will be taken as the href itself. (The filter requires that the HRef text immediately precede the Hot text.) \par
+\pard \li360 \par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 # Regular matches - You can have multiple of these active\par
+# monospace fonts -> tt\par
+"Courier",0,00000000000000,00000000000000,"tt"\par
+\pard\plain \li360 \f20 This will match any text that uses the Courier font and mark it using the HTML text markup appearing in the .TTag table with the entry name "tt".\par
+\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 # bold -> bold\par
+# v^bDWUIACSOTIB,v^bDWUIACSOTIB\par
+"",0,00000000000001,00000000000001,"b"\par
+\pard\plain \li360 \f20 This will match any text that has bold attributes and will mark it using the HTML text markup appearing in the .TTag table with the entry name "b".
+ Note that bold text using the Courier font would match both this entry and the previous. This will yeild markup of the form <b><tt>hi</tt><b>. Note that "b" is the name of an entry in the .TTag table, not the HTML markup that is used! \par
+\pard \li360 \par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Adding Paragraph Styles\par
+\pard\plain \li360 \f20 To add a new paragraph style, simply go to the .PMatch table and add an entry to the end. Put the name of the paragraph style (quoted), the nesting level (usually zero) and the name of the .PTag entry that should be used. \par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Modifying HTML "Paragraph" Markup\par
+\pard\plain \li360 \f20 This section in progress\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Changing SPECIAL Markup\par
+\pard\plain \li360 \f20 This section in progress\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Changing Text Style Markup\par
+\pard\plain \li360 \f20 This section in progress\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 Changing Text Translation\par
+\pard\plain \li360 \f20 This section in progress\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 Command Line Options\par
+\pard\plain \li360 \f20 The syntax of the rtftohtml command is as follows:\par
+\pard\plain \s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 rtftohtml [-i] [-o filename] [-P extension] [file]\par
+\pard\plain \s8\fi-3960\li4320\tx4320 \f20 {\b -i}\tab Indicates that imbedded graphics should be linked into the main document using an IMG tag. The default is to use an HREF style link.\par
+\pard \s8\fi-3960\li4320\tx4320 {\b -o filename}\tab Indicates that the output file name should be "filename". If any other files are cre
+ated (such as for graphics,) the basename of the other files will be "filename" without ".rtf" if it is present in the name.\par
+\pard \s8\fi-3960\li4320\tx4320 {\b -P extension}\tab Use "extension" as the extension for any links to graphics files. The default for this is "gif".\par
+\pard \s8\fi-3960\li4320\tx4320 {\b "file"}\tab The file name to be processed. If no f
+ile is given, standard input is used. If standard input is used, the body of the document will be written to standard output (unless overridden by the -o option.) If a file name appears, the output is written to "filename" with ".html" as an extension. (If
+ ".rtf" appears as an extension on the original input file, it is stripped before appending the ".html") \par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 Nested Paragraph Styles\par
+\pard\plain \li360 \f20 This section in progress\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 Errors\par
+\pard\plain \li360 \f20 This section in progress\par
+\pard\plain \s18\fi-720\li1080\tx1440 \f20 \par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/chap1.rtf b/support/w2latex/EXEMPLES/chap1.rtf
new file mode 100644
index 0000000000..6311782710
--- /dev/null
+++ b/support/w2latex/EXEMPLES/chap1.rtf
@@ -0,0 +1,387 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20
+\sbasedon0\snext0 toc 3;}{\s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 \sbasedon0\snext0 toc 2;}{\s233\qj\ri850\tqr\tldot\tx8504 \b\f20 \sbasedon0\snext0 toc 1;}{\s243\qj\tqc\tx4320\tqr\tx8640 \f20 \sbasedon0\snext243 footer;}{
+\s252\qj\li354\sb40\sa40 \f20\ul \sbasedon0\snext0 heading 4;}{\s253\qj\li354\sb120\sa80 \b\f20 \sbasedon0\snext0 heading 3;}{\s254\qj\sb200\sa140 \b\f20\fs36\ul \sbasedon0\snext0 heading 2;}{\s255\qc\sb240 \b\f20\fs48 \sbasedon0\snext0 heading 1;}{\qj
+\f20 \sbasedon222\snext0 Normal;}{\s2\sb120\keep\keepn \b\f22 \sbasedon0\snext2 input;}{\s3 \f22\fs20 \sbasedon0\snext3 output;}{\s4\qj\li1120 \f20\fs20 \sbasedon0\snext4 commentaire;}}{\info{\title chap1.doc}{\author EBM}}
+\paperw11880\paperh16800\margl1701\margr1701\margt1417\margb1417\deftab709\widowctrl\ftnbj {\*\nextfile disque dur:chap2.doc}\sectd \pgnrestart\pgnucrm\linemod0\linex0\cols1\endnhere {\footerl \pard\plain \s243\qc\tqc\tx4320\tqr\tx8640 \f20 {\fs20
+Calcul formel avec Maple page \chpgn }\par
+}{\footer \pard\plain \s243\qc\tqc\tx4320\tqr\tx8640 \f20 {\fs20 Calcul formel avec Maple page }{\fs20 \chpgn }{\fs20 \par
+}}\pard\plain \s233\qc\ri850\tqr\tldot\tx8504 \b\f20 Table des mati\'8fres\par
+\pard \s233\qj\ri850\tqr\tldot\tx8504 Introduction \'88 Maple\tab 1\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 I. L'interface utilisateur\tab 1\par
+II. Les entr\'8ees d'expression et d'instructions\tab 1\par
+III. Les fonctions Maple\tab 2\par
+IV. Sauvegarde des sessions\tab 3\par
+V. Observation et recherche des erreurs\tab 3\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. L'instruction trace\tab 3\par
+2. La variable printlevel\tab 4\par
+3. La variable infolevel et le suivi algorithmique\tab 6\par
+4. Les instructions print et lprint\tab 7\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 VI. Facilit\'8es suppl\'8ementaires\tab 7\par
+\pard\plain \s233\qj\ri850\tqr\tldot\tx8504 \b\f20 Calculer sur des nombres\tab 8\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 I. Calculer sur des entiers\tab 8\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1.Fonctions utilis\'8ees\tab 8\par
+2.Exemples d'utilisation\tab 9\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 II. Calculer sur des rationnels\tab 9\par
+III. Calculer sur des nombres alg\'8ebriques\tab 10\par
+IV. Calculer sur des r\'8eels\tab 11\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1.Fonctions classiques\tab 11\par
+2.Evaluation des r\'8eels en virgule flottante\tab 11\par
+3.Evaluations exactes et \'8evaluations en virgules flottantes\tab 12\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 VI.Calculer sur des complexes\tab 12\par
+VII. Exercices\tab 13\par
+\pard\plain \s233\qj\ri850\tqr\tldot\tx8504 \b\f20 Calculer avec des symboles\tab 14\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 I.Expressions alg\'8ebriques\tab 14\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1.Transformations d'expressions alg\'8ebriques\tab 14\par
+2.Calculs modulo un nombre premier\tab 18\par
+3.Racines communes, racines multiples\tab 18\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 II.Substitutions, affectations\tab 19\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1.Substitutions\tab 19\par
+2.Affectation imm\'8ediate, affectation diff\'8er\'8ee\tab 21\par
+3. Suppression d'une affectation\tab 22\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 III. Sommation, d\'8erivation, integration\tab 22\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Sommes et produits\tab 22\par
+2. Derivation\tab 24\par
+3. Int\'8egrales ind\'8efinies (ou primitives)\tab 26\par
+4. Int\'8egrales d\'8efinies\tab 26\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 IV. Resoudre des \'8equations\tab 28\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Solutions symboliques\tab 28\par
+2. Solutions num\'8eriques\tab 30\par
+3. Equations diff\'8erentielles\tab 31\par
+4. Suites r\'8ecurrentes\tab 33\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 V.Exercices\tab 34\par
+\pard\plain \s233\qj\ri850\tqr\tldot\tx8504 \b\f20 Les structures de donn\'8ees\tab 36\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 I. Types simples\tab 36\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Types num\'8eriques\tab 36\par
+2. Les chaines de caract\'8fres et le type "name"\tab 37\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 II. Types compos\'8es\tab 37\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Sequences\tab 37\par
+2. Listes\tab 39\par
+3. Ensembles\tab 39\par
+4. Type index\'8e\tab 40\par
+5. Tables\tab 40\par
+5. Array\tab 42\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 III. Types expressions. Op\'8erandes\tab 43\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Arbre d'une expression\tab 43\par
+2. Type et op\'8erandes d'une expression\tab 44\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 \page IV. Typage\tab 45\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Les types pr\'8ed\'8efinis\tab 45\par
+2. Le contr\'99le des types\tab 46\par
+3. Les types d\'8efinis par l'utilisateur\tab 47\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 V. L'evaluation\tab 49\par
+\pard\plain \s233\qj\ri850\tqr\tldot\tx8504 \b\f20 Programmer Maple\tab 51\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 I. Les structures de contr\'99le\tab 51\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Structures conditionnelles\tab 51\par
+2. Structure r\'8ep\'8etitive\tab 51\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 II. Les proc\'8edures\tab 52\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Les objets proc\'8edures\tab 52\par
+2. Param\'8ftres et variables locales\tab 54\par
+3. Nombre de param\'8ftres\tab 55\par
+4. Le passage des param\'8ftres\tab 56\par
+5. Type des param\'8ftres\tab 57\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 II. Les fonctions op\'8erateurs\tab 57\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. Fonctions fl\'8fches et fonctions angles\tab 57\par
+2. Un peu de programmation fonctionnelle\tab 59\par
+3. La d\'8efinition d'op\'8erateurs infixes\tab 60\par
+4. Exercices\tab 61\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 V. La r\'8ecursivit\'8e et les options\tab 61\par
+VI. R\'8esum\'8e de la syntaxe et de la s\'8emantique du langage\tab 62\par
+\pard\plain \s233\qj\ri850\tqr\tldot\tx8504 \b\f20 Les graphismes\tab 64\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 I. Utilisation des proc\'8edures graphiques\tab 64\par
+\pard\plain \s231\qj\li1440\ri720\tldot\tx8280\tqr\tx8640 \f20 1. La proc\'8edure plot (dimension 2)\tab 64\par
+2. Autres proc\'8edures graphiques en 2D\tab 66\par
+3. La proc\'8edure plot3d (dimension 3)\tab 69\par
+4. Autres proc\'8edures 3D\tab 72\par
+5. Animations\tab 73\par
+6. Superposition de trac\'8es\tab 74\par
+\pard\plain \s232\qj\li720\ri720\tldot\tx8280\tqr\tx8640 \f20 II. La programmation des graphiques\tab 74\par
+III. Exercices\tab 77\par
+\pard\plain \qj \f20 \par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\par
+\pard \qj Note: Le logiciel Maple{\up6 \'a9} ainsi que la marque Maple{\up6 \'a9} sont propri\'8et\'8es de Waterloo Maple Publishing. Les extraits des \'8ecrans d'aide de Maple sont uniquement destin\'8es \'88 \'90tre utilis\'8es en m\'90
+me temps que le logiciel \'88 titre de r\'8ef\'8erence rapide et d'illustration de la syntaxe. Ils ne peuvent en aucune fa\'8don se substituer \'88 l'aide en ligne ainsi qu'aux ouvrages de base publi\'8es chez Springer Verlag:\par
+\pard \qj {\fs14 \par
+}\pard \qj \tab \tab Maple V Library reference manual\par
+\pard \qj \tab \tab Maple V Language reference manual\par
+{\b\fs48 \sect }\sectd \pgnrestart\linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere {\footer \pard\plain \s243\qc\tqc\tx4320\tqr\tx8640 \f20 {\fs20 \par
+}\pard \s243\qc\tqc\tx4320\tqr\tx8640 {\fs20 Calcul formel avec Maple page }{\fs20 \chpgn }\par
+}\pard\plain \s255\qc \b\f20\fs48 Introduction \'88 Maple\par
+\pard\plain \qj \f20 \par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul I. L'interface utilisateur\par
+\pard\plain \qj \f20 \tab Nous n'\'8evoquerons ici que l'interface utilisateur \'8evolu\'8ee que l'on peut trouver sur les versions Windows, MacIntosh ou X-Windows. Elle est compos\'8ee d'un \'8editeur pleine page pilot\'8e \'88
+ la souris. Chaque page est divis\'8ee en cellules: des cellules d'entr\'8ees d'expressions ou d'instructions (type {\b input}), des cellules de sorties de r\'8esultat (type {\b output} ou \'8eventuellement graphiques), des cellules de commentaire (type {
+\b text}) et des cellules graphiques. Vous pouvez introduire vous m\'90mes des cellules d'entr\'8ees ou des cellules de commentaires. Les cellules de sorties sont cr\'8e\'8ees par Maple lorsqu'il renvoye un r\'8e
+sultat. Les cellules graphiques sont remplies par un couper-coller \'88 partir d'une fen\'90tre graphique (et en particulier celles cr\'8e\'8ees par Maple \'88 la suite d'une instruction de dessin).\par
+\pard \qj \tab Les cellules de commentaire sont \'88 votre enti\'8fre disposition. Les cellules d'entr\'8ees doivent commencer par un prompt (en g\'8en\'8eral {\fs28 \bullet } ou {\b\fs36 >}), une commande de menu permettant d'ins\'8e
+rer un prompt. Ces cellules d'entr\'8ee ont une taille qui s'adapte \'88 leur contenu. A l'int\'8erieur de ces cellules, la touche {\i Return} provoque un retour \'88 la ligne de l'\'8e
+diteur (retour chariot), si bien qu'une cellule peut comprendre plusieurs lignes logiques. Par contre, la touche {\i Enter} (ou encore la combinaison {\i Shift-Return} ) provoque l'envoi de la cellule courante \'88 l'\'8evaluateur de Maple.\par
+\pard \qj \tab Les cellules de sortie de Maple suivent imm\'8ediatement les cellules d'entr\'8ee. Elles peuvent \'90tre au choix format\'8ees en mode texte simulant des formules math\'8ematiques de mani\'8fre plus ou moins heureuse (veiller \'88
+ utiliser en style {\b output }exclusivement une police non proportionnelle comme Monaco ou Courier, sinon vos exposants de baladeront n'importe o\'9d) ou en mode graphique (sorties "\'88 la TeX", assez esth\'8etiques).\par
+\pard \qj \par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul II. Les entr\'8ees d'expression et d'instructions\par
+\pard\plain \qj \f20 \tab Comme on l'a vu, l'envoi d'une cellule d'entr\'8ee \'88 l'\'8evaluateur de Maple se fait par la touche {\i Enter} ou encore par la combinaison {\i Shift-Return} (la touche {\i Return} provoquant un simple passage \'88
+ la ligne sans changer de cellule d'entr\'8ee). Une cellule d'entr\'8ee peut contenir une ou plusieurs expressions Maple \'8evaluables. Ces expressions sont alors \'8evalu\'8ees si elles sont compl\'90tes et le r\'8esultat de chacune d'entre elles est
+\'8eventuellement affich\'8e dans une cellule de sortie.\par
+\pard \qj \tab Une expression Maple est compl\'90te si elle se termine par un point-virgule ({\b ;}) ou deux-points ({\b :}). Si vous envoyez \'88 l'\'8evaluateur une expression incompl\'90te, Maple se contente de r\'8e
+afficher le prompt et d'attendre la suite de l'expression jusqu'\'88 ce qu'il rencontre le terminateur fatidique. Ce n'est qu'alors qu'il tentera de l'\'8evaluer (si bien qu'une expression Maple peut figurer de mani\'8fre morcel\'8e
+e dans plusieurs cellules d'entr\'8ee). Lorsqu'une expression Maple est \'8evalu\'8ee, son r\'8esultat (s'il existe) est d\'8epos\'8e sur le sommet d'une pile d'\'8evaluation. Cette pile contient trois \'8el\'8ements au maximum, que l'on peut r\'8ecup\'8e
+rer par trois symboles Maple qui sont ", "" et """. C'est ainsi que " permet de r\'8ecup\'8erer le r\'8esultat de la derni\'8fre \'8evaluation. Lorque cette pile d\'8eborde, les \'8el\'8ements les plus anciens sont \'8elimin\'8e
+s si bien que l'on ne peut acc\'8eder qu'aux r\'8esultats des trois derni\'8fres \'8evaluations.\par
+\pard \qj Remarque: nous avons essay\'8e de donner une id\'8ee succinte mais malheurusement inexacte de la signification des op\'8erateurs de type ". Les choses sont en fait plus compliqu\'8ees et on se r\'8ef\'8frera \'88 l'aide en ligne et \'88
+ la documentation pour conna\'94tre la signification exacte de ces op\'8erateurs qui fait intervenir le niveau d'ex\'8ecution. On peut regretter que les cr\'8eateurs de Maple aient utilis\'8e des op\'8erateurs dont la s\'8emantique est bien trop floue.
+\par
+\pard \qj \tab Une fois le r\'8esultat d\'8epos\'8e sur cette pile d'\'8evaluation, celui ci est affich\'8e ou non dans une cellule de sortie suivant que le terminateur de l'expression \'8e
+tait point-virgule ou deux-points. Le deux-points permet donc de ne pas afficher le r\'8esultat de l'\'8evaluation d'une expression, soit que le r\'8esultat soit en lui-m\'90me sans int\'8er\'90t, soit qu'il soit extr\'90mement compliqu\'8e
+ et que son affichage entra\'94ne une grosse perte de temps ou d'espace \'8ecran (c'est parfois le cas de bien des r\'8esultats interm\'8ediaires).\par
+\pard \qj {\i Remarque} : on a vu que seules les trois derniers r\'8esultats d'\'8evaluation sont accessibles. Il ne faut donc pas h\'8esiter \'88 effectuer des affectations pour des r\'8esultats interm\'8edaires que l'on pourrait vouloir r\'8e
+utiliser; un autre moyen est d'utiliser une fonction de la biblioth\'8fque Maple qui s'appelle {\b history} et qui se charge de conserver au fur et \'88 mesure (au prix d'un encombrement de la m\'8emoire) tous les r\'8esultats des \'8evaluations.\par
+\pard \qj \par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: history - maintain a history of all values computed\par
+CALLING SEQUENCE:\par
+ history()\par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The history function is used to maintain a history of all results computed within a Maple session, beyond what is available with Maple quotes - ", "", and """. A separate timing facility is also available.\par
+\pard \s4\qj\li1120 - After loading the history function, type history(); to initiate the history mechanism. The user will be prompted for input by the prompt O1 := and for successive statements by the prompts O2 :=, O3 :=, and so on. Any
+Maple statement entered is evaluated and displayed normally. The result is assigned to the global variables O1, O2, ... which may be referred to later by the user thus providing a history mechanism.\par
+\pard \s4\qj\li1120 - The previous value may be referred to by using " but "" and """ are no longer available under history.\par
+- By typing off; the history session is terminated, control is passed back to the normal session.\par
+- By typing timing(f); the time to execute the expression f will be displayed after the normal output.\par
+\pard \s4\qj\li1120 - By typing clear; the values of O1, O2, ... are cleared.\par
+\pard \s4\qj\li1120 - Caveats: history is an ordinary Maple function, programmed in Maple. As such it cannot trap interrupts. Hence, if you interrupt a calculation you will be thrown back to\par
+\pard \s4\qj\li1120 - This function should be defined by the command readlib(history) before it is used.\par
+\pard\plain \qj \f20 \par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul III. Les fonctions Maple\par
+\pard\plain \qj \f20 \tab L'appel d'une fonction ou instruction Maple se fait comme en Math\'8ematiques, en Pascal ou en C sous la forme {\i nom_de_fonction (param\'8ftres_\'8eventuels} ), \'88 l'aide de parenth\'8f
+ses. Maple dispose de quatre types de fonctions:\par
+\pard \qj \tab - les fonctions de base, toujours disponibles et qui sont charg\'8ees en m\'8emoire d\'8fs que de besoin\par
+\tab - les fonctions de la biblioth\'8fque \'8etendue qui doivent \'90tre charg\'8ees explicitement par l'utilisateur avant leur emploi \'88 l'aide de l'instruction {\b readlib(}{\i nom_de_fonction} {\b )\par
+}\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: readlib - read a library file to define a specified name\par
+CALLING SEQUENCE:\par
+ readlib(f)\par
+PARAMETERS:\par
+ f - the name of a procedure to be read\par
+SYNOPSIS: \par
+- With only one argument, calling readlib(f) causes the following statement to be executed:\par
+\pard \s4\qj\li1120 read ``.libname.`/`.f.`.m`;\par
+ This causes the .m file for f to be loaded from the standard Maple library.\par
+- The value returned from the readlib function is the value assigned to the first argument f after executing the read statement(s).\par
+- It is an error if f does not become defined by this action.\par
+- The readlib function has option remember; hence subsequent invocations of readlib with the same arguments will not cause files to be re-loaded.\par
+
+- It is often desirable to follow a call to readlib with a colon (:) rather than a semicolon (;). Ending a Maple command with a colon causes Maple to suppress printing the output from that command. Thus using a colon when calling readlib avoids having
+the procedure definition output to the screen.\par
+\pard\plain \qj \f20 \par
+\tab - les fonctions des diff\'8erents packages (ensembles de fonctions) de la biblioth\'8fque; on peut soit charger en m\'8emoire tout un package en bloc \'88 l'aide d'un {\b with}({\i nom_du_package} ), soit charger une unique fonction du package en m
+\'8emoire \'88 l'aide d'un {\b with}( {\i nom_du_package} , {\i nom_de _fonction} ) , soit utiliser directement cette fonction en indiquant explicitement son package d'origine sous la forme {\i nom_du_package }{\b [}{\i nom_de_fonction} {\b ]}
+; imaginons par exemple que vous vouliez utiliser la fonction {\b submatrix} du package {\b linalg, }qui extrait une sous matrice d'une matrice donn\'8e
+e; si vous ne l'utilisez qu'une seule fois pour extraire une sous matrice 3x3 d'une matrice A vous taperez\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet B:=linalg[submatrix](A,1..3,1..3);\par
+\pard\plain \qj \f20 si par contre vous comptez l'utiliser plusieurs fois vous taperez\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet with(linalg,submatrix):\line B:=submatrix(A,1..3,1..3);\par
+\pard\plain \qj \f20 et vous disposerez d\'8esormais de la fonction {\b submatrix} comme d'une fonction de base. Si par contre vous pensez avoir besoin par la suite d'autres fonctions du package {\b linalg} vous taperez\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet with(linalg):\line B:=submatrix(A,1..3,1..3);\par
+\pard\plain \qj \f20 et vous disposerez d\'8esormais de toutes les fonctions du package comme de fonctions de base\par
+\tab - les fonctions utilisateurs; ces fonctions peuvent \'90tre cr\'8e\'8ees de mani\'8fre interactive au cours de la session Maple par programmation, mais elles peuvent aussi \'90tre entr\'8ees par l'interm\'8ediaire d'un fichier \'88
+ l'aide de l'instruction {\b read} `{\i nom_du_fichier\~ }` (attention aux accents graves) ou de mani\'8fre interactive \'88 l'aide du menu ad\'8equat; dans ce dernier cas, Maple r\'8eagira diff\'8e
+remment suivant le suffixe de ce fichier. Si le nom du fichier se termine par '{\b .m}', Maple consid\'8erera qu'il s'agit d'un fichier compil\'8e; il en ex\'8ecutera les diverses instructions sans en afficher les r\'8e
+sultats. Si par contre le nom du fichier ne se termine pas par '{\b .m}', Maple consid\'8erera qu'il s'agit d'un fichier texte; il en ex\'8ecutera les diverses instructions comme si elles avaient \'8et\'8e entr\'8e
+es au clavier par l'utilisateur en affichant au fur et \'88 mesure les r\'8esultats.\par
+\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul IV. Sauvegarde des sessions\par
+\pard\plain \qj \f20 \tab Vous pouvez sauvegarder une session Maple sous forme de fichier ex\'8ecutable (en conservant uniquement les cellules d'entr\'8ee) ou sous forme de document complet. Pour le premier cas, vous pouvez le faire de mani\'8f
+re interactive \'88 l'aide du menu ad\'8equat, ou \'88 l'aide de l'instruction {\b save }`{\i nom_du_fichier\~ }` (attention aux accents graves). Suivant que le nom du fichier se termine par '{\b .m}' ou non, Maple le sauvera sous forme compil\'8e
+e ou sous forme de fichier texte.\par
+\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul V. Observation et recherche des erreurs\par
+\pard\plain \qj \f20 Contrairement \'88 d'autres environnements de programmation, Maple ne dispose pas de debogueur int\'8egr\'8e avec ex\'8ecution pas \'88 pas, observation des variables, etc. mais il dispose d'un certain nombre de facilit\'8e
+s que nous allons examiner dans ce paragraphe.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. L'instruction trace\par
+\pard\plain \qj \f20 Une des facilit\'8es est de pouvoir observer certains appels de proc\'8edures ou de fonctions \'88 l'aide de l'instruction {\b trace}. Si vous demandez la trace de l'une des proc\'8edures ou fonctions (qu'elle soit pr\'8ed\'8e
+finie dans Maple ou dans sa biblioth\'8fque ou bien qu'elle ait \'8et\'8e d\'8efinie par vous), \'88 chaque appel de la proc\'8edure ou de la fonction, Maple affichera la valeur courante des param\'8ftres \'88 l'entr\'8ee et la valeur de retour \'88
+ la sortie (si celle ci existe). C'est un moyen commode de recherche d'erreurs simples se situant au niveau du passage des param\'8ftres, de valeurs de retour de fonctions ou de boucles sans fin. Ceci permet de suivre facilement les proc\'8edures r\'8e
+cursives. Vous supprimez cette facilit\'8e avec l'instruction {\b untrace}.\par
+\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: trace, untrace - trace procedures in order to debug them\par
+CALLING SEQUENCE:\par
+ trace(f)\par
+ trace(f,g,h,...)\par
+ untrace(f)\par
+ untrace(f,g,h,...)\par
+PARAMETERS:\par
+ f, g, h, ... - name(s) of procedure(s) to be traced\par
+SYNOPSIS: \par
+- The trace function is a debugging tool for tracing the execution of the procedure(s) f, g, h, and so forth.\par
+- During execution, the entry points, the statements that are executed, and the exit points of the traced procedure(s) are printed. At entry points, the actual parameters are displayed. At exit points, the returned function value is displayed.\par
+- The untrace function turns off the tracing of its arguments.\par
+- The trace (untrace) function returns an expression sequence of the names of the procedures for which tracing was turned on (off).\par
+- Note that it is not possible to trace any function which has special evaluation rules, namely any of: assigned, eval, evalhf, evalf evaln, traperror, seq, userinfo.\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet fact:=proc(n) if n=1 then 1 else n*fact(n-1) fi; end:\line trace(fact):\line fact(5);\line untrace(fact):\par
+\pard\plain \qj \f20 \par
+\pard\plain \s3 \f22\fs20 \{--> enter fact, args = 5\par
+\{--> enter fact, args = 4\par
+\{--> enter fact, args = 3\par
+\{--> enter fact, args = 2\par
+\{--> enter fact, args = 1\par
+ 1\par
+\par
+<-- exit fact (now in fact) = 1\}\par
+ 2\par
+\par
+<-- exit fact (now in fact) = 2\}\par
+ 6\par
+\par
+<-- exit fact (now in fact) = 6\}\par
+ 24\par
+\par
+<-- exit fact (now in fact) = 24\}\par
+ 120\par
+\par
+<-- exit fact (now at top level) = 120\}\par
+ 120\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. La variable printlevel\par
+\pard\plain \qj \f20 \tab L'\'8evaluation d'une expression de Maple est un processus complexe correspondant \'88 l'\'8evaluation d'un arbre. Maple maintient de mani\'8fre interne une variable disant \'88 quel niveau d'ex\'8ecution il en est \'88
+ un instant donn\'8e. Sans rentrer dans le d\'8etail des structures de contr\'99le de Maple, disons que Maple augmente ce niveau de 1 chaque fois qu'il entre dans une structure conditionnelle ou it\'8erative, de 5 chaque fois qu'il entre dans une proc\'8e
+dure ou une fonction. Il le diminue de 1 \'88 la sortie d'une structure conditionnelle ou it\'8erative, de 5 \'88 la sortie d'une proc\'8edure ou d'une fonction.\par
+\tab La variable interne {\b printlevel} de Maple est une variable qui contr\'99le le niveau des instructions qui sont affich\'8ees par Maple. Cette variable vaut initialement 0, c'est \'88 dire que Maple n'affiche que les r\'8e
+sultats des instructions se d\'8eroulant au niveau le plus bas. Vous avez la possibilit\'8e de lui donner une valeur arbitraire, ce qui vous permettra de voir affich\'8es les r\'8esultats de toutes les instructions effectu\'8e
+es par Maple jusqu'au niveau choisi.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 HELP FOR: printlevel (display of information; debugging procedures)\par
+SYNOPSIS: \par
+- printlevel := <integer>\par
+- Statements within a particular procedure (or in the main session) are recognized in levels, determined by the nesting of conditional or repetition statements and the nesting of procedures.\par
+
+- The top (interactive) level is level 0; statements within conditional/repetition statements are level 1, or level 2 if doubly nested, etc. The first procedure is level 5; statements within conditional/repetition statements within a procedure are leve
+l 6, etc. The n-th nested procedure is level 5*n.\par
+- The setting of printlevel causes the display of the results of all statements executed up to the level indicated by printlevel. Initially, printlevel is set to 1.\par
+
+- Higher values of printlevel will cause more information to be displayed; negative values will cause no information to be displayed. In particular, many library procedures are programmed to print out explanatory information if printlevel > 1, with the
+values 2, 3, and 4 signifying successively more detailed information.\par
+- For debugging purposes, printlevel := 1000; is not uncommon.\par
+\par
+\pard\plain \qj \f20 Voici un exemple avec notre proc\'8edure de calcul de la factorielle\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet fact:=proc(n) if n=1 then 1 else n*fact(n-1) fi; end:\line printlevel:=12:\line fact(5);\line printlevel:=0:\par
+\pard\plain \qj \f20 \par
+\pard\plain \s3 \f22\fs20 \{--> enter fact, args = 5\par
+\{--> enter fact, args = 4\par
+ 24\par
+\par
+<-- exit fact (now in fact) = 24\}\par
+ 120\par
+\par
+<-- exit fact (now at top level) = 120\}\par
+ 120\par
+\par
+\pard\plain \qj \f20 Il est facile ici de comprendre ce qui se passe. Au d\'8epart le niveau d'ex\'8ecution est 0. L'entr\'8ee dans la proc\'8edure fact le fait passer \'88 5. L'entr\'8ee dans la structure de contr\'99le le fait passer \'88
+ 6. La nouvelle entr\'8ee dans la proc\'8edure fact le fait passer \'88 11, puis dans la structure de contr\'99le \'88 12. A partir de l\'88, le niveau d'ex\'8ecution d\'8epasse le niveau d'impression {\b printlevel} et les ex\'8e
+cutions d'instructions ne sont plus affich\'8ees jusqu'au retour du calcul de fact(3), auquel cas le niveau d'ex\'8ecution repasse \'88 12, puis \'88 11 au sortir du {\b if} puis \'88 6 au retour du calcul de fact(4), puis \'88 5 au sortir du {\b if}
+ correspondant au calcul de fact(5), puis \'88 0 au sortir du calcul de fact(5).\par
+Attention: ce sont les instructions qui sont affich\'8ees; les \'8evaluations d'expressions sont \'8egalement consid\'8er\'8ees comme des instructions; par contre les tests conditionnels et le calcul des bornes d'une structure it\'8e
+rative ne sont pas consid\'8er\'8es comme des instructions et ne sont pas affich\'8ees (ce qui ne facilite pas le debogage).\par
+Exemple:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet printlevel:=1: for i from 1 to 3 do x:=i*i od;\par
+\pard\plain \s3 \f22\fs20 x := 1\par
+ x := 4\par
+ x := 9\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet x:=0: y:=1: printlevel:=1:{\plain \f22 \line }if x=y then 0 else 1 fi;\par
+\pard\plain \s3 \f22\fs20 1\par
+\pard\plain \qj \f20 \par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3. La variable infolevel et le suivi algorithmique\par
+\pard\plain \qj \f20 La variable {\b printlevel} permet un suivi de l'ex\'8ecution pas \'88 pas d'un calcul. La variable {\b infolevel} est destin\'8ee au contraire \'88 permettre \'88 une proc\'8edure donn\'8ee (si elle a \'8et\'8e pr\'8e
+vue pour cela) de donner des renseignements \'88 l'utilisateur sur son d\'8eroulement \'88 l'aide d'une instruction {\b userinfo}. L'instruction {\b userinfo} utilis\'8ee dans la proc\'8edure a un param\'8ftre n (entier) fix\'8e. Si lors de l'ex\'8e
+cution de la proc\'8edure, au moment o\'9d l'instruction est rencontr\'8ee, la variable {\b infolevel} a une valeur sup\'8erieure \'88 n, l'information en question est affich\'8ee, sinon elle ne l'est pas. Chaque proc\'8e
+dure ou fonction dispose de sa propre variable {\b infolevel} \'88 laquelle on se r\'8ef\'8fre par {\b infolevel[}{\i nom_de_la_fonction} {\b ] }.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: userinfo - print useful information to the user\par
+CALLING SEQUENCE:\par
+ userinfo(lev, fn, e1, e2 ... )\par
+PARAMETERS:\par
+ lev - a non-negative integer\par
+ fn - a procedure name or a set of procedure names\par
+ e1 - any expression\par
+ e2 - (optional) any expression\par
+SYNOPSIS: \par
+- The procedure userinfo is used to print useful information to the user.\par
+- The first argument lev is a non-negative integer which determines the level at which information will be printed.\par
+- The second argument fn is a procedure name or set of procedure names for which this information is print
+ed. The information will be printed if the global assignment infolevel[fn] := Lev; or infolevel[all] := Lev; was entered before invoking the procedure containing the userinfo statement, and Lev >= lev. \par
+
+- First the name of the invoked procedure is printed using lprint, followed by a colon and 3 spaces. Then the third and optional other arguments are evaluated and lprinted together, but separated by 3 spaces. If one of the arguments is of the form prin
+t(...) then that argument is prettyprinted. If one of the arguments is of the form lprint(...) then that argument is printed on a separate line.\par
+
+- The user must assign a non-negative integer to some of the entries in the global table infolevel before invoking the procedure. If the entry infolevel[all] is a non-negative integer then every userinfo call will print if its level is less than or equ
+al to userinfo[all] .\par
+- Throughout the Maple V library userinfo statements have been used with the\par
+ following conventions: \par
+ Level 1: reserved for information that the user must be told.\par
+ Level 2,3: general information, including technique or algorithm being used.\par
+ Level 4,5: more detailed information about how the problem is being solved\par
+\pard\plain \qj \f20 \par
+Exemple:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(\{2*x+3*y=1,3*x+5*y=3\},\{x,y\});\par
+\pard\plain \s3 \f22\fs20 solve/linear: # equations 2\par
+solve/linear/integer/sparse: # equations 2\par
+solve/linear/integer/sparse: x, 2*x+3*y-1, 2\par
+solve/linear/integer/sparse: # equations 1\par
+solve/linear/integer/sparse: y, y-3, 1\par
+solve/linear/integer/sparse: backsubstitution at: 2\par
+solve/linear/integer/sparse: backsubstitution at: 1\par
+ \{y = 3, x = -4\}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(1/(x^2+1),x);\par
+\pard\plain \qj \f20 \par
+\pard\plain \s3 \f22\fs20 int/indef: first-stage indefinite integration\par
+int/ratpoly: rational function integration\par
+ arctan(x)\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 4. Les instructions print et lprint\par
+\pard\plain \qj \f20 Enfin vous disposez \'88 tout instant des instructions {\b print} ou {\b lprint} qui vous permettent d'afficher des r\'8esultats interm\'8ediaires. La proc\'8edure {\b print} les affiche format\'8es comme en sortie, l'instruction {\b
+lprint} les affiche non format\'8ees comme en sortie (les amoureux de C pourront \'8egalement trouver dans la biblioth\'8fque de Maple leur {\b printf} pr\'8ef\'8er\'8e avec une syntaxe tr\'8fs proche de C).\par
+Exemple:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet fact:=proc(n) print(`on en est \'88 n=`.n); if n=1 then 1 else n*fact(n-1) fi; end:\par
+fact(5);\par
+\pard\plain \qj \f20 \par
+\pard\plain \s3 \f22\fs20 on en est \'88 n=5\par
+ on en est \'88 n=4\par
+ on en est \'88 n=3\par
+ on en est \'88 n=2\par
+ on en est \'88 n=1\par
+ 120\par
+\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul VI. Facilit\'8es suppl\'8ementaires\par
+\pard\plain \qj \f20 Les noms de fonctions de Maple sont parfois compliqu\'8es ou troublent des habitudes acquises depuis longtemps. Maple permet de renommer des objets sans les modifier \'88 l'aide de la fonction {\b alias} . Contrairement \'88
+ une macro, il ne s'agit pas d'une abbr\'8eviation, mais bien d'un renommage qui fonctionne aussi bien pour les entr\'8ees de l'utilisateur que pour les sorties de Maple.\par
+\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: alias - define an abbreviation or denotation\par
+CALLING SEQUENCE:\par
+ alias(e1, e2, ..., eN)\par
+PARAMETERS:\par
+ e1, e2, ..., eN - zero or more equations\par
+SYNOPSIS: \par
+
+- Mathematics is full of special notations and abbreviations. These notations are typically encountered in written material as statements like ``let J denote the Bessel function of the first kind'' or ``let alpha denote a root of the polynomial x^3-2''
+. The purpose of the alias facility is to allow the user to state such abbreviations for the longer unique names that Maple uses and, more generally, to give names to arbitrary expressions.\par
+- To define F as an alias for fibonacci, use alias(F=fibonacci). To redefine F as an alias for hypergeom simply use alias(F=hypergeom). To remove this alias for F use alias(F=F).\par
+
+- Aliases work as follows. Consider defining alias(J=BesselJ), and then entering J(0,-x). On input the expression J(0,-x) is transformed to BesselJ(0,-x). Maple then evaluates and simplifies this expression as usual. In this example Maple returns Besse
+lJ(0,x). Finally, on output, BesselJ(0,x) is replaced by J(0,x).\par
+- The arguments to alias are equations. When alias is called, the equations are evaluated from left to right but are not subjected to any existing aliases. This means that you cannot define one alias in terms of another.\par
+ Next, the aliases are defined. Finally, a sequence of all existing aliases is returned as the function value.\par
+- The following improvements for Maple V should be noted. An alias may be defined for any Maple object except a numerical constant. You may assign to a variable b
+y assigning to its alias. The global symbol I in Maple has been defined to be an alias for sqrt(-1). Hence if you want to see the complex constant displayed as j then you would use alias(I=I,j=sqrt(-1)). Parameters and local variables are not affecte
+d by aliases. Thus it is possible to have a local variable or parameter called I.\par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/chap2.rtf b/support/w2latex/EXEMPLES/chap2.rtf
new file mode 100644
index 0000000000..957d0c0ce0
--- /dev/null
+++ b/support/w2latex/EXEMPLES/chap2.rtf
@@ -0,0 +1,289 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\qj\tqc\tx4320\tqr\tx8640 \f20
+\sbasedon0\snext243 footer;}{\s244\qj\tqc\tx4320\tqr\tx8640 \f20 \sbasedon0\snext244 header;}{\s252\qj\li354\sb40\sa40 \f20\ul \sbasedon0\snext0 heading 4;}{\s253\qj\li354\sb120\sa80 \b\f20 \sbasedon0\snext0 heading 3;}{\s254\qj\sb200\sa140
+\b\f20\fs36\ul \sbasedon0\snext0 heading 2;}{\s255\qc\sb240 \b\f20\fs48 \sbasedon0\snext0 heading 1;}{\qj \f20 \sbasedon222\snext0 Normal;}{\s2\sb120\keep\keepn \b\f22 \sbasedon0\snext2 input;}{\s3 \f22\fs20 \sbasedon0\snext3 output;}{\s4\qj\li1120
+\f20\fs20 \sbasedon0\snext4 commentaire;}}{\info{\title chap2.doc}{\author EBM}}\paperw11880\paperh16800\margl1701\margr1701\margt1417\margb1417\deftab709\widowctrl\ftnbj\pgnstart8\linestart8 {\*\nextfile disque dur:chap3.doc}\sectd
+\sbknone\linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere {\footer \pard\plain \s243\qc\tqc\tx4320\tqr\tx8640 \f20 \par
+\pard \s243\qc\tqc\tx4320\tqr\tx8640 {\fs20 Calcul formel avec Maple page }{\fs20 \chpgn }\par
+}\pard\plain \s255\qc\sb240 \b\f20\fs48 Calculer sur des nombres\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul I. Calculer sur des entiers\par
+\pard\plain \qj \f20 Remarquons que contrairement aux langages de programmation classique, les entiers sont dans Maple de "longueur infinie" : ils ne sont pas limit\'8es en taille (ou plut\'99t la limite est telle que vous ne pour
+rez jamais l'atteindre pratiquement.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1.Fonctions utilis\'8ees\par
+\pard\plain \qj \f20 En dehors des op\'8erations \'8evidentes sur les entiers (+,-,*,^) on utilisera les fonctions suivantes de Maple \par
+\pard \qj Calcul de la factorielle:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?factorial\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ expr ! or factorial (expr)\par
+SYNOPSIS: \par
+- The factorial operator ``!'' and the function factorial both produce the pro-\par
+ duct of the numbers from 1 to the given argument (if it is a non-negative\par
+ integer)\par
+\pard\plain \qj \f20 \par
+D\'8ecomposition en produits de nombres premiers:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?ifactor;\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ ifactor(n)\par
+ ifactor(n, method) \par
+PARAMETERS:\par
+ n - integer or a rational\par
+ method - (optional) name of base method for factoring \par
+SYNOPSIS: \par
+- ifactor returns the complete integer factorization of n.\par
+\par
+\pard\plain \qj \f20 Tester si un nombre est premier:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?isprime;\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ isprime(n, iter)\par
+PARAMETERS:\par
+ n - integer\par
+ iter - (optional) positive integer (default 5) \par
+SYNOPSIS: \par
+- The function isprime is a probabilistic primality testing routine. \par
+- It returns false if n is shown to be composite within iter tests and returns\par
+ true otherwise. If isprime returns true, n is ``very probably'' prime\par
+\par
+\pard\plain \qj \f20 Trouver le n-i\'8fme nombre premier:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?ithprime\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ ithprime(i)\par
+PARAMETERS:\par
+ i - positive integer\par
+SYNOPSIS: \par
+- The function ithprime returns the i'th prime number, where the first prime\par
+ number is 2.\par
+\pard\plain \qj \f20 \page Calculer le PCGD et le PPCM de deux entiers\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?igcd;\line ?ilcm;\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ igcd(x_1,x_2,...);\par
+ ilcm(x_1,x_2,...);\par
+PARAMETERS:\par
+ x_1,x_2,... - any integers\par
+SYNOPSIS: \par
+- The function igcd computes the greatest common divisor of an arbitrary number\par
+ of integers. The function ilcm computes the least common multiple of an\par
+ arbitrary number of integers.\par
+\pard\plain \qj \f20 \par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2.Exemples d'utilisation\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet 2^100;\par
+\pard\plain \s3 \f22\fs20 1267650600228229401496703205376\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet ifactor(");\par
+\pard\plain \s3 \f22\fs20 100\par
+ (2)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet 100!;\par
+\pard\plain \s3 \f22\fs20 933262154439441526816992388562667004907159682643816214685929638952175999\\\par
+932299156089414639761565182862536979208272237582511852109168640000000000\\\par
+\pard \s3 00000000000000\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet ifactor(");\par
+\pard\plain \s3 \f22\fs20 {\fs18 97 48 24 16 9 7 5 5 4 3 3 2\par
+ (2) (3) (5) (7) (11) (13) (17) (19) (23) (29) (31) (37)\par
+\par
+ 2 2 2\par
+ (41) (43) (47) (53) (59) (61) (67) (71) (73) (79) (83) (89) (97)\par
+}\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet ithprime(300);\par
+\pard\plain \s3 \f22\fs20 1987\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet isprime(");\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet ifactor(2^(2^5)+1);\par
+\pard\plain \s3 \f22\fs20 (641) (6700417)\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul II. Calculer sur des rationnels\par
+\pard\plain \qj \f20 Les nombres rationnels sont repr\'8esent\'8es dans Maple comme quotient de deux entiers premiers entre eux, Maple se chargeant au besoin de faire les simplifications n\'8ecessaires.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet 1/3 + 2/7;\par
+\pard\plain \s3 \f22\fs20 13\par
+ ----\par
+ 21\par
+\pard\plain \qj \f20 Les nombres rationnels sont automatiquement pr\'8esent\'8es sous forme irr\'8eductible\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet 2/8;\par
+\pard\plain \s3 \f22\fs20 1/4\par
+\pard\plain \qj \f20 et les op\'8erations sur les rationnels sont effectu\'8ees automatiquement\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet 1/3+1/3+1/3;\par
+\pard\plain \s3 \f22\fs20 1\page \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet 1/10!+3/(2^5+1);\par
+\pard\plain \s3 \f22\fs20 3628811\par
+ --------\par
+ 39916800\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul III. Calculer sur des nombres alg\'8ebriques\par
+\pard\plain \qj \f20 Maple permet \'8egalement de travailler sur des symboles alg\'8ebriques comme la racine carr\'8ee d'un nombre entier ou rationnel (et m\'90me sur une racine symbolique d'un polyn\'99me irr\'8eductible \'88
+ coefficients entiers ou rationnels, voir pour cela la signification de la fonction {\b RootOf}).\par
+\pard \qj La racine carr\'8ee utilise la fonction {\b sqrt} , mais son r\'8esultat est automatiquement converti sous forme de puissance fractionnaire.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?sqrt;\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: sqrt - square root\par
+CALLING SEQUENCE:\par
+ sqrt(x) \par
+PARAMETERS:\par
+ x - any algebraic expression\par
+SYNOPSIS: \par
+- The function sqrt forms the square root of its argument x. It returns the\par
+ square root of integers and polynomials which are perfect squares. It is\par
+ mapped onto products.\par
+\par
+\pard\plain \qj \f20 \tab Les symboles alg\'8ebriques \'8el\'8ementaires se repr\'8esentent par des puissances fractionnaires ( 3^(1/5) pour la racine 5-i\'8fme de 3.\par
+\pard \qj \tab Les calculs sur les nombres alg\'8ebriques ne sont pas faits automatiquement et en particulier les produits et les puissances (pour la raison \'8evidente qu'il n'est pas clair que le d\'8e
+veloppement d'un produit ou d'une puissance conduise r\'8eellement \'88 une expression plus simple). Pour forcer une d\'8eveloppement on dispose de la fonction {\b expand}:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?expand\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ expand(expr, expr_1, expr_2, . . ., expr_n)\par
+PARAMETERS:\par
+ expr - any algebraic expression\par
+ expr_1, expr_2, ..., expr_n - (optional) expressions\par
+SYNOPSIS: \par
+- The primary application of expand is to distribute products over sums. This\par
+ is done for all polynomials. For quotients of polynomials, only sums in the\par
+ numerator are expanded --- products and powers are left alone.\par
+- expand also knows how to expand most of the mathematical functions including\par
+ sin, cos, tan, sinh, cosh, tanh, det, erf, exp, factorial, GAMMA, ln, max,\par
+ min, Psi, binomial, sum, product, int, limit, bernoulli, euler, BesselJ,\par
+ BesselY, BesselI, BesselK, etc.\par
+- The optional arguments expr_1, expr_2, ..., expr_n are used to prevent par-\par
+ ticular sub-expressions in expr (expr_1, expr_2, ..., expr_n) from being\par
+ expanded. \par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet expand((sqrt(3)-1)^6);\par
+\pard\plain \s3 \f22\fs20 1/2\par
+ 208 - 120 3\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet expand((2^(1/5)-1)^5);\par
+\pard\plain \s3 \f22\fs20 4/5 3/5 2/5 1/5\par
+ 1 - 5 2 + 10 2 - 10 2 + 5 2\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul IV. Calculer sur des r\'8eels\par
+\pard\plain \qj \f20 Un r\'8eel Maple peut aussi bien \'90tre une expression symbolique que son approximation en virgule flottante.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1.Fonctions classiques \par
+\pard\plain \qj \f20 Maple dispose de toute une gamme de fonctions classiques. La plupart de ces fonctions sont en g\'8en\'8eral non \'8evalu\'8ees et leur r\'8esultat reste sous forme symbolique (comme {\b sin(1)}), sauf quand leur r\'8esultat poss\'8f
+de une simplification naturelle (comme {\b sin(0)}, {\b sin(Pi)}, {\b abs(-sqrt(3))}), o\'9d lorsque le pazram\'8ftre qui leur est pass\'8e est d\'8ej\'88 une approximation en virgule flottante (comme {\b sin(1.5)}
+). Dans ce dernier cas, Maple retourne une approximation en virgule flottante du r\'8esultat.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 abs - absolute value of real or complex argument\par
+ bernoulli - Bernoulli numbers and polynomials\par
+ BesselI - modified Bessel function of the first kind I(v,x)\par
+ BesselJ - Bessel function of the first kind J(v,x)\par
+ BesselK - modified Bessel function of the second kind K(v,x)\par
+ BesselY - Bessel function of the second kind Y(v,x)\par
+ Beta - Beta function: Beta(x,y) = GAMMA(x)*GAMMA(y)/GAMMA(x+y)\par
+ binomial - binomial coefficients: binomial(n,r) = n!/(r!*(n-r)!)\par
+ Ci - cosine integral = gamma + ln(x) + int( (cos(t) 1)/t, t=0..x)\par
+ dilog - dilogarithm integral = int( ln(t)/(1-t), t=1..x )\par
+ Ei - exponential integral = int( exp(t)/t, t= -infinity..x )\par
+ erf - error function = 2/sqrt(Pi) * int( exp(-t^2), t=0..x )\par
+ erfc - complementary error function = 1-erf(x)\par
+ exp - the exponential function: exp(x) = sum(x^i/i!,i=0..infinity)\par
+ factorial - the factorial function factorial(n) = n!\par
+ GAMMA - the gamma function\par
+ GAMMA(z) = int( exp(-t)*t^(z-1), t=0..infinity )\par
+ and the incomplete Gamma function\par
+ GAMMA(a,x) = int( exp(-t)*t^(a-1), t=x..infinity )\par
+ ln - natural logarithm (logarithm with base E = 2.71828...)\par
+ lnGAMMA - ln of the gamma function\par
+ log - initially assigned the name ln. Typically, the user assigns to\par
+ this a function that computes logarithms to some other base.\par
+ log10 - log to the base 10\par
+ Psi - polygamma function Psi(x) = diff( ln(GAMMA(x)), x ) and\par
+ its derivatives Psi(n,x) = diff(Psi(x),x$n)\par
+ signum - sign of a complex argument signum(z) = z/abs(z)\par
+ Si - sine integral = int( sin(t)/t, t=0..x )\par
+ W - the function satisfying W(x) * exp(W(x)) = x\par
+ Zeta - Riemann zeta function Zeta(s) = sum(1/i^s,i=1..infinity)\par
+ and its derivatives Zeta(n,s) = diff(Zeta(s),s$n) and with\par
+ three arguments Zeta(n,s,q) = diff(Zeta(0,s,q),s$n) where\par
+ Zeta(0,s,q) = sum(1/(i+q)^s,i=1..infinity) \par
+- The trigonometric and hyperbolic functions:\par
+ sin, cos, tan, sec, csc, cot, sinh, cosh, tanh, sech, csch, coth \par
+- The inverse trigonometric and inverse hyperbolic functions:\par
+ arcsin, arccos, arctan, arcsec, arccsc, arccot, arctan,\par
+ arcsinh, arccosh, arctanh, arcsech, arccsch, arccoth\par
+\pard\plain \qj \f20 \par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2.Evaluation des r\'8eels en virgule flottante\par
+\pard\plain \qj \f20 Il est essentiel de distinguer dans tout logiciel de calcul formel, l'objet math\'8ematique nombre r\'8e
+el (par exemple sin(1)) de ses approximations en virgule flottante qui ressemblent aux types real ou float des langages de programmation classiques (comme 0.8414709848\'c9). \par
+\tab Les approximations de nombres r\'8eels en virgule flottante s'\'8ecrivent de mani\'8fre classique (voir aussi en cas de besoin la signification de la fonction {\b Float}). Comme pour les nombres entiers et contrairement \'88
+ d'autres langages de programmation, leur taille n'est pas limit\'8ee aussi bien en ce qui concerne le nombre de chiffres avant la virgule que celui apr\'8fs la virgule (ce dernier ayant une valeur par d\'8efauts contenu dans la variable Maple {\b Digits}
+ dont on peut modifier la valeur). Pour ces approximations on dispose d'une fonction d'\'8evaluation en virgule flottante \'88 une pr\'8ecision arbitraire.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?evalf;\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: evalf - evaluate using floating-point arithmetic\par
+CALLING SEQUENCE:\par
+ evalf(expr, n)\par
+PARAMETERS:\par
+ expr - any expression\par
+ n - (optional) integer specifying number of digits\par
+SYNOPSIS: \par
+- evalf evaluates to floating-point numbers expressions (or subexpressions)\par
+ involving constants such as Pi, E, gamma, and functions such as exp, ln, sin,\par
+ arctan, cosh, GAMMA, erf. \par
+- The accuracy of the result is determined by the value of the global variable\par
+ Digits. By default the results will be computed using 10-digit floating-point\par
+ arithmetic, since the initial value of Digits is 10. A user can change the\par
+ value of Digits to any positive integer.\par
+- If a second parameter, n, is present the result will be computed using\par
+ n-digit floating-point arithmetic.\par
+\par
+\pard\plain \qj \f20 Remarquez le r\'99le important de la variable globale {\b Digits} qui fixe la pr\'8ecision des calculs en virgule flottante\par
+\pard\plain \s4\qj\li1120 \f20\fs20 Digits number of digits carried in floats (default is 10)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(sin(1));\par
+\pard\plain \s3 \f22\fs20 .8414709848\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(sin(1),35);\par
+\pard\plain \s3 \f22\fs20 .84147098480789650665250232163029900\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(Pi,35);\par
+\pard\plain \s3 \f22\fs20 3.1415926535897932384626433832795029\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(2/7,15);\par
+\pard\plain \s3 \f22\fs20 .285714285714286\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3.Evaluations exactes et \'8evaluations en virgules flottantes\par
+\pard\plain \qj \f20 Comparer les calculs suivants\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sin(1);\par
+\pard\plain \s3 \f22\fs20 sin(1)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sin(1.0);\par
+\pard\plain \s3 \f22\fs20 .8414709848\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(sin(1))-sin(1.0);\par
+\pard\plain \s3 \f22\fs20 0\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sin(Pi);\par
+\pard\plain \s3 \f22\fs20 0\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sin(evalf(Pi));\par
+\pard\plain \s3 \f22\fs20 -9\par
+ -.4102068570*10\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet GAMMA(0.5)-evalf(sqrt(Pi));\par
+\pard\plain \s3 \f22\fs20 0\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul VI.Calculer sur des complexes\par
+\pard\plain \qj \f20 Un nombre complexe s'\'8ecrit sous la forme a + b*I. Les calculs sur les nombres complexes s'effectuent de mani\'8fre classique\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?I;\par
+\pard\plain \s4\qj\li1120 \f20\fs20 complex number such that I^2 = 1. The name I is an alias to the radical (-1)^(1/2).\par
+\pard\plain \qj \f20 Les calculs de somme se font automatiquement. Suivant la version de Maple que vous utilisez, les calculs de produit et de puissances peuvent \'90tre faits automatiquement (version V release 2) ou demander l'appel de la fonction d'\'8e
+valuation complexe {\b evalc}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet (2+3*I)*(4+5*I);\par
+\pard\plain \s3 \f22\fs20 (2 + 3 I) (4 + 5 I)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?evalc;\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: evalc - evaluate in the complex number field \par
+CALLING SEQUENCE:\par
+ evalc(expr) \par
+PARAMETERS:\par
+ expr - any expression \par
+SYNOPSIS: \par
+- This function is for evaluating and simplifying complex numbers. evalc attempts to split an expression into its real and imaginary components.\par
+- When possible, the result of evalc will be in the canonical form\par
+ expr_1 + expr_2 * I involving the symbol I, which is an alias for sqrt(-1).\par
+- When evalc encounters an unevaluated function call (e.g. f(1+I) where f is not defined) then it will attempt to\par
+ put the arguments in the above canonical form.\par
+- evalc(Re(expr)) and evalc(Im(expr)) return the real and imaginary parts of an expression.\par
+- To find the complex conjugate of an expression use evalc(conjugate(expr)).\par
+- A complex number may be represented to evalc as polar(r,theta) where r is the modulus and theta is the argument of the number.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalc(");\par
+\pard\plain \s3 \f22\fs20 - 7 + 22 I\par
+\pard\plain \qj \f20 \par
+Les fonctions rencontr\'8ees dans le domaine r\'8eel sont \'8egalement d\'8efinies dans le domaine complexe (pour certaines fonctions "multivalu\'8ees", une d\'8etermination principale est utilis\'8ee). Leur \'8e
+valuation demande dans toutes les versions l'emploi de la fonction {\b evalc} pour des raisons \'8evidentes: quelle est l'expression la plus simple entre les deux lignes qui suivent , cos(2+3i) ou cos(2) cosh(3) - i sin(2) sinh(3) ?\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalc(cos(2+3*I));\par
+\pard\plain \s3 \f22\fs20 cos(2) cosh(3) - sin(2) sinh(3) I\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(");\par
+\pard\plain \s3 \f22\fs20 - 4.189625692 - 9.109227896 I\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet arcsin(2);\par
+\pard\plain \s3 \f22\fs20 arcsin(2)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalc(");\par
+\pard\plain \s3 \f22\fs20 1/2\par
+ 1/2 Pi + ln(2 + 3 ) I\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(");\par
+\pard\plain \s3 \f22\fs20 1.570796327 + 1.316957897 I\par
+\pard\plain \qj \f20 \par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul VII. Exercices\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 1\par
+\pard\plain \qj \f20 \tab Le nombre exp(\'b9 \'c3163/3) est-il un entier?\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 2\par
+\pard\plain \qj \f20 \tab Montrer que \'c3(286+2\'c319549) = \'c3113 + \'c3173\par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/chap3.rtf b/support/w2latex/EXEMPLES/chap3.rtf
new file mode 100644
index 0000000000..e35ea37fe3
--- /dev/null
+++ b/support/w2latex/EXEMPLES/chap3.rtf
@@ -0,0 +1,914 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\qj\tqc\tx4320\tqr\tx8640 \f20
+\sbasedon0\snext243 footer;}{\s247\qj\li720 \i\f20\fs20 \sbasedon0\snext0 heading 9;}{\s248\qj\li720 \i\f20\fs20 \sbasedon0\snext0 heading 8;}{\s249\qj\li720 \i\f20\fs20 \sbasedon0\snext0 heading 7;}{\s250\qj\li720 \f20\fs20\ul \sbasedon0\snext0
+heading 6;}{\s251\qj\li720 \b\f20\fs20 \sbasedon0\snext0 heading 5;}{\s252\qj\li354\sb40\sa40 \f20\ul \sbasedon0\snext0 heading 4;}{\s253\qj\li354\sb120\sa80 \b\f20 \sbasedon0\snext0 heading 3;}{\s254\qj\sb200\sa140 \b\f20\fs36\ul \sbasedon0\snext0
+heading 2;}{\s255\qc\sb240 \b\f20\fs48 \sbasedon0\snext0 heading 1;}{\qj \f20 \sbasedon222\snext0 Normal;}{\s2\sb120\keep\keepn \b\f22 \sbasedon0\snext2 input;}{\s3 \f22\fs20 \sbasedon0\snext3 output;}{\s4\qj\li1120 \f20\fs20 \sbasedon0\snext4
+commentaire;}}{\info{\title chap3.doc}{\author EBM}}\paperw11880\paperh16820\margl1701\margr1701\margt1418\margb1418\deftab709\widowctrl\ftnbj\pgnstart14 {\*\nextfile disque dur:chap4.doc}\sectd
+\sbknone\linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere {\footer \pard\plain \s243\qj\tqc\tx4320\tqr\tx8640 \f20 \par
+\pard \s243\qc\tqc\tx4320\tqr\tx8640 {\fs20 Calcul formel avec Maple page }{\fs20 \chpgn }\par
+\pard \s243\qj\tqc\tx4320\tqr\tx8640 \par
+}\pard\plain \s255\qc\sb240 \b\f20\fs48 Calculer avec des symboles\par
+\pard\plain \qj \f20 \par
+\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul I.Expressions alg\'8ebriques\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1.Transformations d'expressions alg\'8ebriques\par
+\pard\plain \qj \f20 Les expressions alg\'8ebriques (et en particulier les polyn\'99mes et les fractions rationnelles) sont manipul\'8ees par un grand nombre de fonctions de Maple. Leur
+affichage peut parfois surprendre (et en particulier l'ordre que retient Maple pour les mon\'99mes). Pour cette raison, une des premi\'8fres fonctions \'88 conna\'94tre est celle qui permettra un affichage "plus classique"\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?sort\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: sort - sort a list of values or a polynomial\par
+CALLING SEQUENCE: (for polynomials)\par
+ sort(A) \par
+ sort(A, V) \par
+PARAMETERS:\par
+ A - an algebraic expression\par
+ V - (optional) variables\par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - In Maple, polynomials are not automatically stored in sorted order. They are stored in
+the order they were first created and printed in the order they are stored. The sort function can be used to sort polynomials. But please note that sorting polynomials is a destructive operation: the input polynomial will be sorted "in-place". \par
+
+- If V is given it specifies the variable ordering to be used when sorting polynomials. It can be a list or set of names (for the multivariate case). All polynomials in the expression A are sorted into decreasing order in V. If V is not specified, the in
+dets appearing in A will be used. \par
+
+- An additional 3rd argument, either the string plex or tdeg can be given to fine the ordering for the multivariate case. If tdeg is specified (default) then polynomials in V are sorted in total degree with ties broken by lexicographical order. If plex i
+s specified, polynomials in V are sorted in pure lexicographical order.\par
+\pard\plain \qj \f20 Ensuite on peut d\'8evelopper, factoriser, simplifier, combiner des expressions alg\'8ebriques \'88 l'aide des fonctions \par
+\pard \qj suivantes.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?expand\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: expand - expand an expression\par
+CALLING SEQUENCE:\par
+ expand(expr, expr_1, expr_2, . . ., expr_n) \par
+PARAMETERS:\par
+ expr - any algebraic expression\par
+ expr_1, expr_2, ..., expr_n - (optional) expressions \par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The primary application of expand is to distribute products over sums. This is done for als polynomials. For quotients of polynomials, only sums in the numerator are expanded \par
+\pard \s4\qj\li1120 products and powers are left alone. \par
+- expand also knows how to expand most of the mathematical functions including\par
+\pard \s4\qj\li1120 sin, cos, tan, sinh, cosh, tanh, det, erf, exp, factorial, GAMMA, ln, max, min, Psi, binomial, sum, product, int, limit, bernoulli, euler, BesselJ, BesselY, BesselI, BesselK, etc. \par
+\pard \s4\qj\li1120 - The optional arguments expr_1, expr_2, ..., expr_n are used to prevent particular sub-expressions in expr (expr_1, expr_2, ..., expr_n) from being expanded.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?factor\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: factor - factor a multivariate polynomial \par
+CALLING SEQUENCES:\par
+ factor(a); or factor(a,K);\par
+PARAMETERS:\par
+ a - an expression\par
+ K - an algebraic extension\par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The function factor computes the factorization of a multivariate polynomial with integer, rational or algebraic number coefficients.\par
+\pard \s4\qj\li1120
+- If the input is a rational function, then a is first ``normalized'' (see normal) and the numerator and denominator of the resulting expression are then factored. This provides a ``fully-factored form'' which can be used to simplify in the same way the n
+ormal function is used. However, it is more expensive to compute than normal\par
+\pard \s4\qj\li1120 - If the input a is a list, set, equation, range, series, relation, or function, then factor is applied recursively to the components of a. \par
+- The call factor(a,K) factors a over the algebraic number field defined by K. K must be a single RootOf or a list or set of RootOf's or a single radical or a list or set of radicals.\par
+- If the 2nd argument K is not given, the polynomial is factored over the rationals. Note that any integer content (see first example below) is not factored.\par
+\pard\plain \qj \f20 Pour factoriser un polyn\'99me en utilisant des radicaux (et en particulier des nombres complexes) vous devez sp\'8ecifier les radicaux \'88 utiliser:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet factor(x^4+1);\par
+\pard\plain \s3 \f22\fs20 4\par
+ x + 1\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet factor(x^4+1,sqrt(2));\par
+\pard\plain \s3 \f22\fs20 2 1/2 2 1/2\par
+ (x + 2 x + 1) (x - 2 x + 1)\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet factor(x^4+1,I);\par
+\pard\plain \s3 \f22\fs20 2 2\par
+ (x - I) (x + I)\par
+\par
+\pard\plain \qj \f20 Un certain nombre de simplifications \'8el\'8ementaires sont faites automatiquement, mais pour des simplifications plus \'8elabor\'8ees vous devrez mettre en oeuvre la fonction {\b simplify}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?simplify\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: simplify - apply simplification rules to an expression\par
+CALLING SEQUENCE:\par
+ simplify(expr)\par
+ simplify(expr, n1, n2, ...)\par
+PARAMETERS:\par
+ expr - any expression\par
+ n1, n2,... - (optional) names or sets or lists\par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The simplify function is used to apply simplification rules to an expression. If only one argument is present, then simplify will search the expression for function
+calls, square roots, radicals, and powers. Next it will invoke the appropriate simplification procedures, which include: exp, ln, sqrt, trig (for trig functions), radical (occurrence of fractional powers), power (occurrence of powers, exp, ln). Further
+information on particular simplification procedures is available for\par
+\pard \s4\qj\li1120 the subtopics simplify[<name>] where <name> is one of: power, radical, RootOf, sqrt, trig .\par
+- In the case of two or more arguments where the additional arguments are names, simplify will only invoke the simplification procedures specified by the additional arguments.\par
+\pard\plain \qj \f20 Nous verrons plus loin que la fonction {\b simplify} a \'8egalement d'autres utilit\'8es. Pour mettre un peu d'ordre dans les expressions alg\'8ebriques, on utilise la fonction {\b collect} qui regroupe ensemble des mon\'99
+mes correspondnat aux m\'90mes puissances des variables indiqu\'8ees.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?collect\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: collect - collect coefficients of like powers\par
+CALLING SEQUENCE:\par
+ collect(a, x)\par
+ collect(a, x, form) \par
+PARAMETERS:\par
+ a - an expression\par
+ x - an indeterminate, or a list or set of indeterminates\par
+ form - (optional) name \par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The collect function views a as a polynomial in x and collects all the coefficients with the same power of x . \par
+\pard \s4\qj\li1120
+- The second argument x can be a single indeterminate (univariate case) or a list or set of indeterminates x_1, x_2, ..., x_n (multivariate case) . The indeterminates can be names or unevaluated function calls but not sums or products. \par
+\pard \s4\qj\li1120 - Two forms for the result are available. The form is specified by the thirdirdgument. It may be the name recursive (the default) or the name distributed. \par
+\pard \s4\qj\li1120
+- The recursive form is obtained by first collecting the coefficients in x_1, then for each coefficient in x_1, collecting the coefficients in x_2 and so on. The distributed form is the form obtained by collecting the coefficients of x_1^e1 * x_2^e2 *
+... * x_n^eN together.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet collect(y (sin(x) + 1) + sin(x), sin(x));\par
+\pard\plain \s3 \f22\fs20 y(sin(x) + 1) + sin(x)\par
+\pard\plain \qj \f20 Dans le m\'90me ordre d'id\'8ee, la fonction {\b combine }fait pour la plupart des fonctions les op\'8erations inverses de la fonction {\b expand}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?combine\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: combine - combine terms into a single term \par
+CALLING SEQUENCE:\par
+ combine(f)\par
+ combine(f, n) \par
+PARAMETERS:\par
+ f - any expression\par
+ n - a name \par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The combine function applies transformations which combine terms in sums, products, and powers into a single term. This function is applied recursively to the components of lists, sets, and relations; that is, f and n may
+be lists/sets of expressions and names, respectively. . \par
+\pard \s4\qj\li1120 - For many functions, the transformations applied by combine are the inverse of the transformations that are applied by expand. \par
+- Subexpressions involving Int, Sum, and Limit are combined into one expression where possible using linearity; that is, c1*f(a,range) + c2*f(b,range) ==> f(c1*a+c2*b,range).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet combine(sin(x)^3,trig);\par
+\pard\plain \s3 \f22\fs20 - 1/4 sin(3 x) + 3/4 sin(x)\par
+\pard\plain \qj \f20 \par
+\pard \qj Enfin les fonctions suivantes permettent d'extraire des composantes des expressions alg\'8ebriques, coefficients, num\'8erateurs ou d\'8enominateurs.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?coeff, lcoeff, tcoeff\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: coeff - extract a coefficient of a polynomial \par
+CALLING SEQUENCE:\par
+ coeff(p,x)\par
+ coeff(p,x,n)\par
+ coeff(p,x^n) \par
+PARAMETERS:\par
+ p - a polynomial in x\par
+ x - the variable (an expression)\par
+ n - (optional) an integer \par
+\pard \s4\qj\li1120 \page SYNOPSIS: \par
+\pard \s4\qj\li1120 - The coeff function extracts the coefficient of x^n in the polynomial p. Note that the input expression p must be collected in x. Use the function collect(p,x) prior to calling coeff, if necessary. \par
+\pard \s4\qj\li1120 - If the third argument is omitted, it is determined by looking at the second argument. Thus coeff(p,x^n) is equivalent to coeff(p,x,n) for n <> 0. \par
+- The related functions lcoeff, tcoeff extract the leading coeffi- cient, trailing coefficient of p in x respectively.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?coeffs\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: coeffs - extract all coefficients of a multivariate polynomial \par
+CALLING SEQUENCE:\par
+ coeffs(p, x, 't'); \par
+PARAMETERS:\par
+ p - multivariate polynomial\par
+ x - (optional) indeterminate or list/set of indetermina\par
+testes - (optional) name \par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The coeffs function returns an expression sequence of all the coefficients of the polynomial p with respect the indeterminate(s) x. - If x is not specified, coeffs computes the coefficients with respect to all\par
+ the indeterminates of p (see the indets function). If a third argument t is specified (call by name), it is assigned an expression sequence of the terms of p. There is a one to one correspondence between the coefficients and the terms of p. \par
+\pard \s4\qj\li1120 - Note that p must be collected with respect to the appropriate indeterminates.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?numer, denom\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: numer - numerator of an expression\par
+FUNCTION: denom - denominator of an expression\par
+CALLING SEQUENCE:\par
+PARAMETERS:\par
+ e - any algebraic expression\par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The procedures numer and denom are typically called after first using the normal function. The procedure normal is used to put an expression in ``normal form'' which is the form numerator/denominator where both the numerator and
+ denominator are polynomials. In this case, numer simply picks off the nummerator of e and denom picks off the denominator of e. Note that if e is in normal form, the numerator and denominator will have integer coefficients.\par
+\pard \s4\qj\li1120
+- If e is not in normal form (e contains a subexpression which has one or more terms which are quotients of expressions), it is first converted into a normal form. A common denominator is found so that e can be expressed in the form numerator/denominato
+r.\par
+\pard \s4\qj\li1120 \par
+\pard\plain \qj \f20 Pour d\'8ecomposer en \'8el\'8ements simples, il faut un peu plus se creuser la t\'90te. Pour Maple, il s'agit en fait d'une conversion\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?convert[parfrac]\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: convert/parfrac - convert to partial fraction form\par
+CALLING SEQUENCE:\par
+ convert(f, parfrac, x)\par
+ PARAMETERS:\par
+ f - rational function\par
+ x - main variable name\par
+ SYNOPSIS: \par
+\pard \s4\qj\li1120 - Convert to parfrac performs a partial fraction decomposition of the rational function f in the variable x.\par
+\pard\plain \qj \f20 Etudiez les exemples ci dessous et soyez s\'9er de bien les comprendre. Les fonctions que nous venons d'\'8etudier sont celles que l'on utilise tous les jours dans le calcul alg\'8ebrique\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet exp:=expand((1+sin(x))^10);\par
+\pard\plain \s3 \f22\fs20 2 3 4\par
+\pard \s3 exp := 1 + 10 sin(x) + 45 sin(x) + 120 sin(x) + 210 sin(x)\page 5 6 7 8 9\par
+\pard \s3 + 252 sin(x) + 210 sin(x) + 120 sin(x) + 45 sin(x) + 10 sin(x)\par
+ 10\par
+ + sin(x)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet coeff(exp,sin(x)^5);\par
+\pard\plain \s3 \f22\fs20 252\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet coeffs(exp);\par
+\pard\plain \s3 \f22\fs20 1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet factor(exp);\par
+\pard\plain \s3 \f22\fs20 10\par
+ (sin(x) + 1)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet collect(y (sin(x) + 1) + sin(x), sin(x));\par
+\pard\plain \s3 \f22\fs20 y(sin(x) + 1) + sin(x)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet convert(1/(x^4-1),parfrac,x);\par
+\pard\plain \s3 \f22\fs20 1 1 1\par
+ --------- - --------- - ----------\par
+ 4 (x - 1) 4 (x + 1) 2\par
+ 2 (x + 1)\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2.Calculs modulo un nombre premier\par
+\pard\plain \qj \f20 Un certain nombre des fonctions ci dessus peuvent s'effectuer d'une mani\'8fre sp\'8ecifique modulo un nombre premier c'est \'88 dire dans l'anneau des polyn\'99mes \'88
+ coefficients dans Z/pZ. Pour cela il suffit d'utiliser une forme inerte de la fonction (c'est \'88 dire une fonction qui ne sera pas \'8evolu\'8e
+e dans un premier temps) qui se distingue de la fonction active par le fait qu'elle commence par une majuscule, et de faire suivre par un mod p.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 factor(x^4+1) mod 3;\par
+\pard\plain \s3 \f22\fs20 4\par
+ x + 1\par
+\pard\plain \qj \f20 L'expression a \'8et\'8e \'8evalu\'8ee, mais le polyn\'99me n'a pas \'8et\'8e factoris\'8ee car il est irr\'8eductible sur les entiers. C'est apr\'8fs sa tentative de factorisation sur les entiers que Maple l'a r\'8eduit modulo 3.
+\par
+\pard \qj \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 Factor(x^4+1);\par
+\pard\plain \s3 \f22\fs20 4\par
+ Factor(x + 1)\par
+\pard\plain \qj \f20 La fonction Factor (contrairement \'88 la fonction factor) est inerte. Elle ne fait rien (\'88 moins qu'elle ne soit suivie d'un mod \'c9 ).\par
+\pard \qj \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 Factor(x^4+1) mod 3;\par
+\pard\plain \s3 \f22\fs20 2 2\par
+ (x + 2 x + 2) (x + x + 2)\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3.Racines communes, racines multiples\par
+\pard\plain \qj \f20 Deux fonctions de Maple vous seront particuli\'8frement utiles pour le calcul alg\'8ebrique et la manipulation des \'8equations polynomiales, ce sont celles qui calculent le r\'8esultant de deux polyn\'99
+mes et le discriminant d'un polyn\'99me. Rappelons que le dsicriminant de deux polyn\'99mes en la variable x est une expression polynomiale en les coefficients des deux polyn\'99mes qui est nulle si et seulement si les deux polyn\'99mes ont une r
+acine commune en x. Quant au discriminant d'un polyn\'99me en x, c'est une expression polynomiale en les coefficients du polyn\'99me qui est nulle si et seulement si ce polyn\'99me a une racine multiple en x.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?resultant\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: resultant - compute the resultant of two polynomials \par
+CALLING SEQUENCE:\par
+ resultant(a, b, x) \par
+PARAMETERS:\par
+ a,b - polynomials in x\par
+ x - a name \par
+SYNOPSIS: \par
+- The function resultant computes the resultant of the two polynomials a and b\par
+ with respect to the indeterminate x.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?discrim\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: discrim - discriminant of a polynomial \par
+CALLING SEQUENCE:\par
+ discrim(p, x) \par
+PARAMETERS:\par
+ p - polynomial in x\par
+ x - independent variable \par
+SYNOPSIS: \par
+- If d=degree(p,x) and a=lcoeff(p,x) then the discriminant is \par
+ (-1)^(d*(d 1)/2)*resultant(p,diff(p,x),x)/a\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul II.Substitutions, affectations\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1.Substitutions\par
+\pard\plain \qj \f20 La substitution est un op\'8eration essentielle du calcul formel. La mani\'8fre la plus simple de proc\'8eder est d'utiliser la fonction {\b subs}:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?subs\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: subs - substitute subexpressions into an expression \par
+CALLING SEQUENCE:\par
+ subs(s_1,s_2,...,s_n,expr) \par
+PARAMETERS:\par
+ s_1,... - equations or sets or lists of equations\par
+ expr - any exp\par
+ssion \par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The function subs returns an expression resulting from applying the substitutions specified by the first arguments to the last argument expr. \par
+\pard \s4\qj\li1120 - The substitutions are performed sequentially starting with s1. \par
+The substitutions within a set or list are performed simultaneously. \par
+\pard \s4\qj\li1120 - Every occurrence of the left hand side of a substitution equation that appears in expr is replaced by the right hand side of the equation. \par
+\pard \s4\qj\li1120 - The action of substitution is not followed by evaluation. In cases where full evaluation is desired, it is necessary to use the eval function to force an evaluation. For example, subs( y=ln(x), exp(y) ), as shown below.\par
+\pard\plain \qj \f20 Il faut distinguer soigneusement les substitutions successives (s\'8epar\'8ees par des virgules) des substitutions simultan\'8ees (regroup\'8ees par des accolades):\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet subs(x=y,y=x,sin(x)+y^4);\par
+\pard\plain \s3 \f22\fs20 4\par
+ sin(x) + x\par
+\pard\plain \qj \f20 \par
+\pard \qj La variable x a d'abord \'8et\'8e remplac\'8ee par y, puis dans l'expression ainsi obtenue, la variable y a \'8et\'8e remplac\'8ee par x. Par contre, si on met des accolades on obtient un \'8echange des variables.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet subs(\{x=y,y=x\},sin(x)+y^4);\par
+\pard\plain \s3 \f22\fs20 4\par
+ sin(y) + x\par
+\pard\plain \qj \f20 \par
+\pard \qj La substitution a plusieurs utilit\'8es. D'une part remplacer des variables par des valeurs symboliques:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet subs(\{x=3,y=1-a\},(x+y)*(x-y)^2);\par
+\pard\plain \s3 \f22\fs20 2\par
+ (4 - a) (2 + a)\par
+\pard\plain \qj \f20 En particulier, les substitutions permettent d'\'8evaluer des expressions pour des valeurs num\'8eriques des param\'8ftres\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet subs(x=1,sin(x)/(x+1));\par
+\pard\plain \s3 \f22\fs20 1/2 sin(1)\par
+\pard\plain \qj \f20 \par
+\pard \qj Les substitutions ne se contentent pas de porter sur des variables. Elles peuvent porter \'8egalement sur des expressions alg\'8ebriques\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet subs(\{cos(x)=(1-t^2)/(1+t^2),sin(x)=2*t/(1+t^2)\},\par
+sin(x)+cos(x));\par
+\pard\plain \s3 \f22\fs20 2\par
+ t 1 - t\par
+ 2 ------ + ------\par
+ 2 2\par
+ 1 + t 1 + t\par
+\pard\plain \qj \f20 \par
+\pard \qj Mais la fonction simplify peut aussi permettre des substitutions beaucoup plus complexes. C'est ainsi que dans le calcul ci dessous, nous rempla\'8dons x+y et x*y par s et p en r\'8eexprimant compl\'90tement l'expression \'88
+ l'aide de ces nouvelles variables.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet simplify(x^7+y^7,\{s=x+y,p=x*y\},[x,y,s,p]);\par
+\pard\plain \s3 \f22\fs20 7 5 2 3 3\par
+ s - 7 p s + 14 p s - 7 s p\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?simplify[siderels]\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: simplify/siderels - simplify with respect to side relations \par
+CALLING SEQUENCE:\par
+ simplify(expr, eqns)\par
+ simplify(expr, eqns, vars) \par
+PARAMETERS:\par
+ expr - an expression\par
+ eqns - a set or list of equations (an expression e is understood as the\par
+ equation e=0)\par
+ vars - (optional) a set or list of variables \par
+SYNOPSIS: \par
+- Simplification of expr with respect to the side relations eqns is performed.\par
+ The result is an expression which is mathematically equivalent to expr but\par
+ which is in ``normal form'' with respect to the specified side relations. \par
+- If vars is not specified then it is determined using indets. There are two\par
+ reasons for pre-specifying vars: \par
+ (i) perhaps some indeterminates are meant to be considered as parameters\par
+ rather than variables; \par
+ (ii) the precise form of simplification to be performed can be controlled by\par
+ specifying vars as a list (see below).\par
+\pard\plain \qj \f20 \par
+\pard \qj Les \'8equations pr\'8ecisent les relations entre les variables, la liste des variables (entre crochets car c'est une liste) pr\'8ecise l'ordre de priorit\'8e des variables: les premi\'8fres sont celles qui doivent \'90tre \'8elimin\'8e
+es en priorit\'8e, les derni\'8fres celles qui doivent \'90tre conserv\'8ees en priorit\'8e. Dans cette \'8elimination, le mot de variable doit \'90tre compris au sens large. Ce peut \'90tre \'8egalement un appel de fonction non \'8evalu\'8e
+. C'est ainsi que pour simplifier une expression trigonom\'8etrique en tenant compte de la relation bien connue comme ci dessous, les variables seront cos(x) et sin(x).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet eqn:=\{sin(x)^2+cos(x)^2=1\}:\line e:=sin(x)^3-11*sin(x)^2*cos(x)+3*cos(x)^3-sin(x)*cos(x)+2:\line simplify(e, eqn);\par
+\pard\plain \s3 \f22\fs20 3 2\par
+ sin(x) - 14 sin(x) cos(x) - sin(x) cos(x) + 2 + 3 cos(x)\par
+\pard\plain \qj \f20 Maple a \'8elimin\'8e le maximum de cosinus (qui se trouve avant sinus dans l'ordre alphab\'8etique). Si vous voulez \'8eliminer le maximum de sinus, il vous faut donner la liste de priorit\'8e.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet simplify(e,eqn,[sin(x),cos(x)]);\par
+\pard\plain \s3 \f22\fs20 3 2\par
+\pard \s3 14 cos(x) - sin(x) cos(x) + 2 - sin(x) cos(x) + sin(x) - 11 cos(x)\par
+\pard\plain \qj \f20 \par
+\pard \qj Remarquez que cette substitution \'88 l'aide de simplify est beaucoup plus performante que les b\'90tes substitutions\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 subs(cos(x)^2=1-sin(x)^2,e);\par
+\pard\plain \s3 \f22\fs20 3 2 3\par
+ sin(x) - 11 sin(x) cos(x) + 3 cos(x) - sin(x) cos(x) + 2\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 subs(cos(x)=sqrt(1-sin(x)^2),e);\par
+\pard\plain \s3 \f22\fs20 3 2 2 1/2 2 3/2\par
+ sin(x) - 11 sin(x) (1 - sin(x) ) + 3 (1 - sin(x) )\par
+ 2 1/2\par
+ - sin(x) (1 - sin(x) ) + 2\par
+\pard\plain \qj \f20 cette derni\'8fre substitution ayant en outre l'inconv\'8enient d'\'90tre math\'8ematiquement incorrecte pour un x g\'8en\'8eral.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2.Affectation imm\'8ediate, affectation diff\'8er\'8ee\par
+\pard\plain \qj \f20 En Maple, l'affectation ressemble \'88 ce qu'elle est dans des langages de programmation comme Pascal ou C. Son symbole est le m\'90me qu'en Pascal, {\b :=}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?:=\par
+\pard\plain \s4\qj\li1120 \f20\fs20 SYNOPSIS: \par
+- <lhs> := <rhs>; \par
+\pard \s4\qj\li1120 - The assignment operator := assigns the to <lhs> the value of <rhs>. The left hand side of the assignment operator must evaluate to a name, or a subscript, or a function call. \par
+\pard \s4\qj\li1120 - First, the left hand side is evaluated to a name (see the evaln function), second the right hand side is evaluated as an expression, then the assignment is performed. The value of the assignment statement is the right hand side.
+\par
+\pard \s4\qj\li1120 \par
+\pard\plain \qj \f20 Il faut bien comprendre la signification de tout ceci. D'une part le terme de droite est \'8evalu\'8e compl\'90tement (c'est \'88 dire que l'expression qui sera assign\'8ee au terme de gauche est la valeur du terme de droite {\b
+au moment o\'9d l'affectation est r\'8ealis\'8ee}), d'autre part le terme de gauche (qui peut \'90tre un nom, un nom indic\'8e ou un appel de fonction) n'est pas \'8evalu\'8e et on lui affecte la valeur du terme de droite. Il s'agit d'une {\b
+affectation imm\'8ediate}, ou encore d'une affectation par {\b valeur} (analogue au passage de param\'8ftre par valeur). Un exemple:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet x:=2; y:=x+1; x:=100; y;\par
+\pard\plain \s3 \f22\fs20 x := 2\par
+ y := 3\par
+ x := 100\par
+ 3\par
+\pard\plain \qj \f20 Si par contre on souhaite indiquer que \'88 tout moment l'expression {\b y} doit valoir {\b x+1}, il faut emp\'90cher l'\'8evaluation du terme de droite. Pour cela, il suffit de le mettre entre apostrophes. On r\'8ealise ainsi une {
+\b affectation diff\'8er\'8ee }(tout se passe comme si l'affectation de x+1 \'88 y n'\'8etait r\'8ealis\'8ee qu'au moment o\'9d la variable y est uilis\'8ee (et \'88 ce moment x vaut 100 et non plus 3).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet x:=2; y:='x+1'; x:=100; y;\par
+\pard\plain \s3 \f22\fs20 x := 2\par
+ y := x + 1\par
+ x := 100\par
+ 101\par
+\pard\plain \qj \f20 Exemple: comparez les effets de l'affectation imm\'8ediate (\'88 la Pascal)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 x:=3; x:=x+1; x;\par
+\pard\plain \qj \f20 \par
+et de l'affectation diff\'8er\'8ee\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 x:=3;x:='x+1'; x;\par
+\pard\plain \qj \f20 \par
+Vous pouvez \'8egalement affecter les valeurs d'une fonction:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f(1):=1; f(1)+2;\par
+\pard\plain \s3 \f22\fs20 f(1) := 1\par
+ 3\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f(x):=0; f(x); f(t);\par
+\pard\plain \s3 \f22\fs20 f(x) := 0\par
+ 0\par
+ f(t)\par
+\pard\plain \qj \f20 Attention \'88 ce dernier exemple. On a d\'8efini le fait que f(x) devait valoir 0. Mais {\b t} n'est pas {\b x}, et f(t) reste donc non \'8evalu\'8e. On peut m\'90me faire des choses baroques du type\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sin(1):=2: sin(1)+2;\par
+\pard\plain \s3 \f22\fs20 4\par
+\pard\plain \qj \f20 et Maple ne proteste m\'90me pas. Comme quoi l'affectation de valeurs d'une fonction est \'88 manier avec pr\'8ecaution. On en verra l'utilit\'8e principale avec la d\'8efinition de fonctions en liaison avec l'option {\b remember}.
+\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3. Suppression d'une affectation\par
+\pard\plain \qj \f20 Pour supprimer une affectation de la variable x, il suffit de lui affecter la variable x elle m\'90me non \'8evalu\'8ee, c'est \'88 dire mise entre apostrophes.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 x:='x';\par
+\pard\plain \qj \f20 On peut aussi utiliser la fonction unassign qui est particuli\'8frement commode si l'on veut supprimer d'un seul coup plusieurs affectations.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?unassign\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: unassign - unassign names\par
+CALLING SEQUENCE:\par
+ unassign(name1, name2, ...)\par
+PARAMETERS:\par
+ name1, name2, ... - names\par
+SYNOPSIS: \par
+- This procedure unassigns all the unevaluated names given as input. The value\par
+ returned by unassign is NULL. \par
+- This function should be defined by the command readlib(unassign) before it is\par
+ used. \par
+\pard\plain \qj \f20 Cette fonction doit \'90tre pr\'8ealablement charg\'8ee depuis la librairie par un {\b readlib(unassign)}.\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul III. Sommation, d\'8erivation, integration\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Sommes et produits\par
+\pard\plain \qj \f20 Maple dispose de deux fonctions qui servent \'88 la fois \'88 calculer des sommes ou des produits ou \'88 construire des types sommes ou produits. Ce sont les fonctions {\b sum} et {\b product} (et leurs formes inertes {\b Sum} et {
+\b Product} que Maple n'essaye pas d'\'8evaluer)\par
+\pard\plain \s4\qj\li1120 \f20\fs20 \page FUNCTION: sum - definite and indefinite summation\par
+\pard \s4\qj\li1120 FUNCTION: Sum - inert form of summation\par
+CALLING SEQUENCES:\par
+ sum('f', 'k'); sum('f', 'k'=m..n); sum('f', 'k'=alpha);\par
+ Sum('f', 'k'); Sum('f', 'k'=m..n); Sum('f', 'k'=alpha);\par
+PARAMETERS:\par
+ f - an expression\par
+ k - a name, the summation index\par
+ m, n - integers or arbitrary expressions\par
+ alpha - a RootOf expression\par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The call sum('f', 'k') computes the indefinite sum of f(k) with respect to k. Thus it computes a formula g such that g(k+1)-g(k)=f(k) for all k.\par
+\pard \s4\qj\li1120
+- The call sum('f', 'k'=m..n) computes the definite sum of f(k) over the given range m..n, so it computes f(m) + f(m+1) + ... + f(n). The definite sum is equivalent to g(n+1)-g(m) where g is the indefinite sum. For example, sum(n, n) = sum('k', k=0..n
+-1) = (n^2-n)/2.\par
+\pard \s4\qj\li1120 - If m = n+1 then the value returned is 0. If m > n+1 then the value returned is -sum('f', 'k'=n+1..m-1).\par
+- The call sum('f', 'k'=alpha) computes the definite sum of f(k) summed over the roots of a polynomial alpha where alpha must be a RootOf.\par
+\pard \s4\qj\li1120 - Note: It is recommended (and often necessary) that both f and k be enclosed in single quotes to prevent premature evaluation. (For example, k may have a previous value.) Thus the common format is sum('f', 'k'=m..n) . \par
+- For definite sums, if n-m is a small integer, the sum is computed directly. Otherwise it is computed via indefinite summation and taking limits, and/or using various hypergeometric summation identities.\par
+\pard \s4\qj\li1120 - If Maple cannot find a closed form for the summation, the function call itself is returned. (The prettyprinter displays the sum function using a stylized summation sign.)\par
+\pard \s4\qj\li1120 - The capitalized function name Sum is the inert sum function, which simply returns unevaluated. The prettyprinter understands Sum to be equivalent to sum for printing purposes.\par
+\pard \s4\qj\li1120 \par
+\pard\plain \qj \f20 Une remarque est n\'8ecessaire \'88 ce propos. Supposons que Maple rencontre l'\'8evaluation d'une expression du type {\b sum(expr,i=m..n)}. Il va alors proc\'8eder de la mani\'8fre suivante: \'8evaluer {\i expr}, puis {\i i} puis
+{\i m} et {\i n} et enfin \'8evaluer la somme. Plusieurs difficult\'8es peuvent alors surgir:\par
+\tab - {\i expr} peut n'\'90tre pas \'8evaluable au sens de Maple lorsque {\i i }est un symbole; c'est ainsi que si on veut calculer la somme des \'8el\'8ements d'une liste, l'\'8evaluation de l'expression {\b sum(l[i],i=1..nops(l))}
+ va bloquer au niveau de l'\'8evaluation de {\b l[i]} alors que {\i i } est encore un symbole\par
+\pard \qj \tab - au contraire {\i i} peut s'\'8evaluer en un objet qui n'est pas un symbole (en particulier si l'on a d\'8ej\'88 affect\'8e \'88 {\i i} une valeur au cours des calculs pr\'8ec\'8e
+dents) et qui ne peut donc pas servir d'indice de sommation.\par
+\pard \qj \tab La solution \'88 ces deux types de probl\'8fme est de toujours inclure aussi bien l'expression \'88 sommer que le nom de l'indice de sommation entre apostrophes; en effet l'\'8e
+valuation d'une expression entre apostrophes consiste simplement \'88 enlever un niveau d'apostrophes. Cela emp\'90chera Maple d'essayer d'\'8evaluer {\i expr} de mani\'8fre pr\'8ematur\'8ee alors que {\i i} est encore un symbole et cela
+ garantirua d'autre part que c'est bien le symbole {\i i} qui est utilis\'8e comme indice de sommation, et non une quelconque valeur r\'8esiduelle de ce symbole. C'est ainsi que la somme des \'8el\'8ements d'une liste est obtenue par {\b
+sum('l[i]','i'=1..nops(l))}.\par
+\pard \qj \tab En dehors de ces contraintes, le fonction {\b sum} fait aussi bien de la sommation ind\'8efinie (trouver une "primitive discr\'8fte"), que de la sommation d\'8efinie sur un ensemble fini ou infini.\par
+\pard \qj \page Exemples:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sum(k^n,n);\par
+\pard\plain \s3 \f22\fs20 n\par
+ k\par
+ -----\par
+ k - 1\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sum(i^3,i=2..n);\par
+\pard\plain \s3 \f22\fs20 4 3 2\par
+ 1/4 (n + 1) - 1/2 (n + 1) + 1/4 (n + 1) - 1\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sum(x^i,i=0..4);\par
+\pard\plain \s3 \f22\fs20 2 3 4\par
+ 1 + x + x + x + x\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet sum(1/n^4,n=1..infinity);\par
+\pard\plain \s3 \f22\fs20 4\par
+ 1/90 Pi\par
+\pard\plain \qj \f20 La fonction inerte {\b Sum} est une structure qui repr\'8esente une somme que Maple ne tentera pas de calculer, soit que l'on sache a priori qu'elle n'est pas calculable et que l'on ne veuille pas que Maple perde du temps \'88
+ essayer successivement ses divers algorithmes, soit que l'on veuille en retarder le calcul pour des raisons diverses.\par
+\pard \qj \tab L'analogue multiplicatif est la fonction {\b product} qui utilise exactement la m\'90me syntaxe.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Derivation\par
+\pard\plain \qj \f20 La d\'8erivation \'8etant purement algorithmique ne pr\'8esente aucune difficult\'8e pour Maple. La fonction que vous utiliserez le plus souvent est la fonction {\b diff} qui est un op\'8erateur de d\'8eriv\'8ee partielle par rapport
+\'88 une ou plusieurs variables\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?diff\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: diff or Diff - partial differentiation\par
+CALLING SEQUENCE:\par
+ diff(a, x1, x2, ..., xn)\par
+ Diff(a, x1, x2, ..., xn) \par
+PARAMETERS:\par
+ a - an algebraic expression\par
+ x1, ... - names \par
+SYNOPSIS: \par
+- diff computes the partial derivative of a with respect to x1, x2, ..., xn, respectively. \par
+\pard \s4\qj\li1120 - Note that where n is greater than 1, the call to diff is the same as diff called recursively. I.e. diff(f(x), x, y); is equivalent to the call diff(diff (f(x), x), y);\par
+\pard \s4\qj\li1120 - The sequence operator $ is useful for forming higher-order derivatives. E.g., diff(f(x),x$4); is equivalent to diff(f(x),x,x,x,x); and diff(g(x,y),x$2,y$3); is equivalent to diff(g(x,y),x,x,y,y,y); \par
+- If the derivative cannot be expressed (e.g. if the expression is an undefined function), the diff function call itself is returned. (The prettyprinter displays the diff function in a two-dimensional d/dx format.) \par
+- The capitalized function name Diff is the inert diff function, which simply returns unevaluated. The prettyprinter understands Diff to be equivalent to diff for printing purposes.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet diff(BesselJ(2,x),x);\par
+\pard\plain \s3 \f22\fs20 BesselJ(2, x)\par
+ BesselJ(1, x) - 2 -------------\par
+ x\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet Diff(BesselJ(2,x),x);\par
+\pard\plain \s3 \f22\fs20 d\par
+ ---- BesselJ(2, x)\par
+ dx\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet diff(1/(x^2+1),x$2);\par
+\pard\plain \s3 \f22\fs20 2\par
+ x 2\par
+ 8 --------- - ---------\par
+ 2 3 2 2\par
+\pard \s3 (x + 1) (x + 1)\par
+\pard\plain \qj \f20 Bien entendu, Maple peut \'8egalement traiter les d\'8eriv\'8ees de fa\'8don purement symbolique (tr\'8fs utilie pour faire des changements de fonctions inconnues dans des \'8equations diff\'8erentielles)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet diff(g(x)*exp(x),x$2);\par
+\pard\plain \s3 \f22\fs20 / 2 \\\par
+ | d | / d \\\par
+ |----- g(x)| exp(x) + 2 |---- g(x)| exp(x) + g(x) exp(x)\par
+ | 2 | \\ dx /\par
+ \\ dx /\par
+\pard\plain \qj \f20 Vous pouvez \'8egalement d\'8eriver \'88 l'aide de formes diff\'8erentielles \'88 l'aide de la fonction {\b D\par
+}\pard\plain \s2\sb120\keep\keepn \b\f22 ?D\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: D - Differential operator\par
+CALLING SEQUENCE:\par
+ D(f) \par
+ D[i](f) \par
+PARAMETERS:\par
+ f - expression which can be applied as a function\par
+ i - positive integer or expression or sequence of such \par
+SYNOPSIS: \par
+- Let f be a function of one argument. The call D(f) computes the derivati
+ve of the function f. The derivative is a function of one argument such that D(f)(x) = diff(f(x), x). That is, D(f) = unapply(diff(f(x), x), x). Thus D is a mapping from unary functions to unary functions. \par
+
+- Let f be a function of n arguments. The call D[i](f) computes the partial derivative of f with respect to its i-th argument. More generally, D[i,j](f) is equivalent to D[i](D[j](f)), and D[](f) = f. Thus D[i] is a mapping from n-ary functions to n-
+ary functions. \par
+- The argument f must b
+e an algebraic expression which can be treated as a function. It may contain constants, known function names (e.g. exp, sin), unknown function names (e.g. f, g), arrow operators (e.g. x -> x^2), and the arithmetic and functional operators. For example
+, f+g, f*g, and f@g are valid since (f+g)(x) = f(x)+g(x), (f*g)(x) = f(x)*g(x) and (f@g)(x) = f(g(x)) where f@g denotes functional composition. \par
+- The usual rules for differentiation hold. In addition, it is assumed that partial derivatives commute. Hence D(f+g) = D(f) + D(g), D(f*g) = D(g*f) = D(f)*g + D(g)*f, D(f@g) = D(f)@g * D(g) etc.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet D(sin);\par
+\pard\plain \s3 \f22\fs20 cos\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet D(tan);\par
+\pard\plain \s3 \f22\fs20 2\par
+ 1 + tan\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet D(sin@cos);\par
+\pard\plain \s3 \f22\fs20 (2)\par
+ - cos sin\par
+\par
+\pard\plain \qj \f20 Comprenez vous ce dernier r\'8esultat? L'op\'8erateur {\b @} est l'op\'8erateur de composition des fonctions. Quant \'88 la puissance entre parenth\'8fses, elle d\'8esigne une puissance au sens de cet
+te composition des fonctions, c'est \'88 dire cos@cos (que Maple note encore cos@@2).\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 \page 3. Int\'8egrales ind\'8efinies (ou primitives)\par
+\pard\plain \qj \f20 Maple est capable de calculer des primitives de fonctions usuelles lorsque celles-ci peuvent s'exprimer avec des fonctions usuelles. Au dire de ses auteurs, Maple a impl\'8ement\'8e
+ l'algorithme de Risch qui est un algorithme complet au sens o\'9d, pour les fonctions ne d\'8ependant pas d'un param\'8ftre\par
+* soit il existe une primitive pouvant s'exprimer avec des fonctions usuelles et Maple la trouve\par
+* soit il n'existe pas de primitive pouvant s'exprimer avec des fonctions usuelles.\par
+le sens \'88 donner \'88 {\i fonctions usuelles} est assez large puisque Maple y inclut les fonctions classiques comme le logarithme int\'8egral, le sinus int\'8egrale, la fonction d'erreur, et ainsi de suite.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(1/(x^3+1),x);\par
+\pard\plain \s3 \f22\fs20 2 1/2 1/2\par
+ 1/3 ln(x + 1) - 1/6 ln(x - x + 1) + 1/3 3 arctan(1/3 (2 x - 1) 3 )\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(sin(x)/x^2,x);\par
+\pard\plain \s3 \f22\fs20 sin(x)\par
+ - ------ + Ci(x)\par
+ x\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(E^(-x^2),x);\par
+\pard\plain \s3 \f22\fs20 1/2\par
+ 1/2 Pi erf(x)\par
+\pard\plain \qj \f20 Pour les int\'8egrales d\'8ependant d'un param\'8ftre, Maple fait de son mieux, mais il faut parfois le guider pour lui indiquer dans quel domaine se trouve le param\'8ftre\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(1/(1+a*cos(x)),x);\par
+\pard\plain \s3 \f22\fs20 1/2\par
+ (- 1 + a) tan(1/2 x)\par
+ arctanh(-----------------------)\par
+ 1/2\par
+ (1 + a)\par
+ 2 --------------------------------\par
+ 1/2 1/2\par
+ (1 + a) (- 1 + a)\par
+\pard\plain \qj \f20 Ce n'est probablement pas la r\'8eponse que vous auriez trouv\'8ee "\'88 la main" car vous auriez implicitement suppos\'8e que |a|<1, contrairement \'88 Maple. Par contre\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(1/(1+a^2+cos(x)),x);\par
+\pard\plain \s3 \f22\fs20 a tan(1/2 x)\par
+ arctan(------------)\par
+ 2 1/2\par
+ (2 + a )\par
+ 2 --------------------\par
+ 2 1/2\par
+ a (2 + a )\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 4. Int\'8egrales d\'8efinies\par
+\pard\plain \qj \f20 Maple est capable de calculer un certain nombre d'int\'8egrales d\'8efinies (c'est \'88 dire entre deux bornes fix\'8ees). Il y parvient \'88 coup s\'9e
+r lorsque l'algorithme de Risch lui permet de trouver une primitive de la fonction sur l'intervalle en question. Par contre, dans le cas contraire, il peut \'8echouer \'88 calculer certaines int\'8egrales "calculables" par des m\'8ethodes classiques.
+\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: int or Int \par
+- definite and indefinite integration \par
+CALLING SEQUENCES: \par
+\tab int(f,x); int(f,x=a..b); int(f,x=a..b,continuous); \par
+\tab Int(f,x); Int(f,x=a..b); Int(f,x=a..b,continuous);\par
+PARAMETERS: f \par
+- an algebraic expression or a procedure, the integrand x \par
+- a name a,b \par
+- interval on which integral is taken continuous \par
+- (optional) indication that f is continuous\par
+SYNOPSIS: \par
+- The function int computes the indefinite or definite integral of f with respect to the variable x. The name integrate is a synonym for int.\par
+
+- Indefinite integration is performed if the second argument x is a name. Note that no constant of integration appears in the result. Definite integration is performed if the second argument is of the form x=a..b where a and b are the end points of th
+e interval of integration. \par
+- If Maple cannot find a closed form for the integral, the function call itself is returned. (The prettyprinter displays the int function using a stylized integral sign.) \par
+- The capitalized function name Int is the inert int function, which simply returns unevaluated. The prettyprinter understands Int to be equivalent to int for printing purposes. \par
+- In the case of a definite integral which returns unevaluated, numerical integration may be invoked by applying evalf to the unevaluated integral. To invoke numerical integration wit
+hout first invoking symbolic integration, use the inert function Int as in: evalf( Int(f,x=a..b) ). \par
+- For symbolic definite integration, iscont is invoked to ensure the integrand is continuous before taking limits at the endpoints. This check can be disabled by calling int with the third option continuous (a global name).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(1/(x^3+1),x=0..infinity);\par
+\pard\plain \s3 \f22\fs20 1/2\par
+ 2/9 Pi 3\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(1/(x^3+a),x=0..1);\par
+\pard\plain \s3 \f22\fs20 1/2\par
+ 1/3 2/3 1/3 1/2 3\par
+ 2 ln(- 1 - a ) - ln(1 + a - a ) + 2 3 arctan(----------)\par
+ 1/3\par
+ 2 a - 1\par
+ 1/6 ------------------------------------------------------------------\par
+ 2/3\par
+ a\par
+\pard\plain \qj \f20 (que pensez vous de la validit\'8e de ce dernier r\'8esultat, doit-on l'accepter les yeux ferm\'8es?).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(sin(x)^4/x^4,x=0..infinity);\par
+\pard\plain \s3 \f22\fs20 1/3 Pi\par
+\pard\plain \qj \f20 Le mot {\b continuous} permet de passer outre \'88 certains tests (et donc d'obtenir n'importe quoi)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet int(1/x^2,x=-1..1), int(1/x^2,x=-1..1,continuous); \par
+\pard\plain \s3 \f22\fs20 1\par
+ /\par
+ | 1\par
+ | ---- dx, -2\par
+ | 2\par
+ / x\par
+ -1\par
+\pard\plain \qj \f20 \par
+La fonction {\b Int} est inerte. Sa premi\'8fre utilit\'8e est de calculer num\'8eriquement des int\'8egrales en conjonction avec {\b evalf}. En effet, si vous faites {\b evalf(int(\'c9))}, Maple cherchera d'abord \'88 calculer l'int\'8e
+grale, puis en cherchera une approximation num\'8erique; si vous faites {\b evalf(Int(\'c9))}, la r\'8eponse sera beaucoup plus rapide puisque Maple utilisera directement une m\'8ethode d'int\'8egration num\'8erique pour trouver une valeur approch\'8e
+e de l'int\'8egrale. Cette fonction inerte sert \'8egalement, en conjonction avec le package {\b student} \'88 faire des changements de variables ou des int\'8egrations par parties dans des int\'8egrales.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(Int(BesselJ(2,x),x=0..1));\par
+\pard\plain \s3 \f22\fs20 .03962923860\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet evalf(Int(exp(-x^2),x=0..infinity));\par
+\pard\plain \s3 \f22\fs20 .8862269255\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul IV. Resoudre des \'8equations\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Solutions symboliques\par
+\pard\plain \qj \f20 Maple sait r\'8esoudre symboliquement un grand nombre d'\'8equations ou de syst\'8fmes d'\'8equations. La fonction essentielle \'88 conna\'94tre est la fonction {\b solve\par
+}\pard\plain \s2\sb120\keep\keepn \b\f22 ?solve\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: solve \par
+\tab - solve equations\par
+CALLING SEQUENCE: \par
+\tab - solve(eqns, vars) \par
+PARAMETERS: \par
+\tab eqns : an equation or set of equations \par
+\tab vars (optional): an unknown or set of unknowns \par
+SYNOPSIS: \par
+
+- The most common application of solve is to solve a single equation, or to solve a system of equations in some unknowns. A solution to a single equation eqns solved for the unknown vars is returned as an expression. To solve a system of equations eqns
+ for unknowns vars, the system is specified as a set of equations and a set of unknowns. The solution is returned as a set of equations.\par
+- Multiple solutions are returned as an expression sequence. Wherever an equation is expected, if an expression expr is specified then the equation expr = 0 is understood. If vars is not specified, indets(eqns,name) is used in place of vars. \par
+- When solve is unable to find any solutions, the expression NULL is returned. This may mean that there are no solutions or that solve was unable to find the solutions. \par
+- To assign the solutions to the variables, use the command assign.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(x^3-3*x+2,x);\par
+\pard\plain \s3 \f22\fs20 -2, 1, 1\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(x^3-4*x+3,x);\par
+\pard\plain \s3 \f22\fs20 1/2 1/2\par
+ 1, - 1/2 + 1/2 13 , - 1/2 - 1/2 13\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(tan(x)=1,x);\par
+\pard\plain \s3 \f22\fs20 1/4 Pi\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(sinh(x)=2,x);\par
+\pard\plain \s3 \f22\fs20 arcsinh(2)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(\{2*x+3*y-z=1,4*x+y-z=a,x-z=b\},\{x,y,z\});\par
+\pard\plain \s3 \f22\fs20 \{z = - 5/4 b + 3/8 a - 1/8, y = - 1/4 b - 1/8 a + 3/8,\par
+\par
+ x = - 1/4 b + 3/8 a - 1/8\}\par
+\pard\plain \qj \f20 \par
+Un certain nombre de points sont \'88 remarquer sur les exemples pr\'8ec\'8edents. D'une part quand il y a plusieurs solutions, celles ci sont retourn\'8ees dans une s\'8equence (c'est \'88 dire une suite d'expressions s\'8epar\'8e
+es par des virgules). D'autre part Maple peut r\'8esoudre des \'8equations comportant des fonctions transcendantes mais avec des risques \'8evidents li\'8es \'88 l'inversion de ces fonctions (Maple n'a donn\'8e qu'une seule solution de l'\'8e
+quation tan(x)=1). Enfin le r\'8esultat n'est pas fourni de la m\'90me fa\'8don suivant qu'il y a une ou plusieurs inconnues:\par
+\tab - dans le cas d'une seule inconnue, le r\'8esultat est fourni sous sa forme brute\par
+\tab - dans le cas de plusieurs inconnues, le r\'8esultat est fourni sous la formes d'\'8egalit\'8es entre les variables et les solutions; dans ce cas, on peut transformer les \'8egalit\'8es en affectations \'88 l'aide de la fonction {\b assign.}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(\{2*x+3*y=a,x+y=a^2\},\{x,y\});\par
+\pard\plain \s3 \f22\fs20 2 2\par
+ \{y = - 2 a + a, x = 3 a - a\}\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet assign(");\par
+\bullet x+y;\par
+\pard\plain \s3 \f22\fs20 2\par
+ a\par
+\pard\plain \qj \f20 Enfin, dans les syst\'8fmes d'\'8equations alg\'8ebriques, Maple fait syst\'8ematiquement emploi d'extension de corps introduites par la fonction {\b RootOf.\par
+}\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: RootOf - a representation for roots of equations\par
+CALLING SEQUENCE:\par
+ RootOf(expr)\par
+ RootOf(expr, x)\par
+PARAMETERS:\par
+ expr - an algebraic expression or equation\par
+ x - a variable name \par
+SYNOPSIS: \par
+- The function RootOf is a place holder for representing all the roots of an equation in one variable.\par
+-
+If x is not specified, then expr must be either a univariate expression or an expression in _Z. In this case, the RootOf represents the roots of expr with respect to its single variable or _Z, respectively. If the first argument is not an equation, th
+en the equation expr = 0 is assumed. \par
+- The RootOf function checks the validity of its arguments, and solves it for polynomials of degree one. The RootOf is expressed in a single\par
+-argument canonical form, obtained by making the argument primitive and expressing the RootOf in terms of the global variable _Z. \par
+
+- If expr is an irreducible polynomial over a field F then alpha = RootOf(expr) represents an algebraic extension field K over F of degree degree(expr, x) where elements of K are represented as polynomials in alpha. Maple automatically generates RootOf'
+s to express the solutions to polynomial equations and systems of equations, eigenvalues, and rational function integrals. \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(\{x^2+y^2=1,4*x+3*y=1\},\{x,y\});\par
+\pard\plain \s3 \f22\fs20 2\par
+ \{y = RootOf(25 _Z - 6 _Z - 15),\par
+\par
+ 2\par
+ x = - 3/4 RootOf(25 _Z - 6 _Z - 15) + 1/4\}\par
+\par
+\pard\plain \qj \f20 Une fonction compl\'8ementaire de la fonction {\b RootOf} est la fonction {\b allvalues} qui retourne des r\'8esultats num\'8eriques (exacts ou approch\'8es) \'88 partir d'expressions contenant des RootOf.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: allvalues - evaluate all possible values of expressions involving\par
+ RootOf's\par
+CALLING SEQUENCE:\par
+ allvalues(expr)\par
+ allvalues(expr, 'd')\par
+PARAMETERS:\par
+ expr - any expression or table, list, or set of expressions\par
+ 'd' - the character 'd'\par
+SYNOPSIS: \par
+- The most common application of allvalues is to evaluate expressions returned from solve involving RootOf's.\par
+
+- Typically, a RootOf represents more than one value. Thus, expressions involving RootOf's will generally evaluate to more than one value or expression. The procedure allvalues will return all such values (or expressions) generated by the combinations of d
+ifferent values of the RootOf's, in an expresion sequence.\par
+
+- The procedure allvalues will attempt to evaluate expressions exactly using solve. The roots of nth degree polynomial equations where n <= 4 can be obtained exactly. Where roots cannot be obtained exactly, allvalues will use fsolve to obtain a numeric
+al solution. In this case, no symbolic constants can be used in the particular RootOf argument.\par
+{\b - The optional second parameter 'd' is used to specify that RootOf's of the same equation represent the same value and they should not be evaluated independently of one another.}\par
+- Nested RootOf's are supported by allvalues.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(\{x^2+y^2=1,4*x+3*y=1\},\{x,y\});\par
+\pard\plain \qj \f20 2\par
+\pard\plain \s3 \f22\fs20 \{x = - 3/4 RootOf(25 _Z - 6 _Z - 15) + 1/4,\par
+\par
+ 2\par
+ y = RootOf(25 _Z - 6 _Z - 15)\}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet allvalues(");\par
+\pard\plain \s3 \f22\fs20 1/2 1/2\par
+ \{y = 3/25 + 8/25 6 , x = 4/25 - 6/25 6 \},\par
+\par
+ 1/2 1/2\par
+ \{y = 3/25 - 8/25 6 , x = 4/25 - 6/25 6 \},\par
+\par
+ 1/2 1/2\par
+ \{y = 3/25 + 8/25 6 , x = 4/25 + 6/25 6 \},\par
+\par
+ 1/2 1/2\par
+ \{y = 3/25 - 8/25 6 , x = 4/25 + 6/25 6 \}\par
+\pard\plain \qj \f20 Le r\'8esultat obtenu n'est pas raisonnable (quatre points d'intersection pour un cercle et une droite). C'est parce que Maple a consid\'8er\'8e que les deux RootOf \'8etaient ind\'8ependants, alors qu'ils repr\'8esentent en fait la m
+\'90me valeur. Le deuxi\'8fme param\'8ftre optionnel {\b 'd'} va r\'8esoudre ce probl\'8fme et indiquer \'88 Maple que les deux repr\'8esentent la m\'90me valeur:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet allvalues("",'d');\par
+\pard\plain \s3 \f22\fs20 1/2 1/2\par
+ \{y = 3/25 + 8/25 6 , x = 4/25 - 6/25 6 \},\par
+\par
+ 1/2 1/2\par
+ \{y = 3/25 - 8/25 6 , x = 4/25 + 6/25 6 \}\par
+\par
+\pard\plain \qj \f20 Bien entendu n'attendez pas de miracle de la fonction {\b solve}. Seules les solutions qui sont calculables de mani\'8fre algorithmique sont trouv\'8ees par Maple. Des solutions "\'8evidentes" peuvent ainsi ne pas \'90tre trouv\'8e
+es.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet solve(sin(x)=3*x/Pi,x);\par
+\pard\plain \s3 \f22\fs20 0\par
+\pard\plain \qj \f20 alors que "bien entendu" \'b9/6 est aussi solution.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Solutions num\'8eriques\par
+\pard\plain \qj \f20 Lorsque des solutions formelles ne peuvents pas \'90tre trouv\'8ees, Maple peut tenter de d\'8eterminer des solutions num\'8eriques approch\'8ees. La fonction \'88 utiliser dans ce cas est la fonction {\b fsolve}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \page ?fsolve\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: fsolve - solve using floating-point arithmetic\par
+CALLING SEQUENCE:\par
+ fsolve( <eqns>, <vars>, <options> );\par
+PARAMETERS:\par
+ <eqns> - an equation or set of equations\par
+ <vars> - (optional) an unknown or set of unknowns\par
+ <options> - (optional) parameters controlling solutions\par
+SYNOPSIS: \par
+- The conventions for passing equations and variables, and returning the answers, are the same for fsolve as for solve.\par
+- For a general equation, fsolve attempts to compute a single real root. However for polynomials it will compute all real (non-complex) roots, although exceptionally ill-conditioned polynomials may cause fsolve to miss some roots. \par
+- To compute all roots of a polynomial over the field of complex numbers, use the complex option.\par
+- The options available are:\par
+\tab - complex\par
+\tab \tab -Find one root (or all roots, for polynomials) over the complex floating-point numbers.\par
+\tab - fulldigits\par
+\tab \tab -This option prevents fsolve from decreasing Digits for intermediate calculations at high settings of Digits. With this option fsolve may escape ill-conditioning problems, but the routine slows down.\par
+\tab - maxsols=n\par
+\tab \tab -Find only the n least roots. This option is only meaningful for polynomials, where more than one root is computed.\par
+\tab - <interval>\par
+\tab \tab - a..b or x = a..b or \{x=a..b, y=c..d, ...\}
+. Search for roots in the given interval only. The ranges are open intervals, i.e. the endpoints are not included in the range. Note that an fsolve computation may fail to find a root even though one exists
+, in which case specifying appropriate range information may result in a successful computation.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet fsolve(\{x^2+y^2=1,4*x+3*y=1\},\{x,y\});\par
+\pard\plain \s3 \f22\fs20 \{x = -.4278775383, y = .9038367177\}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f := sin(x+y) - exp(x)*y = 0:\line g := x^2 - y = 2:\line fsolve(\{f,g\},\{x,y\},\{x=-1..1,y=-2..0\});\par
+\pard\plain \s3 \f22\fs20 \{y = -1.552838698, x = -.6687012050\}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet fsolve(x^5-x+2,x,complex);\par
+\pard\plain \s3 \f22\fs20 \tab -1.267168305, - .2609638804 + 1.177226153 I,\par
+\par
+ - .2609638804 - 1.177226153 I, .8945480327 - .5341485462 I,\par
+\par
+ .8945480327 + .5341485462 I\par
+\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3. Equations diff\'8erentielles\par
+\pard\plain \qj \f20 Maple est capable de r\'8esoudre formellement un certain nombre d'\'8equations diff\'8erentielles classiques d'ordre 1 ou 2 \'88 l'aide de la fonction {\b dsolve\par
+}\pard\plain \s2\sb120\keep\keepn \b\f22 ?dsolve\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: dsolve - solve ordinary differential equations\par
+CALLING SEQUENCE:\par
+ dsolve(deqns, vars)\par
+ dsolve(deqns, vars, option)\par
+PARAMETERS:\par
+ deqns - ordinary differential equation in vars, or set of equations and/or\par
+ initial conditions\par
+ vars - variable or set of variables to be solved for\par
+ option - one of: explicit, laplace, series, numeric\par
+SYNOPSIS: \par
+- dsolve is able to find clo
+sed-form solutions to many differential equations. The solution is returned either as an equation in y(x) and x (or whatever variables were specified) or in parametric form [x=f(_T),y(x)=g(_T)] where _T is the parameter. Any arbitrary constants are rep
+resented as _C1, _C2, ..., _Cn. \par
+- The explicit option forces the solution to be returned explicitly in terms of the dependent variable, if possible.\par
+- The laplace option causes dsolve to solve using Laplace transforms. One advantage to using this option is that differential equations may contain the Dirac or Heaviside functions. These functions are not recognized by the rest of dsolve.\par
+- The series option causes dsolve to solve using a series method. The order of the solution can be specified by setting Order.\par
+- The initial conditions must be specified at x=0 if the laplace or series option is being used. Otherwise, the conditions may be initial or boundary conditions specified at any points. Derivatives in conditions are specified by applyin
+g D to the function name, e.g. the second derivative of y at 0 is given as D(D(y))(0) or (D@@2)(y)(0). \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet dsolve(diff(y(x),x$2)+y(x)=x^2*cos(x),y(x));\par
+\pard\plain \s3 \f22\fs20 2 3\par
+ y(x) = 1/4 x cos(x) + 1/6 sin(x) x - 1/4 cos(x) - 1/4 sin(x) x\par
+\par
+ + _C1 sin(x) + _C2 cos(x)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet dsolve(\{diff(x(t),t)=x(t)+y(t)+cos(t),diff(y(t),t)=-x(t)+y(t)+sin(t)\},\{x(t),y(t)\});\par
+\pard\plain \qj \f20 2 3\par
+\pard\plain \s3 \f22\fs20 \{x(t) = 1/5 sin(t) cos(t) - 2/5 cos(t) + 2/5 cos(t) + 2/5 sin(t)\par
+\par
+ - 1/10 cos(t) sin(2 t) - 1/5 cos(t) cos(2 t) + _C1 exp(t) sin(t)\par
+\par
+ + _C2 exp(t) cos(t),\par
+\par
+ y(t) = 1/10 sin(t) sin(2 t) + 1/5 sin(t) cos(2 t) - 3/5 cos(t)\par
+\par
+ 3 2\par
+ + 1/5 cos(t) - 2/5 sin(t) cos(t) - _C2 exp(t) sin(t)\par
+\par
+ + _C1 exp(t) cos(t) \}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet dsolve(\{diff(y(t),t$2)+sin(y(t))=0\},y(t));\par
+\pard\plain \s3 \f22\fs20 y(t)\par
+ /\par
+ | 2\par
+ t = | ---------------------- dy2 - _C2,\par
+ | 1/2\par
+ / (8 cos(y2) + 4 _C1)\par
+ 0\par
+\par
+ y(t)\par
+ /\par
+ | 2\par
+ t = | - ---------------------- dy1 - _C2\par
+ | 1/2\par
+ / (8 cos(y1) + 4 _C1)\par
+ 0\par
+\pard\plain \qj \f20 \par
+La fonction {\b dsolve} utilis\'8ee avec l'option {\b numeric} renvoie (si les conditions initiales sont pr\'8ecis\'8ees) une fonction qui fournira en chaque point une \'8evaluation num\'8erique de la solution\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?dsolve[numeric]\par
+\pard\plain \s4\qj\li1120 \f20\fs20
+- If the numeric option is specified then the differential equations must be specified with initial-value conditions. In this case, a procedure is returned as the result of the dsolve function. If this procedure is assigned to the name F, for example,
+ then invoking F(t) for a numeric value of the independent variable t invokes a numerical method to solve the differential equation (or system of
+ equations), yielding the numerical solution at t. The numerical solution is returned as an expression sequence consisting of the value of t, followed by the values of the dependent variables at the point t.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f:=dsolve(\{diff(y(t),t$2)+sin(y(t))=0,y(0)=Pi/2,D(y)(0)=0\},y(t),numeric);\par
+\pard\plain \s3 \f22\fs20 f := proc(t) `dsolve/numeric/result2`(t,2359752,[2]) end\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f(1);\par
+\pard\plain \s3 \f22\fs20 1.0000000000, 1.074911685\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 4. Suites r\'8ecurrentes\par
+\pard\plain \qj \f20 L'usage de la fonction {\b rsolve} pour r\'8esoudre les r\'8ecurrences est tout \'88 fait similaire \'88 celui de la fonction {\b dsolve} pour les \'8equations diff\'8erentielles.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?rsolve\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: rsolve - recurrence equation solver\par
+CALLING SEQUENCE:\par
+ rsolve(eqns, fcn)\par
+ rsolve(eqns, fcn, ztrans)\par
+PARAMETERS:\par
+ eqns - a single equation or a set of equations\par
+ fcn - function to solve for\par
+ ztrans - (optional) solve using Z-transforms\par
+SYNOPSIS: \par
+- The function rsolve attempts to solve the recurrence relation specified in eqns, returning an expression for the general term of the function.\par
+- The first argument should be a single recurrence relation or a set of recurrence relations and boundary conditions. Any expressions in eqns which are not equations will be understood to be equal to zero.\par
+
+- The second argument fcn indicates what rsolve should solve for. This expression should be either an unevaluated function call (or calls) of the form f(n), indicating that rsolve should return a general solution for f(n), or simply a function f, in whi
+ch case the arguments to f are deduced from the variables that occur in the calls to f in eqns.\par
+- First order linear difference equations are handled; in addition, certain classes of first order nonlinear difference equations are recognized.\par
+- The ztrans option causes rsolve to solve the difference equations using Z-Transforms.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet rsolve(\{x(n+1)=2*x(n)-x(n-1)\},x(n));\par
+\pard\plain \s3 \f22\fs20 x(0) + (- x(0) + x(1)) n\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet rsolve(x(n+1)=2*x(n)+n,x(n));\par
+\pard\plain \s3 \f22\fs20 n n\par
+ - n - 1 + 2 + 2 x(0)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet rsolve(\{x(n+1)=n*x(n)-1\},x(n));\par
+\pard\plain \s3 \f22\fs20 // n - 1 \\ \\\par
+ || ----- | |\par
+ || \\ 1 | |\par
+ \{x(n) = GAMMA(n) || ) - --------------| - 1|, x(0) = x(0)\}\par
+ || / GAMMA(_n2 + 1)| |\par
+ || ----- | |\par
+ \\\\_n2 = 1 / /\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul \page V.Exercices\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 1\par
+\pard\plain \qj \f20 On sait que \|i\|su({\dn4 k=1};{\up6 n}; k^p) est de la forme P{\dn4 p}(n), o\'9d P{\dn4 p} est un polyn\'99me de degr\'8e p+1. Construire une liste des P{\dn4 p} sous forme factoris\'8ee pour p allant de 0 \'88
+ 10. On trouvera par exemple P{\fs20\dn4 0}(n)=n, P{\fs20\dn4 1}(n)=n(n+1)/2. Mots Maple \'88 utiliser : {\i map, list, sum, factor}.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 2\par
+\pard\plain \qj \f20 R\'8esoudre l'\'8equation diff\'8erentielle yy"-y'{\fs20\up6 2}= 1 de mani\'8fre explicite (attention: la premi\'8fre r\'8eponse fournie par Maple n'est pas forc\'8ement la bonne).\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 3\par
+\pard\plain \qj \f20 Etudier l'\'8evolution d'un oscillateur double dont le sch\'8ema est le suivant les deux masses \'8etant relach\'8ees sans vitesse initale avec des d\'8ecalages initiaux x{\fs20\dn4 1,0} et x{\fs20\dn4 2,0} par rapport \'88
+ leurs positions de repos (axe orient\'8e vers la droite).\par
+\pard \qj\li-560 {{\pict\macpict\picw475\pich143
+031300000000008f01db1101a10064000c574f524400000000008f01db01000a00000000008f01db70004a003f0024005f00a800510024005100340041003e005f0046003f0051005f005900410065005e006f0040007a005c00860040009100510099005100a7005200a8005100a70051002470004a004000b10060013500
+5200b1005200c1004200cb006000d3004000de006000e6004200f2005f00fc00410107005d01130041011e00520126005201340053013500520134005200b170004a003e013e005e01c20050013e0050014e00400158005e0160003e016b005e01730040017f005d0189003f0194005b01a0003f01ab005001b3005001c100
+5101c2005001c10050013e0a882288228822882234000500090083002909ff000000ff0000003834000501ba007f01da38a10096000c0200000001000000000000000300140d000c2b591e08726573736f72740d28002a00480f636f656666696369656e74206465202b0e0c0972617070656c206b0da00097a10096000c02
+000000010000000000000028002000e308726573736f72740d28002c00d20f636f656666696369656e74206465202b0c0c0972617070656c204b0da00097a10096000c02000000010000000000000028001b017308726573736f72740d28002701620f636f656666696369656e74206465202b0e0c0972617070656c206b0d
+a00097a10096000c01000000010000000000000028006c0099076d61737365206da00097a10096000c01000000010000000000000028006a0127076d61737365206da00097a000ac09ffffffffffffffff6100290088004300a20042003061002900b7004300d100f60030220036009b2300a000ada000ac61002701190041
+01330042003061002701460041016000f60030220034012c2100a000ad07000300030988228822882288222000500028005001b90aaa55aa55aa55aa55540044012e005e0148070001000109ffffffffffffffff5854004400a1005e00bb58a10096000c0100000001000000000000002b971d036d7572a00097a10096000c
+01000000010000000000000028008b000e036d7572a00097ff}}\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 4\par
+\pard\plain \qj \f20 \sect \sectd \sbknone\linemod0\linex0\headery1077\footery1077\cols2\colsx709\endnhere \pard\plain \s253\qj\li354\sb120\sa80 \b\f20 \par
+\pard\plain \qj \f20 Etudier l'\'8evolution du double pendule pesant dans le champ de pesanteur, les deux masses \'8etant relach\'8ees sans vitesse initiale avec des angles initiaux {\f23 q}{\fs20\dn4 1,0} et {\f23 q}{\fs20\dn4 2,0}.\par
+{{\pict\macpict\picw230\pich254
+027300000000014b00e61101a10064000c574f524400000000014b00e601000a00000000014b00e609aaaaaaaaaaaaaaaa60000bffd1008700510000005a60004e001c014a008a0000005a09ff00ff00ff00ff0020000c000f00dd000f070004000409ffffffffffffffff22000c000f3d3c20004a004d00ce007f0ab13003
+1bd8c00c8d54004300450056005809b130031bd8c00c8d585400c2007100e6009358070001000109ffffffffffffffff600027ffe800410036005a005a09aa55aa55aa55aa5520004c004e00da004e09ffffffffffffffff60007c0039008e0063005a005aa10096000c0100000001000000000000000300170d000c2b214c
+0171a00097a10096000c0100000001000000000000002b344d0171a00097a10096000c01000000010000000000000003001628005300270131a00097a10096000c0100000001000000000000002b354e0132a00097a10096000c0100000001000000000000002800180041014ca00097a10096000c01000000010000000000
+00002b476e014ca00097a10096000c01000000010000000000000028002000460131a00097a10096000c0100000001000000000000002b496d0132a00097a10096000c0100000001000000000000002800440057016da00097a10096000c0100000001000000000000002b3c88016da00097a10096000c0100000001000000
+0000000028004c005e0131a00097a10096000c0100000001000000000000002b3b880132a000970affffffffffffffff540006000a0016001a09aaaaaaaaaaaaaaaa58a10096000c02000000010000000000000028002700810f446f75626c652070656e64756c650d2b1c0c06706573616e74a00097ff}}\sect \sectd
+\sbknone\linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere \pard\plain \s253\qj\li354\sb120\sa80 \b\f20 \page Exercice 5\par
+\pard\plain \qj \f20 La formule de Taylor Lagrange \'88 l'ordre 2 garantit que\par
+\pard \qc f(x)=f(0)+x f'(0)+x^2 f''(x{\f23 q}(x))/2\par
+\pard \qj pour un certain {\f23 q}(x){\f23 \'ce}[0,1]. Trouver un d\'8eveloppement limit\'8e de la fonction {\f23 q} en 0 \'88 l'ordre 2.\par
+Mots Maple \'88 utiliser: {\i series},{\i solve}.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 6\par
+\pard\plain \qj \f20 Trouver un d\'8eveloppement asymptotique de la suite d\'8efinie par x{\fs20\dn4 n+1} = sin(x{\fs20\dn4 n}). Mots Maple \'88 utiliser: {\i rsolve, asympt}.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 7\par
+\pard\plain \qj \f20 Evaluer la somme de k=1 \'88 10^6 de 1/x log(x). Utiliser la fonction {\i eulermac} que l'on chargera par un {\i rreadlib(eulermac)}.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 Exercice 8\par
+\pard\plain \qj \f20 Chercher les valeurs de {\i a} pour lesquelles le polyn\'99me X{\fs20\up6 5} +5a X{\fs20\up6 3}+a{\fs20\up6 2}X+1 a 5 racines r\'8eelles par les diff\'8erentes m\'8ethodes suivantes\par
+\tab a) poser T=X/\'c3|a| \par
+\tab b) introduire la suite de polyn\'99mes P{\fs20\dn4 0}(X), P{\fs20\dn4 1}(X)=P'(X) et P{\fs20\dn4 i+2}(X)=P{\fs20\dn4 i}(X) mod P{\fs20\dn4 i+1}(X) et n(x) le nombre de changement de signes dans la suite (P{\fs20\dn4 0}(x),P{\fs20\dn4 1}(x),P{
+\fs20\dn4 2}(x),\'c9); alors le nombre de racines de P est \'8egal \'88 n(+\'b0)-n(-\'b0) (m\'8ethode de Sturm)\par
+\tab c) introduire la forme quadratique \|i\|su(i,j;;s{\fs20\dn4 i+j-2} x{\fs20\dn4 i}x{\fs20\dn4 j}) = \|i\|su(i;;(x{\fs20\dn4 1}+a{\fs20\dn4 i}x{\fs20\dn4 2}+a\|s({\fs20 2;i}) x{\fs20\dn4 3}+\'c9){\fs20\up6 2) }o\'9d les a{\fs20\dn4 i}
+ sont les racines complexes de P et s{\fs20\dn4 k} = a\|s({\fs20 k;1}) + a\|s({\fs20 k;2)} + \'c9 ; tester si cette forme quadratique est d\'8efinie positive.\par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/chap4.rtf b/support/w2latex/EXEMPLES/chap4.rtf
new file mode 100644
index 0000000000..13a9aab813
--- /dev/null
+++ b/support/w2latex/EXEMPLES/chap4.rtf
@@ -0,0 +1,624 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\qj\tqc\tx4320\tqr\tx8640 \f20
+\sbasedon0\snext243 footer;}{\s247\qj\li720 \i\f20\fs20 \sbasedon0\snext0 heading 9;}{\s248\qj\li720 \i\f20\fs20 \sbasedon0\snext0 heading 8;}{\s249\qj\li720 \i\f20\fs20 \sbasedon0\snext0 heading 7;}{\s250\qj\li720 \f20\fs20\ul \sbasedon0\snext0
+heading 6;}{\s251\qj\li720 \b\f20\fs20 \sbasedon0\snext0 heading 5;}{\s252\qj\li354\sb40\sa40 \f20\ul \sbasedon0\snext0 heading 4;}{\s253\qj\li354\sb120\sa80 \b\f20 \sbasedon0\snext0 heading 3;}{\s254\qj\sb200\sa140 \b\f20\fs36\ul \sbasedon0\snext0
+heading 2;}{\s255\qc\sb240 \b\f20\fs48 \sbasedon0\snext0 heading 1;}{\qj \f20 \sbasedon222\snext0 Normal;}{\s2\sb120\keep\keepn \b\f22 \sbasedon0\snext2 input;}{\s3 \f22\fs20 \sbasedon0\snext3 output;}{\s4\qj\li1120 \f20\fs20 \sbasedon0\snext4
+commentaire;}}{\info{\title chap4.doc}{\author EBM}}\paperw11880\paperh16800\margl1701\margr1701\margt1417\margb1417\deftab709\widowctrl\ftnbj\pgnstart36 {\*\nextfile disque dur:chap5.doc}\sectd
+\sbknone\linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere {\footer \pard\plain \s243\qj\tqc\tx4320\tqr\tx8640 \f20 \par
+\pard \s243\qc\tqc\tx4320\tqr\tx8640 {\fs20 Calcul formel avec Maple page }{\fs20 \chpgn }\par
+\pard \s243\qj\tqc\tx4320\tqr\tx8640 \par
+}\pard\plain \s255\qc\sb240 \b\f20\fs48 Les structures de donn\'8ees\par
+\pard\plain \qj \f20 Maple est un langage qui est typ\'8e au niveau des objets, mais non typ\'8e au niveau des variables, c'est \'88 dire que toute variable peut contenir un objet de n'importe quel type (contrairement \'88
+ Pascal ou C). Dans ce chapitre nous allons nous int\'8eresser aux types des objets (et non des variables), puis au contr\'99le des types et enfin aux m\'8ecanismes de l'\'8evaluation des objets.\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul I. Types simples\par
+\pard\plain \qj \f20 Nous avons d\'8ej\'88 rencontr\'8e pr\'8ec\'8edemment la plupart des types simples.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Types num\'8eriques\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?integer\par
+\pard\plain \s4\qj\li1120 \f20\fs20 SYNOPSIS: \par
+\pard \s4\qj\li1120
+- An expression is of type integer if it is an (optionally signed) sequence of one or more digits of arbitrary length. The length limit of an integer is system dependent but generally much larger than users will encounter -- typically great
+er than 500,000 decimal digits.\par
+\pard \s4\qj\li1120 - In addition to arithmetic operators, other basic functions of integers are\par
+ abs sign min max factorial\par
+ irem iquo modp mods mod\par
+ isqrt iroot isprime ifactor ifactors\par
+ igcd ilcm igcdex iratrecon rand\par
+\pard \s4\qj\li1120 - There are also many special functions for integers in the numtheory and combinat packages including the binomial coefficients, Fibonacci numbers, Stirling numbers, Jacobi symbol, Eulers totient function etc.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?fraction\par
+\pard\plain \s4\qj\li1120 \f20\fs20 SYNOPSIS: \par
+- <signed integer> / <natural integer>\par
+\pard \s4\qj\li1120 - An expression of type fraction is represented by a pair of integers (numerator and denominator) with all common factors removed and with a positive denominator.\par
+\pard \s4\qj\li1120 - Like integers, fractions can be of arbitrary length.\par
+\pard \s4\qj\li1120 - The op function considers the fraction data type to have two operands, where the first operand is the numerator and the second operand is the denominator.\par
+\pard \s4\qj\li1120 - A rational is defined to be either an integer or a fraction.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?float\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ <integer>.<integer>\par
+ <integer>.\par
+ .<integer>\par
+ Float(mantissa, exponent)\par
+PARAMETERS:\par
+ mantissa, exponent - integers\par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - A floating-point number (called type float) is shown as a sequence of digits with a decimal point.\par
+\pard \s4\qj\li1120 - Floating-point numbers are represented internally by a pair of integers (the mantissa and the exponent), which represent the number mantissa * 10^(exponent). The exponent is ``word-size'' but the mantissa can be of any length.
+\par
+- An alternative way to input floating-point numbers is Float(mantissa, exponent) which corresponds to the internal representation. The latter notation is used to output numbers with very small or very large magnitudes.\par
+\pard \s4\qj\li1120 - The op function considers this data type to have two operands: the mantissa and the exponent. For example, op(150.1) yields 1501, -1.\par
+\pard \s4\qj\li1120 - Arithmetic with floating-point numbers is performed by the evalf function, although floating-point evaluation takes place automatically for arithmetic operations whenever one of the operands is a float.\par
+\pard \s4\qj\li1120 - The number of digits carried in the mantissa for floating-point arithmetic is determined by the global variable Digits (default 10).\par
+\pard\plain \qj \f20 Remarquons que Maple (contrairement \'88 d'autres langages de calcul formel) ne connait pas de type complexe. Pour lui un complexe est une expression alg\'8ebrique de la forme a+b*sqrt(-1) qui s'\'8e
+crit sous la forme a+b*I par l'interm\'8ediaire d'un {\i alias}.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Les chaines de caract\'8fres et le type "name"\par
+\pard\plain \qj \f20 Les cha\'94nes de caract\'8fre ont dans Maple un double r\'99le. D'une part elles servent (comme en Pascal ou en C) \'88 stocker des expressions alphanum\'8eriques, mais elles servent \'8egalement comme variables. C'est l\'88
+ un premier aspect d\'8eroutant de la plupart des langages de calcul formel. Alors qu'en Pascal ou en C il n'y a aucun risque de confusion entre la variable {\i monTableau } et la cha\'94ne de caract\'8fres {\i "monTableau"} (en C, {\i 'monTableau' }
+), dans Maple il n'y a aucune diff\'8erence. Une cha\'94ne de caract\'8fres devient automatiquement une variable par le seul fait qu'on l'utilise en tant que telle (et en particulier si on l' affecte). En fait, le vocabulaire des concepteurs de Maple \'8e
+tablit une dsitinction artificielle mais utile entre les cha\'94nes de caract\'8fre utilis\'8ees en tant que telles ({\b string}) et les cha\'94nes de caract\'8fres utilis\'8ees comme variables ({\b name}
+), mais il faut savoir que rien dans le langage ne distingue les deux et que l'on peut au cours d'une m\'90me seance ou proc\'8edure utiliser le m\'90me objet alternativement dans un sens ou dans l'autre.\par
+\pard \qj \tab Une cha\'94ne de caract\'8fres est d\'8elimit\'8ee par des {\b accents graves} (en anglais backquotes) que l'on prendra garde \'88 ne pas confondre avec les accents aigus ou apostrophes qui servent \'88 emp\'90cher une \'8e
+valuation. Ces accents graves sont facultatifs si la cha\'94ne de caract\'8fres satisfait aux r\'8fgles habituelles de formation des noms de varaibles dans les langages de haut niveau (commencer par une lettre ou un _ et ne comporter que des caract\'8f
+res alphanum\'8eriques).\par
+\pard \qj \tab Ceci a pour cons\'8equence que rien ne vous interdit de nommer une variable comme `n-1` ou `Monsieur le Pr\'8esident Directeur G\'8en\'8e
+ral` avec tous les risques de confusion que cela comporte au niveau de l'affichage (imaginez l'affectation `n-1`:=n-1).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?string\par
+\pard\plain \s4\qj\li1120 \f20\fs20 SYNOPSIS: \par
+\pard \s4\qj\li1120 - A name is usually a string, which in its simplest form is a letter followed by zero or more letters, digits, and underscores with lower and upper case letters distinct. The maximum length of a name is 499 characters.\par
+\pard \s4\qj\li1120 - Any expression may be assigned to a name. If no value has been assigned to the name then it stands for itself.\par
+- More generally, names (strings) may be formed with the concatenation operator: . or with the function: cat.\par
+\pard \s4\qj\li1120 - A string may also be formed by enclosing any sequence of characters in a pair of backquotes ` `. Since any string is a valid <name> in Maple, the following is valid: `This is a name!` := 1.\par
+\pard \s4\qj\li1120 - For any valid Maple name formed without using backquotes, the name formed by surrounding it with backquotes is precisely the same name.
+ Thus x and `x` both refer to the same name x. However, a keyword may not be used as a name or string unless it is enclosed in backquotes.\par
+\pard \s4\qj\li1120 - Strings formed using backquotes are often used in the sense of character strings rather than names. A common example is the string used as an error message, as in: ERROR(`the argument must be an integer`).\par
+\pard \s4\qj\li1120 - Two successive backquotes appearing after the opening of a string will be parsed as a single backquote. Thus, `abc``de` yields abc`de.\par
+- The type function understands the typenames string and indexed, and type name is defined to be either of: string or indexed.\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul II. Types compos\'8es\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Sequences\par
+\pard\plain \qj \f20 Le type compos\'8e le plus simple (et celui qui provoque le plus de surprise) est la s\'8equence. Il s'agit uniquement d'une suite d'objets Maple s\'8epar\'8es par une virgule. En particulier les param\'8ftres d'une fonction, les \'8e
+l\'8ements d'une liste ou d'un ensemble forment une s\'8equence. le type des s\'8equences est {\b exprseq}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?sequence\par
+\pard\plain \s4\qj\li1120 \f20\fs20 SYNOPSIS: \par
+\pard \s4\qj\li1120 - Expression sequences, (or simply sequ
+ences), are created using the comma operator ,. For example s := 1,2,3 assigns s the sequence 1,2,3. In Maple, sequences form the basis of many data types. In particular, they appear in function calls, lists, sets and subscripts. \par
+\pard \s4\qj\li1720 Example:\par
+- f(s) applies the function f to the sequence 1,2,3,\par
+- [s] creates the list containing the elements 1,2,3,\par
+- \{s\} creates the set containing the elements 1,2,3, and\par
+- a[s] is the 1,2,3 subscript.\par
+- These are equivalent to f(1,2,3), [1,2,3], \{1,2,3\}, and a[1,2,3] respectively. \par
+\pard \s4\qj\li1120
+- When sequences are concatenated with a comma, the result is a single, unnested sequence. Thus t := s,s assigns t the sequence 1,2,3,1,2,3. The empty sequence is available as the value of the global variable NULL. It also appears implicitly in the e
+mpty list [], the empty set \{\}, a function call f() with no parameters, and an indexed name a[] with no subscripts.\par
+\pard \s4\qj\li1120 - Two key tools for constructing sequences are the {\b seq} function and the repetition operator {\b $}. For example, the call seq(f(i
+), i=1..3) will generate the sequence f(1), f(2), f(3). The call x$3 will generate the sequence x, x, x.\par
+
+- Sequences can also be constructed using the op function. The op function when applied to any Maple expression (except a sequence itself) returns a sequence of the operands of that expression. For example, op([x,y,z]) and op(x+y+z) both return the se
+quence x, y, z.\par
+\pard \s4\qj\li1120 - The op and nops functions cannot be applied to a sequence because the elements of the sequence are taken to be individual arguments
+ to the function. However, the i-th operand of a sequence s may be accessed using the selection operation s[i]. The length of a sequence may be determined by doing nops([s]), that is, by determining the length of the list containing the expression seq
+uence.\par
+\pard \s4\qj\li1120 \par
+\pard\plain \qj \f20 On peut cr\'8eer une s\'8equence soit en \'8ecrivant les objets s\'8epar\'8es par une virgule soit en utilisant une fonction de construction de sequence comme {\b seq} ou l'op\'8erateur de r\'8ep\'8etition\~{\b $}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?seq\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: seq - create a sequence\par
+CALLING SEQUENCE:\par
+ seq(y, i = m..n)\par
+ seq(y, i = x)\par
+PARAMETERS:\par
+ y - any expression\par
+ i - name\par
+ m, n - numerical values\par
+ x - an expression\par
+SYNOPSIS: \par
+\pard \s4\qj\li1120 - The seq function is related to the for loop construct. It behaves in a similar manner to for except that seq constructs a sequence of values.\par
+\pard \s4\qj\li1120 - The most typical call is seq(f(i), i = 1..n) which generates the sequence f(1), f(2), ..., f(n). More generally, seq(f(i), i = m..n) generates the sequence f(m), f(m+1), f(m+2), ..., f(n). Here m and n do not have to b
+e integers.\par
+\pard \s4\qj\li1120 - The call seq(f(i), i = x) generates a sequence by applying f to each operand of x. Here, x would most commonly be a set or list, but could be a sum, product, etc.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?$\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: $ - operator for forming an expression sequence\par
+CALLING SEQUENCE:\par
+ expr $ i = m..n; expr $ n; $ m..n;\par
+PARAMETERS:\par
+ expr - an expression\par
+ i - an unevaluated name\par
+ m,n - expressions\par
+SYNOPSIS: \par
+- $ returns the expression sequence produced by substituting for i in expr the\par
+ values m,m+1,...,n (or up to the last value not exceeding n).\par
+\pard \s4\qj\li1120 - If m>n then the NULL expression sequence is returned.\par
+- A call to $ in the form: $ m..n; will have the same effect as the call:\par
+ i $ i = m..n;.\par
+- A call to $ in the form: expr $ n; will have the same effect as the call:\par
+ expr $ i = 1..n ; (assuming that expr does not contain i).\par
+- Note: It is recommended (and often necessary) that both 'expr' and 'i' be\par
+ enclosed in single quotes to prevent premature evaluation. (E.g., i may have\par
+ had a previous value). I.e., the common format is 'expr' $ 'i' = m..n;\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Listes\par
+\pard\plain \qj \f20 Une liste dans Maple est une suite d'objets ordonn\'8es, s\'8epar\'8es par des virgules et encadr\'8es par des crochets. Une liste est donc de la forme {\b [}{\i sequence }{\b ]}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?list\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ [es] \par
+PARAMETERS:\par
+ es - an expression sequence\par
+SYNOPSIS: \par
+- A list is an ordered sequence of expressions enclosed in square brackets. The ordering of the expressions is the ordering of es.\par
+- Note that es may be empty so that the empty list is represented by [].\par
+- The elements of list may be extracted via the selection operation. Thus, if S is a set or list then the i-th element of S can be obtained by: S[i] or equivalently, op(i,S).\par
+\pard\plain \qj \f20 Les listes peuvent \'90tre construites explicitement, ou alors en utilisant les fonctions de construction de s\'8equences. Un certain nombre d'op\'8erateurs s'appliquent aux listes comme union, intersect, minus, member.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet [x,y,y,z];\par
+\pard\plain \s3 \f22\fs20 [x, y, y, z]\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet [seq(i^2,i=-2..5)];\par
+\pard\plain \s3 \f22\fs20 [4, 1, 0, 1, 4, 9, 16, 25]\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet [$1..6];\par
+\pard\plain \s3 \f22\fs20 [1, 2, 3, 4, 5, 6]\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3. Ensembles\par
+\pard\plain \qj \f20 Un ensemble dans Maple est une suite d'objets distincts, non ordonn\'8es, s\'8epar\'8es par des virgules et encadr\'8es par des accolades Une liste est donc de la forme {\b \{}{\i sequence }{\b \}}. Un ensemble est toujours simplifi
+\'8e par Maple pour \'8eviter les r\'8ep\'8etitions et il est stock\'8e et affich\'8e dans un ordre interne \'88 Maple, sur lequel on n'a aucune prise.\par
+\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ \{es\} \par
+PARAMETERS:\par
+ es - an expression sequence\par
+SYNOPSIS: \par
+- A set is an unordered sequence of di
+stinct expressions enclosed in braces, representing a set in the mathematical sense. The user should not assume that the expressions will be maintained in any particular order because Maple uses an ordering convenient for its implementation.\par
+- Note that es may be empty so that the empty set is represented by \{\}.\par
+- The elements of a setmay be extracted via the selection operation. Thus, if S is a set or list then the i-th element of S can be obtained by: S[i] or equivalently, op(i,S).\par
+\pard\plain \qj \f20 Les ensembles peuvent \'90tre construits explicitement, ou alors en utilisant les fonctions de construction de s\'8equences. Un certain nombre d'op\'8erateurs s'appliquent aux ensembles comme union, intersect, minus, member.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet \{z,x,y,y\};\par
+\pard\plain \s3 \f22\fs20 \{x, y, z\}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet \{seq(i^2,i=-2..5)\};\par
+\pard\plain \s3 \f22\fs20 \{0, 1, 4, 9, 16, 25\}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet \{$1..6\};\par
+\pard\plain \s3 \f22\fs20 \{1, 2, 3, 4, 5, 6\}\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 4. Type index\'8e\par
+\pard\plain \qj \f20 Le type index\'8e est une facilit\'8e de Maple pour cr\'8eer de nouveaux noms \'88 l'aide d'un symbole index\'8e. C'est ainsi que, de m\'90me qu'en Math\'8ematiques on peut nommer trois points du plan sous la forme A{\dn4 1}, A{\dn4 2
+} et A{\dn4 3}, on peut cr\'8eer en Maple trois noms A[1], A[2] et A[3]. Bien entendu, les indices peuvent \'90tre des s\'8equences de n'importe quels objets Maple. On prendra garde \'88 ne pas confondre les objets index\'8e
+s de Maple avec les tableaux de Pascal ou C.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?indexed\par
+\pard\plain \s4\qj\li1120 \f20\fs20 CALLING SEQUENCE:\par
+ <name> [ <expression sequence> ]\par
+SYNOPSIS: \par
+- <name> [ <expression sequence> ]\par
+- An indexed name may appear anywhere a name may appear. In particular, since A[1,2,3] is valid so is A[1,2,3][x,y] and A[1,2,3][x,y][2,1].\par
+- The op function applied to an indexed name yields the expression sequence of indices appearing within the rightmost brackets, and the zero'th operand is the corresponding <name>.\par
+- The use of the indexed name b[1] does not imply that b is an array. For instance: \par
+\tab \tab a := b[1] + b[2] + b[1000]; \par
+simply forms a sum of three indexed names.\par
+- The assignment of a value to an indexed name will implicitly create a table. Thus the statement:\par
+\tab \tab b[1] := 10; \par
+creates a table for b and assigns the value 10 to the component of the table indexed by 1.\par
+\par
+\pard\plain \qj \f20 On prendra garde \'8egalement \'88 ne pas confondre les crochets des symboles index\'8es avec les crochets qui permettent d'acc\'8eder (en tant que {\i rvalue} ne pouvant \'90tre affect\'8ee) aux diff\'8erents \'8el\'8ements d'une s
+\'8equence, d'une liste ou d'un ensemble.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 5. Tables\par
+\pard\plain \qj \f20 La structure de table est tout \'88 fait particuli\'8fre \'88 Maple. Elle reprend la notion math\'8ematique de famille index\'8ee, avec la seule diff\'8erence que, alors qu'en mat\'8ematiques on notre a{\fs20\dn4 i}
+, en Maple on note a[i]. Bien entendu, aussi bien en math\'8ematiques qu'en Maple, "i " peut \'90tre une s\'8equence, et alors on notera a[i,j,k,\'c9] \'88 la place de a{\dn4 i,j,k,\'c9}.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?table\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: table - create a table\par
+CALLING SEQUENCE:\par
+ table( F, L )\par
+PARAMETERS:\par
+ F - (optional) the indexing function\par
+ L - (optional) list of initial table entries\par
+SYNOPSIS: \par
+- A table is created either explicitly by a call to the table function or implicitly by assigning to an indexed name. Unlike arrays, where indices must be integers, {\b the indices (or keys) of a table can be any value}.\par
+
+- The table function creates a table with initial values specified by L. If L is a list of equations then the left-hand-side is taken to be the table index (key), and the right-hand-side the entry (value). Otherwise, L is taken to be a list of entries
+ with indices 1, 2, ... etc. If L is not specified, then an empty table is created.\par
+- New entries can be added to a table using the subscript notation. Thus T := table([
+4]) is equivalent to: T := table() and T[1] := 4 or equivalently: T[1] := 4 if T was unassigned (implicit creation). Entries can be removed from a table by assigning a table entry to its own name. Thus T[1] := 'T[1]' removes the entry 4 from T.\par
+- The indexing function F can be a procedure or a name specifying how indexing is to be performed; if null then ordinary indexing is implied. The built in indexing functions are: symmetric, antisymmetric, sparse, diagonal, and identity. \par
+- Tables have speci
+al evaluation rules (like procedures) so that if the name T has been assigned a table then T evaluates to T. The call op(T) yields the actual table structure; and op(op(T)) yields the components of the table, i.e. the indexing function (if there is one
+) and a list of equations for the tables values.\par
+- The indices function can be used to obtain a sequence of a tables indices and likewise, the entries function returns a sequence of the table's entries.\par
+\pard\plain \qj \f20 Il faut donc faire un certain nombre de remarques:\par
+\tab - les indices d'une table n'ont aucune raison d'\'90tre entiers ni m\'90me d'\'90tre homog\'8fnes, rien ne vous interdit de poser a[1]:=1 et a[sin,alpha,2]:=x\par
+\tab - si aucune fonction d'indexage n'est fournie, les appels a[{\i sequence d'indices} ] non affect\'8es retournent simplement non \'8evalu\'8es, il n'y a donc pas de d\'8ebordement possible (au contraire de Pascal ou C); le r\'99
+le des fonctions d'indexage est de donner des valeurs par d\'8efaut aux a[{\i sequence d'indices} ]\par
+\tab - les tables peuvent \'90tre cr\'8e\'8ees explicitement par la fonction {\b table} mais aussi implicitement simplement en assignant une valeur \'88 un a[...].\par
+\par
+Exemple:\par
+\tab - une table cr\'8e\'8ee explicitement sans initialisations\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet a:=table():{\plain \f20 \line }\bullet a[1]:=1: a[cos,alpha,1]:=x:\line \bullet a[2],a[1],a[x],a[toto,truc],a[cos,alpha,1];\par
+\pard\plain \s3 \f22\fs20 a[2], 1, a[x], a[toto, truc], x\par
+\par
+\pard\plain \qj \f20 \tab - une table cr\'8e\'8ee implicitement avec initialisations\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet b[2,\{x,y\}]:=1: \line \bullet b[1],b[2,x,y],b[2,\{x,y\}];\par
+\pard\plain \s3 \f22\fs20 b[1], b[2, x, y], 1\par
+\pard\plain \qj \f20 \par
+\tab - une table cr\'8e\'8ee explicitement avec initialisations; remarquer la syntaxe des initialisations : {\b (}{\i s\'8equence d'indices }{\b ) = \'c9}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet c:=table([(1)=1,(cos,alpha,1)=x]):\line \bullet c[cos,alpha,1];\par
+\pard\plain \s3 \f22\fs20 x\par
+\par
+\pard\plain \qj \f20 Les entr\'8ees initialis\'8ees d'une table peuvent \'90tre r\'8ecup\'8er\'8ees avec les fonctions {\b indices} (qui donne les indices affect\'8es sous forme de s\'8equence de listes) et {\b entries} (qui donne, dans le m\'90
+me ordre, leurs affectations \'8egalement sous forme de s\'8equence de listes)\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: indices - indices of a table or array , entries - entries of a table or array\par
+CALLING SEQUENCE:\par
+ indices(t); and entries(t);\par
+PARAMETERS:\par
+ t - a table or array\par
+SYNOPSIS: \par
+- The indices and entries functions return sequences of the indices (or keys) and the entries respectively of the table or array t corresponding to the entries that are explicitly stored.\par
+- The result returned is a sequence of lists in an apparently arbitrary order which cannot be controlled by the user. There is though a one to one correspondence between the result of indices and entries.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet t:=table([(1,2)=moi,(3,2)=toi,(1,3)=lui]):\par
+\bullet indices(t);\par
+\pard\plain \s3 \f22\fs20 [2, 3], [1, 3], [1, 2]\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet entries(t);\par
+\pard\plain \s3 \f22\fs20 [toi], [lui], [moi]\par
+\par
+\pard\plain \qj \f20 Attention: contrairement aux autres objets de Maple, le nom d'une table ne d\'8esigne pas la table elle-m\'90me mais un pointeur sur la table (autrement dit l'adresse en m\'8e
+moire de la table). C'est ainsi qu'une affectation entre tables ne r\'8ealise par une recopie de la table. Apr\'8fs une affectation du type b:=a, o\'9d a est une table, b ne r\'8ealise pas une copie de a, mais au contraire a et b d\'8esignent la m\'90
+me table (en particulier toute modification de b se r\'8epercute sur a et r\'8eciproquement)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet a[1]:=1: b:=a: b[1]:=x:\line \bullet a[1];\par
+\pard\plain \s3 \f22\fs20 x\par
+\pard\plain \qj \f20 De m\'90me, une variable de type table ne renvoie pas le contenu de la table elle m\'90me mais son nom.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet a;\par
+\pard\plain \s3 \f22\fs20 a\par
+\pard\plain \qj \f20 Si l'on veut le contenu de a (en fait l'objet point\'8e par a) il faut demander un niveau d'\'8evaluation suppl\'8ementaire.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet eval(a);\par
+\pard\plain \s3 \f22\fs20 table([\par
+ 1 = x\par
+ ])\par
+\pard\plain \qj \f20 Pour plus de d\'8etail, voir le paragraphe sur l'\'8evaluation ci-dessous.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 5. Array\par
+\pard\plain \qj \f20 \tab Le type {\b array} est un type particulier du type table dans lequel l'ensemble d'indices est un intervalle d'entiers ou un produit cart\'8esien de tels intervalles d'entiers. L'acc\'8fs \'88 un \'8el\'8ement se fait donc n\'8e
+cessairement sous la forme a[i,j,k,\'c9] dans lequel i,j,k,\'c9 sont des entiers dont le nombre et les bornes sont fix\'8es {\i a priori} . Bien entendu un tel objet doit \'90tre cr\'8e\'8e explicitement pour d\'8e
+finir le nombre d'indices et les intervalles dans lesquels ils varient. C'est le r\'99le de la fonction {\b array}.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: array - create an array\par
+CALLING SEQUENCE:\par
+ array( indexfcn, bounds, list)\par
+PARAMETERS:\par
+ indexfcn - (optional) an indexing function\par
+ bounds - (optional) sequence of ranges\par
+ list - (optional) list of initial values\par
+SYNOPSIS: \par
+- An array is a specialization of a table, with zero or more specified dimensions, where each dimension is an integer range. The result of execu
+ting the array function is to create an array. For example, V := array(1..10) creates a one dimensional array (a Maple vector) of length 10 but with no explicit entries. The command A := array(1..m,1..n) creates a two dimensional array (a Maple matri
+x) with m rows and n columns.\par
+- All parameters to the array function are optional and may appear in any order. The bounds parameter is a sequence of integer ranges which must appear consecutively. If the bounds are not specified then they are deduced
+from the list of initial values.\par
+
+- The indexfcn can be a procedure or a name specifying how indexing is to be performed - see indexfnc for more information. The built-in indexing functions are symmetric, antisymmetric, sparse, diagonal, and identity. If indexfnc is not specified, then
+ ``ordinary'' indexing is used.\par
+- The list of initial values may be a list of equations (cf. tables), or a list of values (one-dimensional), or a nested list of lists (row-by-row).\par
+- The map function can be used to apply a function to each entry of an array. For example, map (simplify, A) simplifies each entry of the array A.\par
+- Arrays have special evaluation rules (like procedures) so that if the name A has been assigned an array then A evaluates to the name A and eval(A) yields the actual array structure.\par
+- The op function can be used to pick apart an array structure. Specifically op(eval(A)) yields indexfcn, bounds, and entries where entries is a list of equations corresponding to the explicit entries in the array (c
+f. entries). Hence op(1,eval(A)) returns the array dimensions.\par
+\pard\plain \qj \f20 Contrairement \'88 une table g\'8en\'8erale, dans une {\b array}, un contr\'99le du nombre d'indices et de leurs bornes est effectu\'8e, si bien qu'aucun d\'8ebordement n'est possible.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet m:=array(1..3,0..2,[(1,1)=1,(3,2)=x]):{\plain \f22 \line }\bullet m[1,2],m[3,2];\par
+\pard\plain \s3 \f22\fs20 m[1, 2], x\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet m[1];\par
+\pard\plain \s3 \f22\fs20 Error, index incompatible with bounds\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet m[0,10];\par
+\pard\plain \s3 \f22\fs20 Error, index outside of bound\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul III. Types expressions. Op\'8erandes\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Arbre d'une expression\par
+\pard\plain \qj \f20 Consid\'8erons une op\'8eration {\i n-aire} que nous noterons &. Si expr{\dn4 1},\'c9,expr{\dn4 n }sont n expressions alg\'8ebriques, nous consid\'8ererons comme \'8equivalentes les expressions\par
+\pard \qc (expr{\dn4 1)} & \'c9 & (expr{\dn4 n}){\dn4 \par
+}\pard {\dn4 et\par
+}\pard \qc {\dn4 &(}expr{\dn4 1},\'c9,expr{\dn4 n}).\par
+\pard \qj Dans la premi\'8fre notation, nous nous autoriserons \'88 supprimer les parenth\'8fses autour des expressions alg\'8ebriques qui sont r\'8eduites \'88 des atomes. La premi\'8fre forme sera appel\'8ee la forme parenth\'8es\'8e
+e de l'expression alg\'8ebrique, la deuxi\'8fme forme la forme pr\'8enexe. Un moyen classique de stocker une expression alg\'8ebrique sous forme pr\'8enexe est de la stocker sous forme de liste "\'88 la LISP"\par
+\pard \qc (& (expr{\dn4 1) }\'c9 (expr{\dn4 n}))\par
+\pard \qj en supprimant encore une fois les parenth\'8fses autour des atomes.\par
+Par exemple l'expression Sin(2x+y+f(z)) sera stock\'8ee sous la forme\par
+\pard \qc {\f22 (Sin (Plus (Mult 2 x) y (f z)))}\par
+\pard \qj Un autre moyen classique est de la stocker sous forme d'arbre\par
+\pard \qc {{\pict\macpict\picw356\pich211
+022e0000000000d301641101a10064000c574f52440000000000d3016401000a0000000000d3016430000600b4001f00f130007800450091008230003d00b4005600f130007800b2009100ef3000b6000500cf00423000b8007900d100b63000770126009001633000b9012600d20163a10096000c01000000010000000000
+00000300140d000e2bc6180353696ea00097a10096000c01000000010000000000000028004f00c104506c7573a00097a10096000c01000000010000000000000028008a0053044d756c74a00097a10096000c0100000001000000000000002800c8001a0132a00097a10096000c0100000001000000000000002b76020178
+a00097a10096000c01000000010000000000000028008a00c70179a00097a10096000c01000000010000000000000029780166a00097a10096000c0100000001000000000000002800cc013e017aa00097a000ab61002f00c2004900dcffe8003022001d00cf0019a000ada000ab61006a00600084007a002d003022005500
+c2b120a000ada000ab61006a00bf008400d9ffe8003022005500cc001ca000ada000ab610069013e008301580106003022005500de6720a000ada000ab6100a8001800c20032001e00302200900057d322a000ada000ab6100aa008800c400a201210030220090006b2623a000ada000ab6100ac013500c6014fffe8003022
+008f01420024a000ada10096000c010000000100000000000000280018000c0e53696e2832782b792b66287a2929a00097ff}}\par
+\pard \qj \page La solution retenue par Maple (comme par Mathematica) est une solution interm\'8ediaire.\par
+\par
+{{\pict\macpict\picw381\pich184
+027f0000000000b8017d1101a10064000c574f52440000000000b8017d01000a0000000000b8017d0a0000000000000000340023004300360071383400230070003600d03834005e0073007100a13834005e00a0007101613822007000d900ee220070012300eea10096000c0100000001000000000000000300020d000c2b
+f46b027920a000973400a2004500b500e6382200b400a500eea10096000c0100000001000000000000002800af0088023220a00097a10096000c0100000001000000000000002932027820a000973400a4010e00b7017c38a10096000c0100000001000000000000002b9a02027a20a00097a10096000c0100000001000000
+0000000028000e00701453696e28322078202b2079202b2066287a292920a00097a10096000c01000000010000000000000028006b0003096e6976656175203220a00097a10096000c0100000001000000000000002b0142096e6976656175203320a000970a01020408102040803400a4010e00b7013c383400a2004500b5
+00733834005e0073007100a13834002300430036007138a10096000c010000000100000000000000040128006b007505506c757320a00097a10096000c0100000001000000000000002800b00047054d756c7420a00097a10096000c0100000001000000000000002bd801026620a00097a000ab6100510084006b009effe8
+00302200290091002fa000ada000ab610094004a00ae00640023003022006600b9a338a000ada000ab610097011b00b10135fffe00302200670140ea37a000ada10096000c01000000010000000000000004002800300002096e6976656175203120a00097a10096000c010000000100000000000000040129450453696e20
+a00097ff}}\par
+\par
+Bien entendu le passage d'une forme liste \'88 la forme arbre (ou \'88 la forme interm\'8ediaire de maple) et inversement est un exercice de programmation \'88 peu pr\'8fs trivial. Par contre la passage de la forme parenth\'8es\'8ee \'88
+ l'une de ces trois formes est beaucoup plus d\'8elicat (surtout si l'expression n'est pas compl\'90tement parenth\'8es\'8ee et utilise des priorit\'8es entre les op\'8erateurs, comme l'on fait habituellement), mais est fait de fa\'8don transparente \'88
+ l'utilisateur par Maple.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Type et op\'8erandes d'une expression\par
+\pard\plain \qj \f20 Pour Maple, le type d'une expression alg\'8ebrique non atomique est son en-t\'90te (ou encore sa racine). C'est ainsi que\par
+\pard \qj\li560 - le type de sin(2x+y+f(z)) est sin\par
+- le type de 2x+y+f(z) est sum {\i (plus en anglais)}\par
+- le type de 2x est times {\i (multipli\'8e en anglais)}\par
+- le type de f(z) est f .\par
+\pard \qj Quand aux op\'8erandes ce sont les diverses sous expressions (\'8eventuellement atomiques) auxquelles s'appliquent l'op\'8erateur de l'en t\'90te.\par
+\pard \qj\li560 - l'expression sin(2*x+y+f(z)) a un seul op\'8erande 2*x+y+f(z)\par
+- l'expression 2*x+y+f(z) a trois op\'8erandes 2x,\tab y, \tab f(z)\par
+\pard \qj\li580 - l'expression 2*x a deux op\'8erandes 2 , \tab x\par
+- l'expression f(z) a un seul op\'8erande z.\par
+\pard \qj Dans la notation en arbre, le type correspond \'88 la racine de l'arbre et les op\'8erandes a chacun des sous arbres partant de la racine. La fonction {\b op} retourne les divers op\'8erandes d'une expression alg\'8ebrique. Quant \'88
+ la fonction {\b nops} elle renvoie le nombre d'op\'8erandes (c'est \'88 dire le nombre de fl\'8fches partant de la racine).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 ?op, nops\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: op - extract operands from an expression\par
+FUNCTION: nops - the number of operands of an expression\par
+CALLING SEQUENCE:\par
+ op(i,e) op(i..j,var e); op(e); and nops(e);\par
+PARAMETERS:\par
+ i,j - non-negative integers marking positions of operands\par
+ e - any expression\par
+SYNOPSIS: \par
+- The op function extracts the components of an expression. The nops function returns the number of components of an expression.\par
+- If the first argument is a nonnegative integer i then the result is the i'th operand of e.\par
+- If the first argument is a range i..j then the result is an expression sequence of the i'th to j'th operands of e. If there is only one argument: op(e) = op(1..nops(e),e)\par
+- If e is an integer or a string, nops(e) yields 1 and op(1,e) yields e.\par
+- For some data structures, op 0 is defined as a special case. For subscripts and functions, op 0 is the name of the subscript or function and for series, op 0 is the expansion point of the series.\par
+\par
+\pard\plain \qj \f20 Retenez en particulier que op(i,exp) renvoie le i-i\'8fme op\'8erande de exp et que op(exp) renvoie la s\'8equence des op\'8erandes de f.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet expr:=sin(2*x+y+f(z)):\par
+\bullet expr2:=op(1,expr);\par
+\pard\plain \s3 \f22\fs20 expr2 := 2 x + y + f(z)\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet op(0,expr);\par
+\pard\plain \s3 \f22\fs20 sin\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet op(1,expr2);\par
+\pard\plain \s3 \f22\fs20 2 x\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet op(expr2);\par
+\pard\plain \s3 \f22\fs20 2 x, y, f(z)\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul IV. Typage\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Les types pr\'8ed\'8efinis\par
+\pard\plain \qj \f20 Nous avons rencontr\'8e pr\'8ec\'8edemment la plupart des types usuels de Maple. \par
+* les types simples \par
+\tab - {\b boolean}\par
+\tab - {\b integer} (lui m\'90me subdivis\'8e en {\b odd} et {\b even} d'une part, en {\b posint }et {\b negint }d'autre part)\par
+\tab - {\b fraction}\par
+\tab - {\b rational } (qui englobe \'88 la fois integer et fraction)\par
+\tab - {\b float}\par
+\tab - {\b numeric} (qui englobe \'88 la fois integer, fraction et float)\par
+\tab - {\b string}\par
+* les types compos\'8es\par
+\tab - {\b sequence}\par
+\tab - {\b list}\par
+\tab - {\b set\par
+}\tab - {\b array} (qui englobe un type {\b matrix} pour les array dont les indices commencent \'88 1 et un type {\b vector} pour les matrices \'88 une dimension)\par
+\tab - {\b range} (pour les intevalles d'entiers, not\'8es a..b)\par
+* les types d'expressions alg\'8ebriques\par
+\tab - {\b polynom} (qui englobe un type {\b monomial} pour les mon\'99mes et un type {\b expanded} pour les polyn\'99mes d\'8evelopp\'8es)\par
+\tab - {\b ratpoly} pour une fraction rationnelle\par
+\tab - {\b series} pour des s\'8eries (en fait des d\'8eveloppements limit\'8es)\par
+En fait, la gamme des types connus est beaucoup plus riche. En voici la liste:\par
+\pard\plain \s4\qj\li1120 \f20\fs20 \par
+ * ** + . .. <\par
+ <= <> = RootOf ^ algebraic\par
+ algext algfun algnum algnumext and anything\par
+ array boolean constant cubic equation even\par
+ expanded facint float fraction function indexed\par
+ integer intersect laurent linear list listlist\par
+ logical mathfunc matrix minus monomial name\par
+ negative negint nonneg nonnegint not numeric\par
+ odd operator or plot plot3d point\par
+ polynom posint positive primeint procedure quadratic\par
+ quartic radext radfun radfunext radical radnum\par
+ radnumext range rational ratpoly realcons relation\par
+ scalar series set sqrt square string\par
+ taylor trig type uneval union vector\par
+\par
+\pard\plain \qj \f20 Les appellations sont la plupart du temps suffisamment parlantes. Vous pouvez demander des explications suppl\'8ementaires avec la fonction {\b help(type[}{\i nom_du_type }{\b ])}.\par
+Remarque: \'88 la lumi\'8fre des types ci dessus, on peut constater qu'il y d'une part une hi\'8erarchie de types de type h\'8eritage, que d'autre part le type ne d\'8ecrit pas seulement un pur stockage informatique de l'objet, mais \'8e
+galement un certain nombre de ses propri\'8et\'8es. On est l\'88 en plein dans les principaux concepts de la {\b programmation par objet} (en anglais Object Oriented Programming, ou OOP).\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Le contr\'99le des types\par
+\pard\plain \qj \f20 Il se fait \'88 partir d'un petit nombre de fonctions. La fonction {\b type} permet de tester si une expression est bien d'un type donn\'8e. On en verra la principale utilit\'8e en programmation o\'9d
+ presque toute fonction commencera par un {\b if type(....) then }.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: type - type-checking function\par
+CALLING SEQUENCE:\par
+ type(x, t)\par
+PARAMETERS:\par
+ x - any expression\par
+ t - type name or set of type names\par
+SYNOPSIS: \par
+- The type function is a boolean function which returns true if x is of type t;\par
+ false otherwise.\par
+- In the case where t is specified as a set of type names, the value returned\par
+ is true if x is any of the types in the set; false otherwise.\par
+- Note: If a type name is an operator, it must be back-quoted to prevent a syn-\par
+ tax error. See the examples below.\par
+- For further information, see type[<datatype>] where <datatype> is one of the\par
+ names in the above list.\par
+- A user can make a datatype known to the type function in the following way.\par
+ If the user has defined the procedure `type/mytype` then a call to type of\par
+ the form: type(a, mytype(b, c, ...)); will generate the function call\par
+ `type/mytype`(a, b, c, ...).\par
+- See type[definition] and type[structured] for information on defining and\par
+ using type expressions.\par
+- See type[surface] for information on the distinction between a ``surface\par
+ type'' and a ``nested type''.\par
+\par
+\pard\plain \qj \f20 Le but de la fonction {\b whattype} permet au contraire de r\'8ecup\'8erer directement sous forme de symbole le type d'une expression.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: whattype - query the basic data type of an expression\par
+CALLING SEQUENCE:\par
+ whattype(expr)\par
+PARAMETERS:\par
+ expr - any expression\par
+SYNOPSIS: \par
+- The function whattype returns the data type name of expr, which may be any of the following basic data types:\par
+ \par
+ `+` `*` `^` `=` `<>` `<`\par
+ `<=` `.` `..` `and` `or` `not`\par
+ exprseq float fraction function indexed integer\par
+ list procedure series set string table\par
+ uneval\par
+ \par
+- For a general expression, whattype returns the ``top level'' data type as determined by the order of precedence of the operators.\par
+\par
+\pard\plain \qj \f20 Quant \'88 la fonction {\b hastype }elle permet de tester la pr\'8esence dans une expression de sous-expressions d'un type donn\'8e {\b \par
+}\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: hastype - test for a specified type\par
+CALLING SEQUENCE:\par
+ hastype( expr, t );\par
+PARAMETERS:\par
+ expr - any expression\par
+ t - name of a datatype\par
+SYNOPSIS: \par
+- The boolean function hastype returns true if and only if expr has any subexpressions of the type t.\par
+\par
+\pard\plain \qj \f20 Exemples:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type( a + b, polynom );\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type( a + b, `+` );\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type( a * b, `+` );\par
+\pard\plain \s3 \f22\fs20 false\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type( a and b, `and` );\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type(1+2*sqrt(3),numeric);\par
+\pard\plain \s3 \f22\fs20 false\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type(1+2*sqrt(3),algebraic);\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type(x,name);\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet whattype(a+b);\par
+\pard\plain \s3 \f22\fs20 +\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet whattype(2*sqrt(3));\par
+\pard\plain \s3 \f22\fs20 *\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet whattype(f(x));\par
+\pard\plain \s3 \f22\fs20 function\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet hastype(3+sqrt(2*sin(x)),function);\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet hastype(3+sqrt(2*sin(x)),`*`);\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3. Les types d\'8efinis par l'utilisateur\par
+\pard\plain \qj \f20 Maple permet comme beaucoup de langages de programmations de d\'8efinir ses propres types et de les nommer. Pour d\'8efinir son propre type (par exemple un type truc), il suffit d'assigner la valeur du type \'88 {\b `type/}truc{\b `}
+ (attention aux accents graves).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet `type/truc`:=integer:\line \bullet type(3,truc);\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \qj \f20 Bien entendu cette possibilit\'8e trouve tout son int\'8er\'90t avec la possibilit\'8e de d\'8efinir des types structur\'8es. Un type structur\'8e est toute expression Maple autre qu'une cha\'94ne de caract\'8fre qui peut \'90
+tre interpr\'8et\'8ee comme un type \'88 l'aide de la grammaire suivante les notation habituelles pour une grammaire sont\par
+\tab ::= signifie "est d\'8efini comme"\par
+\tab | signifie "ou"\par
+\tab *\tab signifie "zero, une ou plusieurs occurences de ..."\par
+\pard\plain \s4\qj\li1120 \f20\fs20 \par
+ Syntaxe Correspond \'88\par
+ \par
+ type ::= \{ type* \} alternation; any of the types\par
+ | [ type* ] concatenation; a list of the given types\par
+ | numeric match a numerical constant exactly\par
+ | string a system, procedural, or assigned type\par
+ | type = type an equation of the corresponding types\par
+ | type <> type an inequality of the corresponding types\par
+ | type < type a relation of the corresponding types\par
+ | type <= type a relation of the corresponding types\par
+ | type > type a relation of the corresponding types\par
+ | type >= type a relation of the corresponding types\par
+ | type .. type a range of the corresponding types\par
+ | type and type an and of the corresponding types\par
+ | type or type an or of the corresponding types\par
+ | not type a not of the corresponding type\par
+ | type ^ type a power of the corresponding types\par
+ | type.type a concatenation of the corresponding types\par
+ | 'type' an unevaluated expression of the given type\par
+ | fcntype a function or special type\par
+ | name[type*] an indexed reference of the given types\par
+ \par
+ fcntype ::= set(type) a set of elements of the given type\par
+ | list(type) a list of elements of the given type\par
+ | `+`(type) a sum of terms of the given type\par
+ | `*`(type) a product of factors of the given type\par
+ | identical(expr) an expression identical to expr\par
+ | specfunc(type,foo) the function foo with type arguments\par
+ | anyfunc(type*) any function of the given types\par
+ | foo(type*) type defined by a procedure `type/foo`\par
+ | foo(type*) the function foo of the given types \par
+\pard\plain \qj \f20 \tab Les crochets sont utilis\'8es pour tester une suite fix\'8ee d'arguments. Le type {\b [name,set] }d\'8esigne une liste avec exactement deux arguments, un nom suivi d'un ensemble.\par
+\tab Par contre les accolades sont utilis\'8ees pour une alternative. Le type {\b \{set(name),list(integer)\}} correspond indiff\'8eremment \'88 un ensemble de symboles et \'88 une liste d'entiers.\par
+\tab Le type {\b anything} s'adapte \'88 n'importe quoi, sauf une s\'8equence. Le type {\b identical}(expr) ne s'adapte qu'\'88 une expression identique \'88 expr. Le type {\b anyfunc(t1,\'c9,tn)} s'adapte \'88 toute fonction avec n arguments de types t1,
+\'c9,tn. Le type {\b specfunc(f,t)} s'adapte uniquement \'88 la fonction f appel\'8ee avec des arguments de type t.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet `type/truc`:=\{list(name),set(numeric)\}:\par
+\bullet type(\{3,x\},truc);\par
+\pard\plain \s3 \f22\fs20 false\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type(\{x,y\},truc);\par
+\pard\plain \s3 \f22\fs20 false\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type([x,y],truc);\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet type(\{3,5/3,1.2\},truc);\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet `type/tsin`:=specfunc(anything,sin):\par
+\bullet hastype(3+sqrt(2*sin(x)),tsin);\par
+\pard\plain \s3 \f22\fs20 true\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul V. L'evaluation\par
+\pard\plain \qj \f20 \tab Nous avons d\'8ej\'88 vu que le mode normal de travail de Maple est celui de l'\'8evaluation au niveau le plus profond. Ceci signifie que l'expression est \'8evalu\'8ee jusqu'\'88 ce qu'une \'8evaluation suppl\'8e
+mentaire n'induise pas de changement dans l'expression. Bien entendu cette expression est en g\'8en\'8eral effectu\'8ee \'88 l'aide de l'arbre de l'expression, c'est \'88 dire qu'en premier lieu chacune des sous expressions est \'8evalu\'8ee (normalem
+ent de la gauche vers la droite) et qu'ensuite l'expression totale est \'8evalu\'8ee. Un certain nombre d'exceptions existent \'88 cette \'8evaluation au niveau le plus profond:\par
+- les termes de gauche des affectations ne sont pas \'8evalu\'8es (par contre les termes de droite le sont)\par
+- les expressions entre apostrophes ne sont pas \'8evalu\'8ees (ou plut\'99t l'\'8evaluation d'une telle expression consiste \'88 retirer un niveau d'apostrophes); on a vu comment cette possibilit\'8e permettait une affectation diff\'8er\'8e
+e au lieu d'une affectation imm\'8ediate (ou encore une affectation par r\'8ef\'8erence au lieu d'une affectation par valeur); elle \'8evite aussi des \'8evaluations intempestives de variables d'indice (emp\'90cher par exemple une \'8evaluation de {\b i}
+ dans l'expression {\b seq(i*i,i=1..10)} dans le cas o\'9d la variable {\b i} aurait \'8et\'8e pr\'8ealablement affect\'8ee, on a plut\'99t int\'8er\'90t \'88 utiliser {\b seq(i*i,'i'=1..10)}); elle peut \'8egalement emp\'90cher des \'8e
+valuations intempestives dans la d\'8efinition de types structur\'8es (le type {\b diff(name,name)} \'8etant par exemple \'8evalu\'8e par Maple suivant les r\'8fgles habituelles de d\'8erivation pour donner 1, il faut pour d\'8e
+finir un tel type le mettre entre apostrophes pour emp\'90cher son \'8evaluation).\par
+- les tables et les proc\'8edures sont \'8evalu\'8ees non pas en leur valeur au niveau le plus profond, mais en le dernier nom rencontr\'8e dans la cha\'94ne d'\'8evaluation.\par
+\tab Cette derni\'8fre r\'8fgle a un certain nombre de cons\'8equences, dont la plus importante concerne les affectations. Si A est une table, une affectation du type B:=A n'affecte pas \'88 la variable B la valeur de A (c'est \'88
+ dire ne recopie pas dans B la table contenu de A), mais au contraire affecte \'88 B le nom A; ceci signifie qu'apr\'8fs l'affectation, les variables A et B d\'8esignent la m\'90me table (et non pas des tables \'8e
+gales). En particulier, toute modification de B se r\'8epercute automatiquement sur A et inversement. On peut comparer ce ph\'8enom\'8fne avec le syst\'8fme des tableaux en C o\'9d le nom du tableau d\'8esigne non pas le tableau lui m\'90
+me, mais un pointeur sur ce tableau. Si l'on veut \'8echapper \'88 ce syt\'8fme, il faut affecter \'88 B une copie de A en \'8ecrivant B:=copy(A).\par
+\tab De m\'90me, si l'on veut afficher le contenu d'une table A, il ne suffit pas d'effectuer une \'8evaluation de A de la mani\'8fre habituelle car cette \'8evalaution donnera simplement le dernier nom recontr\'8e au cours de la cha\'94ne d'\'8e
+valuation (la plupart du temps A lui m\'90me, sauf si A provient d'une affectation). Il faut au contraire forcer une \'8evaluation compl\'90te \'88 l'aide de la fonction {\b eval}. Celle ci a d'autres utilisations (forcer un niveau donn\'8e d'\'8e
+valuation, forcer une \'8evaluation compl\'90te apr\'8fs une substitution, forcer une \'8evaluation compl\'90te des param\'8ftres ou des variables locales d'une proc\'8edure qui ne sont normalement \'8evalu\'8es qu'\'88 un seul niveau).\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: eval - explicit evaluation\par
+CALLING SEQUENCE:\par
+ eval(x) \par
+ eval(x, n)\par
+PARAMETERS:\par
+ x - an expression\par
+ n - an integer\par
+SYNOPSIS: \par
+
+- The normal evaluation rules in Maple are full evaluation for global variables, and one-level evaluation for local variables and parameters. Sometimes the user requires full evaluation or one-level evaluation explicitly. The eval function is used for thi
+s purpose.\par
+- The call eval(x) means fully evaluate the expression x.\par
+- The call eval(x, 1) means evaluate the expression x one level. More generally, eval(x, n) yields n-level evaluation.\par
+
+- If x := y and y := 1 in a Maple session, what does the variable x evaluate to? In an interactive session where x and y are global variables, x would evaluate to 1. In this case, we say that x is ``fully evaluated''. For one-level evaluation, we would
+use the command eval(x, 1) which would in this case yield y. \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet a:=table([(x)=1,(1,2)=sin,(2,4)=Pi]):\par
+\bullet a;\par
+\pard\plain \s3 \f22\fs20 a\par
+\pard\plain \qj \f20 L'\'8evaluation a simplement renvoy\'8e le nom de a qui est le dernier recontr\'8e.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet eval(a);\par
+\pard\plain \s3 \f22\fs20 table([\par
+ (1, 2) = sin\par
+ (2, 4) = Pi\par
+ x = 1\par
+ ])\par
+\pard\plain \qj \f20 L'\'8evaluation compl\'90te a renvoy\'8e le contenu de la table.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet b:=a;\par
+\pard\plain \s3 \f22\fs20 b := a\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet b;\par
+\pard\plain \s3 \f22\fs20 a\par
+\pard\plain \qj \f20 L'\'8evaluation a renvoy\'8e le dernier nom rencontr\'8e, c'est \'88 dire {\b a}. On va maintenant modifier b:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet b[1,2]:=3:\line \bullet eval(a);\par
+\pard\plain \s3 \f22\fs20 table([\par
+ (1, 2) = 3\par
+ (2, 4) = Pi\par
+ x = 1\par
+ ])\par
+\pard\plain \qj \f20 La table point\'8ee par {\b a } a \'8et\'8e modifi\'8ee par la m\'90me occasion. Les noms {\b a} et {\b b} d\'8esignent bien la m\'90me table. Par contre, on va cr\'8eer une nouvelle table {\b c}
+ dans laquelle on recopiera la valeur de la table {\b a}. Les noms {\b c} et {\b a} d\'8esigneront donc deux tables distinctes (bien qu'initialement \'8egales).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet c:=copy(a);\par
+\pard\plain \s3 \f22\fs20 c := table([\par
+ (1, 2) = 3\par
+ (2, 4) = Pi\par
+ x = 1\par
+ ])\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet c[y]:=E:\par
+\bullet eval(a);\par
+\pard\plain \s3 \f22\fs20 table([\-\par
+ (1, 2) = 3\par
+ (2, 4) = Pi\par
+ x = 1\par
+ ])\par
+\pard\plain \qj \f20 La table {\b a} n'a pas \'8et\'8e modifi\'8ee lors de la modification de {\b c}.\par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/chap5.rtf b/support/w2latex/EXEMPLES/chap5.rtf
new file mode 100644
index 0000000000..cb9c3564ea
--- /dev/null
+++ b/support/w2latex/EXEMPLES/chap5.rtf
@@ -0,0 +1,466 @@
+{\rtf1\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil Los Angeles;}{\f13\fnil Zapf Dingbats;}{\f14\fnil Bookman;}
+{\f16\fnil Palatino;}{\f18\fnil Zapf Chancery;}{\f20\froman Times;}{\f21\fswiss Helvetica;}{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f24\fnil Mobile;}{\f33\fnil Avant Garde;}{\f34\fnil New Century Schlbk;}{\f101\fnil Wartburg;}{\f118\fnil Warwick S;}
+{\f128\fnil Moscow;}{\f129\fnil Russian;}{\f135\fnil MATH-BES;}{\f140\fnil Lovell;}{\f149\fnil Detroit;}{\f171\fnil XB Futura ExtraBold;}{\f176\fnil H Futura Heavy;}{\f201\fnil ¡Math;}{\f512\fnil Alexandrie;}{\f2500\fnil Konstanz;}}
+{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\qj\tqc\tx4320\tqr\tx8640 \f20
+\sbasedon0\snext243 footer;}{\s245\qj \f20\fs18\up6 \sbasedon0\snext0 footnote reference;}{\s246\qj \f20\fs20 \sbasedon0\snext246 footnote text;}{\s247\qj\li720 \i\f20\fs20 \sbasedon0\snext0 heading 9;}{\s248\qj\li720 \i\f20\fs20 \sbasedon0\snext0
+heading 8;}{\s249\qj\li720 \i\f20\fs20 \sbasedon0\snext0 heading 7;}{\s250\qj\li720 \f20\fs20\ul \sbasedon0\snext0 heading 6;}{\s251\qj\li720 \b\f20\fs20 \sbasedon0\snext0 heading 5;}{\s252\qj\li354\sb40\sa40 \f20\ul \sbasedon0\snext0 heading 4;}{
+\s253\qj\li354\sb120\sa80 \b\f20 \sbasedon0\snext0 heading 3;}{\s254\qj\sb200\sa140 \b\f20\fs36\ul \sbasedon0\snext0 heading 2;}{\s255\qc\sb240 \b\f20\fs48 \sbasedon0\snext0 heading 1;}{\qj \f20 \sbasedon222\snext0 Normal;}{\s2\sb120\keep\keepn \b\f22
+\sbasedon0\snext2 input;}{\s3 \f22\fs20 \sbasedon0\snext3 output;}{\s4\qj\li1120 \f20\fs20 \sbasedon0\snext4 commentaire;}}{\info{\title chap5.doc}{\author EBM}}
+\paperw11880\paperh16800\margl1701\margr1701\margt1417\margb1417\deftab709\widowctrl\ftnbj\pgnstart51 {\*\nextfile Macintosh HD:Seance 5 (Maple)}\sectd \sbknone\linemod0\linex0\headery1077\footery1077\cols1\colsx709\endnhere {\footer \pard\plain
+\s243\qj\tqc\tx4320\tqr\tx8640 \f20 \par
+\pard \s243\qc\tqc\tx4320\tqr\tx8640 {\fs20 Calcul formel avec Maple page }{\fs20 \chpgn }\par
+\pard \s243\qj\tqc\tx4320\tqr\tx8640 \par
+}\pard\plain \s255\qc\sb240 \b\f20\fs48 Programmer Maple\par
+\pard\plain \qj \f20 {\fs14 \par
+}\pard \qj Avertissement:\par
+\pard \qj \bullet Maple est un langage de programmation de type imp\'8eratif proc\'8edural. Il inclut aussi un certain nombre de fonctionnalit\'8es de la programmation fonctionnelle.\par
+\pard \qj \bullet Maple n'est pas fortement typ\'8e comme Pascal ou C, aucune d\'8eclaration n'est n\'8ecessaire. Mais les types existent. Le contr\'99le de type se fait \'88 l'ex\'8ecution et doit \'90tre programm\'8e explicitement.\par
+\bullet Le langage de Maple est interpr\'8et\'8e, si bien que Maple n'est pas adapt\'8e \'88 de gros programmes num\'8eriques. Les temps de calcul sont consid\'8erablement sup\'8erieurs \'88 ce qu'ils seraient en C ou en Pascal.\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul I. Les structures de contr\'99le\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Structures conditionnelles\par
+\pard\plain \qj \f20 La structure conditionnelle en Maple a la syntaxe suivante (les expressions entre crochets sont facultatives).\par
+\pard \qj \tab {\b if} {\i expr_1} {\b then} {\i suite_d'instructions\par
+\tab \tab }[ {\b elif} {\i expr_i} {\b then} {\i suite_d'instructions }] ( 0, 1 ou plusieurs fois)\par
+\tab \tab [ {\b else} {\i suite_d'instructions }]\par
+\tab {\b fi\par
+}\pard \qj Les expressions {\i expr_1} et {\i expr_i} (si les parties {\b elif} existent) sont \'8evalu\'8ees tout \'88 tour en tant qu'expressions bool\'8eennes. Si l'une d'entre elles s'\'8evalue en {\b true}, alors la {\i suite_d'expressions}
+ correspondante est ex\'8ecut\'8ee et l'expression conditionnelle renvoie {\b NULL} (c'est \'88 dire rien). Si aucune d'entre elles ne s'\'8evalue en {\b true}, la {\i suite_d'instructions} qui suit le {\b else} est ex\'8ecut\'8e
+e si elle existe. Dans les autres cas, aucune suite d'instructions n'est ex\'8ecut\'8ee. Dans tous les cas, l'expression conditionnelle renvoie {\b NULL}. On voit donc que le mot cl\'8e {\b elif} correspond en gros \'88 une contraction de {\b else if}
+ (mais un tel {\b else if} n\'8ecessiterait un {\b fi} pour le terminer contrairement \'88 {\b elif}).\par
+\pard \qj Exemple d'expression conditionnelle:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 if x>0 then 1 elif x=0 then 0 else 1 fi\par
+\pard\plain \qj \f20 {\fs14 \par
+}\pard \qj {\i Remarque} : le fait que la structure conditionnelle renvoie NULL fait qu'une structure conditionnelle n'est pas une expression alg\'8ebrique et ne peut donc \'90tre utilis\'8ee pour une affectation. C'est ainsi qu'on ne peut pas \'8ecrire
+\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 y:=if x>0 then 1 elif x=0 then 0 else 1 fi\par
+\pard\plain \qj \f20 {\fs14 \par
+}\pard \qj (ce qui est bien dommage). Par contre rien n'emp\'90che une ou plusieurs instructions du corps de la structure de d\'8eposer des expressions sur la pile d'\'8evaluation qui pourront \'90tre r\'8ecup\'8er\'8e
+s par les habituels ", "" et """. On peut par exemple \'8ecrire\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 if x>0 then 1 elif x=0 then 0 else 1 fi;\par
+y:=";\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Structure r\'8ep\'8etitive\par
+\pard\plain \qj \f20 Maple poss\'8fde une unique structure r\'8ep\'8etitive, mais particuli\'8frement riche puisqu'elle regroupe \'88 la fois la structure {\b for} et la structure {\b while} de Pascal. Elle se pr\'8esente sous la forme (l\'88
+ encore les parties entre crochets sont facultatives)\par
+\pard \qj \tab [ {\b for} {\i nom }] [ {\b from} {\i debut} ] [{\b to} {\i fin} ] [ {\b by} {\i pas} ] [ {\b while} {\i condition} ]\par
+\tab \tab {\b do }{\i suite_d'instructions} {\b od\par
+}o\'9d\par
+\tab - {\i nom} doit d\'8esigner un nom (variable non affect\'8ee)\par
+\tab - {\i debut, fin }et {\i pas} doivent s'\'8evaluer en des nombres entiers ou r\'8eels\par
+\tab - {\i condition} est une expression bool\'8eenne\par
+\pard \qj Dans le cas o\'9d l'une des sous-structures est manquante, Maple utilise pour cette sous structure une valeur par d\'8efaut\par
+\pard \qj \tab - {\i nom} d\'8esigne par d\'8efaut une variable interne \'88 Maple\par
+\tab - {\i debut} vaut par d\'8efaut 1\par
+\tab - {\i fin} vaut par d\'8efaut l'infini\par
+\tab - {\i pas} vaut par d\'8efaut 1\par
+\tab - {\i condition }vaut par d\'8efaut {\b true}.\par
+\pard \qj La boucle est ex\'8ecut\'8ee tant que {\i name \'b2 fin }{\ul et que} {\i condition} s'\'8evalue en {\b true}, en donnant initialement \'88 {\i name} la valeur {\i debut} puis en l'incr\'8ementant de {\i pas} \'88 chaque nouvelle ex\'8e
+cution de la boucle. Le test intervient toujours avant ex\'8ecution du corps de la boucle (celui ci peut donc ne jamais \'90tre effectu\'8e si {\i debut > fin} ou si {\i condition} ne s'\'8evalue pas initialement en {\b true}). L'expression it\'8e
+rative renvoie toujours {\b NULL }(cf le paragraphe sur la s\'8emantique du langage), mais les \'8evaluations qui interviennent au cours de l'ex\'8ecution de la boucle contribuent \'88 remplir la pile d'\'8e
+valuation. Les expressions ainsi obtenues peuvent \'90tre retrouv\'8ees pour les trois derni\'8fres gr\'89ce aux ","" et """ habituels.\par
+\pard \qj Exemple: recherche du plus petit nombre premier sup\'8erieur \'88 10{\fs20\up6 8}\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 for i from 10^8+1 by 2 while not isprime(i) do od;print(i);\par
+\pard\plain \qj \f20 L'exemple pr\'8ec\'8edent montre d'ailleurs que la valeur de l'indice de boucle est accessible apr\'8fs la fin de l'ex\'8ecution de la boucle. Comme en C, Maple dispose d'instructions permettant de modifier l'ex\'8ecution de la boucle
+\par
+\pard \qj {\b \tab break} sort imm\'8ediatement de la boucle\par
+{\b \tab continue} passe imm\'8ediatement \'88 l'it\'8eration suivante (en commen\'8dant par le test).\par
+\pard \qj {\fs14 \par
+}\pard \qj Maple dispose d'une variante de {\b for} qui permet d'utiliser successivement les diff\'8erents op\'8erandes d'une expression sous la forme\par
+\pard \qc {\b for} {\i name} {\b in} {\i expr} {\b while} {\i condition} {\b do} {\i suite_d'instructions} {\b od\par
+}\pard \qj qui est \'8equivalente \'88\par
+{\b for }i {\b from} 1 {\b to} {\b nops(}{\i expr }{\b ) while }{\i condition} {\b do \par
+\tab }{\i name }:={\b op(}i,{\i expr} {\b )}; {\i suite_d'instructions; }{\b od;\par
+}\pard \qj en se souvenant que la fonction {\b nops} renvoie le nombre d'op\'8erandes d'une expression et que {\b op(i,\'c9) }renvoie son i-i\'8fme op\'8erande. Cette variante est particuli\'8frement utile pour utiliser tour \'88 tour les diff\'8erents
+\'8el\'8ements d'une liste ou d'une s\'8equence, mais ce n'est pas son seul usage.\par
+\pard \qj Exemple: impression des carr\'8es d'une liste d'expressions\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 for x in maListe do print(x^2);\par
+\pard\plain \qj \f20 {\fs14 \par
+}\pard \qj {\i Remarque} : au moment o\'9d vous \'90tes tent\'8es d'utiliser une structure r\'8ep\'8etitive en Maple, n'oubliez pas que Maple dispose \'8egalement de fonctions r\'8ep\'8e
+titives qui sont souvent plus commodes et plus efficaces, les principales \'8etant {\b seq}, {\b sum}, {\b prod} et {\b $.\par
+}\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul II. Les proc\'8edures\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Les objets proc\'8edures\par
+\pard\plain \qj \f20 Contrairement \'88 d'autres langages de programmation comme Pascal (mais comme en C), les proc\'8edures sont en Maple des
+ objets comme les autres et elles peuvent donc faire l'objet d'affectations. L'objet procedure a la syntaxe suivante (les parties entre crochets sont facultatives comme d'habitude)\par
+\pard \qj {\fs14 \par
+}\pard \qj \tab {\b proc(}{\i sequence_de_parametres} {\b )\par
+\tab \tab }[ {\b local} {\i sequence_de_noms} {\b ; }]\par
+\tab \tab [ {\b options} {\i sequence _de_noms }{\b ; }]\par
+\tab \tab {\i suite_d'instructions }\par
+\tab {\b end\par
+\par
+}\pard \qj Les parametres forment une sequence (\'8eventuellement vide), le corps de la proc\'8edure est une suite d'instructions s\'8epar\'8es par des points-virgules. Les noms des variables locales sont list\'8es apr\'8fs le mot cl\'8e {\b local}
+. Ils forment aussi une s\'8equence, c'est \'88 dire qu'ils sont s\'8epar\'8es par des virgules. Comme les noms Maple, ces variables locales ne sont pas typ\'8ees. Nous reviendrons plus tard sur les options et leur utilit\'8e.\par
+\pard \qj \tab Les proc\'8edures Maple sont plus des fonctions au sens de C (qui peuvent \'8eventuellement renvoyer NULL) que des proc\'8edures au sens de PASCAL. Une proc\'8edure Maple renvoie en fait la derni\'8fre valeur d\'8epos\'8ee sur la pile d'
+\'8evaluation interne de la proc\'8edure (cf le paragraphe sur la s\'8emantique du langage) au cours de l'ex\'8ecution de la proc\'8edure, \'88 moins que l'ex\'8ecutions de la proc\'8edure n'ait exig\'8e explicitement de retourner une expression \'88
+ l'aide de la fonction {\b RETURN}.\par
+\pard \qj Exemple : une proc\'8edure simple qui, \'8etant donn\'8es x et y, calcule x^2+y^2\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 proc(x,y) x^2+y^2 end\par
+\pard\plain \qj \f20 {\b\f22\fs14 \par
+}\pard \qj L'ex\'8ecution de la proc\'8edure entrainera la d\'8epose sur la pile d'\'8evaluation de la proc\'8edure de l'expression x^2+y^2, qui sera la valeur retourn\'8ee par la proc\'8e
+dure (qui est donc une fonction au sens habituel des langages de programmation). Ainsi vous pouvez \'8ecrire\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 z:=proc(x,y) x^2+y^2 end (2,3);\par
+\pard \s2\sb120\keep\keepn {\fs14 \par
+}\pard\plain \qj \f20 et \'88 la variable z sera affect\'8ee la valeur 2{\fs20\up6 2}+3{\fs20\up6 2}, qui est la valeur d\'8epos\'8ee sur le sommet de la pile d'\'8evaluation au cours de l'ex\'8ecution de la proc\'8edure.\par
+\tab Par contre une ex\'8ecution de l'instruction {\b RETURN(}{\i expr} {\b ) }entra\'94ne une interruption imm\'8ediate de la proc\'8edure qui renvoie alors comme valeur {\ul l'\'8evaluation} de l'expression {\i expr}. \par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: RETURN - explicit return from a procedure\par
+CALLING SEQUENCE:\par
+ RETURN(expr_1, expr_2, ...)\par
+ PARAMETERS:\par
+ expr_1, ... - expression sequence (possibly null)\par
+ SYNOPSIS: \par
+- A call to the RETURN function causes an immediate return to the point where the current procedure was invoked.\par
+- If return is via the RETURN function then the value of the procedure invocation is the expression sequence specified in the call to RETURN.\par
+\par
+\pard\plain \qj \f20 Exemple de retour explicite: une fonction qui teste la pr\'8esence d'un \'8el\'8ement dans une liste peut avoir la forme suivante\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 MEMBER:= proc(x,L) local v;\line \tab for v in L do \line \tab \tab if v=x then RETURN(true) fi\line \tab od;\line \tab false\line end;\par
+\pard\plain \qj \f20 \par
+Si l'\'8el\'8ement x est dans la liste L, au moment o\'9d v=x deviendra vrai, l'ex\'8ecution de l'instruction RETURN(true) entra\'94nera l'interruption de la proc\'8e
+dure qui renverra la valeur true. Si par contre x n'est pas dans la liste, la boucle s'ach\'8fvera normalement puis l'ex\'8ecution de la derni\'8fre ligne de la proc\'8edure entra\'94nera la d\'8epose de false sur le sommet de la pile d'\'8e
+valuation, et ce sera donc cette valeur qui sera retourn\'8ee.\par
+{\b Attention}: vous devez veiller \'88 ne pas renvoyer comme r\'8esultat un objet local \'88 la proc\'8edure. C'est en principe impossible puisque vous pouvez retourner soit le sommet de la pile d'\'8evaluation (qui est \'8evalu\'8e et qui est donc en g
+\'8en\'8eral une valeur et non un objet), soit la valeur de l'objet pass\'8e \'88 RETURN. En fait la situation est un peu plus compliqu\'8ee \'88 cause des r\'8fgles d'\'8evaluation propres \'88 Maple concernant l'\'8e
+valuation standard des tables (donc par exemple des vecteurs ou matrices) et des proc\'8edures. En effet l'\'8evaluation standard de ces objets se fait en le dernier nom rencontr\'8e. Pour peu que ce nom soit local \'88 la proc\'8e
+dure, on risque de gros ennuis. Un moyen simple de forcer un retour de la valeur de l'objet (et nom de son nom) est de forcer une \'8evaluation compl\'90te \'88 l'aide de la fonction {\b eval}. Autrement dit, si {\i objet }
+est l'objet que vous voulez renvoyer comme valeur de la proc\'8edure et qu'il est de type {\i table} ou {\i proc} , il faut d\'8eposer sur le sommet de la pile non pas {\i objet} , mais {\b eval}({\i objet} ) ou utiliser un retour explicite {\b
+RETURN}({\b eval}({\i objet} )).\par
+\tab Une possibilit\'8e de sortie est donn\'8ee par l'instruction ERROR({\i message} ), qui entra\'94ne non seulement une interruption de la proc\'8edure, mais \'8egalement de toute l'ex\'8ecution normale de Maple et l'\'8emission d'un message d'erreur {
+\i message} (une cha\'94ne de caract\'8fres entre ` (backquote ou accent grave). Si ce message n'est pas intercept\'8e par une instruction {\b traperror}, il entra\'94ne une interruption de l'ex\'8ecution de Maple.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: ERROR - error return from a procedure\par
+CALLING SEQUENCE:\par
+ ERROR(expr_1, expr_2, ...)\par
+PARAMETERS:\par
+ expr_1, ... - expression sequence (possibly null)\par
+SYNOPSIS: \par
+- A call to the ERROR function causes an immediate return to the point where the current procedure was invoked.\par
+
+- If the procedure was not invoked within the context of traperror then control returns to the top level of the Maple system and the following message is printed: ``Error, <in procname>'' followed by the evaluated expression sequence specified in the cal
+l to ERROR. (Here, procname will be the name with which the procedure was invoked).\par
+
+- If the procedure was invoked within the context of traperror then the value of the global name lasterror is assigned the evaluated expression sequence specified in the call to ERROR. In this case, the value of the traperror call is also this same expre
+ssion sequence.\par
+\pard\plain \qj \f20 \par
+Bien entendu, si, comme c'est le cas le plus ouvent, vous voulez utiliser plusieurs fois une proc\'8edure, vous commencerez par affecter l'objet proc\'8edure \'88 une variable Maple. C'est ainsi que vous pourrez \'8ecrire\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 sommeCarres:=proc(x,y) x^2+y^2 end;\par
+\pard\plain \qj \f20 \par
+et que vous diposerez ainsi d'une nouvelle fonction Maple que vous pourrez utiliser \'88 votre gr\'8e comme toute autre fonction.\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 z:=sommeCarres(2,3);\par
+P:=sommeCarres(sin(u),cos(u));\par
+xyz:=sommeCarres((1+x+y)^2,x*y);\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Param\'8ftres et variables locales\par
+\pard\plain \qj \f20 Une erreur commune en Maple est de traiter les param\'8ftres des proc\'8edures comme des variables locales comme on peut le faire en Pascal ou en C. Ce n'est pas du tout le cas: ces param\'8f
+tres ne sont pas des variables locales. En fait ce ne sont pas des variables du tout mais uniquement des containers destin\'8es \'88 recevoir les valeurs des param\'8ftres qui seront pass\'8es \'88 la proc\'8edure. \par
+\tab Lors de l'appel d'une proc\'8edure f qui d\'8epend des param\'8ftres x1,\'c9,xn, avec des param\'8ftres effectifs p1,\'c9,pn (c'est \'88 dire lors de l'ex\'8ecution de {\b f(p1,\'c9,pn)} o\'9d f est d\'8efinie par {\b f:=proc(x1,\'c9,xn) \'c9
+ end}), Maple commence par \'8evaluer tous les param\'8ftres p1,\'c9,pn, puis il prend l'objet proc\'8edure f et dans cet objet, il commence par remplacer toutes les occurrences de x1,\'c9,xn par les valeurs de p1,\'c9
+,pn. C'est seulement ensuite qu'il ex\'8ecute la suite d'instructions. On voit donc que lors de l'ex\'8ecution du corps de la proc\'8edure, les "variables" x1,\'c9,xn ont disparu.\par
+Exemple d'une proc\'8edure erron\'8ee: \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 f:=proc(x) x:=x-1; RETURN(x^2) end\par
+\pard\plain \qj \f20 (le RETURN n'est pas n\'8ecessaire, il est l\'88 pour la clart\'8e). \par
+\tab Lors de l'ex\'8ecution de {\b t:=3; f(t)}, Maple commence par \'8evaluer le param\'8ftre effectif t (valeur 3), puis il prend l'objet f et substitue tout au long de f la valeur 3 au param\'8ftre x. Le corps de la proc\'8edure devient alors {\b
+3:=3-1; RETURN(3^2)} et comme la premi\'8fre affectation n'a pas de sens, son ex\'8ecution provoquera une erreur.\par
+\tab Si l'on souhaite donc utiliser, comme on le fait couramment en Pascal ou en C, des param\'8ftres comme variables locales, il faut donc commencer par recopier ces param\'8ftres dans des variables locales. La proc\'8edure pr\'8ec\'8e
+dente deviendrait (b\'90tement)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 f:=proc(x) local xloc;\line \tab xloc:=x; xloc:=xloc-1; RETURN(xloc^2) \line end\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3. Nombre de param\'8ftres\par
+\pard\plain \qj \f20 Toute proc\'8edure Maple peut en fait recevoir un nombre variable de param\'8ftres, c'est \'88 dire qu'aucune v\'8erification n'est faite au moment de l'ex\'8ecution d'une proc\'8edure que le nombre de param\'8ftres pass\'8es \'88
+ la proc\'8edure est le m\'90me que celui d\'8eclar\'8e lors de la d\'8efinition de la proc\'8edure. Simplement, si on d\'8eclare f:=proc(x1,\'c9,xn) \'c9 end et si on appelle f(y1,\'c9
+,yp), le processus de substitution de xi par la valeur de yi va se poursuivre de la gauche vers la droite jusqu'\'88 \'8epuisement de l'une des deux s\'8equences, et il va alors s'interrompre. Ensuite a lieu l'ex\'8ecution du corps de la proc\'8e
+dure. Si n et p sont diff\'8erents, deux cas peuvent alors se produire:\par
+- si le nombre p de param\'8ftres effectifs est inf\'8erieur au nombre n de param\'8ftres d\'8eclar\'8es, tout se passera bien si lors de l'ex\'8ecution du corps de la proc\'8edure aucun des param\'8ftres formels xi surnum\'8eraire n'est utilis\'8e
+; sinon on aura une erreur \'88 l'ex\'8ecution\par
+- si le nombre p de param\'8ftres effectifs est sup\'8erieur au nombre n de param\'8ftres d\'8eclar\'8es, il n'y aura pas d'erreur, mais les param\'8ftres yi surnum\'8eraires ne seront pas accessibles \'88 travers les param\'8ftres formels xi.\par
+\tab Bien entendu, cette derni\'8fre possibilit\'8e serait sans int\'8er\'90t si la proc\'8edure n'avait pas un autre moyen de r\'8ecup\'8erer les param\'8ftres effectifs yi surnum\'8eraires. Or ce moyen existe \'88
+ l'aide de deux fonctions Maple. La premi\'8fre {\b nargs} renvoie dans une proc\'8edure le nombre de param\'8ftres effectifs lors de l'appel de la proc\'8edure, la seconde {\b args} renvoie la s\'8equence des param\'8ftres effectifs transmis \'88
+ la proc\'8edure. C'est ainsi que lors d'un appel f(y1,y2,y3,y4), au cours de l'ex\'8ecution du corps de la proc\'8edure, nargs renverra 4 et args[i] renverra la valeur de yi.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 HELP FOR: args --- the sequence of actual arguments passed to a procedure\par
+HELP FOR: nargs --- the number of arguments passed to a procedure\par
+ CALLING SEQUENCE:\par
+ args or args[i] or args[i..j] and nargs\par
+SYNOPSIS: \par
+- Within a procedure, the special name args has as its value the expression sequence of actual arguments with which the procedure was called.\par
+ - Using the selection operation on this expression sequence, it follows that args[i] is the i'th actual argument, and args[i..j] is the sequence of the i'th through j'th arguments.\par
+- Within a procedure, the special name nargs has as its value the number of elements in the expression sequence args.\par
+\pard\plain \qj \f20 Exemple: une proc\'8edure de calcul du plus grand \'8el\'8ement parmi un nombre quelconque pourrait \'90tre\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 MAX:= proc()\line local r,i;\line r := args[1];\line for i from 2 to nargs do \line \tab \tab \tab if r < args[i] then r := args[i] fi \line \tab \tab od;\line r\line
+ end \par
+\pard\plain \qj \f20 \par
+Cette proc\'8edure a 0 param\'8ftres formels mais peut calculer le maximum de n'importe quel nombre de param\'8ftres effectifs.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 4. Le passage des param\'8ftres\par
+\pard\plain \qj \f20 Comme on l'a vu, la passage des param\'8ftres est toujours effectu\'8e par valeur (comme c'est toujours le cas en C, et comme c'est le cas par d\'8efaut en Pascal). Autrement dit les param\'8ftres effectifs sont d'abord \'8evalu\'8e
+s, et c'est ensuite leur valeur qui est utilis\'8ee par la proc\'8edure. Cependant, rappelons nous que nous travaillons en calcul formel et que donc le r\'8esultat d'une \'8evaluation peut \'90tre lui m\'90me une variable (c'est \'88
+ dire un nom), qui est donc susceptible de recevoir une affectation au cours de l'ex\'8ecution de la proc\'8edure, et on obtient un analogue du passage par variable de Pascal (ou du passage par r\'8ef\'8erence de C++). C'est ainsi qu'il est tout \'88
+ fait possible d'\'8ecrire une proc\'8edure\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 miseAUn:=proc(x) x:=1 end\par
+\par
+\pard\plain \qj \f20 Tout se passera bien tant que l'on passera \'88 la proc\'8edure un param\'8ftre effectif dont l'\'8evaluation est une lvalue (par exemple une variable non affect\'8ee). Par contre, on aura une erreur d'ex\'8e
+cution si on fait des appels \'88 {\b miseAUn(2)} ou \'88 {\b miseAUn(y+3)}. Un bon moyen de garantir la s\'8ecurit\'8e d'un passage par r\'8ef\'8erence est de bloquer l'\'8evaluation de la variable que l'on passe comme param\'8f
+tre en la mettant entre apostrophes (l'\'8evaluation d'une expression entre apostrophes consiste \'88 enlever un niveau d'apostrophes) ou de provoquer une \'8evaluation en un nom \'88 l'aide de la fonction {\b evaln} (eval to a na
+me). C'est ainsi que vous ne devriez jamais faire {\b MiseAUn(t)} mais plut\'99t {\b MiseAUn('t')} ou {\b MiseAUn(evaln(t)). }\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: evaln - evaluate to a name\par
+CALLING SEQUENCE:\par
+ evaln(expr)\par
+PARAMETERS:\par
+ expr - an expression\par
+SYNOPSIS: \par
+- The evaln function is used to ``evaluate to a name'' or, more generally, to form an assignable object. The name (assignable object) will not itself be evaluated.\par
+- A typical example of its use would be divide(a,b,evaln(t[i])) where i is the index of a for loop.\par
+- If the expression is a simple name (i.e., a string) then the same effect can be achieved by using single quotes on the name.\par
+- Evaln can be used on names, subscripts, function calls, and concatenations.\par
+\par
+\pard\plain \qj \f20 Attention: les r\'8fgles de substitution d\'8ecrites dans un paragraphe pr\'8ec\'8edent font qu'il est tout \'88 fait pr\'8ef\'8erable qu'un param\'8ftre pass\'8e par r\'8ef\'8erence (ou plut\'99t par nom) ne re\'8doive qu'une {\ul
+unique} affectation au cours de {\ul l'ex\'8ecution} du corps de la proc\'8edure. N'hesitez donc pas \'88 utiliser des variables locales tout au long de la proc\'8edure et n'affectez les param\'8ftres pass\'8es par nom que juste avant le retour de la proc
+\'8edure.\par
+\tab {\i Remarque: }\'88 titre personnel, l'auteur de ces lignes recommande de ne pas faire usage de la possibilit\'8e de renvoyer des r\'8esultats \'88 travers des param\'8ftres pass\'8e
+s par nom et au contraire de faire le plus possible usage d'un style de programmation fonctionnel. Alors qu'en Pascal le passage de variable par r\'8ef\'8erence s'impose \'88 cause du type tr\'8fs limit\'8e
+ des types de retour possible pour une fonction et qu'en C il s'impose par suite de l'impossibilit\'8e pratique de retourner plusieurs r\'8esultats \'88 la fois, en Maple ce renvoi de r\'8esultats \'88 travers des param\'8f
+tres est presque toujours inutile puisqu'une fonction Maple peut renvoyer plusieurs r\'8esultats \'88 la fois par l'interm\'8ediaire d'une s\'8equence de r\'8esultats. Le seul cas o\'9d il peut sembler utile d'utiliser un passage de param\'8f
+tre par nom est celui de fonctions math\'8ematiques qui calculent deux ou plusieurs objets mais n'en renvoient qu'un seul, l'autre \'8etant le plus souvent sans int\'8er\'90
+t. C'est ainsi que dans une division euclidienne, le reste est le plus souvent l'objet int\'8eressant mais qu'on est amen\'8e au passage \'88 calculer le quotient. Il peut \'90tre int\'8eressant dans ce cas de r\'8ecup\'8erer le quotient par l'interm\'8e
+diaire d'un param\'8ftre pass\'8e par nom pour "le cas o\'9d \'c9 ". C'est ce que font quelques fonctions de la biblioth\'8fque de Maple.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 \page 5. Type des param\'8ftres\par
+\pard\plain \qj \f20 Comme toutes les variables Maple, les param\'8ftres ne sont pas typ\'8es. Il y a n\'8eanmoins dans la derni\'8fre version de Maple une possibilit\'8e de faire une v\'8erification automatique de type \'88 l'ex\'8ecution de la proc\'8e
+dure par une syntaxe "\'88 la Pascal" {\b x: type_x}. C'est ainsi que si l'on \'8ecrit\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 succ:=proc(x:integer) x+1 end\par
+\pard\plain \qj \f20 \par
+l'ex\'8ecution de la proc\'8edure avec tout param\'8ftre qui ne serait pas de type integer provoquera une erreur. On peut par contre construire des proc\'8edures polymorphes (c'est \'88 dire pouvant recevoir des param\'8ftres de types diff\'8e
+rents tout en s'adaptant au type de ces param\'8ftres) en testant \'88 l'aide de la fonction {\b type} \'88 l'int\'8erieur de la proc\'8edure le type des param\'8ftres et en s'adaptant \'88 ce type.\par
+Exemple:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 PLUS:=proc(x,y)\line if type(x,numeric) and type(y,numeric) then\line \tab \tab RETURN(x+y)\line elif type(x,complex) and type(y, complex) then\line \tab \tab RETURN(evalc(x+y))\line
+ elif type(x,matrix) and type(y,matrix) then\line \tab \tab RETURN(evalm(x+y))\line else ERROR(`erreur de type`)\line end;\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul II. Les fonctions op\'8erateurs\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 1. Fonctions fl\'8fches et fonctions angles\par
+\pard\plain \qj \f20 A c\'99t\'8e du mode proc\'8edural pr\'8ec\'8edemment d\'8efini, Maple dispose d'un moyen d'associer simplement un r\'8esultat \'88 des param\'8ftres \'88 l'aide de deux modes \'8equivalents \'88 la notation math\'8ematique\par
+\tab \tab (x{\fs20\dn4 1},\'c9,x{\fs20\dn4 n}) {\f23 \'ae} expression(x{\fs20\dn4 1},\'c9,x{\fs20\dn4 n}).\par
+Ces deux modes sont le mode "fl\'8fche" (arrow en anglais)\par
+\tab (x1,\'c9,xn) -> expression(x1,\'c9,xn)\par
+ou le mode "angle"\par
+\tab < expression(x1,\'c9,xn) | x1,\'c9,xn >.\par
+Ces deux expressions renvoient une application de l'ensemble des n-uplets d'expressions Maple dans l'ensemble des expressions Maple, c'est \'88 dire que les lettres x1,\'c9,xn sont des lettres muettes. Comme en math\'8ematique lorsqu'on d\'8e
+finit l'application \par
+\tab \tab f: x {\f23\fs28 \'ae }sin(x{\fs20\up6 2})\par
+on pourra poser en Maple\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 f:=x->sin(x^2)\par
+\pard\plain \qj \f20 ou encore\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 f:= < sin(x^2) | x >.\par
+\par
+\pard\plain \qj \f20 \tab Maple permet \'8egalement de construire une fonction \'88 partir d'une expression alg\'8ebrique en rendant un certain nombre de param\'8ftres abstraits (m\'8ethode tir\'8ee du {\f23 l}-calcul) \'88 l'aide de la fonction {\b
+unapply\par
+}\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: unapply - returns an operator from an expression and arguments\par
+CALLING SEQUENCE:\par
+ unapply(expr,x,y,..)\par
+PARAMETERS:\par
+ expr - any expression\par
+ x,y,.. - variable names\par
+SYNOPSIS: \par
+- The result of unapply(expr,x) is a functional operator. If we apply this operator to x we get our original expression.\par
+ unapply(expr,x)(x) ==> expr\par
+- In particular, for a function f(x),\par
+ unapply(f(x),x) ==> f\par
+- Whenever it is desired to construct an operator using contents of variables or evaluated expressions, unapply should be used.\par
+\pard\plain \qj \f20 Exemple:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f:=unapply(sin(x^2),x);\par
+\pard\plain \s3 \f22\fs20 2\par
+ f := x -> sin(x )\par
+\pard\plain \qj \f20 \par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f(y+1);\par
+\pard\plain \s3 \f22\fs20 2\par
+ sin((y + 1) )\par
+\par
+\pard\plain \qj \f20 \tab On prendra soin (comme on devrait toujours le faire en Math\'8ematiques) de bien \'8etablir une distinction entre le nom de la fonction, la fonction elle-m\'90
+me et la valeur de la fonction en un point (ne confondez pas la fonction x {\f23 \'ae }sin x avec la valeur de la fonction sinus au point x).\par
+\tab Maple dispose d'un certain nombre d'op\'8erations sur ces fonctions, la principale d'entre elle \'8etant bien entendu la composition d\'8enot\'8ee par l'op\'8erateur @ (qui remplace donc dans Maple l'op\'8erateur {\f23 \'b7} des Math\'8e
+matiques) et son op\'8erateur it\'8er\'8e @@ (correspondant \'88 la puissance des Math\'8ematiques, f{\fs20\up6 n} = f {\f23 \'b7 }\'c9 {\f23 \'b7} f n fois)\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: @ - the composition operator\par
+FUNCTION: @@ - the repeated composition operator\par
+CALLING SEQUENCE:\par
+ f @ g \par
+ f @@ n \par
+PARAMETERS:\par
+ f, g - any functions\par
+ n - an integer\par
+ SYNOPSIS: \par
+- @ is the function composition operator.\par
+- @@ is the repeated function composition operator.\par
+- If n is negative, the invfunc table is checked to see if it has an entry for f. That is, if invfunc[f] = g, then f@@n --> g@@(-n).\par
+\pard\plain \qj \f20 Exemple:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f:=x->sin(x^2): g:=x->cos(x^3): h:=g@f;\par
+\pard\plain \s3 \f22\fs20 h := g@f\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet h(t);\par
+\pard\plain \s3 \f22\fs20 2 3\par
+ cos(sin(t ) )\par
+\pard\plain \qj \f20 Maple peut faire un certain nombre d'op\'8erations sur les fonctions comme les d\'8eriver \'88 l'aide de l'op\'8erateur D (le r\'8esultat n'est pas toujours tr\'8fs lisible, \'88 moins de l'appliquer \'88 une variable)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet D(h);\par
+\pard\plain \s3 \f22\fs20 3 2 2\par
+ (x -> - 3 sin(x ) x )@f (x -> 2 cos(x ) x)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet "(t);\par
+\pard\plain \s3 \f22\fs20 2 3 2 2 2\par
+ - 6 sin(sin(t ) ) sin(t ) cos(t ) t\par
+\pard\plain \qj \f20 \par
+ou en faire des trac\'8es graphiques (les diff\'8erents plot, plot3d, implicitplot, \'c9 acceptent, et m\'90me dans un certain sens pr\'8ef\'8frent, des fonctions en entr\'8ee).\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet plot(h,-Pi..Pi);\par
+\pard\plain \qc \f20 {{\pict\macpict\picw320\pich208
+04ca0000000000d00140001102ff0c00ffffffff00000000000000000140000000d00000000000000001000a0000000000d0014000220019002002ff0023010000230200002300000023010200230105002300070023021d002300150023011700230118002300150023011000230109002301fc002301f4002301ee002301
+d5002301ec002300ee002302e6002300f8002301fc002301fc002301000023000000230300002301000023010000230100002301040023010300230006002302150023000e002301110023012500230111002301100023000c002301080023010400230000002302f2002300f4002301f1002302de002300ef002301f00023
+01e7002301f8002301f9002301f9002301fd002301ff00230200002302000023030000230200002300000023010100230101002300020023020600230005002301050023010800230008002302150023000b0023010c0023011400230214002301100023010d00230105002300040023010100230100002301ff002300fc00
+2301fc002301fa002300f9002301fa002301f0002302f0002301ef002301f8002300f8002301f8002301f9002300fa002301f9002301fb002300fb002302f8002301fa002301fc002301fc002302fe002301fe002303fe00230200002303000023060000230500002305000023060000230500002305000023050000230600
+002302000023030000230101002302010023010200230203002301030023010200230003002301030023010300230108002301050023000500230106002301070023010e0023010800230008002301110023021100230008002301070023010e00230105002301050023010400230101002301fe002300fd002301fb002301
+fb002300f9002301f7002300f7002302ec002301ea002301f4002300f5002302ec002300f8002301f9002301fa002300fc002301fc002301fe002300fe002301ff002301ff002302000023020000230300002302000023000000230101002301010023000300230208002300070023010a002301180023010f002301100023
+01210023010f0023000c002301090023010500230000002301fc002301f7002300f3002302e1002301df002301e2002301eb002301f8002301fb002301fb002301000023010000230100002301000023020000230000002301000023010400230104002300080023010b0023010e0023001300230114002301160023001400
+2301110023010d0023000700230100002301f9002300f2002302d9002300e7002301e9002301de002301f7002301fb002301fe002300ff002302000023010000230301002200bc00a000fd002200bc011a00fd002200bc00f100fd002200bc00c800fd002200bc00a000fd002200bc007700fd002200bc004e00fd002200bc
+002500fd002000bb002000bb012000220018009d05000022003a009d05000022005d009d050000220080009d0500002200a3009d0500002000bb00a0001400a0002c00090004064d6f6e61636f0000030004000d00090006fffe0000002e000400000000002b9dc7013000297a013300002800c700ee0132002800c700c501
+31002800c7009d0130002800c70071022d3100002800c70048022d3200002800c7001f022d33000028001e0097013100280040008b03302e39002a2303302e3800002a2303302e3700002a2303302e360000ff}}\par
+\pard \qj \par
+Remarque : la d\'8efinition de fonctions op\'8erateurs peut avoir besoin de faire appel \'88 des variables locales comme dans la fonction math\'8ematique\par
+\tab \tab \tab (x,n) -> \|i\|su({\fs20\dn4 i=1};{\fs20\up6 n}; x{\fs20\up6 i}) \par
+Aussi Maple autorise-t-il l'introduction de variables locales gr\'89ce \'88 la notation en mode fl\'8fche\par
+\tab \tab {\i parametres }{\b ->} {\b local }{\i variables_locales} ; {\i r\'8esultat\par
+}et en mode angle\par
+\tab \tab {\b < }{\i r\'8esultat }| {\i parametres} | {\i variables locales }{\b >.\par
+}On pourra ainsi poser indiff\'8eremment\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 f:=(x,n) -> local i; sum(x^i,i=1..n);\par
+\pard\plain \qj \f20 ou\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 f:= < sum(x^i,i=1..n) | x,n | i >.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 2. Un peu de programmation fonctionnelle\par
+\pard\plain \qj \f20 Un certain nombre de fonctions Maple attendent de fa\'8don essentielle des fonctions comme param\'8ftre. Il en est ainsi par exemple de la fonction {\b map} qui applique une fonction donn\'8ee \'88 tous les op\'8e
+randes du premier niveau d'une expression alg\'8ebrique (et en particulier \'88 tous les \'8el\'8ements d'une liste, d'un ensemble ou d'une table)\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f:=x->sin(x^2): map(f,[2,y+1,cos(t)]); \tab map(f,2+cos(t));\par
+\pard\plain \s3 \f22\fs20 2 2\par
+ [sin(4), sin((y + 1) ), sin(cos(t) )]\par
+\par
+ 2\par
+ sin(4) + sin(cos(t) )\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet maTable:=table([(1)=y+1,(2)=3]): map(f,maTable);\par
+\pard\plain \s3 \f22\fs20 table([\par
+ 2\par
+ 1 = sin((y + 1) )\par
+ 2 = sin(9)\par
+ ])\par
+\pard\plain \qj \f20 \tab Bien entendu, il n'est nullement n\'8ecessaire de nommer la fonction pour l'utiliser et vous pouvez tr\'8fs bien utiliser {\b map} sous la forme\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet map(x->sin(x^2),[2,y+1,cos(t)]);\par
+\par
+\pard\plain \qj \f20 La fonction {\b map} admet une syntaxe un peu plus g\'8en\'8erale pour les fonctions \'88 plusieurs param\'8ftres en donnant une valeur par d\'8efaut aux param\'8ftres \'88 partir du second.\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: map - apply a procedure to each operand of an expression\par
+ CALLING SEQUENCE:\par
+ map(fcn, expr, arg_2, ..., arg_n)\par
+PARAMETERS:\par
+ fcn - a procedure or a name\par
+ expr - any expression\par
+ arg_i - (optional) further arguments to fcn\par
+SYNOPSIS: \par
+- The map function applies fcn to the operands of expr.\par
+- The i-th operand of expr is replaced by the result of applying fcn to the i-th operand. This is done for all the operands of expr.\par
+- For a table or array, fcn is applied to each element of the table or array.\par
+- If fcn takes more than one argument, they are to be specified as additional arguments, arg_2, arg_3,..., arg_n, which are simply passed through as the second, third ,..., n-th arguments to fcn.\par
+\pard\plain \qj \f20 Vous pourrez \'8egalement avoir besoin de la fonction {\b select }qui s\'8electionne des op\'8erandes suivant un cri\'8fre entr\'8e sous forme fonctionnelle\par
+\pard\plain \s4\qj\li1120 \f20\fs20 FUNCTION: select - selection from a list, set, sum, or product\par
+CALLING SEQUENCE:\par
+ select(f, expr)\par
+ select(f, expr, b_1, ..., b_n)\par
+PARAMETERS:\par
+ f - a Boolean-valued procedure\par
+ expr - a list, set, sum, or product\par
+ b_1, ..., b_n - optional extra arguments\par
+SYNOPSIS: \par
+- The function select keeps the operands of expr which satisfy the Boolean-\par
+ valued procedure f, creating a new object of the same type as expr. Those\par
+ operands for which f does not return true are discarded.\par
+- Additional arguments b_1, ..., b_n are passed to f.\par
+\pard\plain \qj \f20 \par
+Exemple: pour s\'8electionner tous les nombres premiers compris entre 100 et 200 on fera\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet select(isprime,[$100..200]);\par
+\pard\plain \s3 \f22\fs20 [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]\par
+\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 3. La d\'8efinition d'op\'8erateurs infixes\par
+\pard\plain \qj \f20 On appelle op\'8erateurs infixes des op\'8erateurs unaires tels que +, - qui se mettent devant leur op\'8erande, ou binaires tels que +, - , *, / , ^ , =, union, \'c9 qui se mettent entre leurs op\'8e
+randes. Maple ne permet pas facilement de red\'8efinir ces op\'8erateurs infixes initiaux, mais permet par contre d'en d\'8efinir de nouveaux tout \'88 loisir. Une seule r\'8fgle est \'88 respecter: ces op\'8e
+rateurs infixes doivent commencer par le symbole & et \'90tre suivis soit d'un unique symbole non alphanum\'8erique, soit d'un nom Maple valide. On les d\'8efinit alors ces op\'8erateurs de mani\'8fre pr\'8efixe sous la forme\par
+\tab \tab `&{\i nom} ` := {\i proc\'8edure ou fonction\par
+}et on les utilise sous la forme &{\i nom} {\i parametre} pour un op\'8erateur unaire et sous la forme {\i parametre1} &{\i nom} {\i parametre2} pour un op\'8erateur binaire. C'est ainsi que pour d\'8e
+finir le produit scalaire de deux listes vous pourrez poser\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet `&scal`:=(l1,l2)->local i; \tab \tab \tab \tab \tab \tab sum(l1[i]*l2[i],i=1..nops(l1)):\par
+\bullet [x1,y1,z1] &scal [x2,y2,z2];\par
+\pard\plain \qj \f20 \par
+\pard\plain \s3 \f22\fs20 x1 x2 + y1 y2 + z1 z2\par
+\pard\plain \qj \f20 \par
+Vous pouvez m\'90me d\'8efinir des propri\'8et\'8es de ces nouveaux op\'8erateurs \'88 l'aide de l'instruction {\b define} comme par exemple\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet define(`&+`, associative, commutative, identity=0);\par
+\bullet define(Ls, unary, type=[algebraic], Ls(0)=0, forall(x, Ls(exp(x))=Ls(x)+1, Ls(ln(x))=Ls(x)-1));\par
+\pard\plain \qj \f20 \par
+la premi\'8fre propri\'8et\'8e garantissant que l'op\'8erateur binaire &+ est associatif, commutatif et poss\'8fde 0 comme \'8el\'8ement neutre (Maple proc\'8edera automatiquement aux simplifications n\'8ecessaires) et la deuxi\'8fme que l'op\'8e
+rateur Ls est une fonction unaire qui ne s'applique qu'aux expressions alg\'8ebriques et qui v\'8erifie Ls(0)=0 et \par
+\pard \qc {\f23 "}x , Ls(e{\fs20\up6 x}) = Ls(x)+1 et Ls(log(x))=Ls(x)-1.\par
+\pard\plain \s253\qj\li354\sb120\sa80 \b\f20 4. Exercices\par
+\pard\plain \qj \f20 Maple est un peu chiche de fonctions sur les listes. Pouvez vous d\'8efinir en Maple les fonctions suivantes (qui font partie de la biblioth\'8fque de base de Mathematica) d'une mani\'8fre aussi fonctionnelle que possible\par
+{\b flatten }: doit transformer une liste de listes de listes \'c9 en une unique liste en mettant tout \'88 plat au premier niveau\par
+{\b nestlist }: nestlist(f,x,n) doit engendrer une liste [x, f(x), f(f(x)), \'c9 ]\par
+{\b foldlist} : foldlist(f,x,[a,b,\'c9]) doit retourner la liste [x, f(x,a), f(f(x,a),b),\'c9 ]\par
+{\b mapindexed}: mapindexed(f,[a,b,\'c9]) doit retourner la liste [f(a,1), f(a,2),\'c9]\par
+{\b mapthread}: mapthread(f,[[a1,a2,\'c9],[b1,b2,\'c9]) doit retourner la liste [f(a1,b1),f(a2,b2),\'c9] ; essayez de la g\'8en\'8eraliser \'88 un nombre quelconque de listes\par
+{\b outer} : outer(f,[a1,a2,\'c9],[b1,b2,\'c9]) doit retourner la "matrice" (liste de listes) des f(a{\fs20\dn4 i},b{\fs20\dn4 j}); essayez de la g\'8en\'8eraliser \'88 un nombre quelconque de listes\par
+{\b inner} : inner(f,[a1,a2,\'c9],[b1,b2,\'c9],g) doit retourner g(f(a1,b1),f(a2,b2),\'c9) (quand f=* et g=+, on trouve le produit scalaire)\par
+\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul V. La r\'8ecursivit\'8e et les options\par
+\pard\plain \qj \f20 Toute fonction Maple peut-\'90tre r\'8ecursive. Des fonctions peuvent \'90tre mutuellement r\'8ecursives sans qu'il soit n\'8ecessaire de se livrer \'88 des gymnastiques de {\b forward} \'88 la Pascal puisque les noms ne sont pas v
+\'8erifi\'8es au moment o\'9d l'on d\'8efinit la fonction, mais au moment o\'9d on l'utilise. On pourra donc d\'8efinir\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet f:=proc(x)\line \tab \tab if x=0 then 1 else x*g(x-1);\line end;\par
+ g:=proc(x)\line if x=0 then 1 else f(x-1)/x;\line end;\par
+\par
+\pard\plain \qj \f20 Maple dispose \'88 cet \'8egard d'une possibilit\'8e pr\'8ecieuse, c'est l'option {\b remember}. Lorsqu'une fonction est d\'8e
+finie avec cette option, Maple lui associe une table de souvenance qui contient tous les appels de la fonction et les r\'8esultats trouv\'8es. Si la fonction est de nouveau appel\'8ee avec les m\'90mes valeurs des param\'8ftres, le r\'8e
+sultat est directement retourn\'8e \'88 partir de la table de souvenance sans que le corps de la fonction soit r\'8eex\'8ecut\'8e. Cela peut entra\'94ner des gains consid\'8erables en temps. C'est ainsi que les deux exemplai
+res suivants de la fonction de calcul des nombres de Fibonacci ont des complexit\'8es respectives (et donc des temps d'ex\'8ecution respectifs) en 2{\fs20\up6 n} et n:\par
+\pard\plain \s2\sb120\keep\keepn \b\f22 \bullet fib1(n):= proc(n) if n<=1 then 1 else \line fib1(n-1)+fib1(n-2); end;\par
+fib2(n):= proc(n) option remember; \line \tab if n<=1 then 1 else \line \tab \tab fib2(n-1)+fib2(n-2); end;\par
+\pard\plain \qj \f20 \par
+En effet la premi\'8fre proc\'8edure passe son temps \'88 recalculer les m\'90mes valeurs alors que la deuxi\'8fme ne les recalcule pas puisqu'elle les retrouve directement dans une table. Sur un mac Powerbook, la premi\'8fre proc\'8e
+dure met 32 secondes pour calculer fib1(18) et la seconde 0,26 secondes pour calculer fib2(18) (les deux fournissant bien entendu le m\'90me r\'8esultat). La premi\'8fre utilise 70 kilooctets de m\'8emoire et la seconde 675 octets.\par
+\tab Bien entendu, m\'8efiez vous des effets de bord sur le comportement des fonctions ayant des tables de souvenance. D'une part, il est d\'8elicat de savoir si le corps de la fonction sera ex\'8ecut\'8e ou non, et donc si un effet de bord souhait\'8e
+ aura lieu ou non. D'autre part, la table de souvenance ne tient pas compte de la modification \'8eventuelle de variables globales entre deux appels. En particulier si vous appelez une premi\'8fre fois une telle fonction alors que la pr\'8ecision g\'8en
+\'8erale est fix\'8ee \'88 10 chiffres significatifs, que vous changez cette pr\'8ecision g\'8en\'8erale \'88 l'aide de la variable Digits=30, puis que vous r\'8eappelez la fonction avec le m\'90me param\'8ftre, le r\'8esultat ne sera pas recalcul\'8e
+ et vous n'aurez toujours que vos 10 chiffres significatifs.\par
+\pard\plain \s254\qj\sb200\sa140 \b\f20\fs36\ul VI. R\'8esum\'8e de la syntaxe et de la s\'8emantique du langage\par
+\pard\plain \qj \f20 \tab Nous pr\'8esentons ici un r\'8esum\'8e de la syntaxe et de la s\'8emantique du langage. Pour simplifier nous avons convenu de confondre les notations infixes et pr\'8efixes des diff\'8erents op\'8erateurs\par
+\tab a {\i op }b {\i op} \'c9 {\i op} c \tab \tab est remplac\'8e par \tab {\i op} (a,b,\'c9,c)\par
+que {\i op} soit +,-,*, / , ^, $ , @ , @@, .. ({\i range }) ou un op\'8erateur neutre &\'c9 .\par
+\tab De m\'90me nous avons convenu de confondre les diff\'8erentes formes des proc\'8edures ou fonctions\par
+\tab \|b\|rc\|\}(\|a((x1,\'c9,xN)->\'c9; ;< \'c9 | x1,\'c9xN>)) sont remplac\'8es par {\i proc(x1,\'c9,xN) option operator; \'c9 end\par
+\par
+}Comme d'habitude l'op\'8erateur "grammatical" d'affectation ::= doit \'90tre lu comme un "est un" , le symbole | d\'8esigne une alternative et les cochets encadrent des parties facultatives. Les expressions qui contr\'99lent l'ex\'8ecution sans interv
+enir dans la valeur de retour n'ont pas \'8et\'8e explicit\'8ees et remplac\'8ees par \'c9 .\par
+\tab La premi\'8fre colonne d\'8ecrit la syntaxe associ\'8ee aux diff\'8erents types d'expressions\par
+\pard \qj\tx1380\tx3960 \tab * g\'8en\'8erales \tab {\i expr}\par
+\pard \qj\tx1400\tx3960 \tab * \'8el\'8ementaires \tab {\i elemexpr\par
+\tab }* index\'8ees\tab {\i indexexpr\par
+\tab }* compos\'8ees\tab {\i seqexpr}\par
+\tab * non \'8evalu\'8ees\tab {\i quotexpr\par
+\tab }* affectations\tab {\i affexpr\par
+}\tab * conditionnelles\tab {\i condexpr\par
+\tab }* r\'8ep\'8etitives\tab {\i repexpr\par
+}\tab * proc\'8edurales\tab {\i procexpr}\par
+\pard \qj {\i \tab }La deuxi\'8fme colonne d\'8ecrit la valeur de retour de l'\'8evaluation de l'expression (que nous avons indiqu\'8ee par une fonction fictive EV). Ne pas confondre cette valeur de retour de l'\'8e
+valuation standard avec la valeur de retour de {\b eval}({\i elemexpr }) qui elle est la valeur de retour de l'\'8evaluation compl\'90te (d'une expression \'8el\'8ementaire).\par
+{\i \par
+}\trowd \trgaph80\trleft-80 \clbrdrt\brdrs \clbrdrl\brdrhair \clbrdrb\brdrhair \clbrdrr\brdrhair \clshdng0\cellx3124\clbrdrt\brdrs \clbrdrl\brdrhair \clbrdrb\brdrhair \clbrdrr\brdrhair \clshdng0\cellx6328\clbrdrt\brdrs \clbrdrl\brdrhair \clbrdrb\brdrhair
+\clbrdrr\brdrs \clshdng0\cellx9532\pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\b Syntaxe\cell valeur de retour de l'\'8evaluation }(d\'8esign\'8ee ici par EV(\'c9)){\b \cell effets de bord \cell }\pard \intbl {\b \row }\trowd
+\trgaph80\trleft-80 \clbrdrt\brdrhair \clbrdrl\brdrhair \clbrdrb\brdrhair \clbrdrr\brdrhair \clshdng0\cellx3124\clbrdrt\brdrhair \clbrdrl\brdrhair \clbrdrb\brdrhair \clbrdrr\brdrhair \clshdng0\cellx6328\clbrdrt\brdrhair \clbrdrl\brdrhair \clbrdrb
+\brdrhair \clbrdrr\brdrs \clshdng0\cellx9532\pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i expr::=} elemexpr | affexpr | seqexpr | condexpr | repexpr | procexpr {\i \cell }\cell \cell \pard \intbl \row \pard
+\qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i elemexpr::= }nombre | symbole | indexexpr | quotexpr | \par
+ elemexpr{\b (}elemexpr1{\b ,}\'c9{\b ,\par
+}\tab \tab elemexprN{\b )}\cell le nombre, la valeur du symbole{\fs18\up6 \chftn {\footnote \pard\plain \s246\qj \f20\fs20 {\fs18\up6 \chftn } Rappelons que la valeur d'un symbole est \par
+\tab - le symbole lui m\'90me s'il n'est pas affect\'8e (il pointe sur lui m\'90me)\par
+\tab - la valeur de l'expression sur laquelle il pointe (i.e. qui lui a \'8et\'8e affect\'8ee) si cette expression n'est ni une table ni une proc\'8edure\par
+\tab - le symbole lui m\'90me si le symbole pointe sur une table ou une proc\'8edure (\'8evaluation au dernier nom)}}, la valeur de quotexpr ou de l'expression\par
+\pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\tx700\intbl EV(elemexpr)(EV(elemexpr1),\'c9, EV(elemexprN))\cell \pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl empilement de la valeur si \'ad NULL\cell \pard \intbl \row \pard
+\qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i indexexpr::=} elemexpr{\b [}elemexpr1{\b ,}\'c9{\b ,\par
+}\tab \tab elemexprN{\b ]}{\i \cell }EV(elemexpr)[EV(elemexpr1),\'c9, EV(elemexprN)]\cell empilement de la valeur si \'ad NULL\cell \pard \intbl \row \pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i quotexpr::=} 'expr'{\i \cell }
+l'expression {\i expr} elle m\'90me, non \'8evalu\'8ee\cell l'expression {\i expr} non \'8evalu\'8ee est empil\'8ee\cell \pard \intbl \row \pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i affexpr::=} symbole{\b :=}
+elemexpr | indexexpr:=elemexpr{\i \cell }NULL\cell la valeur{\fs18\up6 2{\footnote \pard\plain \s246\qj \f20\fs20 {\fs18\up6 2} Lorsque {\i expr} est une expression proc\'8edurale, {\i expr }n'est pas \'8evalu\'8ee mais affect\'8ee directement}} de {
+\i elemexpr} n'est pas empil\'8ee mais affect\'8ee \'88 {\i symbol }ou \'88 {\i indexexpr }(au besoin en cr\'8eant la table correspondante)\cell \pard \intbl \row \pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i seqexpr::= } expr1{\b
+;}\'c9{\b ;}exprN\cell NULL\cell empilement des valeurs \'adNULL dans la pile d'\'8evaluation \'88 trois places (FIFO)\cell \pard \intbl \row \pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i cond_expr::= }{\b if} \'c9 {\b then}
+ seqexpr1 [{\b elif} \'c9 {\b then} seqexpr2] \'c9 [{\b else} seqexprN] {\b fi}\cell NULL\cell celui de la {\i seqexpr} qui est \'8evalu\'8ee\cell \pard \intbl \row \pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i rep_expr::=} [{\b for
+} \'c9] [{\b from} \'c9] [{\b to}\~\'c9] [{\b by} \'c9] [{\b while }\'c9] \par
+{\b do} seqexpr {\b od}\cell NULL\cell celui de la suite de {\i seqexpr} qui est ex\'8ecut\'8ee\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \clbrdrt\brdrhair \clbrdrl\brdrhair \clbrdrb\brdrhair \clbrdrr\brdrhair \clshdng0\cellx3124\clbrdrt
+\brdrhair \clbrdrl\brdrhair \clbrdrb\brdrhair \clbrdrr\brdrhair \clshdng0\cellx6328\clbrdrt\brdrhair \clbrdrl\brdrhair \clbrdrb\brdrhair \clbrdrr\brdrs \clshdng0\cellx9532\pard \qj\pvpg\phmrg\posxc\posy2117\absw9612\dxfrtext180\intbl {\i proc_expr::= } {
+\b proc(}\'c9{\b ) }[{\b options }\'c9{\b ;}]{\b \par
+}[{\b local }\'c9{\b ;}]{\b \par
+} seqexpr\par
+{\b end}\cell le sommet de la pile d'\'8evaluation{\fs18\up6 3} de {\i procexpr}\cell \'88 la sortie, la pile d'\'8evaluation de {\i procexpr }est d\'8etruite; la valeur de retour est empil\'8ee si \'ad NULL\cell \pard \intbl \row \pard \qj \par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/corrig.rtf b/support/w2latex/EXEMPLES/corrig.rtf
new file mode 100644
index 0000000000..0795634922
--- /dev/null
+++ b/support/w2latex/EXEMPLES/corrig.rtf
@@ -0,0 +1,94 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times;}{\f1\froman Symbol;}{\f2\fswiss Helvetica;}{\f3\fswiss Chicago;}{\f4\fmodern Courier;}{\f5\fscript Script;}{\f6\fdecor London;}{\f7\fdecor Athens;}
+{\f8\fdecor San Francisco;}{\f9\fnil Cairo;}{\f10\fnil LosAngeles;}{\f11\froman Palatino;}{\f12\fnil Mathématiques;}{\f13\fnil Gregorian;}{\f14\fnil MT Extra;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\cf1\lang1033 \snext0 Normal;}{\s1 \cf1\lang1033 \sbasedon0\snext0 page number;}}{\info{\printim\yr1994\mo6\dy22\hr17\min6}{\version0}{\edmins0}{\nofpages2}{\nofwords386}{\nofchars1809}{\vern16433}}
+\paperw11880\paperh16800\margl1134\margr851\margt1417\margb1417\gutter0 \deftab709\widowctrl\ftnbj\ftnrestart\hyphhotz0 \sectd \linex0\headery1077\footery1077\colsx709\endnhere \trowd \trgaph80\trleft-80 \cellx5012\cellx9253\pard\plain \intbl
+\cf1\lang1033
+\par \pard \qc\intbl {\b D\'e9partement de Math\'e9matiques - Informatique
+\par }{\b Facult\'e9 des Sciences de Luminy, Case 901
+\par }{\b 163, Avenue de Luminy
+\par }{\b 13288 MARSEILLE}{\b CEDEX 9. FRANCE
+\par }{\b __________
+\par }{\b
+\par }Jean MARION
+\par " : (0) - 91 26 90 80
+\par FAX : (0) - 91 26 93 56\cell {\b\fs28 D.E.S.S. des Math\'e9matiques de l'Ing\'e9nieur
+\par }{\b\fs28 -------------------------
+\par }{\b\fs28 Corrig\'e9 (succint) de l'\'e9preuve"FIABILIT\'c9"
+\par }{\b\fs28
+\par }{\b\fs28 Session normale 93-94}\cell \pard \intbl \row \pard {\b\fs28
+\par }{\b\fs28\ul EXERCICE 1}{\b\fs28 .
+\par }\pard \sb240 Il r\'e9sulte des d\'e9finitions que la fonction de d\'e9faillance F et la fiabilit\'e9 R sont donn\'e9es pour tout r\'e9el t _ 0 par :
+\par \pard \qc F(t{\fs18 }) ={\field{\*\fldinst eq \\i( {\fs20 0,}{\fs20 }t, \\f(2,_(1{\fs20 }+ {\fs18\up6 s2))} ds)}{\fldrslt }} = {\field{\*\fldinst eq \\f(2,_)}{\fldrslt }} Arctg t , et R(t{\fs18 }) = 1 - F(t{\fs18 }) = 1 - {\field{\*\fldinst eq
+\\f(2,_)}{\fldrslt }} Arctg t
+\par \pard de sorte que le taux instantan\'e9 de d\'e9faillance{\f1 l }est donn\'e9 par {\f1 l}(t{\fs18 }) ={\fs28 - }{\field{\*\fldinst eq \\f((1 - \\f(2,_) Arctg t {\fs28 )',1} - \\f(2,_) Arctg t )}{\fldrslt }} soit :
+\par \pard \qc {\f1 l}(t{\fs18 }) = {\field{\*\fldinst eq \\f(2,_)}{\fldrslt }} .{\field{\*\fldinst eq \\f(1,(1 - \\f(2,_) Arctg t )(1 + {\fs18\up6 t2))}}{\fldrslt }}
+\par \pard \qj Par ailleurs un calcul \'e9l\'e9mentaire donne pour le MTTF {\f1 q} :
+\par \pard \qc {\f1 q} = {\field{\*\fldinst eq \\i( {\fs20 }0, {\fs20 +_,} t.f(t) dt)}{\fldrslt }} = {\field{\*\fldinst eq \\f(1,_)}{\fldrslt }}{\field{\*\fldinst eq \\i( {\fs20 }{\fs20 0,}{\fs20 }{\fs20 +_,}{\fs20 }{\fs20 \\f(2t,1}{\fs20 }{\fs20 +}{
+\fs20 }{\fs20\up6 t2)}{\fs20 })}{\fldrslt }} = + _.
+\par __________________________________________________________________________________
+\par \pard \sb240 {\b\fs28\ul EXERCICE 2}{\b\fs28 .
+\par }\pard \qj {\b\fs28 {\pict\wmetafile8\picw10795\pich4445\picwgoal6120\pichgoal2520 \piccropl-2220\piccropr-2220
+0100090000031e0500000c001c0000000000050000000b0200000000050000000c027e0032010500000031020100000008000000fa020500000000000000000007000000fc02010000000000000007000000fc02000000000000000007000000fc020000ffffff00000008000000fa020500000000000000000007000000fc
+02010000000000000007000000fc0201000000000000001c000000fb0210000000000000009001000000000000000048656c7600008c900000000100000000ffffffff0000408108e640811eaa000008000000fa020500000000000000000007000000fc0201000000000000001c000000fb02100000000000000090010000
+00000000000048656c760037d080002f48e4a03727ec002f48e40000408108e640811eaa000007000000fc020100000000000000040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002d
+010000040000002d0101000400000002010200040000002e011800040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002701ffff040000002d010400040000002d010500040000002d01
+0600040000002d01070005000000140200000000040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d0107000700000016047e00320100000000040000002d010800040000002d010900040000002d010a
+00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002d01080004000000f001040008000000fa0206000200020000000000040000002d010400040000002d0101000400000004010d00050000000102ffffff00070000001804220057000e004000
+040000002d010a0004000000f00107001c000000fb0211000000000000009001000000000000000053796d626f6c006efffe2f0c4ebaf9dc1c00302efffe48c07203b280508f6f08040000002d010700040000000201010005000000090200000000070000002105020057201c00470004000000020102000500000014021c
+00450005000000130238001d00040000002d0101000400000004010d00070000001b044c001c0039000500040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d7320526d6e00800000000000000000000000000000000000004800000048040000002d01070004000000
+0201010005000000090200000000070000002105020072202b0027000400000002010200040000002d010a0004000000f00107001c000000fb020b0000000000000090010000000000000000546d7320526d6e0000393c24408000390000408108e640811eaa000000000000040000002d0107000400000002010100050000
+000902000000000700000021050200532045000c00040000000201020004000000020101000500000009020000000007000000210502003120490010000400000002010200040000002d0101000400000004010d000700000018041d00e1000900ca00040000002d010a0004000000f00107001c000000fb02110000000000
+00009001000000000000000053796d626f6c000000393c24408000390000408108e640811eaa000000000000040000002d010700040000000201010005000000090200000000070000002105020057201600d10004000000020102000500000014021b00c9000500000013023700a100040000002d0101000400000004010d
+00070000001b044a00a00037008900040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d7320526d6e00800000000000000000000000000000000000004800000048040000002d010700040000000201010005000000090200000000070000002105020072202300ae00
+0400000002010200040000002d010a0004000000f00107001c000000fb020b0000000000000090010000000000000000546d7320526d6e0000393c2418fa000008c3408108e640811eaa000000000000040000002d0107000400000002010100050000000902000000000700000021050200532042008d0004000000020102
+0004000000020101000500000009020000000007000000210502003120460091000400000002010200040000002d0101000400000004010d00070000001b044f0028013c0011010500000014021800e0000500000013023c001101040000002d010a0004000000f00107001c000000fb020c00000000000000900100000000
+00000000546d7320526d6e004bda0039308800393056f098000000000000001c00390002040000002d010700040000000201010005000000090200000000070000002105020072202500f7000400000002010200040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d73
+20526d6e0000393c24408000390000408108e640811eaa000000000000040000002d01070004000000020101000500000009020000000007000000210502005320480014010400000002010200040000000201010005000000090200000000070000002105020032208600ce00040000000201020004000000020101000500
+0000090200000000070000002105020032204c001b0104000000020102000500000014024300a00005000000130243001301040000002d010a0004000000f00107001c000000fb0211000000000000009001000000000000000053796d626f6c00807b1e0039306a00008d0c50f1000000004acc0000906c4080040000002d
+010700040000000201010005000000090200000000070000002105020072205200c900040000000201020004000000020101000500000009020000000007000000210502004c20630014000400000002010200040000002d010a0004000000f00107001c000000fb020b000000000000009001000000000000000053796d62
+6f6c000000393c24000000000000408108e640811eaa000000000000040000002d0107000400000002010100050000000902000000000700000021050200312066001c00040000000201020004000000020101000500000009020000000007000000210502004c206100bd0004000000020102000400000002010100050000
+00090200000000070000002105020032206800c4000400000002010200040000002701ffff040000002d010400040000002d010500040000002d010600040000002d01070005000000140200000000040000002701ffff040000002d010400040000002d010500040000002d010600040000002d0107000500000014020000
+0000040000002701ffff040000002d010400040000002d010500040000002d010600040000002d01070005000000140200000000030000000000}}{\b\fs28
+\par }{\b 1) }Le calcul de R{\fs20\dn4 1} et R{\fs20\dn4 2 }est imm\'e9diat ; on trouve :
+\par \pard \qc\sb240 {\field{\*\fldinst eq \\x(R1(t{\fs18 }) = r(t{\fs18 }))}{\fldrslt }} et {\field{\*\fldinst eq \\x(R2(t{\fs18 }) = {\fs18\up6 r2(t}{\fs18 }) + 2r(t{\fs18 }).r(t{\fs18 }).(1 - r(t{\fs18 }{\fs28 )))}}{\fldrslt }}
+\par \pard \qj\sb240
+\par {{\pict\wmetafile8\picw11253\pich5750\picwgoal6380\pichgoal3260
+010009000003140600000c001c0000000000050000000b0200000000050000000c02a3003f010500000031020100000008000000fa020500000000000000000007000000fc02010000000000000007000000fc02000000000000000007000000fc020000ffffff00000008000000fa020500000000000000000007000000fc
+02010000000000000007000000fc0201000000000000001c000000fb0210000000000000009001000000000000000048656c7600b44080a4a040814ae20000403cfcf55cd1408108e640811eaa000008000000fa020500000000000000000007000000fc0201000000000000001c000000fb02100000000000000090010000
+00000000000048656c760037d044002f48e4a037296c002f48e40000408108e640811eaa000007000000fc020100000000000000040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002d
+010000040000002d0101000400000002010200040000002e011800040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002701ffff040000002d010400040000002d010500040000002d01
+0600040000002d01070005000000140200000000040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700070000001604a3003f0100000000040000002d010800040000002d010900040000002d010a
+00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002d01080004000000f001040008000000fa0206000100010000000000040000002d010400040000002d0101000400000004010d00050000000102ffffff000700000018042900b1000c009100
+040000002d010a0004000000f00107001c000000fb0211000000000000009001000000000000000053796d626f6c006efffe2f0c4ebaf9dc1c00302efffe48c07203b280508f6f08040000002d010700040000000201010005000000090200000000070000002105020057201e009b000400000002010200040000002d0101
+000400000004010d00070000001b047100180060000700040000002d01080004000000f001040008000000fa0206000200020000000000040000002d0104000500000014022200940005000000130261001900040000002d01080004000000f001040008000000fa0206000100010000000000040000002d01040004000000
+2d0101000400000004010d00070000001b0471004a005f003900040000002d01080004000000f001040008000000fa0206000200020000000000040000002d0104000500000014026800190005000000130268003a0005000000140268004b0005000000130268005d0005000000140268005e0005000000130268008f0005
+000000140268008f0005000000130268009f00040000002d01080004000000f001040008000000fa0206000100010000000000040000002d010400040000002d0101000400000004010d00070000001b047100b20060009f00040000002d01080004000000f001040008000000fa0206000200020000000000040000002d01
+04000500000014026800b2000500000013026800c300040000002d01080004000000f001040008000000fa0206000100010000000000040000002d010400040000002d0101000400000004010d00070000001b047000d6005e00c300040000002d01080004000000f001040008000000fa0206000200020000000000040000
+002d01040005000000140226009a00050000001302600044000500000014022800a3000500000013026100a3000500000014022500a5000500000013025f00c50005000000140228009e000500000013024a007a000500000014022900a20005000000130252008e00040000002d01080004000000f001040008000000fa02
+06000100010000000000040000002d010400040000002d0101000400000004010d00070000001b0472003a0160002601040000002d01080004000000f001040008000000fa0206000200020000000000040000002d0104000500000014026800260105000000130268000e0105000000140268000e010500000013026800f2
+000500000014026900d5000500000013026900e6000500000014026a00e80005000000130268000d01050000001402a0009d00050000001302a1009d000500000014021e00b20005000000130260002f01040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d7320526d
+6e004c920039308800393056f098000000000000001c002f4b2c040000002d010700040000000201010005000000090200000000070000002105020053206b0008000400000002010200040000000201010005000000090200000000070000002105020053206b003b00040000000201020004000000020101000500000009
+0200000000070000002105020053206d00a0000400000002010200040000000201010005000000090200000000070000002105020053206700c4000400000002010200040000000201010005000000090200000000070000002105020053206c0029010400000002010200040000002d010a0004000000f00107001c000000
+fb020b0000000000000090010000000000000000546d7320526d6e0000393c24408000390000408108e640811eaa000000000000040000002d010700040000000201010005000000090200000000070000002105020031206e000e000400000002010200040000000201010005000000090200000000070000002105020032
+206d004000040000000201020004000000020101000500000009020000000007000000210502006b206f00a900040000000201020004000000020101000500000009020000000008000000210504006b2b31206f00c600040000000201020004000000020101000500000009020000000007000000210502006e206f002f01
+0400000002010200040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d7320526d6e0000393c243098000c9ca4408108e640811eaa000000000000040000002d0107000400000002010100050000000902000000000700000021050200722040004d0004000000020102
+00040000000201010005000000090200000000070000002105020072203600e7000400000002010200040000000201010005000000090200000000070000002105020072203e00b50004000000020102000400000002010100050000000902000000000700000021050200722043006e000400000002010200040000000201
+0100050000000902000000000700000021050200722049007d0004000000020102000400000002010100050000000902000000000700000021050200722048008f000400000002010200040000000201010005000000090200000000070000002105020072204c00a0000400000002010200040000002d010a0004000000f0
+0107001c000000fb0211000000000000009001000000000000000053796d626f6c000000393c24408000390000408108e640811eaa000000000000040000002d010700040000000201010005000000090200000000070000002105020072207900210004000000020102000400000002010100050000000902000000000700
+00002105020072207a0051000400000002010200040000000201010005000000090200000000070000002105020072207a00b500040000000201020004000000020101000500000009020000000007000000210502007220780016010400000002010200040000000201010005000000090200000000070000002105020072
+207a00dd000400000002010200040000002701ffff040000002d010400040000002d010500040000002d010600040000002d01070005000000140200000000040000002701ffff040000002d010400040000002d010500040000002d010600040000002d01070005000000140200000000040000002701ffff040000002d01
+0400040000002d010500040000002d010600040000002d01070005000000140200000000030000000000}}
+\par {\b 2)} L'analyse du syst\'e8me propos\'e9e par l'\'e9nonc\'e9 pour d\'e9crire la fiabilit\'e9 du syst\'e8me {\f1 L}{\fs20\dn4 n}, n > 2, et qu'il est facile de justifier, conduit \'e0 l'obtention de la formule r\'e9cursive :
+\par \pard \qc\sb240 R{\fs20\dn4 n}(t{\fs18 }){\fs20 = }{\fs28 \{}R{\fs18\dn4 n-1}{\fs20 (t ).}({\fs20 r(t}{\fs18 }{\fs20 ) + }{\f1\fs20 r}{\fs20 (t}{\fs18 }{\fs20 ) - r(t}{\fs18 }{\fs20 ).}{\f1\fs20 r}{\fs20 (t )}){\fs28 \} }+ {\fs28 \{}{\fs20 r(t ).}{
+\fs28 (}{\fs20 1 - }{\f1\fs20 r}{\fs20 (t}{\fs18 }{\fs20 )}{\fs28 )}.{\field{\*\fldinst eq \\i\\su(j=1,j=n-2, {\fs18\dn4 Rj(t).r(t)n-j+1)}}{\fldrslt }}{\fs28 \} }+ {\fs28 \{}{\fs20 r(t ).}{\f1\fs20 r}{\fs20 (t )}{\fs18\up6 n-1}.{\fs28 (}{\fs20 1 - r(t )}
+{\fs28 )}{\fs18\up6 n-1}{\fs28 \}}
+\par \pard \qj\sb240 {\b 3)} Pour n = 3 avec r(t) = {\f1 r}(t) = e {\fs20\up6 -}{\f1\fs20\up6 l}{\fs20\up6 t,} la formule \'e9tablie en 2) conduit \'e0 :
+\par \pard \qc\sb240 {\field{\*\fldinst eq \\x(R3(t{\fs18 }) = {\fs20\up6 r3(t}{\fs18 }).[ 7 - 9r(t{\fs18 }) + 4 {\fs18\up6 r2(t}{\fs18 }) - {\fs18\up6 r3(t}{\fs18 })] = {\fs18\up6 e-3lt}{\fs18\up6 }[ 7 - 9e-lt{\fs20\up6 } + 4 {\fs20\up6 e-2lt} - {
+\fs20\up6 e-3lt}{\fs20\up6 }])}{\fldrslt }}
+\par \pard \qj\sb240 Dans les "networks" du type \'e9tudi\'e9 les MTTF des connexions sont tr\'e8s grands et donc {\f1 l} est petit ({\f1 l }< 10{\fs20\up6 -4}). A 10{\fs18\up6 -3} pr\'e8s, pour 0 _ t _ 100, 1 _ k _ 3 et on a donc : e{\fs20\up6 -k}{
+\f1\fs20\up6 l}{\fs20\up6 t }{\f1 @} 1 - {\field{\*\fldinst eq \\f(kt,10 000)}{\fldrslt }}, et l'on trouve alors que :
+\par \pard \qc\sb240 {\field{\*\fldinst eq \\x(R3(t{\fs18 }) @ 1 - \\f(2t,1 000) - \\f(3t2,1 000 000) \'e0 10-3 pr\'e8s, 0 _ t _ 100)}{\fldrslt }}
+\par
+\par \pard
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/corrig2.rtf b/support/w2latex/EXEMPLES/corrig2.rtf
new file mode 100644
index 0000000000..06c0eb886d
--- /dev/null
+++ b/support/w2latex/EXEMPLES/corrig2.rtf
@@ -0,0 +1,97 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}{\f3\froman Times;}{\f4\fswiss Helvetica;}{\f5\fswiss Chicago;}{\f6\fmodern Courier;}{\f7\fscript Script;}
+{\f8\fdecor London;}{\f9\fdecor Athens;}{\f10\fdecor San Francisco;}{\f11\fnil Cairo;}{\f12\fnil LosAngeles;}{\f13\froman Palatino;}{\f14\fnil Mathématiques;}{\f15\fnil Gregorian;}{\f16\fnil MT Extra;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;
+\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;
+\red127\green127\blue0;\red127\green127\blue127;\red192\green192\blue192;}{\stylesheet{\s244 \f3\fs16\cf1\up6\lang1033 \sbasedon0\snext0 footnote reference;}{\s245 \f3\fs20\cf1\lang1033 \sbasedon0\snext245 footnote text;}{\f3\cf1\lang1033 \snext0 Normal;}
+{\s2 \f3\cf1\lang1033 \sbasedon0\snext0 page number;}}{\info{\creatim\yr1994\mo6\dy29\hr10\min44}{\printim\yr1994\mo6\dy22\hr17\min6}{\version1}{\edmins0}{\nofpages2}{\nofwords65922}{\nofchars67345}{\vern16433}}
+\paperw11880\paperh16800\margl1134\margr851\margt1417\margb1417\gutter0 \deftab709\widowctrl\ftnbj\ftnrestart\hyphhotz0 \sectd \linex0\headery1077\footery1077\colsx709\endnhere \trowd \trgaph80\trleft-80 \cellx5012\cellx9253\pard\plain \intbl
+\f3\cf1\lang1033
+\par \pard \qc\intbl {\b D}{\b \'e9}{\b partement de Math}{\b \'e9}{\b matiques - Informatique}{\b
+\par }{\b Facult}{\b \'e9}{\b des Sciences de Luminy, Case 901}{\b
+\par }{\b 163, Avenue de Luminy}{\b
+\par }{\b 13288 MARSEILLE}{\b CEDEX 9. FRANCE}{\b
+\par }{\b __________}{\b
+\par }{\b
+\par }Jean MARION
+\par " : (0) - 91 26 90 80
+\par FAX : (0) - 91 26 93 56\cell {\b\fs28 D.E.S.S. des Math}{\b\fs28 \'e9}{\b\fs28 matiques de l'Ing}{\b\fs28 \'e9}{\b\fs28 nieur}{\b\fs28
+\par }{\b\fs28 -------------------------}{\b\fs28
+\par }{\b\fs28 Corrig}{\b\fs28 \'e9}{\b\fs28 (succint) de l'}{\b\fs28 \'e9}{\b\fs28 preuve"FIABILIT}{\b\fs28 \'c9}{\b\fs28 "}{\b\fs28
+\par }{\b\fs28
+\par }{\b\fs28 Session normale 93-94}\cell \pard \intbl \row \pard {\b\fs28
+\par }{\b\fs28\ul EXERCICE 1}{\b\fs28 . }{\b\fs28
+\par }\pard \sb240 Il r\'e9sulte des d\'e9finitions que la fonction de d\'e9faillance F et la fiabilit\'e9{\fs16\up6 \chftn {\footnote \pard\plain \s245 \f3\fs20\cf1\lang1033 {\fs16\up6 \chftn }Ceci est une note en bas de page.}} R sont donn\'e9es pour tout r
+\'e9el t _ 0 par :
+\par \pard \qc F(t{\fs18 }) ={\field{\*\fldinst eq \\i( {\fs20 0,}{\fs20 }t, \\f(2,_(1{\fs20 }+ {\fs18\up6 s2))} ds)}{\fldrslt }} = {\field{\*\fldinst eq \\f(2,_)}{\fldrslt }} Arctg t , et R(t{\fs18 }) = 1 - F(t{\fs18 }) = 1 - {\field{\*\fldinst eq
+\\f(2,_)}{\fldrslt }} Arctg t
+\par \pard de sorte que le taux instantan\'e9 de d\'e9faillance{\f1 l }est donn\'e9 par {\f1 l}(t{\fs18 }) ={\fs28 - }{\field{\*\fldinst eq \\f((1 - \\f(2,_) Arctg t {\fs28 )',1} - \\f(2,_) Arctg t )}{\fldrslt }} soit :
+\par \pard \qc {\f1 l}(t{\fs18 }) = {\field{\*\fldinst eq \\f(2,_)}{\fldrslt }} .{\field{\*\fldinst eq \\f(1,(1 - \\f(2,_) Arctg t )(1 + {\fs18\up6 t2))}}{\fldrslt }}
+\par \pard \qj Par ailleurs un calcul \'e9l\'e9mentaire donne pour le MTTF {\f1 q} :
+\par \pard \qc {\f1 q} = {\field{\*\fldinst eq \\i( {\fs20 }0, {\fs20 +_,} t.f(t) dt)}{\fldrslt }} = {\field{\*\fldinst eq \\f(1,_)}{\fldrslt }}{\field{\*\fldinst eq \\i( {\fs20 }{\fs20 0,}{\fs20 }{\fs20 +_,}{\fs20 }{\fs20 \\f(2t,1}{\fs20 }{\fs20 +}{
+\fs20 }{\fs20\up6 t2)}{\fs20 })}{\fldrslt }} = + _.
+\par __________________________________________________________________________________
+\par \pard \sb240 {\b\fs28\ul EXERCICE 2}{\b\fs28 .}{\b\fs28
+\par }\pard \qj {\b\fs20 {\pict\wmetafile8\picw10795\pich4445\picwgoal6120\pichgoal2520 \piccropl-2220\piccropr-2220
+0100090000031e0500000c001c0000000000050000000b0200000000050000000c027e0032010500000031020100000008000000fa020500000000000000000007000000fc02010000000000000007000000fc02000000000000000007000000fc020000ffffff00000008000000fa020500000000000000000007000000fc
+02010000000000000007000000fc0201000000000000001c000000fb0210000000000000009001000000000000000048656c7600008c900000000100000000ffffffff0000408108e640811eaa000008000000fa020500000000000000000007000000fc0201000000000000001c000000fb02100000000000000090010000
+00000000000048656c760037d080002f48e4a03727ec002f48e40000408108e640811eaa000007000000fc020100000000000000040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002d
+010000040000002d0101000400000002010200040000002e011800040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002701ffff040000002d010400040000002d010500040000002d01
+0600040000002d01070005000000140200000000040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d0107000700000016047e00320100000000040000002d010800040000002d010900040000002d010a
+00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002d01080004000000f001040008000000fa0206000200020000000000040000002d010400040000002d0101000400000004010d00050000000102ffffff00070000001804220057000e004000
+040000002d010a0004000000f00107001c000000fb0211000000000000009001000000000000000053796d626f6c006efffe2f0c4ebaf9dc1c00302efffe48c07203b280508f6f08040000002d010700040000000201010005000000090200000000070000002105020057201c00470004000000020102000500000014021c
+00450005000000130238001d00040000002d0101000400000004010d00070000001b044c001c0039000500040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d7320526d6e00800000000000000000000000000000000000004800000048040000002d01070004000000
+0201010005000000090200000000070000002105020072202b0027000400000002010200040000002d010a0004000000f00107001c000000fb020b0000000000000090010000000000000000546d7320526d6e0000393c24408000390000408108e640811eaa000000000000040000002d0107000400000002010100050000
+000902000000000700000021050200532045000c00040000000201020004000000020101000500000009020000000007000000210502003120490010000400000002010200040000002d0101000400000004010d000700000018041d00e1000900ca00040000002d010a0004000000f00107001c000000fb02110000000000
+00009001000000000000000053796d626f6c000000393c24408000390000408108e640811eaa000000000000040000002d010700040000000201010005000000090200000000070000002105020057201600d10004000000020102000500000014021b00c9000500000013023700a100040000002d0101000400000004010d
+00070000001b044a00a00037008900040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d7320526d6e00800000000000000000000000000000000000004800000048040000002d010700040000000201010005000000090200000000070000002105020072202300ae00
+0400000002010200040000002d010a0004000000f00107001c000000fb020b0000000000000090010000000000000000546d7320526d6e0000393c2418fa000008c3408108e640811eaa000000000000040000002d0107000400000002010100050000000902000000000700000021050200532042008d0004000000020102
+0004000000020101000500000009020000000007000000210502003120460091000400000002010200040000002d0101000400000004010d00070000001b044f0028013c0011010500000014021800e0000500000013023c001101040000002d010a0004000000f00107001c000000fb020c00000000000000900100000000
+00000000546d7320526d6e004bda0039308800393056f098000000000000001c00390002040000002d010700040000000201010005000000090200000000070000002105020072202500f7000400000002010200040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d73
+20526d6e0000393c24408000390000408108e640811eaa000000000000040000002d01070004000000020101000500000009020000000007000000210502005320480014010400000002010200040000000201010005000000090200000000070000002105020032208600ce00040000000201020004000000020101000500
+0000090200000000070000002105020032204c001b0104000000020102000500000014024300a00005000000130243001301040000002d010a0004000000f00107001c000000fb0211000000000000009001000000000000000053796d626f6c00807b1e0039306a00008d0c50f1000000004acc0000906c4080040000002d
+010700040000000201010005000000090200000000070000002105020072205200c900040000000201020004000000020101000500000009020000000007000000210502004c20630014000400000002010200040000002d010a0004000000f00107001c000000fb020b000000000000009001000000000000000053796d62
+6f6c000000393c24000000000000408108e640811eaa000000000000040000002d0107000400000002010100050000000902000000000700000021050200312066001c00040000000201020004000000020101000500000009020000000007000000210502004c206100bd0004000000020102000400000002010100050000
+00090200000000070000002105020032206800c4000400000002010200040000002701ffff040000002d010400040000002d010500040000002d010600040000002d01070005000000140200000000040000002701ffff040000002d010400040000002d010500040000002d010600040000002d0107000500000014020000
+0000040000002701ffff040000002d010400040000002d010500040000002d010600040000002d01070005000000140200000000030000000000}}{\b\fs28 }{\b\fs28
+\par }{\b 1) }Le calcul de R{\fs20\dn4 1} et R{\fs20\dn4 2 }est imm\'e9diat{\fs16\up6 \chftn {\footnote \pard\plain \s245 \f3\fs20\cf1\lang1033 {\fs16\up6 \chftn }Et en voici une deuxieme.}} ; on trouve :
+\par \pard \qc\sb240 {\field{\*\fldinst eq \\x(R1(t{\fs18 }) = r(t{\fs18 }))}{\fldrslt }} et {\field{\*\fldinst eq \\x(R2(t{\fs18 }) = {\fs18\up6 r2(t}{\fs18 }) + 2r(t{\fs18 }).r(t{\fs18 }).(1 - r(t{\fs18 }{\fs28 )))}}{\fldrslt }}
+\par \pard \qj\sb240
+\par {\fs20 {\pict\wmetafile8\picw11253\pich5750\picwgoal6380\pichgoal3260
+010009000003140600000c001c0000000000050000000b0200000000050000000c02a3003f010500000031020100000008000000fa020500000000000000000007000000fc02010000000000000007000000fc02000000000000000007000000fc020000ffffff00000008000000fa020500000000000000000007000000fc
+02010000000000000007000000fc0201000000000000001c000000fb0210000000000000009001000000000000000048656c7600b44080a4a040814ae20000403cfcf55cd1408108e640811eaa000008000000fa020500000000000000000007000000fc0201000000000000001c000000fb02100000000000000090010000
+00000000000048656c760037d044002f48e4a037296c002f48e40000408108e640811eaa000007000000fc020100000000000000040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002d
+010000040000002d0101000400000002010200040000002e011800040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002701ffff040000002d010400040000002d010500040000002d01
+0600040000002d01070005000000140200000000040000002d010800040000002d010900040000002d010a00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700070000001604a3003f0100000000040000002d010800040000002d010900040000002d010a
+00040000002d010b00030000001e00040000002d010400040000002d010500040000002d010600040000002d010700040000002d01080004000000f001040008000000fa0206000100010000000000040000002d010400040000002d0101000400000004010d00050000000102ffffff000700000018042900b1000c009100
+040000002d010a0004000000f00107001c000000fb0211000000000000009001000000000000000053796d626f6c006efffe2f0c4ebaf9dc1c00302efffe48c07203b280508f6f08040000002d010700040000000201010005000000090200000000070000002105020057201e009b000400000002010200040000002d0101
+000400000004010d00070000001b047100180060000700040000002d01080004000000f001040008000000fa0206000200020000000000040000002d0104000500000014022200940005000000130261001900040000002d01080004000000f001040008000000fa0206000100010000000000040000002d01040004000000
+2d0101000400000004010d00070000001b0471004a005f003900040000002d01080004000000f001040008000000fa0206000200020000000000040000002d0104000500000014026800190005000000130268003a0005000000140268004b0005000000130268005d0005000000140268005e0005000000130268008f0005
+000000140268008f0005000000130268009f00040000002d01080004000000f001040008000000fa0206000100010000000000040000002d010400040000002d0101000400000004010d00070000001b047100b20060009f00040000002d01080004000000f001040008000000fa0206000200020000000000040000002d01
+04000500000014026800b2000500000013026800c300040000002d01080004000000f001040008000000fa0206000100010000000000040000002d010400040000002d0101000400000004010d00070000001b047000d6005e00c300040000002d01080004000000f001040008000000fa0206000200020000000000040000
+002d01040005000000140226009a00050000001302600044000500000014022800a3000500000013026100a3000500000014022500a5000500000013025f00c50005000000140228009e000500000013024a007a000500000014022900a20005000000130252008e00040000002d01080004000000f001040008000000fa02
+06000100010000000000040000002d010400040000002d0101000400000004010d00070000001b0472003a0160002601040000002d01080004000000f001040008000000fa0206000200020000000000040000002d0104000500000014026800260105000000130268000e0105000000140268000e010500000013026800f2
+000500000014026900d5000500000013026900e6000500000014026a00e80005000000130268000d01050000001402a0009d00050000001302a1009d000500000014021e00b20005000000130260002f01040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d7320526d
+6e004c920039308800393056f098000000000000001c002f4b2c040000002d010700040000000201010005000000090200000000070000002105020053206b0008000400000002010200040000000201010005000000090200000000070000002105020053206b003b00040000000201020004000000020101000500000009
+0200000000070000002105020053206d00a0000400000002010200040000000201010005000000090200000000070000002105020053206700c4000400000002010200040000000201010005000000090200000000070000002105020053206c0029010400000002010200040000002d010a0004000000f00107001c000000
+fb020b0000000000000090010000000000000000546d7320526d6e0000393c24408000390000408108e640811eaa000000000000040000002d010700040000000201010005000000090200000000070000002105020031206e000e000400000002010200040000000201010005000000090200000000070000002105020032
+206d004000040000000201020004000000020101000500000009020000000007000000210502006b206f00a900040000000201020004000000020101000500000009020000000008000000210504006b2b31206f00c600040000000201020004000000020101000500000009020000000007000000210502006e206f002f01
+0400000002010200040000002d010a0004000000f00107001c000000fb020c0000000000000090010000000000000000546d7320526d6e0000393c243098000c9ca4408108e640811eaa000000000000040000002d0107000400000002010100050000000902000000000700000021050200722040004d0004000000020102
+00040000000201010005000000090200000000070000002105020072203600e7000400000002010200040000000201010005000000090200000000070000002105020072203e00b50004000000020102000400000002010100050000000902000000000700000021050200722043006e000400000002010200040000000201
+0100050000000902000000000700000021050200722049007d0004000000020102000400000002010100050000000902000000000700000021050200722048008f000400000002010200040000000201010005000000090200000000070000002105020072204c00a0000400000002010200040000002d010a0004000000f0
+0107001c000000fb0211000000000000009001000000000000000053796d626f6c000000393c24408000390000408108e640811eaa000000000000040000002d010700040000000201010005000000090200000000070000002105020072207900210004000000020102000400000002010100050000000902000000000700
+00002105020072207a0051000400000002010200040000000201010005000000090200000000070000002105020072207a00b500040000000201020004000000020101000500000009020000000007000000210502007220780016010400000002010200040000000201010005000000090200000000070000002105020072
+207a00dd000400000002010200040000002701ffff040000002d010400040000002d010500040000002d010600040000002d01070005000000140200000000040000002701ffff040000002d010400040000002d010500040000002d010600040000002d01070005000000140200000000040000002701ffff040000002d01
+0400040000002d010500040000002d010600040000002d01070005000000140200000000030000000000}}
+\par {\b 2)} L'analyse du syst\'e8me propos\'e9e par l'\'e9nonc\'e9 pour d\'e9crire la fiabilit\'e9 du syst\'e8me {\f1 L}{\fs20\dn4 n}, n > 2, et qu'il est facile de justifier, conduit \'e0 l'obtention de la formule r\'e9cursive :
+\par \pard \qc\sb240 R{\fs20\dn4 n}(t{\fs18 }){\fs20 = }{\fs28 \{}R{\fs18\dn4 n-1}{\fs20 (t ).}({\fs20 r(t}{\fs18 }{\fs20 ) + }{\f1\fs20 r}{\fs20 (t}{\fs18 }{\fs20 ) - r(t}{\fs18 }{\fs20 ).}{\f1\fs20 r}{\fs20 (t )}){\fs28 \}}{\fs28 }+ {\fs28 \{}{\fs20
+r(t ).}{\fs28 (}{\fs20 1 - }{\f1\fs20 r}{\fs20 (t}{\fs18 }{\fs20 )}{\fs28 )}.{\field{\*\fldinst eq \\i\\su(j=1,j=n-2, {\fs18\dn4 Rj(t).r(t)n-j+1)}}{\fldrslt }}{\fs28 \} }+ {\fs28 \{}{\fs20 r(t ).}{\f1\fs20 r}{\fs20 (t )}{\fs18\up6 n-1}.{\fs28 (}{\fs20
+1 - r(t )}{\fs28 )}{\fs18\up6 n-1}{\fs28 \}}
+\par \pard \qj\sb240 {\b 3)} Pour n = 3 avec r(t) = {\f1 r}(t) = e {\fs20\up6 -}{\f1\fs20\up6 l}{\fs20\up6 t,} la formule \'e9tablie en 2) conduit \'e0 :
+\par \pard \qc\sb240 {\field{\*\fldinst eq \\x(R3(t{\fs18 }) = {\fs20\up6 r3(t}{\fs18 }).[ 7 - 9r(t{\fs18 }) + 4 {\fs18\up6 r2(t}{\fs18 }) - {\fs18\up6 r3(t}{\fs18 })] = {\fs18\up6 e-3lt}{\fs18\up6 }[ 7 - 9e-lt{\fs20\up6 } + 4 {\fs20\up6 e-2lt} - {
+\fs20\up6 e-3lt}{\fs20\up6 }])}{\fldrslt }}
+\par \pard \qj\sb240 Dans les "networks" du type \'e9tudi\'e9 les MTTF des connexions sont tr\'e8s grands et donc {\f1 l} est petit ({\f1 l }< 10{\fs20\up6 -4}). A 10{\fs18\up6 -3} pr\'e8s, pour 0 _ t _ 100, 1 _ k _ 3 et on a donc : e{\fs20\up6 -k}{
+\f1\fs20\up6 l}{\fs20\up6 t }{\f1 @} 1 - {\field{\*\fldinst eq \\f(kt,10 000)}{\fldrslt }}, et l'on trouve alors que :
+\par \pard \qc\sb240 {\field{\*\fldinst eq \\x(R3(t{\fs18 }) @ 1 - \\f(2t,1 000) - \\f(3t2,1 000 000) \'e0 10-3 pr\'e8s, 0 _ t _ 100)}{\fldrslt }}
+\par
+\par \pard
+\par
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/dyck.rtf b/support/w2latex/EXEMPLES/dyck.rtf
new file mode 100644
index 0000000000..b8f12d4dd8
--- /dev/null
+++ b/support/w2latex/EXEMPLES/dyck.rtf
@@ -0,0 +1,38 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}{\f3\froman Palatino;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\f3\lang1036 \snext0 Normal;}}{\info{\title Abstract for ICLP}{\creatim\yr1994\mo7\dy1\hr15\min48}{\printim\yr1994\mo7\dy1\hr15\min50}{\version1}{\edmins0}{\nofpages1}{\nofwords484}{\nofchars3203}{\vern16433}}
+\paperw11900\paperh16840\margl1080\margr1080\margt-1080\margb-720\gutter0 \widowctrl\ftnbj\hyphhotz425 \sectd \sbknone\pgnrestart\linex0\headery709\footery709\colsx709\endnhere \pard\plain \qc \f3\lang1036 {\b\fs36 Permutations and computations}{\b\fs36
+
+\par }{\b\fs20
+\par }Roy Dyckhoff
+\par \pard \qc\sb240 School of Mathematical & Computational Sciences,
+\par \pard \qc St Andrews University, St Andrews, Scotland
+\par \pard \qc\sb240 rd@dcs.st-and.ac.uk
+\par \pard \qj\sb240\sl320 {\b Abstract}. We consider the surjective Prawitz translation {\f1 f} from (sequent calculus) cut-free derivation
+s to (natural) normal deductions, in order to examine the relationship between the uniform sequent calculus derivations of Miller, Nadathur, Pfenning & Scedrov [4] and the normal natural deductions of Prawitz [6,7] for first-order minimal logic. We conjec
+ture (but cannot yet prove) that {\f1 f} identifies two such derivations iff they are permutation-equivalent, in the sense of Kleene\rquote s work [1] on permutations of intuitionistic derivations, a result similar to work of Zucker [8] on per
+mutative conversions (for the system with cut and without the constants for disjunction and existential quantification). For the restricted language {\i fohH}
+ of first-order hereditary Harrop sequents (no occurrences of disjunctions or existential quantifiers that would trigger use of {\f1 /}L or {\f1 $}L), we show (i) that {\f1 f} maps the uniform derivations of [4] onto the set {\b EN}
+ of deductions in [6] expanded normal form; and (ii) (if the conjecture is true) that {\f1 f} identifies two such derivations iff they are permutation-equivalent using just the permutations involving {\f1 _}L, &L and {\f1 "}
+L. Third, restricting even further to the language {\i D} of definite formulae and goals, we show (i) that {\f1 f }maps the simple uniform derivations of Miller [2] onto {\b EN} and (ii) (again, if the conjecture is true) that {\f1 f}
+ identifies two such derivations iff they are permutation-equivalent using just the permutations involving &L and {\f1 "}
+L. This gives a bijection (also studied in [5]) from the set of uniform proofs with backchaining (a system [3] intermediate between sequent calculus and natural deduction) onto {\b EN}.
+\par \pard \qj\fi360\sl320 Thus, the logic programmer\rquote s restriction to the use for {\i D}
+ of uniform proofs with backchaining is complete not merely (as is well-known) w.r.t. derivability but also, in a bijective fashion, w.r.t. the construction of expanded normal deductions. We anticipate these ideas to be useful in a proof-theoretic integra
+tion of functional and logic programming (based on natural deduction and sequent calculus respectively).
+\par \pard
+\par \pard \qj\fi-720\li720\sb40\sl240 {\fs22 [1]}{\fs22 \tab }{\fs22 Kleene,}{\fs22 }{\fs22 S.}{\fs22 }{\fs22 C.: Permutability of inferences in Gentzen}{\fs22 \rquote }{\fs22 s }{\fs22 calculi LK and LJ, Mem. Amer. Math. Soc. (1952), 1}{\fs22 \endash }{
+\fs22 26.}{\fs22
+\par }{\fs22 [2]}{\fs22 \tab }{\fs22 Miller,}{\fs22 }{\fs22 D.: A logical analysis of modules in logic programming, J. Logic Programming }{\b\fs22 6}{\fs22 (1989), 79}{\fs22 \endash }{\fs22 108.}{\fs22
+\par }{\fs22 [3]}{\fs22 \tab }{\fs22 Miller,}{\fs22 }{\fs22 D.: Abstractions in logic programs, in: Odifreddi,}{\fs22 }{\fs22 P.}{\fs22 }{\fs22 (editor), Logic and computer science, vol. }{\b\fs22 31}{\fs22
+ of APIC Studies in Data Processing, Academic Press 1990, 329}{\fs22 \endash }{\fs22 359.}{\fs22
+\par }\pard \qj\fi-720\li720\sl240 {\fs22 [4]}{\fs22 \tab }{\fs22 Miller,}{\fs22 }{\fs22 D., G.}{\fs22 }{\fs22 Nadathur, F.}{\fs22 }{\fs22 Pfenning & A.}{\fs22 }{\fs22 Scedrov}{\fs22 }{\fs22
+: Uniform proofs as a foundation for logic programming, Annals of Pure and Applied Logic }{\b\fs22 51 }{\fs22 (1991), 125}{\fs22 \endash }{\fs22 157.}{\fs22
+\par }\pard \qj\fi-720\li720\sb40\sl240 {\fs22 [5]}{\fs22 \tab }{\fs22 Pfenning, F.: Unpublished lecture notes, 1994.}{\fs22
+\par }{\fs22 [6]}{\fs22 \tab }{\fs22 Prawitz,}{\fs22 }{\fs22 D.: Natural deduction, Almquist & Wiksell, Stockholm 1965.}{\fs22
+\par }\pard \qj\fi-720\li720\sb40 {\fs22 [7]}{\fs22 \tab }{\fs22 Prawitz,}{\fs22 }{\fs22 D.: Ideas and results in proof theory, in:}{\fs26 }{\fs22 Fenstad,}{\fs22 }{\fs22 J.}{\fs22 }{\fs22
+E.: Proc. of the second Scandinavian logic symposium, North-Holland 1971, 235}{\fs22 \endash }{\fs22 308.}{\fs22
+\par }{\fs22 [8]}{\fs22 \tab }{\fs22 Zucker,}{\fs22 }{\fs22 J.: The correspondence between cut-elimination and normalization, Annal}{\fs22 s of Mathematical Logic}{\b\fs22 7}{\fs22 (1974), 1}{\fs22 \endash }{\fs22 112.}{\fs22
+\par }\pard
+\par
+\par } \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/matrix.rtf b/support/w2latex/EXEMPLES/matrix.rtf
new file mode 100644
index 0000000000..c29e6f5466
--- /dev/null
+++ b/support/w2latex/EXEMPLES/matrix.rtf
@@ -0,0 +1,10 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman Times New Roman;}{\f1\froman Symbol;}{\f2\fswiss Arial;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\fs20\dn6\lang1036 \snext0 Normal;}}{\info{\creatim\yr1994\mo7\dy1\hr14\min6}{\version1}{\edmins0}{\nofpages0}{\nofwords0}{\nofchars0}{\vern16433}}
+\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\gutter0 \deftab708\widowctrl\ftnbj\hyphhotz425 \sectd \linex0\headery709\footery709\colsx709\endnhere \pard\plain \fs20\lang1036 {\plain \fs20\lang1036
+Voici une matrice a trois lignes, quatre colonnes:}{\field\flddirty{\*\fldinst eq {\plain \fs20\lang1036 }{\plain \fs20\lang1036 \\b\\lc\\[(\\A\\co4(sin(x),cos(x),x21,x+y,234*x,th(xy),cos(3x),sin(x),\\R(3,log(x)),\\
+I(0,p,cos(log(x))),0,0))}}{\fldrslt }}{\plain \fs20\lang1036
+\par }{\plain \fs20\lang1036 Et fin du test.
+\par }{\plain \fs20\lang1036
+\par }
+\par }
diff --git a/support/w2latex/EXEMPLES/rtftohtml_overview.rtf b/support/w2latex/EXEMPLES/rtftohtml_overview.rtf
new file mode 100644
index 0000000000..4841013a50
--- /dev/null
+++ b/support/w2latex/EXEMPLES/rtftohtml_overview.rtf
@@ -0,0 +1,63 @@
+{\rtf1\defformat\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f5\fscript Venice;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f16\fnil Palatino;}{\f20\froman Times;}{\f21\fswiss Helvetica;}
+{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f34\fnil New Century Schlbk;}{\f1724\fnil Kashmir;}{\f2515\fnil MT Extra;}{\f2853\fnil BobGothic;}{\f2944\fnil Handwriting;}}{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s243\li360\brdrt\brdrs \tx2700\tqc\tx4320\tqr\tx9720 \b\f20 \sbasedon0\snext243 footer;}{\s245\li360 \f20\fs18\up6
+\sbasedon0\snext0 footnote reference;}{\s246\li360 \f20\fs20 \sbasedon0\snext246 footnote text;}{\s250\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon251\snext0 heading 6;}{\s251\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon252\snext0 heading 5;}{
+\s252\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon253\snext0 heading 4;}{\s253\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon254\snext0 heading 3;}{\s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 \sbasedon255\snext0 heading 2;}{
+\s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 \sbasedon0\snext0 heading 1;}{\li360 \f20 \sbasedon222\snext0 Normal;}{\s1\fi-720\li1080\tx1440 \f20 \sbasedon0\snext1 ol;}{\s2\li360 \i\f20 \sbasedon0\snext2 address;}{\s3\fi-720\li1440\tx1440 \f20
+\sbasedon1\snext3 ol 1;}{\s4\fi-720\li1800\tx1800 \f20 \sbasedon3\snext4 ol 2;}{\s5\li1440\ri1440 \i\f20 \sbasedon0\snext5 blockquote;}{\s6\fi-900\li2340\tx2340 \f20 \sbasedon4\snext6 ol 3;}{\s7\fi360\tx360\tx3600\tx4320\tx7200\tx10700 \f20
+\sbasedon8\snext7 dir;}{\s8\fi-3960\li4320\tx4320 \f20 \sbasedon1\snext8 glossary;}{\s9\fi-1080\li2880\tx2880 \f20 \sbasedon6\snext9 ol 4;}{\s10\fi-1260\li3420\tx3420 \f20 \sbasedon9\snext10 ol 5;}{\s11\fi-720\li1080\tx1440 \f20 \sbasedon1\snext11 menu;}{
+\s12\fi-3960\li4680\tx4680 \f20 \sbasedon8\snext12 glossary 1;}{\s13\fi-3960\li5040\tx5040 \f20 \sbasedon12\snext13 glossary 2;}{\s14\li360\ri880\keep\tx1320\tx2280\tx3240\tx4200\tx5180\tx6140\tx7100\tx8060\tx9000 \f22\fs20 \sbasedon0\snext14 pre;}{
+\s15\fi-3960\li5400\tx5400 \f20 \sbasedon13\snext15 glossary 3;}{\s16\fi-3960\li5760\tx5760 \f20 \sbasedon15\snext16 glossary 4;}{\s17\fi-3960\li6120\tx6120 \f20 \sbasedon16\snext17 glossary 5;}{\s18\fi-720\li1080\tx1440 \f20 \sbasedon1\snext18
+numbered list;}{\s19\fi-720\li1440\tx1440 \f20 \sbasedon3\snext19 numbered list 1;}{\s20\fi-720\li1800\tx1800 \f20 \sbasedon4\snext20 numbered list 2;}{\s21\fi-900\li2340\tx2340 \f20 \sbasedon6\snext21 numbered list 3;}{\s22\fi-1080\li2880\tx2880 \f20
+\sbasedon9\snext22 numbered list 4;}{\s23\fi-1260\li3420\tx3420 \f20 \sbasedon10\snext23 numbered list 5;}{\s24\fi-180\li540\tx540 \f20 \sbasedon18\snext24 bullet list;}{\s25\fi-180\li900\tx900 \f20 \sbasedon19\snext25 bullet list 1;}{
+\s26\fi-180\li1260\tx1260 \f20 \sbasedon20\snext26 bullet list 2;}{\s27\fi-180\li1620\tx1620 \f20 \sbasedon21\snext27 bullet list 3;}{\s28\fi-180\li1980\tx1980 \f20 \sbasedon22\snext28 bullet list 4;}{\s29\fi-180\li2340\tx2340 \f20 \sbasedon23\snext29
+bullet list 5;}{\s30\fi360\li360\tx720\tx3960\tx4320\tx7560\tx10700 \f20 \sbasedon7\snext30 dir 1;}{\s31\fi360\li720\tx1080\tx4320\tx7920\tx10700 \f20 \sbasedon30\snext31 dir 2;}{\s32\fi360\li1080\tx1440\tx4680\tx8280\tx10700 \f20 \sbasedon31\snext32
+dir 3;}{\s33\fi360\li1440\tx1800\tx5040\tx8640\tx10700 \f20 \sbasedon32\snext33 dir 4;}{\s34\fi360\li1800\tx2160\tx5400\tx10700 \f20 \sbasedon33\snext34 dir 5;}{\s35\fi-720\li1440\tx1440 \f20 \sbasedon3\snext35 menu 1;}{\s36\fi-720\li1800\tx1800 \f20
+\sbasedon4\snext36 menu 2;}{\s37\fi-900\li2340\tx2340 \f20 \sbasedon6\snext37 menu 3;}{\s38\fi-1080\li2880\tx2880 \f20 \sbasedon9\snext38 menu 4;}{\s39\fi-1260\li3420\tx3420 \f20 \sbasedon10\snext39 menu 5;}{\s40\fi-720\li1080\tx1440 \f20
+\sbasedon18\snext40 small gloss;}{\s41\fi-720\li1440\tx1440 \f20 \sbasedon19\snext41 small gloss 1;}{\s42\fi-720\li1800\tx1800 \f20 \sbasedon20\snext42 small gloss 2;}{\s43\fi-900\li2340\tx2340 \f20 \sbasedon21\snext43 small gloss 3;}{
+\s44\fi-1080\li2880\tx2880 \f20 \sbasedon22\snext44 small gloss 4;}{\s45\fi-1260\li3420\tx3420 \f20 \sbasedon23\snext45 small gloss 5;}{\s46\fi-180\li540\tx540 \f20 \sbasedon24\snext46 ul;}{\s47\fi-180\li900\tx900 \f20 \sbasedon25\snext47 ul 1;}{
+\s48\fi-180\li1260\tx1260 \f20 \sbasedon26\snext48 ul 2;}{\s49\fi-180\li1620\tx1620 \f20 \sbasedon27\snext49 ul 3;}{\s50\fi-180\li1980\tx1980 \f20 \sbasedon28\snext50 ul 4;}{\s51\fi-1260\li3420\tx3420 \f20 \sbasedon0\snext51 ul 5;}{\s52\li360\sb120\sa120
+\brdrb\brdrth \f20 \sbasedon0\snext0 hr;}}{\info{\title rtftohtml A Filter to Translate RTF to HTML}{\author Chris Hector - cjh@cray.com}}\widowctrl\ftnbj\fracwidth \sectd \sbknone\linemod0\linex0\cols1\endnhere \pard\plain \s255\li360\sb240\sa240\keepn
+\brdrb\brdrs \b\f20\fs36 rtftohtml - A Filter to Translate RTF to HTML\par
+\pard\plain \li360 \f20 {\b RTF} is a document formatting language developed by Microsoft. There are many word processing packages (Microsoft Word, Word Perfect, Frame Maker...) that can read or write {\b RTF} format files. {\i rtftohtml}
+ was designed to translate existing {\b RTF} documents into {\b HTML} - the format of the {\b W}orld {\b W}ide {\b W}eb. {\i rtftohtml} can also be used to author new documents specifically for the {\b WWW}.\par
+\par
+The latest version of {\i rtftohtml} is 2.6\par
+\par
+\pard\plain \s24\fi-180\li540\tx540 \f20 \bullet \tab {\v\uldb Users_Guide.html}{\uldb rtftohtml Users Guide\par
+}\bullet \tab {\v\uldb README2.6.html}{\uldb What's new in version 2.6}\par
+\bullet \tab {\v\uldb buglist.html}{\uldb Known Bugs.}\par
+\bullet \tab {\b\fs36 {\object\objautlink{\*\objname Untitled8_3}\linkself{\*\objclass WordDocument}{\*\objtopic Untitled3}{\*\objitem LINK3}{\*\objdata 01020000010000000d000000576f7264446f63756d656e74000a000000556e7469746c65643300060000004c494e4b3300
+000000000000000000000000
+01020000050000000d0000004d45544146494c455049435400ec09000014f6ffffa80100000800ec09ec095621010009000003bf00000000005a00000000001500000026060f001f00ffffffff0400150000004d7245640f004d6963726f736f6674204472617700005a00000026060f00a9004d72456402009f0000009d00
+0100840084008002a5010000000000000100030000000000ffffff0000000000ffffff000100000100000001000000000001000000000000010c0048656c7600a20203008a00ff00290003015f0b020011000301af0d0200120003100000000000ffffff00c0c0c00080808000ff00000080000000ffff00008080000000ff
+00000080000000ffff00008080000000ff0000008000ff00ff0080008000000e00000026060f0012004d7245640300080000000000000040024002050000000b0200000000050000000c0240024002030000001e000400000003010800050000000102ffffff00050000000902000000000400000007010300040000000401
+0d0004000000060101000400000002010200030000001e00040000002701ffff040000002701ffff0300000000008b46048b56068946f88956fa8b46088b560a8946fc8956fe837efa007507817ef800}{\result Sample Documents}}}\par
+\bullet \tab {\b\fs36 {\object\objautlink{\*\objname Untitled8_2}\linkself{\*\objclass WordDocument}{\*\objtopic Untitled3}{\*\objitem LINK2}{\*\objdata 01020000010000000d000000576f7264446f63756d656e74000a000000556e7469746c65643300060000004c494e4b3200
+000000000000000000000000
+01020000050000000d0000004d45544146494c455049435400ec09000014f6ffffa80100000800ec09ec095621010009000003bf00000000005a00000000001500000026060f001f00ffffffff0400150000004d7245640f004d6963726f736f6674204472617700005a00000026060f00a9004d72456402009f0000009d00
+0100840084008002a5010000000000000100030000000000ffffff0000000000ffffff000100000100000001000000000001000000000000010c0048656c7600a20203008a00ff00290003015f0b020011000301af0d0200120003100000000000ffffff00c0c0c00080808000ff00000080000000ffff00008080000000ff
+00000080000000ffff00008080000000ff0000008000ff00ff0080008000000e00000026060f0012004d7245640300080000000000000040024002050000000b0200000000050000000c0240024002030000001e000400000003010800050000000102ffffff00050000000902000000000400000007010300040000000401
+0d0004000000060101000400000002010200030000001e00040000002701ffff040000002701ffff0300000000008b46048b56068946f88956fa8b46088b560a8946fc8956fe837efa007507817ef800}{\result How to Get the Package}}}\par
+\bullet \tab {\v\uldb ftp://ftp.primate.wisc.edu/pub/RTF}{\uldb Tell me more about RTF}\par
+\pard\plain \li360 \f20 \par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 {\*\bkmkstart LINK2\bkmkcoll32 }How to Get the Package{\*\bkmkend LINK2}\par
+\pard\plain \s24\fi-180\li540\tx540 \f20 \bullet \tab {\v\uldb ftp://ftp.cray.com/src/cjh/RTF/latest/src/rtftohtmlsrc.sit}{\uldb The latest ThinkC project and source for the Macintosh}\par
+\bullet \tab {\v\uldb ftp://ftp.cray.com/src/cjh/RTF/latest/binaries/macintosh.sit.hqx}{\uldb Macintosh binary}\par
+\bullet \tab {\v\uldb ftp://ftp.cray.com/src/cjh/RTF/latest/src/unix.tar.Z}{\uldb Source Package for UNIX}\par
+\bullet \tab {\v\uldb ftp://ftp.cray.com/src/cjh/RTF/latest/binaries/sun4.tar.Z}{\uldb sun4 binary}\par
+\bullet \tab {\v\uldb ftp://ftp.cray.com/src/cjh/RTF/latest/binaries/sun4solaris.tar.Z}{\uldb sun4 Solaris binary}\par
+\pard\plain \li360 \f20 \par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs28 See Also\par
+\pard\plain \li360 \f20
+The filter will export graphics to separate files, but does not convert them to GIF or XBM format. If you have graphics in your RTF files, you may be interested in the PBMPLUS package of graphics filters. Included in this package is a translator for PICT g
+raphics (bitmap PICT's only). The package is located {\v\uldb ftp://ftp.ee.lbl.gov/pbmplus10dec91.tar.Z}{\uldb here}.\par
+\par
+\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs36 {\*\bkmkstart LINK3\bkmkcoll32 }Sample Documents{\*\bkmkend LINK3}\par
+\pard\plain \li360 \f20 To get you started, I have a Style Sheet for Microso
+ft Word. This has definitions of the Paragraph styles that I use for authoring Web documents. It renders my RTF versions of the documents in a style that is close to what XMosaic 2.1 displayed (at one time.) \par
+It is located {\v\uldb sample_styles.rtf}{\uldb here.}\par
+The HTML version is {\v\uldb sample_styles.html}{\uldb here.}\par
+\par
+} \ No newline at end of file
diff --git a/support/w2latex/EXEMPLES/sample_styles.rtf b/support/w2latex/EXEMPLES/sample_styles.rtf
new file mode 100644
index 0000000000..041b343647
--- /dev/null
+++ b/support/w2latex/EXEMPLES/sample_styles.rtf
@@ -0,0 +1,146 @@
+{\rtf1\defformat\mac\deff2 {\fonttbl{\f0\fswiss Chicago;}{\f2\froman New York;}{\f3\fswiss Geneva;}{\f4\fmodern Monaco;}{\f5\fscript Venice;}{\f6\fdecor London;}{\f8\fdecor San Francisco;}{\f11\fnil Cairo;}{\f16\fnil Palatino;}{\f20\froman Times;}{\f21\fswiss Helvetica;}
+{\f22\fmodern Courier;}{\f23\ftech Symbol;}{\f34\fnil New Century Schlbk;}{\f1724\fnil Kashmir;}{\f2515\fnil MT Extra;}{\f2853\fnil BobGothic;}{\f2944\fnil Handwriting;}}{\colortbl\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;}{\stylesheet{\s245\li360\sa120 \f20\fs18\up6 \sbasedon0\snext0 footnote reference;}{\s246\li360\sa120 \f20\fs20 \sbasedon0\snext246
+footnote text;}{\s250\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon251\snext0 heading 6;}{\s251\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon252\snext0 heading 5;}{\s252\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon253\snext0 heading 4;}{
+\s253\li360\sb120\sa120\keepn \b\f20\fs28 \sbasedon254\snext0 heading 3;}{\s254\li180\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 \sbasedon255\snext0 heading 2;}{\s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs48 \sbasedon0\snext0 heading 1;}{
+\li360\sa120 \f20 \sbasedon222\snext0 Normal;}{\s1\fi-540\li900\sa120\tx900 \f20 \sbasedon0\snext1 numbered list;}{\s2\fi-540\li1440\sa120\tx1440 \f20 \sbasedon0\snext2 numbered list 1;}{\s3\fi-540\li1980\sa120\tx1980 \f20 \sbasedon0\snext3
+numbered list 2;}{\s4\fi-280\li900\sa120\tx900 \f20 \sbasedon1\snext4 bullet list;}{\s5\fi-280\li1440\sa120\tx1440 \f20 \sbasedon2\snext5 bullet list 1;}{\s6\fi-280\li1980\sa120\tx1980 \f20 \sbasedon3\snext6 bullet list 2;}{
+\s7\fi-3960\li4320\sa120\tx4320 \f20 \sbasedon0\snext7 glossary;}{\s8\fi-3960\li4860\sa120\tx4860 \f20 \sbasedon7\snext8 glossary 1;}{\s9\keep\tx880\tx1740\tx2620\tx3480\tx4320\tx5220\tx6060\tx6940\tx7780 \f22\fs20 \sbasedon0\snext9 pre;}{
+\s10\li360\sa120 \i\f20 \sbasedon0\snext10 address;}{\s11\li1440\ri1440\sa120 \i\f20 \sbasedon0\snext11 blockquote;}{\s12\sb120\sa120\brdrb\brdrth \f20 \sbasedon0\snext0 hr;}{\s13\fi360\tx360\tx3600\tx4320\tx7200\tx10700 \f20 \sbasedon0\snext13 dir;}{
+\s14\fi360\li360\tx720\tx3960\tx4320\tx7560\tx10700 \f20 \sbasedon0\snext14 dir 1;}{\s15\fi360\li720\tx1080\tx4320\tx7920\tx10700 \f20 \sbasedon0\snext15 dir 2;}{\s16\fi-720\li1440\tx1440 \f20 \sbasedon10\snext16 menu 1;}{\s17\fi-720\li1080\tx1080 \f20
+\sbasedon16\snext17 menu;}{\s18\fi-720\li1800\tx1800 \f20 \sbasedon0\snext18 menu 2;}{\s19\fi-3960\li5400\sa120\tx5400 \f20 \sbasedon8\snext19 glossary 2;}{\s20\li360 \f22 \sbasedon0\snext20 HTML;}}{\info{\title Sample rtftohtml Style Sheet}{\author
+Chris Hector}}\margl720\margr720\widowctrl\ftnbj\fracwidth \sectd \sbknone\linemod0\linex0\cols1\endnhere \pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs48 {\fs36 Sample rtftohtml Style Sheet\par
+}\pard\plain \li360 \f20 This is a sample style sheet produced by Microsoft Word on the Macintosh. It is designed to demonstrate the various styles that I use. Of course, you can define your own style sheets and use your own style names - but
+this should be a useful example to get you started.\par
+\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs48 {\fs36 Paragraph Markup\par
+<H1>This is a Level1 heading\par
+}\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 <H2>This is a Level2 heading\par
+}\pard\plain \li360 \f20 \par
+\pard\plain \s253\li360\sb120\sa120\keepn \b\f20\fs28 <H3>This is a Level3 heading\par
+\pard\plain \s252\li360\sb120\sa120\keepn \b\f20\fs28 <H4>This is a Level4 heading\par
+\pard\plain \s251\li360\sb120\sa120\keepn \b\f20\fs28 <H5>This is a Level5 heading\par
+\pard\plain \s250\li360\sb120\sa120\keepn \b\f20\fs28 <H6>This is a Level6 heading\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 <pre> Following is pre-formatted text\par
+\pard\plain \s9\keep\tx880\tx1740\tx2620\tx3480\tx4320\tx5220\tx6060\tx6940\tx7780 \f22\fs20 This is pre-formatted text\par
+tab\tab stops\tab are \tab supposed \tab to be\tab about \tab 8 chars wide\par
+need a total width of 80 columns and a fixed width font like Courier\par
+0 1 2 3 4 5 6 7 8\par
+1234567890123456789012345678901234567890123456789023456789012345678901234567890\par
+ x x x x x x x x x\par
+\tab x\tab x\tab x\tab x\tab x\tab x\tab x\tab x\tab x\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 <address>Following is address text\par
+}\pard\plain \s10\li360\sa120 \i\f20 Here is an address\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 <blockquote>Following is blockquote text\par
+}\pard\plain \s11\li1440\ri1440\sa120 \i\f20 Here is a block quote. Just how long do you thing this should be? I don't know - just keep typing until eventually you fill up several lines.\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 <hr> Following is a paragraph containing no text - it generates an <hr> markup\par
+}\pard\plain \s12\sb120\sa120\brdrb\brdrth \f20 \par
+\pard\plain \li360 \f20 \par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs48 {\fs36 Text markup\par
+}\pard\plain \li360 \f20 {\b Bold}\par
+{\i Italic}\par
+{\ul Underline}\par
+Hidden Text - the text between the parenthesis will be discarded by the filter ({\v Can't See Me})\par
+{\f22 Monospaced fonts like courier will go to <tt>}\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs48 {\fs36 Features\par
+}\pard\plain \li360 \f20 This is a {\b footnote}{\fs18\up6 \chftn {\footnote \pard\plain \li360 \f20 {\fs18\up6 \chftn }\tab This footnote was automatically numbered. You can use your own symbols as well.}} ..\par
+This is a Picture {{\pict\macpict\picw32\pich32
+0b600000000000200020001102ff0c00ffffffff0000000000000000002000000020000000000000001e000c001e00070001000a0007001e0027003e00900004000000000020002000000000002000200007001e0027003e0003000000380000007c01fffffe07fffffe1ffffffe1f00007c3c000038380000003807e00038
+1ff800387ffc00387ffe003c7ffe001cffff000effff0007ffff0000ffffc000ffffe000ffff70007ffe78007ffe38003ffc38001ff8380007e03800000038380000787c0001f0fffffff0ffffffe0ffffff007c00000038000000009880200000000000200020000000000000000000480000004800000000000800010008
+000000000005cb8c3c00000f00000008800000ff0000ffffffffffff0000ffffffffcccc0004ffffffff99990004ffffffff66660004ffffffff33330000ffffffff00000004ffffccccffff0004ffffcccccccc0000ffffcccc99990004ffffcccc66660004ffffcccc33330004ffffcccc00000004ffff9999ffff0004ff
+ff9999cccc0004ffff999999990004ffff999966660004ffff999933330004ffff999900000004ffff6666ffff0000ffff6666cccc0004ffff666699990004ffff666666660000ffff666633330004ffff666600000004ffff3333ffff0004ffff3333cccc0004ffff333399990004ffff333366660004ffff333333330004
+ffff333300000004ffff0000ffff0004ffff0000cccc0004ffff000099990004ffff000066660004ffff000033330004ffff000000000004ccccffffffff0004ccccffffcccc0004ccccffff99990004ccccffff66660004ccccffff33330004ccccffff00000000ccccccccffff0000cccccccccccc0004cccccccc999900
+04cccccccc66660004cccccccc33330004cccccccc00000004cccc9999ffff0004cccc9999cccc0004cccc999999990000cccc999966660004cccc999933330004cccc999900000004cccc6666ffff0004cccc6666cccc0004cccc666699990004cccc666666660004cccc666633330004cccc666600000004cccc3333ffff
+0004cccc3333cccc0004cccc333399990004cccc333366660004cccc333333330004cccc333300000004cccc0000ffff0004cccc0000cccc0004cccc000099990004cccc000066660004cccc000033330004cccc0000000000009999ffffffff00049999ffffcccc00049999ffff999900049999ffff666600049999ffff33
+3300049999ffff000000049999ccccffff00049999cccccccc00049999cccc999900049999cccc666600049999cccc333300049999cccc0000000099999999ffff000499999999cccc0004999999999999000499999999666600049999999933330004999999990000000499996666ffff000499996666cccc000099996666
+9999000499996666666600049999666633330004999966660000000499993333ffff000499993333cccc0004999933339999000499993333666600049999333333330004999933330000000499990000ffff000499990000cccc000499990000999900009999000066660004999900003333000499990000000000046666ff
+ffffff00046666ffffcccc00046666ffff999900046666ffff666600046666ffff333300046666ffff000000046666ccccffff00046666cccccccc00046666cccc999900046666cccc666600046666cccc333300046666cccc0000000466669999ffff000466669999cccc0004666699999999000466669999666600046666
+999933330004666699990000000466666666ffff000066666666cccc0004666666669999000466666666666600046666666633330004666666660000000466663333ffff000466663333cccc0004666633339999000466663333666600046666333333330004666633330000000466660000ffff000466660000cccc000466
+660000999900046666000066660004666600003333000466660000000000043333ffffffff00043333ffffcccc00003333ffff999900043333ffff666600043333ffff333300043333ffff000000043333ccccffff00043333cccccccc00043333cccc999900043333cccc666600043333cccc333300043333cccc00000004
+33339999ffff000433339999cccc0004333399999999000033339999666600043333999933330004333399990000000433336666ffff000433336666cccc0004333366669999000033336666666600043333666633330004333366660000000433333333ffff000433333333cccc0004333333339999000033333333666600
+043333333333330004333333330000000433330000ffff000433330000cccc000033330000999900043333000066660004333300003333000433330000000000040000ffffffff00040000ffffcccc00040000ffff999900040000ffff666600040000ffff333300040000ffff000000040000ccccffff00040000cccccccc
+00040000cccc999900040000cccc666600040000cccc333300040000cccc0000000000009999ffff000400009999cccc0004000099999999000400009999666600040000999933330004000099990000000400006666ffff000400006666cccc00040000666699990004000066666666000400006666333300040000666600
+00000400003333ffff000400003333cccc0004000033339999000400003333666600040000333333330004000033330000000400000000ffff000400000000cccc0004000000009999000400000000666600040000000033330004eeee000000000000dddd000000000004bbbb000000000004aaaa00000000000488880000
+00000004777700000000000455550000000000044444000000000004222200000000000411110000000000040000eeee000000040000dddd000000000000bbbb000000040000aaaa00000004000088880000000400007777000000040000555500000004000044440000000400002222000000040000111100000004000000
+00eeee000000000000dddd000400000000bbbb000400000000aaaa0004000000008888000400000000777700040000000055550004000000004444000400000000222200040000000011110000eeeeeeeeeeee0000dddddddddddd0000bbbbbbbbbbbb0000aaaaaaaaaaaa0000888888888888000077777777777700005555
+55555555000044444444444400002222222222220000111111111111000000000000000000000000002000200007001e0027003e000106e700fe54fe000ae8000054fe7f0054ff000cfa000054ef7ffeab027f54000efc000054eeab007ffeab027f54000efe000054fdabef7ffeab027f540011fe00feab017f54f0000054
+fe7f0054ff000d05000054abab54ed00fe54fe00080400007fab7fe6000c040000abab54f900fbabf40015040000abab54fb0009ababa592c0f99f9fababf60018040000abab54fd0002f5abfafea506f8f8f99fa5ababf700190400007fab54fd000dab9fa5a548c092f8f8c09fa5ababf8001a05000054ab5454fe000dab
+faa5a592a5a592c0f8a59fababf80018fe000654ab540000abc0fda5069fa5a592c0a5fdfeabf90018fd0005547f5400abc0fda502e39f2bfec0039fabfdabf90017fc0004547f54abc0fda509482b92f8c0a5a5fca5abf90017f90011abc0a5c02b482b482bc0f8c0fda5abab547ffb0018f9000cabc0c0a5c02bc02bc02b
+c09f7ffeab02547f54fc0017f90002abab7ffda5047ff8c07f7ffdab030054ab54fd0018f80006ab2b7fa5e3a59ffd7f08c0abab00005454ab54fe0018f8000aababe3fc9f33abfdfa7f9ffeabfe000254ab7ffe0016f70008abab335cfc5cabfd7ffeabfd000254ababfe0013f60003ababfc69fefdfeabfc000254ababfe
+000cf400fbabfa000254ababfe0008e700027fab7ffe000e010000fe54ed000354abab54fe0010010054fe7f0054f00001547ffeabfd000e01547ffeabef7ffeab017f54fd000e01547ffeab007feeab015454fc000b01547ffeabef7f0054f90009010054fe7f0054e70007010000fe54e6000000ff}}
+ which will be either inlined or linked to by an HREF.\par
+This is a picture {\v\uldb ftp://ftp.primate.wisc.edu/pub/RTF}{\uldb {\pict\macpict\picw32\pich32
+0b400000000000200020001102ff0c00ffffffff0000000000000000002000000020000000000000001e000c001e00070001000a0007001e0027003e00900004000000000020002000000000002000200007001e0027003e00030003000000070000000e0000001ffc00007fff0001ffff8003ffffc00fffffe00ffffff01f
+fffff83ffffff87ffffffc7ffffffcfffffffefffffffefffffffefffffffefffffffefffffffe7ffffffe7ffffffe3ffffffc3ffffffc1ffffff80ffffff807fffff003ffffe001ffffc000ffff80007ffe00001ff00000000000009880200000000000200020000000000000000000480000004800000000000800010008
+000000000005cb8c001e000000000008800000ff0000ffffffffffff0000ffffffffcccc0004ffffffff99990004ffffffff66660004ffffffff33330000ffffffff00000004ffffccccffff0004ffffcccccccc0000ffffcccc99990004ffffcccc66660004ffffcccc33330004ffffcccc00000004ffff9999ffff0004ff
+ff9999cccc0004ffff999999990004ffff999966660004ffff999933330004ffff999900000004ffff6666ffff0000ffff6666cccc0004ffff666699990004ffff666666660000ffff666633330004ffff666600000004ffff3333ffff0004ffff3333cccc0004ffff333399990004ffff333366660004ffff333333330004
+ffff333300000004ffff0000ffff0004ffff0000cccc0004ffff000099990004ffff000066660004ffff000033330004ffff000000000004ccccffffffff0004ccccffffcccc0004ccccffff99990004ccccffff66660004ccccffff33330004ccccffff00000000ccccccccffff0000cccccccccccc0004cccccccc999900
+04cccccccc66660004cccccccc33330004cccccccc00000004cccc9999ffff0004cccc9999cccc0004cccc999999990000cccc999966660004cccc999933330004cccc999900000004cccc6666ffff0004cccc6666cccc0004cccc666699990004cccc666666660004cccc666633330004cccc666600000004cccc3333ffff
+0004cccc3333cccc0004cccc333399990004cccc333366660004cccc333333330004cccc333300000004cccc0000ffff0004cccc0000cccc0004cccc000099990004cccc000066660004cccc000033330004cccc0000000000009999ffffffff00049999ffffcccc00049999ffff999900049999ffff666600049999ffff33
+3300049999ffff000000049999ccccffff00049999cccccccc00049999cccc999900049999cccc666600049999cccc333300049999cccc0000000099999999ffff000499999999cccc0004999999999999000499999999666600049999999933330004999999990000000499996666ffff000499996666cccc000099996666
+9999000499996666666600049999666633330004999966660000000499993333ffff000499993333cccc0004999933339999000499993333666600049999333333330004999933330000000499990000ffff000499990000cccc000499990000999900009999000066660004999900003333000499990000000000046666ff
+ffffff00046666ffffcccc00046666ffff999900046666ffff666600046666ffff333300046666ffff000000046666ccccffff00046666cccccccc00046666cccc999900046666cccc666600046666cccc333300046666cccc0000000466669999ffff000466669999cccc0004666699999999000466669999666600046666
+999933330004666699990000000466666666ffff000066666666cccc0004666666669999000466666666666600046666666633330004666666660000000466663333ffff000466663333cccc0004666633339999000466663333666600046666333333330004666633330000000466660000ffff000466660000cccc000466
+660000999900046666000066660004666600003333000466660000000000043333ffffffff00043333ffffcccc00003333ffff999900043333ffff666600043333ffff333300043333ffff000000043333ccccffff00043333cccccccc00043333cccc999900043333cccc666600043333cccc333300043333cccc00000004
+33339999ffff000433339999cccc0004333399999999000033339999666600043333999933330004333399990000000433336666ffff000433336666cccc0004333366669999000033336666666600043333666633330004333366660000000433333333ffff000433333333cccc0004333333339999000033333333666600
+043333333333330004333333330000000433330000ffff000433330000cccc000033330000999900043333000066660004333300003333000433330000000000040000ffffffff00040000ffffcccc00040000ffff999900040000ffff666600040000ffff333300040000ffff000000040000ccccffff00040000cccccccc
+00040000cccc999900040000cccc666600040000cccc333300040000cccc0000000000009999ffff000400009999cccc0004000099999999000400009999666600040000999933330004000099990000000400006666ffff000400006666cccc00040000666699990004000066666666000400006666333300040000666600
+00000400003333ffff000400003333cccc0004000033339999000400003333666600040000333333330004000033330000000400000000ffff000400000000cccc0004000000009999000400000000666600040000000033330004eeee000000000000dddd000000000004bbbb000000000004aaaa00000000000488880000
+00000004777700000000000455550000000000044444000000000004222200000000000411110000000000040000eeee000000040000dddd000000000000bbbb000000040000aaaa00000004000088880000000400007777000000040000555500000004000044440000000400002222000000040000111100000004000000
+00eeee000000000000dddd000400000000bbbb000400000000aaaa0004000000008888000400000000777700040000000055550004000000004444000400000000222200040000000011110000eeeeeeeeeeee0000dddddddddddd0000bbbbbbbbbbbb0000aaaaaaaaaaaa0000888888888888000077777777777700005555
+55555555000044444444444400002222222222220000111111111111000000000000000000000000002000200007001e0027003e000107f30001d8d8f10006f400fed8f10006f500fed8f00009f60001d8c0f8d8f7000bf800fdd801c0c0f8d8f90013fa00fdd809c0d8c0d8d800d800d800fdd8fa0012fb00fcd8fdc006d8
+0000d800d800fdd8fb000efd00fbd8fbc000d8fc00fcd8fc0015fd00fdd80100d8fec002d8c0c0fcd80000fbd8fd0012fe00fdd80100d8fac001d8d8fec0f9d8fe0018010000fdd8fe0000d8fcc001d8d8fec0fcd80000fed8fe00180000fdd8fd0000d8fec002d8c0d8fec0fcd8fe00fed8ff001a0000fed8010000fed801
+c0d8fac0fcd801c0d8fe0003d8d8000018fed80000fed8fcc000d8fdc0fcd802c0c0d8fe00fed800000cfcd8f6c0fbd8fec0fbd8000015fed8fec001d8d8fac0fcd802c0d8d8fcc0fed8000019fed804c0c0d800d8fbc0fdd8fdc009d8c0c0d8d8c0c0d8d80017fcd8fe0000d8fdc0fdd8fdc005d8c0c0d8c0c0fdd8000014
+fed8fc0000d8fec0fdd8fcc0fed8fcc002d8d800110000fed8fc0001d8c0fcd8f5c0fed80000100000fed8fb00fcd8f5c004d800d8d80010010000fed8fd00fcd8f3c001d8d8ff0011010000fed80200d800fcd8f3c0fed8ff000efe00fed80000fcd8f3c0fed8fe0011fd00fad80100d8fdc000d8fac0fdd8fe000ffc00fc
+d8010000fcd8fac0fdd8fd000efb00fed8fe0000d8f7c0fdd8fc000efa00fed8020000d8f8c0fdd8fb0010f900fed80100d8fbc001d8c0fdd8fa000df800fcd803c0d8d8c0fcd8f80006f600f8d8f50002e1000000ff}}that will be used as the "HOT" part of a hypertext link.\par
+This is a manually generated hypertext {\v\uldb ftp://ftp.primate.wisc.edu/pub/RTF}{\uldb link} to an external document.\par
+This is a hypertext link to a {{\object\objautlink{\*\objname Untitled4}\linkself{\*\objclass WordDocument}{\*\objtopic Untitled21}{\*\objitem LINK1}{\*\objdata 01020000010000000d000000576f7264446f63756d656e74000b000000556e7469746c656432310006000000
+4c494e4b3100000000000000000000000000
+01020000050000000d0000004d45544146494c455049435400ec09000014f6ffffa80100000800ec09ec095621010009000003bf00000000005a00000000001500000026060f001f00ffffffff0400150000004d7245640f004d6963726f736f6674204472617700005a00000026060f00a9004d72456402009f0000009d00
+0100840084008002a5010000000000000100030000000000ffffff0000000000ffffff000100000100000001000000000001000000000000010c0048656c7600a20203008a00ff00290003015f0b020011000301af0d0200120003100000000000ffffff00c0c0c00080808000ff00000080000000ffff00008080000000ff
+00000080000000ffff00008080000000ff0000008000ff00ff0080008000000e00000026060f0012004d7245640300080000000000000040024002050000000b0200000000050000000c0240024002030000001e000400000003010800050000000102ffffff00050000000902000000000400000007010300040000000401
+0d0004000000060101000400000002010200030000001e00040000002701ffff040000002701ffff0300000000008b46048b56068946f88956fa8b46088b560a8946fc8956fe837efa007507817ef800}{\result target }}}
+somewhere else within the same document. This was created with a copy/paste-link.\par
+This is another hypertext link to a {\v\uldb #TargetName}{\uldb target} somewhere else within the same document. This was created manually and the target name must be as well.\par
+\trowd \trgaph80\trleft-80 \clshdng0\cellx2620\clshdng0\cellx5320\clshdng0\cellx7120\clshdng0\cellx8640\pard \li360\intbl This is a table\cell
+This table has four columns and each column will be translated into a <pre> block that roughly approximates this layout\cell right justified\cell centered text\cell \pard \intbl \row \trowd \trgaph80\trleft-80 \clshdng0\cellx2620\clshdng0\cellx5320
+\clshdng0\cellx7120\clshdng0\cellx8640\pard \li360\intbl This is the second row of the same table.\cell Hows it look?\cell Good?\cell Bad?\cell \pard \intbl \row \pard \li360 The following text {\shad\v
+will be copied directly to the HTML <i>output</i> file - with <b>markup</b> included.\par
+}\pard\plain \s20\li360 \f22 This is Literal HTML as well - but uses the <b>HTML</b>paragraph style, and is therefore more readable.\par
+\pard\plain \s255\li360\sb240\sa240\keepn\brdrb\brdrs \b\f20\fs48 {\fs36 Lists\par
+}\pard\plain \li360\sa120 \f20
+In order to create the illusion of nesting within an RTF document, we need to create a separate style for each level of indentation. I chose 6 as the maximum level of nesting that I care about, but rtftohtml can support as many as you want. This yeilds "ol
+", "ol 1", "ol 2", ... ,"ol 5". Now, in addition we have another issue with lists. The HTML bullet and numbered lists will prepend a bullet or number to your text. If you already have a bullet or number, you have three options:\par
+\pard\plain \s1\fi-540\li900\sa120\tx900 \f20 1)\tab
+Translate your list elements to the HTML <dl> markup, which allows you to preserve the numbers or bullets that you are using in the RTF form of the document. This results in some pretty ugly display using Mosaic.\par
+2)\tab Strip off the bullet or number, and translate those list items to <ol> or <ul>. This is the recommended option.\par
+3)\tab Don't use any markers in the RTF form of the document and translate to <ol> and <ul>.\par
+\pard\plain \li360 \f20 \par
+Both of these options exist with the rtftohtml filter, and I have default styles for each. In order that the filter can decide where a bullet or number ends, we need a separator. The filter expects a tab character to be used. It is {\b REALLY}
+ important that if you are using styles that remove you markers that a tab be present (or you will lose the whole list element.) You also {\b MUST} have a tab character for styles (like the <dl>) that have two parts . So, here they are:\par
+\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 Ordered List styles\par
+}\pard\plain \s1\fi-540\li900\sa120\tx900 \f20 1.\tab level zero element - my markers stripped - This is the recommended style.\par
+\pard\plain \s2\fi-540\li1440\sa120\tx1440 \f20 1.1\tab level one element - my markers stripped - This is the recommended style.\par
+\pard\plain \s3\fi-540\li1980\sa120\tx1980 \f20 1.1.1\tab level two element - my markers stripped - This is the recommended style.\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 Un-Ordered List styles\par
+}\pard\plain \s4\fi-280\li900\sa120\tx900 \f20 \bullet \tab level zero element - my markers stripped - This is the recommended style.\par
+\pard\plain \s5\fi-280\li1440\sa120\tx1440 \f20 o\tab level one element - my markers stripped - This is the recommended style.\par
+\pard\plain \s6\fi-280\li1980\sa120\tx1980 \f20 .\tab level two element - my markers stripped - This is the recommended style.\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 Glossary styles\par
+}\pard\plain \s7\fi-3960\li4320\sa120\tx4320 \f20 This is areasonably large term\tab Here is the definition of the term. Of course this format is used for more than just definitions.\par
+\pard\plain \s8\fi-3960\li4860\sa120\tx4860 \f20 This is areasonably large term\tab Here is the definition of the term. Of course this format is used for more than just definitions.\par
+\pard\plain \s19\fi-3960\li5400\sa120\tx5400 \f20 This is areasonably large term\tab Here is the definition of the term. Of course this format is used for more than just definitions\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 Dir styles\par
+}\pard\plain \s13\fi360\tx360\tx3600\tx4320\tx7200\tx10700 \f20 level zero dir item each \tab is less than 20 chars long\tab and separated by tabs or\tab parmarks\tab and these show up\tab in my docs as three\par
+columns\par
+\pard\plain \s14\fi360\li360\tx720\tx3960\tx4320\tx7560\tx10700 \f20 level one dir item each \tab is less than 20 chars long\tab and separated by tabs\par
+\pard\plain \s15\fi360\li720\tx1080\tx4320\tx7920\tx10700 \f20 level two dir item each \tab is less than 20 chars long\tab and separated by tabs\par
+\pard\plain \s254\li360\sb120\sa120\keepn\brdrb\brdrs \b\f20\fs36 {\fs28 Menu styles\par
+}\pard\plain \s17\fi-720\li1080\tx1080 \f20 level zero element \par
+\pard\plain \s16\fi-720\li1440\tx1440 \f20 level one element \par
+\pard\plain \s18\fi-720\li1800\tx1800 \f20 level two element \par
+\pard\plain \li360 \f20 \par
+\pard \li360\sa120 This is the {\*\bkmkstart LINK1\bkmkcoll32 }target {\*\bkmkend LINK1}of a hypertext link. This target was created by copying the text and pasting a link to it. \par
+\pard \li360 This is another {\outl\v TargetName} target of a hypertext link.. This was created by formatting some text as hidden/outline.\par
+} \ No newline at end of file
diff --git a/support/w2latex/german/ascii.c b/support/w2latex/german/ascii.c
new file mode 100644
index 0000000000..2e7436cee2
--- /dev/null
+++ b/support/w2latex/german/ascii.c
@@ -0,0 +1,509 @@
+#define MAXASCII_PC 256
+#define DEBASCII_PC 128
+#define MAXASCII_MAC 256
+#define DEBASCII_MAC 128
+char ASCII_PC[MAXASCII_PC-DEBASCII_PC][15]=
+{"\?", /* not available in standard TTF font */
+ "\?", /* " */
+ ",", /* 130 */
+ "f",
+ "\"`", /* only with documentstyle[german] */
+ "\\dots ",
+ "\\dag ",
+ "\\ddag ",
+ "\\^{ }",
+ "o/oo",
+ "\\v S",
+ "$<$",
+ "\\OE", /* 140 */
+ "\?", /* not available in standard TTF font */
+ "\?", /* " */
+ "\?", /* " */
+ "\?", /* " */
+ "`",
+ "\'",
+ "``",
+ "\'\'",
+ "$\\bullet$",
+ "--", /* 150 */
+ "---",
+ "$\\sim$",
+ "(TM)",
+ "\\v s",
+ "$>$",
+ "\\oe",
+ "\?", /* not available in standard TTF font */
+ "\?", /* " */
+ "\\\"Y",
+ "~", /* required blank */
+ "!`", /* 161 */
+ "c",
+ "\\pounds ", /* was {\\it\\$} */
+ "\\o ",
+ "Y",
+ "$\\mid$",
+ "\\S ",
+ "\\\"{ }",
+ "\\copyright ",
+ "a",
+ "$\\ll$",
+ "$\\neg$",
+ "-",
+ "(R)",
+ " ",
+ "$\\circ$",
+ "$\\pm$",
+ "$^{2}$",
+ "$^{3}$",
+ "\'",
+ "$\\mu$",
+ "\\P ",
+ "$\\cdot$",
+ "\\c{ }",
+ "$^{1}$",
+ "$^{\\circ}$",
+ "$\\gg$",
+ "1/4",
+ "1/2",
+ "3/4", /* 190 */
+ "?`",
+ "\\`A",
+ "\\'A",
+ "\\^A",
+ "\\~A",
+ "\\\"A",
+ "\\AA ",
+ "\\AE ",
+ "\\c{C}",
+ "\\`E",
+ "\\'E",
+ "\\^E",
+ "\\\"E",
+ "\\`I",
+ "\\'I",
+ "\\^I",
+ "\\\"I",
+ "D",
+ "\\~N",
+ "\\`O",
+ "\\'O",
+ "\\^O",
+ "\\~O",
+ "\\\"O",
+ "$\\times$", /* chg. He. */
+ "\\O ",
+ "\\`U",
+ "\\'U",
+ "\\^U",
+ "\\\"U",
+ "\\'Y",
+ "P", /* A revoir */
+ "\\ss{ }",
+ "\\`a",
+ "\\'a",
+ "\\^a",
+ "\\~a",
+ "\\\"a",
+ "\\aa ",
+ "\\ae ",
+ "\\c c",
+ "\\`e",
+ "\\'e",
+ "\\^e",
+ "\\\"e",
+ "\\`{\\i}",
+ "\\'{\\i}",
+ "\\^{\\i}",
+ "\\\"{\\i}",
+ "d", /* A revoir */
+ "\\~n",
+ "\\`o",
+ "\\'o",
+ "\\^o",
+ "\\~o",
+ "\\\"o",
+ "$\\div$",
+ "\\o ",
+ "\\`u",
+ "\\'u",
+ "\\^u",
+ "\\\"u",
+ "\\'y",
+ "P",
+ "\\\"y"};
+char ASCII_MAC[MAXASCII_MAC-DEBASCII_MAC][15]=
+{"\\\"A",
+ "\\AA ",
+ "\\c{C}",
+ "\\'E",
+ "\\~N",
+ "\\\"O",
+ "\\\"U",
+ "\\'a",
+ "\\`a",
+ "\\^a",
+ "\\\"a",
+ "\\~a",
+ "\\aa ",
+ "\\c{c}",
+ "\\'e",
+ "\\`e",
+ "\\^e",
+ "\\\"e",
+ "\\'i",
+ "\\`i",
+ "\\^i",
+ "\\\"i",
+ "\\~n",
+ "\\'o",
+ "\\`o",
+ "\\^o",
+ "\\\"o",
+ "\\~o",
+ "\\'u",
+ "\\`u",
+ "\\^u",
+ "\\\"u",
+ "\\dag ",
+ "\\circ ",
+ "c", /* A revoir */
+ "\\pounds ", /* was {\\it\\$} */
+ "\\S ",
+ "\\bullet ",
+ "\\P ",
+ "\\ss{ }",
+ "\\copyright ",
+ "\\copyright ",
+ "\\copyright ",
+ "\\' ",
+ "\\\"",
+ "\\neq ",
+ "\\AE ",
+ "\\O ",
+ "\\infty ",
+ "\\pm ",
+ "\\leq ",
+ "\\geq ",
+ "Y",
+ "\\mu ",
+ "\\partial ",
+ "\\Sigma ",
+ "\\Pi ",
+ "\\pi ",
+ "\\int ",
+ "a",
+ "o",
+ "\\Omega ",
+ "\\ae ",
+ "\\o ",
+ "?`",
+ "!`",
+ "\\neg ",
+ "\\surd ",
+ "f",
+ "\\approx ",
+ "\\Delta",
+ "\"",
+ "\"",
+ "\\ldots ",
+ " ",
+ "\\`A",
+ "\\~{A}",
+ "\\~{O}",
+ "\\OE",
+ "\\oe",
+ "-",
+ "\\cdots ",
+ "\"",
+ "\"",
+ "`",
+ "'",
+ "\\div ",
+ "\\diamondsuit ",
+ "\\\"y",
+ "\\\"Y",
+ "/",
+ "\\o ",
+ "\"",
+ "\"",
+ "fi",
+ "fl",
+ "\\ddag ",
+ "\\cdot ",
+ "'",
+ "\"",
+ "\\%",
+ "\\^A",
+ "\\^E",
+ "\\'A",
+ "\\\"E",
+ "\\`E",
+ "\\'I",
+ "\\^I",
+ "\\\"I",
+ "\\`I",
+ "\\'O",
+ "\\^O",
+ "{\\cal Sun}",
+ "\\`O",
+ "\\'U",
+ "\\^U",
+ "\\`U",
+ "\\prime ",
+ "\\^ ",
+ "\\~ ",
+ "\\= ",
+ "\\u ",
+ "\\. ",
+ "\\. ",
+ "\\c ",
+ "\\\"",
+ "\\c ",
+ "\\v "};
+char ASCII_PC_MATH[MAXASCII_PC-DEBASCII_PC][15]=
+{"\?", /* not available in standard TTF font */
+ "\?", /* " */
+ ",", /* 130 */
+ "f",
+ "\"`", /* only with documentstyle[german] */
+ "\\dots ",
+ "\\dag ",
+ "\\ddag ",
+ "\\hat ",
+ "o/oo",
+ "\\v S ",
+ "<",
+ "\\OE ", /* 140 */
+ "\?", /* not available in standard TTF font */
+ "\?", /* " */
+ "\?", /* " */
+ "\?", /* " */
+ "`",
+ "\'",
+ "``",
+ "\'\'",
+ "\\bullet ",
+ "--", /* 150 */
+ "---",
+ "\\sim ",
+ "(TM)",
+ "\\v s ",
+ ">",
+ "\\oe ",
+ "\?", /* not available in standard TTF font */
+ "\?", /* " */
+ "\"Y ",
+ "~", /* required blank */
+ "!`",
+ "c",
+ "\\pounds ", /* was {\\it\\$} */
+ "\\o ",
+ "Y",
+ "\\mid ",
+ "\\S ",
+ "\\\"",
+ "\\copyright ",
+ "a",
+ "\"",
+ "\\neg ",
+ "-",
+ "\\copyright ",
+ "\\= ",
+ "\\circ ",
+ "\\pm ",
+ "^{2}",
+ "^{3}",
+ "'",
+ "\\mu ",
+ "\\P ",
+ "\\cdot ",
+ "\\c ",
+ "^{1}",
+ "^{\\circ}",
+ "\"",
+ "1/4",
+ "1/2",
+ "3/4",
+ "?`",
+ "\\grave A",
+ "\\acute A",
+ "\\hat A",
+ "\\tilde A",
+ "\\ddot A",
+ "\\AA ",
+ "\\AE ",
+ "\\c{C}",
+ "\\grave E",
+ "\\acute E",
+ "\\hat E",
+ "\\ddot E",
+ "\\grave I",
+ "\\acute I",
+ "\\hat I",
+ "\\ddot I",
+ "D",
+ "\\tilde N",
+ "\\grave O",
+ "\\acute O",
+ "\\hat O",
+ "\\tilde O",
+ "\\ddot O",
+ "\\times ", /* chg. He. */
+ "\\O ",
+ "\\grave U",
+ "\\acute U",
+ "\\hat U",
+ "\\ddot U",
+ "\\acute Y",
+ "P", /* A revoir */
+ "\\ss ",
+ "\\grave a",
+ "\\acute a",
+ "\\hat a",
+ "\\tilde a",
+ "\\ddot a",
+ "\\aa ",
+ "\\ae ",
+ "\\c c",
+ "\\grave e",
+ "\\acute e",
+ "\\hat e",
+ "\\ddot e",
+ "\\grave {\\i}",
+ "\\acute {\\i}",
+ "\\hat {\\i}",
+ "\\ddot {\\i}",
+ "d", /* A revoir */
+ "\\tilde n",
+ "\\grave o",
+ "\\acute o",
+ "\\hat o",
+ "\\tilde o",
+ "\\ddot o",
+ "\\div ", /* chg. He. */
+ "\\o ",
+ "\\grave u",
+ "\\acute u",
+ "\\hat u",
+ "\\ddot u",
+ "\\acute y",
+ "P",
+ "\\ddot y"};
+char ASCII_MAC_MATH[MAXASCII_MAC-DEBASCII_MAC][15]=
+{"\\ddot A",
+ "\\AA ",
+ "\\c{C}",
+ "\\acute E",
+ "\\tilde N",
+ "\\ddot O",
+ "\\ddot U",
+ "\\acute a",
+ "\\grave a",
+ "\\hat a",
+ "\\ddot a",
+ "\\tilde a",
+ "\\aa ",
+ "\\c{c}",
+ "\\acute e",
+ "\\grave e",
+ "\\hat e",
+ "\\ddot e",
+ "\\acute i",
+ "\\grave i",
+ "\\hat i",
+ "\\ddot i",
+ "\\tilde n",
+ "\\acute o",
+ "\\grave o",
+ "\\hat o",
+ "\\ddot o",
+ "\\tilde o",
+ "\\acute u",
+ "\\grave u",
+ "\\hat u",
+ "\\ddot u",
+ "\\dag ",
+ "\\circ ",
+ "c", /* A revoir */
+ "\\pounds ", /* was {\\it\\$} */
+ "\\S ",
+ "\\bullet ",
+ "\\P ",
+ "\\ss ",
+ "\\copyright ",
+ "\\copyright ",
+ "\\copyright ",
+ "\\acute ",
+ "\\ddot ",
+ "\\neq ",
+ "\\AE ",
+ "\\O ",
+ "\\infty ",
+ "\\pm ",
+ "\\leq ",
+ "\\geq ",
+ "Y",
+ "\\mu ",
+ "\\partial ",
+ "\\Sigma ",
+ "\\Pi ",
+ "\\pi ",
+ "\\int ",
+ "a",
+ "o",
+ "\\Omega ",
+ "\\ae ",
+ "\\o ",
+ "?`",
+ "!`",
+ "\\neg ",
+ "\\surd ",
+ "f",
+ "\\approx ",
+ "\\Delta",
+ "\"",
+ "\"",
+ "`",
+ "'",
+ "\\div ",
+ "\\diamondsuit ",
+ "\\ddot y",
+ "\\ddot Y",
+ "/",
+ "\\o ",
+ "\"",
+ "\"",
+ "fi",
+ "fl",
+ "\\ddag ",
+ "\\cdot ",
+ "'",
+ "\"",
+ "\\%",
+ "\\hat A",
+ "\\hat E",
+ "\\acute A",
+ "\\ddot E",
+ "\\grave E",
+ "\\acute I",
+ "\\hat I",
+ "\\ddot I",
+ "\\grave I",
+ "\\acute O",
+ "\\hat O",
+ "{\\cal Sun}",
+ "\\grave O",
+ "\\acute U",
+ "\\hat U",
+ "\\grave U",
+ "\\prime ",
+ "\\hat { }",
+ "\\tilde { } ",
+ "\\= ",
+ "\\u ",
+ "\\. ",
+ "\\. ",
+ "\\c ",
+ "\\ddot { }",
+ "\\c ",
+ "\\v "};
diff --git a/support/w2latex/german/changes.de b/support/w2latex/german/changes.de
new file mode 100644
index 0000000000..71aace8cde
--- /dev/null
+++ b/support/w2latex/german/changes.de
@@ -0,0 +1,18 @@
+Changes made by W.Hennings@kfa-juelich.de
+Wilfried Hennings
+Forschungszentrum Juelich GmbH (KFA), ISR-1
+D-52425 Juelich
+email: W.Hennings@kfa-juelich.de
+Phone: (49) 2461 61 5570 Fax: (49) 2461 61 3133
+
+changes marked with He.10.Jan.95
+
+changed files: rtf.ascii.c rtf.tab.c rtf.y
+Reason: support of all special characters in standard TrueType font
+
+added file: pcansi.rtf
+WinWord-file in RTF format,
+contains array of all useable special characters.
+Can be loaded into WinWord and
+can also be converted by w2latex.
+
diff --git a/support/w2latex/german/changes.wh b/support/w2latex/german/changes.wh
new file mode 100644
index 0000000000..b836b6b462
--- /dev/null
+++ b/support/w2latex/german/changes.wh
@@ -0,0 +1,24 @@
+These changes were made for better support of
+the German version of WinWord.
+Please consider these changes as a beta-test-version.
+Comments are welcome.
+
+changes marked with He.10.Jan.95
+
+changed files: rtf.ascii.c rtf.tab.c rtf.y
+Reason: support of all special characters in standard TrueType font
+
+added file: pcansi.rtf
+WinWord-file in RTF format,
+contains array of all useable special characters.
+Can be loaded into WinWord and
+can also be converted by w2latex.
+
+Changes made by W.Hennings@kfa-juelich.de
+Wilfried Hennings
+Forschungszentrum Juelich GmbH (KFA), ISR-1
+D-52425 Juelich
+email: W.Hennings@kfa-juelich.de
+Phone: (49) 2461 61 5570 Fax: (49) 2461 61 3133
+
+
diff --git a/support/w2latex/german/pcansi.rtf b/support/w2latex/german/pcansi.rtf
new file mode 100644
index 0000000000..3ff0026fad
--- /dev/null
+++ b/support/w2latex/german/pcansi.rtf
@@ -0,0 +1,77 @@
+{\rtf1\ansi \deff0\deflang1024{\fonttbl{\f0\froman CG Times;}{\f1\froman Symbol;}{\f2\fswiss Arial;}{\f3\fmodern Courier;}{\f4\froman CG Times;}{\f5\fswiss Univers;}{\f6\fmodern Courier New;}{\f7\froman Times New Roman;}
+{\f8\fswiss GreekMathSymbols;}{\f9\fswiss GeographicSymbols;}{\f10\fswiss MusicalSymbols;}{\f11\fnil Wingdings;}{\f12\fswiss CommonBullets;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;
+\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue127;\red0\green127\blue127;\red0\green127\blue0;\red127\green0\blue127;\red127\green0\blue0;\red127\green127\blue0;\red127\green127\blue127;
+\red192\green192\blue192;}{\stylesheet{\f7\fs20\lang1031 \snext0 Normal;}}{\info{\title Test Sonderzeichen}{\creatim\yr1995\mo2\dy10\hr12\min15}{\revtim\yr1995\mo2\dy10\hr13\min55}{\version3}{\edmins0}{\nofpages3}{\nofwords1650}{\nofchars4995}
+{\vern16433}}\paperw11907\paperh16840\margl851\margr284\margt1418\margb851\gutter0 \deftab567\hyphhotz425\makebackup \sectd \linex0\headery1080\footery1080\colsx709 \pard\plain \sl240\keepn \f7\fs20\lang1031 030\tab 031\tab 032\tab 033\tab 034\tab 035
+\tab 036\tab 037\tab 038\tab 039
+\par \pard \sl240\keepn {\plain \f7\lang1031 \_\tab \-\tab \tab !\tab "\tab #\tab $\tab %\tab &\tab '
+\par }\pard (030 is protected hypeh, 031 is syllable hyphen)
+\par
+\par \pard \sl240\keepn 040\tab 041\tab 042\tab 043\tab 044\tab 045\tab 046\tab 047\tab 048\tab 049
+\par \pard \sl240 {\plain \f7\lang1031 (\tab )\tab *\tab +\tab ,\tab -\tab .\tab /\tab 0\tab 1}
+\par \pard
+\par \pard \sl240\keepn 050\tab 051\tab 052\tab 053\tab 054\tab 055\tab 056\tab 057\tab 058\tab 059
+\par \pard \sl240 {\plain \f7\lang1031 2\tab 3\tab 4\tab 5\tab 6\tab 7\tab 8\tab 9\tab :\tab ;}
+\par \pard
+\par \pard \sl240\keepn 060\tab 061\tab 062\tab 063\tab 064\tab 065\tab 066\tab 067\tab 068\tab 069
+\par \pard \sl240 {\plain \f7\lang1031 <\tab =\tab >\tab ?\tab @}\tab {\plain \f7\lang1031 A\tab B\tab C\tab D\tab E}
+\par \pard
+\par \pard \sl240\keepn 070\tab 071\tab 072\tab 073\tab 074\tab 075\tab 076\tab 077\tab 078\tab 079
+\par \pard {\plain \f7\lang1031 F\tab G\tab H\tab I\tab J}\tab {\plain \f7\lang1031 K\tab L\tab M\tab N\tab O}
+\par \pard
+\par \pard \sl240\keepn 080\tab 081\tab 082\tab 083\tab 084\tab 085\tab 086\tab 087\tab 088\tab 089
+\par \pard \sl240 {\plain \f7\lang1031 P\tab Q\tab R\tab S\tab T\tab U\tab V\tab W\tab X\tab Y}
+\par \pard
+\par \pard \sl240\keepn 090\tab 091\tab 092\tab 093\tab 094\tab 095\tab 096\tab 097\tab 098\tab 099
+\par \pard \sl240 {\plain \f7\lang1031 Z\tab [\tab \\\tab ]\tab ^}\tab {\plain \f7\lang1031 _\tab `\tab a\tab b\tab c}
+\par \pard
+\par \pard \sl240\keepn 0100\tab 0101\tab 0102\tab 0103\tab 0104\tab 0105\tab 0106\tab 0107\tab 0108\tab 0109
+\par \pard {\plain \f7\lang1031 d\tab e\tab f\tab g\tab h} \tab {\plain \f7\lang1031 i\tab j\tab k\tab l\tab m}
+\par \pard
+\par \pard \sl240\keepn 0110\tab 0111\tab 0112\tab 0113\tab 0114\tab 0115\tab 0116\tab 0117\tab 0118\tab 0119
+\par \pard \sl240 {\plain \f7\lang1031 n\tab o\tab p\tab q\tab r\tab s\tab t\tab }{\plain \f7\lang1031 u\tab v\tab w}
+\par \pard
+\par \pard \sl240\keepn 0120\tab 0121\tab 0122\tab 0123\tab 0124\tab 0125\tab 0126\tab \tab 0128\tab 0129
+\par \pard \sl240 {\plain \f7\lang1031 x\tab y\tab z\tab \{\tab |\tab \}\tab ~\tab \tab \'80\tab \'81}
+\par \pard \sl240
+\par \pard \sl240\keepn 0130\tab 0131\tab 0132\tab 0133\tab 0134\tab 0135\tab 0136\tab 0137\tab 0138\tab 0139
+\par \pard {\plain \f7\lang1031 \'82\tab \'83\tab \'84\tab \'85\tab \'86} \tab {\plain \f7\lang1031 \'87\tab \'88\tab \'89\tab \'8a\tab \'8b}
+\par \pard
+\par \pard \sl240\keepn 0140\tab 0141\tab 0142\tab 0143\tab 0144\tab 0145\tab 0146\tab 0147\tab 0148\tab 0149
+\par \pard \sl240 {\plain \f7\lang1031 \'8c\tab \'8d\tab \'8e\tab \'8f\tab \'90\tab \lquote \tab \rquote \tab \ldblquote \tab \rdblquote \tab \bullet } {\plain \f7\lang1031
+\par }\pard
+\par \pard \sl240\keepn 0150\tab 0151\tab 0152\tab 0153\tab 0154\tab 0155\tab 0156\tab 0157\tab 0158\tab 0159
+\par \pard \sl240 {\plain \f7\lang1031 \endash \tab \emdash \tab \'98\tab \'99\tab \'9a\tab \'9b\tab \'9c\tab \'9d\tab \'9e\tab \'9f}
+\par \pard \sl240
+\par \pard \sl240\keepn 0160\tab 0161\tab 0162\tab 0163\tab 0164\tab 0165\tab 0166\tab 0167\tab 0168\tab 0169
+\par \pard \sl240\keepn {\plain \f7\lang1031 \~\tab \'a1\tab \'a2\tab \'a3\tab \'a4} \tab {\plain \f7\lang1031 \'a5\tab \'a6\tab \'a7\tab \'a8\tab \'a9}
+\par \pard (0160 is required blank)
+\par
+\par \pard \sl240\keepn 0170\tab 0171\tab 0172\tab 0173\tab 0174\tab 0175\tab 0176\tab 0177\tab 0178\tab 0179
+\par \pard \sl240 {\plain \f7\lang1031 \'aa\tab \'ab\tab \'ac\tab \'ad\tab \'ae\tab \tab \'b0\tab \'b1\tab \'b2\tab \'b3}
+\par \pard
+\par \pard \sl240\keepn 0180\tab 0181\tab 0182\tab 0183\tab 0184\tab 0185\tab 0186\tab 0187\tab 0188\tab 0189
+\par \pard \sl240 {\plain \f7\lang1031 \'b4\tab \'b5\tab \'b6\tab \'b7\tab \'b8\tab \'b9\tab \'ba\tab \'bb\tab \'bc\tab \'bd}
+\par \pard
+\par \pard \sl240\keepn 0190\tab 0191\tab 0192\tab 0193\tab 0194\tab 0195\tab 0196\tab 0197\tab 0198\tab 0199
+\par \pard \sl240 {\plain \f7\lang1031 \'be\tab \'bf\tab \'c0\tab \'c1\tab \'c2} \tab {\plain \f7\lang1031 \'c3\tab \'c4\tab \'c5\tab \'c6\tab \'c7}
+\par \pard \sl240
+\par \pard \sl240\keepn 0200\tab 0201\tab 0202\tab 0203\tab 0204\tab 0205\tab 0206\tab 0207\tab 0208\tab 0209
+\par \pard \sl240 {\plain \f7\lang1031 \'c8\tab \'c9\tab \'ca\tab \'cb\tab \'cc\tab \'cd\tab \'ce\tab \'cf\tab \'d0\tab \'d1}
+\par \pard
+\par \pard \sl240\keepn 0210\tab 0211\tab 0212\tab 0213\tab 0214\tab 0215\tab 0216\tab 0217\tab 0218\tab 0219
+\par \pard \sl240 {\plain \f7\lang1031 \'d2\tab \'d3\tab \'d4\tab \'d5\tab \'d6\tab \'d7\tab \'d8\tab \'d9\tab \'da\tab \'db}
+\par \pard
+\par \pard \sl240\keepn 0220\tab 0221\tab 0222\tab 0223\tab 0224\tab 0225\tab 0226\tab 0227\tab 0228\tab 0229
+\par \pard {\plain \f7\lang1031 \'dc\tab \'dd\tab \'de\tab \'df\tab \'e0} \tab {\plain \f7\lang1031 \'e1\tab \'e2\tab \'e3\tab \'e4\tab \'e5}
+\par \pard
+\par \pard \sl240\keepn 0230\tab 0231\tab 0232\tab 0233\tab 0234\tab 0235\tab 0236\tab 0237\tab 0238\tab 0239
+\par \pard \sl240 {\plain \f7\lang1031 \'e6\tab \'e7\tab \'e8\tab \'e9\tab \'ea\tab \'eb\tab \'ec\tab \'ed\tab \'ee\tab \'ef}
+\par \pard
+\par \pard \sl240\keepn 0240\tab 0241\tab 0242\tab 0243\tab 0244\tab 0245\tab 0246\tab 0247\tab 0248\tab 0249
+\par \pard \sl240 {\plain \f7\lang1031 \'f0\tab \'f1\tab \'f2\tab \'f3\tab \'f4\tab \'f5\tab \'f6\tab \'f7\tab \'f8\tab \'f9}
+\par \pard
+\par \pard \sl240\keepn 0250\tab 0251\tab 0252\tab 0253\tab 0254\tab 0255
+\par \pard {\plain \f7\lang1031 \'fa\tab \'fb\tab \'fc\tab \'fd\tab \'fe\tab \'ff}
+\par \pard
+\par } \ No newline at end of file
diff --git a/support/w2latex/german/rtf.y b/support/w2latex/german/rtf.y
new file mode 100644
index 0000000000..06be2068eb
--- /dev/null
+++ b/support/w2latex/german/rtf.y
@@ -0,0 +1,3027 @@
+%{
+ /* Declarations en C */
+/* Changes made by W.Hennings@kfa-juelich.de marked with "He." */
+#include <stdio.h>
+#include <stdlib.h>
+#define YYDEBUG 1
+#include <malloc.h>
+/*#define fprintf if(!FLAG_DebutTeX) {;} else fprintf*/
+#define ifDTfprintf if(!FLAG_DebutTeX) {;} else fprintf
+#define LF_FNIL 1
+#define LF_FROMAN 2
+#define LF_FSWISS 3
+#define LF_FMODERN 4
+#define LF_FSCRIPT 5
+#define LF_FDECOR 6
+#define LF_FTECH 7
+#define LF_FBIDI 8
+#define CENTER 1
+#define LEFT 2
+#define RIGHT 3
+#define JUST 0
+#define INTINT 0
+#define INTSUM 1
+#define INTPROD 2
+#define BRParentheseO '('
+#define BRAccoladeO '{'
+#define BRSupInfO '<'
+#define BRCrochetO '['
+#define BRParentheseF ')'
+#define BRAccoladeF '}'
+#define BRSupInfF '>'
+#define BRCrochetF ']'
+#define BRPoint '.'
+#include "rtf.ascii.c"
+char calutemp;
+
+char pzIntermStd[]="\\end{minipage}\n\\begin{minipage}";
+char pzIntermFrame[]="\\end{minipage}}\n\\fbox{\\begin{minipage}";
+char * pzIntermDef=pzIntermStd;
+
+char pzEndStd[]="\\end{minipage}\n";
+char * pzEndDef=pzEndStd;
+char pzEndFrame[]="\\end{minipage}}\n";
+
+char pzStartStd[]="\n\\begin{minipage}";
+char * pzStartDef=pzStartStd;
+char pzStartFrame[]="\n\\fbox{\\begin{minipage}";
+
+FILE * entree;
+FILE * sortie;
+FILE * auxiliaire;
+FILE * filetemp;
+FILE * SORT;
+int FLAG_Underline=0;
+int FLAG_Bold=0;
+int FLAG_DebutTeX=0;
+int FLAG_Italique=0;
+int FLAG_FlushLeft=0;
+int FLAG_FlushRight=0;
+int FLAG_Equation=0;
+int FLAG_Center=0;
+int FLAG_Dollars=0;
+int FLAG_FI=0;
+int FLAG_RI=0;
+int FLAG_LI=0;
+int FLAG_Indice=0;
+int FLAG_Exposant=0;
+int FLAG_Integrale=0;
+int FLAG_Symbol=0;
+int FLAG_Suscript=0;
+int FLAG_bracketleft='.';
+int FLAG_bracketright='.';
+int FLAG_SusTab=0;
+int FLAG_CompteTableau=0;
+int FLAG_Tableau=0;
+int FLAG_MatrixAlign=CENTER;
+int FLAG_MatrixCols=1;
+int FLAG_InMatrix=0;
+int FLAG_MatrixColCour=1;
+int FLAG_PICTLargeur=0;
+int FLAG_PICTHauteur=0;
+int FLAG_BorderBot=0;
+int FLAG_Footer=0;
+int FLAG_InPict=0;
+int FLAG_WMetafile=0;
+int FLAG_NIT=1;
+int FLAG_ERROR=0;
+int FLAG_FIRST_ERROR=1;
+int FLAG_EndTeX=0;
+char TAB_PosTabMatrix[]={ ' ', 'c', 'l', 'r' };
+int Num_Col_Tabular=0;
+int ASCII_TABLE=2;
+int lengthLCT=1024;
+int Largeur_Cols[512];
+int cpt,cpt2,cpt3;
+int Num_Max_Col=0;
+int Inter_Col=0;
+char * Ligne_Courante_Tabular;
+typedef struct t_formatDocument
+ {
+ int FDDEFTAB;
+ int FDPAPERW;
+ int FDPAPERH;
+ int FDPSZ;
+ int FDMARGL;
+ int FDMARGR;
+ int FDMARGT;
+ int FDMARGB;
+ int FDFACINGP;
+ int FDGUTTER;
+ int FDMARGMIRROR;
+ int FDLANDSCAPE;
+ int FDPGNSTART;
+ int FDWIDOWCTRL;
+ } t_FormatDocument;
+t_FormatDocument PZ_FD;
+typedef struct t_lfonte
+ {
+ int LF_Fontnum; /* Numero de fonte : Le meme que dans l'ordre de la liste en general */
+ int LF_Fontfamily; /* Famille de fonte: cf les defines */
+ int LF_Fcharset; /* Jeu de caracteres dans la table des polices */
+ int LF_Fprq; /* 'Pitch' de la police dans la table de caracteres */
+ char * LF_Fontname; /* Nom de la fonte */
+ char * LF_TexEquiv; /* Equivalent TeX */
+ struct t_lfonte * suiv;/* Maillon suivant */
+ } t_LFonte, *p_LFonte;
+typedef struct t_ConTeXte
+ {
+ int EtatTexte; /* CENTER ou RIGHT ou LEFT */
+ struct t_ConTeXte * suiv;
+ struct t_ConTeXte * prec;
+ /* Pour l'instant ca nous suffit */
+ } t_contexte, * p_contexte;
+p_contexte DebLisContextes=NULL;
+p_contexte ContextActuel=NULL;
+p_contexte ContextInitTab=NULL;
+p_LFonte DebLisFontes=NULL;
+p_LFonte FonteActuelle=NULL;
+#include "rtf.fonts.c"
+#include "rtf.context.c"
+%}
+
+
+ /* Declarations YACC - BISON */
+%expect 12179
+%union {
+char calu;
+int numo;
+char* motcomm;
+char carcomm;
+char* pcdata;
+}
+%token <numo> NUM
+ /* INCLURE ICI TOUS LES MOTS DE COMMANDE EN TANT QUE TYPES DE TOKENS TERMINAUX. */
+%token <motcomm> PC
+%token <motcomm> PCA
+%token <motcomm> DEFF
+%token <motcomm> FONTTBL
+%token <motcomm> ANSI
+%token <motcomm> RTF
+%token <motcomm> MAC
+%token <motcomm> F
+%token <motcomm> FNIL
+%token <motcomm> FROMAN
+%token <motcomm> FSWISS
+%token <motcomm> FMODERN
+%token <motcomm> FSCRIPT
+%token <motcomm> FDECOR
+%token <motcomm> FTECH
+%token <motcomm> FBIDI
+%token <motcomm> FCHARSET
+%token <motcomm> FPQR
+%token <carcomm> ETOILE /* represente le caractere de commande '/''*' */
+%token <motcomm> FONTFI_LE
+%token <motcomm> FTNIL
+%token <motcomm> FTTRUETYPE
+%token <motcomm> CPG
+%token <motcomm> FI_LETBL
+%token <motcomm> FI_LE
+%token <motcomm> FID
+%token <motcomm> FRELATIVE
+%token <motcomm> FOSNUM
+%token <motcomm> FVALIDMAC
+%token <motcomm> FVALIDDOS
+%token <motcomm> FVALIDNTFS
+%token <motcomm> FVALIDHPFS
+%token <motcomm> FNETWORK
+%token <motcomm> RED
+%token <motcomm> BLUE
+%token <motcomm> GREEN
+%token <motcomm> STYLESHEET
+%token <motcomm> S
+%token <motcomm> CS
+%token <motcomm> DS
+%token <motcomm> KEYCODE
+%token <motcomm> ADDITIVE
+%token <motcomm> SBASEDON
+%token <motcomm> SHIFT
+%token <motcomm> CTRL
+%token <motcomm> ALT
+%token <motcomm> FN
+%token <motcomm> INFO
+%token <motcomm> SECT
+%token <motcomm> HEADER
+%token <motcomm> FOOTER
+%token <motcomm> HEADERL
+%token <motcomm> HEADERR
+%token <motcomm> HEADERF
+%token <motcomm> FOOTERL
+%token <motcomm> FOOTERR
+%token <motcomm> FOOTERF
+%token <motcomm> PAR
+%token <motcomm> ROW
+%token <motcomm> CELL
+%token <motcomm> FONTEMB
+%token <motcomm> COLORTBL
+%token <motcomm> SUBDOCUMENT
+%token <motcomm> TX
+%token <motcomm> TB
+%token <motcomm> TQR
+%token <motcomm> TQC
+%token <motcomm> TQDEC
+%token <motcomm> TLDOT
+%token <motcomm> TLHYPH
+%token <motcomm> TLUL
+%token <motcomm> TITH
+%token <motcomm> TLEQ
+%token <motcomm> BIN
+%token <motcomm> BDATA
+%token <motcomm> SDATA
+%token <pcdata> PCDATA
+%token <pcdata> SNEXT
+%token <motcomm> ABSH
+%token <motcomm> ABSW
+%token <motcomm> B
+%token <motcomm> BGBDIAG
+%token <motcomm> BGCROSS
+%token <motcomm> BGDCROSS
+%token <motcomm> BGDKBDIAG
+%token <motcomm> BGDKCROSS
+%token <motcomm> BGDKDCROSS
+%token <motcomm> BGDKFDIAG
+%token <motcomm> BGDKHORIZ
+%token <motcomm> BGDKVERT
+%token <motcomm> BGFDIAG
+%token <motcomm> BGHORIZ
+%token <motcomm> BGVERT
+%token <motcomm> BINFSXN
+%token <motcomm> BINSXN
+%token <motcomm> BOX
+%token <motcomm> BRDRB
+%token <motcomm> BRDRBAR
+%token <motcomm> BRDRBTW
+%token <motcomm> BRDRCF
+%token <motcomm> BRDRDASH
+%token <motcomm> BRDRDB
+%token <motcomm> BRDRDOT
+%token <motcomm> BRDRHAIR
+%token <motcomm> BRDRL
+%token <motcomm> BRDRR
+%token <motcomm> BRDRS
+%token <motcomm> BRDRSH
+%token <motcomm> BRDRT
+%token <motcomm> BRDRTH
+%token <motcomm> BRDRW
+%token <motcomm> BRSP
+%token <motcomm> BULLET
+%token <motcomm> CAPS
+%token <motcomm> CB
+%token <motcomm> CBPAT
+%token <motcomm> CCHS
+%token <motcomm> CELLX
+%token <motcomm> CF
+%token <motcomm> CFPAT
+%token <motcomm> CHATN
+%token <motcomm> CHDATE
+%token <motcomm> CHDPA
+%token <motcomm> CHDPL
+%token <motcomm> CHFTN
+%token <motcomm> CHFTNSEP
+%token <motcomm> CHFTNSEPC
+%token <motcomm> CHPGN
+%token <motcomm> CHTIME
+%token <motcomm> CLBGBDIAG
+%token <motcomm> CLBGCROSS
+%token <motcomm> CLBGDCROSS
+%token <motcomm> CLBGDKBDIAG
+%token <motcomm> CLBGDKCROSS
+%token <motcomm> CLBGDKFDIAG
+%token <motcomm> CLBGDKHOR
+%token <motcomm> CLBGDKRCDCROSS
+%token <motcomm> CLBGDKVERT
+%token <motcomm> CLBGFDIAG
+%token <motcomm> CLBGHORIZ
+%token <motcomm> CLBGVERT
+%token <motcomm> CLBRDRB
+%token <motcomm> CLBRDRL
+%token <motcomm> CLBRDRR
+%token <motcomm> CLBRDRT
+%token <motcomm> CLCBPAT
+%token <motcomm> CLCFPAT
+%token <motcomm> CLMGF
+%token <motcomm> CLMGR
+%token <motcomm> CLSHDNG
+%token <motcomm> COLNO
+%token <motcomm> COLS
+%token <motcomm> COLSR
+%token <motcomm> COLSX
+%token <motcomm> COLUMN
+%token <motcomm> COLW
+%token <motcomm> DELETED
+%token <motcomm> DEUXPOINTS
+%token <motcomm> DFRMTXTX
+%token <motcomm> DFRMTXTY
+%token <motcomm> DN
+%token <motcomm> DROPCAPLI
+%token <motcomm> DROPCAPT
+%token <motcomm> DXFRTEXT
+%token <motcomm> EMDASH
+%token <motcomm> EMSPACE
+%token <motcomm> ENDASH
+%token <motcomm> ENDNHERE
+%token <motcomm> ENSPACE
+%token <motcomm> EXPND
+%token <motcomm> EXPNDTW
+%token <motcomm> FI
+%token <motcomm> FOOTERY
+%token <motcomm> FS
+%token <motcomm> GUTTERSXN
+%token <motcomm> HEADERY
+%token <motcomm> HYPHPAR
+%token <motcomm> I
+%token <motcomm> INTBL
+%token <motcomm> KEEP
+%token <motcomm> KEEPN
+%token <motcomm> KERNING
+%token <motcomm> LANG
+%token <motcomm> LDBLQUOTE
+%token <motcomm> LEVEL
+%token <motcomm> LI
+%token <motcomm> LINE
+%token <motcomm> LINEBETCOL
+%token <motcomm> LINECONT
+%token <motcomm> LINEMOD
+%token <motcomm> LINEPPAGE
+%token <motcomm> LINERESTART
+%token <motcomm> LINESTARTS
+%token <motcomm> LINEX
+%token <motcomm> LNDSCPSXN
+%token <motcomm> LQUOTE
+%token <motcomm> LTRCH
+%token <motcomm> LTRMARK
+%token <motcomm> LTRPAR
+%token <motcomm> LTRROW
+%token <motcomm> LTRSECT
+%token <motcomm> MARGBSXN
+%token <motcomm> MARGLSXN
+%token <motcomm> MARGRSXN
+%token <motcomm> MARGTSXN
+%token <motcomm> MOINS
+%token <motcomm> NOLINE
+%token <motcomm> NOSUPERSUB
+%token <motcomm> NOWIDCLTPAR
+%token <motcomm> NOWRAP
+%token <motcomm> OUTL
+%token <motcomm> PAGE
+%token <motcomm> PAGEBB
+%token <motcomm> PARD
+%token <motcomm> PGHSXN
+%token <motcomm> PGNCONT
+%token <motcomm> PGNDEC
+%token <motcomm> PGNGNSH
+%token <motcomm> PGNHN
+%token <motcomm> PGNHNSC
+%token <motcomm> PGNHNSM
+%token <motcomm> PGNHNSN
+%token <motcomm> PGNHNSP
+%token <motcomm> PGNLCLTR
+%token <motcomm> PGNLCRM
+%token <motcomm> PGNRESTART
+%token <motcomm> PGNSTARTS
+%token <motcomm> PGNUCLTR
+%token <motcomm> PGNUCRM
+%token <motcomm> PGNX
+%token <motcomm> PGNY
+%token <motcomm> PGWSXN
+%token <motcomm> PHCOL
+%token <motcomm> PHMRG
+%token <motcomm> PHPG
+%token <motcomm> PIPE
+%token <motcomm> PLAIN
+%token <motcomm> PN
+%token <motcomm> PNACROSS
+%token <motcomm> PNB
+%token <motcomm> PNCAPS
+%token <motcomm> PNCARD
+%token <motcomm> PNCF
+%token <motcomm> PNDEC
+%token <motcomm> PNF
+%token <motcomm> PNFS
+%token <motcomm> PNHANG
+%token <motcomm> PNI
+%token <motcomm> PNINDENT
+%token <motcomm> PNLCLTR
+%token <motcomm> PNLCRM
+%token <motcomm> PNLVL
+%token <motcomm> PNLVLBODY
+%token <motcomm> PNLVLCONT
+%token <motcomm> PNNUMONCE
+%token <motcomm> PNORD
+%token <motcomm> PNORDT
+%token <motcomm> PNPREV
+%token <motcomm> PNQC
+%token <motcomm> PNQL
+%token <motcomm> PNQR
+%token <motcomm> PNRESTART
+%token <motcomm> PNSCAPS
+%token <motcomm> PNSECLVL
+%token <motcomm> PNSP
+%token <motcomm> PNSTART
+%token <motcomm> PNSTRIKE
+%token <motcomm> PNTEXT
+%token <motcomm> PNTXTA
+%token <motcomm> PNTXTB
+%token <motcomm> PNUCLTR
+%token <motcomm> PNUCRM
+%token <motcomm> PNUL
+%token <motcomm> PNULD
+%token <motcomm> PNULDB
+%token <motcomm> PNULNONE
+%token <motcomm> PNULW
+%token <motcomm> PNVLBT
+%token <motcomm> POSNEGX
+%token <motcomm> POSNEGY
+%token <motcomm> POSX
+%token <motcomm> POSXC
+%token <motcomm> POSXI
+%token <motcomm> POSXL
+%token <motcomm> POSXO
+%token <motcomm> POSXR
+%token <motcomm> POSY
+%token <motcomm> POSYB
+%token <motcomm> POSYC
+%token <motcomm> POSYIL
+%token <motcomm> POSYT
+%token <motcomm> PVMRG
+%token <motcomm> PVPARA
+%token <motcomm> PVPG
+%token <motcomm> QC
+%token <motcomm> QJ
+%token <motcomm> QL
+%token <motcomm> QR
+%token <motcomm> RDBLQUOTE
+%token <motcomm> REVAUTH
+%token <motcomm> REVDTTM
+%token <motcomm> REVISED
+%token <motcomm> RI
+%token <motcomm> RQUOTE
+%token <motcomm> RTLCH
+%token <motcomm> RTLMARK
+%token <motcomm> RTLPAR
+%token <motcomm> RTLROW
+%token <motcomm> RTLSECT
+%token <motcomm> SA
+%token <motcomm> SB
+%token <motcomm> SBKCOL
+%token <motcomm> SBKEVEN
+%token <motcomm> SBKNONE
+%token <motcomm> SBKODD
+%token <motcomm> SBKPAGE
+%token <motcomm> SBYS
+%token <motcomm> SCAPS
+%token <motcomm> SECTNUM
+%token <motcomm> SECTD
+%token <motcomm> SETUNLOCKED
+%token <motcomm> SHAD
+%token <motcomm> SHADING
+%token <motcomm> SL
+%token <motcomm> SLMULT
+%token <motcomm> SOFTCOL
+%token <motcomm> SOFTLHEIGHT
+%token <motcomm> SOFTLINE
+%token <motcomm> SOFTPAGE
+%token <motcomm> STRIKE
+%token <motcomm> SUB
+%token <motcomm> SUPER
+%token <motcomm> TAB
+%token <motcomm> TILDE
+%token <motcomm> TITLEPG
+%token <motcomm> TRBRDRB
+%token <motcomm> TRBRDRH
+%token <motcomm> TRBRDRL
+%token <motcomm> TRBRDRR
+%token <motcomm> TRBRDRT
+%token <motcomm> TRBRDRV
+%token <motcomm> TRGAPH
+%token <motcomm> TRHDR
+%token <motcomm> TRKEEP
+%token <motcomm> TRLEFT
+%token <motcomm> TROWD
+%token <motcomm> TRQC
+%token <motcomm> TRQL
+%token <motcomm> TRQR
+%token <motcomm> TRRH
+%token <motcomm> UL
+%token <motcomm> ULD
+%token <motcomm> ULDB
+%token <motcomm> ULNONE
+%token <motcomm> ULW
+%token <motcomm> UNDERSCORE
+%token <motcomm> UP
+%token <motcomm> V
+%token <motcomm> VERTALB
+%token <motcomm> VERTALC
+%token <motcomm> VERTALJ
+%token <motcomm> VERTALT
+%token <motcomm> ZWJ
+%token <motcomm> ZWNJ
+%token <motcomm> AENDDOC
+%token <motcomm> AENDNOTES
+%token <motcomm> AFTNBJ
+%token <motcomm> AFTNCN
+%token <motcomm> AFTNNALC
+%token <motcomm> AFTNNAR
+%token <motcomm> AFTNNAUC
+%token <motcomm> AFTNNCHI
+%token <motcomm> AFTNNRLC
+%token <motcomm> AFTNNRUC
+%token <motcomm> AFTNRESTART
+%token <motcomm> AFTNRSTCONT
+%token <motcomm> AFTNSEP
+%token <motcomm> AFTNSEPC
+%token <motcomm> AFTNSTART
+%token <motcomm> AFTNTJ
+%token <motcomm> ALLPROT
+%token <motcomm> ANNOTPROT
+%token <motcomm> BRKFRM
+%token <motcomm> CVMME
+%token <motcomm> DEFFORMAT
+%token <motcomm> DEFLANG
+%token <motcomm> DEFTAB
+%token <motcomm> DOCTEMP
+%token <motcomm> ENDDOC
+%token <motcomm> ENDNOTES
+%token <motcomm> FACINGP
+%token <motcomm> FET
+%token <motcomm> FORMDISP
+%token <motcomm> FORMPROT
+%token <motcomm> FORMSHADE
+%token <motcomm> FRACWIDTH
+%token <motcomm> FTNBJ
+%token <motcomm> FTNCN
+%token <motcomm> FTNNALC
+%token <motcomm> FTNNAR
+%token <motcomm> FTNNAUC
+%token <motcomm> FTNNCHI
+%token <motcomm> FTNNRLC
+%token <motcomm> FTNNRUC
+%token <motcomm> FTNRESTART
+%token <motcomm> FTNRSTCONT
+%token <motcomm> FTNRSTPG
+%token <motcomm> FTNSEP
+%token <motcomm> FTNSEPC
+%token <motcomm> FTNSTART
+%token <motcomm> FTNTJ
+%token <motcomm> GUTTER
+%token <motcomm> HYPHAUTO
+%token <motcomm> HYPHCAPS
+%token <motcomm> HYPHCONSEC
+%token <motcomm> HYPHHOTZ
+%token <motcomm> LANDSCAPE
+%token <motcomm> LINESTART
+%token <motcomm> LINKSTYLES
+%token <motcomm> LTRDOC
+%token <motcomm> MAKEBACKUP
+%token <motcomm> MARGB
+%token <motcomm> MARGL
+%token <motcomm> MARGMIRROR
+%token <motcomm> MARGR
+%token <motcomm> MARGT
+%token <motcomm> NEXTFILE
+%token <motcomm> NOCOLBAL
+%token <motcomm> NOEXTRASPRL
+%token <motcomm> NOTABIND
+%token <motcomm> OTBLRUL
+%token <motcomm> PAPERH
+%token <motcomm> PAPERW
+%token <motcomm> PGNSTART
+%token <motcomm> PRCOLBL
+%token <motcomm> PRINTDATA
+%token <motcomm> PSOVER
+%token <motcomm> PSZ
+%token <motcomm> REVBAR
+%token <motcomm> REVISIONS
+%token <motcomm> REVPROP
+%token <motcomm> REVPROT
+%token <motcomm> RTLDOC
+%token <motcomm> SPRSSPBF
+%token <motcomm> SPRSTSP
+%token <motcomm> SWPBDR
+%token <motcomm> TEMPLATE
+%token <motcomm> TRANSMF
+%token <motcomm> WIDOWCTRL
+%token <motcomm> WRAPTRSP
+%token <motcomm> APOSTROPHE
+%token <motcomm> FIELD
+%token <motcomm> FLDDIRTY
+%token <motcomm> FLDEDIT
+%token <motcomm> FLDLOCK
+%token <motcomm> FLDPRIV
+%token <motcomm> FLDINST
+%token <motcomm> FLDALT
+%token <motcomm> FLDRSLT
+%token <motcomm> PICT
+%token <motcomm> PZINTEGRALE
+%token <motcomm> PZRACINE
+%token <motcomm> PZFRACTION
+%token <motcomm> PZMATRIX
+%token <motcomm> PZBOX
+%token <motcomm> PZBRACKET
+%token <motcomm> PZLIST
+%token <motcomm> PZOVERSTRIKE
+%token <motcomm> PZSUSCRIPT
+%token <motcomm> EQLC
+%token <motcomm> EQRC
+%token <motcomm> EQBC
+%token <motcomm> EQAL
+%token <motcomm> EQAC
+%token <motcomm> EQAR
+%token <motcomm> EQCO
+%token <motcomm> EQVS
+%token <motcomm> EQHS
+%token <motcomm> EQSU
+%token <motcomm> EQPR
+%token <motcomm> EQIN
+%token <motcomm> EQFC
+%token <motcomm> EQVC
+%token <motcomm> EQAI
+%token <motcomm> EQUP
+%token <motcomm> EQDI
+%token <motcomm> EQDO
+%token <motcomm> EQCROCHETO
+%token <motcomm> EQCROCHETF
+%token <motcomm> EQPARENTHO
+%token <motcomm> EQPARENTHF
+%token <motcomm> EQACCOLADO
+%token <motcomm> EQACCOLADF
+%token <motcomm> EQSUPINFO
+%token <motcomm> EQSUPINFF
+%token <motcomm> FOOTNOTE
+%token <motcomm> PZPEQ
+%token <motcomm> BKMKSTART
+%token <motcomm> BKMKEND
+%token <motcomm> BKMKCOLF
+%token <motcomm> BKMKCOLL
+%token <motcomm> MACPICT
+%token <motcomm> PMMETAFILE
+%token <motcomm> WMETAFILE
+%token <motcomm> DIBITMAP
+%token <motcomm> WBITMAP
+%token <motcomm> WBMBITSPIXEL
+%token <motcomm> WBMPLANES
+%token <motcomm> WBMWIDTHBYTES
+%token <motcomm> PICBMP
+%token <motcomm> PICBPP
+%token <motcomm> YR
+%token <motcomm> MO
+%token <motcomm> DY
+%token <motcomm> HR
+%token <motcomm> MIN
+%token <motcomm> SEC
+%token <motcomm> OBJECT
+%token <motcomm> OBJTOPICT
+%token <motcomm> BKMKPUB
+%token <motcomm> PUBAUTO
+%token <motcomm> PICW
+%token <motcomm> PICH
+%token <motcomm> PICWGOAL
+%token <motcomm> PICHGOAL
+%token <motcomm> PICSCALEX
+%token <motcomm> PICSCALEY
+%token <motcomm> PICSCALED
+%token <motcomm> PICCROPT
+%token <motcomm> PICCROPB
+%token <motcomm> PICCROPR
+%token <motcomm> PICCROPL
+%token <motcomm> OBJEMB
+%token <motcomm> OBJLINK
+%token <motcomm> OBJAUTLINK
+%token <motcomm> OBJSUB
+%token <motcomm> OBJPUB
+%token <motcomm> ONJICEMB
+%token <motcomm> LINKSELF
+%token <motcomm> OBJLOCK
+%token <motcomm> OBJUPDATE
+%token <motcomm> OBJCLASS
+%token <motcomm> OBJNAME
+%token <motcomm> OBJTIME
+%token <motcomm> RSLTMERGE
+%token <motcomm> RSLTRTF
+%token <motcomm> RSLTTXT
+%token <motcomm> RSLTPICT
+%token <motcomm> RSLTBMP
+%token <motcomm> OBJSETSIZE
+%token <motcomm> OBJALIGN
+%token <motcomm> OBJTRANSY
+%token <motcomm> OBJCROPT
+%token <motcomm> OBJCROPB
+%token <motcomm> OBJCROPL
+%token <motcomm> OBJCROPR
+%token <motcomm> OBJSCALEY
+%token <motcomm> OBJSCALEX
+%token <motcomm> OBJH
+%token <motcomm> OBJW
+%token <motcomm> OBJDATA
+%token <motcomm> OBJALIAS
+%token <motcomm> OBJSECT
+%token <motcomm> RESULT
+%token <motcomm> PZPAUTREFIELD
+%token <motcomm> ATRFSTART
+%token <motcomm> ATRFEND
+%token <motcomm> ATNTIME
+%token <motcomm> ATNICN
+%token <motcomm> ANNOTATION
+%token <motcomm> ATNREF
+%token <motcomm> ATNID
+%token <motcomm> ATNAUTHOR
+%token <motcomm> PZPENDEQ
+%token <motcomm> XE
+%token <motcomm> TC
+%token <motcomm> DO
+%token <motcomm> PZERROR
+%type <numo> num
+%type <motcomm> input
+%type <motcomm> Entete
+%type <motcomm> pzdeflang
+%type <motcomm> ppentete
+%type <motcomm> pentete
+%type <motcomm> charset
+%type <motcomm> deffont
+%type <motcomm> pfontinfo
+%type <motcomm> fontinfo
+%type <numo> fontfamily
+%type <numo> fcharset
+%type <numo> fpqr
+%type <motcomm> fontaltname
+%type <motcomm> fontemb
+%type <motcomm> fonttype
+%type <pcdata> fontfname
+%type <motcomm> codepage
+%type <motcomm> filetbl
+%type <motcomm> pfileinfo
+%type <motcomm> fileinfo
+%type <motcomm> pfilesource
+%type <motcomm> relpath
+%type <motcomm> osnum
+%type <motcomm> filesource
+%type <motcomm> colortbl
+%type <motcomm> pcolordef
+%type <motcomm> colordef
+%type <motcomm> red
+%type <motcomm> blue
+%type <motcomm> green
+%type <motcomm> stylesheet
+%type <motcomm> pstyle
+%type <motcomm> style
+%type <motcomm> styledef
+%type <motcomm> keycode
+%type <motcomm> pformatting
+%type <motcomm> formatting
+%type <motcomm> additive
+%type <motcomm> based
+%type <motcomm> next
+%type <motcomm> stylename
+%type <motcomm> keys
+%type <motcomm> shift
+%type <motcomm> alt
+%type <motcomm> ctrl
+%type <motcomm> key
+%type <motcomm> revtbl
+%type <motcomm> Document
+%type <motcomm> pdocfmtpsection
+%type <motcomm> info
+%type <motcomm> docfmt
+%type <motcomm> section
+%type <motcomm> psecfmt
+%type <motcomm> secfmt
+%type <motcomm> hdrftr
+%type <motcomm> hdrctl
+%type <pcdata> ppara
+%type <pcdata> ppar
+%type <pcdata> para
+%type <motcomm> pzpn
+%type <motcomm> pnlevel
+%type <motcomm> pndesc
+%type <motcomm> pnnstyle
+%type <motcomm> pnchrfmt
+%type <motcomm> pnul
+%type <motcomm> pnfmt
+%type <motcomm> pnjust
+%type <motcomm> pntxtb
+%type <motcomm> pntxta
+%type <motcomm> brdrdef
+%type <motcomm> brdrseg
+%type <motcomm> pbrdr
+%type <motcomm> brdrk
+%type <motcomm> brdr
+%type <motcomm> psubdoc
+%type <motcomm> pchar
+%type <motcomm> pcell
+%type <motcomm> pznvpparfmt
+%type <motcomm> parfmt
+%type <motcomm> pznvpapoctl
+%type <motcomm> apoctl
+%type <motcomm> framesize
+%type <motcomm> horzpos
+%type <motcomm> vertpos
+%type <motcomm> txtwrap
+%type <motcomm> dropcap
+%type <motcomm> hframe
+%type <motcomm> hdist
+%type <motcomm> vframe
+%type <motcomm> vdist
+%type <motcomm> pznvshading
+%type <motcomm> pshading
+%type <motcomm> pat
+%type <motcomm> pznvtabdef
+%type <motcomm> tabkind
+%type <motcomm> tablead
+%type <motcomm> zpcelldef
+%type <motcomm> ptbldef
+%type <motcomm> pptbldef
+%type <motcomm> ppptbldef
+%type <motcomm> rowjust
+%type <motcomm> rowwrite
+%type <motcomm> pcelldef
+%type <motcomm> pcellshad
+%type <motcomm> cellpat
+%type <pcdata> charr
+%type <pcdata> pznvcharr
+%type <motcomm> pchrfmt
+%type <pcdata> pdata
+%type <pcdata> pznvpdata
+%type <pcdata> data
+%type <motcomm> chrfmt
+%type <motcomm> atext
+%type <carcomm> spec
+%type <motcomm> picttype
+%type <motcomm> bitmapinfo
+%type <motcomm> pictsize
+%type <motcomm> metafileinfo
+%type <motcomm> do
+%type <motcomm> annot
+%type <motcomm> fieldmod
+%type <motcomm> fieldinst
+%type <motcomm> fieldrslt
+%type <motcomm> idx
+%type <motcomm> toc
+%type <pcdata> pzpvpcdata
+%type <pcdata> ppvformule
+%type <pcdata> pzpcdata
+%type <pcdata> pzpict
+%type <pcdata> pzpictsize
+%type <pcdata> ppzpictsize
+%type <pcdata> pppzpictsize
+%type <pcdata> accopzpn
+%type <numo> pznvnum
+%type <pcdata> etfinpznvcharr
+%type <pcdata> endpict
+%%
+ /* Regles de Grammaire */
+input: /* Vide */
+ | '{' Entete { FLAG_DebutTeX=1;
+ fprintf(SORT,"%%\n%% This document was generated using\n%% ");
+ fprintf(SORT,"w2LaTeX\n%% Bug Reports: jgarmend@cyberspace.org\n%%\n\n");
+ fprintf(SORT,"\\documentstyle[a4,german,11pt]{article}\n");
+ /* previous line changed He.10.Jan.95 */
+ fprintf(SORT,"\n\\parindent = %d pt \n",0/*(PZ_FD.FDDEFTAB)*/);
+ fprintf(SORT,"\n\\oddsidemargin0cm\n");
+ fprintf(SORT,"\n\\evensidemargin0cm\n");
+ fprintf(SORT,"\n\\hoffset%dpt \n",(int)(-72+(PZ_FD.FDMARGL)));
+ fprintf(SORT,"\n\\textwidth%dpt \n",
+ (int)(614-(PZ_FD.FDMARGL)-(PZ_FD.FDMARGR)));
+ fprintf(SORT,"\n\\vsize=%dpt\n",(int)(644-(PZ_FD.FDMARGT)));
+ fprintf(SORT,"\n\\font\\mathex=cmex10\n");
+ fprintf(SORT,"\n\\font\\pzrm=cmr10\n");
+ fprintf(SORT,"\n\\pagestyle{myheadings}\n");
+ fprintf(SORT,"\n\\begin{document}\n");
+ /*parcoursfontes();*/
+ }
+ Document '}' { ifDTfprintf(SORT,"\n\\end{document}\n"); /*parcourscontexts();*/
+ FLAG_EndTeX=1;}
+ | PZERROR section
+ ;
+Entete: /* Vide */
+ | RTF num charset deffont /*?*/ pzdeflang '{' FONTTBL pfontinfo '}' ppentete
+ | RTF num charset pzdeflang deffont /*?*/ '{' FONTTBL pfontinfo '}' ppentete
+ | RTF num DEFFORMAT charset deffont /*?*/ pzdeflang '{' FONTTBL pfontinfo '}' ppentete
+ | RTF num pzdeflang charset deffont /*?*/ pzdeflang '{' FONTTBL pfontinfo '}' ppentete
+ | RTF num pzdeflang DEFFORMAT charset deffont /*?*/ pzdeflang '{' FONTTBL pfontinfo '}' ppentete
+ /* Cette derniere regle a ete imposee par la pratique car certains documents generes
+ avec WORD pour MAC ne suivent pas les conventions.... (sic) */
+ /* Note: Ce document se refere aux specifications de la version 1.2 notee simplement 1.
+ Il s'agit en realite des specifications fournies par Microsoft pour la version
+ de WORD 6.0. Nous essayerons de faire de notre mieux pour assurer la compatibilite
+ avec les formats precedents, qui ne sont pas assures de suivre la norme..(sic) ..
+ Note: deffN definit la fonte a utiliser par defaut dans tout le document. */
+ /* Note: les 2 dernieres lignes ont ete rajoutees pour la compatibilite Applix */
+ ;
+pzdeflang: /* Vide */
+ | DEFLANG num /* Ceci est necessaire pour des raisons de compatibilite
+ avec les versions anterieures de WORD */
+ ;
+ppentete: /* Vide */
+ | '{' pentete '}' ppentete
+ ;
+pentete: /* Vide */
+ | filetbl
+ | colortbl
+ | stylesheet
+ | revtbl
+ | INFO info
+ ;
+charset: ANSI
+ | MAC { ASCII_TABLE=1; }
+ | PC { ASCII_TABLE=2; }
+ | PCA
+ ;
+
+deffont: /* Vide */
+ | DEFF num
+ ;
+
+num: /* Vide */ { $$ = 1; }
+ | NUM { $$ = $1; }
+ ;
+pznvnum: NUM { $$=$1; }
+ ;
+pzpcdata: PCDATA { $$ = $1; }
+ | ';' { $$ = ";"; }
+ | 'e' { $$ = "e"; }
+ | 'q' { $$ = "q"; }
+ | ' ' { $$ = " "; }
+ | ' ' { $$ = " "; }
+ ;
+pzpvpcdata: PCDATA { $$ = $1; }
+ | ';' { $$ = ";"; }
+ | 'e' { $$ = "e"; }
+ | 'q' { $$ = "q"; }
+ | ' ' { $$ = " "; }
+ | ' ' { $$ = " "; }
+ | ',' { $$ = ","; }
+ ;
+pfontinfo: fontinfo
+ | '{' fontinfo '}'
+ | fontinfo pfontinfo
+ | '{' fontinfo '}' pfontinfo
+ ;
+
+fontinfo: F num fontfamily fcharset fpqr fontemb codepage pzpcdata { nouvfonte($2,$3,$4,$5,$8); }
+ fontaltname /*?*/ ';'
+ ;
+
+fontfamily: FNIL { $$=LF_FNIL; }
+ | FROMAN { $$=LF_FROMAN; }
+ | FSWISS { $$=LF_FSWISS; }
+ | FMODERN { $$=LF_FMODERN; }
+ | FSCRIPT { $$=LF_FSCRIPT; }
+ | FDECOR { $$=LF_FDECOR; }
+ | FTECH { $$=LF_FTECH; }
+ | FBIDI { $$=LF_FBIDI; }
+ ;
+ /* Note: L'interet de la famille defontes reside dans le fait que l'aplication recevant le document (et c'est
+ notre cas) pourrait ne pas disposer de toutes les fontes, et en particulier de celle demandee par le texte
+ en RTF. On pourra, en connaissant la famille de la police demandee, trouver la plus proche
+ disponible... */
+fcharset: /* Vide */ { $$=-1; }
+ | FCHARSET num { $$=$2; }
+ ;
+ /* Note: fcharsetN determine le jeux de caracteres de la table choisie. */
+fpqr: /* Vide */ { $$=-1; }
+ | FPQR num { $$=$2; }
+ ;
+ /* Note: Specifies the pitch of a font in the font table. (see Spec for values) */
+
+fontaltname: /* Vide */
+ | '{' ETOILE FONTFI_LE codepage /*?*/ pzpcdata '}'
+ ;
+fontemb: /* Vide */
+ | '{' ETOILE FONTEMB fonttype fontfname /*?*/ data /*?*/ '}'
+ ;
+ /* Note: Il et necessaire d'avoir au moins l'un des deux champs <fontfname> <data>
+ Note: deux types de fontes utilisant cette option: \ftnil (Default) et \fttruetype */
+fonttype: FTNIL
+ | FTTRUETYPE
+ ;
+fontfname: /* Vide */
+ | '{' ETOILE FONTFI_LE codepage /*?*/ pzpcdata '}'
+ ;
+codepage: /* Vide */
+ | CPG num
+ ;
+ /* NOTES: \falt determine une police de 'secours' si celle demandee n'est pas disponible.
+ Syntaxe: '{\*' \falt <Alternate Font Name > '}'
+ NOTES: \cpg determine la correspondance entre les tables de codes et les fontes.
+ (voir spec pour liste de valeurs). */
+
+filetbl: /* Vide */
+ | ETOILE FI_LETBL pfileinfo
+ ;
+
+pfileinfo: '{' fileinfo '}'
+ | pfileinfo '{' fileinfo '}'
+ ;
+fileinfo: FI_LE FID num relpath /*?*/ osnum /*?*/ pfilesource pzpcdata
+ ;
+pfilesource: filesource
+ | pfilesource filesource
+ ;
+
+relpath: /* Vide */
+ | FRELATIVE num
+ ;
+osnum: /* Vide */
+ | FOSNUM num
+ ;
+filesource: FVALIDMAC
+ | FVALIDDOS
+ | FVALIDNTFS
+ | FVALIDHPFS
+ | FNETWORK
+ ;
+
+colortbl: /* Vide */
+ | COLORTBL ';' pcolordef
+ | COLORTBL pcolordef /* Pour les besoins de la cause (specifications non specifiees) */
+ ;
+pcolordef: colordef ';'
+ | pcolordef colordef ';'
+ ;
+
+colordef: red blue green
+ | red green blue
+ | blue red green
+ | blue green red
+ | green red blue
+ | green blue red
+ ;
+red: /* Vide */
+ | RED num
+ ;
+blue: /* Vide */
+ | BLUE num
+ ;
+green: /* Vide */
+ | GREEN num
+ ;
+stylesheet: /* Vide */
+ | STYLESHEET pstyle
+ ;
+pstyle: /* Vide */
+ | style pstyle
+ ;
+style: '{' styledef /*?*/ keycode /*?*/ pformatting additive /*?*/ based /*?*/ next /*?*/
+ stylename /*?*/ ';' '}'
+ | '{' styledef /*?*/ keycode /*?*/ additive /*?*/ based /*?*/ next /*?*/
+ stylename /*?*/ ';' '}'
+ ;
+styledef: /* Vide */
+ | S num
+ | CS num
+ | DS num
+ ;
+ /* Note: \csN determine le style de caractere
+ Note: \sN determine le style du paragraphe
+ Note: \dsN determine le style de la section */
+keycode: /* Vide */
+ | '{' KEYCODE keys '}'
+ ;
+pformatting: formatting
+ | pformatting formatting
+ ;
+formatting: brdrdef
+ | pznvpparfmt
+ | pznvpapoctl
+ | pznvtabdef
+ | pznvshading
+ | chrfmt
+ ;
+additive: /* Vide */
+ | ADDITIVE num
+ ;
+ /* Note: \additive (utilise lors de la definition de styles avec '{\*\cs .... } ) indique que les attributs de
+ style doivent etre supperposes aux attributs courrants. */
+based: /* Vide */
+ | SBASEDON num
+ ;
+ /* Note: \sbasedonN definit le numero du style qui a servi de reference au style actuel. */
+next: /* Vide */
+ | SNEXT num
+ ;
+ /* Note: \snextN definit le prochain style associe avec le style courrant. S'il est omis on conserve
+ le style courrant */
+stylename: /* Vide */
+ | pzpcdata
+ ;
+keys: shift ctrl alt key
+ | shift alt ctrl key
+ | alt shift ctrl key
+ | alt ctrl shift key
+ | ctrl alt shift key
+ | ctrl shift alt key
+ ;
+shift: /* Vide */
+ | SHIFT
+ ;
+alt: /* Vide */
+ | ALT
+ ;
+ctrl: /* Vide */
+ | CTRL
+ ;
+key: FN num
+ | pzpcdata
+ ;
+ /* Note: \fnN determine une touche de fonction (numero N) */
+revtbl: /* Vide */
+ ;
+ /* Note: reference tous les auteurs et modifications effectuees sur les documents en question.
+ Il suffit de l'ignorer pour la lecture du texte. */
+time: YR num
+ | MO num
+ | DY num
+ | HR num
+ | MIN num
+ | SEC num
+ | time YR num
+ | time MO num
+ | time DY num
+ | time HR num
+ | time MIN num
+ | time SEC num
+ ;
+/*****************************************************************************************************************/
+Document: /*pinfo: On le metra dans l'entete*/ pdocfmtpsection
+/* | psection */
+ ;
+pdocfmtpsection: docfmt pdocfmtpsection
+ | section
+ | pdocfmtpsection section
+ | '{' ETOILE NEXTFILE pzpcdata '}' pdocfmtpsection
+ | '{' ETOILE TEMPLATE pzpcdata '}'pdocfmtpsection
+ ;
+info: /* Vide */
+ | '{' '}'
+ ;
+ /* POUR L'INSTANT CE CHAMP LA SERA IGNORE. L'ANALYSEUR LEXICAL NE TRANSMETTRA QUE LES ACCOLADES.
+ PAR LA SUITE NOUS TENTERONS DE L'IMPLEMENTER */
+docfmt: DEFTAB num { PZ_FD.FDDEFTAB=($2/20); }
+ | HYPHHOTZ num
+ | HYPHCONSEC num
+ | HYPHCAPS
+ | HYPHAUTO
+ | LINESTART num
+ | FRACWIDTH
+/* | '{' ETOILE NEXTFILE pzpcdata '}'
+ | '{' ETOILE TEMPLATE pzpcdata '}' */
+ | MAKEBACKUP
+ | DEFFORMAT
+ | PSOVER
+ | DOCTEMP
+ | DEFLANG num
+ /* FOOTNOTES AND ENDNOTES */
+ | FET num
+ | FTNSEP
+ | FTNSEPC
+ | FTNCN
+ | AFTNSEP
+ | AFTNSEPC
+ | AFTNCN
+ | ENDNOTES
+ | ENDDOC
+ | FTNTJ
+ | FTNBJ
+ | AENDNOTES
+ | AENDDOC
+ | AFTNBJ
+ | AFTNTJ
+ | FTNSTART num
+ | AFTNSTART num
+ | FTNRSTPG
+ | FTNRESTART
+ | FTNRSTCONT
+ | AFTNRESTART
+ | AFTNRSTCONT
+ | FTNNAR
+ | FTNNALC
+ | FTNNAUC
+ | FTNNRLC
+ | FTNNRUC
+ | FTNNCHI
+ | AFTNNAR
+ | AFTNNALC
+ | AFTNNAUC
+ | AFTNNRLC
+ | AFTNNRUC
+ | AFTNNCHI
+ /* PAGE INFORMATION */
+ | PAPERW num { PZ_FD.FDPAPERW=($2/20); }
+ | PAPERH num { PZ_FD.FDPAPERH=($2/20); }
+ | PSZ num { PZ_FD.FDPSZ=($2/20); }
+ | MARGL num { PZ_FD.FDMARGL=($2/20); }
+ | MARGR num { PZ_FD.FDMARGR=($2/20); }
+ | MARGT num { PZ_FD.FDMARGT=($2/20); }
+ | MARGB num { PZ_FD.FDMARGB=($2/20); }
+ | FACINGP { PZ_FD.FDFACINGP=1; }
+ | GUTTER num { PZ_FD.FDGUTTER=($2/20); }
+ | MARGMIRROR { PZ_FD.FDMARGMIRROR=1; }
+ | LANDSCAPE { PZ_FD.FDLANDSCAPE=1; }
+ | PGNSTART num { PZ_FD.FDPGNSTART=($2/20); }
+ | WIDOWCTRL { PZ_FD.FDWIDOWCTRL=1; }
+ /* LINKED STYLES */
+ | LINKSTYLES
+ /* COMPATIBILITY OPTIONS */
+ | NOTABIND
+ | WRAPTRSP
+ | PRCOLBL
+ | NOEXTRASPRL
+ | NOCOLBAL
+ | CVMME
+ | SPRSTSP
+ | SPRSSPBF
+ | OTBLRUL
+ | TRANSMF
+ | SWPBDR
+ | BRKFRM
+ /* FORMS */
+ | FORMPROT
+ | ALLPROT
+ | FORMSHADE
+ | FORMDISP
+ | PRINTDATA
+ /* REVISION MARKS */
+ | REVPROT
+ | REVISIONS
+ | REVPROP num
+ | REVBAR num
+ /* ANNOTATIONS */
+ | ANNOTPROT
+ /* BIDIRECTIONAL CONTROLS */
+ | RTLDOC
+ | LTRDOC
+ ;
+section: psecfmt '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ pzhdrftretfin
+ | psecfmt ppara SECT section
+ | '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ pzhdrftretfin
+ | ppara SECT section
+ | psecfmt ppara
+ | ppara
+ ; /* REMARQUE: Avant, c'etaient des ppara */
+psecfmt: secfmt
+ | psecfmt secfmt
+ ;
+secfmt: SECT
+ | SECTD
+ | ENDNHERE
+ | BINFSXN num
+ | BINSXN num
+ | DS num
+ | PNSECLVL num
+ | SETUNLOCKED
+ /* Section Break Command Words */
+ | SBKNONE
+ | SBKCOL
+ | SBKPAGE
+ | SBKEVEN
+ | SBKODD
+ /* Columns Command Words */
+ | COLS num
+ | COLSX num
+ | COLNO num
+ | COLSR num
+ | COLW num
+ | LINEBETCOL
+ /* Line Numbering Command Words */
+ | LINEMOD num
+ | LINEX num
+ | LINESTARTS num
+ | LINERESTART
+ | LINEPPAGE
+ | LINECONT
+ /* Page Information Command Words */
+ | PGWSXN num
+ | PGHSXN num
+ | MARGLSXN num
+ | MARGRSXN num
+ | MARGTSXN num
+ | MARGBSXN num
+ | GUTTERSXN num
+ | LNDSCPSXN
+ | TITLEPG
+ | HEADERY num
+ | FOOTERY num
+ /* Page Numbers Command Words */
+ | PGNSTARTS num
+ | PGNCONT
+ | PGNRESTART
+ | PGNX num
+ | PGNY num
+ | PGNDEC
+ | PGNUCRM
+ | PGNLCRM
+ | PGNUCLTR
+ | PGNLCLTR
+ | PGNHN num
+ | PGNGNSH num
+ | PGNHNSP
+ | PGNHNSC
+ | PGNHNSM
+ | PGNHNSN
+ /* Vertical Alignment Command Words */
+ | VERTALT
+ | VERTALB
+ | VERTALC
+ | VERTALJ
+ /* Bidirectional Controls */
+ | RTLSECT
+ | LTRSECT
+ ;
+ /* Definition des proprietes de formatage des sections. POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+hdrftr: hdrctl ppara
+ | hdrctl ppara '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ ;
+hdrctl: HEADER
+ | FOOTER { FLAG_Footer=1; ifDTfprintf(SORT,"\\markright{");}
+ | HEADERL
+ | HEADERR
+ | HEADERF
+ | FOOTERL
+ | FOOTERR
+ | FOOTERF
+ ;
+ /* Note: Definissent les entetes et les pieds de pages pour les pages de gauche, droite, toutes les
+ pages, ou simplement la premiere. */
+ppara: para
+ | ppara para
+ ;
+declpara: pzmultdeclpara
+ | declpara pzmultdeclpara
+ ;
+pzmultdeclpara: accopzpn brdrdef pznvpparfmt
+ | accopzpn pznvpparfmt brdrdef
+ | brdrdef pznvpparfmt accopzpn
+ | brdrdef accopzpn pznvpparfmt
+ | pznvpparfmt brdrdef accopzpn
+ | pznvpparfmt accopzpn brdrdef
+ | accopzpn brdrdef
+ | brdrdef accopzpn
+ | accopzpn pznvpparfmt
+ | pznvpparfmt accopzpn
+ | brdrdef pznvpparfmt
+ | pznvpparfmt brdrdef
+ | accopzpn
+ | brdrdef
+ | pznvpparfmt
+ ;
+declbispara: pznvpapoctl pznvtabdef pznvshading
+ | pznvpapoctl pznvtabdef
+ | pznvpapoctl pznvshading
+ | pznvtabdef pznvshading
+ | pznvpapoctl
+ | pznvtabdef
+ | pznvshading
+ ;
+pzmottrowd: TROWD { Num_Max_Col=0; Inter_Col=0; FLAG_NIT=0 ;}
+ ;
+para: pzsubquapara
+ | declpara
+ | pzsubquipara
+ | pzsubpara
+ | declbispara psubdoc pzsubterpara
+ | psubdoc pzsubterpara
+ ;
+pzsubquapara: declbispara pzsubpara
+ /* Il semblerait que d'anciennes versions de RTF aient ommis les TRGAPH (sic) */
+ ;
+pzsubquipara: pzsubquapara
+ | pzsubpara
+ | declbispara psubdoc pzsubterpara
+ | psubdoc pzsubterpara
+ ;
+pzsubpara: psubdoc
+ | pzmottrowd pzsubbispara
+ ;
+pzsubbispara: TRGAPH num { Inter_Col=$2/10; } pzpsubpar
+ | pzpsubpar
+ ;
+pzsubterpara: motcell pcell
+ | ppar motcell pcell
+ ;
+
+pzpsubpar: ptbldef pptbldef ppptbldef zpcelldef pcell /* Avant: row */
+ | pptbldef ppptbldef zpcelldef pcell
+ | ptbldef ppptbldef zpcelldef pcell
+ | ptbldef pptbldef zpcelldef pcell
+ | ppptbldef zpcelldef pcell
+ | pptbldef zpcelldef pcell
+ | ptbldef zpcelldef pcell
+ | zpcelldef pcell
+ ;
+ppar: PAR { if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n"); };
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",FLAG_FI);
+ FLAG_Dollars=0;
+ }
+ para { $$=$3; }
+ ;
+ /* Bullets and Numbering */
+accopzpn: '{' { ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ }
+ pzpn
+ '}' {
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==-1 && !FLAG_Indice)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==-1 && !FLAG_Exposant)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ $$="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ }
+ ;
+pzpn: ETOILE PNSECLVL num pndesc
+ | ETOILE PNSECLVL num
+ | PNTEXT charr '}' '{' ETOILE PN pnlevel pndesc
+ | PNTEXT charr '}' '{' ETOILE PN pnlevel
+ | psubdoc
+ ;
+
+pnlevel: PNLVL num
+ | PNVLBT
+ | PNLVLBODY
+ | PNLVLCONT
+ ;
+pndesc: pnnstyle
+ | pnchrfmt
+ | pntxtb
+ | pntxta
+ | pnfmt
+ | pnnstyle pndesc
+ | pnchrfmt pndesc
+ | pntxtb pndesc
+ | pntxta pndesc
+ | pnfmt pndesc
+ ;
+pnnstyle: PNCARD
+ | PNDEC
+ | PNUCLTR
+ | PNUCRM
+ | PNLCLTR
+ | PNLCRM
+ | PNORD
+ | PNORDT
+ ;
+pnchrfmt: PNF num
+ | PNFS num
+ | PNCF num
+ | PNB
+ | PNI
+ | PNCAPS
+ | PNSCAPS
+ | pnul
+ | PNSTRIKE
+ | PNF num pnchrfmt
+ | PNFS num pnchrfmt
+ | PNCF num pnchrfmt
+ | PNB pnchrfmt
+ | PNI pnchrfmt
+ | PNCAPS pnchrfmt
+ | PNSCAPS pnchrfmt
+ | pnul pnchrfmt
+ | PNSTRIKE pnchrfmt
+ ;
+pnul: PNUL
+ | PNULD
+ | PNULDB
+ | PNULNONE
+ | PNULW
+ ;
+pnfmt: PNNUMONCE
+ | PNACROSS
+ | PNINDENT num
+ | PNSP num
+ | PNPREV
+ | pnjust
+ | PNSTART num
+ | PNHANG
+ | PNRESTART
+ | PNNUMONCE pnfmt
+ | PNACROSS pnfmt
+ | PNINDENT num pnfmt
+ | PNSP num pnfmt
+ | PNPREV pnfmt
+ | pnjust pnfmt
+ | PNSTART num pnfmt
+ | PNHANG pnfmt
+ | PNRESTART pnfmt
+ ;
+pnjust: PNQC
+ | PNQL
+ | PNQR
+ ;
+pntxtb: '{' PNTXTB pzpcdata '}'
+ ;
+pntxta: '{' PNTXTA pzpcdata '}'
+ ;
+brdrdef: brdrseg brdrk
+ | brdrseg brdrk pbrdr
+ | brdrdef brdrseg brdrk
+ | brdrdef brdrseg brdrk pbrdr
+ ;
+brdrseg: BRDRT { /*ifDTfprintf(SORT,"\\hline %%\n");*/ }
+ | BRDRB { /*FLAG_BorderBot=1;*/ }
+ | BRDRL
+ | BRDRR
+ | BRDRBTW
+ | BRDRBAR
+ | BOX
+ ;
+brdr: brdrk
+ | brdrk pbrdr
+ ;
+pbrdr: BRDRW num
+ | BRSP num
+ | BRDRCF num
+ | pbrdr BRDRW num
+ | pbrdr BRSP num
+ | pbrdr BRDRCF num
+ ;
+brdrk: BRDRS
+ | BRDRTH
+ | BRDRSH
+ | BRDRDB
+ | BRDRDOT
+ | BRDRDASH
+ | BRDRHAIR
+ ;
+psubdoc: SUBDOCUMENT { $$=""; }
+ | pchar { $$=$1; }
+ ;
+pchar: charr { $$=$1; }
+ | pchar charr {
+ $$ = (char * ) malloc (strlen($1) + strlen($2) + 1);
+ strcpy($$,$1);
+ strcat($$,$2);
+
+ }
+ ;
+motrow: ROW {Num_Col_Tabular=0; FLAG_Tableau=0; FLAG_NIT=1;}
+ ;
+pcell: pzsubterpcell
+ | declpara pzsubquapcell
+ | declbispara pzsubterpcell
+ | declbispara
+ ;
+
+pzsubpcell: pzsubbispcell
+ | ppar pzsubbispcell
+ ;
+pzsubbispcell: motcell pcell
+ | pcell
+ ;
+pzsubterpcell: motrow
+ | psubdoc pzsubpcell
+ | motcell pcell /* Pour les cases de tableaux vides... */
+ ;
+pzsubquapcell: pzsubterpcell
+ | declbispara pzsubterpcell
+ | declbispara pcell /* L'etrange format Mac */
+ ;
+motcell: CELL {
+ if (Num_Col_Tabular<Num_Max_Col)
+ {
+ if (FLAG_DebutTeX) endkeepcontext();
+ ifDTfprintf(SORT,"%s{%dpt}",pzIntermDef,
+ Largeur_Cols[Num_Col_Tabular++]);
+ if (FLAG_DebutTeX) showcontext();
+ }
+ else
+ { if (FLAG_DebutTeX) contextback();
+ ifDTfprintf(SORT,"%s",pzEndDef);
+ }
+ }
+ ;
+pznvpparfmt: parfmt
+ | pznvpparfmt parfmt
+ ;
+parfmt: PAR { if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n");};
+ FLAG_Dollars=0;
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",FLAG_FI);
+ }
+ | PARD { if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",0);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",0);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",0);
+ FLAG_LI=0;
+ FLAG_RI=0;
+ FLAG_FI=0;
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n"); };
+ /*if (Num_Col_Tabular!=0) Num_Max_Col=Num_Col_Tabular;
+ Num_Col_Tabular=0;*/
+ ifDTfprintf(SORT,"\\normalsize ");
+ ifDTfprintf(SORT,"\\pzrm ");
+ if (FLAG_LI!=0)
+ {
+ FLAG_LI=0;
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",0);
+ }
+ if (FLAG_RI!=0)
+ {
+ FLAG_RI=0;
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",0);
+ }
+ if (FLAG_FI!=0)
+ {
+ FLAG_FI=0;
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",0);
+ }
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=JUST;
+ }
+ | S num
+ | HYPHPAR
+ | INTBL { if (FLAG_Tableau==0 && Num_Col_Tabular==0 /* && Num_Col_Tabular<Num_Max_Col*/)
+ {
+ ifDTfprintf(SORT,"%s{%dpt}",pzStartDef,
+ Largeur_Cols[0]+Inter_Col);
+ Num_Col_Tabular=1;
+ ContextInitTab=ContextActuel;
+ if (FLAG_DebutTeX) showcontext();
+ }
+ FLAG_Tableau=1;
+ FLAG_NIT=1;
+ }
+ | KEEP
+ | NOWIDCLTPAR
+ | KEEPN
+ | LEVEL num
+ | NOLINE
+ | PAGEBB
+ | SBYS
+ /* Alignment Command Words */
+ | QL { if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (!FLAG_Footer) { ifDTfprintf(SORT,"\n\\begin{flushleft}\n"); };
+
+ if (ContextActuel==NULL && FLAG_DebutTeX ) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=LEFT;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_FlushLeft=1;
+ }
+ | QR { if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (!FLAG_Footer && FLAG_NIT) { ifDTfprintf(SORT,"\n\\begin{flushright}\n"); };
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=RIGHT;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_FlushRight=1;
+ }
+ | QJ { if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=JUST;
+ }
+ | QC { if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (!FLAG_Footer && FLAG_NIT) { ifDTfprintf(SORT,"\n\\begin{center}\n"); }
+ if (FLAG_Footer) { ifDTfprintf(SORT," \\centerline "); };
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX && !FLAG_Footer) ContextActuel->EtatTexte=CENTER;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_Center=1;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_Dollars=1;
+ }
+ | FI num { if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_FI=(int)($2/20);
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",FLAG_FI);
+ }
+ }
+ | LI num { if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_LI=(int)($2/20);
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ }
+ }
+ | RI num { if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_RI=(int)($2/20);
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ }
+ }
+ /* Spacing Command Words */
+ | SB num
+ | SA num
+ | SL num
+ | SLMULT num
+ /* Subdocuments Command Words */
+ | SUBDOCUMENT num
+ /* Bidirectionnal Controls */
+ | RTLPAR
+ | LTRPAR
+ ;
+ /* Definition des proprietes de formatage des paragraphes. Si le mot de commande \pard n'est pas
+ specifie, le paragraphe recupere les proprietes de son precedent. POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+
+pznvpapoctl: apoctl
+ | apoctl pznvpapoctl
+ ;
+apoctl: framesize
+ | horzpos
+ | vertpos
+ | txtwrap
+ | dropcap
+ | apoctl framesize
+ | apoctl horzpos
+ | apoctl vertpos
+ | apoctl txtwrap
+ | apoctl dropcap
+ ;
+framesize: framesize ABSW num
+ | framesize ABSH num
+ | ABSW num
+ | ABSH num
+ ;
+horzpos: hframe horzpos
+ | hdist horzpos
+ | hframe
+ | hdist
+ ;
+vertpos: vframe vertpos
+ | vdist vertpos
+ | vframe
+ | vdist
+ ;
+txtwrap: NOWRAP txtwrap
+ | DXFRTEXT num txtwrap
+ | DFRMTXTX num txtwrap
+ | DFRMTXTY num txtwrap
+ | NOWRAP
+ | DXFRTEXT num
+ | DFRMTXTX num
+ | DFRMTXTY num
+ ;
+dropcap: DROPCAPLI num dropcap
+ | DROPCAPT num dropcap
+ | DROPCAPLI num
+ | DROPCAPT num
+ ;
+hframe: PHMRG
+ | PHPG
+ | PHCOL
+ ;
+hdist: POSX num
+ | POSNEGX num
+ | POSXC
+ | POSXI
+ | POSXO
+ | POSXL
+ | POSXR
+ ;
+vframe: PVMRG
+ | PVPG
+ | PVPARA
+ ;
+vdist: POSY num
+ | POSNEGY num
+ | POSYT
+ | POSYIL
+ | POSYB
+ | POSYC
+ ;
+
+pznvshading: SHADING num
+ | pat
+ | pshading SHADING num
+ | pshading pat
+ | SHADING num pshading
+ | pat pshading
+ ;
+pshading: CFPAT num
+ | CBPAT num
+ | pshading CFPAT num
+ | pshading CBPAT num
+ ;
+pat: BGHORIZ
+ | BGVERT
+ | BGFDIAG
+ | BGBDIAG
+ | BGCROSS
+ | BGDCROSS
+ | BGDKHORIZ
+ | BGDKVERT
+ | BGDKFDIAG
+ | BGDKBDIAG
+ | BGDKCROSS
+ | BGDKDCROSS
+ ;
+pznvtabdef: tabkind tablead TX num
+ | tabkind tablead TB num
+ | tabkind TX num /* Ajoute a posteriori */
+ | tabkind TB num /* Ajoute a posteriori */
+ | tablead TB num /* Ajoute a posteriori */
+ | tablead TX num /* Ajoute a posteriori */
+ | TX num /* Pour les besoins de la cause... */
+ | pznvtabdef tabkind tablead TX num
+ | pznvtabdef tabkind tablead TB num
+ | pznvtabdef tabkind TX num /* Ajoute a posteriori */
+ | pznvtabdef tabkind TB num /* Ajoute a posteriori */
+ | pznvtabdef tablead TB num /* Ajoute a posteriori */
+ | pznvtabdef tablead TX num /* Ajoute a posteriori */
+ | pznvtabdef TX num /* Pour les besoins de la cause... */
+ ;
+tabkind: TQR
+ | TQC
+ | TQDEC
+ ;
+ /* Note: \tqr : Flush Right Tab
+ Note: \tqc : Centered Tab
+ Note: \tqdes : Decimal Tab */
+tablead: TLDOT
+ | TLHYPH
+ | TLUL
+ | TITH
+ | TLEQ
+ ;
+ /* Note: \tldot : Leader dots
+ Note: \tlhyph : Leader Hyphens
+ Note: \tlul : Leader underline
+ Note: \tith : Leader thick line
+ Note: \tleq :Leader equal sign */
+
+zpcelldef: pcelldef motcellxnum
+ | motcellxnum
+ | pcelldef motcellxnum zpcelldef
+ | motcellxnum zpcelldef
+ ;
+motcellxnum: CELLX num { if (Num_Max_Col==0)
+ Largeur_Cols[Num_Max_Col]=($2/20);
+ if (Num_Max_Col!=0)
+ {
+ cpt=1;
+ Largeur_Cols[Num_Max_Col]=($2/20);
+ while(cpt<=Num_Max_Col)
+ Largeur_Cols[Num_Max_Col]-=Largeur_Cols[Num_Max_Col-(cpt++)];
+ }
+ Num_Max_Col++;}
+ ;
+
+ptbldef: rowjust
+ | rowwrite
+ | ptbldef rowjust
+ | ptbldef rowwrite
+ ;
+pptbldef: TRBRDRT brdr
+ | TRBRDRB brdr
+ | TRBRDRL brdr
+ | TRBRDRR brdr
+ | TRBRDRH brdr
+ | TRBRDRV brdr
+ | TRLEFT num
+ | TRRH num
+ | pptbldef TRBRDRT brdr
+ | pptbldef TRBRDRB brdr
+ | pptbldef TRBRDRL brdr
+ | pptbldef TRBRDRR brdr
+ | pptbldef TRBRDRH brdr
+ | pptbldef TRBRDRV brdr
+ | pptbldef TRLEFT num
+ | pptbldef TRRH num
+ ;
+ppptbldef: TRHDR
+ | TRKEEP
+ | ppptbldef TRHDR
+ | ppptbldef TRKEEP
+ ;
+rowjust: TRQL
+ | TRQR
+ | TRQC
+ ;
+rowwrite: LTRROW
+ | RTLROW
+ ;
+
+pcelldef: CLMGF
+ | CLMGR
+ | CLBRDRT brdr
+ | CLBRDRL brdr
+ | CLBRDRB brdr
+ | CLBRDRR brdr
+ | cellpat pcellshad
+ | pcellshad
+ | CLMGF pcelldef
+ | CLMGR pcelldef
+ | CLBRDRT brdr pcelldef
+ | CLBRDRL brdr pcelldef
+ | CLBRDRB brdr pcelldef
+ | CLBRDRR brdr pcelldef
+ | cellpat pcellshad pcelldef
+ | pcellshad pcelldef
+ ;
+
+pcellshad: CLSHDNG num /* Ou Vide ? Cette ligne n'est pas tres claire dans la Spec. */
+ | CLCFPAT num pcellshad
+ | CLCBPAT num pcellshad
+ | CLCFPAT num
+ | CLCBPAT num
+ | CLSHDNG num pcellshad
+ ;
+cellpat: CLBGHORIZ
+ | CLBGVERT
+ | CLBGFDIAG
+ | CLBGBDIAG
+ | CLBGCROSS
+ | CLBGDCROSS
+ | CLBGDKHOR
+ | CLBGDKVERT
+ | CLBGDKFDIAG
+ | CLBGDKBDIAG
+ | CLBGDKCROSS
+ | CLBGDKRCDCROSS
+ ;
+
+/*............................................................................................
+ TEXTE ET CARACTERES
+ ----------------- */
+
+charr: '{' { ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ }
+ pzincharr '}'
+ {
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==-1 && !FLAG_Indice)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==-1 && !FLAG_Exposant)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ $$="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ }
+ | psecfmt '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ pzhdrftretfin
+ | psecfmt ppara SECT section
+ | '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ pzhdrftretfin
+ | psecfmt ppara
+ /*| atext ; Non traite pour l'instant*/
+ | pchrfmt pdata { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$2;
+ }
+ | pznvpdata { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$1;
+ }
+ | pchrfmt pdata charr { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$2;
+ }
+ | pznvpdata charr { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$1;
+ }
+ | BKMKEND pzpcdata { $$=""; }
+ | BKMKEND pzpcdata charr { $$=""; }
+ | BKMKSTART bkmkcol pzpcdata { $$=""; }
+ | BKMKSTART bkmkcol pzpcdata charr { $$=""; }
+ | BKMKSTART pzpcdata { $$=""; }
+ | BKMKSTART pzpcdata bkmkcol { $$=""; }
+ | BKMKSTART pzpcdata bkmkcol charr { $$=""; }
+ | BKMKSTART pzpcdata charr { $$=""; }
+ | ETOILE BKMKEND pzpcdata { $$=""; }
+ | ETOILE BKMKEND pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART BKMKPUB PUBAUTO pzpubobject pzpcdata { $$=""; }
+ | ETOILE BKMKSTART BKMKPUB PUBAUTO pzpubobject pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART BKMKPUB pzpubobject pzpcdata { $$=""; }
+ | ETOILE BKMKSTART BKMKPUB pzpubobject pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART bkmkcol pzpcdata { $$=""; }
+ | ETOILE BKMKSTART bkmkcol pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART pzpcdata { $$=""; }
+ | ETOILE BKMKSTART pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART pzpcdata bkmkcol { $$=""; }
+ | ETOILE BKMKSTART pzpcdata bkmkcol charr { $$=""; }
+ | ETOILE pzmotfootnote pzetfincharr { $$=""; }
+ | pzmotfootnote pzetfincharr { $$=""; }
+ | FIELD fieldinst fieldrslt { $$=""; }
+ | FIELD fieldinst fieldrslt charr { $$=""; }
+ | FIELD fieldmod /*?*/ fieldinst fieldrslt { $$=""; }
+ | FIELD fieldmod /*?*/ fieldinst fieldrslt charr { $$=""; }
+ | OBJECT /*pzobj objdata result */ { $$=""; }
+ | PICT { FLAG_InPict=1; FLAG_WMetafile=0; }
+ endpict
+ | ETOILE ATNID pzpcdata { $$=""; }
+ | ETOILE ATNAUTHOR pzpcdata { $$=""; }
+ | ETOILE ATNTIME time { $$=""; }
+ | CHATN { $$=""; }
+ charr
+ | ETOILE ATNICN pict charr { $$=""; }
+ | ETOILE ANNOTATION '{' ETOILE ATNREF num '}' ppara { $$=""; }
+ | ETOILE DO { $$=""; }
+ | DO { $$=""; }
+ | XE { $$=""; }
+ | TC { $$=""; }
+ ;
+endpict: pzpict datadata charr { $$=""; if (FLAG_WMetafile)
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ FLAG_PICTLargeur,FLAG_PICTHauteur);
+ else
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ (int)(FLAG_PICTLargeur*20),
+ (int)(FLAG_PICTHauteur*20));
+ FLAG_PICTHauteur=0;
+ FLAG_PICTLargeur=0;
+ FLAG_InPict=0;
+ FLAG_WMetafile=0;
+ }
+ | pzpict datadata { $$=""; if (FLAG_WMetafile)
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ FLAG_PICTLargeur,FLAG_PICTHauteur);
+ else
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ (int)(FLAG_PICTLargeur*20),
+ (int)(FLAG_PICTHauteur*20));
+ FLAG_PICTHauteur=0;
+ FLAG_PICTLargeur=0;
+ FLAG_InPict=0;
+ FLAG_WMetafile=0;
+ }
+ ;
+pzhdrftretfin: ppara SECT section
+ | ppara
+ ;
+pzetfincharr: ppara { /*ifDTfprintf(SORT,"}%%\n");*/ }
+ | ppara { ifDTfprintf(SORT,"}%%\n"); }
+ charr
+ ;
+pzmotfootnote: FOOTNOTE { FLAG_Exposant=0; FLAG_Indice=0;
+ /* fseek(SORT,-strlen("$^{"),1); */
+ ifDTfprintf(SORT,"\\footnote{%%\n"); }
+ ;
+pzincharr: /* Vide: Pour une fois il semblerait bon. */
+ | charr
+ | ppara SECT section
+ | ppara
+ ;
+pchrfmt: chrfmt
+ | chrfmt pchrfmt
+ ;
+pdata: /*data*/ {$$="";} /* Avant: data . Pb avec les specifications */
+ | pdata data { $$ = (char * ) malloc (strlen($1) + strlen($2) + 1);
+ strcpy($$,$1);
+ strcat($$,$2);
+ }
+ ;
+/* La regle suivante s'applique aux champs de donees ne pouvant pas etre vides */
+pznvpdata: data { $$ = (char * ) malloc (strlen($1) + 1);
+ strcpy($$,$1);
+ }
+ | pznvpdata data { $$ = (char * ) malloc (strlen($1) + strlen($2) + 1);
+ strcpy($$,$1);
+ strcat($$,$2);
+ }
+ ;
+data: pzpcdata {
+ $$=$1;
+ if (FLAG_Symbol==0)
+ {
+ printText($1);
+ }
+ if (FLAG_Symbol!=0)
+ { if (FLAG_Equation==0)
+ { ifDTfprintf(SORT,"$");
+ printSymbol($1);
+ ifDTfprintf(SORT,"$");
+ }
+ if (FLAG_Equation!=0) printSymbol($1);
+ }
+ }
+ | pznvnum { $$=""; ifDTfprintf(SORT,"%d",$1); }
+ | spec { $$=""; /*FLAG_Equation=0;*/ }
+ ;
+chrfmt: PLAIN
+ | B num { if ($2==1) { ifDTfprintf(SORT,"\\bf "); FLAG_Bold=1; }
+ if ($2!=1)
+ {
+ if ($2==0) ifDTfprintf(SORT,"\t\t\t ****** Fin de bold \n");
+ if ($2!=0) ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le bold \n");
+ }
+ }
+ | CAPS num
+ | DELETED num
+ | DN num { if (FLAG_DebutTeX)
+ {
+ if (FLAG_Equation==0)
+ {FLAG_Equation=-1;
+ ifDTfprintf(SORT,"$_{");
+ }
+ else
+ { ifDTfprintf(SORT,"_{"); }
+ FLAG_Indice++;
+ }
+ }
+ | SUB
+ | NOSUPERSUB
+ | EXPND num
+ | EXPNDTW num
+ | KERNING num
+ | F num { FonteActuelle=DebLisFontes;
+ while(FonteActuelle!=NULL && FonteActuelle->LF_Fontnum!=$2)
+ FonteActuelle=FonteActuelle->suiv;
+ if (FonteActuelle!=NULL)
+ { if (!strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ FLAG_Symbol=1;
+ if (strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ {
+ ifDTfprintf(SORT,"%s",FonteActuelle->LF_TexEquiv);
+ FLAG_Symbol=0;
+ }
+ }
+ else FLAG_Symbol=0;
+
+ if (FLAG_Bold)
+ ifDTfprintf(SORT,"\\bf ");
+ if (FLAG_Italique)
+ ifDTfprintf(SORT,"\\it ");
+ }
+
+ /* On a besoin de faire une mise a jour de l'aspect (Bold, Italique)
+ car le changement de fonte le detruit (justement)*/
+
+ | FS num { if (FLAG_DebutTeX && FLAG_Equation==0) ifDTfprintf(SORT,"%s",EqTeXTaille($2));
+ FonteActuelle=DebLisFontes;
+ while(FonteActuelle!=NULL && FonteActuelle->LF_Fontnum!=$2)
+ FonteActuelle=FonteActuelle->suiv;
+ if (FonteActuelle!=NULL)
+ { if (!strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ FLAG_Symbol=1;
+ if (strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ {
+ ifDTfprintf(SORT,"%s",FonteActuelle->LF_TexEquiv);
+ FLAG_Symbol=0;
+ }
+ }
+ else FLAG_Symbol=0;
+ /* On est obliges de repositionner les parametres de la fonte... */
+ if (FLAG_Bold)
+ ifDTfprintf(SORT,"\\bf ");
+ if (FLAG_Italique)
+ ifDTfprintf(SORT,"\\it ");
+ }
+ | I num { if ($2==1) { ifDTfprintf(SORT,"\\it "); FLAG_Italique=1; }
+ else if ($2==0) ifDTfprintf(SORT,"\t\t\t ****** Fin de italique \n");
+ else ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le italique \n");
+ }
+ | OUTL num
+ | REVISED
+ | REVAUTH num
+ | REVDTTM num
+ | SCAPS num
+ | SHAD num
+ | STRIKE num
+ | UL num { if (FLAG_DebutTeX)
+ { if ($2==1)
+ {
+ ifDTfprintf(SORT,"\\underline {");
+ FLAG_Underline=1;
+ }
+ else if ($2==0)
+ {
+ ifDTfprintf(SORT,"\t\t\t ****** Fin de underline \n");
+ FLAG_Underline=0;
+ }
+ else ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le underline \n");
+ }
+ }
+ | ULD num
+ | ULDB num
+ | ULNONE
+ | ULW
+ | UP num { if (FLAG_DebutTeX)
+ {
+ if (FLAG_Equation==0)
+ {FLAG_Equation=-1;
+ ifDTfprintf(SORT,"$^{%%\n");
+ }
+ else
+ { ifDTfprintf(SORT,"^{%%\n"); }
+ FLAG_Exposant++;
+ }
+ }
+ | SUPER
+ | V num
+ | CF num
+ | CB num
+ | RTLCH
+ | LTRCH
+ | CS num
+ | CCHS num
+ | LANG num
+ ;
+ /* Proprietes de formatage du texte */
+atext: 'z' /* Code qui ne sera jamais passe par l'analyseur lexical */
+ /* Vide POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+ ;
+ /* Proprietes des characteres associes (pour les langues Arabe et Hebreux) */
+spec: CHDATE { ifDTfprintf(SORT,"\\today "); }
+ | CHDPL { ifDTfprintf(SORT,"\\today "); }
+ | CHDPA { ifDTfprintf(SORT,"\\today "); }
+ | CHTIME
+ | CHPGN
+ | SECTNUM
+ | CHFTN
+ | CHATN
+ | CHFTNSEP
+ | CHFTNSEPC
+/* | motcell
+ | motrow*/
+ | PAR { if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par "); };
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",FLAG_FI);
+ FLAG_Dollars=0;
+ }
+ | SECT
+ | PAGE { ifDTfprintf(SORT,"\\newpage ");}
+ | COLUMN
+ | LINE { ifDTfprintf(SORT,"\\newline ");}
+ | SOFTPAGE
+ | SOFTCOL
+ | SOFTLINE
+ | SOFTLHEIGHT num
+ | TAB { ifDTfprintf(SORT,"\n\\hspace{%dpt}", PZ_FD.FDDEFTAB);}
+ | EMDASH { ifDTfprintf(SORT,"--"); }
+ | ENDASH { ifDTfprintf(SORT,"-"); }
+ | EMSPACE { ifDTfprintf(SORT,"\\,\\,"); }
+ | ENSPACE { ifDTfprintf(SORT,"\\, "); }
+ | BULLET { if (FLAG_Equation) ifDTfprintf(SORT,"\\bullet ");
+ if (!FLAG_Equation) ifDTfprintf(SORT,"$\\bullet $"); }
+ | LQUOTE { ifDTfprintf(SORT,"`"); }
+ | RQUOTE { ifDTfprintf(SORT,"'"); }
+ | LDBLQUOTE { ifDTfprintf(SORT,"``"); } /* changed, He.10.Jan.95 */
+ | RDBLQUOTE { ifDTfprintf(SORT,"\'\'"); } /* changed, He.10.Jan.95 */
+ | PIPE { FLAG_Equation=1; }
+ equation
+ | TILDE { ifDTfprintf(SORT,"\\ "); }
+ | MOINS /* Optional Hyphen: Cesure */
+ | UNDERSCORE /* Nonbreaking Hyphen: Cesure */
+ | DEUXPOINTS /* Sous-Entree dans un index */
+/* | ETOILE /* Nouvelles commandes */
+ | APOSTROPHE /* ' : APOSTROPHE plus valeur hexa */
+ { {
+ unsigned long ullu;
+ ullu=strtol($1,NULL,16);
+ if (FLAG_Symbol) printApostrophe(ullu);
+ if (!FLAG_Symbol)
+ {
+ if (ASCII_TABLE==2 && !FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_PC[ullu-DEBASCII_PC]);
+ if (ASCII_TABLE==1 && !FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_MAC[ullu-DEBASCII_MAC]);
+ if (ASCII_TABLE==2 && FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_PC_MATH[ullu-DEBASCII_PC]);
+ if (ASCII_TABLE==1 && FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_MAC_MATH[ullu-DEBASCII_MAC]);
+ }
+ }
+ }
+ | LTRMARK
+ | RTLMARK
+ | ZWJ
+ | ZWNJ
+ ;
+ /* Caracteres Speciaux */
+
+picttype: MACPICT
+ | PMMETAFILE num
+ | WMETAFILE { FLAG_WMetafile=1; }
+ num
+ | DIBITMAP num bitmapinfo
+ | WBITMAP num
+ ;
+bitmapinfo: WBMBITSPIXEL num
+ | WBMPLANES num
+ | WBMWIDTHBYTES num
+ | bitmapinfo WBMBITSPIXEL num
+ | bitmapinfo WBMPLANES num
+ | bitmapinfo WBMWIDTHBYTES num
+ ;
+pict: '{' PICT pzpict datadata '}'
+ ;
+pictsize: pzpictsize ppzpictsize pppzpictsize
+ | pzpictsize ppzpictsize
+ | pzpictsize pppzpictsize
+ | pzpictsize
+ ;
+pzpict: brdr
+ | pznvshading
+ | picttype
+ | pictsize
+ | metafileinfo
+ | pzpict brdr
+ | pzpict pznvshading
+ | pzpict picttype
+ | pzpict pictsize
+ | pzpict metafileinfo
+ ;
+pzpictsize: PICW num { FLAG_PICTLargeur=$2/20; }
+ | PICH num { FLAG_PICTHauteur=$2/20; }
+ | pzpictsize PICW num { FLAG_PICTLargeur=$3/20; }
+ | pzpictsize PICH num { FLAG_PICTHauteur=$3/20; }
+ ;
+ppzpictsize: PICWGOAL num { FLAG_PICTLargeur=$2/20; }
+ | PICHGOAL num { FLAG_PICTHauteur=$2/20; }
+ | ppzpictsize PICWGOAL num { FLAG_PICTLargeur=$3/20; }
+ | ppzpictsize PICHGOAL num { FLAG_PICTHauteur=$3/20; }
+ ;
+pppzpictsize: PICSCALEX num
+ | PICSCALEY num
+ | PICSCALED num
+ | PICCROPT num
+ | PICCROPB num
+ | PICCROPR num
+ | PICCROPL num
+ | pppzpictsize PICSCALEX num
+ | pppzpictsize PICSCALEY num
+ | pppzpictsize PICSCALED num
+ | pppzpictsize PICCROPT num
+ | pppzpictsize PICCROPB num
+ | pppzpictsize PICCROPR num
+ | pppzpictsize PICCROPL num
+ ;
+metafileinfo: PICBMP
+ | PICBPP
+ | metafileinfo PICBMP
+ | metafileinfo PICBPP
+ ;
+datadata: BIN BDATA
+ | SDATA
+ | pzpcdata
+ ;
+pzobj: objtype
+ | objmod
+ | objclass
+ | objname
+ | objtime
+ | objsize
+ | rsltmod
+ | pzobj objtype
+ | pzobj objmod
+ | pzobj objclass
+ | pzobj objname
+ | pzobj objtime
+ | pzobj objsize
+ | pzobj rsltmod
+ ;
+objtype: OBJEMB
+ | OBJLINK
+ | OBJAUTLINK
+ | OBJSUB
+ | OBJPUB
+ | ONJICEMB
+ ;
+objmod: LINKSELF
+ | OBJLOCK
+ | OBJUPDATE
+ ;
+objclass: '{' ETOILE OBJCLASS pzpcdata '}'
+ ;
+objname: '{' ETOILE OBJNAME pzpcdata '}'
+ ;
+objtime: '{' ETOILE OBJTIME time '}'
+ ;
+rsltmod: RSLTMERGE
+ | rsltmod RSLTMERGE
+ | rslttype
+ | rsltmod rslttype
+ ;
+rslttype: RSLTRTF
+ | RSLTTXT
+ | RSLTPICT
+ | RSLTBMP
+ ;
+objsize: OBJSETSIZE
+ | OBJALIGN num
+ | OBJTRANSY num
+ | objhw
+ | OBJCROPT num
+ | OBJCROPB num
+ | OBJCROPL num
+ | OBJCROPR num
+ | OBJSCALEY num
+ | OBJSCALEX num
+ | objsize OBJSETSIZE
+ | objsize OBJALIGN num
+ | objsize OBJTRANSY num
+ | objsize objhw
+ | objsize OBJCROPT num
+ | objsize OBJCROPB num
+ | objsize OBJCROPL num
+ | objsize OBJCROPR num
+ | objsize OBJSCALEY num
+ | objsize OBJSCALEX num
+ ;
+objhw: OBJH num
+ | OBJW num
+ | objhw OBJH num
+ | objhw OBJW num
+ ;
+objdata: '{' ETOILE OBJDATA pzobjdata data '}'
+ | '{' ETOILE OBJDATA data '}'
+ ;
+pzobjdata: objalias
+ | objsect
+ | pzobjdata objalias
+ | pzobjdata objsect
+ ;
+objalias: '{' ETOILE OBJALIAS data '}'
+ ;
+objsect: '{' ETOILE OBJSECT data '}'
+ ;
+result: '{' RESULT ppara '}'
+ ;
+pzpubobject: objalias
+ | objsect
+ | pzpubobject objalias
+ | pzpubobject objsect
+ ;
+ /* Objets crees par Microsoft OLE links et Macintosh Edition Manager*/
+do: 'z' /* Code qui ne sera jamais passe par l'analyseur lexical */
+ /* Vide POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+ ;
+ /* Drawing Objects */
+atrfstart: '{' ETOILE ATRFSTART num '}'
+ | '{' ATRFSTART num '}'
+ ;
+atrfend: '{' ETOILE ATRFEND num '}'
+ | '{' ATRFEND num '}'
+ ;
+annot: atnidauthor '{' ETOILE ATNTIME time '}' CHATN '{' ETOILE ATNICN pict '}'
+ '{' ETOILE ANNOTATION '{' ETOILE ATNREF num '}' ppara '}'
+ | atnidauthor CHATN '{' ETOILE ATNICN pict '}' '{' ETOILE ANNOTATION
+ '{' ETOILE ATNREF num '}' ppara '}'
+ | atnidauthor '{' ETOILE ATNTIME time '}' CHATN '{' ETOILE ANNOTATION
+ '{' ETOILE ATNREF num '}' ppara '}'
+ | atnidauthor CHATN '{' ETOILE ANNOTATION '{' ETOILE ATNREF num '}' ppara '}'
+ ;
+atnidauthor: '{' ETOILE ATNID pzpcdata '}' '{' ETOILE ATNAUTHOR pzpcdata '}'
+ ;
+ /* Annotations */
+fieldmod: FLDDIRTY /* TROUVER UN MOYEN DE GERER LE DIRTY !!!!!! */
+ | FLDEDIT
+ | FLDLOCK
+ | FLDPRIV
+ | FLDDIRTY fieldmod /* TROUVER UN MOYEN DE GERER LE DIRTY !!!!!! */
+ | FLDEDIT fieldmod
+ | FLDLOCK fieldmod
+ | FLDPRIV fieldmod
+ ;
+fieldinst: '{' ETOILE FLDINST pzeqalt '}'
+ ;
+pzeqalt: equation
+ | equation FLDALT
+ | PZPAUTREFIELD pzpcdata
+ ;
+fieldrslt: '{' ETOILE FLDRSLT ppara '}'
+ | '{' FLDRSLT ppara '}' /* Ecart entre la theorie RTF et la pratique :-( */
+ | '{' FLDRSLT '}' /* Ecart entre la theorie RTF et la pratique :-( */
+ ;
+idx: 'z' /* Code qui ne sera jamais passe par l'analyseur lexical */
+ /* Vide POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+ ;
+ /* Index Entries */
+toc: 'z' /* Code qui ne sera jamais passe par l'analyseur lexical */
+ /* Vide POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+ ;
+ /* Table Of Contents Entries */
+bkmkcol: BKMKCOLF num
+ | BKMKCOLL num
+ | BKMKCOLF num bkmkcol
+ | BKMKCOLL num bkmkcol
+ ;
+
+ /* Regles de Grammaire pour les formules mathematiques */
+equation: /* Vide */
+ | PZPEQ { FLAG_Equation=1;
+ /*if (FLAG_Dollars==1) ifDTfprintf(SORT,"$$ ");
+ if (FLAG_Dollars!=1) */ifDTfprintf(SORT,"$ ");
+ }
+ pformule PZPENDEQ { FLAG_Equation=0;
+ /*if (FLAG_Dollars==1) ifDTfprintf(SORT," $$");
+ if (FLAG_Dollars!=1) */ifDTfprintf(SORT," $");
+ FLAG_Dollars=0;
+ }
+ ;
+pformule: formule
+ | pformule formule
+ ;
+ppvformule: formule
+ | pzpvpcdata {
+ $$=$1;
+ if (FLAG_Symbol==0)
+ {
+ ifDTfprintf(SORT,"{%%\n\\rm ");
+ printText($1);
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ else
+ {
+ printSymbol($1);
+ }
+ }
+ | ppvformule formule
+ | ppvformule pzpvpcdata
+ {
+ $$=$2;
+ if (FLAG_Symbol==0)
+ {
+ ifDTfprintf(SORT,"{%%\n\\rm ");
+ printText($2);
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ else
+ {
+ printSymbol($2);
+ }
+ }
+ ;
+formule: integrale
+ | racine
+ | fraction
+ | matrix
+ | box
+ | bracket
+ | list
+ | overstrike
+ | suscript
+ | texte
+ ;
+integrale: PZINTEGRALE { FLAG_Integrale=INTINT; }
+ integralesw '('
+ {if (FLAG_Integrale==INTINT)
+ ifDTfprintf(SORT,"\\int_{");
+ if (FLAG_Integrale==INTSUM)
+ ifDTfprintf(SORT,"\\sum_{");
+ if (FLAG_Integrale==INTPROD)
+ ifDTfprintf(SORT,"\\prod_{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}^{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}{");
+ }
+ pformule ')' {ifDTfprintf(SORT,"}%%\n");
+ }
+ | PZINTEGRALE { FLAG_Integrale=INTINT; }
+ '(' {if (FLAG_Integrale==INTINT)
+ ifDTfprintf(SORT,"\\int_{");
+ if (FLAG_Integrale==INTSUM)
+ ifDTfprintf(SORT,"\\sum_{");
+ if (FLAG_Integrale==INTPROD)
+ ifDTfprintf(SORT,"\\prod_{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}^{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}{");
+ }
+ pformule ')' {ifDTfprintf(SORT,"}%%\n");
+ }
+ ;
+
+racine: PZRACINE '(' {ifDTfprintf(SORT,"\\sqrt[{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}]{");
+ }
+ pformule ')' {ifDTfprintf(SORT,"}%%\n");
+ }
+ ;
+
+fraction: PZFRACTION '(' {ifDTfprintf(SORT,"\\frac{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}{");
+ }
+ pformule ')' {ifDTfprintf(SORT,"}%%\n");
+ }
+ ;
+
+matrix: PZMATRIX '(' {ifDTfprintf(SORT,"\\begin{array}{c}\n");
+ FLAG_InMatrix=1;
+ FLAG_MatrixColCour=1;
+ }
+ colones ')' {ifDTfprintf(SORT,"\n\\end{array}\n");
+ FLAG_InMatrix=0;
+ }
+ | PZMATRIX matrixsw '(' {ifDTfprintf(SORT,"\\begin{array}{");
+ for(cpt3=0;cpt3<FLAG_MatrixCols;cpt3++)
+ ifDTfprintf(SORT,"%c",TAB_PosTabMatrix[FLAG_MatrixAlign]);
+ ifDTfprintf(SORT,"}%%\n");
+ FLAG_InMatrix=1;
+ FLAG_MatrixColCour=1;
+ }
+ colones ')' {ifDTfprintf(SORT,"\n\\end{array}\n");
+ FLAG_InMatrix=0;
+ }
+ ;
+box: PZBOX '(' { ifDTfprintf(SORT,"\\fbox{$");
+ }
+ ppvformule ')' { ifDTfprintf(SORT,"$}%%\n");
+ }
+ ;
+bracket: PZBRACKET '(' { ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); }
+ ppvformule ')' { ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; }
+ | PZBRACKET bracketsw '(' { ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); }
+ ppvformule ')' { ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; }
+ | PZBRACKET bracketsw espaces '(' { ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); }
+ ppvformule ')' { ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; }
+ ;
+espaces: ' '
+ | ' '
+ | espaces ' '
+ | espaces ' '
+ ;
+list: PZLIST '('
+ ppvformule ')'
+ ;
+overstrike: PZOVERSTRIKE '('
+ ppvformule ')'
+ | PZOVERSTRIKE overstrikesw '('
+ ppvformule ')'
+ ;
+suscript: PZSUSCRIPT '(' { ifDTfprintf(SORT,"%%\n\\begin{tabular}{l}\n$"); FLAG_SusTab=1;
+ if (FLAG_InMatrix==1) FLAG_InMatrix=-1;
+ }
+ colones ')' { ifDTfprintf(SORT,"$%%\n\\end{tabular}\n"); FLAG_SusTab=0;
+ if (FLAG_InMatrix==-1) FLAG_InMatrix=1;
+ }
+ | PZSUSCRIPT { FLAG_Suscript=0; }
+ suscriptsw '(' {
+ if (FLAG_InMatrix==1) FLAG_InMatrix=-1;
+ if (FLAG_Suscript==EQUP)
+ {ifDTfprintf(SORT,"^{");}
+ else {if (FLAG_Suscript==EQDO)
+ {ifDTfprintf(SORT,"_{");}
+ else {ifDTfprintf(SORT,"{%%\n");}}
+ }
+ colones ')' { ifDTfprintf(SORT,"}%%\n");
+ if (FLAG_InMatrix==-1) FLAG_InMatrix=1;
+ }
+ ;
+bracketsw: EQLC EQCROCHETO { FLAG_bracketleft=BRCrochetO; }
+ | EQLC EQCROCHETF { FLAG_bracketleft=BRCrochetF; }
+ | EQLC EQSUPINFO { FLAG_bracketleft=BRSupInfO; }
+ | EQLC EQSUPINFF { FLAG_bracketleft=BRSupInfF; }
+ | EQLC EQPARENTHO { FLAG_bracketleft=BRParentheseO; }
+ | EQLC EQPARENTHF { FLAG_bracketleft=BRParentheseF; }
+ | EQLC EQACCOLADO { FLAG_bracketleft=BRAccoladeO; }
+ | EQLC EQACCOLADF { FLAG_bracketleft=BRAccoladeF; }
+ | EQRC EQCROCHETO { FLAG_bracketright=BRCrochetO; }
+ | EQRC EQCROCHETF { FLAG_bracketright=BRCrochetF; }
+ | EQRC EQSUPINFO { FLAG_bracketright=BRSupInfO; }
+ | EQRC EQSUPINFF { FLAG_bracketright=BRSupInfF; }
+ | EQRC EQPARENTHO { FLAG_bracketright=BRParentheseO; }
+ | EQRC EQPARENTHF { FLAG_bracketright=BRParentheseF; }
+ | EQRC EQACCOLADO { FLAG_bracketright=BRAccoladeO; }
+ | EQRC EQACCOLADF { FLAG_bracketright=BRAccoladeF; }
+ | EQBC EQCROCHETO { FLAG_bracketright=BRCrochetO; FLAG_bracketleft=BRCrochetO;}
+ | EQBC EQCROCHETF { FLAG_bracketright=BRCrochetF; FLAG_bracketleft=BRCrochetF;}
+ | EQBC EQSUPINFO { FLAG_bracketright=BRSupInfO; FLAG_bracketleft=BRSupInfO;}
+ | EQBC EQSUPINFF { FLAG_bracketright=BRSupInfF; FLAG_bracketleft=BRSupInfF;}
+ | EQBC EQPARENTHO { FLAG_bracketright=BRParentheseO; FLAG_bracketleft=BRParentheseO;}
+ | EQBC EQPARENTHF { FLAG_bracketright=BRParentheseF; FLAG_bracketleft=BRParentheseF;}
+ | EQBC EQACCOLADO { FLAG_bracketright=BRAccoladeO; FLAG_bracketleft=BRAccoladeO;}
+ | EQBC EQACCOLADF { FLAG_bracketright=BRAccoladeF; FLAG_bracketleft=BRAccoladeF;}
+ | bracketsw EQLC EQCROCHETO { FLAG_bracketleft=BRCrochetO; }
+ | bracketsw EQLC EQCROCHETF { FLAG_bracketleft=BRCrochetF; }
+ | bracketsw EQLC EQSUPINFO { FLAG_bracketleft=BRSupInfO; }
+ | bracketsw EQLC EQSUPINFF { FLAG_bracketleft=BRSupInfF; }
+ | bracketsw EQLC EQPARENTHO { FLAG_bracketleft=BRParentheseO; }
+ | bracketsw EQLC EQPARENTHF { FLAG_bracketleft=BRParentheseF; }
+ | bracketsw EQLC EQACCOLADO { FLAG_bracketleft=BRAccoladeO; }
+ | bracketsw EQLC EQACCOLADF { FLAG_bracketleft=BRAccoladeF; }
+ | bracketsw EQRC EQCROCHETO { FLAG_bracketright=BRCrochetO; }
+ | bracketsw EQRC EQCROCHETF { FLAG_bracketright=BRCrochetF; }
+ | bracketsw EQRC EQSUPINFO { FLAG_bracketright=BRSupInfO; }
+ | bracketsw EQRC EQSUPINFF { FLAG_bracketright=BRSupInfF; }
+ | bracketsw EQRC EQPARENTHO { FLAG_bracketright=BRParentheseO; }
+ | bracketsw EQRC EQPARENTHF { FLAG_bracketright=BRParentheseF; }
+ | bracketsw EQRC EQACCOLADO { FLAG_bracketright=BRAccoladeO; }
+ | bracketsw EQRC EQACCOLADF { FLAG_bracketright=BRAccoladeF; }
+ | bracketsw EQBC EQCROCHETO { FLAG_bracketright=BRCrochetO; FLAG_bracketleft=BRCrochetO;}
+ | bracketsw EQBC EQCROCHETF { FLAG_bracketright=BRCrochetF; FLAG_bracketleft=BRCrochetF;}
+ | bracketsw EQBC EQSUPINFO { FLAG_bracketright=BRSupInfO; FLAG_bracketleft=BRSupInfO;}
+ | bracketsw EQBC EQSUPINFF { FLAG_bracketright=BRSupInfF; FLAG_bracketleft=BRSupInfF;}
+ | bracketsw EQBC EQPARENTHO { FLAG_bracketright=BRParentheseO; FLAG_bracketleft=BRParentheseO;}
+ | bracketsw EQBC EQPARENTHF { FLAG_bracketright=BRParentheseF; FLAG_bracketleft=BRParentheseF;}
+ | bracketsw EQBC EQACCOLADO { FLAG_bracketright=BRAccoladeO; FLAG_bracketleft=BRAccoladeO;}
+ | bracketsw EQBC EQACCOLADF { FLAG_bracketright=BRAccoladeF; FLAG_bracketleft=BRAccoladeF;}
+ ;
+
+matrixsw: EQAL { FLAG_MatrixAlign=LEFT; }
+ | EQAC { FLAG_MatrixAlign=CENTER; }
+ | EQAR { FLAG_MatrixAlign=RIGHT; }
+ | EQCO num { FLAG_MatrixCols=$2; }
+ | EQVS num
+ | EQHS num
+ | matrixsw EQAL { FLAG_MatrixAlign=LEFT; }
+ | matrixsw EQAC { FLAG_MatrixAlign=CENTER; }
+ | matrixsw EQAR { FLAG_MatrixAlign=RIGHT; }
+ | matrixsw EQCO num { FLAG_MatrixCols=$3; }
+ | matrixsw EQVS num
+ | matrixsw EQHS num
+ ;
+integralesw: EQSU { FLAG_Integrale=INTSUM; }
+ | EQPR { FLAG_Integrale=INTPROD; }
+ | EQIN
+ | EQFC pzpvpcdata
+ | EQVC pzpvpcdata
+ | EQSU { FLAG_Integrale=INTSUM; }
+ integralesw
+ | EQPR { FLAG_Integrale=INTPROD; }
+ integralesw
+ | EQIN integralesw
+ | EQFC pzpvpcdata integralesw
+ | EQVC pzpvpcdata integralesw
+ ;
+overstrikesw: EQAL
+ | EQAC
+ | EQAR
+ ;
+suscriptsw: EQAI num
+ | EQUP num { FLAG_Suscript=EQUP; }
+ | EQDI num
+ | EQDO num { FLAG_Suscript=EQDO; }
+ ;
+colones: colones ',' ','
+ pformule {
+ if (FLAG_SusTab) ifDTfprintf(SORT,"$\\\\\n$");
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ }
+ | pformule {
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ }
+ | colones ','
+ pformule {
+ if (FLAG_SusTab) ifDTfprintf(SORT,"$\\\\\n$");
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ }
+ ;
+
+texte: /* Vide */
+ | ' ' texte
+ | ' '
+ | '(' ')' { ifDTfprintf(SORT,"()"); }
+ | '(' { ifDTfprintf(SORT,"("); }
+ ppvformule ')' { ifDTfprintf(SORT,")"); }
+ | pznvcharr texte
+ | pznvcharr
+ ;
+/* Les regles suivantes sont necessaires pour eviter des boucles infinies dans le vide */
+etfinpznvcharr: '}'
+ {
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==0 && !FLAG_Indice)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==0 && !FLAG_Exposant)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ $$="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ }
+ | pznvcharr '}'
+ {
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==0 && !FLAG_Indice)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==0 && !FLAG_Exposant)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ $$="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ }
+ ;
+pznvcharr: '{' { ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ }
+ etfinpznvcharr
+
+ /* | atext ; Non traite pour l'instant*/
+ | pchrfmt pdata { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$2;
+ }
+ | pznvpdata { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$1;
+ }
+ | pchrfmt pdata charr { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$2;
+ }
+ | pznvpdata charr { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$1;
+ }
+ ;
+
+
+
+%%
+#include "rtf.lex.c"
+
+
+
+
+
diff --git a/support/w2latex/german/tab.c b/support/w2latex/german/tab.c
new file mode 100644
index 0000000000..1e94b5120a
--- /dev/null
+++ b/support/w2latex/german/tab.c
@@ -0,0 +1,8897 @@
+
+/* A Bison parser, made from rtf.y with Bison version GNU Bison version 1.22
+ */
+/* Changes made by W.Hennings@kfa-juelich.de marked with "He." */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define NUM 258
+#define PC 259
+#define PCA 260
+#define DEFF 261
+#define FONTTBL 262
+#define ANSI 263
+#define RTF 264
+#define MAC 265
+#define F 266
+#define FNIL 267
+#define FROMAN 268
+#define FSWISS 269
+#define FMODERN 270
+#define FSCRIPT 271
+#define FDECOR 272
+#define FTECH 273
+#define FBIDI 274
+#define FCHARSET 275
+#define FPQR 276
+#define ETOILE 277
+#define FONTFI_LE 278
+#define FTNIL 279
+#define FTTRUETYPE 280
+#define CPG 281
+#define FI_LETBL 282
+#define FI_LE 283
+#define FID 284
+#define FRELATIVE 285
+#define FOSNUM 286
+#define FVALIDMAC 287
+#define FVALIDDOS 288
+#define FVALIDNTFS 289
+#define FVALIDHPFS 290
+#define FNETWORK 291
+#define RED 292
+#define BLUE 293
+#define GREEN 294
+#define STYLESHEET 295
+#define S 296
+#define CS 297
+#define DS 298
+#define KEYCODE 299
+#define ADDITIVE 300
+#define SBASEDON 301
+#define SHIFT 302
+#define CTRL 303
+#define ALT 304
+#define FN 305
+#define INFO 306
+#define SECT 307
+#define HEADER 308
+#define FOOTER 309
+#define HEADERL 310
+#define HEADERR 311
+#define HEADERF 312
+#define FOOTERL 313
+#define FOOTERR 314
+#define FOOTERF 315
+#define PAR 316
+#define ROW 317
+#define CELL 318
+#define FONTEMB 319
+#define COLORTBL 320
+#define SUBDOCUMENT 321
+#define TX 322
+#define TB 323
+#define TQR 324
+#define TQC 325
+#define TQDEC 326
+#define TLDOT 327
+#define TLHYPH 328
+#define TLUL 329
+#define TITH 330
+#define TLEQ 331
+#define BIN 332
+#define BDATA 333
+#define SDATA 334
+#define PCDATA 335
+#define SNEXT 336
+#define ABSH 337
+#define ABSW 338
+#define B 339
+#define BGBDIAG 340
+#define BGCROSS 341
+#define BGDCROSS 342
+#define BGDKBDIAG 343
+#define BGDKCROSS 344
+#define BGDKDCROSS 345
+#define BGDKFDIAG 346
+#define BGDKHORIZ 347
+#define BGDKVERT 348
+#define BGFDIAG 349
+#define BGHORIZ 350
+#define BGVERT 351
+#define BINFSXN 352
+#define BINSXN 353
+#define BOX 354
+#define BRDRB 355
+#define BRDRBAR 356
+#define BRDRBTW 357
+#define BRDRCF 358
+#define BRDRDASH 359
+#define BRDRDB 360
+#define BRDRDOT 361
+#define BRDRHAIR 362
+#define BRDRL 363
+#define BRDRR 364
+#define BRDRS 365
+#define BRDRSH 366
+#define BRDRT 367
+#define BRDRTH 368
+#define BRDRW 369
+#define BRSP 370
+#define BULLET 371
+#define CAPS 372
+#define CB 373
+#define CBPAT 374
+#define CCHS 375
+#define CELLX 376
+#define CF 377
+#define CFPAT 378
+#define CHATN 379
+#define CHDATE 380
+#define CHDPA 381
+#define CHDPL 382
+#define CHFTN 383
+#define CHFTNSEP 384
+#define CHFTNSEPC 385
+#define CHPGN 386
+#define CHTIME 387
+#define CLBGBDIAG 388
+#define CLBGCROSS 389
+#define CLBGDCROSS 390
+#define CLBGDKBDIAG 391
+#define CLBGDKCROSS 392
+#define CLBGDKFDIAG 393
+#define CLBGDKHOR 394
+#define CLBGDKRCDCROSS 395
+#define CLBGDKVERT 396
+#define CLBGFDIAG 397
+#define CLBGHORIZ 398
+#define CLBGVERT 399
+#define CLBRDRB 400
+#define CLBRDRL 401
+#define CLBRDRR 402
+#define CLBRDRT 403
+#define CLCBPAT 404
+#define CLCFPAT 405
+#define CLMGF 406
+#define CLMGR 407
+#define CLSHDNG 408
+#define COLNO 409
+#define COLS 410
+#define COLSR 411
+#define COLSX 412
+#define COLUMN 413
+#define COLW 414
+#define DELETED 415
+#define DEUXPOINTS 416
+#define DFRMTXTX 417
+#define DFRMTXTY 418
+#define DN 419
+#define DROPCAPLI 420
+#define DROPCAPT 421
+#define DXFRTEXT 422
+#define EMDASH 423
+#define EMSPACE 424
+#define ENDASH 425
+#define ENDNHERE 426
+#define ENSPACE 427
+#define EXPND 428
+#define EXPNDTW 429
+#define FI 430
+#define FOOTERY 431
+#define FS 432
+#define GUTTERSXN 433
+#define HEADERY 434
+#define HYPHPAR 435
+#define I 436
+#define INTBL 437
+#define KEEP 438
+#define KEEPN 439
+#define KERNING 440
+#define LANG 441
+#define LDBLQUOTE 442
+#define LEVEL 443
+#define LI 444
+#define LINE 445
+#define LINEBETCOL 446
+#define LINECONT 447
+#define LINEMOD 448
+#define LINEPPAGE 449
+#define LINERESTART 450
+#define LINESTARTS 451
+#define LINEX 452
+#define LNDSCPSXN 453
+#define LQUOTE 454
+#define LTRCH 455
+#define LTRMARK 456
+#define LTRPAR 457
+#define LTRROW 458
+#define LTRSECT 459
+#define MARGBSXN 460
+#define MARGLSXN 461
+#define MARGRSXN 462
+#define MARGTSXN 463
+#define MOINS 464
+#define NOLINE 465
+#define NOSUPERSUB 466
+#define NOWIDCLTPAR 467
+#define NOWRAP 468
+#define OUTL 469
+#define PAGE 470
+#define PAGEBB 471
+#define PARD 472
+#define PGHSXN 473
+#define PGNCONT 474
+#define PGNDEC 475
+#define PGNGNSH 476
+#define PGNHN 477
+#define PGNHNSC 478
+#define PGNHNSM 479
+#define PGNHNSN 480
+#define PGNHNSP 481
+#define PGNLCLTR 482
+#define PGNLCRM 483
+#define PGNRESTART 484
+#define PGNSTARTS 485
+#define PGNUCLTR 486
+#define PGNUCRM 487
+#define PGNX 488
+#define PGNY 489
+#define PGWSXN 490
+#define PHCOL 491
+#define PHMRG 492
+#define PHPG 493
+#define PIPE 494
+#define PLAIN 495
+#define PN 496
+#define PNACROSS 497
+#define PNB 498
+#define PNCAPS 499
+#define PNCARD 500
+#define PNCF 501
+#define PNDEC 502
+#define PNF 503
+#define PNFS 504
+#define PNHANG 505
+#define PNI 506
+#define PNINDENT 507
+#define PNLCLTR 508
+#define PNLCRM 509
+#define PNLVL 510
+#define PNLVLBODY 511
+#define PNLVLCONT 512
+#define PNNUMONCE 513
+#define PNORD 514
+#define PNORDT 515
+#define PNPREV 516
+#define PNQC 517
+#define PNQL 518
+#define PNQR 519
+#define PNRESTART 520
+#define PNSCAPS 521
+#define PNSECLVL 522
+#define PNSP 523
+#define PNSTART 524
+#define PNSTRIKE 525
+#define PNTEXT 526
+#define PNTXTA 527
+#define PNTXTB 528
+#define PNUCLTR 529
+#define PNUCRM 530
+#define PNUL 531
+#define PNULD 532
+#define PNULDB 533
+#define PNULNONE 534
+#define PNULW 535
+#define PNVLBT 536
+#define POSNEGX 537
+#define POSNEGY 538
+#define POSX 539
+#define POSXC 540
+#define POSXI 541
+#define POSXL 542
+#define POSXO 543
+#define POSXR 544
+#define POSY 545
+#define POSYB 546
+#define POSYC 547
+#define POSYIL 548
+#define POSYT 549
+#define PVMRG 550
+#define PVPARA 551
+#define PVPG 552
+#define QC 553
+#define QJ 554
+#define QL 555
+#define QR 556
+#define RDBLQUOTE 557
+#define REVAUTH 558
+#define REVDTTM 559
+#define REVISED 560
+#define RI 561
+#define RQUOTE 562
+#define RTLCH 563
+#define RTLMARK 564
+#define RTLPAR 565
+#define RTLROW 566
+#define RTLSECT 567
+#define SA 568
+#define SB 569
+#define SBKCOL 570
+#define SBKEVEN 571
+#define SBKNONE 572
+#define SBKODD 573
+#define SBKPAGE 574
+#define SBYS 575
+#define SCAPS 576
+#define SECTNUM 577
+#define SECTD 578
+#define SETUNLOCKED 579
+#define SHAD 580
+#define SHADING 581
+#define SL 582
+#define SLMULT 583
+#define SOFTCOL 584
+#define SOFTLHEIGHT 585
+#define SOFTLINE 586
+#define SOFTPAGE 587
+#define STRIKE 588
+#define SUB 589
+#define SUPER 590
+#define TAB 591
+#define TILDE 592
+#define TITLEPG 593
+#define TRBRDRB 594
+#define TRBRDRH 595
+#define TRBRDRL 596
+#define TRBRDRR 597
+#define TRBRDRT 598
+#define TRBRDRV 599
+#define TRGAPH 600
+#define TRHDR 601
+#define TRKEEP 602
+#define TRLEFT 603
+#define TROWD 604
+#define TRQC 605
+#define TRQL 606
+#define TRQR 607
+#define TRRH 608
+#define UL 609
+#define ULD 610
+#define ULDB 611
+#define ULNONE 612
+#define ULW 613
+#define UNDERSCORE 614
+#define UP 615
+#define V 616
+#define VERTALB 617
+#define VERTALC 618
+#define VERTALJ 619
+#define VERTALT 620
+#define ZWJ 621
+#define ZWNJ 622
+#define AENDDOC 623
+#define AENDNOTES 624
+#define AFTNBJ 625
+#define AFTNCN 626
+#define AFTNNALC 627
+#define AFTNNAR 628
+#define AFTNNAUC 629
+#define AFTNNCHI 630
+#define AFTNNRLC 631
+#define AFTNNRUC 632
+#define AFTNRESTART 633
+#define AFTNRSTCONT 634
+#define AFTNSEP 635
+#define AFTNSEPC 636
+#define AFTNSTART 637
+#define AFTNTJ 638
+#define ALLPROT 639
+#define ANNOTPROT 640
+#define BRKFRM 641
+#define CVMME 642
+#define DEFFORMAT 643
+#define DEFLANG 644
+#define DEFTAB 645
+#define DOCTEMP 646
+#define ENDDOC 647
+#define ENDNOTES 648
+#define FACINGP 649
+#define FET 650
+#define FORMDISP 651
+#define FORMPROT 652
+#define FORMSHADE 653
+#define FRACWIDTH 654
+#define FTNBJ 655
+#define FTNCN 656
+#define FTNNALC 657
+#define FTNNAR 658
+#define FTNNAUC 659
+#define FTNNCHI 660
+#define FTNNRLC 661
+#define FTNNRUC 662
+#define FTNRESTART 663
+#define FTNRSTCONT 664
+#define FTNRSTPG 665
+#define FTNSEP 666
+#define FTNSEPC 667
+#define FTNSTART 668
+#define FTNTJ 669
+#define GUTTER 670
+#define HYPHAUTO 671
+#define HYPHCAPS 672
+#define HYPHCONSEC 673
+#define HYPHHOTZ 674
+#define LANDSCAPE 675
+#define LINESTART 676
+#define LINKSTYLES 677
+#define LTRDOC 678
+#define MAKEBACKUP 679
+#define MARGB 680
+#define MARGL 681
+#define MARGMIRROR 682
+#define MARGR 683
+#define MARGT 684
+#define NEXTFILE 685
+#define NOCOLBAL 686
+#define NOEXTRASPRL 687
+#define NOTABIND 688
+#define OTBLRUL 689
+#define PAPERH 690
+#define PAPERW 691
+#define PGNSTART 692
+#define PRCOLBL 693
+#define PRINTDATA 694
+#define PSOVER 695
+#define PSZ 696
+#define REVBAR 697
+#define REVISIONS 698
+#define REVPROP 699
+#define REVPROT 700
+#define RTLDOC 701
+#define SPRSSPBF 702
+#define SPRSTSP 703
+#define SWPBDR 704
+#define TEMPLATE 705
+#define TRANSMF 706
+#define WIDOWCTRL 707
+#define WRAPTRSP 708
+#define APOSTROPHE 709
+#define FIELD 710
+#define FLDDIRTY 711
+#define FLDEDIT 712
+#define FLDLOCK 713
+#define FLDPRIV 714
+#define FLDINST 715
+#define FLDALT 716
+#define FLDRSLT 717
+#define PICT 718
+#define PZINTEGRALE 719
+#define PZRACINE 720
+#define PZFRACTION 721
+#define PZMATRIX 722
+#define PZBOX 723
+#define PZBRACKET 724
+#define PZLIST 725
+#define PZOVERSTRIKE 726
+#define PZSUSCRIPT 727
+#define EQLC 728
+#define EQRC 729
+#define EQBC 730
+#define EQAL 731
+#define EQAC 732
+#define EQAR 733
+#define EQCO 734
+#define EQVS 735
+#define EQHS 736
+#define EQSU 737
+#define EQPR 738
+#define EQIN 739
+#define EQFC 740
+#define EQVC 741
+#define EQAI 742
+#define EQUP 743
+#define EQDI 744
+#define EQDO 745
+#define EQCROCHETO 746
+#define EQCROCHETF 747
+#define EQPARENTHO 748
+#define EQPARENTHF 749
+#define EQACCOLADO 750
+#define EQACCOLADF 751
+#define EQSUPINFO 752
+#define EQSUPINFF 753
+#define FOOTNOTE 754
+#define PZPEQ 755
+#define BKMKSTART 756
+#define BKMKEND 757
+#define BKMKCOLF 758
+#define BKMKCOLL 759
+#define MACPICT 760
+#define PMMETAFILE 761
+#define WMETAFILE 762
+#define DIBITMAP 763
+#define WBITMAP 764
+#define WBMBITSPIXEL 765
+#define WBMPLANES 766
+#define WBMWIDTHBYTES 767
+#define PICBMP 768
+#define PICBPP 769
+#define YR 770
+#define MO 771
+#define DY 772
+#define HR 773
+#define MIN 774
+#define SEC 775
+#define OBJECT 776
+#define OBJTOPICT 777
+#define BKMKPUB 778
+#define PUBAUTO 779
+#define PICW 780
+#define PICH 781
+#define PICWGOAL 782
+#define PICHGOAL 783
+#define PICSCALEX 784
+#define PICSCALEY 785
+#define PICSCALED 786
+#define PICCROPT 787
+#define PICCROPB 788
+#define PICCROPR 789
+#define PICCROPL 790
+#define OBJEMB 791
+#define OBJLINK 792
+#define OBJAUTLINK 793
+#define OBJSUB 794
+#define OBJPUB 795
+#define ONJICEMB 796
+#define LINKSELF 797
+#define OBJLOCK 798
+#define OBJUPDATE 799
+#define OBJCLASS 800
+#define OBJNAME 801
+#define OBJTIME 802
+#define RSLTMERGE 803
+#define RSLTRTF 804
+#define RSLTTXT 805
+#define RSLTPICT 806
+#define RSLTBMP 807
+#define OBJSETSIZE 808
+#define OBJALIGN 809
+#define OBJTRANSY 810
+#define OBJCROPT 811
+#define OBJCROPB 812
+#define OBJCROPL 813
+#define OBJCROPR 814
+#define OBJSCALEY 815
+#define OBJSCALEX 816
+#define OBJH 817
+#define OBJW 818
+#define OBJDATA 819
+#define OBJALIAS 820
+#define OBJSECT 821
+#define RESULT 822
+#define PZPAUTREFIELD 823
+#define ATRFSTART 824
+#define ATRFEND 825
+#define ATNTIME 826
+#define ATNICN 827
+#define ANNOTATION 828
+#define ATNREF 829
+#define ATNID 830
+#define ATNAUTHOR 831
+#define PZPENDEQ 832
+#define XE 833
+#define TC 834
+#define DO 835
+#define PZERROR 836
+
+#line 1 "rtf.y"
+
+ /* Declarations en C */
+#include <stdio.h>
+#include <stdlib.h>
+#define YYDEBUG 1
+#include <malloc.h>
+/*#define fprintf if(!FLAG_DebutTeX) {;} else fprintf*/
+#define ifDTfprintf if(!FLAG_DebutTeX) {;} else fprintf
+#define LF_FNIL 1
+#define LF_FROMAN 2
+#define LF_FSWISS 3
+#define LF_FMODERN 4
+#define LF_FSCRIPT 5
+#define LF_FDECOR 6
+#define LF_FTECH 7
+#define LF_FBIDI 8
+#define CENTER 1
+#define LEFT 2
+#define RIGHT 3
+#define JUST 0
+#define INTINT 0
+#define INTSUM 1
+#define INTPROD 2
+#define BRParentheseO '('
+#define BRAccoladeO '{'
+#define BRSupInfO '<'
+#define BRCrochetO '['
+#define BRParentheseF ')'
+#define BRAccoladeF '}'
+#define BRSupInfF '>'
+#define BRCrochetF ']'
+#define BRPoint '.'
+#include "rtf.ascii.c"
+char calutemp;
+
+char pzIntermStd[]="\\end{minipage}\n\\begin{minipage}";
+char pzIntermFrame[]="\\end{minipage}}\n\\fbox{\\begin{minipage}";
+char * pzIntermDef=pzIntermStd;
+
+char pzEndStd[]="\\end{minipage}\n";
+char * pzEndDef=pzEndStd;
+char pzEndFrame[]="\\end{minipage}}\n";
+
+char pzStartStd[]="\n\\begin{minipage}";
+char * pzStartDef=pzStartStd;
+char pzStartFrame[]="\n\\fbox{\\begin{minipage}";
+
+FILE * entree;
+FILE * sortie;
+FILE * auxiliaire;
+FILE * filetemp;
+FILE * SORT;
+int FLAG_Underline=0;
+int FLAG_Bold=0;
+int FLAG_DebutTeX=0;
+int FLAG_Italique=0;
+int FLAG_FlushLeft=0;
+int FLAG_FlushRight=0;
+int FLAG_Equation=0;
+int FLAG_Center=0;
+int FLAG_Dollars=0;
+int FLAG_FI=0;
+int FLAG_RI=0;
+int FLAG_LI=0;
+int FLAG_Indice=0;
+int FLAG_Exposant=0;
+int FLAG_Integrale=0;
+int FLAG_Symbol=0;
+int FLAG_Suscript=0;
+int FLAG_bracketleft='.';
+int FLAG_bracketright='.';
+int FLAG_SusTab=0;
+int FLAG_CompteTableau=0;
+int FLAG_Tableau=0;
+int FLAG_MatrixAlign=CENTER;
+int FLAG_MatrixCols=1;
+int FLAG_InMatrix=0;
+int FLAG_MatrixColCour=1;
+int FLAG_PICTLargeur=0;
+int FLAG_PICTHauteur=0;
+int FLAG_BorderBot=0;
+int FLAG_Footer=0;
+int FLAG_InPict=0;
+int FLAG_WMetafile=0;
+int FLAG_NIT=1;
+int FLAG_ERROR=0;
+int FLAG_FIRST_ERROR=1;
+int FLAG_EndTeX=0;
+char TAB_PosTabMatrix[]={ ' ', 'c', 'l', 'r' };
+int Num_Col_Tabular=0;
+int ASCII_TABLE=2;
+int lengthLCT=1024;
+int Largeur_Cols[512];
+int cpt,cpt2,cpt3;
+int Num_Max_Col=0;
+int Inter_Col=0;
+char * Ligne_Courante_Tabular;
+typedef struct t_formatDocument
+ {
+ int FDDEFTAB;
+ int FDPAPERW;
+ int FDPAPERH;
+ int FDPSZ;
+ int FDMARGL;
+ int FDMARGR;
+ int FDMARGT;
+ int FDMARGB;
+ int FDFACINGP;
+ int FDGUTTER;
+ int FDMARGMIRROR;
+ int FDLANDSCAPE;
+ int FDPGNSTART;
+ int FDWIDOWCTRL;
+ } t_FormatDocument;
+t_FormatDocument PZ_FD;
+typedef struct t_lfonte
+ {
+ int LF_Fontnum; /* Numero de fonte : Le meme que dans l'ordre de la liste en general */
+ int LF_Fontfamily; /* Famille de fonte: cf les defines */
+ int LF_Fcharset; /* Jeu de caracteres dans la table des polices */
+ int LF_Fprq; /* 'Pitch' de la police dans la table de caracteres */
+ char * LF_Fontname; /* Nom de la fonte */
+ char * LF_TexEquiv; /* Equivalent TeX */
+ struct t_lfonte * suiv;/* Maillon suivant */
+ } t_LFonte, *p_LFonte;
+typedef struct t_ConTeXte
+ {
+ int EtatTexte; /* CENTER ou RIGHT ou LEFT */
+ struct t_ConTeXte * suiv;
+ struct t_ConTeXte * prec;
+ /* Pour l'instant ca nous suffit */
+ } t_contexte, * p_contexte;
+p_contexte DebLisContextes=NULL;
+p_contexte ContextActuel=NULL;
+p_contexte ContextInitTab=NULL;
+p_LFonte DebLisFontes=NULL;
+p_LFonte FonteActuelle=NULL;
+#include "rtf.fonts.c"
+#include "rtf.context.c"
+
+#line 145 "rtf.y"
+typedef union {
+char calu;
+int numo;
+char* motcomm;
+char carcomm;
+char* pcdata;
+} YYSTYPE;
+
+#ifndef YYLTYPE
+typedef
+ struct yyltype
+ {
+ int timestamp;
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+ char *text;
+ }
+ yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define YYFINAL 1634
+#define YYFLAG -32768
+#define YYNTBASE 593
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 836 ? yytranslate[x] : 815)
+
+static const short yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 588, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 587, 2, 2, 2, 2, 2, 2, 2, 591,
+ 592, 2, 2, 589, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 584, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 585, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 586, 2, 2, 2, 2, 2, 2, 2,
+ 2, 590, 582, 2, 583, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, 577, 578, 579, 580, 581
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 1, 2, 8, 11, 12, 23, 34, 46, 58,
+ 71, 72, 75, 76, 81, 82, 84, 86, 88, 90,
+ 93, 95, 97, 99, 101, 102, 105, 106, 108, 110,
+ 112, 114, 116, 118, 120, 122, 124, 126, 128, 130,
+ 132, 134, 136, 138, 142, 145, 150, 151, 163, 165,
+ 167, 169, 171, 173, 175, 177, 179, 180, 183, 184,
+ 187, 188, 195, 196, 204, 206, 208, 209, 216, 217,
+ 220, 221, 225, 229, 234, 242, 244, 247, 248, 251,
+ 252, 255, 257, 259, 261, 263, 265, 266, 270, 273,
+ 276, 280, 284, 288, 292, 296, 300, 304, 305, 308,
+ 309, 312, 313, 316, 317, 320, 321, 324, 335, 345,
+ 346, 349, 352, 355, 356, 361, 363, 366, 368, 370,
+ 372, 374, 376, 378, 379, 382, 383, 386, 387, 390,
+ 391, 393, 398, 403, 408, 413, 418, 423, 424, 426,
+ 427, 429, 430, 432, 435, 437, 438, 441, 444, 447,
+ 450, 453, 456, 460, 464, 468, 472, 476, 480, 482,
+ 485, 487, 490, 497, 504, 505, 508, 511, 514, 517,
+ 519, 521, 524, 526, 528, 530, 532, 534, 537, 540,
+ 542, 544, 546, 548, 550, 552, 554, 556, 558, 560,
+ 562, 564, 566, 568, 571, 574, 576, 578, 580, 582,
+ 584, 586, 588, 590, 592, 594, 596, 598, 600, 602,
+ 604, 606, 608, 611, 614, 617, 620, 623, 626, 629,
+ 631, 634, 636, 638, 641, 643, 645, 647, 649, 651,
+ 653, 655, 657, 659, 661, 663, 665, 667, 669, 671,
+ 673, 675, 677, 679, 681, 683, 686, 689, 691, 693,
+ 695, 696, 703, 708, 709, 715, 719, 722, 724, 726,
+ 729, 731, 733, 735, 738, 741, 744, 747, 749, 751,
+ 753, 755, 757, 759, 762, 765, 768, 771, 774, 776,
+ 779, 782, 785, 787, 789, 791, 794, 797, 800, 803,
+ 806, 809, 812, 814, 816, 819, 822, 825, 827, 829,
+ 832, 835, 837, 839, 841, 843, 845, 848, 851, 853,
+ 855, 857, 859, 861, 863, 865, 867, 869, 871, 874,
+ 880, 882, 884, 886, 888, 890, 892, 894, 896, 898,
+ 901, 903, 906, 910, 914, 918, 922, 926, 930, 933,
+ 936, 939, 942, 945, 948, 950, 952, 954, 958, 961,
+ 964, 967, 969, 971, 973, 975, 977, 979, 981, 983,
+ 987, 990, 993, 995, 997, 1001, 1004, 1006, 1009, 1010,
+ 1015, 1017, 1020, 1024, 1030, 1035, 1040, 1045, 1049, 1053,
+ 1057, 1060, 1061, 1065, 1066, 1071, 1076, 1080, 1089, 1097,
+ 1099, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118,
+ 1121, 1124, 1127, 1130, 1133, 1135, 1137, 1139, 1141, 1143,
+ 1145, 1147, 1149, 1152, 1155, 1158, 1160, 1162, 1164, 1166,
+ 1168, 1170, 1174, 1178, 1182, 1185, 1188, 1191, 1194, 1197,
+ 1200, 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1217, 1220,
+ 1222, 1224, 1227, 1229, 1231, 1234, 1237, 1241, 1245, 1248,
+ 1251, 1255, 1258, 1261, 1263, 1265, 1267, 1272, 1277, 1280,
+ 1284, 1288, 1293, 1295, 1297, 1299, 1301, 1303, 1305, 1307,
+ 1309, 1312, 1315, 1318, 1321, 1325, 1329, 1333, 1335, 1337,
+ 1339, 1341, 1343, 1345, 1347, 1349, 1351, 1353, 1356, 1358,
+ 1360, 1363, 1366, 1368, 1370, 1373, 1376, 1378, 1380, 1383,
+ 1386, 1388, 1391, 1394, 1396, 1398, 1401, 1403, 1405, 1408,
+ 1410, 1412, 1414, 1416, 1418, 1421, 1423, 1425, 1427, 1429,
+ 1431, 1433, 1435, 1438, 1441, 1444, 1447, 1450, 1453, 1456,
+ 1459, 1461, 1463, 1465, 1468, 1470, 1472, 1474, 1476, 1478,
+ 1481, 1484, 1487, 1490, 1493, 1497, 1501, 1504, 1507, 1510,
+ 1513, 1515, 1517, 1520, 1523, 1525, 1527, 1530, 1534, 1538,
+ 1542, 1544, 1547, 1550, 1553, 1557, 1561, 1564, 1567, 1569,
+ 1571, 1573, 1576, 1579, 1581, 1583, 1585, 1587, 1589, 1591,
+ 1593, 1595, 1598, 1601, 1603, 1605, 1607, 1609, 1612, 1614,
+ 1618, 1621, 1625, 1628, 1631, 1634, 1638, 1642, 1644, 1646,
+ 1648, 1650, 1652, 1654, 1656, 1658, 1660, 1662, 1664, 1666,
+ 1671, 1676, 1680, 1684, 1688, 1692, 1695, 1701, 1707, 1712,
+ 1717, 1722, 1727, 1731, 1733, 1735, 1737, 1739, 1741, 1743,
+ 1745, 1747, 1750, 1752, 1756, 1759, 1762, 1764, 1766, 1769,
+ 1772, 1775, 1778, 1781, 1784, 1787, 1790, 1793, 1796, 1800,
+ 1804, 1808, 1812, 1816, 1820, 1824, 1828, 1830, 1832, 1835,
+ 1838, 1840, 1842, 1844, 1846, 1848, 1850, 1852, 1855, 1858,
+ 1861, 1864, 1867, 1869, 1872, 1875, 1879, 1883, 1887, 1891,
+ 1895, 1898, 1901, 1905, 1909, 1912, 1915, 1919, 1921, 1923,
+ 1925, 1927, 1929, 1931, 1933, 1935, 1937, 1939, 1941, 1943,
+ 1944, 1949, 1950, 1957, 1962, 1963, 1969, 1972, 1975, 1977,
+ 1981, 1984, 1987, 1991, 1995, 2000, 2003, 2007, 2012, 2016,
+ 2020, 2025, 2032, 2040, 2046, 2053, 2058, 2064, 2068, 2073,
+ 2078, 2084, 2088, 2091, 2095, 2100, 2105, 2111, 2113, 2114,
+ 2118, 2122, 2126, 2130, 2131, 2135, 2140, 2149, 2152, 2154,
+ 2156, 2158, 2162, 2165, 2169, 2171, 2173, 2174, 2178, 2180,
+ 2181, 2183, 2187, 2189, 2191, 2194, 2195, 2198, 2200, 2203,
+ 2205, 2207, 2209, 2211, 2214, 2217, 2220, 2223, 2225, 2227,
+ 2230, 2233, 2236, 2239, 2242, 2245, 2248, 2250, 2253, 2256,
+ 2259, 2262, 2265, 2268, 2271, 2274, 2276, 2278, 2281, 2283,
+ 2286, 2289, 2292, 2294, 2296, 2299, 2302, 2305, 2307, 2309,
+ 2311, 2313, 2315, 2317, 2319, 2321, 2323, 2325, 2327, 2329,
+ 2331, 2333, 2335, 2337, 2339, 2341, 2343, 2346, 2348, 2350,
+ 2352, 2354, 2356, 2358, 2360, 2362, 2364, 2366, 2367, 2371,
+ 2373, 2375, 2377, 2379, 2381, 2383, 2385, 2387, 2389, 2391,
+ 2394, 2395, 2399, 2403, 2406, 2409, 2412, 2415, 2419, 2423,
+ 2427, 2433, 2437, 2440, 2443, 2445, 2447, 2449, 2451, 2453,
+ 2455, 2458, 2461, 2464, 2467, 2470, 2473, 2476, 2480, 2484,
+ 2487, 2490, 2494, 2498, 2501, 2504, 2507, 2510, 2513, 2516,
+ 2519, 2523, 2527, 2531, 2535, 2539, 2543, 2547, 2549, 2551,
+ 2554, 2557, 2560, 2562, 2564, 2566, 2568, 2570, 2572, 2574,
+ 2576, 2578, 2581, 2584, 2587, 2590, 2593, 2596, 2599, 2601,
+ 2603, 2605, 2607, 2609, 2611, 2613, 2615, 2617, 2623, 2629,
+ 2635, 2637, 2640, 2642, 2645, 2647, 2649, 2651, 2653, 2655,
+ 2658, 2661, 2663, 2666, 2669, 2672, 2675, 2678, 2681, 2684,
+ 2688, 2692, 2695, 2699, 2703, 2707, 2711, 2715, 2719, 2722,
+ 2725, 2729, 2733, 2740, 2746, 2748, 2750, 2753, 2756, 2762,
+ 2768, 2773, 2775, 2777, 2780, 2783, 2785, 2791, 2796, 2802,
+ 2807, 2830, 2848, 2866, 2879, 2890, 2892, 2894, 2896, 2898,
+ 2901, 2904, 2907, 2910, 2916, 2918, 2921, 2924, 2930, 2935,
+ 2939, 2941, 2943, 2946, 2949, 2953, 2957, 2958, 2959, 2964,
+ 2966, 2969, 2971, 2973, 2976, 2979, 2981, 2983, 2985, 2987,
+ 2989, 2991, 2993, 2995, 2997, 2999, 3000, 3001, 3002, 3003,
+ 3017, 3018, 3019, 3020, 3021, 3034, 3035, 3036, 3045, 3046,
+ 3047, 3056, 3057, 3063, 3064, 3071, 3072, 3078, 3079, 3085,
+ 3086, 3093, 3094, 3102, 3104, 3106, 3109, 3112, 3117, 3122,
+ 3128, 3129, 3135, 3136, 3137, 3145, 3148, 3151, 3154, 3157,
+ 3160, 3163, 3166, 3169, 3172, 3175, 3178, 3181, 3184, 3187,
+ 3190, 3193, 3196, 3199, 3202, 3205, 3208, 3211, 3214, 3217,
+ 3221, 3225, 3229, 3233, 3237, 3241, 3245, 3249, 3253, 3257,
+ 3261, 3265, 3269, 3273, 3277, 3281, 3285, 3289, 3293, 3297,
+ 3301, 3305, 3309, 3313, 3315, 3317, 3319, 3322, 3325, 3328,
+ 3331, 3334, 3337, 3341, 3345, 3349, 3351, 3353, 3355, 3358,
+ 3361, 3362, 3366, 3367, 3371, 3374, 3378, 3382, 3384, 3386,
+ 3388, 3391, 3394, 3397, 3400, 3405, 3407, 3411, 3412, 3415,
+ 3417, 3420, 3421, 3426, 3429, 3431, 3433, 3436, 3437, 3441,
+ 3444, 3446, 3450
+};
+
+static const short yyrhs[] = { -1,
+ 0, 582, 595, 594, 647, 583, 0, 581, 651, 0,
+ 0, 9, 601, 599, 600, 596, 582, 7, 605, 583,
+ 597, 0, 9, 601, 599, 596, 600, 582, 7, 605,
+ 583, 597, 0, 9, 601, 388, 599, 600, 596, 582,
+ 7, 605, 583, 597, 0, 9, 601, 596, 599, 600,
+ 596, 582, 7, 605, 583, 597, 0, 9, 601, 596,
+ 388, 599, 600, 596, 582, 7, 605, 583, 597, 0,
+ 0, 389, 601, 0, 0, 582, 598, 583, 597, 0,
+ 0, 616, 0, 623, 0, 629, 0, 645, 0, 51,
+ 649, 0, 8, 0, 10, 0, 4, 0, 5, 0,
+ 0, 6, 601, 0, 0, 3, 0, 3, 0, 80,
+ 0, 584, 0, 585, 0, 586, 0, 587, 0, 588,
+ 0, 80, 0, 584, 0, 585, 0, 586, 0, 587,
+ 0, 588, 0, 589, 0, 606, 0, 582, 606, 583,
+ 0, 606, 605, 0, 582, 606, 583, 605, 0, 0,
+ 11, 601, 608, 609, 610, 612, 615, 603, 607, 611,
+ 584, 0, 12, 0, 13, 0, 14, 0, 15, 0,
+ 16, 0, 17, 0, 18, 0, 19, 0, 0, 20,
+ 601, 0, 0, 21, 601, 0, 0, 582, 22, 23,
+ 615, 603, 583, 0, 0, 582, 22, 64, 613, 614,
+ 743, 583, 0, 24, 0, 25, 0, 0, 582, 22,
+ 23, 615, 603, 583, 0, 0, 26, 601, 0, 0,
+ 22, 27, 617, 0, 582, 618, 583, 0, 617, 582,
+ 618, 583, 0, 28, 29, 601, 620, 621, 619, 603,
+ 0, 622, 0, 619, 622, 0, 0, 30, 601, 0,
+ 0, 31, 601, 0, 32, 0, 33, 0, 34, 0,
+ 35, 0, 36, 0, 0, 65, 584, 624, 0, 65,
+ 624, 0, 625, 584, 0, 624, 625, 584, 0, 626,
+ 627, 628, 0, 626, 628, 627, 0, 627, 626, 628,
+ 0, 627, 628, 626, 0, 628, 626, 627, 0, 628,
+ 627, 626, 0, 0, 37, 601, 0, 0, 38, 601,
+ 0, 0, 39, 601, 0, 0, 40, 630, 0, 0,
+ 631, 630, 0, 582, 632, 633, 634, 636, 637, 638,
+ 639, 584, 583, 0, 582, 632, 633, 636, 637, 638,
+ 639, 584, 583, 0, 0, 41, 601, 0, 42, 601,
+ 0, 43, 601, 0, 0, 582, 44, 640, 583, 0,
+ 635, 0, 634, 635, 0, 685, 0, 699, 0, 701,
+ 0, 715, 0, 712, 0, 744, 0, 0, 45, 601,
+ 0, 0, 46, 601, 0, 0, 81, 601, 0, 0,
+ 603, 0, 641, 643, 642, 644, 0, 641, 642, 643,
+ 644, 0, 642, 641, 643, 644, 0, 642, 643, 641,
+ 644, 0, 643, 642, 641, 644, 0, 643, 641, 642,
+ 644, 0, 0, 47, 0, 0, 49, 0, 0, 48,
+ 0, 50, 601, 0, 603, 0, 0, 515, 601, 0,
+ 516, 601, 0, 517, 601, 0, 518, 601, 0, 519,
+ 601, 0, 520, 601, 0, 646, 515, 601, 0, 646,
+ 516, 601, 0, 646, 517, 601, 0, 646, 518, 601,
+ 0, 646, 519, 601, 0, 646, 520, 601, 0, 648,
+ 0, 650, 648, 0, 651, 0, 648, 651, 0, 582,
+ 22, 430, 603, 583, 648, 0, 582, 22, 450, 603,
+ 583, 648, 0, 0, 582, 583, 0, 390, 601, 0,
+ 419, 601, 0, 418, 601, 0, 417, 0, 416, 0,
+ 421, 601, 0, 399, 0, 424, 0, 388, 0, 440,
+ 0, 391, 0, 389, 601, 0, 395, 601, 0, 411,
+ 0, 412, 0, 401, 0, 380, 0, 381, 0, 371,
+ 0, 393, 0, 392, 0, 414, 0, 400, 0, 369,
+ 0, 368, 0, 370, 0, 383, 0, 413, 601, 0,
+ 382, 601, 0, 410, 0, 408, 0, 409, 0, 378,
+ 0, 379, 0, 403, 0, 402, 0, 404, 0, 406,
+ 0, 407, 0, 405, 0, 373, 0, 372, 0, 374,
+ 0, 376, 0, 377, 0, 375, 0, 436, 601, 0,
+ 435, 601, 0, 441, 601, 0, 426, 601, 0, 428,
+ 601, 0, 429, 601, 0, 425, 601, 0, 394, 0,
+ 415, 601, 0, 427, 0, 420, 0, 437, 601, 0,
+ 452, 0, 422, 0, 433, 0, 453, 0, 438, 0,
+ 432, 0, 431, 0, 387, 0, 448, 0, 447, 0,
+ 434, 0, 451, 0, 449, 0, 386, 0, 397, 0,
+ 384, 0, 398, 0, 396, 0, 439, 0, 445, 0,
+ 443, 0, 444, 601, 0, 442, 601, 0, 385, 0,
+ 446, 0, 423, 0, 0, 654, 582, 656, 583, 652,
+ 735, 0, 654, 658, 52, 651, 0, 0, 582, 656,
+ 583, 653, 735, 0, 658, 52, 651, 0, 654, 658,
+ 0, 658, 0, 655, 0, 654, 655, 0, 52, 0,
+ 323, 0, 171, 0, 97, 601, 0, 98, 601, 0,
+ 43, 601, 0, 267, 601, 0, 324, 0, 317, 0,
+ 315, 0, 319, 0, 316, 0, 318, 0, 155, 601,
+ 0, 157, 601, 0, 154, 601, 0, 156, 601, 0,
+ 159, 601, 0, 191, 0, 193, 601, 0, 197, 601,
+ 0, 196, 601, 0, 195, 0, 194, 0, 192, 0,
+ 235, 601, 0, 218, 601, 0, 206, 601, 0, 207,
+ 601, 0, 208, 601, 0, 205, 601, 0, 178, 601,
+ 0, 198, 0, 338, 0, 179, 601, 0, 176, 601,
+ 0, 230, 601, 0, 219, 0, 229, 0, 233, 601,
+ 0, 234, 601, 0, 220, 0, 232, 0, 228, 0,
+ 231, 0, 227, 0, 222, 601, 0, 221, 601, 0,
+ 226, 0, 223, 0, 224, 0, 225, 0, 365, 0,
+ 362, 0, 363, 0, 364, 0, 312, 0, 204, 0,
+ 657, 658, 0, 657, 658, 582, 656, 583, 0, 53,
+ 0, 54, 0, 55, 0, 56, 0, 57, 0, 58,
+ 0, 59, 0, 60, 0, 663, 0, 658, 663, 0,
+ 660, 0, 659, 660, 0, 673, 685, 699, 0, 673,
+ 699, 685, 0, 685, 699, 673, 0, 685, 673, 699,
+ 0, 699, 685, 673, 0, 699, 673, 685, 0, 673,
+ 685, 0, 685, 673, 0, 673, 699, 0, 699, 673,
+ 0, 685, 699, 0, 699, 685, 0, 673, 0, 685,
+ 0, 699, 0, 701, 715, 712, 0, 701, 715, 0,
+ 701, 712, 0, 715, 712, 0, 701, 0, 715, 0,
+ 712, 0, 349, 0, 664, 0, 659, 0, 665, 0,
+ 666, 0, 661, 690, 669, 0, 690, 669, 0, 661,
+ 666, 0, 664, 0, 666, 0, 661, 690, 669, 0,
+ 690, 669, 0, 690, 0, 662, 667, 0, 0, 345,
+ 601, 668, 670, 0, 670, 0, 698, 693, 0, 671,
+ 698, 693, 0, 720, 721, 722, 718, 693, 0, 721,
+ 722, 718, 693, 0, 720, 722, 718, 693, 0, 720,
+ 721, 718, 693, 0, 722, 718, 693, 0, 721, 718,
+ 693, 0, 720, 718, 693, 0, 718, 693, 0, 0,
+ 61, 672, 663, 0, 0, 582, 674, 675, 583, 0,
+ 22, 267, 601, 677, 0, 22, 267, 601, 0, 271,
+ 728, 583, 582, 22, 241, 676, 677, 0, 271, 728,
+ 583, 582, 22, 241, 676, 0, 690, 0, 255, 601,
+ 0, 281, 0, 256, 0, 257, 0, 678, 0, 679,
+ 0, 683, 0, 684, 0, 681, 0, 678, 677, 0,
+ 679, 677, 0, 683, 677, 0, 684, 677, 0, 681,
+ 677, 0, 245, 0, 247, 0, 274, 0, 275, 0,
+ 253, 0, 254, 0, 259, 0, 260, 0, 248, 601,
+ 0, 249, 601, 0, 246, 601, 0, 243, 0, 251,
+ 0, 244, 0, 266, 0, 680, 0, 270, 0, 248,
+ 601, 679, 0, 249, 601, 679, 0, 246, 601, 679,
+ 0, 243, 679, 0, 251, 679, 0, 244, 679, 0,
+ 266, 679, 0, 680, 679, 0, 270, 679, 0, 276,
+ 0, 277, 0, 278, 0, 279, 0, 280, 0, 258,
+ 0, 242, 0, 252, 601, 0, 268, 601, 0, 261,
+ 0, 682, 0, 269, 601, 0, 250, 0, 265, 0,
+ 258, 681, 0, 242, 681, 0, 252, 601, 681, 0,
+ 268, 601, 681, 0, 261, 681, 0, 682, 681, 0,
+ 269, 601, 681, 0, 250, 681, 0, 265, 681, 0,
+ 262, 0, 263, 0, 264, 0, 582, 273, 603, 583,
+ 0, 582, 272, 603, 583, 0, 686, 689, 0, 686,
+ 689, 688, 0, 685, 686, 689, 0, 685, 686, 689,
+ 688, 0, 112, 0, 100, 0, 108, 0, 109, 0,
+ 102, 0, 101, 0, 99, 0, 689, 0, 689, 688,
+ 0, 114, 601, 0, 115, 601, 0, 103, 601, 0,
+ 688, 114, 601, 0, 688, 115, 601, 0, 688, 103,
+ 601, 0, 110, 0, 113, 0, 111, 0, 105, 0,
+ 106, 0, 104, 0, 107, 0, 66, 0, 691, 0,
+ 728, 0, 691, 728, 0, 62, 0, 696, 0, 659,
+ 697, 0, 661, 696, 0, 661, 0, 695, 0, 671,
+ 695, 0, 698, 693, 0, 693, 0, 692, 0, 690,
+ 694, 0, 698, 693, 0, 696, 0, 661, 696, 0,
+ 661, 693, 0, 63, 0, 700, 0, 699, 700, 0,
+ 61, 0, 217, 0, 41, 601, 0, 180, 0, 182,
+ 0, 183, 0, 212, 0, 184, 0, 188, 601, 0,
+ 210, 0, 216, 0, 320, 0, 300, 0, 301, 0,
+ 299, 0, 298, 0, 175, 601, 0, 189, 601, 0,
+ 306, 601, 0, 314, 601, 0, 313, 601, 0, 327,
+ 601, 0, 328, 601, 0, 66, 601, 0, 310, 0,
+ 202, 0, 702, 0, 702, 701, 0, 703, 0, 704,
+ 0, 705, 0, 706, 0, 707, 0, 702, 703, 0,
+ 702, 704, 0, 702, 705, 0, 702, 706, 0, 702,
+ 707, 0, 703, 83, 601, 0, 703, 82, 601, 0,
+ 83, 601, 0, 82, 601, 0, 708, 704, 0, 709,
+ 704, 0, 708, 0, 709, 0, 710, 705, 0, 711,
+ 705, 0, 710, 0, 711, 0, 213, 706, 0, 167,
+ 601, 706, 0, 162, 601, 706, 0, 163, 601, 706,
+ 0, 213, 0, 167, 601, 0, 162, 601, 0, 163,
+ 601, 0, 165, 601, 707, 0, 166, 601, 707, 0,
+ 165, 601, 0, 166, 601, 0, 237, 0, 238, 0,
+ 236, 0, 284, 601, 0, 282, 601, 0, 285, 0,
+ 286, 0, 288, 0, 287, 0, 289, 0, 295, 0,
+ 297, 0, 296, 0, 290, 601, 0, 283, 601, 0,
+ 294, 0, 293, 0, 291, 0, 292, 0, 326, 601,
+ 0, 714, 0, 713, 326, 601, 0, 713, 714, 0,
+ 326, 601, 713, 0, 714, 713, 0, 123, 601, 0,
+ 119, 601, 0, 713, 123, 601, 0, 713, 119, 601,
+ 0, 95, 0, 96, 0, 94, 0, 85, 0, 86,
+ 0, 87, 0, 92, 0, 93, 0, 91, 0, 88,
+ 0, 89, 0, 90, 0, 716, 717, 67, 601, 0,
+ 716, 717, 68, 601, 0, 716, 67, 601, 0, 716,
+ 68, 601, 0, 717, 68, 601, 0, 717, 67, 601,
+ 0, 67, 601, 0, 715, 716, 717, 67, 601, 0,
+ 715, 716, 717, 68, 601, 0, 715, 716, 67, 601,
+ 0, 715, 716, 68, 601, 0, 715, 717, 68, 601,
+ 0, 715, 717, 67, 601, 0, 715, 67, 601, 0,
+ 69, 0, 70, 0, 71, 0, 72, 0, 73, 0,
+ 74, 0, 75, 0, 76, 0, 725, 719, 0, 719,
+ 0, 725, 719, 718, 0, 719, 718, 0, 121, 601,
+ 0, 723, 0, 724, 0, 720, 723, 0, 720, 724,
+ 0, 343, 687, 0, 339, 687, 0, 341, 687, 0,
+ 342, 687, 0, 340, 687, 0, 344, 687, 0, 348,
+ 601, 0, 353, 601, 0, 721, 343, 687, 0, 721,
+ 339, 687, 0, 721, 341, 687, 0, 721, 342, 687,
+ 0, 721, 340, 687, 0, 721, 344, 687, 0, 721,
+ 348, 601, 0, 721, 353, 601, 0, 346, 0, 347,
+ 0, 722, 346, 0, 722, 347, 0, 351, 0, 352,
+ 0, 350, 0, 203, 0, 311, 0, 151, 0, 152,
+ 0, 148, 687, 0, 146, 687, 0, 145, 687, 0,
+ 147, 687, 0, 727, 726, 0, 726, 0, 151, 725,
+ 0, 152, 725, 0, 148, 687, 725, 0, 146, 687,
+ 725, 0, 145, 687, 725, 0, 147, 687, 725, 0,
+ 727, 726, 725, 0, 726, 725, 0, 153, 601, 0,
+ 150, 601, 726, 0, 149, 601, 726, 0, 150, 601,
+ 0, 149, 601, 0, 153, 601, 726, 0, 143, 0,
+ 144, 0, 142, 0, 133, 0, 134, 0, 135, 0,
+ 139, 0, 141, 0, 138, 0, 136, 0, 137, 0,
+ 140, 0, 0, 582, 729, 739, 583, 0, 0, 654,
+ 582, 656, 583, 730, 735, 0, 654, 658, 52, 651,
+ 0, 0, 582, 656, 583, 731, 735, 0, 654, 658,
+ 0, 740, 741, 0, 742, 0, 740, 741, 728, 0,
+ 742, 728, 0, 502, 603, 0, 502, 603, 728, 0,
+ 501, 765, 603, 0, 501, 765, 603, 728, 0, 501,
+ 603, 0, 501, 603, 765, 0, 501, 603, 765, 728,
+ 0, 501, 603, 728, 0, 22, 502, 603, 0, 22,
+ 502, 603, 728, 0, 22, 501, 523, 524, 760, 603,
+ 0, 22, 501, 523, 524, 760, 603, 728, 0, 22,
+ 501, 523, 760, 603, 0, 22, 501, 523, 760, 603,
+ 728, 0, 22, 501, 765, 603, 0, 22, 501, 765,
+ 603, 728, 0, 22, 501, 603, 0, 22, 501, 603,
+ 728, 0, 22, 501, 603, 765, 0, 22, 501, 603,
+ 765, 728, 0, 22, 738, 736, 0, 738, 736, 0,
+ 455, 762, 764, 0, 455, 762, 764, 728, 0, 455,
+ 761, 762, 764, 0, 455, 761, 762, 764, 728, 0,
+ 521, 0, 0, 463, 732, 734, 0, 22, 575, 603,
+ 0, 22, 576, 603, 0, 22, 571, 646, 0, 0,
+ 124, 733, 728, 0, 22, 572, 750, 728, 0, 22,
+ 573, 582, 22, 574, 601, 583, 658, 0, 22, 580,
+ 0, 580, 0, 578, 0, 579, 0, 752, 757, 728,
+ 0, 752, 757, 0, 658, 52, 651, 0, 658, 0,
+ 658, 0, 0, 658, 737, 728, 0, 499, 0, 0,
+ 728, 0, 658, 52, 651, 0, 658, 0, 744, 0,
+ 744, 740, 0, 0, 741, 743, 0, 743, 0, 742,
+ 743, 0, 603, 0, 602, 0, 745, 0, 240, 0,
+ 84, 601, 0, 117, 601, 0, 160, 601, 0, 164,
+ 601, 0, 334, 0, 211, 0, 173, 601, 0, 174,
+ 601, 0, 185, 601, 0, 11, 601, 0, 177, 601,
+ 0, 181, 601, 0, 214, 601, 0, 305, 0, 303,
+ 601, 0, 304, 601, 0, 321, 601, 0, 325, 601,
+ 0, 333, 601, 0, 354, 601, 0, 355, 601, 0,
+ 356, 601, 0, 357, 0, 358, 0, 360, 601, 0,
+ 335, 0, 361, 601, 0, 122, 601, 0, 118, 601,
+ 0, 308, 0, 200, 0, 42, 601, 0, 120, 601,
+ 0, 186, 601, 0, 590, 0, 125, 0, 127, 0,
+ 126, 0, 132, 0, 131, 0, 322, 0, 128, 0,
+ 124, 0, 129, 0, 130, 0, 61, 0, 52, 0,
+ 215, 0, 158, 0, 190, 0, 332, 0, 329, 0,
+ 331, 0, 330, 601, 0, 336, 0, 168, 0, 170,
+ 0, 169, 0, 172, 0, 116, 0, 199, 0, 307,
+ 0, 187, 0, 302, 0, 0, 239, 746, 766, 0,
+ 337, 0, 209, 0, 359, 0, 161, 0, 454, 0,
+ 201, 0, 309, 0, 366, 0, 367, 0, 505, 0,
+ 506, 601, 0, 0, 507, 748, 601, 0, 508, 601,
+ 749, 0, 509, 601, 0, 510, 601, 0, 511, 601,
+ 0, 512, 601, 0, 749, 510, 601, 0, 749, 511,
+ 601, 0, 749, 512, 601, 0, 582, 463, 752, 757,
+ 583, 0, 753, 754, 755, 0, 753, 754, 0, 753,
+ 755, 0, 753, 0, 687, 0, 712, 0, 747, 0,
+ 751, 0, 756, 0, 752, 687, 0, 752, 712, 0,
+ 752, 747, 0, 752, 751, 0, 752, 756, 0, 525,
+ 601, 0, 526, 601, 0, 753, 525, 601, 0, 753,
+ 526, 601, 0, 527, 601, 0, 528, 601, 0, 754,
+ 527, 601, 0, 754, 528, 601, 0, 529, 601, 0,
+ 530, 601, 0, 531, 601, 0, 532, 601, 0, 533,
+ 601, 0, 534, 601, 0, 535, 601, 0, 755, 529,
+ 601, 0, 755, 530, 601, 0, 755, 531, 601, 0,
+ 755, 532, 601, 0, 755, 533, 601, 0, 755, 534,
+ 601, 0, 755, 535, 601, 0, 513, 0, 514, 0,
+ 756, 513, 0, 756, 514, 0, 77, 78, 0, 79,
+ 0, 603, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 536, 0,
+ 537, 0, 538, 0, 539, 0, 540, 0, 541, 0,
+ 542, 0, 543, 0, 544, 0, 582, 22, 545, 603,
+ 583, 0, 582, 22, 546, 603, 583, 0, 582, 22,
+ 547, 646, 583, 0, 548, 0, 0, 548, 0, 0,
+ 0, 0, 0, 0, 549, 0, 550, 0, 551, 0,
+ 552, 0, 553, 0, 554, 601, 0, 555, 601, 0,
+ 0, 0, 556, 601, 0, 557, 601, 0, 558, 601,
+ 0, 559, 601, 0, 560, 601, 0, 561, 601, 0,
+ 0, 553, 0, 0, 554, 601, 0, 0, 555, 601,
+ 0, 0, 0, 0, 0, 556, 601, 0, 0, 557,
+ 601, 0, 0, 558, 601, 0, 0, 559, 601, 0,
+ 0, 560, 601, 0, 0, 561, 601, 0, 562, 601,
+ 0, 563, 601, 0, 0, 562, 601, 0, 0, 563,
+ 601, 0, 582, 22, 564, 0, 743, 583, 0, 582,
+ 22, 564, 743, 583, 0, 758, 0, 759, 0, 0,
+ 758, 0, 0, 759, 0, 582, 22, 565, 743, 583,
+ 0, 582, 22, 566, 743, 583, 0, 582, 567, 658,
+ 583, 0, 758, 0, 759, 0, 760, 758, 0, 760,
+ 759, 0, 590, 0, 582, 22, 569, 601, 583, 0,
+ 582, 569, 601, 583, 0, 582, 22, 570, 601, 583,
+ 0, 582, 570, 601, 583, 0, 0, 582, 22, 571,
+ 646, 583, 124, 582, 22, 572, 750, 583, 582, 22,
+ 573, 582, 22, 574, 601, 583, 658, 583, 0, 0,
+ 124, 582, 22, 572, 750, 583, 582, 22, 573, 582,
+ 22, 574, 601, 583, 658, 583, 0, 0, 582, 22,
+ 571, 646, 583, 124, 582, 22, 573, 582, 22, 574,
+ 601, 583, 658, 583, 0, 0, 124, 582, 22, 573,
+ 582, 22, 574, 601, 583, 658, 583, 0, 582, 22,
+ 575, 603, 583, 582, 22, 576, 603, 583, 0, 456,
+ 0, 457, 0, 458, 0, 459, 0, 456, 761, 0,
+ 457, 761, 0, 458, 761, 0, 459, 761, 0, 582,
+ 22, 460, 763, 583, 0, 766, 0, 766, 461, 0,
+ 568, 603, 0, 582, 22, 462, 658, 583, 0, 582,
+ 462, 658, 583, 0, 582, 462, 583, 0, 590, 0,
+ 590, 0, 503, 601, 0, 504, 601, 0, 503, 601,
+ 765, 0, 504, 601, 765, 0, 0, 0, 500, 767,
+ 768, 577, 0, 770, 0, 768, 770, 0, 770, 0,
+ 604, 0, 769, 770, 0, 769, 604, 0, 771, 0,
+ 780, 0, 783, 0, 786, 0, 789, 0, 791, 0,
+ 796, 0, 797, 0, 798, 0, 810, 0, 0, 0,
+ 0, 0, 464, 772, 804, 591, 773, 768, 589, 774,
+ 768, 589, 775, 768, 592, 0, 0, 0, 0, 0,
+ 464, 776, 591, 777, 768, 589, 778, 768, 589, 779,
+ 768, 592, 0, 0, 0, 465, 591, 781, 768, 589,
+ 782, 768, 592, 0, 0, 0, 466, 591, 784, 768,
+ 589, 785, 768, 592, 0, 0, 467, 591, 787, 809,
+ 592, 0, 0, 467, 803, 591, 788, 809, 592, 0,
+ 0, 468, 591, 790, 769, 592, 0, 0, 469, 591,
+ 792, 769, 592, 0, 0, 469, 802, 591, 793, 769,
+ 592, 0, 0, 469, 802, 795, 591, 794, 769, 592,
+ 0, 587, 0, 588, 0, 795, 587, 0, 795, 588,
+ 0, 470, 591, 769, 592, 0, 471, 591, 769, 592,
+ 0, 471, 807, 591, 769, 592, 0, 0, 472, 591,
+ 799, 809, 592, 0, 0, 0, 472, 800, 808, 591,
+ 801, 809, 592, 0, 473, 491, 0, 473, 492, 0,
+ 473, 497, 0, 473, 498, 0, 473, 493, 0, 473,
+ 494, 0, 473, 495, 0, 473, 496, 0, 474, 491,
+ 0, 474, 492, 0, 474, 497, 0, 474, 498, 0,
+ 474, 493, 0, 474, 494, 0, 474, 495, 0, 474,
+ 496, 0, 475, 491, 0, 475, 492, 0, 475, 497,
+ 0, 475, 498, 0, 475, 493, 0, 475, 494, 0,
+ 475, 495, 0, 475, 496, 0, 802, 473, 491, 0,
+ 802, 473, 492, 0, 802, 473, 497, 0, 802, 473,
+ 498, 0, 802, 473, 493, 0, 802, 473, 494, 0,
+ 802, 473, 495, 0, 802, 473, 496, 0, 802, 474,
+ 491, 0, 802, 474, 492, 0, 802, 474, 497, 0,
+ 802, 474, 498, 0, 802, 474, 493, 0, 802, 474,
+ 494, 0, 802, 474, 495, 0, 802, 474, 496, 0,
+ 802, 475, 491, 0, 802, 475, 492, 0, 802, 475,
+ 497, 0, 802, 475, 498, 0, 802, 475, 493, 0,
+ 802, 475, 494, 0, 802, 475, 495, 0, 802, 475,
+ 496, 0, 476, 0, 477, 0, 478, 0, 479, 601,
+ 0, 480, 601, 0, 481, 601, 0, 803, 476, 0,
+ 803, 477, 0, 803, 478, 0, 803, 479, 601, 0,
+ 803, 480, 601, 0, 803, 481, 601, 0, 482, 0,
+ 483, 0, 484, 0, 485, 604, 0, 486, 604, 0,
+ 0, 482, 805, 804, 0, 0, 483, 806, 804, 0,
+ 484, 804, 0, 485, 604, 804, 0, 486, 604, 804,
+ 0, 476, 0, 477, 0, 478, 0, 487, 601, 0,
+ 488, 601, 0, 489, 601, 0, 490, 601, 0, 809,
+ 589, 589, 768, 0, 768, 0, 809, 589, 768, 0,
+ 0, 587, 810, 0, 587, 0, 591, 592, 0, 0,
+ 591, 811, 769, 592, 0, 813, 810, 0, 813, 0,
+ 583, 0, 813, 583, 0, 0, 582, 814, 812, 0,
+ 740, 741, 0, 742, 0, 740, 741, 728, 0, 742,
+ 728, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 871, 872, 889, 891, 893, 894, 895, 896, 897, 898,
+ 908, 909, 912, 913, 915, 916, 917, 918, 919, 920,
+ 922, 923, 924, 925, 928, 929, 932, 933, 935, 937,
+ 938, 939, 940, 941, 942, 944, 945, 946, 947, 948,
+ 949, 950, 952, 953, 954, 955, 958, 959, 962, 963,
+ 964, 965, 966, 967, 968, 969, 975, 976, 979, 980,
+ 984, 985, 987, 988, 992, 993, 995, 996, 998, 999,
+ 1006, 1007, 1010, 1011, 1013, 1015, 1016, 1019, 1020, 1022,
+ 1023, 1025, 1026, 1027, 1028, 1029, 1032, 1033, 1034, 1036,
+ 1037, 1040, 1041, 1042, 1043, 1044, 1045, 1047, 1048, 1050,
+ 1051, 1053, 1054, 1056, 1057, 1059, 1060, 1062, 1064, 1067,
+ 1068, 1069, 1070, 1075, 1076, 1078, 1079, 1081, 1082, 1083,
+ 1084, 1085, 1086, 1088, 1089, 1093, 1094, 1097, 1098, 1102,
+ 1103, 1105, 1106, 1107, 1108, 1109, 1110, 1112, 1113, 1115,
+ 1116, 1118, 1119, 1121, 1122, 1125, 1129, 1130, 1131, 1132,
+ 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1143, 1146,
+ 1147, 1148, 1149, 1150, 1152, 1153, 1157, 1158, 1159, 1160,
+ 1161, 1162, 1163, 1166, 1167, 1168, 1169, 1170, 1172, 1173,
+ 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
+ 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
+ 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
+ 1204, 1205, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
+ 1215, 1216, 1217, 1218, 1219, 1221, 1223, 1224, 1225, 1226,
+ 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1236, 1237,
+ 1238, 1239, 1240, 1242, 1243, 1244, 1245, 1247, 1249, 1250,
+ 1252, 1255, 1255, 1256, 1259, 1259, 1260, 1261, 1263, 1264,
+ 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1275, 1276,
+ 1277, 1278, 1279, 1281, 1282, 1283, 1284, 1285, 1286, 1288,
+ 1289, 1290, 1291, 1292, 1293, 1295, 1296, 1297, 1298, 1299,
+ 1300, 1301, 1302, 1303, 1304, 1305, 1307, 1308, 1309, 1310,
+ 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320,
+ 1321, 1322, 1324, 1325, 1326, 1327, 1329, 1330, 1333, 1334,
+ 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1348, 1349,
+ 1351, 1352, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361,
+ 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1370, 1371, 1372,
+ 1373, 1374, 1375, 1376, 1378, 1380, 1381, 1382, 1383, 1384,
+ 1385, 1387, 1390, 1391, 1392, 1393, 1395, 1396, 1398, 1399,
+ 1399, 1401, 1402, 1405, 1406, 1407, 1408, 1409, 1410, 1411,
+ 1412, 1414, 1425, 1428, 1432, 1460, 1461, 1462, 1463, 1464,
+ 1467, 1468, 1469, 1470, 1472, 1473, 1474, 1475, 1476, 1477,
+ 1478, 1479, 1480, 1481, 1483, 1484, 1485, 1486, 1487, 1488,
+ 1489, 1490, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499,
+ 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509,
+ 1511, 1512, 1513, 1514, 1515, 1517, 1518, 1519, 1520, 1521,
+ 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531,
+ 1532, 1533, 1534, 1536, 1537, 1538, 1540, 1542, 1544, 1545,
+ 1546, 1547, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1557,
+ 1558, 1560, 1561, 1562, 1563, 1564, 1565, 1567, 1568, 1569,
+ 1570, 1571, 1572, 1573, 1575, 1576, 1578, 1579, 1586, 1588,
+ 1589, 1590, 1591, 1594, 1595, 1597, 1598, 1600, 1601, 1602,
+ 1604, 1605, 1606, 1608, 1622, 1623, 1625, 1636, 1688, 1689,
+ 1690, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1709, 1726,
+ 1742, 1761, 1778, 1784, 1790, 1797, 1798, 1799, 1800, 1802,
+ 1804, 1805, 1810, 1811, 1813, 1814, 1815, 1816, 1817, 1818,
+ 1819, 1820, 1821, 1822, 1824, 1825, 1826, 1827, 1829, 1830,
+ 1831, 1832, 1834, 1835, 1836, 1837, 1839, 1840, 1841, 1842,
+ 1843, 1844, 1845, 1846, 1848, 1849, 1850, 1851, 1853, 1854,
+ 1855, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1865, 1866,
+ 1867, 1869, 1870, 1871, 1872, 1873, 1874, 1877, 1878, 1879,
+ 1880, 1881, 1882, 1884, 1885, 1886, 1887, 1889, 1890, 1891,
+ 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1902,
+ 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912,
+ 1913, 1914, 1915, 1917, 1918, 1919, 1924, 1925, 1926, 1927,
+ 1928, 1936, 1937, 1938, 1939, 1941, 1953, 1954, 1955, 1956,
+ 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967,
+ 1968, 1969, 1970, 1971, 1972, 1973, 1975, 1976, 1977, 1978,
+ 1980, 1981, 1982, 1984, 1985, 1988, 1989, 1990, 1991, 1992,
+ 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+ 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015,
+ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2031,
+ 2034, 2062, 2065, 2065, 2066, 2069, 2069, 2071, 2078, 2085,
+ 2092, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107,
+ 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117,
+ 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2128,
+ 2128, 2129, 2130, 2131, 2133, 2133, 2134, 2135, 2136, 2137,
+ 2138, 2140, 2152, 2165, 2166, 2168, 2169, 2171, 2172, 2176,
+ 2177, 2178, 2179, 2181, 2182, 2184, 2185, 2191, 2194, 2199,
+ 2214, 2215, 2217, 2218, 2225, 2226, 2227, 2238, 2239, 2240,
+ 2241, 2242, 2243, 2266, 2286, 2290, 2291, 2292, 2293, 2294,
+ 2295, 2296, 2297, 2311, 2312, 2313, 2314, 2315, 2326, 2327,
+ 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2337, 2341, 2342,
+ 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2353, 2369,
+ 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,
+ 2380, 2381, 2382, 2384, 2385, 2386, 2387, 2388, 2390, 2390,
+ 2391, 2392, 2393, 2395, 2413, 2414, 2415, 2416, 2420, 2421,
+ 2422, 2424, 2424, 2425, 2427, 2428, 2429, 2430, 2431, 2432,
+ 2434, 2436, 2437, 2438, 2439, 2441, 2442, 2443, 2444, 2445,
+ 2446, 2447, 2448, 2449, 2450, 2452, 2453, 2454, 2455, 2457,
+ 2458, 2459, 2460, 2462, 2463, 2464, 2465, 2466, 2467, 2468,
+ 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2477, 2478, 2479,
+ 2480, 2482, 2483, 2484, 2486, 2487, 2488, 2489, 2490, 2491,
+ 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2501, 2502,
+ 2503, 2504, 2505, 2506, 2508, 2509, 2510, 2512, 2514, 2516,
+ 2518, 2519, 2520, 2521, 2523, 2524, 2525, 2526, 2528, 2529,
+ 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539,
+ 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2549, 2550,
+ 2551, 2552, 2554, 2555, 2557, 2558, 2559, 2560, 2562, 2564,
+ 2566, 2568, 2569, 2570, 2571, 2574, 2578, 2579, 2581, 2582,
+ 2584, 2586, 2588, 2590, 2592, 2595, 2596, 2597, 2598, 2599,
+ 2600, 2601, 2602, 2604, 2606, 2607, 2608, 2610, 2611, 2612,
+ 2614, 2618, 2622, 2623, 2624, 2625, 2629, 2630, 2634, 2640,
+ 2641, 2643, 2644, 2657, 2658, 2673, 2674, 2675, 2676, 2677,
+ 2678, 2679, 2680, 2681, 2682, 2684, 2685, 2693, 2695, 2697,
+ 2699, 2700, 2707, 2709, 2711, 2715, 2717, 2719, 2723, 2725,
+ 2727, 2731, 2735, 2738, 2745, 2749, 2751, 2754, 2755, 2757,
+ 2758, 2760, 2761, 2764, 2765, 2766, 2767, 2769, 2772, 2774,
+ 2777, 2780, 2783, 2784, 2792, 2796, 2797, 2798, 2799, 2800,
+ 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810,
+ 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820,
+ 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830,
+ 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840,
+ 2841, 2842, 2843, 2846, 2847, 2848, 2849, 2850, 2851, 2852,
+ 2853, 2854, 2855, 2856, 2857, 2859, 2860, 2861, 2862, 2863,
+ 2864, 2866, 2866, 2868, 2868, 2869, 2870, 2872, 2873, 2874,
+ 2876, 2877, 2878, 2879, 2881, 2896, 2909, 2926, 2927, 2928,
+ 2929, 2930, 2931, 2932, 2933, 2936, 2958, 2981, 2987, 2987,
+ 2994, 3001, 3008
+};
+
+static const char * const yytname[] = { "$","error","$illegal.","NUM","PC",
+"PCA","DEFF","FONTTBL","ANSI","RTF","MAC","F","FNIL","FROMAN","FSWISS","FMODERN",
+"FSCRIPT","FDECOR","FTECH","FBIDI","FCHARSET","FPQR","ETOILE","FONTFI_LE","FTNIL",
+"FTTRUETYPE","CPG","FI_LETBL","FI_LE","FID","FRELATIVE","FOSNUM","FVALIDMAC",
+"FVALIDDOS","FVALIDNTFS","FVALIDHPFS","FNETWORK","RED","BLUE","GREEN","STYLESHEET",
+"S","CS","DS","KEYCODE","ADDITIVE","SBASEDON","SHIFT","CTRL","ALT","FN","INFO",
+"SECT","HEADER","FOOTER","HEADERL","HEADERR","HEADERF","FOOTERL","FOOTERR","FOOTERF",
+"PAR","ROW","CELL","FONTEMB","COLORTBL","SUBDOCUMENT","TX","TB","TQR","TQC",
+"TQDEC","TLDOT","TLHYPH","TLUL","TITH","TLEQ","BIN","BDATA","SDATA","PCDATA",
+"SNEXT","ABSH","ABSW","B","BGBDIAG","BGCROSS","BGDCROSS","BGDKBDIAG","BGDKCROSS",
+"BGDKDCROSS","BGDKFDIAG","BGDKHORIZ","BGDKVERT","BGFDIAG","BGHORIZ","BGVERT",
+"BINFSXN","BINSXN","BOX","BRDRB","BRDRBAR","BRDRBTW","BRDRCF","BRDRDASH","BRDRDB",
+"BRDRDOT","BRDRHAIR","BRDRL","BRDRR","BRDRS","BRDRSH","BRDRT","BRDRTH","BRDRW",
+"BRSP","BULLET","CAPS","CB","CBPAT","CCHS","CELLX","CF","CFPAT","CHATN","CHDATE",
+"CHDPA","CHDPL","CHFTN","CHFTNSEP","CHFTNSEPC","CHPGN","CHTIME","CLBGBDIAG",
+"CLBGCROSS","CLBGDCROSS","CLBGDKBDIAG","CLBGDKCROSS","CLBGDKFDIAG","CLBGDKHOR",
+"CLBGDKRCDCROSS","CLBGDKVERT","CLBGFDIAG","CLBGHORIZ","CLBGVERT","CLBRDRB","CLBRDRL",
+"CLBRDRR","CLBRDRT","CLCBPAT","CLCFPAT","CLMGF","CLMGR","CLSHDNG","COLNO","COLS",
+"COLSR","COLSX","COLUMN","COLW","DELETED","DEUXPOINTS","DFRMTXTX","DFRMTXTY",
+"DN","DROPCAPLI","DROPCAPT","DXFRTEXT","EMDASH","EMSPACE","ENDASH","ENDNHERE",
+"ENSPACE","EXPND","EXPNDTW","FI","FOOTERY","FS","GUTTERSXN","HEADERY","HYPHPAR",
+"I","INTBL","KEEP","KEEPN","KERNING","LANG","LDBLQUOTE","LEVEL","LI","LINE",
+"LINEBETCOL","LINECONT","LINEMOD","LINEPPAGE","LINERESTART","LINESTARTS","LINEX",
+"LNDSCPSXN","LQUOTE","LTRCH","LTRMARK","LTRPAR","LTRROW","LTRSECT","MARGBSXN",
+"MARGLSXN","MARGRSXN","MARGTSXN","MOINS","NOLINE","NOSUPERSUB","NOWIDCLTPAR",
+"NOWRAP","OUTL","PAGE","PAGEBB","PARD","PGHSXN","PGNCONT","PGNDEC","PGNGNSH",
+"PGNHN","PGNHNSC","PGNHNSM","PGNHNSN","PGNHNSP","PGNLCLTR","PGNLCRM","PGNRESTART",
+"PGNSTARTS","PGNUCLTR","PGNUCRM","PGNX","PGNY","PGWSXN","PHCOL","PHMRG","PHPG",
+"PIPE","PLAIN","PN","PNACROSS","PNB","PNCAPS","PNCARD","PNCF","PNDEC","PNF",
+"PNFS","PNHANG","PNI","PNINDENT","PNLCLTR","PNLCRM","PNLVL","PNLVLBODY","PNLVLCONT",
+"PNNUMONCE","PNORD","PNORDT","PNPREV","PNQC","PNQL","PNQR","PNRESTART","PNSCAPS",
+"PNSECLVL","PNSP","PNSTART","PNSTRIKE","PNTEXT","PNTXTA","PNTXTB","PNUCLTR",
+"PNUCRM","PNUL","PNULD","PNULDB","PNULNONE","PNULW","PNVLBT","POSNEGX","POSNEGY",
+"POSX","POSXC","POSXI","POSXL","POSXO","POSXR","POSY","POSYB","POSYC","POSYIL",
+"POSYT","PVMRG","PVPARA","PVPG","QC","QJ","QL","QR","RDBLQUOTE","REVAUTH","REVDTTM",
+"REVISED","RI","RQUOTE","RTLCH","RTLMARK","RTLPAR","RTLROW","RTLSECT","SA","SB",
+"SBKCOL","SBKEVEN","SBKNONE","SBKODD","SBKPAGE","SBYS","SCAPS","SECTNUM","SECTD",
+"SETUNLOCKED","SHAD","SHADING","SL","SLMULT","SOFTCOL","SOFTLHEIGHT","SOFTLINE",
+"SOFTPAGE","STRIKE","SUB","SUPER","TAB","TILDE","TITLEPG","TRBRDRB","TRBRDRH",
+"TRBRDRL","TRBRDRR","TRBRDRT","TRBRDRV","TRGAPH","TRHDR","TRKEEP","TRLEFT","TROWD",
+"TRQC","TRQL","TRQR","TRRH","UL","ULD","ULDB","ULNONE","ULW","UNDERSCORE","UP",
+"V","VERTALB","VERTALC","VERTALJ","VERTALT","ZWJ","ZWNJ","AENDDOC","AENDNOTES",
+"AFTNBJ","AFTNCN","AFTNNALC","AFTNNAR","AFTNNAUC","AFTNNCHI","AFTNNRLC","AFTNNRUC",
+"AFTNRESTART","AFTNRSTCONT","AFTNSEP","AFTNSEPC","AFTNSTART","AFTNTJ","ALLPROT",
+"ANNOTPROT","BRKFRM","CVMME","DEFFORMAT","DEFLANG","DEFTAB","DOCTEMP","ENDDOC",
+"ENDNOTES","FACINGP","FET","FORMDISP","FORMPROT","FORMSHADE","FRACWIDTH","FTNBJ",
+"FTNCN","FTNNALC","FTNNAR","FTNNAUC","FTNNCHI","FTNNRLC","FTNNRUC","FTNRESTART",
+"FTNRSTCONT","FTNRSTPG","FTNSEP","FTNSEPC","FTNSTART","FTNTJ","GUTTER","HYPHAUTO",
+"HYPHCAPS","HYPHCONSEC","HYPHHOTZ","LANDSCAPE","LINESTART","LINKSTYLES","LTRDOC",
+"MAKEBACKUP","MARGB","MARGL","MARGMIRROR","MARGR","MARGT","NEXTFILE","NOCOLBAL",
+"NOEXTRASPRL","NOTABIND","OTBLRUL","PAPERH","PAPERW","PGNSTART","PRCOLBL","PRINTDATA",
+"PSOVER","PSZ","REVBAR","REVISIONS","REVPROP","REVPROT","RTLDOC","SPRSSPBF",
+"SPRSTSP","SWPBDR","TEMPLATE","TRANSMF","WIDOWCTRL","WRAPTRSP","APOSTROPHE",
+"FIELD","FLDDIRTY","FLDEDIT","FLDLOCK","FLDPRIV","FLDINST","FLDALT","FLDRSLT",
+"PICT","PZINTEGRALE","PZRACINE","PZFRACTION","PZMATRIX","PZBOX","PZBRACKET",
+"PZLIST","PZOVERSTRIKE","PZSUSCRIPT","EQLC","EQRC","EQBC","EQAL","EQAC","EQAR",
+"EQCO","EQVS","EQHS","EQSU","EQPR","EQIN","EQFC","EQVC","EQAI","EQUP","EQDI",
+"EQDO","EQCROCHETO","EQCROCHETF","EQPARENTHO","EQPARENTHF","EQACCOLADO","EQACCOLADF",
+"EQSUPINFO","EQSUPINFF","FOOTNOTE","PZPEQ","BKMKSTART","BKMKEND","BKMKCOLF",
+"BKMKCOLL","MACPICT","PMMETAFILE","WMETAFILE","DIBITMAP","WBITMAP","WBMBITSPIXEL",
+"WBMPLANES","WBMWIDTHBYTES","PICBMP","PICBPP","YR","MO","DY","HR","MIN","SEC",
+"OBJECT","OBJTOPICT","BKMKPUB","PUBAUTO","PICW","PICH","PICWGOAL","PICHGOAL",
+"PICSCALEX","PICSCALEY","PICSCALED","PICCROPT","PICCROPB","PICCROPR","PICCROPL",
+"OBJEMB","OBJLINK","OBJAUTLINK","OBJSUB","OBJPUB","ONJICEMB","LINKSELF","OBJLOCK",
+"OBJUPDATE","OBJCLASS","OBJNAME","OBJTIME","RSLTMERGE","RSLTRTF","RSLTTXT","RSLTPICT",
+"RSLTBMP","OBJSETSIZE","OBJALIGN","OBJTRANSY","OBJCROPT","OBJCROPB","OBJCROPL",
+"OBJCROPR","OBJSCALEY","OBJSCALEX","OBJH","OBJW","OBJDATA","OBJALIAS","OBJSECT",
+"RESULT","PZPAUTREFIELD","ATRFSTART","ATRFEND","ATNTIME","ATNICN","ANNOTATION",
+"ATNREF","ATNID","ATNAUTHOR","PZPENDEQ","XE","TC","DO","PZERROR","'{'","'}'",
+"';'","'e'","'q'","' '","'\\t'","','","'z'","'('","')'","input","@1","Entete",
+"pzdeflang","ppentete","pentete","charset","deffont","num","pznvnum","pzpcdata",
+"pzpvpcdata","pfontinfo","fontinfo","@2","fontfamily","fcharset","fpqr","fontaltname",
+"fontemb","fonttype","fontfname","codepage","filetbl","pfileinfo","fileinfo",
+"pfilesource","relpath","osnum","filesource","colortbl","pcolordef","colordef",
+"red","blue","green","stylesheet","pstyle","style","styledef","keycode","pformatting",
+"formatting","additive","based","next","stylename","keys","shift","alt","ctrl",
+"key","revtbl","time","Document","pdocfmtpsection","info","docfmt","section",
+"@3","@4","psecfmt","secfmt","hdrftr","hdrctl","ppara","declpara","pzmultdeclpara",
+"declbispara","pzmottrowd","para","pzsubquapara","pzsubquipara","pzsubpara",
+"pzsubbispara","@5","pzsubterpara","pzpsubpar","ppar","@6","accopzpn","@7","pzpn",
+"pnlevel","pndesc","pnnstyle","pnchrfmt","pnul","pnfmt","pnjust","pntxtb","pntxta",
+"brdrdef","brdrseg","brdr","pbrdr","brdrk","psubdoc","pchar","motrow","pcell",
+"pzsubpcell","pzsubbispcell","pzsubterpcell","pzsubquapcell","motcell","pznvpparfmt",
+"parfmt","pznvpapoctl","apoctl","framesize","horzpos","vertpos","txtwrap","dropcap",
+"hframe","hdist","vframe","vdist","pznvshading","pshading","pat","pznvtabdef",
+"tabkind","tablead","zpcelldef","motcellxnum","ptbldef","pptbldef","ppptbldef",
+"rowjust","rowwrite","pcelldef","pcellshad","cellpat","charr","@8","@9","@10",
+"@11","@12","endpict","pzhdrftretfin","pzetfincharr","@13","pzmotfootnote","pzincharr",
+"pchrfmt","pdata","pznvpdata","data","chrfmt","spec","@14","picttype","@15",
+"bitmapinfo","pict","pictsize","pzpict","pzpictsize","ppzpictsize","pppzpictsize",
+"metafileinfo","datadata","objalias","objsect","pzpubobject","fieldmod","fieldinst",
+"pzeqalt","fieldrslt","bkmkcol","equation","@16","pformule","ppvformule","formule",
+"integrale","@17","@18","@19","@20","@21","@22","@23","@24","racine","@25","@26",
+"fraction","@27","@28","matrix","@29","@30","box","@31","bracket","@32","@33",
+"@34","espaces","list","overstrike","suscript","@35","@36","@37","bracketsw",
+"matrixsw","integralesw","@38","@39","overstrikesw","suscriptsw","colones","texte",
+"@40","etfinpznvcharr","pznvcharr","@41","@34"
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 593, 594, 593, 593, 595, 595, 595, 595, 595, 595,
+ 596, 596, 597, 597, 598, 598, 598, 598, 598, 598,
+ 599, 599, 599, 599, 600, 600, 601, 601, 602, 603,
+ 603, 603, 603, 603, 603, 604, 604, 604, 604, 604,
+ 604, 604, 605, 605, 605, 605, 607, 606, 608, 608,
+ 608, 608, 608, 608, 608, 608, 609, 609, 610, 610,
+ 611, 611, 612, 612, 613, 613, 614, 614, 615, 615,
+ 616, 616, 617, 617, 618, 619, 619, 620, 620, 621,
+ 621, 622, 622, 622, 622, 622, 623, 623, 623, 624,
+ 624, 625, 625, 625, 625, 625, 625, 626, 626, 627,
+ 627, 628, 628, 629, 629, 630, 630, 631, 631, 632,
+ 632, 632, 632, 633, 633, 634, 634, 635, 635, 635,
+ 635, 635, 635, 636, 636, 637, 637, 638, 638, 639,
+ 639, 640, 640, 640, 640, 640, 640, 641, 641, 642,
+ 642, 643, 643, 644, 644, 645, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 647, 648,
+ 648, 648, 648, 648, 649, 649, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 652, 651, 651, 653, 651, 651, 651, 651, 654, 654,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 656, 656,
+ 657, 657, 657, 657, 657, 657, 657, 657, 658, 658,
+ 659, 659, 660, 660, 660, 660, 660, 660, 660, 660,
+ 660, 660, 660, 660, 660, 660, 660, 661, 661, 661,
+ 661, 661, 661, 661, 662, 663, 663, 663, 663, 663,
+ 663, 664, 665, 665, 665, 665, 666, 666, 668, 667,
+ 667, 669, 669, 670, 670, 670, 670, 670, 670, 670,
+ 670, 672, 671, 674, 673, 675, 675, 675, 675, 675,
+ 676, 676, 676, 676, 677, 677, 677, 677, 677, 677,
+ 677, 677, 677, 677, 678, 678, 678, 678, 678, 678,
+ 678, 678, 679, 679, 679, 679, 679, 679, 679, 679,
+ 679, 679, 679, 679, 679, 679, 679, 679, 679, 679,
+ 680, 680, 680, 680, 680, 681, 681, 681, 681, 681,
+ 681, 681, 681, 681, 681, 681, 681, 681, 681, 681,
+ 681, 681, 681, 682, 682, 682, 683, 684, 685, 685,
+ 685, 685, 686, 686, 686, 686, 686, 686, 686, 687,
+ 687, 688, 688, 688, 688, 688, 688, 689, 689, 689,
+ 689, 689, 689, 689, 690, 690, 691, 691, 692, 693,
+ 693, 693, 693, 694, 694, 695, 695, 696, 696, 696,
+ 697, 697, 697, 698, 699, 699, 700, 700, 700, 700,
+ 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
+ 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
+ 700, 700, 701, 701, 702, 702, 702, 702, 702, 702,
+ 702, 702, 702, 702, 703, 703, 703, 703, 704, 704,
+ 704, 704, 705, 705, 705, 705, 706, 706, 706, 706,
+ 706, 706, 706, 706, 707, 707, 707, 707, 708, 708,
+ 708, 709, 709, 709, 709, 709, 709, 709, 710, 710,
+ 710, 711, 711, 711, 711, 711, 711, 712, 712, 712,
+ 712, 712, 712, 713, 713, 713, 713, 714, 714, 714,
+ 714, 714, 714, 714, 714, 714, 714, 714, 714, 715,
+ 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
+ 715, 715, 715, 716, 716, 716, 717, 717, 717, 717,
+ 717, 718, 718, 718, 718, 719, 720, 720, 720, 720,
+ 721, 721, 721, 721, 721, 721, 721, 721, 721, 721,
+ 721, 721, 721, 721, 721, 721, 722, 722, 722, 722,
+ 723, 723, 723, 724, 724, 725, 725, 725, 725, 725,
+ 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
+ 725, 726, 726, 726, 726, 726, 726, 727, 727, 727,
+ 727, 727, 727, 727, 727, 727, 727, 727, 727, 729,
+ 728, 730, 728, 728, 731, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 728, 728, 728, 732, 728,
+ 728, 728, 728, 733, 728, 728, 728, 728, 728, 728,
+ 728, 734, 734, 735, 735, 736, 737, 736, 738, 739,
+ 739, 739, 739, 740, 740, 741, 741, 742, 742, 743,
+ 743, 743, 744, 744, 744, 744, 744, 744, 744, 744,
+ 744, 744, 744, 744, 744, 744, 744, 744, 744, 744,
+ 744, 744, 744, 744, 744, 744, 744, 744, 744, 744,
+ 744, 744, 744, 744, 744, 744, 744, -1, 745, 745,
+ 745, 745, 745, 745, 745, 745, 745, 745, 745, 745,
+ 745, 745, 745, 745, 745, 745, 745, 745, 745, 745,
+ 745, 745, 745, 745, 745, 745, 745, 746, 745, 745,
+ 745, 745, 745, 745, 745, 745, 745, 745, 747, 747,
+ 748, 747, 747, 747, 749, 749, 749, 749, 749, 749,
+ 750, 751, 751, 751, 751, 752, 752, 752, 752, 752,
+ 752, 752, 752, 752, 752, 753, 753, 753, 753, 754,
+ 754, 754, 754, 755, 755, 755, 755, 755, 755, 755,
+ 755, 755, 755, 755, 755, 755, 755, 756, 756, 756,
+ 756, 757, 757, 757, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 758, 759,
+ -1, 760, 760, 760, 760, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 761, 761, 761, 761, 761,
+ 761, 761, 761, 762, 763, 763, 763, 764, 764, 764,
+ -1, -1, 765, 765, 765, 765, 766, 767, 766, 768,
+ 768, 769, 769, 769, 769, 770, 770, 770, 770, 770,
+ 770, 770, 770, 770, 770, 772, 773, 774, 775, 771,
+ 776, 777, 778, 779, 771, 781, 782, 780, 784, 785,
+ 783, 787, 786, 788, 786, 790, 789, 792, 791, 793,
+ 791, 794, 791, 795, 795, 795, 795, 796, 797, 797,
+ 799, 798, 800, 801, 798, 802, 802, 802, 802, 802,
+ 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 802, 803, 803, 803, 803, 803, 803, 803,
+ 803, 803, 803, 803, 803, 804, 804, 804, 804, 804,
+ 805, 804, 806, 804, 804, 804, 804, 807, 807, 807,
+ 808, 808, 808, 808, 809, 809, 809, 810, 810, 810,
+ 810, 811, 810, 810, 810, 812, 812, 814, 813, 813,
+ 813, 813, 813
+};
+
+static const short yyr2[] = { 0,
+ 0, 0, 5, 2, 0, 10, 10, 11, 11, 12,
+ 0, 2, 0, 4, 0, 1, 1, 1, 1, 2,
+ 1, 1, 1, 1, 0, 2, 0, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 3, 2, 4, 0, 11, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 2, 0, 2,
+ 0, 6, 0, 7, 1, 1, 0, 6, 0, 2,
+ 0, 3, 3, 4, 7, 1, 2, 0, 2, 0,
+ 2, 1, 1, 1, 1, 1, 0, 3, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 0, 2, 0,
+ 2, 0, 2, 0, 2, 0, 2, 10, 9, 0,
+ 2, 2, 2, 0, 4, 1, 2, 1, 1, 1,
+ 1, 1, 1, 0, 2, 0, 2, 0, 2, 0,
+ 1, 4, 4, 4, 4, 4, 4, 0, 1, 0,
+ 1, 0, 1, 2, 1, 0, 2, 2, 2, 2,
+ 2, 2, 3, 3, 3, 3, 3, 3, 1, 2,
+ 1, 2, 6, 6, 0, 2, 2, 2, 2, 1,
+ 1, 2, 1, 1, 1, 1, 1, 2, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 2, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 1,
+ 2, 1, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 2, 2, 1, 1, 1,
+ 0, 6, 4, 0, 5, 3, 2, 1, 1, 2,
+ 1, 1, 1, 2, 2, 2, 2, 1, 1, 1,
+ 1, 1, 1, 2, 2, 2, 2, 2, 1, 2,
+ 2, 2, 1, 1, 1, 2, 2, 2, 2, 2,
+ 2, 2, 1, 1, 2, 2, 2, 1, 1, 2,
+ 2, 1, 1, 1, 1, 1, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 5,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 1, 2, 3, 3, 3, 3, 3, 3, 2, 2,
+ 2, 2, 2, 2, 1, 1, 1, 3, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 2, 2, 1, 1, 3, 2, 1, 2, 0, 4,
+ 1, 2, 3, 5, 4, 4, 4, 3, 3, 3,
+ 2, 0, 3, 0, 4, 4, 3, 8, 7, 1,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 1, 1, 1, 1, 1,
+ 1, 3, 3, 3, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
+ 1, 2, 1, 1, 2, 2, 3, 3, 2, 2,
+ 3, 2, 2, 1, 1, 1, 4, 4, 2, 3,
+ 3, 4, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 3, 3, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
+ 2, 2, 1, 1, 2, 2, 1, 1, 2, 2,
+ 1, 2, 2, 1, 1, 2, 1, 1, 2, 1,
+ 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 2, 1, 1, 1, 1, 1, 2,
+ 2, 2, 2, 2, 3, 3, 2, 2, 2, 2,
+ 1, 1, 2, 2, 1, 1, 2, 3, 3, 3,
+ 1, 2, 2, 2, 3, 3, 2, 2, 1, 1,
+ 1, 2, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 1, 1, 1, 1, 2, 1, 3,
+ 2, 3, 2, 2, 2, 3, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 4, 3, 3, 3, 3, 2, 5, 5, 4, 4,
+ 4, 4, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 3, 2, 2, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
+ 3, 3, 3, 3, 3, 3, 1, 1, 2, 2,
+ 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
+ 2, 2, 1, 2, 2, 3, 3, 3, 3, 3,
+ 2, 2, 3, 3, 2, 2, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 4, 0, 6, 4, 0, 5, 2, 2, 1, 3,
+ 2, 2, 3, 3, 4, 2, 3, 4, 3, 3,
+ 4, 6, 7, 5, 6, 4, 5, 3, 4, 4,
+ 5, 3, 2, 3, 4, 4, 5, 1, 0, 3,
+ 3, 3, 3, 0, 3, 4, 8, 2, 1, 1,
+ 1, 3, 2, 3, 1, 1, 0, 3, 1, 0,
+ 1, 3, 1, 1, 2, 0, 2, 1, 2, 1,
+ 1, 1, 1, 2, 2, 2, 2, 1, 1, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 1, 2, 1, 2,
+ 2, 2, 1, 1, 2, 2, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 0, 3, 3, 2, 2, 2, 2, 3, 3, 3,
+ 5, 3, 2, 2, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 2,
+ 2, 3, 3, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 1, 1, 2,
+ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 5, 5, 5,
+ 1, 2, 1, 2, 1, 1, 1, 1, 1, 2,
+ 2, 1, 2, 2, 2, 2, 2, 2, 2, 3,
+ 3, 2, 3, 3, 3, 3, 3, 3, 2, 2,
+ 3, 3, 6, 5, 1, 1, 2, 2, 5, 5,
+ 4, 1, 1, 2, 2, 1, 5, 4, 5, 4,
+ 22, 17, 17, 12, 10, 1, 1, 1, 1, 2,
+ 2, 2, 2, 5, 1, 2, 2, 5, 4, 3,
+ 1, 1, 2, 2, 3, 3, 0, 0, 4, 1,
+ 2, 1, 1, 2, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 0, 0, 0, 13,
+ 0, 0, 0, 0, 12, 0, 0, 8, 0, 0,
+ 8, 0, 5, 0, 6, 0, 5, 0, 5, 0,
+ 6, 0, 7, 1, 1, 2, 2, 4, 4, 5,
+ 0, 5, 0, 0, 7, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 1, 1, 1, 2, 2, 2, 2,
+ 2, 2, 3, 3, 3, 1, 1, 1, 2, 2,
+ 0, 3, 0, 3, 2, 3, 3, 1, 1, 1,
+ 2, 2, 2, 2, 4, 1, 3, 0, 2, 1,
+ 2, 0, 4, 2, 1, 1, 2, 0, 3, 2,
+ 1, 3, 2
+};
+
+static const short yydefact[] = { 1,
+ 0, 5, 29, 27, 0, 27, 27, 27, 261, 507,
+ 27, 27, 624, 625, 626, 627, 628, 629, 630, 631,
+ 30, 27, 27, 27, 601, 602, 603, 607, 608, 609,
+ 606, 604, 605, 600, 598, 599, 27, 27, 469, 464,
+ 468, 467, 465, 466, 463, 833, 27, 27, 27, 27,
+ 27, 27, 744, 809, 811, 810, 815, 817, 818, 813,
+ 812, 27, 27, 27, 27, 822, 27, 27, 843, 27,
+ 27, 27, 27, 27, 27, 829, 831, 830, 263, 832,
+ 27, 27, 27, 27, 27, 27, 27, 510, 27, 511,
+ 512, 514, 27, 27, 836, 27, 27, 823, 279, 285,
+ 27, 284, 283, 27, 27, 293, 834, 804, 845, 532,
+ 318, 27, 27, 27, 27, 841, 516, 779, 513, 561,
+ 27, 821, 517, 508, 27, 298, 302, 27, 27, 310,
+ 311, 312, 309, 306, 304, 299, 27, 305, 303, 27,
+ 27, 27, 571, 569, 570, 838, 773, 27, 27, 27,
+ 27, 574, 575, 577, 576, 578, 27, 586, 587, 585,
+ 584, 579, 581, 580, 522, 521, 519, 520, 837, 27,
+ 27, 787, 27, 835, 803, 846, 531, 317, 27, 27,
+ 270, 272, 269, 273, 271, 518, 27, 814, 262, 268,
+ 27, 27, 27, 27, 825, 27, 826, 824, 27, 778,
+ 799, 828, 840, 294, 355, 27, 27, 27, 796, 797,
+ 842, 27, 27, 314, 315, 316, 313, 847, 848, 844,
+ 0, 739, 759, 0, 0, 738, 750, 751, 749, 384,
+ 31, 32, 33, 34, 35, 771, 770, 4, 0, 259,
+ 258, 357, 331, 0, 0, 329, 356, 358, 359, 345,
+ 346, 0, 367, 486, 347, 505, 352, 533, 535, 536,
+ 537, 538, 539, 551, 552, 555, 556, 354, 0, 589,
+ 353, 0, 0, 487, 0, 766, 709, 768, 764, 772,
+ 27, 2, 28, 783, 0, 0, 0, 0, 0, 0,
+ 0, 748, 0, 509, 805, 266, 530, 616, 548, 547,
+ 774, 264, 265, 775, 802, 595, 806, 801, 594, 0,
+ 276, 274, 277, 275, 278, 776, 563, 564, 777, 567,
+ 568, 562, 780, 781, 523, 296, 784, 292, 295, 785,
+ 782, 807, 515, 524, 280, 282, 281, 291, 288, 289,
+ 290, 557, 786, 287, 308, 307, 297, 300, 301, 286,
+ 1007, 267, 573, 583, 572, 582, 788, 789, 525, 527,
+ 526, 790, 791, 588, 528, 529, 827, 792, 793, 794,
+ 795, 798, 800, 986, 987, 988, 989, 0, 0, 0,
+ 0, 27, 27, 716, 0, 712, 321, 322, 323, 324,
+ 325, 326, 327, 328, 0, 0, 0, 760, 384, 0,
+ 259, 257, 820, 384, 330, 507, 27, 384, 332, 819,
+ 485, 700, 362, 367, 27, 691, 692, 693, 697, 698,
+ 696, 694, 699, 695, 690, 688, 689, 0, 0, 0,
+ 0, 27, 27, 666, 667, 27, 664, 665, 0, 0,
+ 0, 0, 0, 0, 27, 657, 658, 27, 663, 661,
+ 662, 27, 368, 371, 0, 633, 0, 0, 0, 637,
+ 638, 0, 673, 0, 339, 341, 340, 0, 343, 483,
+ 481, 482, 484, 478, 480, 479, 459, 382, 504, 361,
+ 0, 0, 488, 342, 344, 506, 350, 349, 534, 535,
+ 536, 537, 538, 539, 27, 27, 549, 550, 553, 554,
+ 27, 27, 27, 591, 593, 27, 351, 0, 0, 27,
+ 27, 0, 27, 27, 756, 733, 708, 711, 768, 765,
+ 0, 0, 0, 728, 0, 720, 27, 27, 27, 27,
+ 27, 27, 743, 0, 0, 0, 741, 742, 732, 745,
+ 559, 560, 565, 566, 558, 1008, 839, 592, 990, 991,
+ 992, 993, 0, 0, 0, 734, 849, 27, 851, 27,
+ 27, 898, 899, 27, 27, 866, 470, 867, 740, 868,
+ 869, 0, 865, 870, 1003, 1004, 719, 717, 714, 713,
+ 254, 319, 0, 0, 0, 390, 763, 487, 0, 0,
+ 384, 707, 820, 256, 0, 360, 636, 670, 669, 671,
+ 668, 686, 685, 674, 675, 682, 642, 645, 643, 644,
+ 641, 646, 369, 647, 648, 489, 0, 493, 0, 498,
+ 381, 490, 0, 635, 0, 0, 0, 639, 640, 0,
+ 0, 0, 0, 0, 0, 27, 27, 0, 0, 659,
+ 660, 0, 632, 681, 672, 333, 334, 336, 461, 335,
+ 27, 27, 27, 460, 0, 0, 372, 338, 337, 348,
+ 546, 545, 597, 596, 590, 623, 27, 27, 0, 27,
+ 27, 612, 613, 27, 27, 615, 614, 0, 710, 767,
+ 23, 24, 21, 22, 0, 27, 0, 11, 191, 190,
+ 192, 185, 208, 207, 209, 212, 210, 211, 199, 200,
+ 183, 184, 27, 193, 240, 248, 238, 232, 175, 27,
+ 27, 177, 187, 186, 220, 27, 242, 239, 241, 173,
+ 189, 182, 202, 201, 203, 206, 204, 205, 197, 198,
+ 196, 180, 181, 27, 188, 27, 171, 170, 27, 27,
+ 223, 27, 226, 250, 174, 27, 27, 222, 27, 27,
+ 231, 230, 227, 235, 27, 27, 27, 229, 243, 176,
+ 27, 27, 245, 27, 244, 249, 234, 233, 237, 236,
+ 225, 228, 384, 0, 159, 0, 161, 0, 0, 972,
+ 973, 0, 729, 730, 726, 721, 147, 148, 149, 150,
+ 151, 152, 27, 27, 27, 27, 27, 27, 0, 746,
+ 0, 1148, 1007, 736, 0, 0, 735, 850, 27, 0,
+ 854, 876, 877, 471, 0, 903, 904, 871, 872, 873,
+ 874, 875, 753, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 863, 864, 900, 901, 1005, 1006,
+ 718, 715, 0, 0, 384, 27, 0, 385, 820, 701,
+ 251, 0, 820, 253, 705, 678, 677, 679, 676, 684,
+ 683, 687, 0, 0, 501, 491, 492, 382, 0, 497,
+ 499, 494, 0, 500, 380, 0, 0, 0, 650, 653,
+ 651, 652, 649, 654, 655, 656, 379, 0, 378, 634,
+ 680, 462, 474, 472, 473, 27, 27, 27, 383, 373,
+ 619, 620, 27, 27, 622, 621, 610, 611, 758, 25,
+ 12, 0, 25, 27, 25, 11, 195, 178, 167, 179,
+ 194, 221, 169, 168, 172, 219, 216, 217, 218, 214,
+ 213, 224, 215, 247, 246, 0, 3, 162, 160, 0,
+ 0, 724, 974, 975, 731, 727, 153, 154, 155, 156,
+ 157, 158, 0, 27, 820, 816, 1026, 0, 0, 0,
+ 0, 0, 0, 0, 1063, 1158, 34, 1152, 766, 1161,
+ 0, 1010, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
+ 1024, 1025, 1148, 0, 0, 995, 737, 0, 1000, 0,
+ 852, 27, 27, 27, 853, 902, 752, 878, 879, 880,
+ 881, 884, 885, 886, 887, 888, 889, 890, 27, 27,
+ 862, 27, 27, 27, 27, 27, 27, 27, 755, 255,
+ 706, 0, 387, 0, 762, 0, 0, 702, 704, 370,
+ 503, 490, 495, 496, 377, 0, 376, 375, 477, 475,
+ 476, 617, 618, 11, 25, 11, 26, 0, 0, 0,
+ 0, 722, 0, 0, 725, 0, 0, 0, 0, 1036,
+ 1039, 1114, 1115, 1116, 27, 27, 27, 1042, 0, 1046,
+ 0, 0, 0, 1048, 0, 1148, 1138, 1139, 1140, 1148,
+ 0, 1061, 0, 0, 1149, 1151, 1148, 1160, 1163, 1009,
+ 1011, 1154, 997, 994, 996, 0, 999, 855, 856, 857,
+ 27, 27, 27, 882, 883, 891, 892, 893, 894, 895,
+ 896, 897, 820, 705, 437, 416, 418, 405, 27, 406,
+ 27, 27, 443, 417, 27, 409, 410, 436, 411, 412,
+ 440, 454, 455, 456, 444, 419, 27, 27, 421, 407,
+ 408, 431, 432, 433, 434, 435, 0, 386, 395, 396,
+ 420, 399, 441, 397, 398, 0, 252, 703, 374, 0,
+ 11, 0, 0, 0, 0, 0, 723, 0, 0, 861,
+ 0, 1131, 1133, 1128, 0, 0, 0, 1032, 1148, 1148,
+ 1117, 1118, 1119, 1148, 1120, 1121, 1122, 27, 27, 27,
+ 1044, 1148, 1066, 1067, 1070, 1071, 1072, 1073, 1068, 1069,
+ 1074, 1075, 1078, 1079, 1080, 1081, 1076, 1077, 1082, 1083,
+ 1086, 1087, 1088, 1089, 1084, 1085, 1148, 0, 0, 0,
+ 1054, 1055, 1050, 0, 30, 31, 32, 33, 34, 35,
+ 42, 1013, 0, 1012, 0, 1148, 1148, 27, 27, 27,
+ 27, 0, 1156, 1159, 0, 0, 1162, 998, 858, 859,
+ 860, 754, 446, 425, 427, 415, 413, 414, 452, 426,
+ 438, 445, 449, 453, 428, 439, 442, 430, 0, 0,
+ 400, 401, 429, 404, 450, 402, 403, 0, 0, 0,
+ 0, 0, 0, 0, 0, 969, 970, 747, 0, 0,
+ 1135, 36, 37, 38, 39, 40, 41, 1129, 1130, 1027,
+ 1148, 0, 0, 1146, 0, 1123, 1124, 1125, 1148, 0,
+ 0, 1090, 1091, 1094, 1095, 1096, 1097, 1092, 1093, 1098,
+ 1099, 1102, 1103, 1104, 1105, 1100, 1101, 1106, 1107, 1110,
+ 1111, 1112, 1113, 1108, 1109, 1148, 1056, 1057, 1052, 1058,
+ 1015, 1014, 1059, 0, 0, 1141, 1142, 1143, 1144, 1064,
+ 1157, 1153, 424, 422, 423, 447, 448, 451, 0, 0,
+ 0, 0, 0, 0, 27, 0, 0, 43, 0, 163,
+ 164, 1132, 1134, 1136, 1137, 1148, 0, 1037, 1040, 1148,
+ 1043, 0, 1047, 1049, 0, 1148, 1060, 1062, 1148, 458,
+ 457, 27, 393, 394, 392, 389, 0, 0, 0, 0,
+ 0, 13, 45, 13, 0, 1033, 1148, 1148, 1148, 1147,
+ 1045, 1051, 0, 0, 391, 388, 13, 0, 13, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 44, 15,
+ 7, 6, 1028, 1148, 0, 0, 1145, 1053, 1065, 8,
+ 13, 9, 27, 59, 46, 0, 106, 165, 0, 0,
+ 16, 17, 18, 19, 1148, 0, 1038, 1041, 10, 58,
+ 27, 63, 0, 110, 105, 106, 0, 20, 27, 27,
+ 27, 98, 89, 0, 100, 98, 98, 13, 0, 1034,
+ 60, 0, 69, 0, 72, 27, 27, 27, 114, 107,
+ 166, 99, 101, 103, 88, 0, 90, 102, 100, 102,
+ 98, 100, 98, 14, 1029, 1148, 0, 27, 0, 0,
+ 0, 0, 111, 112, 113, 0, 124, 91, 92, 93,
+ 94, 95, 96, 97, 1148, 0, 0, 70, 47, 27,
+ 73, 0, 138, 27, 124, 116, 126, 118, 119, 120,
+ 122, 121, 123, 0, 1035, 65, 66, 67, 61, 78,
+ 74, 139, 143, 141, 0, 140, 138, 138, 125, 117,
+ 126, 27, 128, 1030, 0, 0, 0, 0, 27, 80,
+ 115, 142, 140, 142, 138, 140, 138, 128, 127, 27,
+ 0, 0, 0, 0, 48, 79, 27, 0, 0, 0,
+ 0, 0, 0, 0, 0, 129, 131, 0, 69, 64,
+ 69, 81, 82, 83, 84, 85, 86, 0, 76, 27,
+ 145, 133, 132, 134, 135, 137, 136, 0, 0, 0,
+ 0, 75, 77, 144, 0, 109, 0, 0, 108, 68,
+ 62, 0, 0, 0
+};
+
+static const short yydefgoto[] = { 1632,
+ 522, 282, 687, 1431, 1450, 688, 916, 297, 236, 237,
+ 1232, 1367, 1368, 1549, 1428, 1444, 1462, 1568, 1483, 1548,
+ 1566, 1509, 1451, 1485, 1511, 1608, 1570, 1588, 1609, 1452,
+ 1473, 1474, 1475, 1476, 1477, 1453, 1465, 1466, 1489, 1517,
+ 1535, 1536, 1537, 1563, 1581, 1598, 1555, 1556, 1557, 1558,
+ 1612, 1454, 533, 774, 775, 1468, 776, 777, 1026, 843,
+ 400, 240, 395, 396, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 453, 863, 480, 454, 481, 655, 250,
+ 397, 585, 1396, 1148, 1149, 1150, 1151, 1152, 1153, 1154,
+ 1155, 251, 252, 566, 654, 567, 253, 254, 620, 870,
+ 871, 872, 622, 866, 623, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 455, 456, 457, 458, 459, 460,
+ 461, 462, 463, 464, 274, 398, 1027, 844, 381, 310,
+ 569, 1020, 516, 678, 275, 589, 276, 517, 277, 278,
+ 279, 280, 351, 570, 809, 995, 535, 571, 572, 573,
+ 835, 836, 574, 823, 780, 781, 782, 379, 380, 985,
+ 556, 385, 547, 802, 1304, 1233, 972, 973, 1058, 1376,
+ 1455, 1525, 1059, 1301, 1434, 1506, 974, 1179, 1407, 975,
+ 1180, 1408, 976, 1184, 1309, 977, 1192, 978, 1217, 1336,
+ 1386, 1224, 979, 980, 981, 1237, 1083, 1389, 1075, 1069,
+ 1177, 1289, 1290, 1081, 1242, 1305, 982, 1087, 1244, 983,
+ 1084
+};
+
+static const short yypact[] = { -494,
+ 13027, 131,-32768, 127, 272, 127, 127, 127, 298,-32768,
+ 127, 127,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 127, 127, 127,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 127, 127,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 127, 127, 127, 127,
+ 127, 127, 1732,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 127, 127, 127, 127,-32768, 127, 127,-32768, 127,
+ 127, 127, 127, 127, 127,-32768,-32768,-32768,-32768,-32768,
+ 127, 127, 127, 127, 127, 127, 127,-32768, 127,-32768,
+-32768,-32768, 127, 127,-32768, 127, 127,-32768,-32768,-32768,
+ 127,-32768,-32768, 127, 127,-32768,-32768,-32768,-32768,-32768,
+-32768, 127, 127, 127, 127,-32768,-32768,-32768,-32768, 223,
+ 127,-32768,-32768,-32768, 127,-32768,-32768, 127, 127,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 127,-32768,-32768, 127,
+ 127, 127,-32768,-32768,-32768,-32768,-32768, 127, 127, 127,
+ 127,-32768,-32768,-32768,-32768,-32768, 127,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 127,
+ 127,-32768, 127,-32768,-32768,-32768,-32768,-32768, 127, 127,
+-32768,-32768,-32768,-32768,-32768,-32768, 127,-32768,-32768,-32768,
+ 127, 127, 127, 127,-32768, 127,-32768,-32768, 127,-32768,
+-32768,-32768,-32768,-32768,-32768, 127, 127, 127,-32768,-32768,
+-32768, 127, 127,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ -294,-32768,-32768, 101, 22,-32768,-32768,-32768,-32768, 20622,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 13469,-32768,
+ 13911, 20776,-32768, 17886, 2133,-32768,-32768,-32768,-32768, 21092,
+ 20776, 890, 390, 19195, 20776,-32768, 948, 2748, 170,-32768,
+-32768,-32768,-32768, 743, 743, 762, 762,-32768, 834, 87,
+ 1611, 1100, 495,-32768, 14353,-32768, 19195,-32768, 19526,-32768,
+ 127,-32768,-32768,-32768, -39, 22, 686, -426, -384, 22,
+ 22,-32768, 14353,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 19195,
+-32768,-32768,-32768,-32768,-32768,-32768, 223, 223,-32768, 418,
+ 418, 223,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ -295,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 87,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 408, 408, 408, 408, 189, -362, -355,
+ 1252, 127, 127, 18321, 22, 19195,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, -345, 14353, 18760, 14353, 20622, 14795,
+-32768, 15237, 13027, 20622,-32768,-32768, 127,-32768,-32768,-32768,
+-32768, 1201,-32768, 390, 127,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 890, 890, 890,
+ 890, 127, 127, 1512, 1512, 127,-32768,-32768, 890, 890,
+ 890, 890, 890, 890, 127,-32768,-32768, 127,-32768,-32768,
+-32768, 127,-32768,-32768, 10817, 1076, 10083, 5390, 2002,-32768,
+-32768, 147, 1512, 552, 21092, 21092, 2487, 890, 2128,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 28,-32768,-32768,-32768,
+ 199, 10817,-32768, 614, 157,-32768,-32768, 1611,-32768, 170,
+-32768,-32768,-32768,-32768, 127, 127,-32768,-32768,-32768,-32768,
+ 127, 127, 127,-32768, 121, 127,-32768, 1115, 560, 127,
+ 127, 594, 127, 127, 14353,-32768, 19195,-32768,-32768,-32768,
+ 150, 10288, -425, 18321, 22, 19195, 127, 127, 127, 127,
+ 127, 127, 723, -189, 19195, 262,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 121,-32768,-32768,
+-32768,-32768, -168, -355, 7, 19195,-32768, 127,-32768, 127,
+ 127,-32768,-32768, 127, 127,-32768, 28,-32768,-32768,-32768,
+-32768, 17333, 547, 214, 237, 237,-32768, 19195, 19195,-32768,
+-32768, 15679, 297, 19195, -268,-32768, 16121,-32768, -263, -255,
+ 20622, 16563, 13027,-32768, -249,-32768,-32768, 1512, 1512, 1512,
+ 1512, 552, 552,-32768,-32768, 552,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 10817, 17447, 11259,-32768,
+-32768,-32768, 10817,-32768, 10817, 5390, 2002,-32768,-32768, 890,
+ 890, 890, 890, 890, 890, 127, 127, 10817, 2002,-32768,
+-32768, 10817, 1076,-32768, 1512, 2487, 614, 2487, 28,-32768,
+ 127, 127, 127, 279, 14353, 10817,-32768, 614,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 127, 127, 682, 127,
+ 127,-32768,-32768, 127, 127,-32768,-32768, 19195,-32768,-32768,
+-32768,-32768,-32768,-32768, 621, 127, 124, 31,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 127,-32768,-32768,-32768,-32768,-32768,-32768, 127,
+ 127,-32768,-32768,-32768,-32768, 127,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 127,-32768, 127,-32768,-32768, 127, 127,
+-32768, 127,-32768,-32768,-32768, 127, 127,-32768, 127, 127,
+-32768,-32768,-32768,-32768, 127, 127, 127,-32768,-32768,-32768,
+ 127, 127,-32768, 127,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 20341, -245, 13027, 10288,-32768, -239, 348,-32768,
+-32768, 222,-32768, 19195, 19195,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 127, 127, 127, 127, 127, 127, 1252,-32768,
+ -190, 9589, -416, 19195, -74, 11701,-32768,-32768, 127, -111,
+-32768,-32768,-32768, 279, 319,-32768,-32768,-32768,-32768,-32768,
+-32768, 214, 19195, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 778, 374,-32768,-32768,-32768,-32768,
+-32768,-32768, 14353, 14353, 20622, 127, -177,-32768, 13027,-32768,
+-32768, -153, 13027,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 10083, 10817,-32768,-32768,-32768, 717, 10817,-32768,
+-32768,-32768, 10817,-32768,-32768, 10817, 2002, 10817,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 10817,-32768,-32768,
+-32768, 279,-32768,-32768,-32768, 127, 127, 127,-32768,-32768,
+-32768,-32768, 127, 127,-32768,-32768,-32768,-32768,-32768, 427,
+-32768, 621, 427, 127, 427, 50,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, -291,-32768,-32768, 13027, 222,
+ 217, 19195,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 17333, 127,-32768,-32768, -148, -144, -131, 1,
+ -124, -98, -119, -146, -115,-32768, 9948, -129,-32768, 19195,
+ 6358,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 9948, 22, -100, 40,-32768, 14353,-32768, 12143,
+-32768, 127, 127, 127, 141,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 127, 127,
+ 374, 127, 127, 127, 127, 127, 127, 127, 17005,-32768,
+-32768, -87, 1713, -71,-32768, 14353, 14353,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 10817,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 50, 427, 50,-32768, -32, -29, 22,
+ 22, 19195, 19914, 19914,-32768, -75, -53, 400, -36,-32768,
+-32768,-32768,-32768,-32768, 127, 127, 127,-32768, 138,-32768,
+ 939, 949, 982,-32768, -301, 6717,-32768,-32768,-32768, 6717,
+ -33,-32768, 0, 19626,-32768,-32768, 6717, 19195,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 12585,-32768,-32768,-32768,-32768,
+ 127, 127, 127,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 13027, -18, 704, 861, 861,-32768, 127,-32768,
+ 127, 127, 704, 861, 127,-32768,-32768, 704,-32768,-32768,
+ 704,-32768,-32768,-32768, 704, 861, 127, 127, 861,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 541,-32768, 1713, 1713,
+ 861, 1713, 704, 1713, 1713, 545,-32768,-32768,-32768, -7,
+ 50, -3, 563, 574, 14, 53,-32768, 55, 58,-32768,
+ 14353, 20, 52, 400, -52, -52, 54,-32768, 9589, 9589,
+-32768,-32768,-32768, 9589,-32768,-32768,-32768, 127, 127, 127,
+-32768, 6717,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 6717, 994, 1005, 1040,
+-32768,-32768,-32768, 109,-32768,-32768,-32768,-32768, 9948,-32768,
+-32768,-32768, 2050,-32768, 2409, 6717, 9589, 127, 127, 127,
+ 127, 77,-32768,-32768, 90, 2768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 861, 861, 861,-32768,-32768,
+ 704,-32768,-32768,-32768,-32768, 704, 704,-32768, 22, 22,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 439, 683, 110,
+ 696, 5, 5, 10288, 10288,-32768,-32768, 14353, 400, 400,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 400, 400,-32768,
+ 9589, 7076, 7435, 9589, -307,-32768,-32768,-32768, 9589, 3127,
+ 3486,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 6717,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 3845, -230,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 126, 134,
+ 248, 5, 714, 5, 127, 720, 154, 5, 161, 13027,
+ 13027,-32768,-32768,-32768,-32768, 9589, 7794,-32768,-32768, 8153,
+-32768, -224,-32768,-32768, 4204, 6717,-32768,-32768, 9589,-32768,
+-32768, 127,-32768,-32768,-32768, 1713, 164, 5, 176, 1572,
+ 220, 142,-32768, 142, 8512,-32768, 9589, 9589, 9589, 9589,
+-32768,-32768, 4563, -197,-32768,-32768, 142, 228, 142,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 777, 5, 435,
+-32768,-32768,-32768, 9589, 4922, 5281, 9589,-32768,-32768,-32768,
+ 142,-32768, 127, 712,-32768, 792, 249, 257, -12, 263,
+-32768,-32768,-32768,-32768, 9589, 8871,-32768,-32768,-32768,-32768,
+ 127, 269, 289, 713,-32768, 249, 278,-32768, 127, 127,
+ 127, 749, 12, 290, 799, 419, 812, 142, 9230,-32768,
+-32768, 854, 862, 852, 309, 127, 127, 127, 329,-32768,
+-32768,-32768,-32768,-32768, 12, 331,-32768, 878, 894, 878,
+ 896, 894, 896,-32768,-32768, 9589, 870, 127, 22, 907,
+ 354, 852,-32768,-32768,-32768, 916, 20935,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 9589, 5640, 829,-32768,-32768, 127,
+-32768, 355, 786, 127, 20935,-32768, 905, 614, 2487,-32768,
+-32768, 1078,-32768, 5999,-32768,-32768,-32768, 379, 381, 934,
+-32768,-32768,-32768,-32768, 387, 808, 866, 473,-32768,-32768,
+ 905, 127, 893,-32768, 953, 19914, 954, 394, 127, 951,
+-32768, 936, 937, 936, 938, 937, 938, 893,-32768, 127,
+ 22, 968, 409, 970,-32768,-32768, 127, 908, 36, 36,
+ 36, 36, 36, 36, 22,-32768,-32768, 420, 862,-32768,
+ 862,-32768,-32768,-32768,-32768,-32768,-32768, 71,-32768, 127,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 423, 433, 22,
+ 22,-32768,-32768,-32768, 464,-32768, 465, 466,-32768,-32768,
+-32768, 1050, 1051,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,-32768, -576, -1068,-32768, -565, -716, -4,-32768, 18,
+ -939, -1092, -306,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, -1057,-32768,-32768, -447,-32768,-32768,-32768, -544,-32768,
+ -406, -1324, -982, -1119, -924,-32768, -383,-32768,-32768,-32768,
+-32768, -451, -449, -474, -490, -506,-32768, -989, -865, -979,
+ -324,-32768,-32768,-32768, -744,-32768,-32768, 6,-32768,-32768,
+ 9, -200, -286,-32768, -125, 293, -186, -275,-32768, -218,
+-32768,-32768, 849,-32768,-32768, 680, 232, 482,-32768, -128,
+-32768,-32768,-32768, -937,-32768, -441,-32768, -176,-32768,-32768,
+-32768, -238, -240, -117, -448, -187, -204,-32768,-32768, -234,
+-32768, 233, -543,-32768, -232, -236, -250, -252,-32768, 848,
+ 35, -34, 144, -143,-32768,-32768,-32768,-32768, -233, -179,
+ 842, -244, -262, -241, -404, 651,-32768, 657, -363, 659,
+ 663, -174, -323,-32768, 56,-32768,-32768,-32768,-32768,-32768,
+-32768, -709, 830,-32768, 17,-32768, 16, 155, 333, -276,
+ -1321,-32768,-32768, -537,-32768,-32768,-32768, -536, 326,-32768,
+-32768, 291, -530, 175, -706, -686, 351, 521, 751,-32768,
+ 578, -223, 339,-32768, -730, -901, 18862,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ -944,-32768,-32768,-32768,-32768, -1139, -910,-32768,-32768, 59,
+-32768
+};
+
+
+#define YYLAST 21420
+
+
+static const short yytable[] = { 284,
+ 519, 294, 295, 296, 486, 489, 238, 298, 508, 239,
+ 468, 465, 488, 466, 469, 1365, 485, 299, 300, 301,
+ 482, 293, 405, 487, 1469, 1470, 1471, 1292, 805, 509,
+ 512, 939, 302, 303, 820, 821, 914, 507, 401, 414,
+ 21, 822, 304, 305, 306, 307, 308, 309, 1469, 1470,
+ 1471, 624, 625, 638, 642, 409, 1085, 311, 312, 313,
+ 314, 525, 315, 316, 477, 317, 318, 319, 320, 321,
+ 322, 971, 1092, 865, 867, 943, 323, 324, 325, 326,
+ 327, 328, 329, 546, 330, 1610, 1, 2, 331, 332,
+ 505, 333, 334, 627, 639, 944, 335, 1345, 778, 336,
+ 337, 21, 1603, 1604, 1605, 1606, 1607, 338, 339, 340,
+ 341, 915, 590, 402, 494, 21, 343, 595, 814, 910,
+ 344, 913, 467, 345, 346, 595, 484, 681, 682, 283,
+ 651, 683, 347, 684, 1021, 348, 349, 350, 1050, 281,
+ 645, 652, 653, 352, 353, 354, 355, 568, 1496, 515,
+ 21, 984, 356, 681, 682, 534, 779, 683, 1051, 684,
+ 578, 374, 375, 376, 377, 357, 358, 515, 359, 1382,
+ 1496, 1218, 1219, 1220, 360, 361, 543, 544, 1235, 618,
+ 21, 482, 362, 405, 548, 1246, 363, 364, 365, 366,
+ 1369, 367, 586, 1044, 368, 1543, 1046, 536, 1048, 401,
+ 892, 369, 370, 371, 546, 49, 618, 372, 373, 52,
+ 553, 1271, 1272, 1543, 1274, 486, 1276, 1277, 486, 378,
+ 621, 876, 878, 492, 468, 508, 555, 647, 646, 1291,
+ 648, 499, 500, 943, 888, 1298, 1299, 581, 890, 501,
+ 680, 384, 386, 502, 468, 658, 509, 657, 656, 1414,
+ 619, 495, 496, 944, 660, 39, 40, 41, 42, 604,
+ 605, 479, 877, 342, 43, 44, 669, 415, 45, 1397,
+ 582, 1399, 587, 799, 592, 1403, 521, 619, 860, 861,
+ 649, 1380, 862, 801, 1381, 1221, 1222, 378, 644, 1223,
+ 1310, 803, 491, 1341, 520, 1341, 405, -820, 497, 498,
+ 784, 21, 524, 526, 852, 1418, 1341, 537, 538, 483,
+ 598, 599, 600, 601, 848, 1311, 1157, 1158, 1085, 850,
+ 1032, 607, 608, 609, 610, 611, 612, 851, 1161, 1077,
+ 1078, 1079, 518, 855, 1344, 1432, 1445, 937, 819, 1049,
+ 650, 864, 779, 618, 1372, 1373, 1045, 618, 1440, 618,
+ 1442, 839, 840, 1374, 1375, 1498, 659, 1503, 1380, -820,
+ -820, 1388, 618, 405, 1380, 540, 618, 1411, 405, 941,
+ 1341, 1341, 1459, 405, 1071, 1072, 1073, 575, 576, 1520,
+ 618, 896, 1523, 954, 70, 71, 873, 988, 874, 75,
+ 875, 1380, 897, 898, 1439, 486, 996, 486, 992, 993,
+ 994, 493, 579, 887, 1341, 1024, 468, 889, 594, 1504,
+ 597, 239, 619, 619, 619, 820, 821, 468, 619, 686,
+ 619, 900, 822, 856, 857, 858, 859, 602, 603, 1028,
+ 409, 606, 914, 619, 1385, 120, 899, 619, 686, 577,
+ 613, 580, -1031, 614, 1080, 1341, 1060, 615, 1302, 1303,
+ 478, 619, 479, 588, 818, 1469, 1446, 1471, 1416, 1061,
+ 541, 542, 1086, 382, 383, 545, 1070, 1160, 806, 1162,
+ 891, 1076, 1036, 1341, 1447, 1082, 1062, 1063, 1064, 1065,
+ 1066, 1067, 1094, 523, 1413, 1448, 1238, 1239, 1240, 1241,
+ 661, 662, 1074, 1500, 1502, 1114, 663, 664, 665, 1449,
+ 1095, 666, 1392, 1393, 1394, 672, 673, 1170, 676, 677,
+ 1156, 912, 879, 880, 881, 882, 883, 884, 1522, 1552,
+ 1524, 1554, 787, 788, 789, 790, 791, 792, 1395, 1171,
+ 239, 1293, 1294, 1295, 1296, 1297, 1231, 685, 686, 1370,
+ 1371, 1620, 785, 1621, 231, 232, 233, 234, 235, 1163,
+ 1499, 1501, 1164, 808, 1178, 810, 811, 1236, 1022, 812,
+ 813, 513, 514, 846, -320, 568, 1278, 1574, 1576, 1282,
+ 1377, 1472, 679, 1519, 1279, 1521, 1573, 1575, 1281, 783,
+ 1283, 786, 73, 74, 1280, 1592, 1366, 1594, 618, 817,
+ 800, 1068, 1589, 618, 1591, -98, 1284, 618, 854, 293,
+ 618, 239, 618, 382, 383, 231, 232, 233, 234, 235,
+ -1126, 807, 618, 1185, 1186, 1187, 1188, 1189, 1190, 231,
+ 232, 233, 234, 235, 681, 682, 670, 671, 683, 1031,
+ 684, 885, 886, 841, 842, 1285, 873, 1286, 1034, 847,
+ 1287, 1035, -1127, 1037, 1300, 1405, 893, 894, 895, 1410,
+ 1101, 1102, 1103, 1038, 231, 232, 233, 234, 235, 619,
+ 674, 675, 901, 902, 619, 905, 906, 1350, 619, 907,
+ 908, 619, 1351, 619, 1254, 1255, 1435, 1436, 1437, 1361,
+ 990, 911, 1260, 619, 231, 232, 233, 234, 235, 1362,
+ 1572, 1363, 1577, 519, 1265, 1337, 1338, 1268, 917, 1339,
+ 432, 433, 1364, 1456, 436, 918, 919, 1590, 1390, 1273,
+ 1593, 920, 39, 40, 41, 42, 1391, 1019, 1019, 819,
+ 1398, 43, 44, 1430, 1479, 45, 837, 838, 1191, 921,
+ 1365, 922, 1461, 909, 923, 924, 1402, 925, 408, 382,
+ 383, 926, 927, 1404, 928, 929, 1417, 617, 903, 904,
+ 930, 931, 932, 1486, 1487, 1488, 933, 934, 1419, 935,
+ 618, -820, -820, -820, -820, -820, -820, -820, -820, -820,
+ 223, 405, 285, 286, 617, 1526, 1168, 1169, -507, -507,
+ 938, 1053, 1054, 239, 239, 1469, 1470, 1471, 947, 948,
+ 949, 950, 951, 952, 1544, 223, 1443, 285, 286, 942,
+ 405, 1159, 1429, 779, 991, 231, 232, 233, 234, 235,
+ 1441, 680, 1269, 1270, 1353, 1354, 1355, 969, 1463, 998,
+ 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
+ 1464, 619, 1552, 1553, 1554, 818, 1470, 1471, 1467, 945,
+ 946, 1023, 287, 288, 289, 1478, 290, 291, 1469, 1470,
+ 1482, 292, 1546, 1547, 1025, 1553, 1554, 239, 1029, 987,
+ 1491, 239, 1096, 374, 375, 376, 377, 287, 288, 289,
+ 1484, 290, 291, 1497, -820, 1507, 292, 405, 997, 1510,
+ -820, 1172, 1173, 1174, 1175, 1176, -820, 1508, -820, -820,
+ 1512, 1039, 1040, 1041, 549, 550, 551, 552, 1042, 1043,
+ 1019, 1019, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1047,
+ 1516, 617, 1552, 1553, 1518, 617, 1471, 617, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 617, 1470, 1469, 1527, 617, 1530, 1531, 1551, 1253, 1603,
+ 1604, 1605, 1606, 1607, 938, 1115, 1259, 239, 617, 1057,
+ 1562, 1262, 501, 1123, 1263, 1125, 502, 1052, 1264, 1533,
+ 1565, 1128, 1567, 1569, 1131, 1132, 1133, 1134, 1135, 1571,
+ 817, 1137, 1138, 1580, 1582, 1584, 1275, 1585, 143, 144,
+ 145, 1587, 969, 1553, 1552, 1554, 969, 1098, 1099, 1100,
+ 1599, 1600, 1601, 470, 471, 472, 473, 1055, 969, 474,
+ 475, 1093, 476, 1619, 1104, 1105, 1625, 1106, 1107, 1108,
+ 1109, 1110, 1111, 1112, 12, 1626, 13, 14, 15, 16,
+ 17, 18, 19, 20, 149, 1089, 151, 152, 153, 154,
+ 155, 156, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 150, 1288, 1629, 1630, 1631, 1633,
+ 1634, 157, 158, 159, 160, 161, 162, 163, 164, 1401,
+ 1181, 1182, 1183, 1623, 1532, 1495, 49, 1165, 1166, 405,
+ 52, 824, 825, 826, 827, 828, 829, 830, 831, 832,
+ 833, 834, 1490, 1560, 1356, 1561, 1578, 1595, 1618, 1357,
+ 1358, 969, 413, 596, 1030, 969, 1249, 1250, 1251, 969,
+ 869, 1033, 969, 1116, 1117, 490, 1119, 1167, 1121, 1122,
+ 504, 1124, 643, 626, 1256, 628, 1257, 1258, 1252, 629,
+ 1261, 239, 539, 1088, 953, 1011, 1136, 1056, 940, 554,
+ 1139, 804, 1266, 1267, 970, 0, 1142, 1143, 1144, 1145,
+ 1146, 986, 1245, 1247, 506, 0, 13, 14, 15, 16,
+ 17, 18, 19, 20, 0, 0, 617, 0, 0, 503,
+ 0, 617, 0, 0, 0, 617, 510, 511, 617, 0,
+ 617, 16, 17, 18, 19, 20, 0, 0, 0, 0,
+ 617, 667, 668, 1306, 1307, 1308, 16, 17, 18, 19,
+ 20, 0, 0, 0, 969, 969, 415, 0, 0, 969,
+ 527, 528, 529, 530, 531, 532, 0, 969, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 0,
+ 0, 0, 969, 1346, 1347, 1348, 1349, 793, 794, 795,
+ 796, 797, 798, 0, 969, 0, 0, 0, 969, 0,
+ 969, 969, 969, 387, 388, 389, 390, 391, 392, 393,
+ 394, 969, 0, 0, 1540, 1613, 1614, 1615, 1616, 1617,
+ 0, 0, 1542, 192, 0, 0, 0, 0, 1538, 508,
+ 1539, 0, 1540, 1541, 0, 0, 1359, 1360, 486, 1583,
+ 1542, 0, 239, 239, 0, 0, 1538, 468, 1539, 970,
+ 509, 1541, 0, 970, 1009, 1010, 828, 829, 830, 831,
+ 832, 833, 834, 0, 0, 970, 969, 969, 969, 969,
+ 0, 0, 0, 0, 969, 969, 969, 0, 617, 0,
+ 0, 0, 0, 0, 0, 0, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 0, 0,
+ 0, 969, 0, 0, 0, 470, 471, 472, 473, 969,
+ 1400, 474, 475, 0, 476, 0, 0, 0, 0, 0,
+ 49, 0, 0, 0, 52, 938, 938, 0, 239, 239,
+ 0, 0, 0, 0, 0, 0, 0, 1415, 0, 0,
+ 0, 969, 969, 0, 0, 969, 0, 0, 0, 0,
+ 969, 969, 0, 0, 969, 0, 0, 0, 970, 0,
+ 0, 0, 970, 0, 0, 0, 970, 0, 0, 970,
+ 969, 0, 969, 969, 969, 969, 0, 0, 969, 1193,
+ 1194, 1195, 1196, 1197, 1198, 1199, 1200, 0, 1460, 1201,
+ 1202, 1203, 1204, 1205, 1206, 1207, 1208, 0, 0, 969,
+ 969, 969, 969, 0, 0, 0, 1481, 0, 0, 0,
+ 0, 0, 0, 0, 1492, 1493, 1494, 0, 0, 0,
+ 969, 969, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
+ 0, 1513, 1514, 1515, 1312, 1313, 1314, 1315, 1316, 1317,
+ 1318, 1319, 0, 0, 969, 1320, 1321, 1322, 1323, 1324,
+ 1325, 1326, 1327, 1528, 0, 0, 0, 0, 0, 0,
+ 0, 970, 970, 0, 0, 0, 970, 0, 0, 0,
+ 0, 969, 0, 0, 970, 1550, 1529, 0, 0, 1559,
+ 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 0, 0,
+ 969, 969, 0, 0, 0, 0, 0, 0, 0, 970,
+ 0, 0, 0, 0, 0, 0, 0, 1579, 0, 969,
+ 0, 970, 0, 0, 1586, 970, 0, 970, 970, 970,
+ 0, 0, 0, 0, 0, 1596, 0, 192, 970, 0,
+ 0, 0, 1602, 1420, 1421, 1422, 1423, 1424, 1425, 1426,
+ 1427, 0, 0, 0, 0, 0, 0, 0, 1597, 0,
+ 0, 0, 0, 0, 0, 1624, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1597, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1622, 0, 0, 0, 0,
+ 0, 0, 0, 970, 970, 970, 970, 1627, 1628, 0,
+ 0, 970, 970, 970, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 0, 0, 0, 970, 0,
+ 0, 0, 0, 0, 0, 0, 970, 506, 0, 13,
+ 14, 15, 16, 17, 18, 19, 20, 0, 0, 0,
+ 0, 0, 0, 0, 0, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 0, 970, 970,
+ 0, 0, 970, 0, 0, 0, 0, 970, 970, 0,
+ 0, 970, 0, 0, 0, 0, 0, 0, 0, 49,
+ 0, -816, 0, 52, 0, 0, 0, 970, 0, 970,
+ 970, 970, 970, 0, 0, 970, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 557, 558, 559, 560,
+ 561, 0, 0, 0, 562, 563, 970, 970, 970, 970,
+ 0, 0, -816, 0, 0, 0, 564, 565, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 970, 970, 0,
+ 0, 0, 0, -816, -816, 0, 0, -816, -816, 0,
+ -816, -816, -816, -816, -816, -816, -816, -816, 0, 0,
+ 0, 970, 0, -816, -816, 0, -816, -816, -816, -816,
+ -816, -816, -816, -816, -816, -816, -816, -816, 0, 0,
+ -816, -816, -816, -816, 0, 0, 0, 0, 970, -816,
+ -816, 0, 0, -816, 0, 0, 0, 0, 0, 0,
+ -816, 0, 0, 0, -816, 0, 0, 970, 970, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 970, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -816, -816, 0, -816, -816, -816, 0,
+ 0, 0, 0, 0, 0, 0, -816, 0, 0, 0,
+ 0, -816, 0, -816, -816, -816, 0, 0, 0, -816,
+ -816, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -816, 0, 0, 192, 0, 0, 0,
+ 0, -816, 0, -816, -816, 0, 0, -816, -816, 0,
+ 0, 0, 0, 0, 1115, 1116, 1117, 1118, 1119, 1120,
+ 1121, 1122, 1123, 1124, 1125, 1126, 1127, -816, -816, -816,
+ 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 0,
+ 1137, 1138, 1139, 0, 0, 0, 1140, 1141, 1142, 1143,
+ 1144, 1145, 1146, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -816, -816, -816, -816, -816, -816, -816,
+ -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
+ -816, -816, -816, 0, 0, 0, 0, -816, 0, 0,
+ 0, -816, 0, 0, -816, -816, 0, 0, 0, 0,
+ 0, -816, 3, 0, 0, 0, 0, -816, -816, -816,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -816, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 955, 0, 0, 0, 0, 0, 0, 0, 0,
+ 410, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 415, 0, 0, 0, 0, 0, 0, 1225,
+ 0, 0, 0, 24, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 46, 47, 48, 6, 50,
+ 0, 51, 0, 956, 54, 55, 56, 57, 58, 59,
+ 60, 61, 0, 0, 0, 0, 0, 0, 406, 0,
+ 0, 0, 0, 407, 0, -816, -816, -816, -816, -816,
+ -816, -816, -816, -816, 0, 0, 0, 66, 0, 68,
+ 69, 0, 0, 72, 0, 0, 0, 76, 77, 78,
+ 0, 80, 81, 82, 0, 0, 85, 0, 0, 0,
+ 89, 0, 0, 0, 93, 94, 95, 0, 0, 98,
+ 0, 0, 0, 0, 0, 0, 0, 0, 107, 108,
+ 109, 0, 0, 415, 0, 0, 0, 0, 116, 0,
+ 118, 0, 0, 121, 122, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 0, 0, 146, 147,
+ 0, 0, 0, 0, 1147, 0, 0, 0, 0, 0,
+ 0, 0, 83, 0, 0, 0, 0, 88, -816, 90,
+ 91, 92, 0, 0, -816, 96, 97, 0, 0, 0,
+ -816, 0, -816, -816, 0, 0, 0, 0, 0, 110,
+ 0, 0, 0, 0, 0, 437, 0, 117, 0, 119,
+ 0, 0, 0, 123, 124, 0, 0, 640, 641, 0,
+ 0, 169, 170, 171, 172, 0, 174, 175, 176, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 187, 188, 0, 0, 191, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 206, 207, 208, 209, 210, 211, 212,
+ 213, 3, 0, 0, 0, 218, 219, 0, 0, 4,
+ 0, 0, 0, 0, 0, 165, 166, 167, 168, 0,
+ 0, 0, 0, 173, 0, 0, 0, 177, 0, 0,
+ 179, 180, 0, 438, 0, 0, 0, 186, 0, 0,
+ 7, 0, 0, 0, 193, 194, 0, 0, 0, 0,
+ 955, 0, 0, 0, 0, 0, 0, 0, 0, 410,
+ 0, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 0, 449, 450, 451, 452, 0, 0, 1225, 0,
+ 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 957, 958, 959, 960, 961, 962, 963,
+ 964, 965, 0, 0, 46, 47, 48, 6, 50, 0,
+ 51, 0, 956, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 0, 0, 0, 406, 0, 0,
+ 0, 0, 407, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 68, 69,
+ 0, 0, 72, 0, 0, 0, 76, 77, 78, 0,
+ 80, 81, 82, 0, 0, 85, 0, 0, 0, 89,
+ 0, 0, 0, 93, 94, 95, 0, 0, 98, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 108, 109,
+ 0, 0, 0, 0, 0, 0, 0, 116, 0, 118,
+ 0, 0, 121, 122, 0, 0, 0, 0, 0, 0,
+ 0, 966, 0, 1226, 1227, 1228, 1229, 1230, 1231, 0,
+ 968, 1340, 0, 0, 0, 0, 0, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 83, 0, 0, 0, 0, 88, 0, 90, 91,
+ 92, 0, 0, 0, 96, 97, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 110, 0,
+ 0, 0, 0, 0, 0, 0, 117, 0, 119, 0,
+ 0, 0, 123, 124, 0, 0, 0, 0, 0, 408,
+ 169, 170, 171, 172, 0, 174, 175, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
+ 188, 0, 0, 191, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 3, 0, 0, 0, 218, 219, 0, 0, 4, 0,
+ 0, 0, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 173, 0, 0, 0, 177, 0, 0, 179,
+ 180, 0, 0, 0, 0, 0, 186, 0, 0, 7,
+ 0, 0, 0, 193, 194, 0, 0, 0, 0, 955,
+ 0, 0, 0, 0, 0, 0, 0, 0, 410, 22,
+ 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1225, 0, 0,
+ 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 957, 958, 959, 960, 961, 962, 963, 964,
+ 965, 0, 0, 46, 47, 48, 0, 50, 0, 51,
+ 0, 956, 54, 55, 56, 57, 58, 59, 60, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
+ 71, 0, 73, 74, 75, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66, 0, 68, 69, 0,
+ 0, 72, 0, 0, 0, 76, 77, 78, 0, 80,
+ 81, 82, 0, 0, 85, 0, 0, 0, 89, 0,
+ 0, 0, 93, 94, 95, 0, 0, 98, 0, 0,
+ 120, 0, 0, 0, 0, 0, 107, 108, 109, 0,
+ 0, 0, 0, 0, 0, 0, 116, 0, 118, 0,
+ 0, 121, 122, 143, 144, 145, 0, 0, 0, 0,
+ 966, 0, 1226, 1227, 1228, 1229, 1230, 1231, 0, 968,
+ 1343, 0, 0, 0, 0, 0, 146, 147, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 169,
+ 170, 171, 172, 0, 174, 175, 176, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 0, 0, 191, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 3,
+ 0, 0, 0, 218, 219, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 955, 0,
+ 0, 0, 0, 0, 0, 0, 0, 410, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1225, 0, 0, 0,
+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 220, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 957, 958, 959, 960, 961, 962, 963, 964, 965,
+ 0, 0, 46, 47, 48, 0, 50, 0, 51, 0,
+ 956, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 0, 68, 69, 0, 0,
+ 72, 0, 0, 0, 76, 77, 78, 0, 80, 81,
+ 82, 0, 0, 85, 0, 0, 0, 89, 0, 0,
+ 0, 93, 94, 95, 0, 0, 98, 0, 0, 0,
+ 0, 0, 0, 0, 0, 107, 108, 109, 0, 0,
+ 0, 0, 0, 0, 0, 116, 0, 118, 0, 0,
+ 121, 122, 0, 0, 0, 0, 0, 0, 0, 966,
+ 0, 1226, 1227, 1228, 1229, 1230, 1231, 0, 968, 1352,
+ 0, 0, 0, 0, 0, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 170,
+ 171, 172, 0, 174, 175, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 0,
+ 0, 191, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 3, 0,
+ 0, 0, 218, 219, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 955, 0, 0,
+ 0, 0, 0, 0, 0, 0, 410, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1225, 0, 0, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 957, 958, 959, 960, 961, 962, 963, 964, 965, 0,
+ 0, 46, 47, 48, 0, 50, 0, 51, 0, 956,
+ 54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66, 0, 68, 69, 0, 0, 72,
+ 0, 0, 0, 76, 77, 78, 0, 80, 81, 82,
+ 0, 0, 85, 0, 0, 0, 89, 0, 0, 0,
+ 93, 94, 95, 0, 0, 98, 0, 0, 0, 0,
+ 0, 0, 0, 0, 107, 108, 109, 0, 0, 0,
+ 0, 0, 0, 0, 116, 0, 118, 0, 0, 121,
+ 122, 0, 0, 0, 0, 0, 0, 0, 966, 0,
+ 1226, 1227, 1228, 1229, 1230, 1231, 0, 968, 1383, 0,
+ 0, 0, 0, 0, 146, 147, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 170, 171,
+ 172, 0, 174, 175, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 187, 188, 0, 0,
+ 191, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 3, 0, 0,
+ 0, 218, 219, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 955, 0, 0, 0,
+ 0, 0, 0, 0, 0, 410, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1225, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 957,
+ 958, 959, 960, 961, 962, 963, 964, 965, 0, 0,
+ 46, 47, 48, 0, 50, 0, 51, 0, 956, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 66, 0, 68, 69, 0, 0, 72, 0,
+ 0, 0, 76, 77, 78, 0, 80, 81, 82, 0,
+ 0, 85, 0, 0, 0, 89, 0, 0, 0, 93,
+ 94, 95, 0, 0, 98, 0, 0, 0, 0, 0,
+ 0, 0, 0, 107, 108, 109, 0, 0, 0, 0,
+ 0, 0, 0, 116, 0, 118, 0, 0, 121, 122,
+ 0, 0, 0, 0, 0, 0, 0, 966, 0, 1226,
+ 1227, 1228, 1229, 1230, 1231, 0, 968, 1384, 0, 0,
+ 0, 0, 0, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 170, 171, 172,
+ 0, 174, 175, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 187, 188, 0, 0, 191,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 3, 0, 0, 0,
+ 218, 219, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 955, 0, 0, 0, 0,
+ 0, 0, 0, 0, 410, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1225, 0, 0, 0, 24, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 220, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 957, 958,
+ 959, 960, 961, 962, 963, 964, 965, 0, 0, 46,
+ 47, 48, 0, 50, 0, 51, 0, 956, 54, 55,
+ 56, 57, 58, 59, 60, 61, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 66, 0, 68, 69, 0, 0, 72, 0, 0,
+ 0, 76, 77, 78, 0, 80, 81, 82, 0, 0,
+ 85, 0, 0, 0, 89, 0, 0, 0, 93, 94,
+ 95, 0, 0, 98, 0, 0, 0, 0, 0, 0,
+ 0, 0, 107, 108, 109, 0, 0, 0, 0, 0,
+ 0, 0, 116, 0, 118, 0, 0, 121, 122, 0,
+ 0, 0, 0, 0, 0, 0, 966, 0, 1226, 1227,
+ 1228, 1229, 1230, 1231, 0, 968, 1387, 0, 0, 0,
+ 0, 0, 146, 147, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 169, 170, 171, 172, 0,
+ 174, 175, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 187, 188, 0, 0, 191, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 206, 207, 208,
+ 209, 210, 211, 212, 213, 3, 0, 0, 0, 218,
+ 219, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 955, 0, 0, 0, 0, 0,
+ 0, 0, 0, 410, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1225, 0, 0, 0, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 957, 958, 959,
+ 960, 961, 962, 963, 964, 965, 0, 0, 46, 47,
+ 48, 0, 50, 0, 51, 0, 956, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66, 0, 68, 69, 0, 0, 72, 0, 0, 0,
+ 76, 77, 78, 0, 80, 81, 82, 0, 0, 85,
+ 0, 0, 0, 89, 0, 0, 0, 93, 94, 95,
+ 0, 0, 98, 0, 0, 0, 0, 0, 0, 0,
+ 0, 107, 108, 109, 0, 0, 0, 0, 0, 0,
+ 0, 116, 0, 118, 0, 0, 121, 122, 0, 0,
+ 0, 0, 0, 0, 0, 966, 0, 1226, 1227, 1228,
+ 1229, 1230, 1231, 0, 968, 1412, 0, 0, 0, 0,
+ 0, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 170, 171, 172, 0, 174,
+ 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 187, 188, 0, 0, 191, 0, 0,
+ 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 3, 0, 0, 0, 218, 219,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 955, 0, 0, 0, 0, 0, 0,
+ 0, 0, 410, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 21, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 957, 958, 959, 960,
+ 961, 962, 963, 964, 965, 0, 0, 46, 47, 48,
+ 0, 50, 0, 51, 0, 956, 54, 55, 56, 57,
+ 58, 59, 60, 61, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 68, 69, 0, 0, 72, 0, 0, 0, 76,
+ 77, 78, 0, 80, 81, 82, 0, 0, 85, 0,
+ 0, 0, 89, 0, 0, 0, 93, 94, 95, 0,
+ 0, 98, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 108, 109, 0, 0, 0, 0, 0, 0, 0,
+ 116, 0, 118, 0, 0, 121, 122, 0, 0, 0,
+ 0, 0, 0, 0, 966, 0, 1226, 1227, 1228, 1229,
+ 1230, 1231, 0, 968, 1438, 0, 0, 0, 0, 0,
+ 146, 147, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 169, 170, 171, 172, 0, 174, 175,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 0, 0, 191, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 206, 207, 208, 209, 210,
+ 211, 212, 213, 3, 0, 0, 0, 218, 219, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 955, 0, 0, 0, 0, 0, 0, 0,
+ 0, 410, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 24, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 957, 958, 959, 960, 961,
+ 962, 963, 964, 965, 0, 0, 46, 47, 48, 0,
+ 50, 0, 51, 0, 956, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
+ 68, 69, 0, 0, 72, 0, 0, 0, 76, 77,
+ 78, 0, 80, 81, 82, 0, 0, 85, 0, 0,
+ 0, 89, 0, 0, 0, 93, 94, 95, 0, 0,
+ 98, 0, 0, 0, 0, 0, 0, 0, 0, 107,
+ 108, 109, 0, 0, 0, 0, 0, 0, 0, 116,
+ 0, 118, 0, 0, 121, 122, 0, 0, 0, 0,
+ 0, 0, 0, 966, 0, 231, 232, 233, 967, 235,
+ 415, 0, 968, 1457, 0, 0, 0, 0, 0, 146,
+ 147, 0, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 170, 171, 172, 0, 174, 175, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 188, 0, 0, 191, 0, 0, 0, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 3, 0, 0, 0, 218, 219, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 955, 0, 0, 0, 0, 0, 0, 0, 0,
+ 410, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 0, 0, 0, 24, 0, 0, 0, 0, 630, 631,
+ 632, 633, 634, 635, 220, 446, 447, 636, 0, 0,
+ 0, 0, 637, 0, 957, 958, 959, 960, 961, 962,
+ 963, 964, 965, 0, 0, 46, 47, 48, 0, 50,
+ 0, 51, 0, 956, 54, 55, 56, 57, 58, 59,
+ 60, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 66, 0, 68,
+ 69, 0, 0, 72, 0, 0, 0, 76, 77, 78,
+ 0, 80, 81, 82, 0, 0, 85, 0, 0, 0,
+ 89, 0, 0, 0, 93, 94, 95, 0, 0, 98,
+ 0, 0, 0, 0, 0, 0, 0, 0, 107, 108,
+ 109, 0, 0, 0, 0, 0, 0, 0, 116, 0,
+ 118, 0, 0, 121, 122, 0, 0, 0, 0, 0,
+ 0, 0, 966, 0, 231, 232, 233, 967, 235, 0,
+ 0, 968, 1458, 0, 0, 0, 0, 0, 146, 147,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 169, 170, 171, 172, 0, 174, 175, 176, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 187, 188, 0, 0, 191, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 206, 207, 208, 209, 210, 211, 212,
+ 213, 3, 0, 0, 0, 218, 219, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 955, 0, 0, 0, 0, 0, 0, 0, 0, 410,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+ 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 957, 958, 959, 960, 961, 962, 963,
+ 964, 965, 0, 0, 46, 47, 48, 0, 50, 0,
+ 51, 0, 956, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 68, 69,
+ 0, 0, 72, 0, 0, 0, 76, 77, 78, 0,
+ 80, 81, 82, 0, 0, 85, 0, 0, 0, 89,
+ 0, 0, 0, 93, 94, 95, 0, 0, 98, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 108, 109,
+ 0, 0, 0, 0, 0, 0, 0, 116, 0, 118,
+ 0, 0, 121, 122, 0, 0, 0, 0, 0, 0,
+ 0, 966, 0, 231, 232, 233, 967, 235, 0, 0,
+ 968, 1545, 0, 0, 0, 0, 0, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 170, 171, 172, 0, 174, 175, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
+ 188, 0, 0, 191, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 3, 0, 0, 0, 218, 219, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 955,
+ 0, 0, 0, 0, 0, 0, 0, 0, 410, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
+ 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 957, 958, 959, 960, 961, 962, 963, 964,
+ 965, 0, 0, 46, 47, 48, 0, 50, 0, 51,
+ 0, 956, 54, 55, 56, 57, 58, 59, 60, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66, 0, 68, 69, 0,
+ 0, 72, 0, 0, 0, 76, 77, 78, 0, 80,
+ 81, 82, 0, 0, 85, 0, 0, 0, 89, 0,
+ 0, 0, 93, 94, 95, 0, 0, 98, 0, 0,
+ 0, 0, 0, 0, 0, 0, 107, 108, 109, 0,
+ 0, 0, 0, 0, 0, 0, 116, 0, 118, 0,
+ 0, 121, 122, 0, 0, 0, 0, 0, 0, 0,
+ 966, 0, 231, 232, 233, 967, 235, 0, 0, 968,
+ 1564, 0, 0, 0, 0, 0, 146, 147, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 169,
+ 170, 171, 172, 0, 174, 175, 176, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 0, 0, 191, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 3,
+ 0, 0, 0, 218, 219, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 955, 0,
+ 0, 0, 0, 0, 0, 0, 0, 410, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1225, 0, 0, 0,
+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 220, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 957, 958, 959, 960, 961, 962, 963, 964, 965,
+ 0, 0, 46, 47, 48, 0, 50, 0, 51, 0,
+ 956, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 0, 68, 69, 0, 0,
+ 72, 0, 0, 0, 76, 77, 78, 0, 80, 81,
+ 82, 0, 0, 85, 0, 0, 0, 89, 0, 0,
+ 0, 93, 94, 95, 0, 0, 98, 0, 0, 0,
+ 0, 0, 0, 0, 0, 107, 108, 109, 0, 0,
+ 0, 0, 0, 0, 0, 116, 0, 118, 0, 0,
+ 121, 122, 0, 0, 1090, 0, 0, 0, 0, 966,
+ 0, 231, 232, 233, 967, 235, 0, 0, 968, 0,
+ 0, 0, 0, 0, 0, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 170,
+ 171, 172, 0, 174, 175, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 0,
+ 0, 191, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 3, 0,
+ 0, 0, 218, 219, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 955, 0, 0,
+ 0, 0, 0, 0, 0, 0, 410, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 21, 0, 0, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 957, 958, 959, 960, 961, 962, 963, 964, 965, 0,
+ 0, 46, 47, 48, 0, 50, 0, 51, 0, 956,
+ 54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66, 0, 68, 69, 0, 0, 72,
+ 0, 0, 0, 76, 77, 78, 0, 80, 81, 82,
+ 0, 0, 85, 0, 0, 0, 89, 0, 0, 0,
+ 93, 94, 95, 0, 0, 98, 0, 0, 0, 0,
+ 0, 0, 0, 0, 107, 108, 109, 0, 0, 0,
+ 0, 0, 0, 0, 116, 0, 118, 0, 0, 121,
+ 122, 0, 0, 0, 0, 0, 0, 0, 966, 0,
+ 1226, 1227, 1228, 1229, 1230, 1231, 0, 968, 0, 0,
+ 0, 0, 0, 0, 146, 147, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 170, 171,
+ 172, 0, 174, 175, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 187, 188, 0, 0,
+ 191, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 3, 0, 0,
+ 0, 218, 219, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 955, 0, 0, 0,
+ 0, 0, 0, 0, 0, 410, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 957,
+ 958, 959, 960, 961, 962, 963, 964, 965, 0, 0,
+ 46, 47, 48, 0, 50, 0, 51, 0, 956, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 66, 0, 68, 69, 0, 0, 72, 0,
+ 0, 0, 76, 77, 78, 0, 80, 81, 82, 0,
+ 0, 85, 0, 0, 0, 89, 0, 0, 0, 93,
+ 94, 95, 0, 0, 98, 0, 0, 0, 0, 0,
+ 0, 0, 0, 107, 108, 109, 0, 0, 0, 0,
+ 0, 0, 0, 116, 0, 118, 0, 0, 121, 122,
+ 0, 0, 0, 0, 0, 0, 0, 966, 0, 231,
+ 232, 233, 967, 235, 1378, 0, 968, 0, 0, 0,
+ 0, 0, 0, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 170, 171, 172,
+ 0, 174, 175, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 187, 188, 0, 0, 191,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 3, 0, 0, 0,
+ 218, 219, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 955, 0, 0, 0, 0,
+ 0, 0, 0, 0, 410, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 21, 0, 0, 0, 24, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 220, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 957, 958,
+ 959, 960, 961, 962, 963, 964, 965, 0, 0, 46,
+ 47, 48, 0, 50, 0, 51, 0, 956, 54, 55,
+ 56, 57, 58, 59, 60, 61, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 66, 0, 68, 69, 0, 0, 72, 0, 0,
+ 0, 76, 77, 78, 0, 80, 81, 82, 0, 0,
+ 85, 0, 0, 0, 89, 0, 0, 0, 93, 94,
+ 95, 0, 0, 98, 0, 0, 0, 0, 0, 0,
+ 0, 0, 107, 108, 109, 0, 0, 0, 0, 0,
+ 0, 0, 116, 0, 118, 0, 0, 121, 122, 0,
+ 0, 0, 0, 0, 0, 0, 966, 0, 231, 232,
+ 233, 967, 235, 1379, 0, 968, 0, 0, 0, 0,
+ 0, 0, 146, 147, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 169, 170, 171, 172, 0,
+ 174, 175, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 187, 188, 0, 0, 191, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 206, 207, 208,
+ 209, 210, 211, 212, 213, 3, 0, 0, 0, 218,
+ 219, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 955, 0, 0, 0, 0, 0,
+ 0, 0, 0, 410, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 21, 0, 0, 0, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 957, 958, 959,
+ 960, 961, 962, 963, 964, 965, 0, 0, 46, 47,
+ 48, 0, 50, 0, 51, 0, 956, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66, 0, 68, 69, 0, 0, 72, 0, 0, 0,
+ 76, 77, 78, 0, 80, 81, 82, 0, 0, 85,
+ 0, 0, 0, 89, 0, 0, 0, 93, 94, 95,
+ 0, 0, 98, 0, 0, 0, 0, 0, 0, 0,
+ 0, 107, 108, 109, 0, 0, 0, 0, 0, 0,
+ 0, 116, 0, 118, 0, 0, 121, 122, 0, 0,
+ 0, 0, 0, 0, 0, 966, 0, 231, 232, 233,
+ 967, 235, 1406, 0, 968, 0, 0, 0, 0, 0,
+ 0, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 170, 171, 172, 0, 174,
+ 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 187, 188, 0, 0, 191, 0, 0,
+ 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 3, 0, 0, 0, 218, 219,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 955, 0, 0, 0, 0, 0, 0,
+ 0, 0, 410, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 21, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 957, 958, 959, 960,
+ 961, 962, 963, 964, 965, 0, 0, 46, 47, 48,
+ 0, 50, 0, 51, 0, 956, 54, 55, 56, 57,
+ 58, 59, 60, 61, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 68, 69, 0, 0, 72, 0, 0, 0, 76,
+ 77, 78, 0, 80, 81, 82, 0, 0, 85, 0,
+ 0, 0, 89, 0, 0, 0, 93, 94, 95, 0,
+ 0, 98, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 108, 109, 0, 0, 0, 0, 0, 0, 0,
+ 116, 0, 118, 0, 0, 121, 122, 0, 0, 0,
+ 0, 0, 0, 0, 966, 0, 231, 232, 233, 967,
+ 235, 1409, 0, 968, 0, 0, 0, 0, 0, 0,
+ 146, 147, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 169, 170, 171, 172, 0, 174, 175,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 0, 0, 191, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 206, 207, 208, 209, 210,
+ 211, 212, 213, 3, 0, 0, 0, 218, 219, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 955, 0, 0, 0, 0, 0, 0, 0,
+ 0, 410, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 24, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 957, 958, 959, 960, 961,
+ 962, 963, 964, 965, 0, 0, 46, 47, 48, 0,
+ 50, 0, 51, 0, 956, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
+ 68, 69, 0, 0, 72, 0, 0, 0, 76, 77,
+ 78, 0, 80, 81, 82, 0, 0, 85, 0, 0,
+ 0, 89, 0, 0, 0, 93, 94, 95, 0, 0,
+ 98, 0, 0, 0, 0, 0, 0, 0, 0, 107,
+ 108, 109, 0, 0, 0, 0, 0, 0, 0, 116,
+ 0, 118, 0, 0, 121, 122, 0, 0, 0, 0,
+ 0, 0, 0, 966, 0, 231, 232, 233, 967, 235,
+ 1433, 0, 968, 0, 0, 0, 0, 0, 0, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 170, 171, 172, 0, 174, 175, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 188, 0, 0, 191, 0, 0, 0, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 3, 0, 0, 0, 218, 219, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 955, 0, 0, 0, 0, 0, 0, 0, 0,
+ 410, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 0, 0, 0, 24, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 220, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 957, 958, 959, 960, 961, 962,
+ 963, 964, 965, 0, 0, 46, 47, 48, 0, 50,
+ 0, 51, 0, 956, 54, 55, 56, 57, 58, 59,
+ 60, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 66, 0, 68,
+ 69, 0, 0, 72, 0, 0, 0, 76, 77, 78,
+ 0, 80, 81, 82, 0, 0, 85, 0, 0, 0,
+ 89, 0, 0, 0, 93, 94, 95, 0, 0, 98,
+ 0, 0, 0, 0, 0, 0, 0, 0, 107, 108,
+ 109, 0, 0, 0, 0, 0, 0, 0, 116, 0,
+ 118, 0, 0, 121, 122, 0, 0, 0, 0, 0,
+ 0, 0, 966, 0, 231, 232, 233, 967, 235, 1480,
+ 0, 968, 0, 0, 0, 0, 0, 0, 146, 147,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 169, 170, 171, 172, 0, 174, 175, 176, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 187, 188, 0, 0, 191, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 206, 207, 208, 209, 210, 211, 212,
+ 213, 3, 0, 0, 0, 218, 219, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 955, 0, 0, 0, 0, 0, 0, 0, 0, 410,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+ 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 957, 958, 959, 960, 961, 962, 963,
+ 964, 965, 0, 0, 46, 47, 48, 0, 50, 0,
+ 51, 0, 956, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 68, 69,
+ 0, 0, 72, 0, 0, 0, 76, 77, 78, 0,
+ 80, 81, 82, 0, 0, 85, 0, 0, 0, 89,
+ 0, 0, 0, 93, 94, 95, 0, 0, 98, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 108, 109,
+ 0, 0, 0, 0, 0, 0, 0, 116, 0, 118,
+ 0, 0, 121, 122, 0, 0, 0, 0, 0, 0,
+ 0, 966, 0, 231, 232, 233, 967, 235, 1505, 0,
+ 968, 0, 0, 0, 0, 0, 0, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 170, 171, 172, 0, 174, 175, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
+ 188, 0, 0, 191, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 3, 0, 0, 0, 218, 219, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 955,
+ 0, 0, 0, 0, 0, 0, 0, 0, 410, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
+ 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 957, 958, 959, 960, 961, 962, 963, 964,
+ 965, 0, 0, 46, 47, 48, 0, 50, 0, 51,
+ 0, 956, 54, 55, 56, 57, 58, 59, 60, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66, 0, 68, 69, 0,
+ 0, 72, 0, 0, 0, 76, 77, 78, 0, 80,
+ 81, 82, 0, 0, 85, 0, 0, 0, 89, 0,
+ 0, 0, 93, 94, 95, 0, 0, 98, 0, 0,
+ 0, 0, 0, 0, 0, 0, 107, 108, 109, 0,
+ 0, 0, 0, 0, 0, 0, 116, 0, 118, 0,
+ 0, 121, 122, 0, 0, 0, 0, 0, 0, 0,
+ 966, 0, 231, 232, 233, 967, 235, 0, 0, 968,
+ 0, 0, 0, 0, 0, 0, 146, 147, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 415, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 169,
+ 170, 171, 172, 0, 174, 175, 176, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 0, 0, 191, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 437, 0, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 4, 0,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 5,
+ 0, 0, 0, 218, 219, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 10, 0,
+ 0, 0, 0, 11, 12, 0, 13, 14, 15, 16,
+ 17, 18, 19, 20, 0, 0, 0, 21, 0, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 0, 0, 0, 438, 0, 43, 44, 0, 0, 45,
+ 0, 220, 0, 46, 47, 48, 49, 50, 0, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 0, 439, 440, 441, 442, 443, 444, 0, 446, 447,
+ 448, 0, 449, 450, 451, 452, 0, 0, 0, 0,
+ 0, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 0, 966,
+ 0, 231, 232, 233, 967, 235, 0, 0, 968, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 148, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 0, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 205, 0, 0, 0,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+ 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 0, 751, 752,
+ 753, 754, 755, 756, 757, 758, 759, 760, 761, 762,
+ 763, 764, 765, 766, 767, 768, 769, 0, 770, 771,
+ 772, 220, 221, 0, 0, 0, 0, 0, 0, 0,
+ 222, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 223, 0, 224, 225,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 226, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 7, 8,
+ 0, 0, 0, 0, 0, 227, 228, 229, 9, 773,
+ 0, 231, 232, 233, 234, 235, 0, 10, 616, 479,
+ 0, 0, 11, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 20, 0, 0, 0, 21, 0, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 0, 43, 44, 0, 0, 45, 0,
+ 0, 0, 46, 47, 48, 49, 50, 0, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 0, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 4,
+ 220, 221, 0, 0, 0, 0, 0, 0, 0, 222,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, 0, 0, 0, 0, 223, 0, 224, 225, 868,
+ 616, 479, 0, 0, 11, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 20, 0, 0, 226, 21, 0,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 0, 43, 44, 0, 0,
+ 45, 0, 0, 0, 46, 47, 48, 49, 50, 0,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 227, 228, 229, 0, 404, 0,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 0,
+ 0, 0, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 0, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 148, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 4, 220, 221, 0, 0, 0, 0, 0, 0,
+ 0, 222, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 223, 0, 224,
+ 225, 10, 0, 0, 0, 0, 11, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 20, 0, 0, 226,
+ 21, 0, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 0, 43, 44,
+ 0, 0, 45, 0, 0, 0, 46, 47, 48, 49,
+ 50, 0, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 227, 228, 229, 0,
+ 404, 0, 231, 232, 233, 234, 235, 0, 0, 0,
+ 0, 0, 0, 0, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 0, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 0, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 4, 220, 221, 0, 0, 0, 0,
+ 0, 0, 0, 222, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 7, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 0, 223,
+ 0, 224, 225, 10, 0, 0, 0, 0, 11, 12,
+ 0, 13, 14, 15, 16, 17, 18, 19, 20, 0,
+ 0, 226, 21, 0, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 0, 0, 0, 0, 0,
+ 43, 44, 0, 0, 45, 0, 0, 0, 46, 47,
+ 48, 49, 50, 0, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 227, 228,
+ 229, 0, 404, 989, 231, 232, 233, 234, 235, 0,
+ 0, 0, 0, 0, 0, 0, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 0, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 0, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 205, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 4, 220, 221, 0, 0,
+ 0, 0, 0, 0, 0, 222, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 223, 0, 224, 225, 10, 0, 0, 0, 0,
+ 11, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 20, 0, 0, 226, 21, 0, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 0, 43, 44, 0, 0, 45, 0, 0, 0,
+ 46, 47, 48, 49, 50, 0, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 227, 228, 229, 0, 404, 1097, 231, 232, 233, 234,
+ 235, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 0, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 0, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 205, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 4, 220, 221,
+ 0, 0, 0, 0, 0, 0, 0, 222, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 7, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
+ 0, 0, 0, 223, 0, 224, 225, 10, 0, 0,
+ 0, 0, 11, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 20, 0, 0, 226, 21, 0, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 0, 43, 44, 0, 0, 45, 0,
+ 0, 0, 46, 47, 48, 49, 50, 0, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 227, 228, 229, 0, 404, 1248, 231, 232,
+ 233, 234, 235, 0, 0, 0, 0, 0, 0, 0,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 0, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 205, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 4,
+ 220, 221, 0, 0, 0, 0, 0, 0, 0, 222,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, 0, 0, 0, 0, 223, 0, 224, 225, 10,
+ 0, 0, 0, 0, 11, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 20, 0, 0, 226, 21, 0,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 0, 43, 44, 0, 0,
+ 45, 0, 0, 0, 46, 47, 48, 49, 50, 0,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 227, 228, 229, 0, 230, 0,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 0,
+ 0, 0, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 0, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 148, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 4, 220, 221, 0, 0, 0, 0, 0, 0,
+ 0, 222, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 403, 0, 0, 0, 0, 223, 0, 224,
+ 225, 10, 0, 0, 0, 0, 11, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 20, 0, 0, 226,
+ 21, 0, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 0, 43, 44,
+ 0, 0, 45, 0, 0, 0, 46, 47, 48, 49,
+ 50, 0, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 227, 228, 229, 0,
+ 399, 0, 231, 232, 233, 234, 235, 0, 0, 0,
+ 0, 0, 0, 0, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 0, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 0, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 4, 220, 221, 0, 0, 0, 0,
+ 0, 0, 0, 222, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 7, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 0, 223,
+ 0, 224, 225, 10, 0, 0, 0, 0, 11, 12,
+ 0, 13, 14, 15, 16, 17, 18, 19, 20, 0,
+ 0, 226, 21, 0, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 0, 0, 0, 0, 0,
+ 43, 44, 0, 0, 45, 0, 0, 0, 46, 47,
+ 48, 49, 50, 0, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 227, 228,
+ 229, 0, 404, 0, 231, 232, 233, 234, 235, 0,
+ 0, 0, 0, 0, 0, 0, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 0, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 0, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 205, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 4, 220, 221, 0, 0,
+ 0, 0, 0, 0, 0, 222, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 223, 0, 224, 225, 10, 0, 0, 0, 0,
+ 11, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 20, 0, 0, 226, 21, 0, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 0, 43, 44, 0, 0, 45, 0, 0, 0,
+ 46, 47, 48, 49, 50, 0, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 227, 228, 229, 0, 404, 0, 231, 232, 233, 234,
+ 235, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 0, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 0, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 205, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 4, 220, 221,
+ 0, 0, 0, 0, 0, 0, 0, 222, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 7, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 593, 0,
+ 0, 0, 0, 223, 0, 224, 225, 10, 0, 0,
+ 0, 0, 11, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 20, 0, 0, 226, 21, 0, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 0, 43, 44, 0, 0, 45, 0,
+ 0, 0, 46, 47, 48, 49, 50, 0, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 227, 228, 229, 0, 591, 0, 231, 232,
+ 233, 234, 235, 0, 0, 0, 0, 0, 0, 0,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 0, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 205, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 4,
+ 220, 221, 0, 0, 0, 0, 0, 0, 0, 222,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, 0, 0, 0, 0, 223, 0, 224, 225, 10,
+ 0, 0, 0, 0, 11, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 20, 0, 0, 226, 21, 0,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 0, 43, 44, 0, 0,
+ 45, 0, 0, 0, 46, 47, 48, 49, 50, 0,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 227, 228, 229, 0, 404, 0,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 0,
+ 0, 0, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 0, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 148, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 4, 220, 221, 0, 0, 0, 0, 0, 0,
+ 0, 222, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 849, 0, 0, 0, 0, 223, 0, 224,
+ 225, 10, 0, 0, 0, 0, 11, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 20, 0, 0, 226,
+ 21, 0, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 0, 43, 44,
+ 0, 0, 45, 0, 0, 0, 46, 47, 48, 49,
+ 50, 0, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 227, 228, 229, 0,
+ 845, 0, 231, 232, 233, 234, 235, 0, 0, 0,
+ 0, 0, 0, 0, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 0, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 0, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 4, 220, 221, 0, 0, 0, 0,
+ 0, 0, 0, 222, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 7, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 853, 0, 0, 0, 0, 223,
+ 0, 224, 225, 10, 0, 0, 0, 0, 11, 12,
+ 0, 13, 14, 15, 16, 17, 18, 19, 20, 0,
+ 0, 226, 21, 0, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 0, 0, 0, 0, 0,
+ 43, 44, 0, 0, 45, 0, 0, 0, 46, 47,
+ 48, 49, 50, 0, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 227, 228,
+ 229, 0, 404, 0, 231, 232, 233, 234, 235, 0,
+ 0, 0, 0, 0, 0, 0, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 0, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 0, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 205, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 4, 220, 221, 0, 0,
+ 0, 0, 0, 0, 0, 222, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1113, 0, 0, 0,
+ 0, 223, 0, 224, 225, 10, 0, 0, 0, 0,
+ 11, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 20, 0, 0, 226, 21, 0, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 0, 43, 44, 0, 0, 45, 0, 0, 0,
+ 46, 47, 48, 49, 50, 0, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 227, 228, 229, 0, 404, 0, 231, 232, 233, 234,
+ 235, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 0, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 0, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 205, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 815,
+ 0, 816, 21, 0, 0, 0, 0, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 0,
+ 0, 0, 0, 0, 0, 0, 470, 471, 472, 473,
+ 0, 0, 474, 475, 0, 476, 0, 0, 0, 3,
+ 0, 49, 0, 0, 0, 52, 0, 4, 220, 221,
+ 0, 0, 0, 0, 0, 0, 0, 222, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
+ 0, 0, 0, 223, 0, 224, 225, 410, 616, 479,
+ 0, 0, 411, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 226, 21, 0, 0, 0,
+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 37, 38, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 46, 47, 48, 0, 50, 0, 51, 0,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 227, 228, 229, 0, 404, 0, 231, 232,
+ 233, 234, 235, 0, 0, 0, 0, 0, 0, 0,
+ 62, 63, 64, 65, 66, 67, 68, 69, 0, 0,
+ 72, 0, 0, 0, 76, 77, 78, 79, 80, 81,
+ 82, 0, 84, 85, 86, 87, 0, 89, 0, 0,
+ 0, 93, 94, 95, 0, 0, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 0, 0,
+ 111, 112, 113, 114, 115, 116, 0, 118, 192, 0,
+ 121, 122, 0, 0, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 0, 0, 0, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 170,
+ 171, 172, 0, 174, 175, 176, 0, 0, 178, 0,
+ 0, 181, 182, 183, 184, 185, 0, 187, 188, 189,
+ 190, 191, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 557, 558, 559,
+ 560, 561, 0, 0, 0, 562, 563, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 564, 565, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 220, 221, 0, 0, 0, 0, 0, 5, 0, 222,
+ 0, 0, 0, 0, 0, 0, 231, 232, 233, 234,
+ 235, 0, 0, 0, 0, 0, 0, 7, 8, 0,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 0, 0, 0, 0, 223, 410, 224, 225, 0,
+ 0, 411, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 21, 0, 226, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 37, 38, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 46, 47, 48, 0, 50, 0, 51, 0, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
+ 0, 0, 0, 0, 227, 228, 229, 0, 412, 0,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 62,
+ 63, 64, 65, 66, 67, 68, 69, 0, 0, 72,
+ 0, 0, 0, 76, 77, 78, 79, 80, 81, 82,
+ 0, 84, 85, 86, 87, 0, 89, 0, 0, 0,
+ 93, 94, 95, 0, 0, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 0, 0, 111,
+ 112, 113, 114, 115, 116, 0, 118, 0, 0, 121,
+ 122, 0, 0, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 0, 0, 0, 146, 147, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 148, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 170, 171,
+ 172, 0, 174, 175, 176, 0, 0, 178, 0, 0,
+ 181, 182, 183, 184, 185, 0, 187, 188, 189, 190,
+ 191, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 205, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 220,
+ 221, 0, 5, 0, 0, 0, 0, 0, 222, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 0, 410, 0, 0, 223, 0, 224, 225, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 24, 0, 226, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 37, 38, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 46, 47, 48, 0,
+ 50, 0, 51, 0, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 227, 228, 229, 0, 412, 0, 231,
+ 232, 233, 234, 235, 62, 63, 64, 65, 66, 67,
+ 68, 69, 0, 0, 72, 0, 0, 0, 76, 77,
+ 78, 79, 80, 81, 82, 0, 84, 85, 86, 87,
+ 0, 89, 0, 0, 0, 93, 94, 95, 0, 0,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 0, 0, 111, 112, 113, 114, 115, 116,
+ 0, 118, 0, 0, 121, 122, 0, 0, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 0, 0, 0, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 170, 171, 172, 0, 174, 175, 176,
+ 0, 0, 178, 0, 0, 181, 182, 183, 184, 185,
+ 0, 187, 188, 189, 190, 191, 0, 0, 0, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 220, 221, 0, 0, 0, 0,
+ 0, 583, 0, 222, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 8, 0, 0, 0, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 0, 0, 0, 0, 223,
+ 410, 224, 225, 382, 383, 411, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 0, 226, 0, 24, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 37, 38, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 46, 47, 48, 0, 50,
+ 0, 51, 0, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 0, 0, 0, 0, 0, 0, 227, 228,
+ 229, 0, 412, 0, 231, 232, 233, 234, 235, 0,
+ 0, 0, 0, 62, 63, 64, 65, 66, 67, 68,
+ 69, 0, 0, 72, 0, 0, 0, 76, 77, 78,
+ 79, 80, 81, 82, 0, 84, 85, 86, 87, 0,
+ 89, 0, 0, 0, 93, 94, 95, 0, 0, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 0, 0, 111, 112, 113, 114, 115, 116, 0,
+ 118, 0, 0, 121, 122, 0, 0, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 0, 0, 0, 146, 147,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 148, 0, 0, 0,
+ 584, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 169, 170, 171, 172, 0, 174, 175, 176, 0,
+ 0, 178, 0, 0, 181, 182, 183, 184, 185, 0,
+ 187, 188, 189, 190, 191, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 220, 221, 0, 5, 0, 0, 0,
+ 0, 0, 222, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 410, 0, 0, 223, 0,
+ 224, 225, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 0, 0, 0, 24, 0,
+ 226, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 37, 38, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 46, 47, 48, 0, 50, 0, 51, 0, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 227, 228, 229,
+ 0, 412, 0, 231, 232, 233, 234, 235, 62, 63,
+ 64, 65, 66, 67, 68, 69, 0, 0, 72, 0,
+ 0, 0, 76, 77, 78, 79, 80, 81, 82, 0,
+ 84, 85, 86, 87, 0, 89, 0, 0, 0, 93,
+ 94, 95, 0, 0, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 0, 0, 111, 112,
+ 113, 114, 115, 116, 0, 118, 0, 0, 121, 122,
+ 0, 0, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 0, 0, 0, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 170, 171, 172,
+ 0, 174, 175, 176, 0, 0, 178, 0, 0, 181,
+ 182, 183, 184, 185, 0, 187, 188, 189, 190, 191,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 47, 48, 0, 50, 0, 51, 220, 221,
+ 0, 0, 0, 0, 0, 0, 0, 222, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 955, 0, 0,
+ 0, 0, 0, 0, 0, 68, 410, 0, 0, 72,
+ 0, 0, 0, 223, 0, 224, 225, 0, 81, 82,
+ 0, 0, 85, 0, 0, 21, 89, 0, 0, 24,
+ 93, 94, 0, 0, 0, 226, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 118, 0, 0, 121,
+ 0, 46, 47, 48, 0, 50, 0, 51, 0, 956,
+ 54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
+ 0, 0, 0, 0, 0, 147, 0, 0, 0, 0,
+ 0, 0, 227, 228, 229, 0, 412, 0, 231, 232,
+ 233, 234, 235, 66, 0, 68, 69, 0, 0, 72,
+ 0, 0, 0, 76, 77, 78, 0, 80, 81, 82,
+ 0, 0, 85, 0, 0, 0, 89, 0, 0, 0,
+ 93, 94, 95, 0, 0, 98, 0, 0, 0, 0,
+ 0, 0, 0, 0, 107, 108, 109, 0, 170, 171,
+ 172, 0, 1091, 175, 116, 0, 118, 0, 0, 121,
+ 122, 0, 0, 0, 0, 0, 187, 0, 0, 0,
+ 191, 0, 0, 0, 0, 0, 0, 0, 199, 200,
+ 201, 0, 0, 0, 146, 147, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 0, 212, 213, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 170, 171,
+ 172, 0, 174, 175, 176, 0, 0, 1234, 0, 0,
+ 0, 1234, 0, 0, 0, 0, 187, 188, 1234, 0,
+ 191, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 0, 0, 955, 0, 0, 0, 0,
+ 0, 0, 0, 0, 410, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 0, 0, 0,
+ 0, 218, 219, 21, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,
+ 0, 0, 0, 0, 0, 0, 0, 956, 54, 55,
+ 56, 57, 58, 59, 60, 61, 0, 0, 0, 0,
+ 0, 0, 0, 1234, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 66, 0, 0, 69, 0, 0, 0, 1234, 220,
+ 0, 76, 77, 78, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1342, 0, 1342, 1234, 0, 0,
+ 95, 0, 0, 98, 0, 0, 0, 1342, 0, 0,
+ 0, 0, 107, 0, 109, 0, 0, 0, 0, 0,
+ 0, 0, 116, 0, 0, 0, 0, 0, 122, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 146, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1091, 1091, 1091, 0, 0, 0, 0,
+ 0, 1342, 1342, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1234, 0, 0,
+ 0, 0, 0, 0, 0, 1342, 0, 966, 1243, 231,
+ 232, 233, 234, 235, 0, 169, 0, 0, 0, 0,
+ 174, 0, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 188, 0, 0, 1091, 0,
+ 0, 0, 195, 196, 197, 198, 1342, 1234, 0, 202,
+ 203, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0,
+ 0, 1091, 211, 0, 1342, 0, 0, 0, 0, 218,
+ 219, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1091, 1091, 1091, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 936, 0, 0, 0, 0, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -700, 0, 0, 0, 0, 0, 1091, 0, 0,
+ 0, 0, 0, 387, 388, 389, 390, 391, 392, 393,
+ 394, 0, 0, 0, 0, 1091, 0, -700, 0, -700,
+ -700, -700, -700, -700, -700, -700, -700, 0, 0, 0,
+ 0, 0, -700, -700, 0, -700, -700, -700, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, 0, 0, -700,
+ -700, -700, -700, 0, 0, 0, 0, 0, -700, -700,
+ 0, 0, -700, 0, 0, 0, 0, 0, 0, -700,
+ 0, 0, 0, -700, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 231, 232, 233,
+ 234, 235, -700, -700, 0, -700, -700, -700, 0, 0,
+ 0, 0, 0, 0, 0, -700, 0, 0, 0, 0,
+ -700, 0, -700, -700, -700, 0, 0, 0, -700, -700,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -700, 0, 0, 0, 0, 0, 0, 0,
+ -700, 0, -700, -700, 0, 0, -700, -700, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -700, -700, -700, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -700, -700, -700, -700, -700, -700, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, -700, -700, -700,
+ -700, -700, 0, 0, 0, 0, -700, 0, 0, 0,
+ -700, 0, 0, -700, -700, 0, 0, 0, 0, 0,
+ -700, 0, -700, 0, 0, 0, -700, -700, -700, 0,
+ 0, 0, 0, 0, 387, 388, 389, 390, 391, 392,
+ 393, 394, 0, 0, 0, 0, 0, 0, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, -700, 0, 0,
+ 0, 0, 0, -700, -700, 0, -700, -700, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, -700, 0, 0,
+ -700, -700, -700, -700, 0, 0, 0, 0, 0, -700,
+ -700, 0, 0, -700, 0, 0, 0, 0, 0, 0,
+ -700, 0, 0, 0, -700, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -700, -700, 0, -700, -700, -700, 0,
+ 0, 0, 0, 0, 0, 0, -700, 0, 0, 0,
+ 0, -700, 0, -700, -700, -700, 0, 0, 0, -700,
+ -700, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, -700, 0, 0, 0, 0, 0, 0,
+ 0, -700, 0, -700, -700, 0, 406, -700, -700, 0,
+ 0, 407, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -700, -700, -700,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 39, 40, 41, 42, 0, 0,
+ 0, 0, 0, 43, 44, 0, 0, 45, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -700, -700, -700, -700, -700, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, -700, -700, -700,
+ -700, -700, -700, -700, 0, 0, 0, -700, 0, 0,
+ 0, -700, 0, 0, -700, -700, 0, 0, 0, 0,
+ 0, -700, 0, 0, 0, 4, 0, -700, -700, -700,
+ 83, 0, 0, 0, 0, 88, 0, 90, 91, 92,
+ 0, 0, 0, 96, 97, 0, 0, 0, 0, 0,
+ -700, 0, 0, 0, 0, 6, 7, 110, 0, 1534,
+ 0, 0, 0, 0, 0, 117, 0, 119, 0, 0,
+ 0, 123, 124, 0, 0, 406, 0, 0, 0, 0,
+ 407, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 20, 0, 0, 0, 0, 0, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 0, 0, 39, 40, 41, 42, 0, 0, 0,
+ 0, 0, 43, 44, 0, 0, 45, 0, 0, 0,
+ 0, 47, 48, 49, 50, 0, 51, 52, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 173, 0, 0, 0, 177, 0, 0, 179, 180,
+ 0, 0, 0, 0, 68, 186, 70, 71, 72, 73,
+ 74, 75, 193, 194, 0, 0, 0, 81, 82, 83,
+ 0, 85, 0, 0, 88, 89, 90, 91, 92, 93,
+ 94, 0, 96, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 0, 108, 0, 110, 0, 0, 0,
+ 0, 0, 0, 0, 117, 118, 119, 120, 121, 0,
+ 123, 124, 406, 0, 0, 0, 0, 407, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 143, 144, 145, 0, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 39, 40, 41, 42, 0, 0, 0, 0, 0, 43,
+ 44, 0, 0, 45, -700, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 0, 170, 171, 172,
+ 173, 0, 175, 0, 177, 0, 0, 179, 180, 0,
+ 0, 0, 0, 0, 186, 187, 0, 0, 0, 191,
+ 192, 193, 194, 0, 0, 0, 83, 199, 200, 201,
+ 0, 88, 0, 90, 91, 92, 0, 0, 0, 96,
+ 97, 0, 0, 0, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 110, 212, 213, 0, 0, 0, 0,
+ 0, 117, 0, 119, 0, 0, 0, 123, 124, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 408, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 165,
+ 166, 167, 168, 0, 0, 0, 0, 173, 0, 0,
+ 0, 177, 0, 0, 179, 180, 0, 0, 0, 0,
+ 0, 186, 0, 0, 0, 0, 0, 0, 193, 194
+};
+
+static const short yycheck[] = { 4,
+ 277, 6, 7, 8, 255, 258, 1, 12, 271, 1,
+ 251, 250, 257, 250, 251, 11, 255, 22, 23, 24,
+ 253, 5, 241, 257, 37, 38, 39, 80, 22, 271,
+ 272, 776, 37, 38, 572, 572, 6, 271, 239, 244,
+ 80, 572, 47, 48, 49, 50, 51, 52, 37, 38,
+ 39, 456, 457, 458, 459, 242, 967, 62, 63, 64,
+ 65, 285, 67, 68, 252, 70, 71, 72, 73, 74,
+ 75, 802, 983, 617, 618, 782, 81, 82, 83, 84,
+ 85, 86, 87, 500, 89, 50, 581, 582, 93, 94,
+ 270, 96, 97, 457, 458, 782, 101, 1237, 524, 104,
+ 105, 80, 32, 33, 34, 35, 36, 112, 113, 114,
+ 115, 688, 399, 239, 258, 80, 121, 404, 567, 685,
+ 125, 687, 251, 128, 129, 412, 255, 4, 5, 3,
+ 103, 8, 137, 10, 844, 140, 141, 142, 430, 9,
+ 464, 114, 115, 148, 149, 150, 151, 381, 1473, 275,
+ 80, 568, 157, 4, 5, 582, 582, 8, 450, 10,
+ 384, 456, 457, 458, 459, 170, 171, 293, 173, 1309,
+ 1495, 473, 474, 475, 179, 180, 320, 321, 1080, 455,
+ 80, 414, 187, 402, 364, 1087, 191, 192, 193, 194,
+ 1283, 196, 397, 910, 199, 1517, 913, 582, 915, 400,
+ 649, 206, 207, 208, 500, 119, 482, 212, 213, 123,
+ 22, 1149, 1150, 1535, 1152, 466, 1154, 1155, 469, 582,
+ 455, 626, 627, 258, 465, 488, 582, 466, 465, 1174,
+ 467, 266, 267, 940, 639, 1175, 1176, 583, 643, 119,
+ 517, 224, 225, 123, 485, 484, 488, 482, 481, 1389,
+ 455, 82, 83, 940, 488, 99, 100, 101, 102, 434,
+ 435, 63, 626, 120, 108, 109, 508, 121, 112, 1362,
+ 396, 1364, 398, 463, 400, 1368, 281, 482, 602, 603,
+ 468, 589, 606, 22, 592, 587, 588, 582, 463, 591,
+ 1192, 460, 258, 1233, 279, 1235, 515, 0, 264, 265,
+ 524, 80, 285, 286, 591, 1398, 1246, 290, 291, 254,
+ 428, 429, 430, 431, 583, 1217, 1026, 1027, 1229, 583,
+ 864, 439, 440, 441, 442, 443, 444, 583, 1045, 476,
+ 477, 478, 277, 583, 1236, 1404, 1429, 583, 572, 916,
+ 469, 617, 582, 619, 1289, 1290, 912, 623, 1417, 625,
+ 1419, 575, 576, 1298, 1299, 1475, 485, 1477, 589, 62,
+ 63, 592, 638, 582, 589, 310, 642, 592, 587, 22,
+ 1310, 1311, 1441, 592, 473, 474, 475, 382, 383, 1499,
+ 656, 103, 1502, 574, 162, 163, 619, 462, 623, 167,
+ 625, 589, 114, 115, 592, 646, 78, 648, 510, 511,
+ 512, 258, 385, 638, 1344, 583, 647, 642, 403, 1478,
+ 415, 403, 617, 618, 619, 953, 953, 658, 623, 389,
+ 625, 656, 953, 598, 599, 600, 601, 432, 433, 583,
+ 617, 436, 6, 638, 1336, 213, 655, 642, 389, 384,
+ 445, 386, 591, 448, 591, 1385, 591, 452, 1179, 1180,
+ 61, 656, 63, 398, 572, 37, 22, 39, 1396, 591,
+ 317, 318, 592, 503, 504, 322, 591, 1044, 462, 1046,
+ 645, 591, 877, 1413, 40, 591, 476, 477, 478, 479,
+ 480, 481, 583, 523, 1386, 51, 487, 488, 489, 490,
+ 495, 496, 591, 1476, 1477, 583, 501, 502, 503, 65,
+ 461, 506, 255, 256, 257, 510, 511, 583, 513, 514,
+ 582, 388, 630, 631, 632, 633, 634, 635, 1501, 47,
+ 1503, 49, 527, 528, 529, 530, 531, 532, 281, 583,
+ 522, 584, 585, 586, 587, 588, 589, 388, 389, 1284,
+ 1285, 1599, 525, 1601, 584, 585, 586, 587, 588, 582,
+ 1475, 1476, 582, 558, 591, 560, 561, 591, 845, 564,
+ 565, 67, 68, 267, 583, 799, 22, 1557, 1558, 7,
+ 1301, 584, 517, 1498, 582, 1500, 1556, 1557, 582, 524,
+ 7, 526, 165, 166, 1161, 1575, 582, 1577, 864, 572,
+ 535, 591, 1572, 869, 1574, 584, 583, 873, 593, 583,
+ 876, 593, 878, 503, 504, 584, 585, 586, 587, 588,
+ 591, 556, 888, 476, 477, 478, 479, 480, 481, 584,
+ 585, 586, 587, 588, 4, 5, 67, 68, 8, 864,
+ 10, 636, 637, 578, 579, 583, 869, 583, 873, 584,
+ 583, 876, 591, 878, 591, 1376, 651, 652, 653, 1380,
+ 510, 511, 512, 888, 584, 585, 586, 587, 588, 864,
+ 67, 68, 667, 668, 869, 670, 671, 591, 873, 674,
+ 675, 876, 583, 878, 1116, 1117, 1407, 1408, 1409, 241,
+ 806, 686, 1124, 888, 584, 585, 586, 587, 588, 7,
+ 1556, 582, 1558, 970, 1136, 587, 588, 1139, 703, 591,
+ 149, 150, 7, 1434, 153, 710, 711, 1573, 583, 1151,
+ 1576, 716, 99, 100, 101, 102, 583, 843, 844, 953,
+ 7, 108, 109, 582, 1455, 112, 513, 514, 591, 734,
+ 11, 736, 21, 678, 739, 740, 583, 742, 582, 503,
+ 504, 746, 747, 583, 749, 750, 583, 455, 67, 68,
+ 755, 756, 757, 41, 42, 43, 761, 762, 583, 764,
+ 1036, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 499, 990, 501, 502, 482, 1506, 1053, 1054, 62, 63,
+ 775, 565, 566, 775, 776, 37, 38, 39, 793, 794,
+ 795, 796, 797, 798, 1525, 499, 20, 501, 502, 782,
+ 1019, 1036, 583, 582, 809, 584, 585, 586, 587, 588,
+ 583, 1088, 272, 273, 1256, 1257, 1258, 802, 27, 824,
+ 825, 826, 827, 828, 829, 830, 831, 832, 833, 834,
+ 582, 1036, 47, 48, 49, 953, 38, 39, 582, 784,
+ 785, 846, 571, 572, 573, 583, 575, 576, 37, 38,
+ 582, 580, 24, 25, 849, 48, 49, 849, 853, 804,
+ 583, 853, 988, 456, 457, 458, 459, 571, 572, 573,
+ 582, 575, 576, 584, 577, 22, 580, 1096, 823, 28,
+ 583, 482, 483, 484, 485, 486, 589, 26, 591, 592,
+ 582, 896, 897, 898, 374, 375, 376, 377, 903, 904,
+ 1026, 1027, 529, 530, 531, 532, 533, 534, 535, 914,
+ 582, 619, 47, 48, 584, 623, 39, 625, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 638, 38, 37, 64, 642, 29, 583, 583, 1115, 32,
+ 33, 34, 35, 36, 939, 242, 1123, 939, 656, 954,
+ 46, 1128, 119, 250, 1131, 252, 123, 940, 1135, 44,
+ 582, 258, 582, 30, 261, 262, 263, 264, 265, 583,
+ 953, 268, 269, 81, 22, 22, 1153, 584, 236, 237,
+ 238, 31, 967, 48, 47, 49, 971, 992, 993, 994,
+ 23, 583, 23, 104, 105, 106, 107, 942, 983, 110,
+ 111, 984, 113, 584, 1009, 1010, 584, 1012, 1013, 1014,
+ 1015, 1016, 1017, 1018, 67, 583, 69, 70, 71, 72,
+ 73, 74, 75, 76, 282, 970, 284, 285, 286, 287,
+ 288, 289, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 283, 1171, 583, 583, 583, 0,
+ 0, 290, 291, 292, 293, 294, 295, 296, 297, 1366,
+ 1065, 1066, 1067, 1608, 1512, 1472, 119, 1050, 1051, 1288,
+ 123, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 534, 535, 1466, 1535, 1261, 1535, 1561, 1578, 1595, 1266,
+ 1267, 1076, 244, 414, 863, 1080, 1101, 1102, 1103, 1084,
+ 619, 869, 1087, 243, 244, 258, 246, 1052, 248, 249,
+ 269, 251, 462, 457, 1119, 457, 1121, 1122, 1113, 457,
+ 1125, 1113, 293, 969, 799, 835, 266, 953, 778, 379,
+ 270, 554, 1137, 1138, 802, -1, 276, 277, 278, 279,
+ 280, 803, 1084, 1088, 67, -1, 69, 70, 71, 72,
+ 73, 74, 75, 76, -1, -1, 864, -1, -1, 326,
+ -1, 869, -1, -1, -1, 873, 67, 68, 876, -1,
+ 878, 72, 73, 74, 75, 76, -1, -1, -1, -1,
+ 888, 67, 68, 1188, 1189, 1190, 72, 73, 74, 75,
+ 76, -1, -1, -1, 1179, 1180, 121, -1, -1, 1184,
+ 515, 516, 517, 518, 519, 520, -1, 1192, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, -1,
+ -1, -1, 1217, 1238, 1239, 1240, 1241, 515, 516, 517,
+ 518, 519, 520, -1, 1229, -1, -1, -1, 1233, -1,
+ 1235, 1236, 1237, 53, 54, 55, 56, 57, 58, 59,
+ 60, 1246, -1, -1, 1517, 1590, 1591, 1592, 1593, 1594,
+ -1, -1, 1517, 326, -1, -1, -1, -1, 1517, 1542,
+ 1517, -1, 1535, 1517, -1, -1, 1269, 1270, 1539, 1566,
+ 1535, -1, 1284, 1285, -1, -1, 1535, 1538, 1535, 967,
+ 1542, 1535, -1, 971, 527, 528, 529, 530, 531, 532,
+ 533, 534, 535, -1, -1, 983, 1301, 1302, 1303, 1304,
+ -1, -1, -1, -1, 1309, 1310, 1311, -1, 1036, -1,
+ -1, -1, -1, -1, -1, -1, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ -1, 1336, -1, -1, -1, 104, 105, 106, 107, 1344,
+ 1365, 110, 111, -1, 113, -1, -1, -1, -1, -1,
+ 119, -1, -1, -1, 123, 1370, 1371, -1, 1370, 1371,
+ -1, -1, -1, -1, -1, -1, -1, 1392, -1, -1,
+ -1, 1376, 1377, -1, -1, 1380, -1, -1, -1, -1,
+ 1385, 1386, -1, -1, 1389, -1, -1, -1, 1076, -1,
+ -1, -1, 1080, -1, -1, -1, 1084, -1, -1, 1087,
+ 1405, -1, 1407, 1408, 1409, 1410, -1, -1, 1413, 491,
+ 492, 493, 494, 495, 496, 497, 498, -1, 1443, 491,
+ 492, 493, 494, 495, 496, 497, 498, -1, -1, 1434,
+ 1435, 1436, 1437, -1, -1, -1, 1461, -1, -1, -1,
+ -1, -1, -1, -1, 1469, 1470, 1471, -1, -1, -1,
+ 1455, 1456, 491, 492, 493, 494, 495, 496, 497, 498,
+ -1, 1486, 1487, 1488, 491, 492, 493, 494, 495, 496,
+ 497, 498, -1, -1, 1479, 491, 492, 493, 494, 495,
+ 496, 497, 498, 1508, -1, -1, -1, -1, -1, -1,
+ -1, 1179, 1180, -1, -1, -1, 1184, -1, -1, -1,
+ -1, 1506, -1, -1, 1192, 1530, 1509, -1, -1, 1534,
+ 491, 492, 493, 494, 495, 496, 497, 498, -1, -1,
+ 1525, 1526, -1, -1, -1, -1, -1, -1, -1, 1217,
+ -1, -1, -1, -1, -1, -1, -1, 1562, -1, 1544,
+ -1, 1229, -1, -1, 1569, 1233, -1, 1235, 1236, 1237,
+ -1, -1, -1, -1, -1, 1580, -1, 326, 1246, -1,
+ -1, -1, 1587, 12, 13, 14, 15, 16, 17, 18,
+ 19, -1, -1, -1, -1, -1, -1, -1, 1581, -1,
+ -1, -1, -1, -1, -1, 1610, 1589, 1590, 1591, 1592,
+ 1593, 1594, 1595, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 1608, -1, -1, -1, -1,
+ -1, -1, -1, 1301, 1302, 1303, 1304, 1620, 1621, -1,
+ -1, 1309, 1310, 1311, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, -1, -1, -1, 1336, -1,
+ -1, -1, -1, -1, -1, -1, 1344, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, -1, -1, -1, -1, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, -1, 1376, 1377,
+ -1, -1, 1380, -1, -1, -1, -1, 1385, 1386, -1,
+ -1, 1389, -1, -1, -1, -1, -1, -1, -1, 119,
+ -1, 0, -1, 123, -1, -1, -1, 1405, -1, 1407,
+ 1408, 1409, 1410, -1, -1, 1413, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 505, 506, 507, 508,
+ 509, -1, -1, -1, 513, 514, 1434, 1435, 1436, 1437,
+ -1, -1, 41, -1, -1, -1, 525, 526, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1455, 1456, -1,
+ -1, -1, -1, 62, 63, -1, -1, 66, 67, -1,
+ 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
+ -1, 1479, -1, 82, 83, -1, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, 101, 102, -1, -1, -1, -1, 1506, 108,
+ 109, -1, -1, 112, -1, -1, -1, -1, -1, -1,
+ 119, -1, -1, -1, 123, -1, -1, 1525, 1526, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1544, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 162, 163, -1, 165, 166, 167, -1,
+ -1, -1, -1, -1, -1, -1, 175, -1, -1, -1,
+ -1, 180, -1, 182, 183, 184, -1, -1, -1, 188,
+ 189, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 202, -1, -1, 326, -1, -1, -1,
+ -1, 210, -1, 212, 213, -1, -1, 216, 217, -1,
+ -1, -1, -1, -1, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 236, 237, 238,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, -1,
+ 268, 269, 270, -1, -1, -1, 274, 275, 276, 277,
+ 278, 279, 280, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, -1, -1, -1, -1, 306, -1, -1,
+ -1, 310, -1, -1, 313, 314, -1, -1, -1, -1,
+ -1, 320, 3, -1, -1, -1, -1, 326, 327, 328,
+ 11, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 349, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 42, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 52, -1, -1, -1, -1, -1, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 121, -1, -1, -1, -1, -1, -1, 80,
+ -1, -1, -1, 84, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, 117, 118, 41, 120,
+ -1, 122, -1, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, -1, 66, -1, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, -1, -1, -1, 158, -1, 160,
+ 161, -1, -1, 164, -1, -1, -1, 168, 169, 170,
+ -1, 172, 173, 174, -1, -1, 177, -1, -1, -1,
+ 181, -1, -1, -1, 185, 186, 187, -1, -1, 190,
+ -1, -1, -1, -1, -1, -1, -1, -1, 199, 200,
+ 201, -1, -1, 121, -1, -1, -1, -1, 209, -1,
+ 211, -1, -1, 214, 215, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, -1, -1, 239, 240,
+ -1, -1, -1, -1, 582, -1, -1, -1, -1, -1,
+ -1, -1, 175, -1, -1, -1, -1, 180, 577, 182,
+ 183, 184, -1, -1, 583, 188, 189, -1, -1, -1,
+ 589, -1, 591, 592, -1, -1, -1, -1, -1, 202,
+ -1, -1, -1, -1, -1, 203, -1, 210, -1, 212,
+ -1, -1, -1, 216, 217, -1, -1, 346, 347, -1,
+ -1, 302, 303, 304, 305, -1, 307, 308, 309, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 321, 322, -1, -1, 325, -1, -1, -1, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
+ 361, 3, -1, -1, -1, 366, 367, -1, -1, 11,
+ -1, -1, -1, -1, -1, 298, 299, 300, 301, -1,
+ -1, -1, -1, 306, -1, -1, -1, 310, -1, -1,
+ 313, 314, -1, 311, -1, -1, -1, 320, -1, -1,
+ 42, -1, -1, -1, 327, 328, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, -1, -1, -1, -1, 61,
+ -1, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, -1, 350, 351, 352, 353, -1, -1, 80, -1,
+ -1, -1, 84, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 454, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, -1, -1, 116, 117, 118, 41, 120, -1,
+ 122, -1, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, -1, -1, -1, 61, -1, -1,
+ -1, -1, 66, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 158, -1, 160, 161,
+ -1, -1, 164, -1, -1, -1, 168, 169, 170, -1,
+ 172, 173, 174, -1, -1, 177, -1, -1, -1, 181,
+ -1, -1, -1, 185, 186, 187, -1, -1, 190, -1,
+ -1, -1, -1, -1, -1, -1, -1, 199, 200, 201,
+ -1, -1, -1, -1, -1, -1, -1, 209, -1, 211,
+ -1, -1, 214, 215, -1, -1, -1, -1, -1, -1,
+ -1, 582, -1, 584, 585, 586, 587, 588, 589, -1,
+ 591, 592, -1, -1, -1, -1, -1, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 175, -1, -1, -1, -1, 180, -1, 182, 183,
+ 184, -1, -1, -1, 188, 189, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 202, -1,
+ -1, -1, -1, -1, -1, -1, 210, -1, 212, -1,
+ -1, -1, 216, 217, -1, -1, -1, -1, -1, 582,
+ 302, 303, 304, 305, -1, 307, 308, 309, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 321,
+ 322, -1, -1, 325, -1, -1, -1, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 3, -1, -1, -1, 366, 367, -1, -1, 11, -1,
+ -1, -1, -1, -1, 298, 299, 300, 301, -1, -1,
+ -1, -1, 306, -1, -1, -1, 310, -1, -1, 313,
+ 314, -1, -1, -1, -1, -1, 320, -1, -1, 42,
+ -1, -1, -1, 327, 328, -1, -1, -1, -1, 52,
+ -1, -1, -1, -1, -1, -1, -1, -1, 61, 82,
+ 83, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
+ -1, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 454, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, -1, -1, 116, 117, 118, -1, 120, -1, 122,
+ -1, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 162,
+ 163, -1, 165, 166, 167, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 158, -1, 160, 161, -1,
+ -1, 164, -1, -1, -1, 168, 169, 170, -1, 172,
+ 173, 174, -1, -1, 177, -1, -1, -1, 181, -1,
+ -1, -1, 185, 186, 187, -1, -1, 190, -1, -1,
+ 213, -1, -1, -1, -1, -1, 199, 200, 201, -1,
+ -1, -1, -1, -1, -1, -1, 209, -1, 211, -1,
+ -1, 214, 215, 236, 237, 238, -1, -1, -1, -1,
+ 582, -1, 584, 585, 586, 587, 588, 589, -1, 591,
+ 592, -1, -1, -1, -1, -1, 239, 240, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 302,
+ 303, 304, 305, -1, 307, 308, 309, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 321, 322,
+ -1, -1, 325, -1, -1, -1, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 354, 355, 356, 357, 358, 359, 360, 361, 3,
+ -1, -1, -1, 366, 367, -1, -1, 11, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 42, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, -1, -1, -1, -1, 61, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 80, -1, -1, -1,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 454, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ -1, -1, 116, 117, 118, -1, 120, -1, 122, -1,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 158, -1, 160, 161, -1, -1,
+ 164, -1, -1, -1, 168, 169, 170, -1, 172, 173,
+ 174, -1, -1, 177, -1, -1, -1, 181, -1, -1,
+ -1, 185, 186, 187, -1, -1, 190, -1, -1, -1,
+ -1, -1, -1, -1, -1, 199, 200, 201, -1, -1,
+ -1, -1, -1, -1, -1, 209, -1, 211, -1, -1,
+ 214, 215, -1, -1, -1, -1, -1, -1, -1, 582,
+ -1, 584, 585, 586, 587, 588, 589, -1, 591, 592,
+ -1, -1, -1, -1, -1, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 302, 303,
+ 304, 305, -1, 307, 308, 309, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 321, 322, -1,
+ -1, 325, -1, -1, -1, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 3, -1,
+ -1, -1, 366, 367, -1, -1, 11, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 52, -1, -1,
+ -1, -1, -1, -1, -1, -1, 61, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 80, -1, -1, -1, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 454, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, -1,
+ -1, 116, 117, 118, -1, 120, -1, 122, -1, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 158, -1, 160, 161, -1, -1, 164,
+ -1, -1, -1, 168, 169, 170, -1, 172, 173, 174,
+ -1, -1, 177, -1, -1, -1, 181, -1, -1, -1,
+ 185, 186, 187, -1, -1, 190, -1, -1, -1, -1,
+ -1, -1, -1, -1, 199, 200, 201, -1, -1, -1,
+ -1, -1, -1, -1, 209, -1, 211, -1, -1, 214,
+ 215, -1, -1, -1, -1, -1, -1, -1, 582, -1,
+ 584, 585, 586, 587, 588, 589, -1, 591, 592, -1,
+ -1, -1, -1, -1, 239, 240, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 302, 303, 304,
+ 305, -1, 307, 308, 309, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 321, 322, -1, -1,
+ 325, -1, -1, -1, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, 361, 3, -1, -1,
+ -1, 366, 367, -1, -1, 11, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 42, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, -1, -1, -1, -1, 61, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, -1, -1, 84, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 454,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, -1, -1,
+ 116, 117, 118, -1, 120, -1, 122, -1, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 158, -1, 160, 161, -1, -1, 164, -1,
+ -1, -1, 168, 169, 170, -1, 172, 173, 174, -1,
+ -1, 177, -1, -1, -1, 181, -1, -1, -1, 185,
+ 186, 187, -1, -1, 190, -1, -1, -1, -1, -1,
+ -1, -1, -1, 199, 200, 201, -1, -1, -1, -1,
+ -1, -1, -1, 209, -1, 211, -1, -1, 214, 215,
+ -1, -1, -1, -1, -1, -1, -1, 582, -1, 584,
+ 585, 586, 587, 588, 589, -1, 591, 592, -1, -1,
+ -1, -1, -1, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 302, 303, 304, 305,
+ -1, 307, 308, 309, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 321, 322, -1, -1, 325,
+ -1, -1, -1, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 3, -1, -1, -1,
+ 366, 367, -1, -1, 11, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 42, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 52, -1, -1, -1, -1,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 80, -1, -1, -1, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 454, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, -1, -1, 116,
+ 117, 118, -1, 120, -1, 122, -1, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 158, -1, 160, 161, -1, -1, 164, -1, -1,
+ -1, 168, 169, 170, -1, 172, 173, 174, -1, -1,
+ 177, -1, -1, -1, 181, -1, -1, -1, 185, 186,
+ 187, -1, -1, 190, -1, -1, -1, -1, -1, -1,
+ -1, -1, 199, 200, 201, -1, -1, -1, -1, -1,
+ -1, -1, 209, -1, 211, -1, -1, 214, 215, -1,
+ -1, -1, -1, -1, -1, -1, 582, -1, 584, 585,
+ 586, 587, 588, 589, -1, 591, 592, -1, -1, -1,
+ -1, -1, 239, 240, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 302, 303, 304, 305, -1,
+ 307, 308, 309, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 321, 322, -1, -1, 325, -1,
+ -1, -1, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, 356,
+ 357, 358, 359, 360, 361, 3, -1, -1, -1, 366,
+ 367, -1, -1, 11, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 42, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, -1,
+ -1, -1, -1, 61, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 80, -1, -1, -1, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 454, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, -1, -1, 116, 117,
+ 118, -1, 120, -1, 122, -1, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 158, -1, 160, 161, -1, -1, 164, -1, -1, -1,
+ 168, 169, 170, -1, 172, 173, 174, -1, -1, 177,
+ -1, -1, -1, 181, -1, -1, -1, 185, 186, 187,
+ -1, -1, 190, -1, -1, -1, -1, -1, -1, -1,
+ -1, 199, 200, 201, -1, -1, -1, -1, -1, -1,
+ -1, 209, -1, 211, -1, -1, 214, 215, -1, -1,
+ -1, -1, -1, -1, -1, 582, -1, 584, 585, 586,
+ 587, 588, 589, -1, 591, 592, -1, -1, -1, -1,
+ -1, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 302, 303, 304, 305, -1, 307,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 321, 322, -1, -1, 325, -1, -1,
+ -1, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 3, -1, -1, -1, 366, 367,
+ -1, -1, 11, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 42, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 52, -1, -1, -1, -1, -1, -1,
+ -1, -1, 61, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 80, -1, -1, -1, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 454, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, -1, -1, 116, 117, 118,
+ -1, 120, -1, 122, -1, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 158,
+ -1, 160, 161, -1, -1, 164, -1, -1, -1, 168,
+ 169, 170, -1, 172, 173, 174, -1, -1, 177, -1,
+ -1, -1, 181, -1, -1, -1, 185, 186, 187, -1,
+ -1, 190, -1, -1, -1, -1, -1, -1, -1, -1,
+ 199, 200, 201, -1, -1, -1, -1, -1, -1, -1,
+ 209, -1, 211, -1, -1, 214, 215, -1, -1, -1,
+ -1, -1, -1, -1, 582, -1, 584, 585, 586, 587,
+ 588, 589, -1, 591, 592, -1, -1, -1, -1, -1,
+ 239, 240, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 302, 303, 304, 305, -1, 307, 308,
+ 309, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 321, 322, -1, -1, 325, -1, -1, -1,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 354, 355, 356, 357, 358,
+ 359, 360, 361, 3, -1, -1, -1, 366, 367, -1,
+ -1, 11, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 42, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, -1, -1, -1,
+ -1, 61, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 80, -1, -1, -1, 84, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 454, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, -1, -1, 116, 117, 118, -1,
+ 120, -1, 122, -1, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 158, -1,
+ 160, 161, -1, -1, 164, -1, -1, -1, 168, 169,
+ 170, -1, 172, 173, 174, -1, -1, 177, -1, -1,
+ -1, 181, -1, -1, -1, 185, 186, 187, -1, -1,
+ 190, -1, -1, -1, -1, -1, -1, -1, -1, 199,
+ 200, 201, -1, -1, -1, -1, -1, -1, -1, 209,
+ -1, 211, -1, -1, 214, 215, -1, -1, -1, -1,
+ -1, -1, -1, 582, -1, 584, 585, 586, 587, 588,
+ 121, -1, 591, 592, -1, -1, -1, -1, -1, 239,
+ 240, -1, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 302, 303, 304, 305, -1, 307, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 321, 322, -1, -1, 325, -1, -1, -1, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 3, -1, -1, -1, 366, 367, -1, -1,
+ 11, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 42, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 52, -1, -1, -1, -1, -1, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
+ -1, -1, -1, 84, -1, -1, -1, -1, 339, 340,
+ 341, 342, 343, 344, 454, 346, 347, 348, -1, -1,
+ -1, -1, 353, -1, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, -1, -1, 116, 117, 118, -1, 120,
+ -1, 122, -1, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 158, -1, 160,
+ 161, -1, -1, 164, -1, -1, -1, 168, 169, 170,
+ -1, 172, 173, 174, -1, -1, 177, -1, -1, -1,
+ 181, -1, -1, -1, 185, 186, 187, -1, -1, 190,
+ -1, -1, -1, -1, -1, -1, -1, -1, 199, 200,
+ 201, -1, -1, -1, -1, -1, -1, -1, 209, -1,
+ 211, -1, -1, 214, 215, -1, -1, -1, -1, -1,
+ -1, -1, 582, -1, 584, 585, 586, 587, 588, -1,
+ -1, 591, 592, -1, -1, -1, -1, -1, 239, 240,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 302, 303, 304, 305, -1, 307, 308, 309, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 321, 322, -1, -1, 325, -1, -1, -1, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
+ 361, 3, -1, -1, -1, 366, 367, -1, -1, 11,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 42, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, -1, -1, -1, -1, 61,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 80, -1,
+ -1, -1, 84, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 454, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, -1, -1, 116, 117, 118, -1, 120, -1,
+ 122, -1, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 158, -1, 160, 161,
+ -1, -1, 164, -1, -1, -1, 168, 169, 170, -1,
+ 172, 173, 174, -1, -1, 177, -1, -1, -1, 181,
+ -1, -1, -1, 185, 186, 187, -1, -1, 190, -1,
+ -1, -1, -1, -1, -1, -1, -1, 199, 200, 201,
+ -1, -1, -1, -1, -1, -1, -1, 209, -1, 211,
+ -1, -1, 214, 215, -1, -1, -1, -1, -1, -1,
+ -1, 582, -1, 584, 585, 586, 587, 588, -1, -1,
+ 591, 592, -1, -1, -1, -1, -1, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 302, 303, 304, 305, -1, 307, 308, 309, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 321,
+ 322, -1, -1, 325, -1, -1, -1, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 3, -1, -1, -1, 366, 367, -1, -1, 11, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 42,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
+ -1, -1, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
+ -1, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 454, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, -1, -1, 116, 117, 118, -1, 120, -1, 122,
+ -1, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 158, -1, 160, 161, -1,
+ -1, 164, -1, -1, -1, 168, 169, 170, -1, 172,
+ 173, 174, -1, -1, 177, -1, -1, -1, 181, -1,
+ -1, -1, 185, 186, 187, -1, -1, 190, -1, -1,
+ -1, -1, -1, -1, -1, -1, 199, 200, 201, -1,
+ -1, -1, -1, -1, -1, -1, 209, -1, 211, -1,
+ -1, 214, 215, -1, -1, -1, -1, -1, -1, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, 591,
+ 592, -1, -1, -1, -1, -1, 239, 240, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 302,
+ 303, 304, 305, -1, 307, 308, 309, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 321, 322,
+ -1, -1, 325, -1, -1, -1, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 354, 355, 356, 357, 358, 359, 360, 361, 3,
+ -1, -1, -1, 366, 367, -1, -1, 11, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 42, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, -1, -1, -1, -1, 61, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 80, -1, -1, -1,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 454, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ -1, -1, 116, 117, 118, -1, 120, -1, 122, -1,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 158, -1, 160, 161, -1, -1,
+ 164, -1, -1, -1, 168, 169, 170, -1, 172, 173,
+ 174, -1, -1, 177, -1, -1, -1, 181, -1, -1,
+ -1, 185, 186, 187, -1, -1, 190, -1, -1, -1,
+ -1, -1, -1, -1, -1, 199, 200, 201, -1, -1,
+ -1, -1, -1, -1, -1, 209, -1, 211, -1, -1,
+ 214, 215, -1, -1, 577, -1, -1, -1, -1, 582,
+ -1, 584, 585, 586, 587, 588, -1, -1, 591, -1,
+ -1, -1, -1, -1, -1, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 302, 303,
+ 304, 305, -1, 307, 308, 309, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 321, 322, -1,
+ -1, 325, -1, -1, -1, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 3, -1,
+ -1, -1, 366, 367, -1, -1, 11, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 52, -1, -1,
+ -1, -1, -1, -1, -1, -1, 61, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 80, -1, -1, -1, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 454, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, -1,
+ -1, 116, 117, 118, -1, 120, -1, 122, -1, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 158, -1, 160, 161, -1, -1, 164,
+ -1, -1, -1, 168, 169, 170, -1, 172, 173, 174,
+ -1, -1, 177, -1, -1, -1, 181, -1, -1, -1,
+ 185, 186, 187, -1, -1, 190, -1, -1, -1, -1,
+ -1, -1, -1, -1, 199, 200, 201, -1, -1, -1,
+ -1, -1, -1, -1, 209, -1, 211, -1, -1, 214,
+ 215, -1, -1, -1, -1, -1, -1, -1, 582, -1,
+ 584, 585, 586, 587, 588, 589, -1, 591, -1, -1,
+ -1, -1, -1, -1, 239, 240, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 302, 303, 304,
+ 305, -1, 307, 308, 309, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 321, 322, -1, -1,
+ 325, -1, -1, -1, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, 361, 3, -1, -1,
+ -1, 366, 367, -1, -1, 11, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 42, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, -1, -1, -1, -1, 61, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, -1, -1, 84, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 454,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, -1, -1,
+ 116, 117, 118, -1, 120, -1, 122, -1, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 158, -1, 160, 161, -1, -1, 164, -1,
+ -1, -1, 168, 169, 170, -1, 172, 173, 174, -1,
+ -1, 177, -1, -1, -1, 181, -1, -1, -1, 185,
+ 186, 187, -1, -1, 190, -1, -1, -1, -1, -1,
+ -1, -1, -1, 199, 200, 201, -1, -1, -1, -1,
+ -1, -1, -1, 209, -1, 211, -1, -1, 214, 215,
+ -1, -1, -1, -1, -1, -1, -1, 582, -1, 584,
+ 585, 586, 587, 588, 589, -1, 591, -1, -1, -1,
+ -1, -1, -1, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 302, 303, 304, 305,
+ -1, 307, 308, 309, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 321, 322, -1, -1, 325,
+ -1, -1, -1, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 3, -1, -1, -1,
+ 366, 367, -1, -1, 11, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 42, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 52, -1, -1, -1, -1,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 80, -1, -1, -1, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 454, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, -1, -1, 116,
+ 117, 118, -1, 120, -1, 122, -1, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 158, -1, 160, 161, -1, -1, 164, -1, -1,
+ -1, 168, 169, 170, -1, 172, 173, 174, -1, -1,
+ 177, -1, -1, -1, 181, -1, -1, -1, 185, 186,
+ 187, -1, -1, 190, -1, -1, -1, -1, -1, -1,
+ -1, -1, 199, 200, 201, -1, -1, -1, -1, -1,
+ -1, -1, 209, -1, 211, -1, -1, 214, 215, -1,
+ -1, -1, -1, -1, -1, -1, 582, -1, 584, 585,
+ 586, 587, 588, 589, -1, 591, -1, -1, -1, -1,
+ -1, -1, 239, 240, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 302, 303, 304, 305, -1,
+ 307, 308, 309, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 321, 322, -1, -1, 325, -1,
+ -1, -1, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, 356,
+ 357, 358, 359, 360, 361, 3, -1, -1, -1, 366,
+ 367, -1, -1, 11, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 42, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, -1,
+ -1, -1, -1, 61, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 80, -1, -1, -1, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 454, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, -1, -1, 116, 117,
+ 118, -1, 120, -1, 122, -1, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 158, -1, 160, 161, -1, -1, 164, -1, -1, -1,
+ 168, 169, 170, -1, 172, 173, 174, -1, -1, 177,
+ -1, -1, -1, 181, -1, -1, -1, 185, 186, 187,
+ -1, -1, 190, -1, -1, -1, -1, -1, -1, -1,
+ -1, 199, 200, 201, -1, -1, -1, -1, -1, -1,
+ -1, 209, -1, 211, -1, -1, 214, 215, -1, -1,
+ -1, -1, -1, -1, -1, 582, -1, 584, 585, 586,
+ 587, 588, 589, -1, 591, -1, -1, -1, -1, -1,
+ -1, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 302, 303, 304, 305, -1, 307,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 321, 322, -1, -1, 325, -1, -1,
+ -1, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 3, -1, -1, -1, 366, 367,
+ -1, -1, 11, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 42, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 52, -1, -1, -1, -1, -1, -1,
+ -1, -1, 61, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 80, -1, -1, -1, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 454, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, -1, -1, 116, 117, 118,
+ -1, 120, -1, 122, -1, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 158,
+ -1, 160, 161, -1, -1, 164, -1, -1, -1, 168,
+ 169, 170, -1, 172, 173, 174, -1, -1, 177, -1,
+ -1, -1, 181, -1, -1, -1, 185, 186, 187, -1,
+ -1, 190, -1, -1, -1, -1, -1, -1, -1, -1,
+ 199, 200, 201, -1, -1, -1, -1, -1, -1, -1,
+ 209, -1, 211, -1, -1, 214, 215, -1, -1, -1,
+ -1, -1, -1, -1, 582, -1, 584, 585, 586, 587,
+ 588, 589, -1, 591, -1, -1, -1, -1, -1, -1,
+ 239, 240, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 302, 303, 304, 305, -1, 307, 308,
+ 309, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 321, 322, -1, -1, 325, -1, -1, -1,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 354, 355, 356, 357, 358,
+ 359, 360, 361, 3, -1, -1, -1, 366, 367, -1,
+ -1, 11, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 42, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, -1, -1, -1,
+ -1, 61, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 80, -1, -1, -1, 84, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 454, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, -1, -1, 116, 117, 118, -1,
+ 120, -1, 122, -1, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 158, -1,
+ 160, 161, -1, -1, 164, -1, -1, -1, 168, 169,
+ 170, -1, 172, 173, 174, -1, -1, 177, -1, -1,
+ -1, 181, -1, -1, -1, 185, 186, 187, -1, -1,
+ 190, -1, -1, -1, -1, -1, -1, -1, -1, 199,
+ 200, 201, -1, -1, -1, -1, -1, -1, -1, 209,
+ -1, 211, -1, -1, 214, 215, -1, -1, -1, -1,
+ -1, -1, -1, 582, -1, 584, 585, 586, 587, 588,
+ 589, -1, 591, -1, -1, -1, -1, -1, -1, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 302, 303, 304, 305, -1, 307, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 321, 322, -1, -1, 325, -1, -1, -1, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 3, -1, -1, -1, 366, 367, -1, -1,
+ 11, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 42, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 52, -1, -1, -1, -1, -1, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
+ -1, -1, -1, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 454, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, -1, -1, 116, 117, 118, -1, 120,
+ -1, 122, -1, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 158, -1, 160,
+ 161, -1, -1, 164, -1, -1, -1, 168, 169, 170,
+ -1, 172, 173, 174, -1, -1, 177, -1, -1, -1,
+ 181, -1, -1, -1, 185, 186, 187, -1, -1, 190,
+ -1, -1, -1, -1, -1, -1, -1, -1, 199, 200,
+ 201, -1, -1, -1, -1, -1, -1, -1, 209, -1,
+ 211, -1, -1, 214, 215, -1, -1, -1, -1, -1,
+ -1, -1, 582, -1, 584, 585, 586, 587, 588, 589,
+ -1, 591, -1, -1, -1, -1, -1, -1, 239, 240,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 302, 303, 304, 305, -1, 307, 308, 309, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 321, 322, -1, -1, 325, -1, -1, -1, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
+ 361, 3, -1, -1, -1, 366, 367, -1, -1, 11,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 42, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, -1, -1, -1, -1, 61,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 80, -1,
+ -1, -1, 84, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 454, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, -1, -1, 116, 117, 118, -1, 120, -1,
+ 122, -1, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 158, -1, 160, 161,
+ -1, -1, 164, -1, -1, -1, 168, 169, 170, -1,
+ 172, 173, 174, -1, -1, 177, -1, -1, -1, 181,
+ -1, -1, -1, 185, 186, 187, -1, -1, 190, -1,
+ -1, -1, -1, -1, -1, -1, -1, 199, 200, 201,
+ -1, -1, -1, -1, -1, -1, -1, 209, -1, 211,
+ -1, -1, 214, 215, -1, -1, -1, -1, -1, -1,
+ -1, 582, -1, 584, 585, 586, 587, 588, 589, -1,
+ 591, -1, -1, -1, -1, -1, -1, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 302, 303, 304, 305, -1, 307, 308, 309, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 321,
+ 322, -1, -1, 325, -1, -1, -1, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 3, -1, -1, -1, 366, 367, -1, -1, 11, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 42,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
+ -1, -1, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
+ -1, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 454, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, -1, -1, 116, 117, 118, -1, 120, -1, 122,
+ -1, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 158, -1, 160, 161, -1,
+ -1, 164, -1, -1, -1, 168, 169, 170, -1, 172,
+ 173, 174, -1, -1, 177, -1, -1, -1, 181, -1,
+ -1, -1, 185, 186, 187, -1, -1, 190, -1, -1,
+ -1, -1, -1, -1, -1, -1, 199, 200, 201, -1,
+ -1, -1, -1, -1, -1, -1, 209, -1, 211, -1,
+ -1, 214, 215, -1, -1, -1, -1, -1, -1, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, 591,
+ -1, -1, -1, -1, -1, -1, 239, 240, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 302,
+ 303, 304, 305, -1, 307, 308, 309, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 321, 322,
+ -1, -1, 325, -1, -1, -1, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 203, -1, -1, -1, -1,
+ 3, -1, -1, -1, -1, -1, -1, -1, 11, -1,
+ -1, 354, 355, 356, 357, 358, 359, 360, 361, 22,
+ -1, -1, -1, 366, 367, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 41, 42,
+ 43, -1, -1, -1, -1, -1, -1, -1, -1, 52,
+ -1, -1, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, -1, 66, 67, -1, 69, 70, 71, 72,
+ 73, 74, 75, 76, -1, -1, -1, 80, -1, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ -1, -1, -1, 311, -1, 108, 109, -1, -1, 112,
+ -1, 454, -1, 116, 117, 118, 119, 120, -1, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ -1, 339, 340, 341, 342, 343, 344, -1, 346, 347,
+ 348, -1, 350, 351, 352, 353, -1, -1, -1, -1,
+ -1, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ -1, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, -1, 582,
+ -1, 584, 585, 586, 587, 588, -1, -1, 591, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 267, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, -1, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 349, -1, -1, -1,
+ -1, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, -1, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 447, 448, 449, -1, 451, 452,
+ 453, 454, 455, -1, -1, -1, -1, -1, -1, -1,
+ 463, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 499, -1, 501, 502,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 521, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ -1, -1, -1, -1, -1, -1, -1, 11, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, 42, 43,
+ -1, -1, -1, -1, -1, 578, 579, 580, 52, 582,
+ -1, 584, 585, 586, 587, 588, -1, 61, 62, 63,
+ -1, -1, 66, 67, -1, 69, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, -1, 80, -1, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, -1,
+ -1, -1, -1, -1, 108, 109, -1, -1, 112, -1,
+ -1, -1, 116, 117, 118, 119, 120, -1, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, -1,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, -1, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, -1, -1, -1, -1, -1, -1, -1, 11,
+ 454, 455, -1, -1, -1, -1, -1, -1, -1, 463,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
+ 42, 43, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, 499, -1, 501, 502, 61,
+ 62, 63, -1, -1, 66, 67, -1, 69, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, 521, 80, -1,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, -1, -1, -1, -1, -1, 108, 109, -1, -1,
+ 112, -1, -1, -1, 116, 117, 118, 119, 120, -1,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, 578, 579, 580, -1, 582, -1,
+ 584, 585, 586, 587, 588, -1, -1, -1, -1, -1,
+ -1, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, -1, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 267, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, -1,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, -1, -1,
+ -1, 11, 454, 455, -1, -1, -1, -1, -1, -1,
+ -1, 463, 22, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, 499, -1, 501,
+ 502, 61, -1, -1, -1, -1, 66, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, 521,
+ 80, -1, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, -1, -1, -1, -1, -1, 108, 109,
+ -1, -1, 112, -1, -1, -1, 116, 117, 118, 119,
+ 120, -1, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, 578, 579, 580, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, -1,
+ -1, -1, -1, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, -1, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 267, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, -1, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 349,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, -1, -1, -1, -1,
+ -1, -1, -1, 11, 454, 455, -1, -1, -1, -1,
+ -1, -1, -1, 463, 22, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 41, 42, 43, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, 499,
+ -1, 501, 502, 61, -1, -1, -1, -1, 66, 67,
+ -1, 69, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, 521, 80, -1, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, -1, -1, -1, -1, -1,
+ 108, 109, -1, -1, 112, -1, -1, -1, 116, 117,
+ 118, 119, 120, -1, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, 578, 579,
+ 580, -1, 582, 583, 584, 585, 586, 587, 588, -1,
+ -1, -1, -1, -1, -1, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, -1, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, -1, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 349, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, 11, 454, 455, -1, -1,
+ -1, -1, -1, -1, -1, 463, 22, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 41, 42, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, 499, -1, 501, 502, 61, -1, -1, -1, -1,
+ 66, 67, -1, 69, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, 521, 80, -1, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, -1, -1, -1,
+ -1, -1, 108, 109, -1, -1, 112, -1, -1, -1,
+ 116, 117, 118, 119, 120, -1, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ 578, 579, 580, -1, 582, 583, 584, 585, 586, 587,
+ 588, -1, -1, -1, -1, -1, -1, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, -1, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, -1, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 349, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ -1, -1, -1, -1, -1, -1, -1, 11, 454, 455,
+ -1, -1, -1, -1, -1, -1, -1, 463, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, 42, 43,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, 499, -1, 501, 502, 61, -1, -1,
+ -1, -1, 66, 67, -1, 69, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, 521, 80, -1, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, -1,
+ -1, -1, -1, -1, 108, 109, -1, -1, 112, -1,
+ -1, -1, 116, 117, 118, 119, 120, -1, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, 578, 579, 580, -1, 582, 583, 584, 585,
+ 586, 587, 588, -1, -1, -1, -1, -1, -1, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, -1,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, -1, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 349, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, -1, -1, -1, -1, -1, -1, -1, 11,
+ 454, 455, -1, -1, -1, -1, -1, -1, -1, 463,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
+ 42, 43, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, 499, -1, 501, 502, 61,
+ -1, -1, -1, -1, 66, 67, -1, 69, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, 521, 80, -1,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, -1, -1, -1, -1, -1, 108, 109, -1, -1,
+ 112, -1, -1, -1, 116, 117, 118, 119, 120, -1,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, 578, 579, 580, -1, 582, -1,
+ 584, 585, 586, 587, 588, -1, -1, -1, -1, -1,
+ -1, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, -1, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 267, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, -1,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 349, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, -1, -1,
+ -1, 11, 454, 455, -1, -1, -1, -1, -1, -1,
+ -1, 463, 22, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, 499, -1, 501,
+ 502, 61, -1, -1, -1, -1, 66, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, 521,
+ 80, -1, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, -1, -1, -1, -1, -1, 108, 109,
+ -1, -1, 112, -1, -1, -1, 116, 117, 118, 119,
+ 120, -1, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, 578, 579, 580, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, -1,
+ -1, -1, -1, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, -1, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 267, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, -1, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 349,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, -1, -1, -1, -1,
+ -1, -1, -1, 11, 454, 455, -1, -1, -1, -1,
+ -1, -1, -1, 463, 22, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 41, 42, 43, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, 499,
+ -1, 501, 502, 61, -1, -1, -1, -1, 66, 67,
+ -1, 69, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, 521, 80, -1, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, -1, -1, -1, -1, -1,
+ 108, 109, -1, -1, 112, -1, -1, -1, 116, 117,
+ 118, 119, 120, -1, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, 578, 579,
+ 580, -1, 582, -1, 584, 585, 586, 587, 588, -1,
+ -1, -1, -1, -1, -1, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, -1, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, -1, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 349, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, 11, 454, 455, -1, -1,
+ -1, -1, -1, -1, -1, 463, 22, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 41, 42, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, 499, -1, 501, 502, 61, -1, -1, -1, -1,
+ 66, 67, -1, 69, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, 521, 80, -1, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, -1, -1, -1,
+ -1, -1, 108, 109, -1, -1, 112, -1, -1, -1,
+ 116, 117, 118, 119, 120, -1, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ 578, 579, 580, -1, 582, -1, 584, 585, 586, 587,
+ 588, -1, -1, -1, -1, -1, -1, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, -1, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, -1, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 349, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ -1, -1, -1, -1, -1, -1, -1, 11, 454, 455,
+ -1, -1, -1, -1, -1, -1, -1, 463, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, 42, 43,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, 499, -1, 501, 502, 61, -1, -1,
+ -1, -1, 66, 67, -1, 69, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, 521, 80, -1, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, -1,
+ -1, -1, -1, -1, 108, 109, -1, -1, 112, -1,
+ -1, -1, 116, 117, 118, 119, 120, -1, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, 578, 579, 580, -1, 582, -1, 584, 585,
+ 586, 587, 588, -1, -1, -1, -1, -1, -1, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, -1,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, -1, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 349, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, -1, -1, -1, -1, -1, -1, -1, 11,
+ 454, 455, -1, -1, -1, -1, -1, -1, -1, 463,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
+ 42, 43, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, 499, -1, 501, 502, 61,
+ -1, -1, -1, -1, 66, 67, -1, 69, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, 521, 80, -1,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, -1, -1, -1, -1, -1, 108, 109, -1, -1,
+ 112, -1, -1, -1, 116, 117, 118, 119, 120, -1,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, 578, 579, 580, -1, 582, -1,
+ 584, 585, 586, 587, 588, -1, -1, -1, -1, -1,
+ -1, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, -1, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 267, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, -1,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 349, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, -1, -1,
+ -1, 11, 454, 455, -1, -1, -1, -1, -1, -1,
+ -1, 463, 22, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, 499, -1, 501,
+ 502, 61, -1, -1, -1, -1, 66, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, 521,
+ 80, -1, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, -1, -1, -1, -1, -1, 108, 109,
+ -1, -1, 112, -1, -1, -1, 116, 117, 118, 119,
+ 120, -1, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, 578, 579, 580, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, -1,
+ -1, -1, -1, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, -1, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 267, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, -1, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 349,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, -1, -1, -1, -1,
+ -1, -1, -1, 11, 454, 455, -1, -1, -1, -1,
+ -1, -1, -1, 463, 22, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 41, 42, 43, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, 499,
+ -1, 501, 502, 61, -1, -1, -1, -1, 66, 67,
+ -1, 69, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, 521, 80, -1, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, -1, -1, -1, -1, -1,
+ 108, 109, -1, -1, 112, -1, -1, -1, 116, 117,
+ 118, 119, 120, -1, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, 578, 579,
+ 580, -1, 582, -1, 584, 585, 586, 587, 588, -1,
+ -1, -1, -1, -1, -1, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, -1, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, -1, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 349, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, 11, 454, 455, -1, -1,
+ -1, -1, -1, -1, -1, 463, 22, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 41, 42, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, 499, -1, 501, 502, 61, -1, -1, -1, -1,
+ 66, 67, -1, 69, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, 521, 80, -1, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, -1, -1, -1,
+ -1, -1, 108, 109, -1, -1, 112, -1, -1, -1,
+ 116, 117, 118, 119, 120, -1, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ 578, 579, 580, -1, 582, -1, 584, 585, 586, 587,
+ 588, -1, -1, -1, -1, -1, -1, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, -1, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, -1, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 349, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
+ -1, 79, 80, -1, -1, -1, -1, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, -1,
+ -1, -1, -1, -1, -1, -1, 104, 105, 106, 107,
+ -1, -1, 110, 111, -1, 113, -1, -1, -1, 3,
+ -1, 119, -1, -1, -1, 123, -1, 11, 454, 455,
+ -1, -1, -1, -1, -1, -1, -1, 463, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 42, 43,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, 499, -1, 501, 502, 61, 62, 63,
+ -1, -1, 66, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 521, 80, -1, -1, -1,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 97, 98, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 116, 117, 118, -1, 120, -1, 122, -1,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, 578, 579, 580, -1, 582, -1, 584, 585,
+ 586, 587, 588, -1, -1, -1, -1, -1, -1, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, -1, -1,
+ 164, -1, -1, -1, 168, 169, 170, 171, 172, 173,
+ 174, -1, 176, 177, 178, 179, -1, 181, -1, -1,
+ -1, 185, 186, 187, -1, -1, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, -1, -1,
+ 204, 205, 206, 207, 208, 209, -1, 211, 326, -1,
+ 214, 215, -1, -1, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, -1, -1, -1, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 302, 303,
+ 304, 305, -1, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, 318, 319, -1, 321, 322, 323,
+ 324, 325, -1, -1, -1, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 505, 506, 507,
+ 508, 509, -1, -1, -1, 513, 514, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 525, 526, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3, -1,
+ -1, -1, -1, -1, -1, -1, 11, -1, -1, -1,
+ 454, 455, -1, -1, -1, -1, -1, 22, -1, 463,
+ -1, -1, -1, -1, -1, -1, 584, 585, 586, 587,
+ 588, -1, -1, -1, -1, -1, -1, 42, 43, -1,
+ -1, -1, -1, -1, -1, -1, -1, 52, -1, -1,
+ -1, -1, -1, -1, -1, 499, 61, 501, 502, -1,
+ -1, 66, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 80, -1, 521, -1, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 97, 98, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, 117, 118, -1, 120, -1, 122, -1, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, -1, -1,
+ -1, -1, -1, -1, 578, 579, 580, -1, 582, -1,
+ 584, 585, 586, 587, 588, -1, -1, -1, -1, 154,
+ 155, 156, 157, 158, 159, 160, 161, -1, -1, 164,
+ -1, -1, -1, 168, 169, 170, 171, 172, 173, 174,
+ -1, 176, 177, 178, 179, -1, 181, -1, -1, -1,
+ 185, 186, 187, -1, -1, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, -1, -1, 204,
+ 205, 206, 207, 208, 209, -1, 211, -1, -1, 214,
+ 215, -1, -1, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, -1, -1, -1, 239, 240, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 267, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 302, 303, 304,
+ 305, -1, 307, 308, 309, -1, -1, 312, -1, -1,
+ 315, 316, 317, 318, 319, -1, 321, 322, 323, 324,
+ 325, -1, -1, -1, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 349, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, -1, -1,
+ -1, 11, -1, -1, -1, -1, -1, -1, -1, 454,
+ 455, -1, 22, -1, -1, -1, -1, -1, 463, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, -1, -1, -1,
+ -1, 61, -1, -1, 499, -1, 501, 502, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 80, -1, -1, -1, 84, -1, 521, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 97, 98, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, 117, 118, -1,
+ 120, -1, 122, -1, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 578, 579, 580, -1, 582, -1, 584,
+ 585, 586, 587, 588, 154, 155, 156, 157, 158, 159,
+ 160, 161, -1, -1, 164, -1, -1, -1, 168, 169,
+ 170, 171, 172, 173, 174, -1, 176, 177, 178, 179,
+ -1, 181, -1, -1, -1, 185, 186, 187, -1, -1,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, -1, -1, 204, 205, 206, 207, 208, 209,
+ -1, 211, -1, -1, 214, 215, -1, -1, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, -1, -1, -1, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 267, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 302, 303, 304, 305, -1, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, 318, 319,
+ -1, 321, 322, 323, 324, 325, -1, -1, -1, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,
+ 11, -1, -1, -1, 454, 455, -1, -1, -1, -1,
+ -1, 22, -1, 463, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 42, 43, -1, -1, -1, -1, -1, -1, -1,
+ -1, 52, -1, -1, -1, -1, -1, -1, -1, 499,
+ 61, 501, 502, 503, 504, 66, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
+ -1, 521, -1, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 97, 98, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, 117, 118, -1, 120,
+ -1, 122, -1, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, -1, -1, -1, -1, -1, -1, 578, 579,
+ 580, -1, 582, -1, 584, 585, 586, 587, 588, -1,
+ -1, -1, -1, 154, 155, 156, 157, 158, 159, 160,
+ 161, -1, -1, 164, -1, -1, -1, 168, 169, 170,
+ 171, 172, 173, 174, -1, 176, 177, 178, 179, -1,
+ 181, -1, -1, -1, 185, 186, 187, -1, -1, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, -1, -1, 204, 205, 206, 207, 208, 209, -1,
+ 211, -1, -1, 214, 215, -1, -1, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, -1, -1, -1, 239, 240,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 267, -1, -1, -1,
+ 271, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 302, 303, 304, 305, -1, 307, 308, 309, -1,
+ -1, 312, -1, -1, 315, 316, 317, 318, 319, -1,
+ 321, 322, 323, 324, 325, -1, -1, -1, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, 338, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, 11, -1, -1, -1, -1,
+ -1, -1, -1, 454, 455, -1, 22, -1, -1, -1,
+ -1, -1, 463, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 42, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, -1, -1, -1, -1, 61, -1, -1, 499, -1,
+ 501, 502, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, -1, -1, 84, -1,
+ 521, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 97, 98, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 116, 117, 118, -1, 120, -1, 122, -1, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 578, 579, 580,
+ -1, 582, -1, 584, 585, 586, 587, 588, 154, 155,
+ 156, 157, 158, 159, 160, 161, -1, -1, 164, -1,
+ -1, -1, 168, 169, 170, 171, 172, 173, 174, -1,
+ 176, 177, 178, 179, -1, 181, -1, -1, -1, 185,
+ 186, 187, -1, -1, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, -1, -1, 204, 205,
+ 206, 207, 208, 209, -1, 211, -1, -1, 214, 215,
+ -1, -1, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ -1, -1, -1, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 302, 303, 304, 305,
+ -1, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, 318, 319, -1, 321, 322, 323, 324, 325,
+ -1, -1, -1, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, -1, -1, -1, 11, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, -1, -1, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3, -1,
+ -1, -1, -1, -1, -1, -1, 11, -1, -1, -1,
+ -1, -1, 117, 118, -1, 120, -1, 122, 454, 455,
+ -1, -1, -1, -1, -1, -1, -1, 463, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 52, -1, -1,
+ -1, -1, -1, -1, -1, 160, 61, -1, -1, 164,
+ -1, -1, -1, 499, -1, 501, 502, -1, 173, 174,
+ -1, -1, 177, -1, -1, 80, 181, -1, -1, 84,
+ 185, 186, -1, -1, -1, 521, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 200, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 211, -1, -1, 214,
+ -1, 116, 117, 118, -1, 120, -1, 122, -1, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, -1, -1,
+ -1, -1, -1, -1, -1, 240, -1, -1, -1, -1,
+ -1, -1, 578, 579, 580, -1, 582, -1, 584, 585,
+ 586, 587, 588, 158, -1, 160, 161, -1, -1, 164,
+ -1, -1, -1, 168, 169, 170, -1, 172, 173, 174,
+ -1, -1, 177, -1, -1, -1, 181, -1, -1, -1,
+ 185, 186, 187, -1, -1, 190, -1, -1, -1, -1,
+ -1, -1, -1, -1, 199, 200, 201, -1, 303, 304,
+ 305, -1, 971, 308, 209, -1, 211, -1, -1, 214,
+ 215, -1, -1, -1, -1, -1, 321, -1, -1, -1,
+ 325, -1, -1, -1, -1, -1, -1, -1, 333, 334,
+ 335, -1, -1, -1, 239, 240, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, -1, 360, 361, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 302, 303, 304,
+ 305, -1, 307, 308, 309, -1, -1, 1076, -1, -1,
+ -1, 1080, -1, -1, -1, -1, 321, 322, 1087, -1,
+ 325, -1, -1, -1, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, -1, -1, 52, -1, -1, -1, -1,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, 361, -1, -1, -1,
+ -1, 366, 367, 80, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, -1, -1, -1, -1,
+ -1, -1, -1, 1192, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 158, -1, -1, 161, -1, -1, -1, 1217, 454,
+ -1, 168, 169, 170, -1, 172, -1, -1, -1, -1,
+ -1, -1, -1, -1, 1233, -1, 1235, 1236, -1, -1,
+ 187, -1, -1, 190, -1, -1, -1, 1246, -1, -1,
+ -1, -1, 199, -1, 201, -1, -1, -1, -1, -1,
+ -1, -1, 209, -1, -1, -1, -1, -1, 215, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 239, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1302, 1303, 1304, -1, -1, -1, -1,
+ -1, 1310, 1311, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1336, -1, -1,
+ -1, -1, -1, -1, -1, 1344, -1, 582, 583, 584,
+ 585, 586, 587, 588, -1, 302, -1, -1, -1, -1,
+ 307, -1, 309, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 322, -1, -1, 1377, -1,
+ -1, -1, 329, 330, 331, 332, 1385, 1386, -1, 336,
+ 337, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1405, -1, -1, -1,
+ -1, 1410, 359, -1, 1413, -1, -1, -1, -1, 366,
+ 367, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1435, 1436, 1437, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1456, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 1479, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 22, -1, -1, -1, -1, 454, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, -1, -1, -1, -1, -1, 1526, -1, -1,
+ -1, -1, -1, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, -1, -1, -1, 1544, -1, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, -1, 82, 83, -1, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, -1, -1, 99,
+ 100, 101, 102, -1, -1, -1, -1, -1, 108, 109,
+ -1, -1, 112, -1, -1, -1, -1, -1, -1, 119,
+ -1, -1, -1, 123, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 584, 585, 586,
+ 587, 588, 162, 163, -1, 165, 166, 167, -1, -1,
+ -1, -1, -1, -1, -1, 175, -1, -1, -1, -1,
+ 180, -1, 182, 183, 184, -1, -1, -1, 188, 189,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 202, -1, -1, -1, -1, -1, -1, -1,
+ 210, -1, 212, 213, -1, -1, 216, 217, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 236, 237, 238, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, -1, -1, -1, -1, 306, -1, -1, -1,
+ 310, -1, -1, 313, 314, -1, -1, -1, -1, -1,
+ 320, -1, 41, -1, -1, -1, 326, 327, 328, -1,
+ -1, -1, -1, -1, 53, 54, 55, 56, 57, 58,
+ 59, 60, -1, -1, -1, -1, -1, -1, 67, 349,
+ 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
+ -1, -1, -1, 82, 83, -1, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, 101, 102, -1, -1, -1, -1, -1, 108,
+ 109, -1, -1, 112, -1, -1, -1, -1, -1, -1,
+ 119, -1, -1, -1, 123, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 162, 163, -1, 165, 166, 167, -1,
+ -1, -1, -1, -1, -1, -1, 175, -1, -1, -1,
+ -1, 180, -1, 182, 183, 184, -1, -1, -1, 188,
+ 189, -1, -1, -1, -1, -1, 41, -1, -1, -1,
+ -1, -1, -1, 202, -1, -1, -1, -1, -1, -1,
+ -1, 210, -1, 212, 213, -1, 61, 216, 217, -1,
+ -1, 66, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 236, 237, 238,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 99, 100, 101, 102, -1, -1,
+ -1, -1, -1, 108, 109, -1, -1, 112, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 583, -1, -1, -1, 306, -1, -1,
+ -1, 310, -1, -1, 313, 314, -1, -1, -1, -1,
+ -1, 320, -1, -1, -1, 11, -1, 326, 327, 328,
+ 175, -1, -1, -1, -1, 180, -1, 182, 183, 184,
+ -1, -1, -1, 188, 189, -1, -1, -1, -1, -1,
+ 349, -1, -1, -1, -1, 41, 42, 202, -1, 45,
+ -1, -1, -1, -1, -1, 210, -1, 212, -1, -1,
+ -1, 216, 217, -1, -1, 61, -1, -1, -1, -1,
+ 66, 67, -1, 69, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, -1, -1, -1, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, -1, -1, 99, 100, 101, 102, -1, -1, -1,
+ -1, -1, 108, 109, -1, -1, 112, -1, -1, -1,
+ -1, 117, 118, 119, 120, -1, 122, 123, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 298, 299, 300, 301, -1, -1, -1,
+ -1, 306, -1, -1, -1, 310, -1, -1, 313, 314,
+ -1, -1, -1, -1, 160, 320, 162, 163, 164, 165,
+ 166, 167, 327, 328, -1, -1, -1, 173, 174, 175,
+ -1, 177, -1, -1, 180, 181, 182, 183, 184, 185,
+ 186, -1, 188, 189, -1, -1, -1, -1, -1, -1,
+ -1, -1, 41, -1, 200, -1, 202, -1, -1, -1,
+ -1, -1, -1, -1, 210, 211, 212, 213, 214, -1,
+ 216, 217, 61, -1, -1, -1, -1, 66, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 236, 237, 238, -1, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 99, 100, 101, 102, -1, -1, -1, -1, -1, 108,
+ 109, -1, -1, 112, 583, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, -1, 303, 304, 305,
+ 306, -1, 308, -1, 310, -1, -1, 313, 314, -1,
+ -1, -1, -1, -1, 320, 321, -1, -1, -1, 325,
+ 326, 327, 328, -1, -1, -1, 175, 333, 334, 335,
+ -1, 180, -1, 182, 183, 184, -1, -1, -1, 188,
+ 189, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 202, 360, 361, -1, -1, -1, -1,
+ -1, 210, -1, 212, -1, -1, -1, 216, 217, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 582, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 298,
+ 299, 300, 301, -1, -1, -1, -1, 306, -1, -1,
+ -1, 310, -1, -1, 313, 314, -1, -1, -1, -1,
+ -1, 320, -1, -1, -1, -1, -1, -1, 327, 328
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/local/lib/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
+
+ 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 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+#pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#define YYLEX yylex(&yylval, &yylloc)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_bcopy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_bcopy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 184 "/usr/local/lib/bison.simple"
+int
+yyparse()
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+#ifdef YYLSP_NEEDED
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yyls1, size * sizeof (*yylsp),
+ &yystacksize);
+#else
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yystacksize);
+#endif
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
+#endif
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ if (yylen > 0)
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 2:
+#line 872 "rtf.y"
+{ FLAG_DebutTeX=1;
+ fprintf(SORT,"%%\n%% This document was generated using\n%% ");
+ fprintf(SORT,"w2LaTeX\n%% Bug Reports: jgarmend@cyberspace.org\n%%\n\n");
+ fprintf(SORT,"\\documentstyle[a4,german,11pt]{article}\n");
+ /* previous line changed He.10.Jan.95 */
+ fprintf(SORT,"\n\\parindent = %d pt \n",0/*(PZ_FD.FDDEFTAB)*/);
+ fprintf(SORT,"\n\\oddsidemargin0cm\n");
+ fprintf(SORT,"\n\\evensidemargin0cm\n");
+ fprintf(SORT,"\n\\hoffset%dpt \n",(int)(-72+(PZ_FD.FDMARGL)));
+ fprintf(SORT,"\n\\textwidth%dpt \n",
+ (int)(614-(PZ_FD.FDMARGL)-(PZ_FD.FDMARGR)));
+ fprintf(SORT,"\n\\vsize=%dpt\n",(int)(644-(PZ_FD.FDMARGT)));
+ fprintf(SORT,"\n\\font\\mathex=cmex10\n");
+ fprintf(SORT,"\n\\font\\pzrm=cmr10\n");
+ fprintf(SORT,"\n\\pagestyle{myheadings}\n");
+ fprintf(SORT,"\n\\begin{document}\n");
+ /*parcoursfontes();*/
+ ;
+ break;}
+case 3:
+#line 889 "rtf.y"
+{ ifDTfprintf(SORT,"\n\\end{document}\n"); /*parcourscontexts();*/
+ FLAG_EndTeX=1;;
+ break;}
+case 22:
+#line 923 "rtf.y"
+{ ASCII_TABLE=1; ;
+ break;}
+case 23:
+#line 924 "rtf.y"
+{ ASCII_TABLE=2; ;
+ break;}
+case 27:
+#line 932 "rtf.y"
+{ yyval.numo = 1; ;
+ break;}
+case 28:
+#line 933 "rtf.y"
+{ yyval.numo = yyvsp[0].numo; ;
+ break;}
+case 29:
+#line 935 "rtf.y"
+{ yyval.numo=yyvsp[0].numo; ;
+ break;}
+case 30:
+#line 937 "rtf.y"
+{ yyval.pcdata = yyvsp[0].pcdata; ;
+ break;}
+case 31:
+#line 938 "rtf.y"
+{ yyval.pcdata = ";"; ;
+ break;}
+case 32:
+#line 939 "rtf.y"
+{ yyval.pcdata = "e"; ;
+ break;}
+case 33:
+#line 940 "rtf.y"
+{ yyval.pcdata = "q"; ;
+ break;}
+case 34:
+#line 941 "rtf.y"
+{ yyval.pcdata = " "; ;
+ break;}
+case 35:
+#line 942 "rtf.y"
+{ yyval.pcdata = " "; ;
+ break;}
+case 36:
+#line 944 "rtf.y"
+{ yyval.pcdata = yyvsp[0].pcdata; ;
+ break;}
+case 37:
+#line 945 "rtf.y"
+{ yyval.pcdata = ";"; ;
+ break;}
+case 38:
+#line 946 "rtf.y"
+{ yyval.pcdata = "e"; ;
+ break;}
+case 39:
+#line 947 "rtf.y"
+{ yyval.pcdata = "q"; ;
+ break;}
+case 40:
+#line 948 "rtf.y"
+{ yyval.pcdata = " "; ;
+ break;}
+case 41:
+#line 949 "rtf.y"
+{ yyval.pcdata = " "; ;
+ break;}
+case 42:
+#line 950 "rtf.y"
+{ yyval.pcdata = ","; ;
+ break;}
+case 47:
+#line 958 "rtf.y"
+{ nouvfonte(yyvsp[-6].numo,yyvsp[-5].numo,yyvsp[-4].numo,yyvsp[-3].numo,yyvsp[0].pcdata); ;
+ break;}
+case 49:
+#line 962 "rtf.y"
+{ yyval.numo=LF_FNIL; ;
+ break;}
+case 50:
+#line 963 "rtf.y"
+{ yyval.numo=LF_FROMAN; ;
+ break;}
+case 51:
+#line 964 "rtf.y"
+{ yyval.numo=LF_FSWISS; ;
+ break;}
+case 52:
+#line 965 "rtf.y"
+{ yyval.numo=LF_FMODERN; ;
+ break;}
+case 53:
+#line 966 "rtf.y"
+{ yyval.numo=LF_FSCRIPT; ;
+ break;}
+case 54:
+#line 967 "rtf.y"
+{ yyval.numo=LF_FDECOR; ;
+ break;}
+case 55:
+#line 968 "rtf.y"
+{ yyval.numo=LF_FTECH; ;
+ break;}
+case 56:
+#line 969 "rtf.y"
+{ yyval.numo=LF_FBIDI; ;
+ break;}
+case 57:
+#line 975 "rtf.y"
+{ yyval.numo=-1; ;
+ break;}
+case 58:
+#line 976 "rtf.y"
+{ yyval.numo=yyvsp[0].numo; ;
+ break;}
+case 59:
+#line 979 "rtf.y"
+{ yyval.numo=-1; ;
+ break;}
+case 60:
+#line 980 "rtf.y"
+{ yyval.numo=yyvsp[0].numo; ;
+ break;}
+case 167:
+#line 1157 "rtf.y"
+{ PZ_FD.FDDEFTAB=(yyvsp[0].numo/20); ;
+ break;}
+case 213:
+#line 1207 "rtf.y"
+{ PZ_FD.FDPAPERW=(yyvsp[0].numo/20); ;
+ break;}
+case 214:
+#line 1208 "rtf.y"
+{ PZ_FD.FDPAPERH=(yyvsp[0].numo/20); ;
+ break;}
+case 215:
+#line 1209 "rtf.y"
+{ PZ_FD.FDPSZ=(yyvsp[0].numo/20); ;
+ break;}
+case 216:
+#line 1210 "rtf.y"
+{ PZ_FD.FDMARGL=(yyvsp[0].numo/20); ;
+ break;}
+case 217:
+#line 1211 "rtf.y"
+{ PZ_FD.FDMARGR=(yyvsp[0].numo/20); ;
+ break;}
+case 218:
+#line 1212 "rtf.y"
+{ PZ_FD.FDMARGT=(yyvsp[0].numo/20); ;
+ break;}
+case 219:
+#line 1213 "rtf.y"
+{ PZ_FD.FDMARGB=(yyvsp[0].numo/20); ;
+ break;}
+case 220:
+#line 1214 "rtf.y"
+{ PZ_FD.FDFACINGP=1; ;
+ break;}
+case 221:
+#line 1215 "rtf.y"
+{ PZ_FD.FDGUTTER=(yyvsp[0].numo/20); ;
+ break;}
+case 222:
+#line 1216 "rtf.y"
+{ PZ_FD.FDMARGMIRROR=1; ;
+ break;}
+case 223:
+#line 1217 "rtf.y"
+{ PZ_FD.FDLANDSCAPE=1; ;
+ break;}
+case 224:
+#line 1218 "rtf.y"
+{ PZ_FD.FDPGNSTART=(yyvsp[0].numo/20); ;
+ break;}
+case 225:
+#line 1219 "rtf.y"
+{ PZ_FD.FDWIDOWCTRL=1; ;
+ break;}
+case 251:
+#line 1252 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 254:
+#line 1256 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 320:
+#line 1334 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 322:
+#line 1338 "rtf.y"
+{ FLAG_Footer=1; ifDTfprintf(SORT,"\\markright{");;
+ break;}
+case 355:
+#line 1378 "rtf.y"
+{ Num_Max_Col=0; Inter_Col=0; FLAG_NIT=0 ;;
+ break;}
+case 369:
+#line 1398 "rtf.y"
+{ Inter_Col=yyvsp[0].numo/10; ;
+ break;}
+case 382:
+#line 1414 "rtf.y"
+{ if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n"); };
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",FLAG_FI);
+ FLAG_Dollars=0;
+ ;
+ break;}
+case 383:
+#line 1425 "rtf.y"
+{ yyval.pcdata=yyvsp[0].pcdata; ;
+ break;}
+case 384:
+#line 1428 "rtf.y"
+{ ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ ;
+ break;}
+case 385:
+#line 1432 "rtf.y"
+{
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==-1 && !FLAG_Indice)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==-1 && !FLAG_Exposant)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ yyval.pcdata="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ ;
+ break;}
+case 463:
+#line 1549 "rtf.y"
+{ /*ifDTfprintf(SORT,"\\hline %%\n");*/ ;
+ break;}
+case 464:
+#line 1550 "rtf.y"
+{ /*FLAG_BorderBot=1;*/ ;
+ break;}
+case 485:
+#line 1575 "rtf.y"
+{ yyval.motcomm=""; ;
+ break;}
+case 486:
+#line 1576 "rtf.y"
+{ yyval.motcomm=yyvsp[0].motcomm; ;
+ break;}
+case 487:
+#line 1578 "rtf.y"
+{ yyval.motcomm=yyvsp[0].pcdata; ;
+ break;}
+case 488:
+#line 1579 "rtf.y"
+{
+ yyval.motcomm = (char * ) malloc (strlen(yyvsp[-1].motcomm) + strlen(yyvsp[0].pcdata) + 1);
+ strcpy(yyval.motcomm,yyvsp[-1].motcomm);
+ strcat(yyval.motcomm,yyvsp[0].pcdata);
+
+ ;
+ break;}
+case 489:
+#line 1586 "rtf.y"
+{Num_Col_Tabular=0; FLAG_Tableau=0; FLAG_NIT=1;;
+ break;}
+case 504:
+#line 1608 "rtf.y"
+{
+ if (Num_Col_Tabular<Num_Max_Col)
+ {
+ if (FLAG_DebutTeX) endkeepcontext();
+ ifDTfprintf(SORT,"%s{%dpt}",pzIntermDef,
+ Largeur_Cols[Num_Col_Tabular++]);
+ if (FLAG_DebutTeX) showcontext();
+ }
+ else
+ { if (FLAG_DebutTeX) contextback();
+ ifDTfprintf(SORT,"%s",pzEndDef);
+ }
+ ;
+ break;}
+case 507:
+#line 1625 "rtf.y"
+{ if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n");};
+ FLAG_Dollars=0;
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",FLAG_FI);
+ ;
+ break;}
+case 508:
+#line 1636 "rtf.y"
+{ if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",0);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",0);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",0);
+ FLAG_LI=0;
+ FLAG_RI=0;
+ FLAG_FI=0;
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n"); };
+ /*if (Num_Col_Tabular!=0) Num_Max_Col=Num_Col_Tabular;
+ Num_Col_Tabular=0;*/
+ ifDTfprintf(SORT,"\\normalsize ");
+ ifDTfprintf(SORT,"\\pzrm ");
+ if (FLAG_LI!=0)
+ {
+ FLAG_LI=0;
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",0);
+ }
+ if (FLAG_RI!=0)
+ {
+ FLAG_RI=0;
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",0);
+ }
+ if (FLAG_FI!=0)
+ {
+ FLAG_FI=0;
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",0);
+ }
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=JUST;
+ ;
+ break;}
+case 511:
+#line 1690 "rtf.y"
+{ if (FLAG_Tableau==0 && Num_Col_Tabular==0 /* && Num_Col_Tabular<Num_Max_Col*/)
+ {
+ ifDTfprintf(SORT,"%s{%dpt}",pzStartDef,
+ Largeur_Cols[0]+Inter_Col);
+ Num_Col_Tabular=1;
+ ContextInitTab=ContextActuel;
+ if (FLAG_DebutTeX) showcontext();
+ }
+ FLAG_Tableau=1;
+ FLAG_NIT=1;
+ ;
+ break;}
+case 519:
+#line 1709 "rtf.y"
+{ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (!FLAG_Footer) { ifDTfprintf(SORT,"\n\\begin{flushleft}\n"); };
+
+ if (ContextActuel==NULL && FLAG_DebutTeX ) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=LEFT;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_FlushLeft=1;
+ ;
+ break;}
+case 520:
+#line 1726 "rtf.y"
+{ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (!FLAG_Footer && FLAG_NIT) { ifDTfprintf(SORT,"\n\\begin{flushright}\n"); };
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=RIGHT;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_FlushRight=1;
+ ;
+ break;}
+case 521:
+#line 1742 "rtf.y"
+{ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=JUST;
+ ;
+ break;}
+case 522:
+#line 1761 "rtf.y"
+{ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (!FLAG_Footer && FLAG_NIT) { ifDTfprintf(SORT,"\n\\begin{center}\n"); }
+ if (FLAG_Footer) { ifDTfprintf(SORT," \\centerline "); };
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX && !FLAG_Footer) ContextActuel->EtatTexte=CENTER;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_Center=1;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_Dollars=1;
+ ;
+ break;}
+case 523:
+#line 1778 "rtf.y"
+{ if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_FI=(int)(yyvsp[0].numo/20);
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",FLAG_FI);
+ }
+ ;
+ break;}
+case 524:
+#line 1784 "rtf.y"
+{ if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_LI=(int)(yyvsp[0].numo/20);
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ }
+ ;
+ break;}
+case 525:
+#line 1790 "rtf.y"
+{ if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_RI=(int)(yyvsp[0].numo/20);
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ }
+ ;
+ break;}
+case 636:
+#line 1941 "rtf.y"
+{ if (Num_Max_Col==0)
+ Largeur_Cols[Num_Max_Col]=(yyvsp[0].numo/20);
+ if (Num_Max_Col!=0)
+ {
+ cpt=1;
+ Largeur_Cols[Num_Max_Col]=(yyvsp[0].numo/20);
+ while(cpt<=Num_Max_Col)
+ Largeur_Cols[Num_Max_Col]-=Largeur_Cols[Num_Max_Col-(cpt++)];
+ }
+ Num_Max_Col++;;
+ break;}
+case 700:
+#line 2031 "rtf.y"
+{ ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ ;
+ break;}
+case 701:
+#line 2035 "rtf.y"
+{
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==-1 && !FLAG_Indice)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==-1 && !FLAG_Exposant)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ yyval.pcdata="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ ;
+ break;}
+case 702:
+#line 2062 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 705:
+#line 2066 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 708:
+#line 2071 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[0].pcdata;
+ ;
+ break;}
+case 709:
+#line 2078 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[0].pcdata;
+ ;
+ break;}
+case 710:
+#line 2085 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[-1].pcdata;
+ ;
+ break;}
+case 711:
+#line 2092 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[-1].pcdata;
+ ;
+ break;}
+case 712:
+#line 2099 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 713:
+#line 2100 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 714:
+#line 2101 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 715:
+#line 2102 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 716:
+#line 2103 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 717:
+#line 2104 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 718:
+#line 2105 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 719:
+#line 2106 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 720:
+#line 2107 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 721:
+#line 2108 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 722:
+#line 2109 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 723:
+#line 2110 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 724:
+#line 2111 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 725:
+#line 2112 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 726:
+#line 2113 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 727:
+#line 2114 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 728:
+#line 2115 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 729:
+#line 2116 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 730:
+#line 2117 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 731:
+#line 2118 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 732:
+#line 2119 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 733:
+#line 2120 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 734:
+#line 2121 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 735:
+#line 2122 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 736:
+#line 2123 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 737:
+#line 2124 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 738:
+#line 2125 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 739:
+#line 2126 "rtf.y"
+{ FLAG_InPict=1; FLAG_WMetafile=0; ;
+ break;}
+case 741:
+#line 2128 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 742:
+#line 2129 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 743:
+#line 2130 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 744:
+#line 2131 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 746:
+#line 2133 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 747:
+#line 2134 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 748:
+#line 2135 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 749:
+#line 2136 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 750:
+#line 2137 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 751:
+#line 2138 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 752:
+#line 2140 "rtf.y"
+{ yyval.pcdata=""; if (FLAG_WMetafile)
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ FLAG_PICTLargeur,FLAG_PICTHauteur);
+ else
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ (int)(FLAG_PICTLargeur*20),
+ (int)(FLAG_PICTHauteur*20));
+ FLAG_PICTHauteur=0;
+ FLAG_PICTLargeur=0;
+ FLAG_InPict=0;
+ FLAG_WMetafile=0;
+ ;
+ break;}
+case 753:
+#line 2152 "rtf.y"
+{ yyval.pcdata=""; if (FLAG_WMetafile)
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ FLAG_PICTLargeur,FLAG_PICTHauteur);
+ else
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ (int)(FLAG_PICTLargeur*20),
+ (int)(FLAG_PICTHauteur*20));
+ FLAG_PICTHauteur=0;
+ FLAG_PICTLargeur=0;
+ FLAG_InPict=0;
+ FLAG_WMetafile=0;
+ ;
+ break;}
+case 756:
+#line 2168 "rtf.y"
+{ /*ifDTfprintf(SORT,"}%%\n");*/ ;
+ break;}
+case 757:
+#line 2169 "rtf.y"
+{ ifDTfprintf(SORT,"}%%\n"); ;
+ break;}
+case 759:
+#line 2172 "rtf.y"
+{ FLAG_Exposant=0; FLAG_Indice=0;
+ /* fseek(SORT,-strlen("$^{"),1); */
+ ifDTfprintf(SORT,"\\footnote{%%\n"); ;
+ break;}
+case 766:
+#line 2184 "rtf.y"
+{yyval.pcdata="";;
+ break;}
+case 767:
+#line 2185 "rtf.y"
+{ yyval.pcdata = (char * ) malloc (strlen(yyvsp[-1].pcdata) + strlen(yyvsp[0].pcdata) + 1);
+ strcpy(yyval.pcdata,yyvsp[-1].pcdata);
+ strcat(yyval.pcdata,yyvsp[0].pcdata);
+ ;
+ break;}
+case 768:
+#line 2191 "rtf.y"
+{ yyval.pcdata = (char * ) malloc (strlen(yyvsp[0].pcdata) + 1);
+ strcpy(yyval.pcdata,yyvsp[0].pcdata);
+ ;
+ break;}
+case 769:
+#line 2194 "rtf.y"
+{ yyval.pcdata = (char * ) malloc (strlen(yyvsp[-1].pcdata) + strlen(yyvsp[0].pcdata) + 1);
+ strcpy(yyval.pcdata,yyvsp[-1].pcdata);
+ strcat(yyval.pcdata,yyvsp[0].pcdata);
+ ;
+ break;}
+case 770:
+#line 2199 "rtf.y"
+{
+ yyval.pcdata=yyvsp[0].pcdata;
+ if (FLAG_Symbol==0)
+ {
+ printText(yyvsp[0].pcdata);
+ }
+ if (FLAG_Symbol!=0)
+ { if (FLAG_Equation==0)
+ { ifDTfprintf(SORT,"$");
+ printSymbol(yyvsp[0].pcdata);
+ ifDTfprintf(SORT,"$");
+ }
+ if (FLAG_Equation!=0) printSymbol(yyvsp[0].pcdata);
+ }
+ ;
+ break;}
+case 771:
+#line 2214 "rtf.y"
+{ yyval.pcdata=""; ifDTfprintf(SORT,"%d",yyvsp[0].numo); ;
+ break;}
+case 772:
+#line 2215 "rtf.y"
+{ yyval.pcdata=""; /*FLAG_Equation=0;*/ ;
+ break;}
+case 774:
+#line 2218 "rtf.y"
+{ if (yyvsp[0].numo==1) { ifDTfprintf(SORT,"\\bf "); FLAG_Bold=1; }
+ if (yyvsp[0].numo!=1)
+ {
+ if (yyvsp[0].numo==0) ifDTfprintf(SORT,"\t\t\t ****** Fin de bold \n");
+ if (yyvsp[0].numo!=0) ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le bold \n");
+ }
+ ;
+ break;}
+case 777:
+#line 2227 "rtf.y"
+{ if (FLAG_DebutTeX)
+ {
+ if (FLAG_Equation==0)
+ {FLAG_Equation=-1;
+ ifDTfprintf(SORT,"$_{");
+ }
+ else
+ { ifDTfprintf(SORT,"_{"); }
+ FLAG_Indice++;
+ }
+ ;
+ break;}
+case 783:
+#line 2243 "rtf.y"
+{ FonteActuelle=DebLisFontes;
+ while(FonteActuelle!=NULL && FonteActuelle->LF_Fontnum!=yyvsp[0].numo)
+ FonteActuelle=FonteActuelle->suiv;
+ if (FonteActuelle!=NULL)
+ { if (!strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ FLAG_Symbol=1;
+ if (strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ {
+ ifDTfprintf(SORT,"%s",FonteActuelle->LF_TexEquiv);
+ FLAG_Symbol=0;
+ }
+ }
+ else FLAG_Symbol=0;
+
+ if (FLAG_Bold)
+ ifDTfprintf(SORT,"\\bf ");
+ if (FLAG_Italique)
+ ifDTfprintf(SORT,"\\it ");
+ ;
+ break;}
+case 784:
+#line 2266 "rtf.y"
+{ if (FLAG_DebutTeX && FLAG_Equation==0) ifDTfprintf(SORT,"%s",EqTeXTaille(yyvsp[0].numo));
+ FonteActuelle=DebLisFontes;
+ while(FonteActuelle!=NULL && FonteActuelle->LF_Fontnum!=yyvsp[0].numo)
+ FonteActuelle=FonteActuelle->suiv;
+ if (FonteActuelle!=NULL)
+ { if (!strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ FLAG_Symbol=1;
+ if (strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ {
+ ifDTfprintf(SORT,"%s",FonteActuelle->LF_TexEquiv);
+ FLAG_Symbol=0;
+ }
+ }
+ else FLAG_Symbol=0;
+ /* On est obliges de repositionner les parametres de la fonte... */
+ if (FLAG_Bold)
+ ifDTfprintf(SORT,"\\bf ");
+ if (FLAG_Italique)
+ ifDTfprintf(SORT,"\\it ");
+ ;
+ break;}
+case 785:
+#line 2286 "rtf.y"
+{ if (yyvsp[0].numo==1) { ifDTfprintf(SORT,"\\it "); FLAG_Italique=1; }
+ else if (yyvsp[0].numo==0) ifDTfprintf(SORT,"\t\t\t ****** Fin de italique \n");
+ else ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le italique \n");
+ ;
+ break;}
+case 793:
+#line 2297 "rtf.y"
+{ if (FLAG_DebutTeX)
+ { if (yyvsp[0].numo==1)
+ {
+ ifDTfprintf(SORT,"\\underline {");
+ FLAG_Underline=1;
+ }
+ else if (yyvsp[0].numo==0)
+ {
+ ifDTfprintf(SORT,"\t\t\t ****** Fin de underline \n");
+ FLAG_Underline=0;
+ }
+ else ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le underline \n");
+ }
+ ;
+ break;}
+case 798:
+#line 2315 "rtf.y"
+{ if (FLAG_DebutTeX)
+ {
+ if (FLAG_Equation==0)
+ {FLAG_Equation=-1;
+ ifDTfprintf(SORT,"$^{%%\n");
+ }
+ else
+ { ifDTfprintf(SORT,"^{%%\n"); }
+ FLAG_Exposant++;
+ }
+ ;
+ break;}
+case 809:
+#line 2341 "rtf.y"
+{ ifDTfprintf(SORT,"\\today "); ;
+ break;}
+case 810:
+#line 2342 "rtf.y"
+{ ifDTfprintf(SORT,"\\today "); ;
+ break;}
+case 811:
+#line 2343 "rtf.y"
+{ ifDTfprintf(SORT,"\\today "); ;
+ break;}
+case 819:
+#line 2353 "rtf.y"
+{ if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par "); };
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",FLAG_FI);
+ FLAG_Dollars=0;
+ ;
+ break;}
+case 821:
+#line 2370 "rtf.y"
+{ ifDTfprintf(SORT,"\\newpage ");;
+ break;}
+case 823:
+#line 2372 "rtf.y"
+{ ifDTfprintf(SORT,"\\newline ");;
+ break;}
+case 828:
+#line 2377 "rtf.y"
+{ ifDTfprintf(SORT,"\n\\hspace{%dpt}", PZ_FD.FDDEFTAB);;
+ break;}
+case 829:
+#line 2378 "rtf.y"
+{ ifDTfprintf(SORT,"--"); ;
+ break;}
+case 830:
+#line 2379 "rtf.y"
+{ ifDTfprintf(SORT,"-"); ;
+ break;}
+case 831:
+#line 2380 "rtf.y"
+{ ifDTfprintf(SORT,"\\,\\,"); ;
+ break;}
+case 832:
+#line 2381 "rtf.y"
+{ ifDTfprintf(SORT,"\\, "); ;
+ break;}
+case 833:
+#line 2382 "rtf.y"
+{ if (FLAG_Equation) ifDTfprintf(SORT,"\\bullet ");
+ if (!FLAG_Equation) ifDTfprintf(SORT,"$\\bullet $"); ;
+ break;}
+case 834:
+#line 2384 "rtf.y"
+{ ifDTfprintf(SORT,"`"); ;
+ break;}
+case 835:
+#line 2385 "rtf.y"
+{ ifDTfprintf(SORT,"'"); ;
+ break;}
+case 836:
+#line 2386 "rtf.y"
+{ ifDTfprintf(SORT,"``"); ; /* changed, He.10.Jan.95 */
+ break;}
+case 837:
+#line 2387 "rtf.y"
+{ ifDTfprintf(SORT,"\'\'"); ; /* changed, He.10.Jan.95 */
+ break;}
+case 838:
+#line 2388 "rtf.y"
+{ FLAG_Equation=1; ;
+ break;}
+case 840:
+#line 2390 "rtf.y"
+{ ifDTfprintf(SORT,"\\ "); ;
+ break;}
+case 844:
+#line 2396 "rtf.y"
+{ {
+ unsigned long ullu;
+ ullu=strtol(yyvsp[0].motcomm,NULL,16);
+ if (FLAG_Symbol) printApostrophe(ullu);
+ if (!FLAG_Symbol)
+ {
+ if (ASCII_TABLE==2 && !FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_PC[ullu-DEBASCII_PC]);
+ if (ASCII_TABLE==1 && !FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_MAC[ullu-DEBASCII_MAC]);
+ if (ASCII_TABLE==2 && FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_PC_MATH[ullu-DEBASCII_PC]);
+ if (ASCII_TABLE==1 && FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_MAC_MATH[ullu-DEBASCII_MAC]);
+ }
+ }
+ ;
+ break;}
+case 851:
+#line 2422 "rtf.y"
+{ FLAG_WMetafile=1; ;
+ break;}
+case 876:
+#line 2452 "rtf.y"
+{ FLAG_PICTLargeur=yyvsp[0].numo/20; ;
+ break;}
+case 877:
+#line 2453 "rtf.y"
+{ FLAG_PICTHauteur=yyvsp[0].numo/20; ;
+ break;}
+case 878:
+#line 2454 "rtf.y"
+{ FLAG_PICTLargeur=yyvsp[0].numo/20; ;
+ break;}
+case 879:
+#line 2455 "rtf.y"
+{ FLAG_PICTHauteur=yyvsp[0].numo/20; ;
+ break;}
+case 880:
+#line 2457 "rtf.y"
+{ FLAG_PICTLargeur=yyvsp[0].numo/20; ;
+ break;}
+case 881:
+#line 2458 "rtf.y"
+{ FLAG_PICTHauteur=yyvsp[0].numo/20; ;
+ break;}
+case 882:
+#line 2459 "rtf.y"
+{ FLAG_PICTLargeur=yyvsp[0].numo/20; ;
+ break;}
+case 883:
+#line 2460 "rtf.y"
+{ FLAG_PICTHauteur=yyvsp[0].numo/20; ;
+ break;}
+case 1008:
+#line 2630 "rtf.y"
+{ FLAG_Equation=1;
+ /*if (FLAG_Dollars==1) ifDTfprintf(SORT,"$$ ");
+ if (FLAG_Dollars!=1) */ifDTfprintf(SORT,"$ ");
+ ;
+ break;}
+case 1009:
+#line 2634 "rtf.y"
+{ FLAG_Equation=0;
+ /*if (FLAG_Dollars==1) ifDTfprintf(SORT," $$");
+ if (FLAG_Dollars!=1) */ifDTfprintf(SORT," $");
+ FLAG_Dollars=0;
+ ;
+ break;}
+case 1013:
+#line 2644 "rtf.y"
+{
+ yyval.pcdata=yyvsp[0].pcdata;
+ if (FLAG_Symbol==0)
+ {
+ ifDTfprintf(SORT,"{%%\n\\rm ");
+ printText(yyvsp[0].pcdata);
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ else
+ {
+ printSymbol(yyvsp[0].pcdata);
+ }
+ ;
+ break;}
+case 1015:
+#line 2659 "rtf.y"
+{
+ yyval.pcdata=yyvsp[0].pcdata;
+ if (FLAG_Symbol==0)
+ {
+ ifDTfprintf(SORT,"{%%\n\\rm ");
+ printText(yyvsp[0].pcdata);
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ else
+ {
+ printSymbol(yyvsp[0].pcdata);
+ }
+ ;
+ break;}
+case 1026:
+#line 2684 "rtf.y"
+{ FLAG_Integrale=INTINT; ;
+ break;}
+case 1027:
+#line 2686 "rtf.y"
+{if (FLAG_Integrale==INTINT)
+ ifDTfprintf(SORT,"\\int_{");
+ if (FLAG_Integrale==INTSUM)
+ ifDTfprintf(SORT,"\\sum_{");
+ if (FLAG_Integrale==INTPROD)
+ ifDTfprintf(SORT,"\\prod_{");
+ ;
+ break;}
+case 1028:
+#line 2693 "rtf.y"
+{ifDTfprintf(SORT,"}^{");
+ ;
+ break;}
+case 1029:
+#line 2695 "rtf.y"
+{ifDTfprintf(SORT,"}{");
+ ;
+ break;}
+case 1030:
+#line 2697 "rtf.y"
+{ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1031:
+#line 2699 "rtf.y"
+{ FLAG_Integrale=INTINT; ;
+ break;}
+case 1032:
+#line 2700 "rtf.y"
+{if (FLAG_Integrale==INTINT)
+ ifDTfprintf(SORT,"\\int_{");
+ if (FLAG_Integrale==INTSUM)
+ ifDTfprintf(SORT,"\\sum_{");
+ if (FLAG_Integrale==INTPROD)
+ ifDTfprintf(SORT,"\\prod_{");
+ ;
+ break;}
+case 1033:
+#line 2707 "rtf.y"
+{ifDTfprintf(SORT,"}^{");
+ ;
+ break;}
+case 1034:
+#line 2709 "rtf.y"
+{ifDTfprintf(SORT,"}{");
+ ;
+ break;}
+case 1035:
+#line 2711 "rtf.y"
+{ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1036:
+#line 2715 "rtf.y"
+{ifDTfprintf(SORT,"\\sqrt[{");
+ ;
+ break;}
+case 1037:
+#line 2717 "rtf.y"
+{ifDTfprintf(SORT,"}]{");
+ ;
+ break;}
+case 1038:
+#line 2719 "rtf.y"
+{ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1039:
+#line 2723 "rtf.y"
+{ifDTfprintf(SORT,"\\frac{");
+ ;
+ break;}
+case 1040:
+#line 2725 "rtf.y"
+{ifDTfprintf(SORT,"}{");
+ ;
+ break;}
+case 1041:
+#line 2727 "rtf.y"
+{ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1042:
+#line 2731 "rtf.y"
+{ifDTfprintf(SORT,"\\begin{array}{c}\n");
+ FLAG_InMatrix=1;
+ FLAG_MatrixColCour=1;
+ ;
+ break;}
+case 1043:
+#line 2735 "rtf.y"
+{ifDTfprintf(SORT,"\n\\end{array}\n");
+ FLAG_InMatrix=0;
+ ;
+ break;}
+case 1044:
+#line 2738 "rtf.y"
+{ifDTfprintf(SORT,"\\begin{array}{");
+ for(cpt3=0;cpt3<FLAG_MatrixCols;cpt3++)
+ ifDTfprintf(SORT,"%c",TAB_PosTabMatrix[FLAG_MatrixAlign]);
+ ifDTfprintf(SORT,"}%%\n");
+ FLAG_InMatrix=1;
+ FLAG_MatrixColCour=1;
+ ;
+ break;}
+case 1045:
+#line 2745 "rtf.y"
+{ifDTfprintf(SORT,"\n\\end{array}\n");
+ FLAG_InMatrix=0;
+ ;
+ break;}
+case 1046:
+#line 2749 "rtf.y"
+{ ifDTfprintf(SORT,"\\fbox{$");
+ ;
+ break;}
+case 1047:
+#line 2751 "rtf.y"
+{ ifDTfprintf(SORT,"$}%%\n");
+ ;
+ break;}
+case 1048:
+#line 2754 "rtf.y"
+{ ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); ;
+ break;}
+case 1049:
+#line 2755 "rtf.y"
+{ ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; ;
+ break;}
+case 1050:
+#line 2757 "rtf.y"
+{ ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); ;
+ break;}
+case 1051:
+#line 2758 "rtf.y"
+{ ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; ;
+ break;}
+case 1052:
+#line 2760 "rtf.y"
+{ ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); ;
+ break;}
+case 1053:
+#line 2761 "rtf.y"
+{ ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; ;
+ break;}
+case 1061:
+#line 2777 "rtf.y"
+{ ifDTfprintf(SORT,"%%\n\\begin{tabular}{l}\n$"); FLAG_SusTab=1;
+ if (FLAG_InMatrix==1) FLAG_InMatrix=-1;
+ ;
+ break;}
+case 1062:
+#line 2780 "rtf.y"
+{ ifDTfprintf(SORT,"$%%\n\\end{tabular}\n"); FLAG_SusTab=0;
+ if (FLAG_InMatrix==-1) FLAG_InMatrix=1;
+ ;
+ break;}
+case 1063:
+#line 2783 "rtf.y"
+{ FLAG_Suscript=0; ;
+ break;}
+case 1064:
+#line 2784 "rtf.y"
+{
+ if (FLAG_InMatrix==1) FLAG_InMatrix=-1;
+ if (FLAG_Suscript==EQUP)
+ {ifDTfprintf(SORT,"^{");}
+ else {if (FLAG_Suscript==EQDO)
+ {ifDTfprintf(SORT,"_{");}
+ else {ifDTfprintf(SORT,"{%%\n");}}
+ ;
+ break;}
+case 1065:
+#line 2792 "rtf.y"
+{ ifDTfprintf(SORT,"}%%\n");
+ if (FLAG_InMatrix==-1) FLAG_InMatrix=1;
+ ;
+ break;}
+case 1066:
+#line 2796 "rtf.y"
+{ FLAG_bracketleft=BRCrochetO; ;
+ break;}
+case 1067:
+#line 2797 "rtf.y"
+{ FLAG_bracketleft=BRCrochetF; ;
+ break;}
+case 1068:
+#line 2798 "rtf.y"
+{ FLAG_bracketleft=BRSupInfO; ;
+ break;}
+case 1069:
+#line 2799 "rtf.y"
+{ FLAG_bracketleft=BRSupInfF; ;
+ break;}
+case 1070:
+#line 2800 "rtf.y"
+{ FLAG_bracketleft=BRParentheseO; ;
+ break;}
+case 1071:
+#line 2801 "rtf.y"
+{ FLAG_bracketleft=BRParentheseF; ;
+ break;}
+case 1072:
+#line 2802 "rtf.y"
+{ FLAG_bracketleft=BRAccoladeO; ;
+ break;}
+case 1073:
+#line 2803 "rtf.y"
+{ FLAG_bracketleft=BRAccoladeF; ;
+ break;}
+case 1074:
+#line 2804 "rtf.y"
+{ FLAG_bracketright=BRCrochetO; ;
+ break;}
+case 1075:
+#line 2805 "rtf.y"
+{ FLAG_bracketright=BRCrochetF; ;
+ break;}
+case 1076:
+#line 2806 "rtf.y"
+{ FLAG_bracketright=BRSupInfO; ;
+ break;}
+case 1077:
+#line 2807 "rtf.y"
+{ FLAG_bracketright=BRSupInfF; ;
+ break;}
+case 1078:
+#line 2808 "rtf.y"
+{ FLAG_bracketright=BRParentheseO; ;
+ break;}
+case 1079:
+#line 2809 "rtf.y"
+{ FLAG_bracketright=BRParentheseF; ;
+ break;}
+case 1080:
+#line 2810 "rtf.y"
+{ FLAG_bracketright=BRAccoladeO; ;
+ break;}
+case 1081:
+#line 2811 "rtf.y"
+{ FLAG_bracketright=BRAccoladeF; ;
+ break;}
+case 1082:
+#line 2812 "rtf.y"
+{ FLAG_bracketright=BRCrochetO; FLAG_bracketleft=BRCrochetO;;
+ break;}
+case 1083:
+#line 2813 "rtf.y"
+{ FLAG_bracketright=BRCrochetF; FLAG_bracketleft=BRCrochetF;;
+ break;}
+case 1084:
+#line 2814 "rtf.y"
+{ FLAG_bracketright=BRSupInfO; FLAG_bracketleft=BRSupInfO;;
+ break;}
+case 1085:
+#line 2815 "rtf.y"
+{ FLAG_bracketright=BRSupInfF; FLAG_bracketleft=BRSupInfF;;
+ break;}
+case 1086:
+#line 2816 "rtf.y"
+{ FLAG_bracketright=BRParentheseO; FLAG_bracketleft=BRParentheseO;;
+ break;}
+case 1087:
+#line 2817 "rtf.y"
+{ FLAG_bracketright=BRParentheseF; FLAG_bracketleft=BRParentheseF;;
+ break;}
+case 1088:
+#line 2818 "rtf.y"
+{ FLAG_bracketright=BRAccoladeO; FLAG_bracketleft=BRAccoladeO;;
+ break;}
+case 1089:
+#line 2819 "rtf.y"
+{ FLAG_bracketright=BRAccoladeF; FLAG_bracketleft=BRAccoladeF;;
+ break;}
+case 1090:
+#line 2820 "rtf.y"
+{ FLAG_bracketleft=BRCrochetO; ;
+ break;}
+case 1091:
+#line 2821 "rtf.y"
+{ FLAG_bracketleft=BRCrochetF; ;
+ break;}
+case 1092:
+#line 2822 "rtf.y"
+{ FLAG_bracketleft=BRSupInfO; ;
+ break;}
+case 1093:
+#line 2823 "rtf.y"
+{ FLAG_bracketleft=BRSupInfF; ;
+ break;}
+case 1094:
+#line 2824 "rtf.y"
+{ FLAG_bracketleft=BRParentheseO; ;
+ break;}
+case 1095:
+#line 2825 "rtf.y"
+{ FLAG_bracketleft=BRParentheseF; ;
+ break;}
+case 1096:
+#line 2826 "rtf.y"
+{ FLAG_bracketleft=BRAccoladeO; ;
+ break;}
+case 1097:
+#line 2827 "rtf.y"
+{ FLAG_bracketleft=BRAccoladeF; ;
+ break;}
+case 1098:
+#line 2828 "rtf.y"
+{ FLAG_bracketright=BRCrochetO; ;
+ break;}
+case 1099:
+#line 2829 "rtf.y"
+{ FLAG_bracketright=BRCrochetF; ;
+ break;}
+case 1100:
+#line 2830 "rtf.y"
+{ FLAG_bracketright=BRSupInfO; ;
+ break;}
+case 1101:
+#line 2831 "rtf.y"
+{ FLAG_bracketright=BRSupInfF; ;
+ break;}
+case 1102:
+#line 2832 "rtf.y"
+{ FLAG_bracketright=BRParentheseO; ;
+ break;}
+case 1103:
+#line 2833 "rtf.y"
+{ FLAG_bracketright=BRParentheseF; ;
+ break;}
+case 1104:
+#line 2834 "rtf.y"
+{ FLAG_bracketright=BRAccoladeO; ;
+ break;}
+case 1105:
+#line 2835 "rtf.y"
+{ FLAG_bracketright=BRAccoladeF; ;
+ break;}
+case 1106:
+#line 2836 "rtf.y"
+{ FLAG_bracketright=BRCrochetO; FLAG_bracketleft=BRCrochetO;;
+ break;}
+case 1107:
+#line 2837 "rtf.y"
+{ FLAG_bracketright=BRCrochetF; FLAG_bracketleft=BRCrochetF;;
+ break;}
+case 1108:
+#line 2838 "rtf.y"
+{ FLAG_bracketright=BRSupInfO; FLAG_bracketleft=BRSupInfO;;
+ break;}
+case 1109:
+#line 2839 "rtf.y"
+{ FLAG_bracketright=BRSupInfF; FLAG_bracketleft=BRSupInfF;;
+ break;}
+case 1110:
+#line 2840 "rtf.y"
+{ FLAG_bracketright=BRParentheseO; FLAG_bracketleft=BRParentheseO;;
+ break;}
+case 1111:
+#line 2841 "rtf.y"
+{ FLAG_bracketright=BRParentheseF; FLAG_bracketleft=BRParentheseF;;
+ break;}
+case 1112:
+#line 2842 "rtf.y"
+{ FLAG_bracketright=BRAccoladeO; FLAG_bracketleft=BRAccoladeO;;
+ break;}
+case 1113:
+#line 2843 "rtf.y"
+{ FLAG_bracketright=BRAccoladeF; FLAG_bracketleft=BRAccoladeF;;
+ break;}
+case 1114:
+#line 2846 "rtf.y"
+{ FLAG_MatrixAlign=LEFT; ;
+ break;}
+case 1115:
+#line 2847 "rtf.y"
+{ FLAG_MatrixAlign=CENTER; ;
+ break;}
+case 1116:
+#line 2848 "rtf.y"
+{ FLAG_MatrixAlign=RIGHT; ;
+ break;}
+case 1117:
+#line 2849 "rtf.y"
+{ FLAG_MatrixCols=yyvsp[0].numo; ;
+ break;}
+case 1120:
+#line 2852 "rtf.y"
+{ FLAG_MatrixAlign=LEFT; ;
+ break;}
+case 1121:
+#line 2853 "rtf.y"
+{ FLAG_MatrixAlign=CENTER; ;
+ break;}
+case 1122:
+#line 2854 "rtf.y"
+{ FLAG_MatrixAlign=RIGHT; ;
+ break;}
+case 1123:
+#line 2855 "rtf.y"
+{ FLAG_MatrixCols=yyvsp[0].numo; ;
+ break;}
+case 1126:
+#line 2859 "rtf.y"
+{ FLAG_Integrale=INTSUM; ;
+ break;}
+case 1127:
+#line 2860 "rtf.y"
+{ FLAG_Integrale=INTPROD; ;
+ break;}
+case 1131:
+#line 2864 "rtf.y"
+{ FLAG_Integrale=INTSUM; ;
+ break;}
+case 1133:
+#line 2866 "rtf.y"
+{ FLAG_Integrale=INTPROD; ;
+ break;}
+case 1142:
+#line 2877 "rtf.y"
+{ FLAG_Suscript=EQUP; ;
+ break;}
+case 1144:
+#line 2879 "rtf.y"
+{ FLAG_Suscript=EQDO; ;
+ break;}
+case 1145:
+#line 2882 "rtf.y"
+{
+ if (FLAG_SusTab) ifDTfprintf(SORT,"$\\\\\n$");
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ ;
+ break;}
+case 1146:
+#line 2896 "rtf.y"
+{
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ ;
+ break;}
+case 1147:
+#line 2910 "rtf.y"
+{
+ if (FLAG_SusTab) ifDTfprintf(SORT,"$\\\\\n$");
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ ;
+ break;}
+case 1151:
+#line 2929 "rtf.y"
+{ ifDTfprintf(SORT,"()"); ;
+ break;}
+case 1152:
+#line 2930 "rtf.y"
+{ ifDTfprintf(SORT,"("); ;
+ break;}
+case 1153:
+#line 2931 "rtf.y"
+{ ifDTfprintf(SORT,")"); ;
+ break;}
+case 1156:
+#line 2937 "rtf.y"
+{
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==0 && !FLAG_Indice)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==0 && !FLAG_Exposant)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ yyval.pcdata="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1157:
+#line 2959 "rtf.y"
+{
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==0 && !FLAG_Indice)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==0 && !FLAG_Exposant)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ yyval.pcdata="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1158:
+#line 2981 "rtf.y"
+{ ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ ;
+ break;}
+case 1160:
+#line 2987 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[0].pcdata;
+ ;
+ break;}
+case 1161:
+#line 2994 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[0].pcdata;
+ ;
+ break;}
+case 1162:
+#line 3001 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[-1].pcdata;
+ ;
+ break;}
+case 1163:
+#line 3008 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[-1].pcdata;
+ ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 465 "/usr/local/lib/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 3019 "rtf.y"
+
+#include "rtf.lex.c"
+
+
+
+
+
diff --git a/support/w2latex/rtf.ascii.c b/support/w2latex/rtf.ascii.c
new file mode 100644
index 0000000000..88fde0b50f
--- /dev/null
+++ b/support/w2latex/rtf.ascii.c
@@ -0,0 +1,443 @@
+#define MAXASCII_PC 256
+#define DEBASCII_PC 161
+#define MAXASCII_MAC 256
+#define DEBASCII_MAC 128
+char ASCII_PC[MAXASCII_PC-DEBASCII_PC][15]=
+{"!`",
+ "c",
+ "{\\it\\$}",
+ "\\o ",
+ "Y",
+ "\\mid ",
+ "\\S ",
+ "\\\"",
+ "\\copyright ",
+ "a",
+ "\"",
+ "\\neg ",
+ "-",
+ "\\copyright ",
+ "\\= ",
+ "\\circ ",
+ "\\pm ",
+ "\\^{2}",
+ "\\^{3}",
+ "'",
+ "\\mu ",
+ "\\P ",
+ "\\cdot ",
+ "\\c ",
+ "\\^{1}",
+ "\\circ ",
+ "\"",
+ "1/4",
+ "1/2",
+ "3/4",
+ "?`",
+ "\\`A",
+ "\\'A",
+ "\\^A",
+ "\\~A",
+ "\\\"A",
+ "\\AA ",
+ "\\AE ",
+ "\\c{C}",
+ "\\`E",
+ "\\'E",
+ "\\^E",
+ "\\\"E",
+ "\\`I",
+ "\\'I",
+ "\\^I",
+ "\\\"I",
+ "\\OE ",
+ "\\~N",
+ "\\`O",
+ "\\'O",
+ "\\^O",
+ "\\~O",
+ "\\\"O",
+ "X", /* A revoir */
+ "\\O ",
+ "\\`U",
+ "\\'U",
+ "\\^U",
+ "\\\"U",
+ "\\'Y",
+ "P", /* A revoir */
+ "\\ss ",
+ "\\`a",
+ "\\'a",
+ "\\^a",
+ "\\~a",
+ "\\\"a",
+ "\\aa ",
+ "\\ae ",
+ "\\c c",
+ "\\`e",
+ "\\'e",
+ "\\^e",
+ "\\\"e",
+ "\\`{\\i}",
+ "\\'{\\i}",
+ "\\^{\\i}",
+ "\\\"{\\i}",
+ "d", /* A revoir */
+ "\\~n",
+ "\\`o",
+ "\\'o",
+ "\\^o",
+ "\\~o",
+ "\\\"o",
+ "\\%",
+ "\\o ",
+ "\\`u",
+ "\\'u",
+ "\\^u",
+ "\\\"u",
+ "\\'y",
+ "P",
+ "\\\"y"};
+char ASCII_MAC[MAXASCII_MAC-DEBASCII_MAC][15]=
+{"\\\"A",
+ "\\AA ",
+ "\\c{C}",
+ "\\'E",
+ "\\~N",
+ "\\\"O",
+ "\\\"U",
+ "\\'a",
+ "\\`a",
+ "\\^a",
+ "\\\"a",
+ "\\~a",
+ "\\aa ",
+ "\\c{c}",
+ "\\'e",
+ "\\`e",
+ "\\^e",
+ "\\\"e",
+ "\\'i",
+ "\\`i",
+ "\\^i",
+ "\\\"i",
+ "\\~n",
+ "\\'o",
+ "\\`o",
+ "\\^o",
+ "\\\"o",
+ "\\~o",
+ "\\'u",
+ "\\`u",
+ "\\^u",
+ "\\\"u",
+ "\\dag ",
+ "\\circ ",
+ "c", /* A revoir */
+ "{\\it\\$}",
+ "\\S ",
+ "\\bullet ",
+ "\\P ",
+ "\\ss ",
+ "\\copyright ",
+ "\\copyright ",
+ "\\copyright ",
+ "\\' ",
+ "\\\"",
+ "\\neq ",
+ "\\AE ",
+ "\\O ",
+ "\\infty ",
+ "\\pm ",
+ "\\leq ",
+ "\\geq ",
+ "Y",
+ "\\mu ",
+ "\\partial ",
+ "\\Sigma ",
+ "\\Pi ",
+ "\\pi ",
+ "\\int ",
+ "a",
+ "o",
+ "\\Omega ",
+ "\\ae ",
+ "\\o ",
+ "?`",
+ "!`",
+ "\\neg ",
+ "\\surd ",
+ "f",
+ "\\approx ",
+ "\\Delta",
+ "\"",
+ "\"",
+ "\\ldots ",
+ " ",
+ "\\`A",
+ "\\~{A}",
+ "\\~{O}",
+ "\\OE",
+ "\\oe",
+ "-",
+ "\\cdots ",
+ "\"",
+ "\"",
+ "`",
+ "'",
+ "\\div ",
+ "\\diamondsuit ",
+ "\\\"y",
+ "\\\"Y",
+ "/",
+ "\\o ",
+ "\"",
+ "\"",
+ "fi",
+ "fl",
+ "\\ddag ",
+ "\\cdot ",
+ "'",
+ "\"",
+ "\\%",
+ "\\^A",
+ "\\^E",
+ "\\'A",
+ "\\\"E",
+ "\\`E",
+ "\\'I",
+ "\\^I",
+ "\\\"I",
+ "\\`I",
+ "\\'O",
+ "\\^O",
+ "{\\cal Sun}",
+ "\\`O",
+ "\\'U",
+ "\\^U",
+ "\\`U",
+ "\\prime ",
+ "\\^ ",
+ "\\~ ",
+ "\\= ",
+ "\\u ",
+ "\\. ",
+ "\\. ",
+ "\\c ",
+ "\\\"",
+ "\\c ",
+ "\\v "};
+char ASCII_PC_MATH[MAXASCII_PC-DEBASCII_PC][15]=
+{"!`",
+ "c",
+ "{\\it\\$}",
+ "\\o ",
+ "Y",
+ "\\mid ",
+ "\\S ",
+ "\\\"",
+ "\\copyright ",
+ "a",
+ "\"",
+ "\\neg ",
+ "-",
+ "\\copyright ",
+ "\\= ",
+ "\\circ ",
+ "\\pm ",
+ "\\^{2}",
+ "\\^{3}",
+ "'",
+ "\\mu ",
+ "\\P ",
+ "\\cdot ",
+ "\\c ",
+ "\\^{1}",
+ "\\circ ",
+ "\"",
+ "1/4",
+ "1/2",
+ "3/4",
+ "?`",
+ "\\grave A",
+ "\\acute A",
+ "\\hat A",
+ "\\tilde A",
+ "\\ddot A",
+ "\\AA ",
+ "\\AE ",
+ "\\c{C}",
+ "\\grave E",
+ "\\acute E",
+ "\\hat E",
+ "\\ddot E",
+ "\\grave I",
+ "\\acute I",
+ "\\hat I",
+ "\\ddot I",
+ "\\OE ",
+ "\\tilde N",
+ "\\grave O",
+ "\\acute O",
+ "\\hat O",
+ "\\tilde O",
+ "\\ddot O",
+ "X", /* A revoir */
+ "\\O ",
+ "\\grave U",
+ "\\acute U",
+ "\\hat U",
+ "\\ddot U",
+ "\\acute Y",
+ "P", /* A revoir */
+ "\\ss ",
+ "\\grave a",
+ "\\acute a",
+ "\\hat a",
+ "\\tilde a",
+ "\\ddot a",
+ "\\aa ",
+ "\\ae ",
+ "\\c c",
+ "\\grave e",
+ "\\acute e",
+ "\\hat e",
+ "\\ddot e",
+ "\\grave {\\i}",
+ "\\acute {\\i}",
+ "\\hat {\\i}",
+ "\\ddot {\\i}",
+ "d", /* A revoir */
+ "\\tilde n",
+ "\\grave o",
+ "\\acute o",
+ "\\hat o",
+ "\\tilde o",
+ "\\ddot o",
+ "\\%",
+ "\\o ",
+ "\\grave u",
+ "\\acute u",
+ "\\hat u",
+ "\\ddot u",
+ "\\acute y",
+ "P",
+ "\\ddot y"};
+char ASCII_MAC_MATH[MAXASCII_MAC-DEBASCII_MAC][15]=
+{"\\ddot A",
+ "\\AA ",
+ "\\c{C}",
+ "\\acute E",
+ "\\tilde N",
+ "\\ddot O",
+ "\\ddot U",
+ "\\acute a",
+ "\\grave a",
+ "\\hat a",
+ "\\ddot a",
+ "\\tilde a",
+ "\\aa ",
+ "\\c{c}",
+ "\\acute e",
+ "\\grave e",
+ "\\hat e",
+ "\\ddot e",
+ "\\acute i",
+ "\\grave i",
+ "\\hat i",
+ "\\ddot i",
+ "\\tilde n",
+ "\\acute o",
+ "\\grave o",
+ "\\hat o",
+ "\\ddot o",
+ "\\tilde o",
+ "\\acute u",
+ "\\grave u",
+ "\\hat u",
+ "\\ddot u",
+ "\\dag ",
+ "\\circ ",
+ "c", /* A revoir */
+ "{\\it\\$}",
+ "\\S ",
+ "\\bullet ",
+ "\\P ",
+ "\\ss ",
+ "\\copyright ",
+ "\\copyright ",
+ "\\copyright ",
+ "\\acute ",
+ "\\ddot ",
+ "\\neq ",
+ "\\AE ",
+ "\\O ",
+ "\\infty ",
+ "\\pm ",
+ "\\leq ",
+ "\\geq ",
+ "Y",
+ "\\mu ",
+ "\\partial ",
+ "\\Sigma ",
+ "\\Pi ",
+ "\\pi ",
+ "\\int ",
+ "a",
+ "o",
+ "\\Omega ",
+ "\\ae ",
+ "\\o ",
+ "?`",
+ "!`",
+ "\\neg ",
+ "\\surd ",
+ "f",
+ "\\approx ",
+ "\\Delta",
+ "\"",
+ "\"",
+ "`",
+ "'",
+ "\\div ",
+ "\\diamondsuit ",
+ "\\ddot y",
+ "\\ddot Y",
+ "/",
+ "\\o ",
+ "\"",
+ "\"",
+ "fi",
+ "fl",
+ "\\ddag ",
+ "\\cdot ",
+ "'",
+ "\"",
+ "\\%",
+ "\\hat A",
+ "\\hat E",
+ "\\acute A",
+ "\\ddot E",
+ "\\grave E",
+ "\\acute I",
+ "\\hat I",
+ "\\ddot I",
+ "\\grave I",
+ "\\acute O",
+ "\\hat O",
+ "{\\cal Sun}",
+ "\\grave O",
+ "\\acute U",
+ "\\hat U",
+ "\\grave U",
+ "\\prime ",
+ "\\hat { }",
+ "\\tilde { } ",
+ "\\= ",
+ "\\u ",
+ "\\. ",
+ "\\. ",
+ "\\c ",
+ "\\ddot { }",
+ "\\c ",
+ "\\v "};
diff --git a/support/w2latex/rtf.context.c b/support/w2latex/rtf.context.c
new file mode 100644
index 0000000000..b7ce8a5e67
--- /dev/null
+++ b/support/w2latex/rtf.context.c
@@ -0,0 +1,182 @@
+void parcourscontexts(void);
+/**************************************************************************************************
+** Function name : nouvcontext
+**
+** Description : Cree un nouveau maillon contexte a partir de sa description et retourne un
+ pointeur sur ce maillon
+** Input : Etat: Centre, aligne a gauche, aligne a droite ou justifie.
+** Output : Pointeur sur le maillon cree.
+**************************************************************************************************/
+p_contexte nouvcontext(int Etatctxt)
+{
+ p_contexte contextemp=DebLisContextes;
+ p_contexte contextaux=NULL;
+ /*fprintf(stderr,"NouvContextIn\n");*/
+ if (contextemp!=NULL)
+ {
+ while(contextemp->suiv!=NULL)
+ contextemp=contextemp->suiv;
+ contextaux=(p_contexte) malloc (sizeof(t_contexte));
+ if (contextaux==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: MALLOC FAILED\n");
+ exit(0);
+ }
+ contextemp->suiv=contextaux;
+ contextemp->suiv->prec=contextemp;
+ contextemp=contextemp->suiv;
+ }
+ else
+ {
+ contextemp=(p_contexte) malloc (sizeof(t_contexte));
+ if (contextemp==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: MALLOC FAILED\n");
+ exit(0);
+ }
+ DebLisContextes=contextemp;
+ contextemp->prec=NULL;
+ };
+ contextemp->EtatTexte=Etatctxt;
+ contextemp->suiv=NULL;
+ /*fprintf(stderr,"NouvContextOut\n");*/
+ return contextemp;
+}
+
+/**************************************************************************************************
+** Function name : contextback
+**
+** Description :
+** Input :
+** Output :
+**************************************************************************************************/
+contextback()
+{
+ /*fprintf(stderr,"ContextBackIn\n");*/
+ parcourscontexts();
+ if (ContextActuel!=NULL)
+ {
+ switch (ContextActuel->EtatTexte)
+ {
+ case JUST:
+ break;
+ case CENTER:
+ FLAG_Center=0;
+ fprintf(SORT,"\n\\end{center}%%\n");
+ break;
+ case RIGHT:
+ FLAG_FlushRight=0;
+ fprintf(SORT,"\n\\end{flushright}%%\n");
+ break;
+ case LEFT:
+ FLAG_FlushLeft=0;
+ fprintf(SORT,"\n\\end{flushleft}%%\n");
+ break;
+ default:
+ /*fprintf(SORT,"\nERROR: Contexte\n");*/
+ break;
+ }
+ ContextActuel=ContextActuel->prec;
+ if (ContextActuel!=NULL)
+ {
+ free(ContextActuel->suiv);
+ ContextActuel->suiv=NULL;
+ }
+ else
+ {
+ free(DebLisContextes);
+ DebLisContextes=NULL;
+ ContextActuel=NULL;
+ }
+ }
+}
+
+/**************************************************************************************************
+** Function name : parcourscontexts
+**
+** Description : Parcours de la liste chainee de contextes. (Debuggage);
+** Input :void
+** Output :void
+**************************************************************************************************/
+void parcourscontexts(void)
+{
+ /*p_contexte contextemp=DebLisContextes;
+ while (contextemp!=NULL)
+ {
+ contextemp=contextemp->suiv;
+ }
+ fprintf(stderr,"ParcoursContextOut\n");*/
+}
+
+/**************************************************************************************************
+** Function name : endkeepcontext
+**
+** Description : Termine le contexte courrant mais le garde en tant que contexte courrant.
+ Utile pour les Tableaux, car TeX impose de terminer les environnements
+ avant de sortir de la minipage, alors que RTF ne le fait pas.
+ A utiliser suivi immediatement de showcontext...
+** Input :void
+** Output :void
+**************************************************************************************************/
+void endkeepcontext(void)
+{
+ if (ContextActuel!=NULL)
+ {
+ switch (ContextActuel->EtatTexte)
+ {
+ case JUST:
+ break;
+ case CENTER:
+ FLAG_Center=1;
+ fprintf(SORT,"\n\\end{center}%%\n");
+ break;
+ case RIGHT:
+ FLAG_FlushRight=1;
+ fprintf(SORT,"\n\\end{flushright}%%\n");
+ break;
+ case LEFT:
+ FLAG_FlushLeft=1;
+ fprintf(SORT,"\n\\end{flushleft}%%\n");
+ break;
+ default:
+ fprintf(SORT,"\nERROR: Contexte\n");
+ }
+ }
+}
+
+
+/**************************************************************************************************
+** Function name : showcontext
+**
+** Description : Exprime les caracteristiques du contexte courrant. A utiliser en particulier
+ pour les tableaux apres endkeepcontext
+** Input :void
+** Output :void
+**************************************************************************************************/
+void showcontext(void)
+{
+ if (ContextActuel!=NULL)
+ {
+ switch (ContextActuel->EtatTexte)
+ {
+ case JUST:
+ break;
+ case CENTER:
+ FLAG_Center=1;
+ fprintf(SORT,"\n\\begin{center}%%\n");
+ break;
+ case RIGHT:
+ FLAG_FlushRight=1;
+ fprintf(SORT,"\n\\begin{flushright}%%\n");
+ break;
+ case LEFT:
+ FLAG_FlushLeft=1;
+ fprintf(SORT,"\n\\begin{flushleft}%%\n");
+ break;
+ default:
+ fprintf(SORT,"\nERROR: Contexte\n");
+ }
+ }
+}
+
+
diff --git a/support/w2latex/rtf.fields.c b/support/w2latex/rtf.fields.c
new file mode 100644
index 0000000000..3f6eb2c40b
--- /dev/null
+++ b/support/w2latex/rtf.fields.c
@@ -0,0 +1,143 @@
+#define NB_MC_Fields 1
+typedef struct _E_Q_FIELDS_ { char * FieldRTF; char * MyField; } EQField;
+EQField TAB_MC_Fields[NB_MC_Fields]=
+{ { "eq", "\\pzpeq" }
+};
+
+/**************************************************************************************************
+** Function name : filtrefields
+**
+** Description : Recupere un champ field et le prepare a etre analyse par yylex
+** Input : void
+** Output : void
+**************************************************************************************************/
+void filtrefields(void)
+{
+ int c;
+ int i=0;
+ int j=0;
+ int k=0;
+ int l=0;
+ int FLAG_Moulinne_Eq=0;
+ int FFlongeur=5000;
+ char FFcalutemp;
+ char * FFtableau;
+ char * FFtableautemp;
+ char * MCField;
+ FFtableau=(char *) malloc (FFlongeur);
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"r"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ rewind(auxiliaire);
+ c=fgetc(auxiliaire);
+ while(c!=EOF)
+ {
+ if (i==FFlongeur)
+ {
+ FFlongeur*=2;
+ FFtableau=(char * ) realloc (FFtableau, FFlongeur + 1);
+ }
+ if (c!='\n') /* On supprime les retours a la ligne a l'interieur des fields */
+ FFtableau[i++]=c;
+ c=fgetc(auxiliaire);
+ }
+ FFtableau[i-1]='\0'; /* i-1 car le dernier caractere est une accolade fermante qui sera reprise
+ dans le fichier d'entree standard... (bidouille du a la procedure
+ Avance_Sauve_Champ */
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"w"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ exit(0);
+ fclose(entree);
+ fclose(sortie);
+ }
+ /* On a recupere le fiels dans le sale format de RTF. On essaye de le purifier.*/
+ /* Recuperation du mot de commande */
+ /* On saute tous les espaces */
+ i=0;
+ while( i< strlen(FFtableau) && FFtableau[i]==' ')
+ i++;
+ j=i;
+ FFtableautemp=(char *) malloc (strlen(FFtableau));
+ /* Si le premier caractere n'est pas '{' on recupere le mot directement */
+ if ( FFtableau[i]!='{' )
+ {
+ while( i< strlen(FFtableau) && (FFtableau[i]=='=' || ( FFtableau[i]>='a' && FFtableau[i]<='z' )
+ || ( FFtableau[i]>='A' && FFtableau[i]<='Z' ) ) )
+ i++;
+ if (i==j)
+ {
+ /* Il s'est produit une erreur: On n'a pas trouve de mot de commande
+ fprintf(stderr,"ERREUR dans filtrefields : %s \n",FFtableau );*/
+ yyerror("Fields Error");
+ }
+ MCField=(char *) malloc (25+i+1);
+ strncpy(MCField,&FFtableau[j],i-j);
+ MCField[i-j]='\0';
+ strcpy(FFtableautemp,&FFtableau[i]);
+ }
+ /* Sinon, on l'extrait du bloc */
+ else
+ {
+ k=1;
+ i++;
+ while(k!=0)
+ {
+ if (FFtableau[i]=='{')
+ k++;
+ if (FFtableau[i]=='}')
+ k--;
+ i++;
+ }
+ MCField=(char *) malloc (25+i+1);
+ strncpy(MCField,&FFtableau[j],i-j);
+ MCField[i-j]='\0';
+ strcpy(FFtableautemp,&FFtableau[i]);
+ /* Dans MCField on a le bloc contenant le mot de commande du field */
+ /* On le recupere et le remplace au bloc entier */
+ };
+ /* Transformation du mot de commande */
+ /* On compare avec la table de mots de commande de fields et on cherche un equivalent
+ en pseudo-RTF */
+ l=0;
+ while(l<NB_MC_Fields && strcmp(MCField,TAB_MC_Fields[l].FieldRTF))
+ l++;
+ /* Si on n'en a pas trouve un, on positionne AUTREFIELD et on laisse le texte entre commentaires
+ TEX ou on le vide */
+ if (l==NB_MC_Fields)
+ {
+ strcpy(MCField,"\\pzpautrefield ");
+ strcpy(FFtableau,MCField);
+ strcat(FFtableau,"FIELD Inconnu");
+ }
+ else
+ {
+ strcpy(MCField,TAB_MC_Fields[l].MyField);
+ /* Si c'etait une Equation, on positionne un FLAG qui appelle la moulinette*/
+ if ( !strcmp(TAB_MC_Fields[l].FieldRTF,"eq") ) FLAG_Moulinne_Eq=1;
+ /* On prepare le tout a etre renvoye dans le fichier auxiliaire */
+ strcpy(FFtableau,MCField);
+ strcat(FFtableau,FFtableautemp);
+ };
+ /* On re-ecris le field purifie dans le fichier auxiliaire. */
+ fprintf(auxiliaire,"%s",FFtableau);
+ free(FFtableau);
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"r"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ /* Si c'etait une equation, on apelle la moulinette et on resette le FLAG */
+ if (FLAG_Moulinne_Eq) moulineFormule();
+ FLAG_Moulinne_Eq=0; /* A la limite, ce n'est meme pas la peine... Variable locale. */
+}
+
diff --git a/support/w2latex/rtf.fonts.c b/support/w2latex/rtf.fonts.c
new file mode 100644
index 0000000000..c277c19afa
--- /dev/null
+++ b/support/w2latex/rtf.fonts.c
@@ -0,0 +1,246 @@
+#define MaxFontsTex 21
+typedef struct _E_Q_FONTS_ { char * FontRTF; char * FontTeX; } EQFonts;
+EQFonts EqFontsRTF_TeX[MaxFontsTex]=
+{ { "Times New Roman", "\\pzrm " },
+ { "Arial", "\\pzrm " },
+ { "AvantGarde", "\\pzrm " },
+ { "Bookman", "\\pzrm " },
+ { "Courier", "\\tt " },
+ { "Courier New", "\\tt " },
+ { "Fences", "\\pzrm " },
+ { "Helvetica", "\\pzrm\\bf " },
+ { "Helvetica-Narrow", "\\pzrm " },
+ { "Modern", "\\pzrm " },
+ { "MS LineDraw", "\\pzrm " },
+ { "MT Extra", "\\pzrm " },
+ { "NewCenturySchlbk", "\\pzrm " },
+ { "Palatino", "\\pzrm " },
+ { "Roman", "\\pzrm " },
+ { "Script", "\\pzrm\\it " },
+ { "Symbol", "\\pzrm " },
+ { "Times", "\\pzrm " },
+ { "Wingdings", "\\pzrm " },
+ { "ZapfChancery", "\\pzrm \\it " },
+ { "ZapfDingbats", "\\pzrm " },
+};
+typedef struct _E_Q_TAILLES_ { int tailleRTF; char * tailleTeX; } EQTailles;
+#define MaxTaillesTex 25
+EQTailles EqTailles_TeX[MaxTaillesTex]=
+{ { 1, "\\tiny " }, { 2, "\\tiny " }, { 3, "\\tiny " }, { 4, "\\tiny " }, { 5, "\\tiny " },
+ { 6, "\\tiny " }, { 7, "\\scriptsize " }, { 8, "\\footnotesize " }, { 9, "\\small " },
+ { 10, "\\normalsize " }, { 11, "\\normalsize " }, { 12, "\\large " }, { 13, "\\large " }, { 14, "\\Large " },
+ { 15, "\\Large " }, { 16, "\\Large " }, { 17, "\\LARGE " }, { 18, "\\LARGE " }, { 19, "\\LARGE " },
+ { 20, "\\huge " }, { 21, "\\huge " }, { 22, "\\huge " }, { 23, "\\huge " }, { 24, "\\huge " },
+ { 25, "\\Huge " },
+};
+#define MaxSymboles 256
+char FontSymboles[MaxSymboles][25]=
+{ "@","@","@","@","@","@","@","@",
+ "@","@","@","@","@","@","@","@",
+ "@","@","@","@","@","@","@","@",
+ "@","@","@","@","@","@","@","@",
+ "","!","\\forall ","\\#=","\\exists ","\\%","\\&","\\exists ",
+ "(",")","*","+",",","-",".","/",
+ "0","1","2","3","4","5","6","7",
+ "8","9",":",";","<","=",">","?",
+ "\\cong ","A","B","X","\\Delta ","E","\\Phi ","\\Gamma ",
+ "H","I","\\vartheta ","K","\\Lambda ","M","N","O",
+ "\\Pi ","\\Theta ","P","\\Sigma ","T","Y","\\varsigma ","\\Omega ",
+ "\\Xi ","\\Psi ","Z","[","\\, ","]","\\perp ","\\_",
+ "\\_","\\alpha ","\\beta ","\\chi ","\\delta ","\\varepsilon ","\\phi ","\\gamma ",
+ "\\eta ","\\iota ","\\varphi ","\\kappa ","\\lambda ","\\mu ","\\nu ","o",
+ "\\pi ","\\theta ","\\rho ","\\sigma ","\\tau ","\\upsilon ","\\varpi ","\\omega ",
+ "\\xi ","\\psi ","\\zeta ","\\{","|","\\}","\\~{}","@",
+ "@","@","@","@","@","@","@","@",
+ "@","@","@","@","@","@","@","@",
+ "@","@","@","@","@","@","@","@",
+ "@","@","@","@","@","@","@","@",
+ "@","\\Upsilon ","'","\\leq ","/","\\infinity ","f","\\clubsuit ",
+ "\\diamondsuit ","\\heartsuit ","\\spadesuite ","\\leftrightarrow ","\\leftarrow ",
+ "\\uparrow ","\\rightarrow ","\\downarrow ",
+ "\\circ ","\\pm ","@","\\geq ","\\times ","\\propto ","\\partial ","\\bullet ",
+ "\\div ","\\neq ","\\equiv ","\\approx ","\\cdots ","\\mid","-","\\hookleftarrow ",
+ "\\aleph ","\\Im ","\\Re ","@","\\otimes ","\\oplus ","\\oslash ","\\cap ",
+ "\\cup ","\\supset ","\\supseteq ","\\not\\subset ","\\subset ","\\subseteq ","\\in ","\\not\\in ",
+ "\\angle ","\\bigtriangledown ","\\copyright ","\\copyright ","\\copyright ","\\Pi ","\\surd ","\\cdot ",
+ "\\neg ","\\wedge ","\\vee ","\\Leftrightarrow ","\\Leftarrow ","\\Uparrow ","\\Rightarrow ","\\Downarrow ",
+ "\\diamond ","\\angle ","\\copyright ","\\copyright ","\\copyright ","\\Sigma ","{\\mathex \\char'060 }",
+ "{\\mathex \\char'102 }",
+ "{\\mathex \\char'100 }","{\\mathex \\char'062 }","{\\mathex \\char'102 }","{\\mathex \\char'064 }",
+ "{\\mathex \\char'070 }","{\\mathex \\char'074 }","{\\mathex \\char'072 }","{\\mathex \\char'102 }",
+ "@","{\\mathex \\char'105 }","{\\mathex \\char'122 }","{\\mathex \\char'070 }","{\\mathex \\char'102 }","{\\mathex \\char'073 }",
+ "{\\mathex \\char'061 }","{\\mathex \\char'102 }",
+ "{\\mathex \\char'101 }","{\\mathex \\char'063 }","{\\mathex \\char'102 }","{\\mathex \\char'065 }",
+ "{\\mathex \\char'071 }","{\\mathex \\char'075 }","{\\mathex \\char'073 }","@"
+};
+
+char * chercheEqTeX(char * );
+/**************************************************************************************************
+** Function name : nouvfonte
+**
+** Description : Cree un nouveau maillon avec la description d'une fonte
+** Input : Declarations sur les fontes
+** Output : Pointeur sur le maillon cree.
+**************************************************************************************************/
+p_LFonte nouvfonte(int NLF_Fontnum, int NLF_Fontfamily, int NLF_Fcharset,
+ int NLF_Fprq, char * NLF_Fontname)
+{
+ p_LFonte LFtemp=DebLisFontes;
+ char * pcalutemp;
+ if (LFtemp!=NULL)
+ {
+ while(LFtemp->suiv!=NULL)
+ LFtemp=LFtemp->suiv;
+ LFtemp->suiv=(p_LFonte) malloc (sizeof(t_LFonte));
+ LFtemp=LFtemp->suiv;
+ }
+ else
+ {
+ LFtemp=(p_LFonte) malloc (sizeof(t_LFonte));
+ DebLisFontes=LFtemp;
+ };
+ LFtemp->LF_Fontnum=NLF_Fontnum;
+ LFtemp->LF_Fontfamily=NLF_Fontfamily;
+ LFtemp->LF_Fcharset=NLF_Fcharset;
+ LFtemp->LF_Fprq=NLF_Fprq;
+ LFtemp->LF_Fontname=(char *) malloc (strlen(NLF_Fontname)+1);
+ strcpy(LFtemp->LF_Fontname,NLF_Fontname);
+ pcalutemp=chercheEqTeX(NLF_Fontname);
+ LFtemp->LF_TexEquiv=(char *) malloc (strlen(pcalutemp)+1);
+ strcpy(LFtemp->LF_TexEquiv,pcalutemp);
+ LFtemp->suiv=NULL;
+}
+
+/**************************************************************************************************
+** Function name : cherchefonte
+**
+** Description : A partir du numero de fonte, cherche une fonte donnee.
+** Input : Numero de fonte.
+** Output : Pointeur sur le maillon contenant les caracteristiques.
+**************************************************************************************************/
+p_LFonte cherchefonte(int CLFnum)
+{
+ p_LFonte LFtemp=DebLisFontes;
+ while (LFtemp!=NULL && LFtemp->LF_Fontnum!=CLFnum)
+ LFtemp=LFtemp->suiv;
+ return LFtemp;
+}
+
+/**************************************************************************************************
+** Function name : parcoursfontes
+**
+** Description :
+** Input :
+** Output :
+**************************************************************************************************/
+parcoursfontes()
+{
+/* p_LFonte LFtemp=DebLisFontes;
+ while (LFtemp!=NULL)
+ {
+ fprintf(stderr,"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
+ fprintf(stderr,"LF_Fontnum:%d;\nLF_Fontfamily:%d;\n",LFtemp->LF_Fontnum,LFtemp->LF_Fontfamily);
+ fprintf(stderr,"LF_Fcharset:%d;\nLF_Fprq:%d;\n",LFtemp->LF_Fcharset,LFtemp->LF_Fprq);
+ fprintf(stderr,"LF_Fontname:%s;\nLF_TexEquiv%s\n",LFtemp->LF_Fontname,LFtemp->LF_TexEquiv);
+ fprintf(stderr,"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
+ LFtemp=LFtemp->suiv;
+ }*/
+}
+
+/**************************************************************************************************
+** Function name : chercheEqTeX
+**
+** Description : Cherche un equivalent TeX pour un nom de fonte RTF
+** Input : Nom de la fonte RTF
+** Output : Equivalent TeX (ou police par defaut sinon.
+**************************************************************************************************/
+char * chercheEqTeX(char * FontNameRTF)
+{
+ int i;
+ for (i=0;i<MaxFontsTex;i++)
+ {
+ if (strcmp(FontNameRTF,EqFontsRTF_TeX[i].FontRTF)==0)
+ return EqFontsRTF_TeX[i].FontTeX;
+ }
+ /* Si on est toujours la, c'est qu'on n'a pas trouve de fonte correspondante: On prends la valeur par
+ defaut: Times New Roman ou cmr10 */
+ return "\\pzrm ";
+}
+
+/**************************************************************************************************
+** Function name : EqTeXTaille
+**
+** Description : Determine la taille de police a utiliser, a partir de la donnee RTF,
+ et retourne la chaine de caracteres equivalente TeX.
+** Input : Taille de la police en demi-points.
+** Output : Equivalent TeX
+**************************************************************************************************/
+char * EqTeXTaille(int TailleRTF)
+{
+ TailleRTF/=2;
+ if (TailleRTF<1)
+ return EqTailles_TeX[0].tailleTeX;
+ if (TailleRTF>MaxTaillesTex)
+ return EqTailles_TeX[MaxTaillesTex-1].tailleTeX;
+ return EqTailles_TeX[TailleRTF-1].tailleTeX;
+}
+
+/**************************************************************************************************
+** Function name : printSymbol
+**
+** Description :
+** Input : char * chaineIN
+** Output : void
+**************************************************************************************************/
+void printSymbol(char * chaineIN)
+{
+ int i=0;
+ for (i=0;i<strlen(chaineIN);i++)
+ fprintf(SORT,"%s",FontSymboles[chaineIN[i]]);
+}
+
+/**************************************************************************************************
+** Function name : printText
+**
+** Description :
+** Input : char * chaineIN
+** Output : void
+**************************************************************************************************/
+void printText(char * chaineIN)
+{
+ int i=0;
+ for (i=0;i<strlen(chaineIN);i++)
+ {
+ if ((chaineIN[i]=='|' || chaineIN[i]=='<' || chaineIN[i]=='>') && FLAG_Equation==0)
+ {
+ fprintf(SORT,"$%c$",chaineIN[i]);
+ }
+ else fprintf(SORT,"%c",chaineIN[i]);
+ }
+}
+
+/**************************************************************************************************
+** Function name : printApostrophe
+**
+** Description :
+** Input : int ulluIN
+** Output : void
+**************************************************************************************************/
+void printApostrophe(int ulluIN)
+{
+ if (FLAG_Equation==0)
+ {
+ if (ulluIN<238)
+ fprintf(SORT,"$%s$",FontSymboles[ulluIN]);
+ else
+ fprintf(SORT,"%s",FontSymboles[ulluIN]);
+ }
+ else
+ {
+ if (ulluIN<238)
+ fprintf(SORT,"%s",FontSymboles[ulluIN]);
+ else
+ fprintf(SORT,"$%s$",FontSymboles[ulluIN]);
+ }
+}
+
diff --git a/support/w2latex/rtf.formule.c b/support/w2latex/rtf.formule.c
new file mode 100644
index 0000000000..923aa63386
--- /dev/null
+++ b/support/w2latex/rtf.formule.c
@@ -0,0 +1,333 @@
+/**************************************************************************************************
+** Function name : moulineFormule
+**
+** Description : Apres detection d'une formule, on la mouline de facon a rectifier les
+ absurdites de formatage de RTF-Fields.
+** Input : void
+** Output : void
+**************************************************************************************************/
+void moulineFormule(void)
+{
+ int c;
+ int i=0;
+ int j=0;
+ int k=0;
+ int l=0;
+ int FLAG_Inblock=0;
+ int MFlongeur=5000;
+ char MFcalutemp;
+ char * MFtableau;
+ char * MFtableautemp;
+ char TABFmt[5][128];
+ /* Esperons qu'il n'y aura pas plus de 5 blocs imbriques avec 128 caracteres de mots de commande... */
+ MFtableau=(char *) malloc (MFlongeur);
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"r"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ rewind(auxiliaire);
+ c=fgetc(auxiliaire);
+ while(c!=EOF)
+ {
+ if (i==MFlongeur)
+ {
+ MFlongeur*=2;
+ MFtableau=(char * ) realloc (MFtableau, MFlongeur + 1);
+ }
+ if (c!='\n') /* On supprime les retours a la ligne a l'interieur des formules */
+ MFtableau[i++]=c;
+ c=fgetc(auxiliaire);
+ }
+ MFtableau[i]='\0';
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"w"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ /* On a recupere la formule dans le sale format de RTF. On essaye de la purifier.*/
+ /* Toute formule commence par "eq " */
+ i=0;
+ MFtableautemp=(char *) malloc (strlen(MFtableau));
+ while (i<strlen(MFtableau))
+ {
+ if (MFtableau[i]=='{')
+ FLAG_Inblock++;
+ else if (MFtableau[i]=='}')
+ FLAG_Inblock--;
+ else if (MFtableau[i]=='\\' && MFtableau[i+1]!='\\' && FLAG_Inblock && MFtableau[i+1]!='\'')
+ {
+ /* Lire les mots de commande et les enregistrer dans un tableau.
+ Remarque: On les conserve toujours dans MFtableau */
+ j=0;
+ while (MFtableau[i]!=' ' && i<strlen(MFtableau) && MFtableau[i]!='}' &&
+ MFtableau[i]!=',' && MFtableau[i]!='(' && MFtableau[i]!=')' &&
+ MFtableau[i]!=';')
+ TABFmt[FLAG_Inblock][j++]=MFtableau[i++];
+ TABFmt[FLAG_Inblock][j++]=' '; /* On ajoute un separateur: En mode maths les espaces sont
+ ignores par TeX :-) */
+ TABFmt[FLAG_Inblock][j]='\0';
+ i--;
+ }
+ else
+ if (FLAG_Inblock && (MFtableau[i]==',' || MFtableau[i]==';' || MFtableau[i]==')' || MFtableau[i]=='('))
+ {
+ MFcalutemp=MFtableau[i];
+ strcpy(MFtableautemp,&MFtableau[i+1]);
+ /* Fermeture du bloc */
+ MFtableau[i++]='}';
+ /* Ecriture du caractere special */
+ MFtableau[i++]=MFcalutemp;
+ /* Reouverture du bloc avec les caracteristiques precedentes */
+ MFtableau[i++]='{';
+ k=0;
+ while(k<=j)
+ {
+ MFtableau[i+k]=TABFmt[FLAG_Inblock][k];
+ k++;
+ }
+ i=strlen(MFtableau);
+ strcat(&MFtableau[i],MFtableautemp);
+ i--;
+ }
+ else
+ if (MFtableau[i]=='\\' && MFtableau[i+1]=='\\' && FLAG_Inblock)
+ {
+ /* Dans un bloc interne a l'equation, il y a un mot de commande de
+ type equation. */
+ /* On sauvegarde la chaine de mots de commande et ce qui suit*/
+ strcpy(MFtableautemp,&MFtableau[i]);
+ /* Fermeture du bloc */
+ MFtableau[i++]='}';
+ /* Ecriture de la chaine de mots de commande */
+ l=0;
+ do
+ {
+ MFtableau[i++]=MFtableautemp[l++];
+ } while (l<strlen(MFtableautemp) && MFtableautemp[l-1]!='(');
+ /* Reouverture du bloc avec les caracteristiques precedentes */
+ MFtableau[i++]='{';
+ k=0;
+ while(k<=j)
+ {
+ MFtableau[i+k]=TABFmt[FLAG_Inblock][k];
+ k++;
+ }
+ i=strlen(MFtableau);
+ strcat(&MFtableau[i],&MFtableautemp[l]);
+ i--;
+ }
+
+ i++;
+ }
+
+ /* On re-ecris la formule purifiee dans le fichier auxiliaire. */
+ fprintf(auxiliaire,"%s \\pzpendeq",MFtableau);
+ free(MFtableau);
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"r"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+}
+
+/**************************************************************************************************
+** Function name : moulineFormuleMAC
+**
+** Description : Apres detection d'une formule MAC, on la mouline de facon a rectifier les
+ absurdites de formatage de RTF-Fields.
+** Input : void
+** Output : void
+**************************************************************************************************/
+void moulineFormuleMAC(void)
+{
+ int c,oldc;
+ int i=0;
+ int j=0;
+ int k=0;
+ int l=0;
+ int FLAG_Inblock=0;
+ int FLAG_WasInBlock=0;
+ int MFlongeur=5000;
+ char MFcalutemp;
+ char * MFtableau;
+ char * MFtableautemp;
+ char TABFmt[5][128];
+ /* Esperons qu'il n'y aura pas plus de 5 blocs imbriques avec 128 caracteres de mots de commande... */
+ MFtableau=(char *) malloc (MFlongeur);
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"r"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ rewind(auxiliaire);
+ c=fgetc(auxiliaire);
+ oldc=c;
+ while(c!=EOF)
+ {
+ if (i==MFlongeur)
+ {
+ MFlongeur*=2;
+ MFtableau=(char * ) realloc (MFtableau, MFlongeur + 1);
+ }
+ if (c!='\n' && c!='|' && c!=';' && c!=' ' && c!=',')
+ /* On supprime les retours a la ligne et les espaces a l'interieur des formules */
+ MFtableau[i++]=c;
+ if (c=='|' && oldc=='\\') /* Et on remplace les '|' par des backslashs */
+ MFtableau[i++]='\\';
+ if (c==';')
+ MFtableau[i++]=','; /* On change les ';' en ','. On verra apres ce qui est plus adapte */
+ if (c==',')
+ MFtableau[i++]=';'; /* On change les ',' en ';'. On verra apres ce qui est plus adapte */
+ oldc=c;
+ c=fgetc(auxiliaire);
+ }
+ MFtableau[i]='\0';
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"w"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ /* On a recupere la formule dans le sale format de RTF. On essaye de la purifier.*/
+ /* Toute formule commence par "eq " */
+ i=0;
+ MFtableautemp=(char *) malloc (strlen(MFtableau));
+ while (i<strlen(MFtableau))
+ {
+ if (MFtableau[i]=='{' && i>0 && MFtableau[i-1]!='\\')
+ FLAG_Inblock++;
+ else
+ if (MFtableau[i]=='}' && i>0 && MFtableau[i-1]!='\\')
+ {
+ FLAG_Inblock--;
+ if (FLAG_Inblock==-1)
+ {
+ FLAG_Inblock=0;
+ FLAG_WasInBlock=1;
+ };
+ }
+ else
+ if (MFtableau[i]=='\\' && i>0 && i+2<=strlen(MFtableau) &&
+ MFtableau[i+1]=='\\' && MFtableau[i+2]=='\\')
+ {
+ strcpy(&MFtableau[i],&MFtableau[i+1]); /* Le pipe a ete transforme en antislash, donc il y en
+ a quatre maintenant (un en trop). On le vire. */
+ }
+ else
+ if ( (MFtableau[i]=='\\' && MFtableau[i+1]!='\\') && FLAG_Inblock && MFtableau[i+1]!='\'')
+ {
+ /* Lire les mots de commande et les enregistrer dans un tableau.
+ Remarque: On les conserve toujours dans MFtableau */
+ j=0;
+ while (MFtableau[i]!=' ' && i<strlen(MFtableau) && MFtableau[i]!='}' &&
+ MFtableau[i]!=',' && MFtableau[i]!='(' && MFtableau[i]!=')' &&
+ MFtableau[i]!=';' && !(MFtableau[i]=='\\' && MFtableau[i+1]=='\\')
+ && !(MFtableau[i]=='\\' && MFtableau[i+1]=='\''))
+ TABFmt[FLAG_Inblock][j++]=MFtableau[i++];
+ TABFmt[FLAG_Inblock][j++]=' '; /* On ajoute un separateur: On mode maths les espaces sont
+ ignores par TeX :-) */
+ TABFmt[FLAG_Inblock][j]='\0';
+ i--;
+ }
+ else
+ if (FLAG_Inblock && (MFtableau[i]==',' || MFtableau[i]==';' || MFtableau[i]==')' || MFtableau[i]=='('))
+ {
+ MFcalutemp=MFtableau[i];
+ strcpy(MFtableautemp,&MFtableau[i+1]);
+ /* Fermeture du bloc */
+ MFtableau[i++]='}';
+ /* Ecriture du caractere special */
+ MFtableau[i++]=MFcalutemp;
+ /* Reouverture du bloc avec les caracteristiques precedentes */
+ MFtableau[i++]='{';
+ k=0;
+ while(k<=j)
+ {
+ MFtableau[i+k]=TABFmt[FLAG_Inblock][k];
+ k++;
+ }
+ i=strlen(MFtableau);
+ strcat(&MFtableau[i],MFtableautemp);
+ i--;
+ }
+ else
+ if (MFtableau[i]=='\\' && MFtableau[i+1]=='\\' && FLAG_Inblock)
+ {
+ /* Dans un bloc interne a l'equation, il y a un mot de commande de
+ type equation. */
+ /* On sauvegarde la chaine de mots de commande et ce qui suit*/
+ strcpy(MFtableautemp,&MFtableau[i]);
+ /* Fermeture du bloc */
+ MFtableau[i++]='}';
+ /* Ecriture de la chaine de mots de commande */
+ l=0;
+ do
+ {
+ MFtableau[i++]=MFtableautemp[l++];
+ } while (l<strlen(MFtableautemp) && MFtableautemp[l-1]!='(');
+ /* Reouverture du bloc avec les caracteristiques precedentes */
+ MFtableau[i++]='{';
+ k=0;
+ while(k<=j)
+ {
+ MFtableau[i+k]=TABFmt[FLAG_Inblock][k];
+ k++;
+ }
+ i=strlen(MFtableau);
+ strcat(&MFtableau[i],&MFtableautemp[l]);
+ i--;
+ };
+
+ if (FLAG_WasInBlock==1)
+ {
+ FLAG_WasInBlock=-1;
+ strcpy(&MFtableau[i],&MFtableau[i+1]);
+ }
+ else i++;
+ }
+ /* if (FLAG_WasInBlock==-1 ) { MFtableau[i++]='}'; MFtableau[i]='\0'; }*/
+ if (FLAG_Inblock && FLAG_WasInBlock==0)
+ {
+ MFtableau[i++]='}';
+ MFtableau[i]='\0';
+ /* On re-ecris la formule purifiee dans le fichier auxiliaire. */
+ fprintf(auxiliaire,"%s \\pzpendeq {%s",MFtableau,TABFmt[FLAG_Inblock]);
+ }
+ else
+ {
+ /* On re-ecris la formule purifiee dans le fichier auxiliaire. */
+ if (FLAG_WasInBlock==-1)
+ {
+ fprintf(auxiliaire,"%s \\pzpendeq }",MFtableau);
+ }
+ else
+ {
+ fprintf(auxiliaire,"%s \\pzpendeq",MFtableau);
+ }
+ }
+ free(MFtableau);
+ fclose(auxiliaire);
+ if ((auxiliaire=fopen(nomsort,"r"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+}
+
diff --git a/support/w2latex/rtf.lex.c b/support/w2latex/rtf.lex.c
new file mode 100644
index 0000000000..89949770b9
--- /dev/null
+++ b/support/w2latex/rtf.lex.c
@@ -0,0 +1,744 @@
+#define MAX(a,b) ( a>b ? a : b )
+char *tampon;
+int length=512;
+char * nomsort;
+int motfini=0;
+#include <stdio.h>
+#include <stdlib.h>
+/* Declarations*/
+int yyerror(char * );
+
+#include "rtf.formule.c"
+#include "rtf.fields.c"
+#include "rtf.motcom.h"
+/**************************************************************************************************
+** Function name : valdefFD
+** --------
+** Description : Attribue les valeurs par defaut aux differents champs de formatage du document
+** Input : void
+** Output : void
+**************************************************************************************************/
+void valdefFD(void)
+{
+ PZ_FD.FDDEFTAB=(720/20);
+ PZ_FD.FDPAPERW=(12240/20);
+ PZ_FD.FDPAPERH=(15840/20);
+ PZ_FD.FDPSZ=0;
+ PZ_FD.FDMARGL=(1800/20);
+ PZ_FD.FDMARGR=(1800/20);
+ PZ_FD.FDMARGT=(1440/20);
+ PZ_FD.FDMARGB=(1440/20);
+ PZ_FD.FDFACINGP=0;
+ PZ_FD.FDGUTTER=0;
+ PZ_FD.FDMARGMIRROR=0;
+ PZ_FD.FDLANDSCAPE=0;
+ PZ_FD.FDPGNSTART=1;
+ PZ_FD.FDWIDOWCTRL=0;
+}
+
+
+
+/**************************************************************************************************
+** Function name : puretext
+** --------
+** Description : Lorsque l'on trouve une chaine de caracteres pure, il faut enlever les
+ retours a la ligne. En effet WORD coupe les lignes trop longues en plein milieu des mots !!
+ De meme, il y a des caracteres ASCII 7 bits que TeX considere des mots de commande. Il faut les
+ transformer dans son propre format. Ceci ne peut etre fait a l'interieur de la grammaire, car
+ le texte 7 bits est un token a part entiere.
+** Input : char * impuretamp: tampon avant d'avoir ete TeXifie.
+** Output : char * impuretamp: le meme.
+***************************************************************************************************/
+char* puretext(char * impuretamp)
+{
+ int i,j,k;
+ int longtemp=2*length;
+ char * tamptemp;
+ tamptemp=(char * ) malloc (longtemp +15);
+ i=0;
+ while(i<strlen(impuretamp))
+ {
+ if (i==longtemp)
+ {
+ longtemp*=2;
+ tamptemp=(char * ) realloc (longtemp +15);
+ }
+ if (impuretamp[i]=='\n')
+ {
+ strcpy(&impuretamp[i],&impuretamp[i+1]);
+ }
+ else
+ {
+ if (impuretamp[i]=='$' || impuretamp[i]=='#' ||
+ impuretamp[i]=='%' || impuretamp[i]=='&' ||
+ impuretamp[i]=='_' )
+ {
+ if ((strlen(impuretamp)+5)>=length)
+ {
+ impuretamp=(char * ) realloc (impuretamp, length + 5);
+ length+=5;
+ }
+ strcpy(&tamptemp[i+1],&impuretamp[i]);
+ tamptemp[i]='\\';
+ strcpy(&impuretamp[i],&tamptemp[i]);
+ i++;
+ }
+
+ else
+ {
+ if ((impuretamp[i]=='\\' && impuretamp[i+1]=='{') || (impuretamp[i]=='\\' && impuretamp[i+1]=='}'))
+ {
+ /* C'est parfait, on ne fait rien */
+ }
+ else
+ {
+ if (impuretamp[i]=='\\' && impuretamp[i+1]=='\\')
+ {
+ if ((strlen(impuretamp)+15)>=length)
+ {
+ impuretamp=(char * ) realloc (impuretamp, length + 5);
+ length+=15;
+ }
+ strcpy(&tamptemp[i],"$\\backslash$");
+ strcpy(&tamptemp[i+strlen("$\\backslash$")],&impuretamp[i+2]);
+ strcpy(&impuretamp[i],&tamptemp[i]);
+ i+=strlen("$\\backslash$");
+ }
+
+ else
+ {
+ if (impuretamp[i]=='~')
+ {
+ if ((strlen(impuretamp)+5)>=length)
+ {
+ impuretamp=(char * ) realloc (impuretamp, length + 5);
+ length+=5;
+ }
+ strcpy(&tamptemp[i],"\\~{}");
+ strcpy(&tamptemp[i+strlen("\\~{}")],&impuretamp[i+1]);
+ strcpy(&impuretamp[i],&tamptemp[i]);
+ i+=strlen("\\~{}");
+ }
+ if (impuretamp[i]=='^')
+ {
+ if ((strlen(impuretamp)+5)>=length)
+ {
+ impuretamp=(char * ) realloc (impuretamp, length + 5);
+ length+=5;
+ }
+ strcpy(&tamptemp[i],"\\^{}");
+ strcpy(&tamptemp[i+strlen("\\^{}")],&impuretamp[i+1]);
+ strcpy(&impuretamp[i],&tamptemp[i]);
+ i+=strlen("\\^{}");
+ }
+ if (impuretamp[i]==' ' && FLAG_Equation)
+ {
+ if ((strlen(impuretamp)+5)>=length)
+ {
+ impuretamp=(char * ) realloc (impuretamp, length + 5);
+ length+=5;
+ }
+ strcpy(&tamptemp[i],"\\, ");
+ strcpy(&tamptemp[i+strlen("\\, ")],&impuretamp[i+1]);
+ strcpy(&impuretamp[i],&tamptemp[i]);
+ i+=strlen("\\, ");
+ }
+ if (strlen(impuretamp)>=i+5 && !strncmp(&impuretamp[i],"LaTeX",5))
+ {
+ if ((strlen(impuretamp)+5)>=length)
+ {
+ impuretamp=(char * ) realloc (impuretamp, length + 5);
+ length+=5;
+ }
+ if(impuretamp[i+5]=='.' || impuretamp[i+5]==',' || impuretamp[i+5]==';'
+ || impuretamp[i+5]==':' || impuretamp[i+5]=='!' || impuretamp[i+5]=='?'
+ || impuretamp[i+5]==')' || impuretamp[i+5]==']')
+ strcpy(tamptemp,"\\LaTeX ");
+ else
+ strcpy(tamptemp,"\\LaTeX\\ ");
+ strcat(tamptemp,&impuretamp[i+5]);
+ strcpy(&impuretamp[i],tamptemp);
+ i++;
+ }
+ }
+ }
+ }
+ };
+ i++;
+ }
+
+ return impuretamp;
+}
+
+
+/**************************************************************************************************
+** Function name : getcode
+** -------
+** Description : A partir de la chaine de caracteres d'un mot de commande renvoie son type et
+ leve un flag en cas de non reconnaissance.
+** Input : char *Mot_Comm, int * flag
+** Output : int: le type de token terminal correspondant.
+***************************************************************************************************/
+int getcode(char *Mot_Comm, int * flag)
+{
+ int i;
+ for (i=0;i<NB_Mots_Comm;i++)
+ if (strncmp(Mot_Comm,TaB_Mot_Comm[i].MC,MAX(strlen(Mot_Comm),strlen(TaB_Mot_Comm[i].MC)))==0)
+ {
+ /* ON A TROUVE UN MOT DE COMMANDE */
+ yylval.motcomm=TaB_Mot_Comm[i].MC;
+ (*flag)=1;
+ return TaB_Mot_Comm[i].TK;
+ };
+ /* Aucun mot de commande n'a pu etre trouve. */
+ /*fprintf(stderr,"Unknown Command Word: \t%s\n",Mot_Comm);*/
+ (*flag)=-1;
+ return -1;
+}
+
+/**************************************************************************************************
+** Function name : Avance_Champ
+** ------------
+** Description : Avance tant que le champ a ignorer n'est pas termine
+** Input : void
+** Output : void
+***************************************************************************************************/
+void Avance_Champ(void)
+{
+ char c;
+ int compteur=1;
+ do
+ {
+ c=fgetc(entree);
+ if (c=='{') compteur++;
+ if (c=='}') compteur--;
+ } while (compteur!=0);
+ ungetc(c,entree);
+}
+
+/**************************************************************************************************
+** Function name : Avance_Sauve_Champ
+** ------------
+** Description : Avance tant que le champ a ignorer n'est pas termine
+** Input : void
+** Output : void
+***************************************************************************************************/
+void Avance_Sauve_Champ(void)
+{
+ char c;
+ int compteur=1;
+ fclose(auxiliaire);
+ /* ATTENTION, A partir d'ici, les informations contenues dans le fichier
+ auxiliaire seront perdues !!!! ( A consommer avec moderation) */
+ if ((auxiliaire=fopen(nomsort,"w"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ do
+ {
+ c=fgetc(entree);
+ if (c=='{') compteur++;
+ if (c=='}') compteur--;
+ fprintf(auxiliaire,"%c",c);
+ } while (compteur!=0);
+ ungetc(c,entree);
+}
+/**************************************************************************************************
+** Function name : Avance_Sauve_ChampMAC
+** ------------
+** Description : Avance tant que le champ a ignorer n'est pas termine
+** Input : void
+** Output : void
+***************************************************************************************************/
+void Avance_Sauve_ChampMAC(void)
+{
+ char c,c2;
+ int compteur=0;
+ int djl=0;
+ int motEq=0;
+ fclose(auxiliaire);
+ /* ATTENTION, A partir d'ici, les informations contenues dans le fichier
+ auxiliaire seront perdues !!!! ( A consommer avec moderation) */
+ if ((auxiliaire=fopen(nomsort,"w"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File:%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ /* On teste le premier (que ce ne soit pas une accolade }) */
+ c=fgetc(entree);
+ fprintf(auxiliaire,"\\pzpeq \\\\");
+ if (c=='}' && (c2=fgetc(entree))=='{')
+ {
+ /* On est dans la situation suivante: \|}{\i\f20 o(.... */
+ /* L'ideal serait de garder les mdc \i et \f20. Mais pour
+ l'instant on les ignore... */
+ do
+ {
+ c=fgetc(entree);
+ if (c=='\\')
+ {
+ c=fgetc(entree);
+ if (c=='|')
+ {
+ motEq=1;
+ ungetc('\\',entree);
+ ungetc(c,entree);
+ }
+ }
+ }
+ while (c!=' ' && c!='(' && c!=')' && c!=',' && c!=';' && !motEq);
+ }
+ else
+ {
+
+ fprintf(auxiliaire,"%c",c);
+ if (c!='{') c2=fgetc(entree);
+ fprintf(auxiliaire,"%c",c2);
+ if (c=='(') { compteur++; djl=1; }
+ if (c==')') compteur--;
+ if (c2=='(') { compteur++; djl=1; }
+ if (c2==')') compteur--;
+ };
+ do
+ {
+ c=fgetc(entree);
+ if (c=='(') { compteur++; djl=1; }
+ if (c==')') compteur--;
+ fprintf(auxiliaire,"%c",c);
+ } while (compteur!=0 || !djl);
+ fflush(auxiliaire);
+}
+
+
+
+/**************************************************************************************************
+** Function name : yylex
+** -----
+** Description : Analyseur Lexical d'un fichier RTF. Fournit les Tokens a yyparse.
+** Input : void
+** Output : Token (non specifie: YACC ou BISON le castent)
+***************************************************************************************************/
+yylex()
+{
+ int i,j,k;
+ int c;
+ int flag=0;
+ int temp;
+ char cont_inue;
+ char ctemp;
+ tampon[0]='\0';
+ c=fgetc(entree);
+ if (FLAG_ERROR)
+ {
+ if (FLAG_ERROR==1)
+ {
+ do
+ {
+ i=0;
+ while (c!='\\' && c!=EOF)
+ c=fgetc(entree);
+ if (c==EOF)
+ return 0;
+ c=fgetc(entree);
+ while (c!=' ' && (c>='a' && c<='z'))
+ {
+ tampon[i++]=c;
+ tampon[i]='\0';
+ c=fgetc(entree);
+ }
+ } while (getcode(tampon,&flag)!=PAR);
+ FLAG_ERROR++;
+ fprintf(sortie,"\n\n{\\bf W2\\LaTeX : ERROR}\n\n");
+ return PZERROR;
+
+ }
+ if (FLAG_ERROR==2)
+ {
+ FLAG_ERROR=0;
+ return PAR;
+ }
+
+ }
+ if (FLAG_Equation!=0 && FLAG_Equation!=-1 &&
+ (c==' ' || c==0x09 || c=='(' || c==')' || c==','))
+ {
+ /* Traitement du texte de l'equation */
+ yylval.calu=c;
+ motfini=1;
+ return c;
+ }
+ /* On traite les caracteres de controle. */
+ if (c == EOF)
+ {
+ if (entree==auxiliaire)
+ {
+ entree=filetemp;
+ return yylex();
+ }
+ else return 0;
+ }
+ if (c == '\n') return (yylex()); /* POUR L'INSTANT ON IGNORERA LES RETOURS A LA LIGNE */
+ if (c=='{' || c=='}' || c==';')
+ {
+ /* yylval.calu=c; */
+ motfini=1;
+ return c;
+ }
+ /* Traitement des mots de commande */
+ /* Il faudra verifier la syntaxe pour les caracteres de commande
+ On supposera que les mots de commande n'excedent pas 128 octets, ce qui est le cas. */
+ if ( c==0x5c /* Caractere '\' */ )
+ {
+ i=0;
+ c=fgetc(entree);
+ if (c==0x27) /* Ascii : ' ; Caractere special On ne passe que la valeur hexa. */
+ {
+ tampon[i++]=c;
+ tampon[i]='\0';
+ temp=getcode(tampon,&flag);
+ if (flag!=-1) /* Une ceinture et des bretelles ... */
+ { tampon[0]=fgetc(entree);
+ tampon[1]=fgetc(entree);
+ tampon[2]='\0';
+ yylval.motcomm=tampon;
+ return (temp);
+ }
+ return(yyerror("Unknown Special Char\n"));
+ }
+ if ((FLAG_Equation==0 && (c=='\\')) || (c=='{' || c=='}'))
+ {
+ /* Il s'agit d'un caractere reserve et on le traitera comme tel. */
+ tampon[i++]='\\';
+ tampon[i++]=c;
+ tampon[i]='\0';
+ strcpy(tampon,puretext(tampon));
+ yylval.pcdata=tampon;
+ motfini=1;
+ return PCDATA;
+ }
+ if (FLAG_Equation!=0 && c==0x5c)
+ {
+ tampon[i++]=c;
+ tampon[i]='\0';
+ c=fgetc(entree);
+ }
+ if (FLAG_Equation==0)
+ {
+ while (c!=' ' && (c>='a' && c<='z'))
+ {
+ tampon[i++]=c;
+ tampon[i]='\0';
+ c=fgetc(entree);
+ }
+ }
+ else
+ {
+ cpt2=0;
+ while (c!=' ' && ( (c>='a' && c<='z')||(c>='A' && c<='Z') ) )
+ {
+ tampon[i++]=c;
+ tampon[i]='\0';
+ cpt2++;
+ c=fgetc(entree);
+ }
+ if (cpt2==0) /* On n'a pas identifie le mot de commande correctement */
+ {
+ if(c=='|' || c=='{' || c=='}' || c=='(' || c==')' || c=='[' || c==']' )
+ {
+ tampon[i++]=c;
+ tampon[i]='\0';
+ c=fgetc(entree);
+ }
+ }
+ };
+ if (c != EOF && c!=' ' && c!='\n') /* On supprime les espaces utilises comme delimiteurs. */
+ {
+ motfini=0;
+ ungetc (c,entree);
+ }
+ else
+ {
+ motfini=1;
+ }
+ tampon[i]='\0';
+ temp=getcode(tampon,&flag);
+ if (temp == INFO || temp == OBJECT || temp == DO || temp == XE || temp == TC ) /* ON IGNORE CERTAINS CHAMPS */
+ {
+ Avance_Champ();
+ return temp; /* ON RETOURNE QUAND MEME LE CHAMP CLE POUR LE CONFORT DE LA GRAMMAIRE */
+ }
+ if (temp == PIPE )
+ {
+ Avance_Sauve_ChampMAC();
+ moulineFormuleMAC();
+ entree==auxiliaire; /* LE reste sera lu dans le fichier auxiliaire */
+ entree=auxiliaire; /* LE reste sera lu dans le fichier auxiliaire */
+ return temp; /* ON RETOURNE QUAND MEME LE CHAMP CLE POUR LE CONFORT DE LA GRAMMAIRE */
+ }
+ if (temp == FLDINST)
+ {
+ Avance_Sauve_Champ();
+ filtrefields();
+ entree=auxiliaire; /* LE reste sera lu dans le fichier auxiliaire */
+ return temp; /* ON RETOURNE QUAND MEME LE CHAMP CLE POUR LE CONFORT DE LA GRAMMAIRE */
+ }
+ if (flag!=-1)
+ return (temp);
+ else
+ {
+ if ((strlen(tampon))==0)
+ {
+ /* Si ca se toruve c'est un caractere de commande... */
+ tampon[0]=fgetc(entree);
+ tampon[1]='\0';
+ temp=getcode(tampon,&flag);
+ if (temp == PIPE )
+ {
+ Avance_Sauve_ChampMAC();
+ moulineFormuleMAC();
+ entree==auxiliaire; /* LE reste sera lu dans le fichier auxiliaire */
+ entree=auxiliaire; /* LE reste sera lu dans le fichier auxiliaire */
+ return temp; /* ON RETOURNE QUAND MEME LE CHAMP CLE POUR LE CONFORT DE LA GRAMMAIRE */
+ }
+ if (flag!=-1)
+ return (temp);
+ /* Non... Il s'agit definitivement d'un code inconnu... */
+ ungetc(tampon[0],entree);
+ }
+ /* Le mot de commande est inconnu */
+ fprintf(stderr,"\t\t Unknown Command Word: *** %s *** (Skipping)\n",tampon);
+ c=fgetc(entree); /* On lis le caractere suivant */
+ if (c==' ')
+ {
+ motfini=1;
+ return (yylex());
+ }
+ if (c>='0' && c<='9')
+ {
+ ungetc(c,entree);
+ fscanf(entree,"%d",&yylval.numo);
+ fprintf(stderr,"\t\tParameter is being Ignored: %d\n",yylval.numo);
+ c=fgetc(entree);
+ if (c != ' ') ungetc(c,entree);
+ motfini=1;
+ return (yylex());
+ }
+ ungetc(c,entree);
+ return (yylex());
+ }
+ }
+ /* Traitement des valeurs numeriques associees aux mots de commande */
+ if ( ( (c>='0' && c<='9') || (c=='-') ) && motfini==0 )
+ {
+ ungetc (c,entree);
+ fscanf(entree,"%d",&yylval.numo);
+ c=fgetc(entree);
+ if (c != ' ') ungetc(c,entree);
+ motfini=1;
+ return NUM;
+ }
+ /* Si ce n'est ni un mot de commande, ni un entier, ni un caractere de controle simple, c'est du
+ texte. */
+ {
+ i=0;
+ cont_inue=1;
+ while (cont_inue)
+ {
+ if (FLAG_Equation==0 && !FLAG_InPict)
+ {
+ do
+ {
+ /* Si le tampon est plein, il faut l'agrandir */
+ if (i==length)
+ {
+ length*=2;
+ tampon=(char * ) realloc (tampon, length + 1);
+ }
+ if(c==' ' && i==0)
+ tampon[i++]='\\';
+ tampon[i++]=c;
+ tampon[i]='\0';
+ c=fgetc(entree);
+ } while (c != EOF && c!='}' && c!='{' && c!=0x5c && c!=';'); /* ATTENTION: IL FAUDRA TRAITER LE ;
+ DE FACON IDEPENDANTE !!!!!!!!!!!! */
+ cont_inue=0;
+ if (c==0x5c) ctemp=fgetc(entree);
+ if (c==0x5c && (ctemp==0x5c || ctemp=='{' || ctemp=='}') )
+ {
+ cont_inue=1;
+ tampon[i++]=c;
+ tampon[i]='\0';
+ c=ctemp;
+ }
+ }
+ else
+ if (!FLAG_InPict)
+ do
+ {
+ cont_inue=0;
+ /* Si le tampon est plein, il faut l'agrandir */
+ if (i==length)
+ {
+ length*=2;
+ tampon=(char * ) realloc (tampon, length + 1);
+ }
+ if(c==' ' && i==0)
+ tampon[i++]='\\';
+ tampon[i++]=c;
+ tampon[i]='\0';
+ c=fgetc(entree);
+ } while (c != EOF && c!='}' && c!='{' && c!='\\' && c!=',' && c!='('
+ && c!=')'); /* ATTENTION: IL FAUDRA TRAITER LE ;
+ DE FACON IDEPENDANTE !!!!*/
+ if (FLAG_InPict)
+ {
+ while (c != EOF && c!='}' && c!='{' && c!=0x5c && c!=';')
+ c=fgetc(entree);
+ if (c!=EOF)
+ ungetc(c,entree);
+ cont_inue=0;
+ }
+
+ }
+ if (FLAG_InPict) { yylval.pcdata="IMAGE"; return PCDATA; }
+ if (FLAG_Equation==0 && c==0x5c) ungetc(ctemp,entree);
+ if (c!=EOF)
+ ungetc(c,entree);
+ tampon[i]='\0';
+ if (FLAG_Symbol==0) strcpy(tampon,puretext(tampon));
+ /*else
+ {
+ strcpy(tampon,Rec_Formule(tampon));
+ }*/
+ yylval.pcdata=tampon;
+ motfini=1;
+ return PCDATA;
+ }
+}
+
+
+/**************************************************************************************************
+** Function name : yyerror
+**
+** Description :
+** Input : char * syyerr
+** Output : rapelle yyparse en levant les flags d'Erreur.
+**************************************************************************************************/
+int yyerror(char * syyerr)
+{
+ if (!FLAG_DebutTeX)
+ {
+ fprintf(SORT,"%%\n%% This document was generated using\n%% ");
+ fprintf(SORT,"w2LaTeX\n%% Bug Reports: jgarmend@cyberspace.org\n%%\n\n");
+ fprintf(SORT,"\\documentstyle[a4]{article}\n");
+ fprintf(SORT,"%% THIS FILE CONTAINS ERRORS! THE ORIGINAL RTF FILE\n");
+ fprintf(SORT,"%% HAD A CORRUPTED HEADER\n");
+ fprintf(SORT,"\n\\parindent = %d pt \n",0/*(PZ_FD.FDDEFTAB)*/);
+ fprintf(SORT,"\n\\oddsidemargin0cm\n");
+ fprintf(SORT,"\n\\evensidemargin0cm\n");
+ fprintf(SORT,"\n\\hoffset%dpt \n",(int)(-72+(PZ_FD.FDMARGL)));
+ fprintf(SORT,"\n\\textwidth%dpt \n",(int)(614-(PZ_FD.FDMARGL)-(PZ_FD.FDMARGR)));
+ fprintf(SORT,"\n\\vsize=%dpt\n",(int)(644-(PZ_FD.FDMARGT)));
+ fprintf(SORT,"\n\\font\\mathex=cmex10\n");
+ fprintf(SORT,"\n\\font\\pzrm=cmr10\n");
+ fprintf(SORT,"\n\\pagestyle{myheadings}\n");
+ fprintf(SORT,"\n\\begin{document}\n");
+ }
+ FLAG_DebutTeX=1;
+ fprintf(stderr, "w2LaTeX: %s: trying to recover....\n",syyerr);
+ if (FLAG_FIRST_ERROR)
+ fprintf(stderr, "w2LaTeX: OUTPUT FILE WILL NOT BE CLEAN !\n");
+ FLAG_ERROR=1;
+ FLAG_FIRST_ERROR=0;
+ yyparse();
+}
+
+
+
+
+/**************************************************************************************************
+** Function name : main
+** ----
+** Description : Fonction Principale
+** Input : void
+** Output : void
+***************************************************************************************************/
+void main(int argc, char * argv[])
+{
+ char pzexit[1024];
+ char keepnomsort[512];
+ int pzi=0;
+ fprintf(stderr,"This is w2LaTeX version 0.1 (Fri Jul 22 1994) by Javier Garmendia,\n");
+ fprintf(stderr,"Centre International de Rencontres Mathematiques. Luminy. Marseille,\n");
+
+ FLAG_DebutTeX=1;
+ tampon=(char * ) malloc(length+1);
+ Ligne_Courante_Tabular=(char *) malloc(lengthLCT+1);
+ valdefFD();
+ if (argc<=1)
+ {
+ fprintf(stderr,"Usage: w2LaTeX filename.rtf\n");
+ exit(0);
+ }
+ if (argc>2)
+ {
+ for(pzi=2;pzi<argc;pzi++)
+ {
+ if (!strcmp(argv[pzi],"-uglyframes"))
+ {
+ pzIntermDef=pzIntermFrame;
+ pzEndDef=pzEndFrame;
+ pzStartDef=pzStartFrame;
+ }
+ if (!strcmp(argv[pzi],"-debug"))
+ {
+ yydebug=1;
+ }
+ }
+ }
+ if ((entree=fopen(argv[1],"r"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Specified File::%s\n",argv[1]);
+ exit(0);
+ }
+ nomsort=(char *)malloc(strlen(argv[1])+15);
+ strcpy(nomsort,argv[1]);
+ if (!strcmp(&nomsort[strlen(nomsort)-4],".rtf"))
+ nomsort[strlen(nomsort)-4]='\0';
+ strcat(nomsort,".tex");
+ strcpy(keepnomsort,nomsort);
+ if ((sortie=fopen(nomsort,"w"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Output File::%s\n",nomsort);
+ fclose(entree);
+ exit(0);
+ }
+ strcpy(nomsort,argv[1]);
+ strcat(nomsort,".auxtex");
+ if ((auxiliaire=fopen(nomsort,"w+"))==NULL)
+ {
+ fprintf(stderr,"FATAL ERROR: Could not open Auxiliary File::%s\n",nomsort);
+ fclose(entree);
+ fclose(sortie);
+ exit(0);
+ }
+ SORT=sortie;
+ filetemp=entree;
+ FLAG_DebutTeX=0;
+ yyparse();
+ if (!FLAG_EndTeX)
+ fprintf(SORT,"\n\\end{document}\n");
+ fclose(entree);
+ fclose(sortie);
+ fclose(auxiliaire);
+ strcpy(pzexit,"rm -f ");
+ strcat(pzexit,nomsort);
+ system(pzexit);
+ fprintf(stderr,"Output written on %s\nThanks for using w2LaTeX\n",keepnomsort);
+}
+
diff --git a/support/w2latex/rtf.lex.h b/support/w2latex/rtf.lex.h
new file mode 100644
index 0000000000..0327b77e54
--- /dev/null
+++ b/support/w2latex/rtf.lex.h
@@ -0,0 +1,59 @@
+#define PC 101
+#define PCA 102
+#define DEFF 103
+#define FONTTBL 104
+#define ANSI 105
+#define RTF 106
+#define MAC 107
+#define F 108
+#define FNIL 109
+#define FROMAN 110
+#define FSWISS 111
+#define FMODERN 112
+#define FSCRIPT 113
+#define FDECOR 114
+#define FTECH 115
+#define FBIDI 116
+#define FCHARSET 117
+#define FPQR 118
+#define FONTFILE 119
+#define FTNIL 120
+#define FTTRUETYPE 121
+#define CPG 122
+#define FILETBL 123
+#define FILE 124
+#define FID 125
+#define FRELATIVE 126
+#define FOSNUM 127
+#define FVALIDMAC 128
+#define FVALIDDOS 129
+#define FVALIDNTFS 130
+#define FVALIDHPFS 131
+#define FNETWORK 132
+#define RED 133
+#define BLUE 134
+#define GREEN 135
+#define STYLESHEET 136
+#define S 137
+#define CS 138
+#define DS 139
+#define KEYCODE 140
+#define ADDITIVE 141
+#define SBASEDON 142
+#define SHIFT 143
+#define CTRL 144
+#define ALT 145
+#define FN 146
+#define INFO 147
+#define SECT 148
+#define HEADER 149
+#define FOOTER 150
+#define HEADERL 151
+#define HEADERR 152
+#define HEADERF 153
+#define FOOTERL 154
+#define FOOTERR 155
+#define FOOTERF 156
+#define PAR 157
+#define ROW 158
+#define CELL 159
diff --git a/support/w2latex/rtf.math.c b/support/w2latex/rtf.math.c
new file mode 100644
index 0000000000..cf210272c0
--- /dev/null
+++ b/support/w2latex/rtf.math.c
@@ -0,0 +1,337 @@
+#define OK 1
+/**************************************************************************************************
+ ** Function name : leveeq
+ ** ------
+ ** Description : Enleve le symbole 'eq' montrant le debut d'une equation.
+ ** Input : char*: Formule en format RTF
+ ** Output : int : 1 si reussi, -1 si echec.
+ **************************************************************************************************/
+int leveeq(char * formuleRTF)
+{
+ int i,j,k;
+ i=0;
+ while(formuleRTF[i]==' ' || formuleRTF[i]==0x09 /* Tab */)
+ i++;
+ if (formuleRTF[i]!='e' || formuleRTF[i+1]!='q')
+ return -1;
+ i+=2;
+ while(formuleRTF[i]==' ' || formuleRTF[i]==0x09 /* Tab */)
+ i++;
+ strcpy(formuleRTF,&formuleRTF[i]);
+ return OK;
+}
+
+/**************************************************************************************************
+ ** Function name : Rec_Expression
+ ** --------------
+ ** Description : Determine l'expression math'ematique correspondante, et trouve sa traduction
+ en TeX ou appelle une autre fonction pour la gerer.
+ ** Input : char*, char* : formule RTF et formule TeX (en output mais pointeur)
+ ** Output : int: nombre de caracteres reconnus. (-1 si erreur).
+ **************************************************************************************************/
+int Rec_Expression(char* formuleRTF, char* formuleTeX)
+{
+ int i,j,k,l,m,n;
+ int Num_col_Matrix=0;
+ char temp[10];
+ char coef=0;
+ if (FLAG_Equation==2)
+ coef='a'-'A'; /* Il s'agit d'une equation MAC en minuscules */
+ m=0;
+ if ((FLAG_Equation!=2) && (formuleRTF[0]!=0x5c || formuleRTF[1]!=0x5c))
+ {
+ /* La formule ne commence pas par un mot de commande: */
+ while(formuleRTF[m]!=0x5c)
+ {
+ if (m>=strlen(formuleRTF))
+ {
+ return m;
+ }
+ sprintf(temp,"%c",formuleRTF[m]);
+ strcat(formuleTeX,temp);
+ m++;
+ }
+ }
+ i=m+4;
+ switch(formuleRTF[2+m]+coef)
+ {
+ case 'I':
+ /* Il s'agit d'une integrale */
+ strcat(formuleTeX,"\\int");
+ strcat(formuleTeX,"_{");
+ j=i;
+ while(formuleRTF[i]!=',')
+ {
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ i++;
+ strcat(formuleTeX,"}^{");
+ j=i;
+ while(formuleRTF[i]!=',')
+ {
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ i++;
+ strcat(formuleTeX,"}");
+ j=i;
+ k=1;
+ while(k!=0)
+ {
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ if (formuleRTF[i]=='(')
+ k++;
+ if (formuleRTF[i]==')')
+ k--;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ return i+1;
+ break;
+ case 'A':
+ /* Il s'agit d'une matrice */
+ strcat(formuleTeX,"\n\\begin{array}{");
+ j=i;
+ while(formuleRTF[i]!=',')
+ {
+ if (formuleRTF[i]=='(')
+ {
+ /* On saute jusqu'a la fin de la parenthese fermante */
+ k=1;
+ Num_col_Matrix++;
+ while(k!=0)
+ {
+ i++;
+ if (formuleRTF[i]=='(')
+ k++;
+ if (formuleRTF[i]==')')
+ k--;
+ }
+ /* i--; */
+ }
+ /* if (formuleRTF[i]=='.')
+ Num_col_Matrix++; */
+ i++;
+ }
+ i=j;
+ for (n=0;n<=Num_col_Matrix;n++)
+ strcat(formuleTeX,"c");
+ strcat(formuleTeX,"}\n");
+ k=1;
+ while (k!=0)
+ {
+ while(formuleRTF[i]!=',' && k!=0)
+ {
+
+ if (formuleRTF[i]=='.')
+ strcat(formuleTeX," & ");
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ if (formuleRTF[i]=='(')
+ k++;
+ if (formuleRTF[i]==')')
+ k--;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ i++;
+ j=i;
+ strncat(formuleTeX,"\\\\\n");
+ }
+ strcat(formuleTeX,"\n\\end{array}");
+ return i+1;
+ break;
+ case 'X':
+ /* La formule est encadree */
+ return -1;
+ break;
+ case 'F':
+ strcat(formuleTeX,"\\frac");
+ strcat(formuleTeX,"{");
+ j=i;
+ while(formuleRTF[i]!=',')
+ {
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ i++;
+ strcat(formuleTeX,"}{");
+ j=i;
+ k=1;
+ while(k!=0)
+ {
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ if (formuleRTF[i]=='(')
+ k++;
+ if (formuleRTF[i]==')')
+ k--;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ strcat(formuleTeX,"}");
+ return i+1;
+ break;
+ case 'R':
+ /* Il s'agit d'une racine n-ieme */
+ strcat(formuleTeX,"{\\sqrt");
+ strcat(formuleTeX,"[");
+ j=i;
+ while(formuleRTF[i]!=',')
+ {
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ i++;
+ strcat(formuleTeX,"]{");
+ j=i;
+ k=1;
+ while(k!=0)
+ {
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ if (formuleRTF[i]=='(')
+ k++;
+ if (formuleRTF[i]==')')
+ k--;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ strcat(formuleTeX,"}}");
+ return i+1;
+ break;
+ case 'L':
+ /* Il s'agit d'une liste */
+ return -1;
+ break;
+ case 'S':
+ /* Il s'agit d'un jeu de coordonnees */
+ return -1;
+ break;
+ case 'O':
+ /* Il s'agit d'une superposition */
+ return -1;
+ break;
+ case 'B':
+ /* Il s'agit d'un element entre grosses parentheses */
+ strcat(formuleTeX,"\\left(");
+ j=i;
+ k=1;
+ while(k!=0)
+ {
+ /* Tester si recursivite */
+ if (formuleRTF[i]==0x5c)
+ {
+ l=Rec_Expression(&formuleRTF[i],&formuleTeX[strlen(formuleTeX)]);
+ if (l<0) printf("ERREUR\n");
+ else { i=i+l-1; j+=l; }
+ }
+ i++;
+ if (formuleRTF[i]=='(')
+ k++;
+ if (formuleRTF[i]==')')
+ k--;
+ }
+ strncat(formuleTeX,&formuleRTF[j],i-j);
+ strcat(formuleTeX,"\\right)");
+ return i+1;
+ break;
+ default:
+ /* Code inconnu */
+ return -1;
+ break;
+ }
+}
+
+
+/**************************************************************************************************
+ ** Function name : Rec_Formule
+ ** -----------
+ ** Description : Reconnaissance d'une formule mathematique
+ ** Input : char *: Formule en format RTF
+ ** Output : char *: Formule en format TEX
+ **************************************************************************************************/
+char * Rec_Formule(char * formuleRTF)
+{
+ char * formuleTeX;
+ char temp[512];
+ char coef=0;
+ int i,j,k;
+ if (FLAG_Equation==1) /* Il s'agit d'une equation PC: Field */
+ if (leveeq(formuleRTF)==-1)
+ return puretext(formuleRTF);
+ formuleTeX=(char *) malloc (2*length);
+ if (FLAG_Dollars==0)
+ strcpy(formuleTeX,"$");
+ else
+ strcpy(formuleTeX,"$$");
+ j=0;
+ do
+ {
+ k=Rec_Expression(&formuleRTF[j],&formuleTeX[strlen(formuleTeX)]);
+ if (k <0)
+ return puretext(formuleRTF);
+ j=j+k;
+ } while (j<strlen(formuleRTF));
+ if (FLAG_Dollars==0)
+ strcat(formuleTeX,"$");
+ else
+ strcat(formuleTeX,"$$");
+ return formuleTeX;
+}
+
+/*void main(void)
+{
+ strcpy(tampon," eq \\\\B(\\\\A(\\\\F(x+sin(x),1),\\\\R(27,sin(x)+ch(th(x))),\\\\I(1,2,log(x+sin(x)))))");
+ printf("\n\n\t\t[%s]\n\n",Rec_Formule(tampon));
+}*/ \ No newline at end of file
diff --git a/support/w2latex/rtf.motcom.h b/support/w2latex/rtf.motcom.h
new file mode 100644
index 0000000000..e27c638ff6
--- /dev/null
+++ b/support/w2latex/rtf.motcom.h
@@ -0,0 +1,615 @@
+#define NB_Mots_Comm 609
+typedef struct _T_A_B_ { char * MC; int TK; } TaB;
+
+TaB TaB_Mot_Comm[NB_Mots_Comm]=
+{ { "pc", PC },
+ { "pca", PCA },
+ { "fonttbl", FONTTBL },
+ { "ansi", ANSI },
+ { "rtf", RTF },
+ { "mac", MAC },
+ { "f", F },
+ { "fnil", FNIL },
+ { "froman", FROMAN},
+ { "pc", PC},
+ { "pca", PCA},
+ { "deff", DEFF},
+ { "fonttbl", FONTTBL},
+ { "ansi", ANSI},
+ { "rtf", RTF},
+ { "mac", MAC},
+ { "f", F},
+ { "fnil", FNIL },
+ { "froman", FROMAN },
+ { "fswiss", FSWISS },
+ { "fmodern", FMODERN },
+ { "fscript", FSCRIPT },
+ { "fdecor", FDECOR },
+ { "ftech", FTECH },
+ { "fbidi", FBIDI},
+ { "fcharset", FCHARSET},
+ { "fpqr", FPQR},
+ { "fontfile", FONTFI_LE},
+ { "ftnil", FTNIL},
+ { "fttruetype", FTTRUETYPE},
+ { "cpg", CPG},
+ { "filetbl", FI_LETBL},
+ { "file", FI_LE},
+ { "fid", FID},
+ { "frelative", FRELATIVE},
+ { "fosnum", FOSNUM},
+ { "fvalidmac", FVALIDMAC},
+ { "fvaliddos", FVALIDDOS},
+ { "fvalidntfs", FVALIDNTFS},
+ { "fvalidhpfs", FVALIDHPFS},
+ { "fnetwork", FNETWORK},
+ { "red", RED},
+ { "blue", BLUE},
+ { "green", GREEN},
+ { "stylesheet", STYLESHEET},
+ { "s", S},
+ { "cs", CS},
+ { "ds", DS},
+ { "keycode", KEYCODE},
+ { "additive", ADDITIVE},
+ { "sbasedon", SBASEDON},
+ { "shift", SHIFT},
+ { "ctrl", CTRL},
+ { "alt", ALT},
+ { "fn", FN},
+ { "info", INFO},
+ { "sect", SECT},
+ { "header", HEADER},
+ { "footer", FOOTER},
+ { "headerl", HEADERL},
+ { "headerr", HEADERR},
+ { "headerf", HEADERF},
+ { "footerl", FOOTERL},
+ { "footerr", FOOTERR},
+ { "footerf", FOOTERF},
+ { "par", PAR},
+ { "row", ROW},
+ { "cell", CELL},
+ { "colortbl", COLORTBL},
+ { "subdocument", SUBDOCUMENT},
+ { "tx", TX},
+ { "tb", TB},
+ { "tqr", TQR},
+ { "tqc", TQC},
+ { "tqdec", TQDEC},
+ { "tldot", TLDOT},
+ { "tlhyph", TLHYPH},
+ { "tlul", TLUL},
+ { "tith", TITH},
+ { "tleq", TLEQ},
+ { "bin", BIN},
+ { "snext", SNEXT},
+ { "absh", ABSH},
+ { "absw", ABSW},
+ { "b", B},
+ { "bgbdiag", BGBDIAG},
+ { "bgcross", BGCROSS},
+ { "bgdcross", BGDCROSS},
+ { "bgdkbdiag", BGDKBDIAG},
+ { "bgdkcross", BGDKCROSS},
+ { "bgdkdcross", BGDKDCROSS},
+ { "bgdkfdiag", BGDKFDIAG},
+ { "bgdkhoriz", BGDKHORIZ},
+ { "bgdkvert", BGDKVERT},
+ { "bgfdiag", BGFDIAG},
+ { "bghoriz", BGHORIZ},
+ { "bgvert", BGVERT},
+ { "binfsxn", BINFSXN},
+ { "binsxn", BINSXN},
+ { "box", BOX},
+ { "brdrb", BRDRB},
+ { "brdrbar", BRDRBAR},
+ { "brdrbtw", BRDRBTW},
+ { "brdrcf", BRDRCF},
+ { "brdrdash", BRDRDASH},
+ { "brdrdb", BRDRDB},
+ { "brdrdot", BRDRDOT},
+ { "brdrhair", BRDRHAIR},
+ { "brdrl", BRDRL},
+ { "brdrr", BRDRR},
+ { "brdrs", BRDRS},
+ { "brdrsh", BRDRSH},
+ { "brdrt", BRDRT},
+ { "brdrth", BRDRTH},
+ { "brdrw", BRDRW},
+ { "brsp", BRSP},
+ { "bullet", BULLET},
+ { "caps", CAPS},
+ { "cb", CB},
+ { "cbpat", CBPAT},
+ { "cchs", CCHS},
+ { "cellx", CELLX},
+ { "cf", CF},
+ { "cfpat", CFPAT},
+ { "chatn", CHATN},
+ { "chdate", CHDATE},
+ { "chdpa", CHDPA},
+ { "chdpl", CHDPL},
+ { "chftn", CHFTN},
+ { "chftnsep", CHFTNSEP},
+ { "chftnsepc", CHFTNSEPC},
+ { "chpgn", CHPGN},
+ { "chtime", CHTIME},
+ { "clbgbdiag", CLBGBDIAG},
+ { "clbgcross", CLBGCROSS},
+ { "clbgdcross", CLBGDCROSS},
+ { "clbgdkbdiag", CLBGDKBDIAG},
+ { "clbgdkcross", CLBGDKCROSS},
+ { "clbgdkfdiag", CLBGDKFDIAG},
+ { "clbgdkhor", CLBGDKHOR},
+ { "clbgdkrcdcross", CLBGDKRCDCROSS},
+ { "clbgdkvert", CLBGDKVERT},
+ { "clbgfdiag", CLBGFDIAG},
+ { "clbghoriz", CLBGHORIZ},
+ { "clbgvert", CLBGVERT},
+ { "clbrdrb", CLBRDRB},
+ { "clbrdrl", CLBRDRL},
+ { "clbrdrr", CLBRDRR},
+ { "clbrdrt", CLBRDRT},
+ { "clcbpat", CLCBPAT},
+ { "clcfpat", CLCFPAT},
+ { "clmgf", CLMGF},
+ { "clmgr", CLMGR},
+ { "clshdng", CLSHDNG},
+ { "colno", COLNO},
+ { "cols", COLS},
+ { "colsr", COLSR},
+ { "colsx", COLSX},
+ { "column", COLUMN},
+ { "colw", COLW},
+ { "deleted", DELETED},
+ { ":", DEUXPOINTS},
+ { "dfrmtxtx", DFRMTXTX},
+ { "dfrmtxty", DFRMTXTY},
+ { "dn", DN},
+ { "dropcapli", DROPCAPLI},
+ { "dropcapt", DROPCAPT},
+ { "dxfrtext", DXFRTEXT},
+ { "emdash", EMDASH},
+ { "emspace", EMSPACE},
+ { "endash", ENDASH},
+ { "endnhere", ENDNHERE},
+ { "enspace", ENSPACE},
+ { "expnd", EXPND},
+ { "expndtw", EXPNDTW},
+ { "fi", FI},
+ { "footery", FOOTERY},
+ { "fs", FS},
+ { "guttersxn", GUTTERSXN},
+ { "headery", HEADERY},
+ { "hyphpar", HYPHPAR},
+ { "i", I},
+ { "intbl", INTBL},
+ { "keep", KEEP},
+ { "keepn", KEEPN},
+ { "kerning", KERNING},
+ { "lang", LANG},
+ { "ldblquote", LDBLQUOTE},
+ { "level", LEVEL},
+ { "li", LI},
+ { "line", LINE},
+ { "linebetcol", LINEBETCOL},
+ { "linecont", LINECONT},
+ { "linemod", LINEMOD},
+ { "lineppage", LINEPPAGE},
+ { "linerestart", LINERESTART},
+ { "linestarts", LINESTARTS},
+ { "linex", LINEX},
+ { "lndscpsxn", LNDSCPSXN},
+ { "lquote", LQUOTE},
+ { "ltrch", LTRCH},
+ { "ltrmark", LTRMARK},
+ { "ltrpar", LTRPAR},
+ { "ltrrow", LTRROW},
+ { "ltrsect", LTRSECT},
+ { "margbsxn", MARGBSXN},
+ { "marglsxn", MARGLSXN},
+ { "margrsxn", MARGRSXN},
+ { "margtsxn", MARGTSXN},
+ { "-", MOINS},
+ { "noline", NOLINE},
+ { "nosupersub", NOSUPERSUB},
+ { "nowidcltpar", NOWIDCLTPAR},
+ { "nowrap", NOWRAP},
+ { "outl", OUTL},
+ { "page", PAGE},
+ { "pagebb", PAGEBB},
+ { "pard", PARD},
+ { "pghsxn", PGHSXN},
+ { "pgncont", PGNCONT},
+ { "pgndec", PGNDEC},
+ { "pgngnsh", PGNGNSH},
+ { "pgnhn", PGNHN},
+ { "pgnhnsc", PGNHNSC},
+ { "pgnhnsm", PGNHNSM},
+ { "pgnhnsn", PGNHNSN},
+ { "pgnhnsp", PGNHNSP},
+ { "pgnlcltr", PGNLCLTR},
+ { "pgnlcrm", PGNLCRM},
+ { "pgnrestart", PGNRESTART},
+ { "pgnstarts", PGNSTARTS},
+ { "pgnucltr", PGNUCLTR},
+ { "pgnucrm", PGNUCRM},
+ { "pgnx", PGNX},
+ { "pgny", PGNY},
+ { "pgwsxn", PGWSXN},
+ { "phcol", PHCOL},
+ { "phmrg", PHMRG},
+ { "phpg", PHPG},
+
+ { "plain", PLAIN},
+ { "pn", PN},
+ { "pnacross", PNACROSS},
+ { "pnb", PNB},
+ { "pncaps", PNCAPS},
+ { "pncard", PNCARD},
+ { "pncf", PNCF},
+ { "pndec", PNDEC},
+ { "pnf", PNF},
+ { "pnfs", PNFS},
+ { "pnhang", PNHANG},
+ { "pni", PNI},
+ { "pnindent", PNINDENT},
+ { "pnlcltr", PNLCLTR},
+ { "pnlcrm", PNLCRM},
+ { "pnlvl", PNLVL},
+ { "pnlvlbody", PNLVLBODY},
+ { "pnlvlcont", PNLVLCONT},
+ { "pnnumonce", PNNUMONCE},
+ { "pnord", PNORD},
+ { "pnordt", PNORDT},
+ { "pnprev", PNPREV},
+ { "pnqc", PNQC},
+ { "pnql", PNQL},
+ { "pnqr", PNQR},
+ { "pnrestart", PNRESTART},
+ { "pnscaps", PNSCAPS},
+ { "pnseclvl", PNSECLVL},
+ { "pnsp", PNSP},
+ { "pnstart", PNSTART},
+ { "pnstrike", PNSTRIKE},
+ { "pntext", PNTEXT},
+ { "pntxta", PNTXTA},
+ { "pntxtb", PNTXTB},
+ { "pnucltr", PNUCLTR},
+ { "pnucrm", PNUCRM},
+ { "pnul", PNUL},
+ { "pnuld", PNULD},
+ { "pnuldb", PNULDB},
+ { "pnulnone", PNULNONE},
+ { "pnulw", PNULW},
+ { "pnvlbt", PNVLBT},
+ { "posnegx", POSNEGX},
+ { "posnegy", POSNEGY},
+ { "posx", POSX},
+ { "posxc", POSXC},
+ { "posxi", POSXI},
+ { "posxl", POSXL},
+ { "posxo", POSXO},
+ { "posxr", POSXR},
+ { "posy", POSY},
+ { "posyb", POSYB},
+ { "posyc", POSYC},
+ { "posyil", POSYIL},
+ { "posyt", POSYT},
+ { "pvmrg", PVMRG},
+ { "pvpara", PVPARA},
+ { "pvpg", PVPG},
+ { "qc", QC},
+ { "qj", QJ},
+ { "ql", QL},
+ { "qr", QR},
+ { "rdblquote", RDBLQUOTE},
+ { "revauth", REVAUTH},
+ { "revdttm", REVDTTM},
+ { "revised", REVISED},
+ { "ri", RI},
+ { "rquote", RQUOTE},
+ { "rtlch", RTLCH},
+ { "rtlmark", RTLMARK},
+ { "rtlpar", RTLPAR},
+ { "rtlrow", RTLROW},
+ { "rtlsect", RTLSECT},
+ { "sa", SA},
+ { "sb", SB},
+ { "sbkcol", SBKCOL},
+ { "sbkeven", SBKEVEN},
+ { "sbknone", SBKNONE},
+ { "sbkodd", SBKODD},
+ { "sbkpage", SBKPAGE},
+ { "sbys", SBYS},
+ { "scaps", SCAPS},
+ { "sectnum", SECTNUM},
+ { "sectd", SECTD},
+ { "setunlocked", SETUNLOCKED},
+ { "shad", SHAD},
+ { "shading", SHADING},
+ { "sl", SL},
+ { "slmult", SLMULT},
+ { "softcol", SOFTCOL},
+ { "softlheight", SOFTLHEIGHT},
+ { "softline", SOFTLINE},
+ { "softpage", SOFTPAGE},
+ { "strike", STRIKE},
+ { "sub", SUB},
+ { "super", SUPER},
+ { "tab", TAB},
+ { "~", TILDE},
+ { "titlepg", TITLEPG},
+ { "trbrdrb", TRBRDRB},
+ { "trbrdrh", TRBRDRH},
+ { "trbrdrl", TRBRDRL},
+ { "trbrdrr", TRBRDRR},
+ { "trbrdrt", TRBRDRT},
+ { "trbrdrv", TRBRDRV},
+ { "trgaph", TRGAPH},
+ { "trhdr", TRHDR},
+ { "trkeep", TRKEEP},
+ { "trleft", TRLEFT},
+ { "trowd", TROWD},
+ { "trqc", TRQC},
+ { "trql", TRQL},
+ { "trqr", TRQR},
+ { "trrh", TRRH},
+ { "ul", UL},
+ { "uld", ULD},
+ { "uldb", ULDB},
+ { "ulnone", ULNONE},
+ { "ulw", ULW},
+ { "_", UNDERSCORE},
+ { "up", UP},
+ { "v", V},
+ { "vertalb", VERTALB},
+ { "vertalc", VERTALC},
+ { "vertalj", VERTALJ},
+ { "vertalt", VERTALT},
+ { "zwj", ZWJ},
+ { "zwnj", ZWNJ},
+ { "aenddoc", AENDDOC },
+ { "aendnotes", AENDNOTES },
+ { "aftnbj", AFTNBJ },
+ { "aftncn", AFTNCN },
+ { "aftnnalc", AFTNNALC },
+ { "aftnnar", AFTNNAR },
+ { "aftnnauc", AFTNNAUC },
+ { "aftnnchi", AFTNNCHI },
+ { "aftnnrlc", AFTNNRLC },
+ { "aftnnruc", AFTNNRUC },
+ { "aftnrestart", AFTNRESTART },
+ { "aftnrstcont", AFTNRSTCONT },
+ { "aftnsep", AFTNSEP },
+ { "aftnsepc", AFTNSEPC },
+ { "aftnstart", AFTNSTART },
+ { "aftntj", AFTNTJ },
+ { "allprot", ALLPROT },
+ { "annotprot", ANNOTPROT },
+ { "brkfrm", BRKFRM },
+ { "cvmme", CVMME },
+ { "defformat", DEFFORMAT },
+ { "deflang", DEFLANG },
+ { "deftab", DEFTAB },
+ { "doctemp", DOCTEMP },
+ { "enddoc", ENDDOC },
+ { "endnotes", ENDNOTES },
+ { "facingp", FACINGP },
+ { "fet", FET },
+ { "formdisp", FORMDISP },
+ { "formprot", FORMPROT },
+ { "formshade", FORMSHADE },
+ { "fracwidth", FRACWIDTH },
+ { "ftnbj", FTNBJ },
+ { "ftncn", FTNCN },
+ { "ftnnalc", FTNNALC },
+ { "ftnnar", FTNNAR },
+ { "ftnnauc", FTNNAUC },
+ { "ftnnchi", FTNNCHI },
+ { "ftnnrlc", FTNNRLC },
+ { "ftnnruc", FTNNRUC },
+ { "ftnrestart", FTNRESTART },
+ { "ftnrstcont", FTNRSTCONT },
+ { "ftnrstpg", FTNRSTPG },
+ { "ftnsep", FTNSEP },
+ { "ftnsepc", FTNSEPC },
+ { "ftnstart", FTNSTART },
+ { "ftntj", FTNTJ },
+ { "gutter", GUTTER },
+ { "hyphauto", HYPHAUTO },
+ { "hyphcaps", HYPHCAPS },
+ { "hyphconsec", HYPHCONSEC },
+ { "hyphhotz", HYPHHOTZ },
+ { "landscape", LANDSCAPE },
+ { "linestart", LINESTART },
+ { "linkstyles", LINKSTYLES },
+ { "ltrdoc", LTRDOC },
+ { "makebackup", MAKEBACKUP },
+ { "margb", MARGB },
+ { "margl", MARGL },
+ { "margmirror", MARGMIRROR },
+ { "margr", MARGR },
+ { "margt", MARGT },
+ { "nextfile", NEXTFILE },
+ { "nocolbal", NOCOLBAL },
+ { "noextrasprl", NOEXTRASPRL },
+ { "notabind", NOTABIND },
+ { "otblrul", OTBLRUL },
+ { "paperh", PAPERH },
+ { "paperw", PAPERW },
+ { "pgnstart", PGNSTART },
+ { "prcolbl", PRCOLBL },
+ { "printdata", PRINTDATA },
+ { "psover", PSOVER },
+ { "psz", PSZ },
+ { "revbar", REVBAR },
+ { "revisions", REVISIONS },
+ { "revprop", REVPROP },
+ { "revprot", REVPROT },
+ { "rtldoc", RTLDOC },
+ { "sprsspbf", SPRSSPBF },
+ { "sprstsp", SPRSTSP },
+ { "swpbdr", SWPBDR },
+ { "template", TEMPLATE },
+ { "transmf", TRANSMF },
+ { "widowctrl", WIDOWCTRL },
+ { "wraptrsp", WRAPTRSP },
+ { "'", APOSTROPHE },
+ { "*", ETOILE },
+ { "field", FIELD },
+ { "flddirty", FLDDIRTY },
+ { "fldedit", FLDEDIT },
+ { "fldlock", FLDLOCK },
+ { "fldpriv", FLDPRIV },
+ { "fldinst", FLDINST },
+ { "fldalt", FLDALT },
+ { "fldrslt", FLDRSLT },
+ { "pict", PICT },
+ { "\\i", PZINTEGRALE },
+ { "\\r", PZRACINE },
+ { "\\f", PZFRACTION },
+ { "\\a", PZMATRIX },
+ { "\\x", PZBOX },
+ { "\\I", PZINTEGRALE },
+ { "\\R", PZRACINE },
+ { "\\F", PZFRACTION },
+ { "\\A", PZMATRIX },
+ { "\\X", PZBOX },
+ { "\\b", PZBRACKET },
+ { "\\l", PZLIST },
+ { "\\o", PZOVERSTRIKE },
+ { "\\s", PZSUSCRIPT },
+ { "|", PIPE },
+ { "\\lc", EQLC },
+ { "\\rc", EQRC },
+ { "\\bc", EQBC },
+ { "\\al", EQAL },
+ { "\\ac", EQAC },
+ { "\\ar", EQAR },
+ { "\\co", EQCO },
+ { "\\vs", EQVS },
+ { "\\hs", EQHS },
+ { "\\su", EQSU },
+ { "\\pr", EQPR },
+ { "\\in", EQIN },
+ { "\\fc", EQFC },
+ { "\\vc", EQVC },
+ { "\\ai", EQAI },
+ { "\\up", EQUP },
+ { "\\di", EQDI },
+ { "\\do", EQDO },
+ { "\\B", PZBRACKET },
+ { "\\L", PZLIST },
+ { "\\O", PZOVERSTRIKE },
+ { "\\S", PZSUSCRIPT },
+ { "\\LC", EQLC },
+ { "\\RC", EQRC },
+ { "\\BC", EQBC },
+ { "\\AL", EQAL },
+ { "\\AC", EQAC },
+ { "\\AR", EQAR },
+ { "\\CO", EQCO },
+ { "\\VS", EQVS },
+ { "\\HS", EQHS },
+ { "\\SU", EQSU },
+ { "\\PR", EQPR },
+ { "\\IN", EQIN },
+ { "\\FC", EQFC },
+ { "\\VC", EQVC },
+ { "\\AI", EQAI },
+ { "\\UP", EQUP },
+ { "\\DI", EQDI },
+ { "\\DO", EQDO },
+ { "\\[", EQCROCHETO },
+ { "\\]", EQCROCHETF },
+ { "\\(", EQPARENTHO },
+ { "\\)", EQPARENTHF },
+ { "\\{", EQACCOLADO },
+ { "\\}", EQACCOLADF },
+ { "\\<", EQSUPINFO },
+ { "\\>", EQSUPINFF },
+ { "footnote", FOOTNOTE },
+ { "pzpeq", PZPEQ },
+ { "bkmkstart", BKMKSTART },
+ { "bkmkend", BKMKEND },
+ { "bkmkcolf", BKMKCOLF },
+ { "bkmkcoll", BKMKCOLL },
+ { "macpict", MACPICT },
+ { "pmmetafile", PMMETAFILE },
+ { "wmetafile", WMETAFILE },
+ { "dibitmap", DIBITMAP },
+ { "wbitmap", WBITMAP },
+ { "wbmbitspixel", WBMBITSPIXEL },
+ { "wbmplanes", WBMPLANES },
+ { "wbmwidthbytes", WBMWIDTHBYTES },
+ { "picbmp", PICBMP },
+ { "picbpp", PICBPP },
+ { "yr", YR },
+ { "mo", MO },
+ { "dy", DY },
+ { "hr", HR },
+ { "min", MIN },
+ { "sec", SEC },
+ { "object", OBJECT },
+ { "bkmkpub", BKMKPUB },
+ { "pubauto", PUBAUTO },
+ { "picw", PICW },
+ { "pich", PICH },
+ { "picwgoal", PICWGOAL },
+ { "pichgoal", PICHGOAL },
+ { "picscalex", PICSCALEX },
+ { "picscaley", PICSCALEY },
+ { "picscaled", PICSCALED },
+ { "piccropt", PICCROPT },
+ { "piccropb", PICCROPB },
+ { "piccropr", PICCROPR },
+ { "piccropl", PICCROPL },
+ { "objemb", OBJEMB },
+ { "objlink", OBJLINK },
+ { "objautlink", OBJAUTLINK },
+ { "objsub", OBJSUB },
+ { "objpub", OBJPUB },
+ { "onjicemb", ONJICEMB },
+ { "linkself", LINKSELF },
+ { "objlock", OBJLOCK },
+ { "objupdate", OBJUPDATE },
+ { "objclass", OBJCLASS },
+ { "objname", OBJNAME },
+ { "objtime", OBJTIME },
+ { "rsltmerge", RSLTMERGE },
+ { "rsltrtf", RSLTRTF },
+ { "rslttxt", RSLTTXT },
+ { "rsltpict", RSLTPICT },
+ { "rsltbmp", RSLTBMP },
+ { "objsetsize", OBJSETSIZE },
+ { "objalign", OBJALIGN },
+ { "objtransy", OBJTRANSY },
+ { "objcropt", OBJCROPT },
+ { "objcropb", OBJCROPB },
+ { "objcropl", OBJCROPL },
+ { "objcropr", OBJCROPR },
+ { "objscaley", OBJSCALEY },
+ { "objscalex", OBJSCALEX },
+ { "objh", OBJH },
+ { "objw", OBJW },
+ { "objdata", OBJDATA },
+ { "objalias", OBJALIAS },
+ { "objsect", OBJSECT },
+ { "result", RESULT },
+ { "pzpautrefield", PZPAUTREFIELD },
+ { "atrfstart", ATRFSTART },
+ { "atrfend", ATRFEND },
+ { "atntime", ATNTIME },
+ { "atnicn", ATNICN },
+ { "annotation", ANNOTATION },
+ { "atnref", ATNREF },
+ { "atnid", ATNID },
+ { "atnauthor", ATNAUTHOR },
+ { "pzpendeq", PZPENDEQ },
+ { "do", DO },
+ { "xe", XE },
+ { "tc", TC },
+ { "objtopic", OBJTOPICT }
+}; \ No newline at end of file
diff --git a/support/w2latex/rtf.tab.c b/support/w2latex/rtf.tab.c
new file mode 100644
index 0000000000..4687c3557b
--- /dev/null
+++ b/support/w2latex/rtf.tab.c
@@ -0,0 +1,8895 @@
+
+/* A Bison parser, made from rtf.y with Bison version GNU Bison version 1.22
+ */
+
+#define YYBISON 1 /* Identify Bison output. */
+
+#define NUM 258
+#define PC 259
+#define PCA 260
+#define DEFF 261
+#define FONTTBL 262
+#define ANSI 263
+#define RTF 264
+#define MAC 265
+#define F 266
+#define FNIL 267
+#define FROMAN 268
+#define FSWISS 269
+#define FMODERN 270
+#define FSCRIPT 271
+#define FDECOR 272
+#define FTECH 273
+#define FBIDI 274
+#define FCHARSET 275
+#define FPQR 276
+#define ETOILE 277
+#define FONTFI_LE 278
+#define FTNIL 279
+#define FTTRUETYPE 280
+#define CPG 281
+#define FI_LETBL 282
+#define FI_LE 283
+#define FID 284
+#define FRELATIVE 285
+#define FOSNUM 286
+#define FVALIDMAC 287
+#define FVALIDDOS 288
+#define FVALIDNTFS 289
+#define FVALIDHPFS 290
+#define FNETWORK 291
+#define RED 292
+#define BLUE 293
+#define GREEN 294
+#define STYLESHEET 295
+#define S 296
+#define CS 297
+#define DS 298
+#define KEYCODE 299
+#define ADDITIVE 300
+#define SBASEDON 301
+#define SHIFT 302
+#define CTRL 303
+#define ALT 304
+#define FN 305
+#define INFO 306
+#define SECT 307
+#define HEADER 308
+#define FOOTER 309
+#define HEADERL 310
+#define HEADERR 311
+#define HEADERF 312
+#define FOOTERL 313
+#define FOOTERR 314
+#define FOOTERF 315
+#define PAR 316
+#define ROW 317
+#define CELL 318
+#define FONTEMB 319
+#define COLORTBL 320
+#define SUBDOCUMENT 321
+#define TX 322
+#define TB 323
+#define TQR 324
+#define TQC 325
+#define TQDEC 326
+#define TLDOT 327
+#define TLHYPH 328
+#define TLUL 329
+#define TITH 330
+#define TLEQ 331
+#define BIN 332
+#define BDATA 333
+#define SDATA 334
+#define PCDATA 335
+#define SNEXT 336
+#define ABSH 337
+#define ABSW 338
+#define B 339
+#define BGBDIAG 340
+#define BGCROSS 341
+#define BGDCROSS 342
+#define BGDKBDIAG 343
+#define BGDKCROSS 344
+#define BGDKDCROSS 345
+#define BGDKFDIAG 346
+#define BGDKHORIZ 347
+#define BGDKVERT 348
+#define BGFDIAG 349
+#define BGHORIZ 350
+#define BGVERT 351
+#define BINFSXN 352
+#define BINSXN 353
+#define BOX 354
+#define BRDRB 355
+#define BRDRBAR 356
+#define BRDRBTW 357
+#define BRDRCF 358
+#define BRDRDASH 359
+#define BRDRDB 360
+#define BRDRDOT 361
+#define BRDRHAIR 362
+#define BRDRL 363
+#define BRDRR 364
+#define BRDRS 365
+#define BRDRSH 366
+#define BRDRT 367
+#define BRDRTH 368
+#define BRDRW 369
+#define BRSP 370
+#define BULLET 371
+#define CAPS 372
+#define CB 373
+#define CBPAT 374
+#define CCHS 375
+#define CELLX 376
+#define CF 377
+#define CFPAT 378
+#define CHATN 379
+#define CHDATE 380
+#define CHDPA 381
+#define CHDPL 382
+#define CHFTN 383
+#define CHFTNSEP 384
+#define CHFTNSEPC 385
+#define CHPGN 386
+#define CHTIME 387
+#define CLBGBDIAG 388
+#define CLBGCROSS 389
+#define CLBGDCROSS 390
+#define CLBGDKBDIAG 391
+#define CLBGDKCROSS 392
+#define CLBGDKFDIAG 393
+#define CLBGDKHOR 394
+#define CLBGDKRCDCROSS 395
+#define CLBGDKVERT 396
+#define CLBGFDIAG 397
+#define CLBGHORIZ 398
+#define CLBGVERT 399
+#define CLBRDRB 400
+#define CLBRDRL 401
+#define CLBRDRR 402
+#define CLBRDRT 403
+#define CLCBPAT 404
+#define CLCFPAT 405
+#define CLMGF 406
+#define CLMGR 407
+#define CLSHDNG 408
+#define COLNO 409
+#define COLS 410
+#define COLSR 411
+#define COLSX 412
+#define COLUMN 413
+#define COLW 414
+#define DELETED 415
+#define DEUXPOINTS 416
+#define DFRMTXTX 417
+#define DFRMTXTY 418
+#define DN 419
+#define DROPCAPLI 420
+#define DROPCAPT 421
+#define DXFRTEXT 422
+#define EMDASH 423
+#define EMSPACE 424
+#define ENDASH 425
+#define ENDNHERE 426
+#define ENSPACE 427
+#define EXPND 428
+#define EXPNDTW 429
+#define FI 430
+#define FOOTERY 431
+#define FS 432
+#define GUTTERSXN 433
+#define HEADERY 434
+#define HYPHPAR 435
+#define I 436
+#define INTBL 437
+#define KEEP 438
+#define KEEPN 439
+#define KERNING 440
+#define LANG 441
+#define LDBLQUOTE 442
+#define LEVEL 443
+#define LI 444
+#define LINE 445
+#define LINEBETCOL 446
+#define LINECONT 447
+#define LINEMOD 448
+#define LINEPPAGE 449
+#define LINERESTART 450
+#define LINESTARTS 451
+#define LINEX 452
+#define LNDSCPSXN 453
+#define LQUOTE 454
+#define LTRCH 455
+#define LTRMARK 456
+#define LTRPAR 457
+#define LTRROW 458
+#define LTRSECT 459
+#define MARGBSXN 460
+#define MARGLSXN 461
+#define MARGRSXN 462
+#define MARGTSXN 463
+#define MOINS 464
+#define NOLINE 465
+#define NOSUPERSUB 466
+#define NOWIDCLTPAR 467
+#define NOWRAP 468
+#define OUTL 469
+#define PAGE 470
+#define PAGEBB 471
+#define PARD 472
+#define PGHSXN 473
+#define PGNCONT 474
+#define PGNDEC 475
+#define PGNGNSH 476
+#define PGNHN 477
+#define PGNHNSC 478
+#define PGNHNSM 479
+#define PGNHNSN 480
+#define PGNHNSP 481
+#define PGNLCLTR 482
+#define PGNLCRM 483
+#define PGNRESTART 484
+#define PGNSTARTS 485
+#define PGNUCLTR 486
+#define PGNUCRM 487
+#define PGNX 488
+#define PGNY 489
+#define PGWSXN 490
+#define PHCOL 491
+#define PHMRG 492
+#define PHPG 493
+#define PIPE 494
+#define PLAIN 495
+#define PN 496
+#define PNACROSS 497
+#define PNB 498
+#define PNCAPS 499
+#define PNCARD 500
+#define PNCF 501
+#define PNDEC 502
+#define PNF 503
+#define PNFS 504
+#define PNHANG 505
+#define PNI 506
+#define PNINDENT 507
+#define PNLCLTR 508
+#define PNLCRM 509
+#define PNLVL 510
+#define PNLVLBODY 511
+#define PNLVLCONT 512
+#define PNNUMONCE 513
+#define PNORD 514
+#define PNORDT 515
+#define PNPREV 516
+#define PNQC 517
+#define PNQL 518
+#define PNQR 519
+#define PNRESTART 520
+#define PNSCAPS 521
+#define PNSECLVL 522
+#define PNSP 523
+#define PNSTART 524
+#define PNSTRIKE 525
+#define PNTEXT 526
+#define PNTXTA 527
+#define PNTXTB 528
+#define PNUCLTR 529
+#define PNUCRM 530
+#define PNUL 531
+#define PNULD 532
+#define PNULDB 533
+#define PNULNONE 534
+#define PNULW 535
+#define PNVLBT 536
+#define POSNEGX 537
+#define POSNEGY 538
+#define POSX 539
+#define POSXC 540
+#define POSXI 541
+#define POSXL 542
+#define POSXO 543
+#define POSXR 544
+#define POSY 545
+#define POSYB 546
+#define POSYC 547
+#define POSYIL 548
+#define POSYT 549
+#define PVMRG 550
+#define PVPARA 551
+#define PVPG 552
+#define QC 553
+#define QJ 554
+#define QL 555
+#define QR 556
+#define RDBLQUOTE 557
+#define REVAUTH 558
+#define REVDTTM 559
+#define REVISED 560
+#define RI 561
+#define RQUOTE 562
+#define RTLCH 563
+#define RTLMARK 564
+#define RTLPAR 565
+#define RTLROW 566
+#define RTLSECT 567
+#define SA 568
+#define SB 569
+#define SBKCOL 570
+#define SBKEVEN 571
+#define SBKNONE 572
+#define SBKODD 573
+#define SBKPAGE 574
+#define SBYS 575
+#define SCAPS 576
+#define SECTNUM 577
+#define SECTD 578
+#define SETUNLOCKED 579
+#define SHAD 580
+#define SHADING 581
+#define SL 582
+#define SLMULT 583
+#define SOFTCOL 584
+#define SOFTLHEIGHT 585
+#define SOFTLINE 586
+#define SOFTPAGE 587
+#define STRIKE 588
+#define SUB 589
+#define SUPER 590
+#define TAB 591
+#define TILDE 592
+#define TITLEPG 593
+#define TRBRDRB 594
+#define TRBRDRH 595
+#define TRBRDRL 596
+#define TRBRDRR 597
+#define TRBRDRT 598
+#define TRBRDRV 599
+#define TRGAPH 600
+#define TRHDR 601
+#define TRKEEP 602
+#define TRLEFT 603
+#define TROWD 604
+#define TRQC 605
+#define TRQL 606
+#define TRQR 607
+#define TRRH 608
+#define UL 609
+#define ULD 610
+#define ULDB 611
+#define ULNONE 612
+#define ULW 613
+#define UNDERSCORE 614
+#define UP 615
+#define V 616
+#define VERTALB 617
+#define VERTALC 618
+#define VERTALJ 619
+#define VERTALT 620
+#define ZWJ 621
+#define ZWNJ 622
+#define AENDDOC 623
+#define AENDNOTES 624
+#define AFTNBJ 625
+#define AFTNCN 626
+#define AFTNNALC 627
+#define AFTNNAR 628
+#define AFTNNAUC 629
+#define AFTNNCHI 630
+#define AFTNNRLC 631
+#define AFTNNRUC 632
+#define AFTNRESTART 633
+#define AFTNRSTCONT 634
+#define AFTNSEP 635
+#define AFTNSEPC 636
+#define AFTNSTART 637
+#define AFTNTJ 638
+#define ALLPROT 639
+#define ANNOTPROT 640
+#define BRKFRM 641
+#define CVMME 642
+#define DEFFORMAT 643
+#define DEFLANG 644
+#define DEFTAB 645
+#define DOCTEMP 646
+#define ENDDOC 647
+#define ENDNOTES 648
+#define FACINGP 649
+#define FET 650
+#define FORMDISP 651
+#define FORMPROT 652
+#define FORMSHADE 653
+#define FRACWIDTH 654
+#define FTNBJ 655
+#define FTNCN 656
+#define FTNNALC 657
+#define FTNNAR 658
+#define FTNNAUC 659
+#define FTNNCHI 660
+#define FTNNRLC 661
+#define FTNNRUC 662
+#define FTNRESTART 663
+#define FTNRSTCONT 664
+#define FTNRSTPG 665
+#define FTNSEP 666
+#define FTNSEPC 667
+#define FTNSTART 668
+#define FTNTJ 669
+#define GUTTER 670
+#define HYPHAUTO 671
+#define HYPHCAPS 672
+#define HYPHCONSEC 673
+#define HYPHHOTZ 674
+#define LANDSCAPE 675
+#define LINESTART 676
+#define LINKSTYLES 677
+#define LTRDOC 678
+#define MAKEBACKUP 679
+#define MARGB 680
+#define MARGL 681
+#define MARGMIRROR 682
+#define MARGR 683
+#define MARGT 684
+#define NEXTFILE 685
+#define NOCOLBAL 686
+#define NOEXTRASPRL 687
+#define NOTABIND 688
+#define OTBLRUL 689
+#define PAPERH 690
+#define PAPERW 691
+#define PGNSTART 692
+#define PRCOLBL 693
+#define PRINTDATA 694
+#define PSOVER 695
+#define PSZ 696
+#define REVBAR 697
+#define REVISIONS 698
+#define REVPROP 699
+#define REVPROT 700
+#define RTLDOC 701
+#define SPRSSPBF 702
+#define SPRSTSP 703
+#define SWPBDR 704
+#define TEMPLATE 705
+#define TRANSMF 706
+#define WIDOWCTRL 707
+#define WRAPTRSP 708
+#define APOSTROPHE 709
+#define FIELD 710
+#define FLDDIRTY 711
+#define FLDEDIT 712
+#define FLDLOCK 713
+#define FLDPRIV 714
+#define FLDINST 715
+#define FLDALT 716
+#define FLDRSLT 717
+#define PICT 718
+#define PZINTEGRALE 719
+#define PZRACINE 720
+#define PZFRACTION 721
+#define PZMATRIX 722
+#define PZBOX 723
+#define PZBRACKET 724
+#define PZLIST 725
+#define PZOVERSTRIKE 726
+#define PZSUSCRIPT 727
+#define EQLC 728
+#define EQRC 729
+#define EQBC 730
+#define EQAL 731
+#define EQAC 732
+#define EQAR 733
+#define EQCO 734
+#define EQVS 735
+#define EQHS 736
+#define EQSU 737
+#define EQPR 738
+#define EQIN 739
+#define EQFC 740
+#define EQVC 741
+#define EQAI 742
+#define EQUP 743
+#define EQDI 744
+#define EQDO 745
+#define EQCROCHETO 746
+#define EQCROCHETF 747
+#define EQPARENTHO 748
+#define EQPARENTHF 749
+#define EQACCOLADO 750
+#define EQACCOLADF 751
+#define EQSUPINFO 752
+#define EQSUPINFF 753
+#define FOOTNOTE 754
+#define PZPEQ 755
+#define BKMKSTART 756
+#define BKMKEND 757
+#define BKMKCOLF 758
+#define BKMKCOLL 759
+#define MACPICT 760
+#define PMMETAFILE 761
+#define WMETAFILE 762
+#define DIBITMAP 763
+#define WBITMAP 764
+#define WBMBITSPIXEL 765
+#define WBMPLANES 766
+#define WBMWIDTHBYTES 767
+#define PICBMP 768
+#define PICBPP 769
+#define YR 770
+#define MO 771
+#define DY 772
+#define HR 773
+#define MIN 774
+#define SEC 775
+#define OBJECT 776
+#define OBJTOPICT 777
+#define BKMKPUB 778
+#define PUBAUTO 779
+#define PICW 780
+#define PICH 781
+#define PICWGOAL 782
+#define PICHGOAL 783
+#define PICSCALEX 784
+#define PICSCALEY 785
+#define PICSCALED 786
+#define PICCROPT 787
+#define PICCROPB 788
+#define PICCROPR 789
+#define PICCROPL 790
+#define OBJEMB 791
+#define OBJLINK 792
+#define OBJAUTLINK 793
+#define OBJSUB 794
+#define OBJPUB 795
+#define ONJICEMB 796
+#define LINKSELF 797
+#define OBJLOCK 798
+#define OBJUPDATE 799
+#define OBJCLASS 800
+#define OBJNAME 801
+#define OBJTIME 802
+#define RSLTMERGE 803
+#define RSLTRTF 804
+#define RSLTTXT 805
+#define RSLTPICT 806
+#define RSLTBMP 807
+#define OBJSETSIZE 808
+#define OBJALIGN 809
+#define OBJTRANSY 810
+#define OBJCROPT 811
+#define OBJCROPB 812
+#define OBJCROPL 813
+#define OBJCROPR 814
+#define OBJSCALEY 815
+#define OBJSCALEX 816
+#define OBJH 817
+#define OBJW 818
+#define OBJDATA 819
+#define OBJALIAS 820
+#define OBJSECT 821
+#define RESULT 822
+#define PZPAUTREFIELD 823
+#define ATRFSTART 824
+#define ATRFEND 825
+#define ATNTIME 826
+#define ATNICN 827
+#define ANNOTATION 828
+#define ATNREF 829
+#define ATNID 830
+#define ATNAUTHOR 831
+#define PZPENDEQ 832
+#define XE 833
+#define TC 834
+#define DO 835
+#define PZERROR 836
+
+#line 1 "rtf.y"
+
+ /* Declarations en C */
+#include <stdio.h>
+#include <stdlib.h>
+#define YYDEBUG 1
+#include <malloc.h>
+/*#define fprintf if(!FLAG_DebutTeX) {;} else fprintf*/
+#define ifDTfprintf if(!FLAG_DebutTeX) {;} else fprintf
+#define LF_FNIL 1
+#define LF_FROMAN 2
+#define LF_FSWISS 3
+#define LF_FMODERN 4
+#define LF_FSCRIPT 5
+#define LF_FDECOR 6
+#define LF_FTECH 7
+#define LF_FBIDI 8
+#define CENTER 1
+#define LEFT 2
+#define RIGHT 3
+#define JUST 0
+#define INTINT 0
+#define INTSUM 1
+#define INTPROD 2
+#define BRParentheseO '('
+#define BRAccoladeO '{'
+#define BRSupInfO '<'
+#define BRCrochetO '['
+#define BRParentheseF ')'
+#define BRAccoladeF '}'
+#define BRSupInfF '>'
+#define BRCrochetF ']'
+#define BRPoint '.'
+#include "rtf.ascii.c"
+char calutemp;
+
+char pzIntermStd[]="\\end{minipage}\n\\begin{minipage}";
+char pzIntermFrame[]="\\end{minipage}}\n\\fbox{\\begin{minipage}";
+char * pzIntermDef=pzIntermStd;
+
+char pzEndStd[]="\\end{minipage}\n";
+char * pzEndDef=pzEndStd;
+char pzEndFrame[]="\\end{minipage}}\n";
+
+char pzStartStd[]="\n\\begin{minipage}";
+char * pzStartDef=pzStartStd;
+char pzStartFrame[]="\n\\fbox{\\begin{minipage}";
+
+FILE * entree;
+FILE * sortie;
+FILE * auxiliaire;
+FILE * filetemp;
+FILE * SORT;
+int FLAG_Underline=0;
+int FLAG_Bold=0;
+int FLAG_DebutTeX=0;
+int FLAG_Italique=0;
+int FLAG_FlushLeft=0;
+int FLAG_FlushRight=0;
+int FLAG_Equation=0;
+int FLAG_Center=0;
+int FLAG_Dollars=0;
+int FLAG_FI=0;
+int FLAG_RI=0;
+int FLAG_LI=0;
+int FLAG_Indice=0;
+int FLAG_Exposant=0;
+int FLAG_Integrale=0;
+int FLAG_Symbol=0;
+int FLAG_Suscript=0;
+int FLAG_bracketleft='.';
+int FLAG_bracketright='.';
+int FLAG_SusTab=0;
+int FLAG_CompteTableau=0;
+int FLAG_Tableau=0;
+int FLAG_MatrixAlign=CENTER;
+int FLAG_MatrixCols=1;
+int FLAG_InMatrix=0;
+int FLAG_MatrixColCour=1;
+int FLAG_PICTLargeur=0;
+int FLAG_PICTHauteur=0;
+int FLAG_BorderBot=0;
+int FLAG_Footer=0;
+int FLAG_InPict=0;
+int FLAG_WMetafile=0;
+int FLAG_NIT=1;
+int FLAG_ERROR=0;
+int FLAG_FIRST_ERROR=1;
+int FLAG_EndTeX=0;
+char TAB_PosTabMatrix[]={ ' ', 'c', 'l', 'r' };
+int Num_Col_Tabular=0;
+int ASCII_TABLE=2;
+int lengthLCT=1024;
+int Largeur_Cols[512];
+int cpt,cpt2,cpt3;
+int Num_Max_Col=0;
+int Inter_Col=0;
+char * Ligne_Courante_Tabular;
+typedef struct t_formatDocument
+ {
+ int FDDEFTAB;
+ int FDPAPERW;
+ int FDPAPERH;
+ int FDPSZ;
+ int FDMARGL;
+ int FDMARGR;
+ int FDMARGT;
+ int FDMARGB;
+ int FDFACINGP;
+ int FDGUTTER;
+ int FDMARGMIRROR;
+ int FDLANDSCAPE;
+ int FDPGNSTART;
+ int FDWIDOWCTRL;
+ } t_FormatDocument;
+t_FormatDocument PZ_FD;
+typedef struct t_lfonte
+ {
+ int LF_Fontnum; /* Numero de fonte : Le meme que dans l'ordre de la liste en general */
+ int LF_Fontfamily; /* Famille de fonte: cf les defines */
+ int LF_Fcharset; /* Jeu de caracteres dans la table des polices */
+ int LF_Fprq; /* 'Pitch' de la police dans la table de caracteres */
+ char * LF_Fontname; /* Nom de la fonte */
+ char * LF_TexEquiv; /* Equivalent TeX */
+ struct t_lfonte * suiv;/* Maillon suivant */
+ } t_LFonte, *p_LFonte;
+typedef struct t_ConTeXte
+ {
+ int EtatTexte; /* CENTER ou RIGHT ou LEFT */
+ struct t_ConTeXte * suiv;
+ struct t_ConTeXte * prec;
+ /* Pour l'instant ca nous suffit */
+ } t_contexte, * p_contexte;
+p_contexte DebLisContextes=NULL;
+p_contexte ContextActuel=NULL;
+p_contexte ContextInitTab=NULL;
+p_LFonte DebLisFontes=NULL;
+p_LFonte FonteActuelle=NULL;
+#include "rtf.fonts.c"
+#include "rtf.context.c"
+
+#line 145 "rtf.y"
+typedef union {
+char calu;
+int numo;
+char* motcomm;
+char carcomm;
+char* pcdata;
+} YYSTYPE;
+
+#ifndef YYLTYPE
+typedef
+ struct yyltype
+ {
+ int timestamp;
+ int first_line;
+ int first_column;
+ int last_line;
+ int last_column;
+ char *text;
+ }
+ yyltype;
+
+#define YYLTYPE yyltype
+#endif
+
+#include <stdio.h>
+
+#ifndef __cplusplus
+#ifndef __STDC__
+#define const
+#endif
+#endif
+
+
+
+#define YYFINAL 1634
+#define YYFLAG -32768
+#define YYNTBASE 593
+
+#define YYTRANSLATE(x) ((unsigned)(x) <= 836 ? yytranslate[x] : 815)
+
+static const short yytranslate[] = { 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 588, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 587, 2, 2, 2, 2, 2, 2, 2, 591,
+ 592, 2, 2, 589, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 584, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 585, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 586, 2, 2, 2, 2, 2, 2, 2,
+ 2, 590, 582, 2, 583, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
+ 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, 403, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, 473, 474, 475,
+ 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
+ 486, 487, 488, 489, 490, 491, 492, 493, 494, 495,
+ 496, 497, 498, 499, 500, 501, 502, 503, 504, 505,
+ 506, 507, 508, 509, 510, 511, 512, 513, 514, 515,
+ 516, 517, 518, 519, 520, 521, 522, 523, 524, 525,
+ 526, 527, 528, 529, 530, 531, 532, 533, 534, 535,
+ 536, 537, 538, 539, 540, 541, 542, 543, 544, 545,
+ 546, 547, 548, 549, 550, 551, 552, 553, 554, 555,
+ 556, 557, 558, 559, 560, 561, 562, 563, 564, 565,
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575,
+ 576, 577, 578, 579, 580, 581
+};
+
+#if YYDEBUG != 0
+static const short yyprhs[] = { 0,
+ 0, 1, 2, 8, 11, 12, 23, 34, 46, 58,
+ 71, 72, 75, 76, 81, 82, 84, 86, 88, 90,
+ 93, 95, 97, 99, 101, 102, 105, 106, 108, 110,
+ 112, 114, 116, 118, 120, 122, 124, 126, 128, 130,
+ 132, 134, 136, 138, 142, 145, 150, 151, 163, 165,
+ 167, 169, 171, 173, 175, 177, 179, 180, 183, 184,
+ 187, 188, 195, 196, 204, 206, 208, 209, 216, 217,
+ 220, 221, 225, 229, 234, 242, 244, 247, 248, 251,
+ 252, 255, 257, 259, 261, 263, 265, 266, 270, 273,
+ 276, 280, 284, 288, 292, 296, 300, 304, 305, 308,
+ 309, 312, 313, 316, 317, 320, 321, 324, 335, 345,
+ 346, 349, 352, 355, 356, 361, 363, 366, 368, 370,
+ 372, 374, 376, 378, 379, 382, 383, 386, 387, 390,
+ 391, 393, 398, 403, 408, 413, 418, 423, 424, 426,
+ 427, 429, 430, 432, 435, 437, 438, 441, 444, 447,
+ 450, 453, 456, 460, 464, 468, 472, 476, 480, 482,
+ 485, 487, 490, 497, 504, 505, 508, 511, 514, 517,
+ 519, 521, 524, 526, 528, 530, 532, 534, 537, 540,
+ 542, 544, 546, 548, 550, 552, 554, 556, 558, 560,
+ 562, 564, 566, 568, 571, 574, 576, 578, 580, 582,
+ 584, 586, 588, 590, 592, 594, 596, 598, 600, 602,
+ 604, 606, 608, 611, 614, 617, 620, 623, 626, 629,
+ 631, 634, 636, 638, 641, 643, 645, 647, 649, 651,
+ 653, 655, 657, 659, 661, 663, 665, 667, 669, 671,
+ 673, 675, 677, 679, 681, 683, 686, 689, 691, 693,
+ 695, 696, 703, 708, 709, 715, 719, 722, 724, 726,
+ 729, 731, 733, 735, 738, 741, 744, 747, 749, 751,
+ 753, 755, 757, 759, 762, 765, 768, 771, 774, 776,
+ 779, 782, 785, 787, 789, 791, 794, 797, 800, 803,
+ 806, 809, 812, 814, 816, 819, 822, 825, 827, 829,
+ 832, 835, 837, 839, 841, 843, 845, 848, 851, 853,
+ 855, 857, 859, 861, 863, 865, 867, 869, 871, 874,
+ 880, 882, 884, 886, 888, 890, 892, 894, 896, 898,
+ 901, 903, 906, 910, 914, 918, 922, 926, 930, 933,
+ 936, 939, 942, 945, 948, 950, 952, 954, 958, 961,
+ 964, 967, 969, 971, 973, 975, 977, 979, 981, 983,
+ 987, 990, 993, 995, 997, 1001, 1004, 1006, 1009, 1010,
+ 1015, 1017, 1020, 1024, 1030, 1035, 1040, 1045, 1049, 1053,
+ 1057, 1060, 1061, 1065, 1066, 1071, 1076, 1080, 1089, 1097,
+ 1099, 1102, 1104, 1106, 1108, 1110, 1112, 1114, 1116, 1118,
+ 1121, 1124, 1127, 1130, 1133, 1135, 1137, 1139, 1141, 1143,
+ 1145, 1147, 1149, 1152, 1155, 1158, 1160, 1162, 1164, 1166,
+ 1168, 1170, 1174, 1178, 1182, 1185, 1188, 1191, 1194, 1197,
+ 1200, 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1217, 1220,
+ 1222, 1224, 1227, 1229, 1231, 1234, 1237, 1241, 1245, 1248,
+ 1251, 1255, 1258, 1261, 1263, 1265, 1267, 1272, 1277, 1280,
+ 1284, 1288, 1293, 1295, 1297, 1299, 1301, 1303, 1305, 1307,
+ 1309, 1312, 1315, 1318, 1321, 1325, 1329, 1333, 1335, 1337,
+ 1339, 1341, 1343, 1345, 1347, 1349, 1351, 1353, 1356, 1358,
+ 1360, 1363, 1366, 1368, 1370, 1373, 1376, 1378, 1380, 1383,
+ 1386, 1388, 1391, 1394, 1396, 1398, 1401, 1403, 1405, 1408,
+ 1410, 1412, 1414, 1416, 1418, 1421, 1423, 1425, 1427, 1429,
+ 1431, 1433, 1435, 1438, 1441, 1444, 1447, 1450, 1453, 1456,
+ 1459, 1461, 1463, 1465, 1468, 1470, 1472, 1474, 1476, 1478,
+ 1481, 1484, 1487, 1490, 1493, 1497, 1501, 1504, 1507, 1510,
+ 1513, 1515, 1517, 1520, 1523, 1525, 1527, 1530, 1534, 1538,
+ 1542, 1544, 1547, 1550, 1553, 1557, 1561, 1564, 1567, 1569,
+ 1571, 1573, 1576, 1579, 1581, 1583, 1585, 1587, 1589, 1591,
+ 1593, 1595, 1598, 1601, 1603, 1605, 1607, 1609, 1612, 1614,
+ 1618, 1621, 1625, 1628, 1631, 1634, 1638, 1642, 1644, 1646,
+ 1648, 1650, 1652, 1654, 1656, 1658, 1660, 1662, 1664, 1666,
+ 1671, 1676, 1680, 1684, 1688, 1692, 1695, 1701, 1707, 1712,
+ 1717, 1722, 1727, 1731, 1733, 1735, 1737, 1739, 1741, 1743,
+ 1745, 1747, 1750, 1752, 1756, 1759, 1762, 1764, 1766, 1769,
+ 1772, 1775, 1778, 1781, 1784, 1787, 1790, 1793, 1796, 1800,
+ 1804, 1808, 1812, 1816, 1820, 1824, 1828, 1830, 1832, 1835,
+ 1838, 1840, 1842, 1844, 1846, 1848, 1850, 1852, 1855, 1858,
+ 1861, 1864, 1867, 1869, 1872, 1875, 1879, 1883, 1887, 1891,
+ 1895, 1898, 1901, 1905, 1909, 1912, 1915, 1919, 1921, 1923,
+ 1925, 1927, 1929, 1931, 1933, 1935, 1937, 1939, 1941, 1943,
+ 1944, 1949, 1950, 1957, 1962, 1963, 1969, 1972, 1975, 1977,
+ 1981, 1984, 1987, 1991, 1995, 2000, 2003, 2007, 2012, 2016,
+ 2020, 2025, 2032, 2040, 2046, 2053, 2058, 2064, 2068, 2073,
+ 2078, 2084, 2088, 2091, 2095, 2100, 2105, 2111, 2113, 2114,
+ 2118, 2122, 2126, 2130, 2131, 2135, 2140, 2149, 2152, 2154,
+ 2156, 2158, 2162, 2165, 2169, 2171, 2173, 2174, 2178, 2180,
+ 2181, 2183, 2187, 2189, 2191, 2194, 2195, 2198, 2200, 2203,
+ 2205, 2207, 2209, 2211, 2214, 2217, 2220, 2223, 2225, 2227,
+ 2230, 2233, 2236, 2239, 2242, 2245, 2248, 2250, 2253, 2256,
+ 2259, 2262, 2265, 2268, 2271, 2274, 2276, 2278, 2281, 2283,
+ 2286, 2289, 2292, 2294, 2296, 2299, 2302, 2305, 2307, 2309,
+ 2311, 2313, 2315, 2317, 2319, 2321, 2323, 2325, 2327, 2329,
+ 2331, 2333, 2335, 2337, 2339, 2341, 2343, 2346, 2348, 2350,
+ 2352, 2354, 2356, 2358, 2360, 2362, 2364, 2366, 2367, 2371,
+ 2373, 2375, 2377, 2379, 2381, 2383, 2385, 2387, 2389, 2391,
+ 2394, 2395, 2399, 2403, 2406, 2409, 2412, 2415, 2419, 2423,
+ 2427, 2433, 2437, 2440, 2443, 2445, 2447, 2449, 2451, 2453,
+ 2455, 2458, 2461, 2464, 2467, 2470, 2473, 2476, 2480, 2484,
+ 2487, 2490, 2494, 2498, 2501, 2504, 2507, 2510, 2513, 2516,
+ 2519, 2523, 2527, 2531, 2535, 2539, 2543, 2547, 2549, 2551,
+ 2554, 2557, 2560, 2562, 2564, 2566, 2568, 2570, 2572, 2574,
+ 2576, 2578, 2581, 2584, 2587, 2590, 2593, 2596, 2599, 2601,
+ 2603, 2605, 2607, 2609, 2611, 2613, 2615, 2617, 2623, 2629,
+ 2635, 2637, 2640, 2642, 2645, 2647, 2649, 2651, 2653, 2655,
+ 2658, 2661, 2663, 2666, 2669, 2672, 2675, 2678, 2681, 2684,
+ 2688, 2692, 2695, 2699, 2703, 2707, 2711, 2715, 2719, 2722,
+ 2725, 2729, 2733, 2740, 2746, 2748, 2750, 2753, 2756, 2762,
+ 2768, 2773, 2775, 2777, 2780, 2783, 2785, 2791, 2796, 2802,
+ 2807, 2830, 2848, 2866, 2879, 2890, 2892, 2894, 2896, 2898,
+ 2901, 2904, 2907, 2910, 2916, 2918, 2921, 2924, 2930, 2935,
+ 2939, 2941, 2943, 2946, 2949, 2953, 2957, 2958, 2959, 2964,
+ 2966, 2969, 2971, 2973, 2976, 2979, 2981, 2983, 2985, 2987,
+ 2989, 2991, 2993, 2995, 2997, 2999, 3000, 3001, 3002, 3003,
+ 3017, 3018, 3019, 3020, 3021, 3034, 3035, 3036, 3045, 3046,
+ 3047, 3056, 3057, 3063, 3064, 3071, 3072, 3078, 3079, 3085,
+ 3086, 3093, 3094, 3102, 3104, 3106, 3109, 3112, 3117, 3122,
+ 3128, 3129, 3135, 3136, 3137, 3145, 3148, 3151, 3154, 3157,
+ 3160, 3163, 3166, 3169, 3172, 3175, 3178, 3181, 3184, 3187,
+ 3190, 3193, 3196, 3199, 3202, 3205, 3208, 3211, 3214, 3217,
+ 3221, 3225, 3229, 3233, 3237, 3241, 3245, 3249, 3253, 3257,
+ 3261, 3265, 3269, 3273, 3277, 3281, 3285, 3289, 3293, 3297,
+ 3301, 3305, 3309, 3313, 3315, 3317, 3319, 3322, 3325, 3328,
+ 3331, 3334, 3337, 3341, 3345, 3349, 3351, 3353, 3355, 3358,
+ 3361, 3362, 3366, 3367, 3371, 3374, 3378, 3382, 3384, 3386,
+ 3388, 3391, 3394, 3397, 3400, 3405, 3407, 3411, 3412, 3415,
+ 3417, 3420, 3421, 3426, 3429, 3431, 3433, 3436, 3437, 3441,
+ 3444, 3446, 3450
+};
+
+static const short yyrhs[] = { -1,
+ 0, 582, 595, 594, 647, 583, 0, 581, 651, 0,
+ 0, 9, 601, 599, 600, 596, 582, 7, 605, 583,
+ 597, 0, 9, 601, 599, 596, 600, 582, 7, 605,
+ 583, 597, 0, 9, 601, 388, 599, 600, 596, 582,
+ 7, 605, 583, 597, 0, 9, 601, 596, 599, 600,
+ 596, 582, 7, 605, 583, 597, 0, 9, 601, 596,
+ 388, 599, 600, 596, 582, 7, 605, 583, 597, 0,
+ 0, 389, 601, 0, 0, 582, 598, 583, 597, 0,
+ 0, 616, 0, 623, 0, 629, 0, 645, 0, 51,
+ 649, 0, 8, 0, 10, 0, 4, 0, 5, 0,
+ 0, 6, 601, 0, 0, 3, 0, 3, 0, 80,
+ 0, 584, 0, 585, 0, 586, 0, 587, 0, 588,
+ 0, 80, 0, 584, 0, 585, 0, 586, 0, 587,
+ 0, 588, 0, 589, 0, 606, 0, 582, 606, 583,
+ 0, 606, 605, 0, 582, 606, 583, 605, 0, 0,
+ 11, 601, 608, 609, 610, 612, 615, 603, 607, 611,
+ 584, 0, 12, 0, 13, 0, 14, 0, 15, 0,
+ 16, 0, 17, 0, 18, 0, 19, 0, 0, 20,
+ 601, 0, 0, 21, 601, 0, 0, 582, 22, 23,
+ 615, 603, 583, 0, 0, 582, 22, 64, 613, 614,
+ 743, 583, 0, 24, 0, 25, 0, 0, 582, 22,
+ 23, 615, 603, 583, 0, 0, 26, 601, 0, 0,
+ 22, 27, 617, 0, 582, 618, 583, 0, 617, 582,
+ 618, 583, 0, 28, 29, 601, 620, 621, 619, 603,
+ 0, 622, 0, 619, 622, 0, 0, 30, 601, 0,
+ 0, 31, 601, 0, 32, 0, 33, 0, 34, 0,
+ 35, 0, 36, 0, 0, 65, 584, 624, 0, 65,
+ 624, 0, 625, 584, 0, 624, 625, 584, 0, 626,
+ 627, 628, 0, 626, 628, 627, 0, 627, 626, 628,
+ 0, 627, 628, 626, 0, 628, 626, 627, 0, 628,
+ 627, 626, 0, 0, 37, 601, 0, 0, 38, 601,
+ 0, 0, 39, 601, 0, 0, 40, 630, 0, 0,
+ 631, 630, 0, 582, 632, 633, 634, 636, 637, 638,
+ 639, 584, 583, 0, 582, 632, 633, 636, 637, 638,
+ 639, 584, 583, 0, 0, 41, 601, 0, 42, 601,
+ 0, 43, 601, 0, 0, 582, 44, 640, 583, 0,
+ 635, 0, 634, 635, 0, 685, 0, 699, 0, 701,
+ 0, 715, 0, 712, 0, 744, 0, 0, 45, 601,
+ 0, 0, 46, 601, 0, 0, 81, 601, 0, 0,
+ 603, 0, 641, 643, 642, 644, 0, 641, 642, 643,
+ 644, 0, 642, 641, 643, 644, 0, 642, 643, 641,
+ 644, 0, 643, 642, 641, 644, 0, 643, 641, 642,
+ 644, 0, 0, 47, 0, 0, 49, 0, 0, 48,
+ 0, 50, 601, 0, 603, 0, 0, 515, 601, 0,
+ 516, 601, 0, 517, 601, 0, 518, 601, 0, 519,
+ 601, 0, 520, 601, 0, 646, 515, 601, 0, 646,
+ 516, 601, 0, 646, 517, 601, 0, 646, 518, 601,
+ 0, 646, 519, 601, 0, 646, 520, 601, 0, 648,
+ 0, 650, 648, 0, 651, 0, 648, 651, 0, 582,
+ 22, 430, 603, 583, 648, 0, 582, 22, 450, 603,
+ 583, 648, 0, 0, 582, 583, 0, 390, 601, 0,
+ 419, 601, 0, 418, 601, 0, 417, 0, 416, 0,
+ 421, 601, 0, 399, 0, 424, 0, 388, 0, 440,
+ 0, 391, 0, 389, 601, 0, 395, 601, 0, 411,
+ 0, 412, 0, 401, 0, 380, 0, 381, 0, 371,
+ 0, 393, 0, 392, 0, 414, 0, 400, 0, 369,
+ 0, 368, 0, 370, 0, 383, 0, 413, 601, 0,
+ 382, 601, 0, 410, 0, 408, 0, 409, 0, 378,
+ 0, 379, 0, 403, 0, 402, 0, 404, 0, 406,
+ 0, 407, 0, 405, 0, 373, 0, 372, 0, 374,
+ 0, 376, 0, 377, 0, 375, 0, 436, 601, 0,
+ 435, 601, 0, 441, 601, 0, 426, 601, 0, 428,
+ 601, 0, 429, 601, 0, 425, 601, 0, 394, 0,
+ 415, 601, 0, 427, 0, 420, 0, 437, 601, 0,
+ 452, 0, 422, 0, 433, 0, 453, 0, 438, 0,
+ 432, 0, 431, 0, 387, 0, 448, 0, 447, 0,
+ 434, 0, 451, 0, 449, 0, 386, 0, 397, 0,
+ 384, 0, 398, 0, 396, 0, 439, 0, 445, 0,
+ 443, 0, 444, 601, 0, 442, 601, 0, 385, 0,
+ 446, 0, 423, 0, 0, 654, 582, 656, 583, 652,
+ 735, 0, 654, 658, 52, 651, 0, 0, 582, 656,
+ 583, 653, 735, 0, 658, 52, 651, 0, 654, 658,
+ 0, 658, 0, 655, 0, 654, 655, 0, 52, 0,
+ 323, 0, 171, 0, 97, 601, 0, 98, 601, 0,
+ 43, 601, 0, 267, 601, 0, 324, 0, 317, 0,
+ 315, 0, 319, 0, 316, 0, 318, 0, 155, 601,
+ 0, 157, 601, 0, 154, 601, 0, 156, 601, 0,
+ 159, 601, 0, 191, 0, 193, 601, 0, 197, 601,
+ 0, 196, 601, 0, 195, 0, 194, 0, 192, 0,
+ 235, 601, 0, 218, 601, 0, 206, 601, 0, 207,
+ 601, 0, 208, 601, 0, 205, 601, 0, 178, 601,
+ 0, 198, 0, 338, 0, 179, 601, 0, 176, 601,
+ 0, 230, 601, 0, 219, 0, 229, 0, 233, 601,
+ 0, 234, 601, 0, 220, 0, 232, 0, 228, 0,
+ 231, 0, 227, 0, 222, 601, 0, 221, 601, 0,
+ 226, 0, 223, 0, 224, 0, 225, 0, 365, 0,
+ 362, 0, 363, 0, 364, 0, 312, 0, 204, 0,
+ 657, 658, 0, 657, 658, 582, 656, 583, 0, 53,
+ 0, 54, 0, 55, 0, 56, 0, 57, 0, 58,
+ 0, 59, 0, 60, 0, 663, 0, 658, 663, 0,
+ 660, 0, 659, 660, 0, 673, 685, 699, 0, 673,
+ 699, 685, 0, 685, 699, 673, 0, 685, 673, 699,
+ 0, 699, 685, 673, 0, 699, 673, 685, 0, 673,
+ 685, 0, 685, 673, 0, 673, 699, 0, 699, 673,
+ 0, 685, 699, 0, 699, 685, 0, 673, 0, 685,
+ 0, 699, 0, 701, 715, 712, 0, 701, 715, 0,
+ 701, 712, 0, 715, 712, 0, 701, 0, 715, 0,
+ 712, 0, 349, 0, 664, 0, 659, 0, 665, 0,
+ 666, 0, 661, 690, 669, 0, 690, 669, 0, 661,
+ 666, 0, 664, 0, 666, 0, 661, 690, 669, 0,
+ 690, 669, 0, 690, 0, 662, 667, 0, 0, 345,
+ 601, 668, 670, 0, 670, 0, 698, 693, 0, 671,
+ 698, 693, 0, 720, 721, 722, 718, 693, 0, 721,
+ 722, 718, 693, 0, 720, 722, 718, 693, 0, 720,
+ 721, 718, 693, 0, 722, 718, 693, 0, 721, 718,
+ 693, 0, 720, 718, 693, 0, 718, 693, 0, 0,
+ 61, 672, 663, 0, 0, 582, 674, 675, 583, 0,
+ 22, 267, 601, 677, 0, 22, 267, 601, 0, 271,
+ 728, 583, 582, 22, 241, 676, 677, 0, 271, 728,
+ 583, 582, 22, 241, 676, 0, 690, 0, 255, 601,
+ 0, 281, 0, 256, 0, 257, 0, 678, 0, 679,
+ 0, 683, 0, 684, 0, 681, 0, 678, 677, 0,
+ 679, 677, 0, 683, 677, 0, 684, 677, 0, 681,
+ 677, 0, 245, 0, 247, 0, 274, 0, 275, 0,
+ 253, 0, 254, 0, 259, 0, 260, 0, 248, 601,
+ 0, 249, 601, 0, 246, 601, 0, 243, 0, 251,
+ 0, 244, 0, 266, 0, 680, 0, 270, 0, 248,
+ 601, 679, 0, 249, 601, 679, 0, 246, 601, 679,
+ 0, 243, 679, 0, 251, 679, 0, 244, 679, 0,
+ 266, 679, 0, 680, 679, 0, 270, 679, 0, 276,
+ 0, 277, 0, 278, 0, 279, 0, 280, 0, 258,
+ 0, 242, 0, 252, 601, 0, 268, 601, 0, 261,
+ 0, 682, 0, 269, 601, 0, 250, 0, 265, 0,
+ 258, 681, 0, 242, 681, 0, 252, 601, 681, 0,
+ 268, 601, 681, 0, 261, 681, 0, 682, 681, 0,
+ 269, 601, 681, 0, 250, 681, 0, 265, 681, 0,
+ 262, 0, 263, 0, 264, 0, 582, 273, 603, 583,
+ 0, 582, 272, 603, 583, 0, 686, 689, 0, 686,
+ 689, 688, 0, 685, 686, 689, 0, 685, 686, 689,
+ 688, 0, 112, 0, 100, 0, 108, 0, 109, 0,
+ 102, 0, 101, 0, 99, 0, 689, 0, 689, 688,
+ 0, 114, 601, 0, 115, 601, 0, 103, 601, 0,
+ 688, 114, 601, 0, 688, 115, 601, 0, 688, 103,
+ 601, 0, 110, 0, 113, 0, 111, 0, 105, 0,
+ 106, 0, 104, 0, 107, 0, 66, 0, 691, 0,
+ 728, 0, 691, 728, 0, 62, 0, 696, 0, 659,
+ 697, 0, 661, 696, 0, 661, 0, 695, 0, 671,
+ 695, 0, 698, 693, 0, 693, 0, 692, 0, 690,
+ 694, 0, 698, 693, 0, 696, 0, 661, 696, 0,
+ 661, 693, 0, 63, 0, 700, 0, 699, 700, 0,
+ 61, 0, 217, 0, 41, 601, 0, 180, 0, 182,
+ 0, 183, 0, 212, 0, 184, 0, 188, 601, 0,
+ 210, 0, 216, 0, 320, 0, 300, 0, 301, 0,
+ 299, 0, 298, 0, 175, 601, 0, 189, 601, 0,
+ 306, 601, 0, 314, 601, 0, 313, 601, 0, 327,
+ 601, 0, 328, 601, 0, 66, 601, 0, 310, 0,
+ 202, 0, 702, 0, 702, 701, 0, 703, 0, 704,
+ 0, 705, 0, 706, 0, 707, 0, 702, 703, 0,
+ 702, 704, 0, 702, 705, 0, 702, 706, 0, 702,
+ 707, 0, 703, 83, 601, 0, 703, 82, 601, 0,
+ 83, 601, 0, 82, 601, 0, 708, 704, 0, 709,
+ 704, 0, 708, 0, 709, 0, 710, 705, 0, 711,
+ 705, 0, 710, 0, 711, 0, 213, 706, 0, 167,
+ 601, 706, 0, 162, 601, 706, 0, 163, 601, 706,
+ 0, 213, 0, 167, 601, 0, 162, 601, 0, 163,
+ 601, 0, 165, 601, 707, 0, 166, 601, 707, 0,
+ 165, 601, 0, 166, 601, 0, 237, 0, 238, 0,
+ 236, 0, 284, 601, 0, 282, 601, 0, 285, 0,
+ 286, 0, 288, 0, 287, 0, 289, 0, 295, 0,
+ 297, 0, 296, 0, 290, 601, 0, 283, 601, 0,
+ 294, 0, 293, 0, 291, 0, 292, 0, 326, 601,
+ 0, 714, 0, 713, 326, 601, 0, 713, 714, 0,
+ 326, 601, 713, 0, 714, 713, 0, 123, 601, 0,
+ 119, 601, 0, 713, 123, 601, 0, 713, 119, 601,
+ 0, 95, 0, 96, 0, 94, 0, 85, 0, 86,
+ 0, 87, 0, 92, 0, 93, 0, 91, 0, 88,
+ 0, 89, 0, 90, 0, 716, 717, 67, 601, 0,
+ 716, 717, 68, 601, 0, 716, 67, 601, 0, 716,
+ 68, 601, 0, 717, 68, 601, 0, 717, 67, 601,
+ 0, 67, 601, 0, 715, 716, 717, 67, 601, 0,
+ 715, 716, 717, 68, 601, 0, 715, 716, 67, 601,
+ 0, 715, 716, 68, 601, 0, 715, 717, 68, 601,
+ 0, 715, 717, 67, 601, 0, 715, 67, 601, 0,
+ 69, 0, 70, 0, 71, 0, 72, 0, 73, 0,
+ 74, 0, 75, 0, 76, 0, 725, 719, 0, 719,
+ 0, 725, 719, 718, 0, 719, 718, 0, 121, 601,
+ 0, 723, 0, 724, 0, 720, 723, 0, 720, 724,
+ 0, 343, 687, 0, 339, 687, 0, 341, 687, 0,
+ 342, 687, 0, 340, 687, 0, 344, 687, 0, 348,
+ 601, 0, 353, 601, 0, 721, 343, 687, 0, 721,
+ 339, 687, 0, 721, 341, 687, 0, 721, 342, 687,
+ 0, 721, 340, 687, 0, 721, 344, 687, 0, 721,
+ 348, 601, 0, 721, 353, 601, 0, 346, 0, 347,
+ 0, 722, 346, 0, 722, 347, 0, 351, 0, 352,
+ 0, 350, 0, 203, 0, 311, 0, 151, 0, 152,
+ 0, 148, 687, 0, 146, 687, 0, 145, 687, 0,
+ 147, 687, 0, 727, 726, 0, 726, 0, 151, 725,
+ 0, 152, 725, 0, 148, 687, 725, 0, 146, 687,
+ 725, 0, 145, 687, 725, 0, 147, 687, 725, 0,
+ 727, 726, 725, 0, 726, 725, 0, 153, 601, 0,
+ 150, 601, 726, 0, 149, 601, 726, 0, 150, 601,
+ 0, 149, 601, 0, 153, 601, 726, 0, 143, 0,
+ 144, 0, 142, 0, 133, 0, 134, 0, 135, 0,
+ 139, 0, 141, 0, 138, 0, 136, 0, 137, 0,
+ 140, 0, 0, 582, 729, 739, 583, 0, 0, 654,
+ 582, 656, 583, 730, 735, 0, 654, 658, 52, 651,
+ 0, 0, 582, 656, 583, 731, 735, 0, 654, 658,
+ 0, 740, 741, 0, 742, 0, 740, 741, 728, 0,
+ 742, 728, 0, 502, 603, 0, 502, 603, 728, 0,
+ 501, 765, 603, 0, 501, 765, 603, 728, 0, 501,
+ 603, 0, 501, 603, 765, 0, 501, 603, 765, 728,
+ 0, 501, 603, 728, 0, 22, 502, 603, 0, 22,
+ 502, 603, 728, 0, 22, 501, 523, 524, 760, 603,
+ 0, 22, 501, 523, 524, 760, 603, 728, 0, 22,
+ 501, 523, 760, 603, 0, 22, 501, 523, 760, 603,
+ 728, 0, 22, 501, 765, 603, 0, 22, 501, 765,
+ 603, 728, 0, 22, 501, 603, 0, 22, 501, 603,
+ 728, 0, 22, 501, 603, 765, 0, 22, 501, 603,
+ 765, 728, 0, 22, 738, 736, 0, 738, 736, 0,
+ 455, 762, 764, 0, 455, 762, 764, 728, 0, 455,
+ 761, 762, 764, 0, 455, 761, 762, 764, 728, 0,
+ 521, 0, 0, 463, 732, 734, 0, 22, 575, 603,
+ 0, 22, 576, 603, 0, 22, 571, 646, 0, 0,
+ 124, 733, 728, 0, 22, 572, 750, 728, 0, 22,
+ 573, 582, 22, 574, 601, 583, 658, 0, 22, 580,
+ 0, 580, 0, 578, 0, 579, 0, 752, 757, 728,
+ 0, 752, 757, 0, 658, 52, 651, 0, 658, 0,
+ 658, 0, 0, 658, 737, 728, 0, 499, 0, 0,
+ 728, 0, 658, 52, 651, 0, 658, 0, 744, 0,
+ 744, 740, 0, 0, 741, 743, 0, 743, 0, 742,
+ 743, 0, 603, 0, 602, 0, 745, 0, 240, 0,
+ 84, 601, 0, 117, 601, 0, 160, 601, 0, 164,
+ 601, 0, 334, 0, 211, 0, 173, 601, 0, 174,
+ 601, 0, 185, 601, 0, 11, 601, 0, 177, 601,
+ 0, 181, 601, 0, 214, 601, 0, 305, 0, 303,
+ 601, 0, 304, 601, 0, 321, 601, 0, 325, 601,
+ 0, 333, 601, 0, 354, 601, 0, 355, 601, 0,
+ 356, 601, 0, 357, 0, 358, 0, 360, 601, 0,
+ 335, 0, 361, 601, 0, 122, 601, 0, 118, 601,
+ 0, 308, 0, 200, 0, 42, 601, 0, 120, 601,
+ 0, 186, 601, 0, 590, 0, 125, 0, 127, 0,
+ 126, 0, 132, 0, 131, 0, 322, 0, 128, 0,
+ 124, 0, 129, 0, 130, 0, 61, 0, 52, 0,
+ 215, 0, 158, 0, 190, 0, 332, 0, 329, 0,
+ 331, 0, 330, 601, 0, 336, 0, 168, 0, 170,
+ 0, 169, 0, 172, 0, 116, 0, 199, 0, 307,
+ 0, 187, 0, 302, 0, 0, 239, 746, 766, 0,
+ 337, 0, 209, 0, 359, 0, 161, 0, 454, 0,
+ 201, 0, 309, 0, 366, 0, 367, 0, 505, 0,
+ 506, 601, 0, 0, 507, 748, 601, 0, 508, 601,
+ 749, 0, 509, 601, 0, 510, 601, 0, 511, 601,
+ 0, 512, 601, 0, 749, 510, 601, 0, 749, 511,
+ 601, 0, 749, 512, 601, 0, 582, 463, 752, 757,
+ 583, 0, 753, 754, 755, 0, 753, 754, 0, 753,
+ 755, 0, 753, 0, 687, 0, 712, 0, 747, 0,
+ 751, 0, 756, 0, 752, 687, 0, 752, 712, 0,
+ 752, 747, 0, 752, 751, 0, 752, 756, 0, 525,
+ 601, 0, 526, 601, 0, 753, 525, 601, 0, 753,
+ 526, 601, 0, 527, 601, 0, 528, 601, 0, 754,
+ 527, 601, 0, 754, 528, 601, 0, 529, 601, 0,
+ 530, 601, 0, 531, 601, 0, 532, 601, 0, 533,
+ 601, 0, 534, 601, 0, 535, 601, 0, 755, 529,
+ 601, 0, 755, 530, 601, 0, 755, 531, 601, 0,
+ 755, 532, 601, 0, 755, 533, 601, 0, 755, 534,
+ 601, 0, 755, 535, 601, 0, 513, 0, 514, 0,
+ 756, 513, 0, 756, 514, 0, 77, 78, 0, 79,
+ 0, 603, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 536, 0,
+ 537, 0, 538, 0, 539, 0, 540, 0, 541, 0,
+ 542, 0, 543, 0, 544, 0, 582, 22, 545, 603,
+ 583, 0, 582, 22, 546, 603, 583, 0, 582, 22,
+ 547, 646, 583, 0, 548, 0, 0, 548, 0, 0,
+ 0, 0, 0, 0, 549, 0, 550, 0, 551, 0,
+ 552, 0, 553, 0, 554, 601, 0, 555, 601, 0,
+ 0, 0, 556, 601, 0, 557, 601, 0, 558, 601,
+ 0, 559, 601, 0, 560, 601, 0, 561, 601, 0,
+ 0, 553, 0, 0, 554, 601, 0, 0, 555, 601,
+ 0, 0, 0, 0, 0, 556, 601, 0, 0, 557,
+ 601, 0, 0, 558, 601, 0, 0, 559, 601, 0,
+ 0, 560, 601, 0, 0, 561, 601, 0, 562, 601,
+ 0, 563, 601, 0, 0, 562, 601, 0, 0, 563,
+ 601, 0, 582, 22, 564, 0, 743, 583, 0, 582,
+ 22, 564, 743, 583, 0, 758, 0, 759, 0, 0,
+ 758, 0, 0, 759, 0, 582, 22, 565, 743, 583,
+ 0, 582, 22, 566, 743, 583, 0, 582, 567, 658,
+ 583, 0, 758, 0, 759, 0, 760, 758, 0, 760,
+ 759, 0, 590, 0, 582, 22, 569, 601, 583, 0,
+ 582, 569, 601, 583, 0, 582, 22, 570, 601, 583,
+ 0, 582, 570, 601, 583, 0, 0, 582, 22, 571,
+ 646, 583, 124, 582, 22, 572, 750, 583, 582, 22,
+ 573, 582, 22, 574, 601, 583, 658, 583, 0, 0,
+ 124, 582, 22, 572, 750, 583, 582, 22, 573, 582,
+ 22, 574, 601, 583, 658, 583, 0, 0, 582, 22,
+ 571, 646, 583, 124, 582, 22, 573, 582, 22, 574,
+ 601, 583, 658, 583, 0, 0, 124, 582, 22, 573,
+ 582, 22, 574, 601, 583, 658, 583, 0, 582, 22,
+ 575, 603, 583, 582, 22, 576, 603, 583, 0, 456,
+ 0, 457, 0, 458, 0, 459, 0, 456, 761, 0,
+ 457, 761, 0, 458, 761, 0, 459, 761, 0, 582,
+ 22, 460, 763, 583, 0, 766, 0, 766, 461, 0,
+ 568, 603, 0, 582, 22, 462, 658, 583, 0, 582,
+ 462, 658, 583, 0, 582, 462, 583, 0, 590, 0,
+ 590, 0, 503, 601, 0, 504, 601, 0, 503, 601,
+ 765, 0, 504, 601, 765, 0, 0, 0, 500, 767,
+ 768, 577, 0, 770, 0, 768, 770, 0, 770, 0,
+ 604, 0, 769, 770, 0, 769, 604, 0, 771, 0,
+ 780, 0, 783, 0, 786, 0, 789, 0, 791, 0,
+ 796, 0, 797, 0, 798, 0, 810, 0, 0, 0,
+ 0, 0, 464, 772, 804, 591, 773, 768, 589, 774,
+ 768, 589, 775, 768, 592, 0, 0, 0, 0, 0,
+ 464, 776, 591, 777, 768, 589, 778, 768, 589, 779,
+ 768, 592, 0, 0, 0, 465, 591, 781, 768, 589,
+ 782, 768, 592, 0, 0, 0, 466, 591, 784, 768,
+ 589, 785, 768, 592, 0, 0, 467, 591, 787, 809,
+ 592, 0, 0, 467, 803, 591, 788, 809, 592, 0,
+ 0, 468, 591, 790, 769, 592, 0, 0, 469, 591,
+ 792, 769, 592, 0, 0, 469, 802, 591, 793, 769,
+ 592, 0, 0, 469, 802, 795, 591, 794, 769, 592,
+ 0, 587, 0, 588, 0, 795, 587, 0, 795, 588,
+ 0, 470, 591, 769, 592, 0, 471, 591, 769, 592,
+ 0, 471, 807, 591, 769, 592, 0, 0, 472, 591,
+ 799, 809, 592, 0, 0, 0, 472, 800, 808, 591,
+ 801, 809, 592, 0, 473, 491, 0, 473, 492, 0,
+ 473, 497, 0, 473, 498, 0, 473, 493, 0, 473,
+ 494, 0, 473, 495, 0, 473, 496, 0, 474, 491,
+ 0, 474, 492, 0, 474, 497, 0, 474, 498, 0,
+ 474, 493, 0, 474, 494, 0, 474, 495, 0, 474,
+ 496, 0, 475, 491, 0, 475, 492, 0, 475, 497,
+ 0, 475, 498, 0, 475, 493, 0, 475, 494, 0,
+ 475, 495, 0, 475, 496, 0, 802, 473, 491, 0,
+ 802, 473, 492, 0, 802, 473, 497, 0, 802, 473,
+ 498, 0, 802, 473, 493, 0, 802, 473, 494, 0,
+ 802, 473, 495, 0, 802, 473, 496, 0, 802, 474,
+ 491, 0, 802, 474, 492, 0, 802, 474, 497, 0,
+ 802, 474, 498, 0, 802, 474, 493, 0, 802, 474,
+ 494, 0, 802, 474, 495, 0, 802, 474, 496, 0,
+ 802, 475, 491, 0, 802, 475, 492, 0, 802, 475,
+ 497, 0, 802, 475, 498, 0, 802, 475, 493, 0,
+ 802, 475, 494, 0, 802, 475, 495, 0, 802, 475,
+ 496, 0, 476, 0, 477, 0, 478, 0, 479, 601,
+ 0, 480, 601, 0, 481, 601, 0, 803, 476, 0,
+ 803, 477, 0, 803, 478, 0, 803, 479, 601, 0,
+ 803, 480, 601, 0, 803, 481, 601, 0, 482, 0,
+ 483, 0, 484, 0, 485, 604, 0, 486, 604, 0,
+ 0, 482, 805, 804, 0, 0, 483, 806, 804, 0,
+ 484, 804, 0, 485, 604, 804, 0, 486, 604, 804,
+ 0, 476, 0, 477, 0, 478, 0, 487, 601, 0,
+ 488, 601, 0, 489, 601, 0, 490, 601, 0, 809,
+ 589, 589, 768, 0, 768, 0, 809, 589, 768, 0,
+ 0, 587, 810, 0, 587, 0, 591, 592, 0, 0,
+ 591, 811, 769, 592, 0, 813, 810, 0, 813, 0,
+ 583, 0, 813, 583, 0, 0, 582, 814, 812, 0,
+ 740, 741, 0, 742, 0, 740, 741, 728, 0, 742,
+ 728, 0
+};
+
+#endif
+
+#if YYDEBUG != 0
+static const short yyrline[] = { 0,
+ 871, 872, 889, 891, 893, 894, 895, 896, 897, 898,
+ 908, 909, 912, 913, 915, 916, 917, 918, 919, 920,
+ 922, 923, 924, 925, 928, 929, 932, 933, 935, 937,
+ 938, 939, 940, 941, 942, 944, 945, 946, 947, 948,
+ 949, 950, 952, 953, 954, 955, 958, 959, 962, 963,
+ 964, 965, 966, 967, 968, 969, 975, 976, 979, 980,
+ 984, 985, 987, 988, 992, 993, 995, 996, 998, 999,
+ 1006, 1007, 1010, 1011, 1013, 1015, 1016, 1019, 1020, 1022,
+ 1023, 1025, 1026, 1027, 1028, 1029, 1032, 1033, 1034, 1036,
+ 1037, 1040, 1041, 1042, 1043, 1044, 1045, 1047, 1048, 1050,
+ 1051, 1053, 1054, 1056, 1057, 1059, 1060, 1062, 1064, 1067,
+ 1068, 1069, 1070, 1075, 1076, 1078, 1079, 1081, 1082, 1083,
+ 1084, 1085, 1086, 1088, 1089, 1093, 1094, 1097, 1098, 1102,
+ 1103, 1105, 1106, 1107, 1108, 1109, 1110, 1112, 1113, 1115,
+ 1116, 1118, 1119, 1121, 1122, 1125, 1129, 1130, 1131, 1132,
+ 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1143, 1146,
+ 1147, 1148, 1149, 1150, 1152, 1153, 1157, 1158, 1159, 1160,
+ 1161, 1162, 1163, 1166, 1167, 1168, 1169, 1170, 1172, 1173,
+ 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183,
+ 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193,
+ 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203,
+ 1204, 1205, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214,
+ 1215, 1216, 1217, 1218, 1219, 1221, 1223, 1224, 1225, 1226,
+ 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1236, 1237,
+ 1238, 1239, 1240, 1242, 1243, 1244, 1245, 1247, 1249, 1250,
+ 1252, 1255, 1255, 1256, 1259, 1259, 1260, 1261, 1263, 1264,
+ 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1275, 1276,
+ 1277, 1278, 1279, 1281, 1282, 1283, 1284, 1285, 1286, 1288,
+ 1289, 1290, 1291, 1292, 1293, 1295, 1296, 1297, 1298, 1299,
+ 1300, 1301, 1302, 1303, 1304, 1305, 1307, 1308, 1309, 1310,
+ 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320,
+ 1321, 1322, 1324, 1325, 1326, 1327, 1329, 1330, 1333, 1334,
+ 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1348, 1349,
+ 1351, 1352, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361,
+ 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1370, 1371, 1372,
+ 1373, 1374, 1375, 1376, 1378, 1380, 1381, 1382, 1383, 1384,
+ 1385, 1387, 1390, 1391, 1392, 1393, 1395, 1396, 1398, 1399,
+ 1399, 1401, 1402, 1405, 1406, 1407, 1408, 1409, 1410, 1411,
+ 1412, 1414, 1425, 1428, 1432, 1460, 1461, 1462, 1463, 1464,
+ 1467, 1468, 1469, 1470, 1472, 1473, 1474, 1475, 1476, 1477,
+ 1478, 1479, 1480, 1481, 1483, 1484, 1485, 1486, 1487, 1488,
+ 1489, 1490, 1492, 1493, 1494, 1495, 1496, 1497, 1498, 1499,
+ 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509,
+ 1511, 1512, 1513, 1514, 1515, 1517, 1518, 1519, 1520, 1521,
+ 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531,
+ 1532, 1533, 1534, 1536, 1537, 1538, 1540, 1542, 1544, 1545,
+ 1546, 1547, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1557,
+ 1558, 1560, 1561, 1562, 1563, 1564, 1565, 1567, 1568, 1569,
+ 1570, 1571, 1572, 1573, 1575, 1576, 1578, 1579, 1586, 1588,
+ 1589, 1590, 1591, 1594, 1595, 1597, 1598, 1600, 1601, 1602,
+ 1604, 1605, 1606, 1608, 1622, 1623, 1625, 1636, 1688, 1689,
+ 1690, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1709, 1726,
+ 1742, 1761, 1778, 1784, 1790, 1797, 1798, 1799, 1800, 1802,
+ 1804, 1805, 1810, 1811, 1813, 1814, 1815, 1816, 1817, 1818,
+ 1819, 1820, 1821, 1822, 1824, 1825, 1826, 1827, 1829, 1830,
+ 1831, 1832, 1834, 1835, 1836, 1837, 1839, 1840, 1841, 1842,
+ 1843, 1844, 1845, 1846, 1848, 1849, 1850, 1851, 1853, 1854,
+ 1855, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1865, 1866,
+ 1867, 1869, 1870, 1871, 1872, 1873, 1874, 1877, 1878, 1879,
+ 1880, 1881, 1882, 1884, 1885, 1886, 1887, 1889, 1890, 1891,
+ 1892, 1893, 1894, 1895, 1896, 1897, 1898, 1899, 1900, 1902,
+ 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912,
+ 1913, 1914, 1915, 1917, 1918, 1919, 1924, 1925, 1926, 1927,
+ 1928, 1936, 1937, 1938, 1939, 1941, 1953, 1954, 1955, 1956,
+ 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967,
+ 1968, 1969, 1970, 1971, 1972, 1973, 1975, 1976, 1977, 1978,
+ 1980, 1981, 1982, 1984, 1985, 1988, 1989, 1990, 1991, 1992,
+ 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+ 2003, 2006, 2007, 2008, 2009, 2010, 2011, 2013, 2014, 2015,
+ 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2031,
+ 2034, 2062, 2065, 2065, 2066, 2069, 2069, 2071, 2078, 2085,
+ 2092, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107,
+ 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117,
+ 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2128,
+ 2128, 2129, 2130, 2131, 2133, 2133, 2134, 2135, 2136, 2137,
+ 2138, 2140, 2152, 2165, 2166, 2168, 2169, 2171, 2172, 2176,
+ 2177, 2178, 2179, 2181, 2182, 2184, 2185, 2191, 2194, 2199,
+ 2214, 2215, 2217, 2218, 2225, 2226, 2227, 2238, 2239, 2240,
+ 2241, 2242, 2243, 2266, 2286, 2290, 2291, 2292, 2293, 2294,
+ 2295, 2296, 2297, 2311, 2312, 2313, 2314, 2315, 2326, 2327,
+ 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2337, 2341, 2342,
+ 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2353, 2369,
+ 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379,
+ 2380, 2381, 2382, 2384, 2385, 2386, 2387, 2388, 2390, 2390,
+ 2391, 2392, 2393, 2395, 2413, 2414, 2415, 2416, 2420, 2421,
+ 2422, 2424, 2424, 2425, 2427, 2428, 2429, 2430, 2431, 2432,
+ 2434, 2436, 2437, 2438, 2439, 2441, 2442, 2443, 2444, 2445,
+ 2446, 2447, 2448, 2449, 2450, 2452, 2453, 2454, 2455, 2457,
+ 2458, 2459, 2460, 2462, 2463, 2464, 2465, 2466, 2467, 2468,
+ 2469, 2470, 2471, 2472, 2473, 2474, 2475, 2477, 2478, 2479,
+ 2480, 2482, 2483, 2484, 2486, 2487, 2488, 2489, 2490, 2491,
+ 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2501, 2502,
+ 2503, 2504, 2505, 2506, 2508, 2509, 2510, 2512, 2514, 2516,
+ 2518, 2519, 2520, 2521, 2523, 2524, 2525, 2526, 2528, 2529,
+ 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539,
+ 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2549, 2550,
+ 2551, 2552, 2554, 2555, 2557, 2558, 2559, 2560, 2562, 2564,
+ 2566, 2568, 2569, 2570, 2571, 2574, 2578, 2579, 2581, 2582,
+ 2584, 2586, 2588, 2590, 2592, 2595, 2596, 2597, 2598, 2599,
+ 2600, 2601, 2602, 2604, 2606, 2607, 2608, 2610, 2611, 2612,
+ 2614, 2618, 2622, 2623, 2624, 2625, 2629, 2630, 2634, 2640,
+ 2641, 2643, 2644, 2657, 2658, 2673, 2674, 2675, 2676, 2677,
+ 2678, 2679, 2680, 2681, 2682, 2684, 2685, 2693, 2695, 2697,
+ 2699, 2700, 2707, 2709, 2711, 2715, 2717, 2719, 2723, 2725,
+ 2727, 2731, 2735, 2738, 2745, 2749, 2751, 2754, 2755, 2757,
+ 2758, 2760, 2761, 2764, 2765, 2766, 2767, 2769, 2772, 2774,
+ 2777, 2780, 2783, 2784, 2792, 2796, 2797, 2798, 2799, 2800,
+ 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810,
+ 2811, 2812, 2813, 2814, 2815, 2816, 2817, 2818, 2819, 2820,
+ 2821, 2822, 2823, 2824, 2825, 2826, 2827, 2828, 2829, 2830,
+ 2831, 2832, 2833, 2834, 2835, 2836, 2837, 2838, 2839, 2840,
+ 2841, 2842, 2843, 2846, 2847, 2848, 2849, 2850, 2851, 2852,
+ 2853, 2854, 2855, 2856, 2857, 2859, 2860, 2861, 2862, 2863,
+ 2864, 2866, 2866, 2868, 2868, 2869, 2870, 2872, 2873, 2874,
+ 2876, 2877, 2878, 2879, 2881, 2896, 2909, 2926, 2927, 2928,
+ 2929, 2930, 2931, 2932, 2933, 2936, 2958, 2981, 2987, 2987,
+ 2994, 3001, 3008
+};
+
+static const char * const yytname[] = { "$","error","$illegal.","NUM","PC",
+"PCA","DEFF","FONTTBL","ANSI","RTF","MAC","F","FNIL","FROMAN","FSWISS","FMODERN",
+"FSCRIPT","FDECOR","FTECH","FBIDI","FCHARSET","FPQR","ETOILE","FONTFI_LE","FTNIL",
+"FTTRUETYPE","CPG","FI_LETBL","FI_LE","FID","FRELATIVE","FOSNUM","FVALIDMAC",
+"FVALIDDOS","FVALIDNTFS","FVALIDHPFS","FNETWORK","RED","BLUE","GREEN","STYLESHEET",
+"S","CS","DS","KEYCODE","ADDITIVE","SBASEDON","SHIFT","CTRL","ALT","FN","INFO",
+"SECT","HEADER","FOOTER","HEADERL","HEADERR","HEADERF","FOOTERL","FOOTERR","FOOTERF",
+"PAR","ROW","CELL","FONTEMB","COLORTBL","SUBDOCUMENT","TX","TB","TQR","TQC",
+"TQDEC","TLDOT","TLHYPH","TLUL","TITH","TLEQ","BIN","BDATA","SDATA","PCDATA",
+"SNEXT","ABSH","ABSW","B","BGBDIAG","BGCROSS","BGDCROSS","BGDKBDIAG","BGDKCROSS",
+"BGDKDCROSS","BGDKFDIAG","BGDKHORIZ","BGDKVERT","BGFDIAG","BGHORIZ","BGVERT",
+"BINFSXN","BINSXN","BOX","BRDRB","BRDRBAR","BRDRBTW","BRDRCF","BRDRDASH","BRDRDB",
+"BRDRDOT","BRDRHAIR","BRDRL","BRDRR","BRDRS","BRDRSH","BRDRT","BRDRTH","BRDRW",
+"BRSP","BULLET","CAPS","CB","CBPAT","CCHS","CELLX","CF","CFPAT","CHATN","CHDATE",
+"CHDPA","CHDPL","CHFTN","CHFTNSEP","CHFTNSEPC","CHPGN","CHTIME","CLBGBDIAG",
+"CLBGCROSS","CLBGDCROSS","CLBGDKBDIAG","CLBGDKCROSS","CLBGDKFDIAG","CLBGDKHOR",
+"CLBGDKRCDCROSS","CLBGDKVERT","CLBGFDIAG","CLBGHORIZ","CLBGVERT","CLBRDRB","CLBRDRL",
+"CLBRDRR","CLBRDRT","CLCBPAT","CLCFPAT","CLMGF","CLMGR","CLSHDNG","COLNO","COLS",
+"COLSR","COLSX","COLUMN","COLW","DELETED","DEUXPOINTS","DFRMTXTX","DFRMTXTY",
+"DN","DROPCAPLI","DROPCAPT","DXFRTEXT","EMDASH","EMSPACE","ENDASH","ENDNHERE",
+"ENSPACE","EXPND","EXPNDTW","FI","FOOTERY","FS","GUTTERSXN","HEADERY","HYPHPAR",
+"I","INTBL","KEEP","KEEPN","KERNING","LANG","LDBLQUOTE","LEVEL","LI","LINE",
+"LINEBETCOL","LINECONT","LINEMOD","LINEPPAGE","LINERESTART","LINESTARTS","LINEX",
+"LNDSCPSXN","LQUOTE","LTRCH","LTRMARK","LTRPAR","LTRROW","LTRSECT","MARGBSXN",
+"MARGLSXN","MARGRSXN","MARGTSXN","MOINS","NOLINE","NOSUPERSUB","NOWIDCLTPAR",
+"NOWRAP","OUTL","PAGE","PAGEBB","PARD","PGHSXN","PGNCONT","PGNDEC","PGNGNSH",
+"PGNHN","PGNHNSC","PGNHNSM","PGNHNSN","PGNHNSP","PGNLCLTR","PGNLCRM","PGNRESTART",
+"PGNSTARTS","PGNUCLTR","PGNUCRM","PGNX","PGNY","PGWSXN","PHCOL","PHMRG","PHPG",
+"PIPE","PLAIN","PN","PNACROSS","PNB","PNCAPS","PNCARD","PNCF","PNDEC","PNF",
+"PNFS","PNHANG","PNI","PNINDENT","PNLCLTR","PNLCRM","PNLVL","PNLVLBODY","PNLVLCONT",
+"PNNUMONCE","PNORD","PNORDT","PNPREV","PNQC","PNQL","PNQR","PNRESTART","PNSCAPS",
+"PNSECLVL","PNSP","PNSTART","PNSTRIKE","PNTEXT","PNTXTA","PNTXTB","PNUCLTR",
+"PNUCRM","PNUL","PNULD","PNULDB","PNULNONE","PNULW","PNVLBT","POSNEGX","POSNEGY",
+"POSX","POSXC","POSXI","POSXL","POSXO","POSXR","POSY","POSYB","POSYC","POSYIL",
+"POSYT","PVMRG","PVPARA","PVPG","QC","QJ","QL","QR","RDBLQUOTE","REVAUTH","REVDTTM",
+"REVISED","RI","RQUOTE","RTLCH","RTLMARK","RTLPAR","RTLROW","RTLSECT","SA","SB",
+"SBKCOL","SBKEVEN","SBKNONE","SBKODD","SBKPAGE","SBYS","SCAPS","SECTNUM","SECTD",
+"SETUNLOCKED","SHAD","SHADING","SL","SLMULT","SOFTCOL","SOFTLHEIGHT","SOFTLINE",
+"SOFTPAGE","STRIKE","SUB","SUPER","TAB","TILDE","TITLEPG","TRBRDRB","TRBRDRH",
+"TRBRDRL","TRBRDRR","TRBRDRT","TRBRDRV","TRGAPH","TRHDR","TRKEEP","TRLEFT","TROWD",
+"TRQC","TRQL","TRQR","TRRH","UL","ULD","ULDB","ULNONE","ULW","UNDERSCORE","UP",
+"V","VERTALB","VERTALC","VERTALJ","VERTALT","ZWJ","ZWNJ","AENDDOC","AENDNOTES",
+"AFTNBJ","AFTNCN","AFTNNALC","AFTNNAR","AFTNNAUC","AFTNNCHI","AFTNNRLC","AFTNNRUC",
+"AFTNRESTART","AFTNRSTCONT","AFTNSEP","AFTNSEPC","AFTNSTART","AFTNTJ","ALLPROT",
+"ANNOTPROT","BRKFRM","CVMME","DEFFORMAT","DEFLANG","DEFTAB","DOCTEMP","ENDDOC",
+"ENDNOTES","FACINGP","FET","FORMDISP","FORMPROT","FORMSHADE","FRACWIDTH","FTNBJ",
+"FTNCN","FTNNALC","FTNNAR","FTNNAUC","FTNNCHI","FTNNRLC","FTNNRUC","FTNRESTART",
+"FTNRSTCONT","FTNRSTPG","FTNSEP","FTNSEPC","FTNSTART","FTNTJ","GUTTER","HYPHAUTO",
+"HYPHCAPS","HYPHCONSEC","HYPHHOTZ","LANDSCAPE","LINESTART","LINKSTYLES","LTRDOC",
+"MAKEBACKUP","MARGB","MARGL","MARGMIRROR","MARGR","MARGT","NEXTFILE","NOCOLBAL",
+"NOEXTRASPRL","NOTABIND","OTBLRUL","PAPERH","PAPERW","PGNSTART","PRCOLBL","PRINTDATA",
+"PSOVER","PSZ","REVBAR","REVISIONS","REVPROP","REVPROT","RTLDOC","SPRSSPBF",
+"SPRSTSP","SWPBDR","TEMPLATE","TRANSMF","WIDOWCTRL","WRAPTRSP","APOSTROPHE",
+"FIELD","FLDDIRTY","FLDEDIT","FLDLOCK","FLDPRIV","FLDINST","FLDALT","FLDRSLT",
+"PICT","PZINTEGRALE","PZRACINE","PZFRACTION","PZMATRIX","PZBOX","PZBRACKET",
+"PZLIST","PZOVERSTRIKE","PZSUSCRIPT","EQLC","EQRC","EQBC","EQAL","EQAC","EQAR",
+"EQCO","EQVS","EQHS","EQSU","EQPR","EQIN","EQFC","EQVC","EQAI","EQUP","EQDI",
+"EQDO","EQCROCHETO","EQCROCHETF","EQPARENTHO","EQPARENTHF","EQACCOLADO","EQACCOLADF",
+"EQSUPINFO","EQSUPINFF","FOOTNOTE","PZPEQ","BKMKSTART","BKMKEND","BKMKCOLF",
+"BKMKCOLL","MACPICT","PMMETAFILE","WMETAFILE","DIBITMAP","WBITMAP","WBMBITSPIXEL",
+"WBMPLANES","WBMWIDTHBYTES","PICBMP","PICBPP","YR","MO","DY","HR","MIN","SEC",
+"OBJECT","OBJTOPICT","BKMKPUB","PUBAUTO","PICW","PICH","PICWGOAL","PICHGOAL",
+"PICSCALEX","PICSCALEY","PICSCALED","PICCROPT","PICCROPB","PICCROPR","PICCROPL",
+"OBJEMB","OBJLINK","OBJAUTLINK","OBJSUB","OBJPUB","ONJICEMB","LINKSELF","OBJLOCK",
+"OBJUPDATE","OBJCLASS","OBJNAME","OBJTIME","RSLTMERGE","RSLTRTF","RSLTTXT","RSLTPICT",
+"RSLTBMP","OBJSETSIZE","OBJALIGN","OBJTRANSY","OBJCROPT","OBJCROPB","OBJCROPL",
+"OBJCROPR","OBJSCALEY","OBJSCALEX","OBJH","OBJW","OBJDATA","OBJALIAS","OBJSECT",
+"RESULT","PZPAUTREFIELD","ATRFSTART","ATRFEND","ATNTIME","ATNICN","ANNOTATION",
+"ATNREF","ATNID","ATNAUTHOR","PZPENDEQ","XE","TC","DO","PZERROR","'{'","'}'",
+"';'","'e'","'q'","' '","'\\t'","','","'z'","'('","')'","input","@1","Entete",
+"pzdeflang","ppentete","pentete","charset","deffont","num","pznvnum","pzpcdata",
+"pzpvpcdata","pfontinfo","fontinfo","@2","fontfamily","fcharset","fpqr","fontaltname",
+"fontemb","fonttype","fontfname","codepage","filetbl","pfileinfo","fileinfo",
+"pfilesource","relpath","osnum","filesource","colortbl","pcolordef","colordef",
+"red","blue","green","stylesheet","pstyle","style","styledef","keycode","pformatting",
+"formatting","additive","based","next","stylename","keys","shift","alt","ctrl",
+"key","revtbl","time","Document","pdocfmtpsection","info","docfmt","section",
+"@3","@4","psecfmt","secfmt","hdrftr","hdrctl","ppara","declpara","pzmultdeclpara",
+"declbispara","pzmottrowd","para","pzsubquapara","pzsubquipara","pzsubpara",
+"pzsubbispara","@5","pzsubterpara","pzpsubpar","ppar","@6","accopzpn","@7","pzpn",
+"pnlevel","pndesc","pnnstyle","pnchrfmt","pnul","pnfmt","pnjust","pntxtb","pntxta",
+"brdrdef","brdrseg","brdr","pbrdr","brdrk","psubdoc","pchar","motrow","pcell",
+"pzsubpcell","pzsubbispcell","pzsubterpcell","pzsubquapcell","motcell","pznvpparfmt",
+"parfmt","pznvpapoctl","apoctl","framesize","horzpos","vertpos","txtwrap","dropcap",
+"hframe","hdist","vframe","vdist","pznvshading","pshading","pat","pznvtabdef",
+"tabkind","tablead","zpcelldef","motcellxnum","ptbldef","pptbldef","ppptbldef",
+"rowjust","rowwrite","pcelldef","pcellshad","cellpat","charr","@8","@9","@10",
+"@11","@12","endpict","pzhdrftretfin","pzetfincharr","@13","pzmotfootnote","pzincharr",
+"pchrfmt","pdata","pznvpdata","data","chrfmt","spec","@14","picttype","@15",
+"bitmapinfo","pict","pictsize","pzpict","pzpictsize","ppzpictsize","pppzpictsize",
+"metafileinfo","datadata","objalias","objsect","pzpubobject","fieldmod","fieldinst",
+"pzeqalt","fieldrslt","bkmkcol","equation","@16","pformule","ppvformule","formule",
+"integrale","@17","@18","@19","@20","@21","@22","@23","@24","racine","@25","@26",
+"fraction","@27","@28","matrix","@29","@30","box","@31","bracket","@32","@33",
+"@34","espaces","list","overstrike","suscript","@35","@36","@37","bracketsw",
+"matrixsw","integralesw","@38","@39","overstrikesw","suscriptsw","colones","texte",
+"@40","etfinpznvcharr","pznvcharr","@41","@34"
+};
+#endif
+
+static const short yyr1[] = { 0,
+ 593, 594, 593, 593, 595, 595, 595, 595, 595, 595,
+ 596, 596, 597, 597, 598, 598, 598, 598, 598, 598,
+ 599, 599, 599, 599, 600, 600, 601, 601, 602, 603,
+ 603, 603, 603, 603, 603, 604, 604, 604, 604, 604,
+ 604, 604, 605, 605, 605, 605, 607, 606, 608, 608,
+ 608, 608, 608, 608, 608, 608, 609, 609, 610, 610,
+ 611, 611, 612, 612, 613, 613, 614, 614, 615, 615,
+ 616, 616, 617, 617, 618, 619, 619, 620, 620, 621,
+ 621, 622, 622, 622, 622, 622, 623, 623, 623, 624,
+ 624, 625, 625, 625, 625, 625, 625, 626, 626, 627,
+ 627, 628, 628, 629, 629, 630, 630, 631, 631, 632,
+ 632, 632, 632, 633, 633, 634, 634, 635, 635, 635,
+ 635, 635, 635, 636, 636, 637, 637, 638, 638, 639,
+ 639, 640, 640, 640, 640, 640, 640, 641, 641, 642,
+ 642, 643, 643, 644, 644, 645, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 647, 648,
+ 648, 648, 648, 648, 649, 649, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 650, 650, 650, 650, 650, 650, 650, 650, 650, 650,
+ 652, 651, 651, 653, 651, 651, 651, 651, 654, 654,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 655, 655,
+ 655, 655, 655, 655, 655, 655, 655, 655, 656, 656,
+ 657, 657, 657, 657, 657, 657, 657, 657, 658, 658,
+ 659, 659, 660, 660, 660, 660, 660, 660, 660, 660,
+ 660, 660, 660, 660, 660, 660, 660, 661, 661, 661,
+ 661, 661, 661, 661, 662, 663, 663, 663, 663, 663,
+ 663, 664, 665, 665, 665, 665, 666, 666, 668, 667,
+ 667, 669, 669, 670, 670, 670, 670, 670, 670, 670,
+ 670, 672, 671, 674, 673, 675, 675, 675, 675, 675,
+ 676, 676, 676, 676, 677, 677, 677, 677, 677, 677,
+ 677, 677, 677, 677, 678, 678, 678, 678, 678, 678,
+ 678, 678, 679, 679, 679, 679, 679, 679, 679, 679,
+ 679, 679, 679, 679, 679, 679, 679, 679, 679, 679,
+ 680, 680, 680, 680, 680, 681, 681, 681, 681, 681,
+ 681, 681, 681, 681, 681, 681, 681, 681, 681, 681,
+ 681, 681, 681, 682, 682, 682, 683, 684, 685, 685,
+ 685, 685, 686, 686, 686, 686, 686, 686, 686, 687,
+ 687, 688, 688, 688, 688, 688, 688, 689, 689, 689,
+ 689, 689, 689, 689, 690, 690, 691, 691, 692, 693,
+ 693, 693, 693, 694, 694, 695, 695, 696, 696, 696,
+ 697, 697, 697, 698, 699, 699, 700, 700, 700, 700,
+ 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
+ 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
+ 700, 700, 701, 701, 702, 702, 702, 702, 702, 702,
+ 702, 702, 702, 702, 703, 703, 703, 703, 704, 704,
+ 704, 704, 705, 705, 705, 705, 706, 706, 706, 706,
+ 706, 706, 706, 706, 707, 707, 707, 707, 708, 708,
+ 708, 709, 709, 709, 709, 709, 709, 709, 710, 710,
+ 710, 711, 711, 711, 711, 711, 711, 712, 712, 712,
+ 712, 712, 712, 713, 713, 713, 713, 714, 714, 714,
+ 714, 714, 714, 714, 714, 714, 714, 714, 714, 715,
+ 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
+ 715, 715, 715, 716, 716, 716, 717, 717, 717, 717,
+ 717, 718, 718, 718, 718, 719, 720, 720, 720, 720,
+ 721, 721, 721, 721, 721, 721, 721, 721, 721, 721,
+ 721, 721, 721, 721, 721, 721, 722, 722, 722, 722,
+ 723, 723, 723, 724, 724, 725, 725, 725, 725, 725,
+ 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
+ 725, 726, 726, 726, 726, 726, 726, 727, 727, 727,
+ 727, 727, 727, 727, 727, 727, 727, 727, 727, 729,
+ 728, 730, 728, 728, 731, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 728, 728, 728, 728, 728,
+ 728, 728, 728, 728, 728, 728, 728, 728, 732, 728,
+ 728, 728, 728, 733, 728, 728, 728, 728, 728, 728,
+ 728, 734, 734, 735, 735, 736, 737, 736, 738, 739,
+ 739, 739, 739, 740, 740, 741, 741, 742, 742, 743,
+ 743, 743, 744, 744, 744, 744, 744, 744, 744, 744,
+ 744, 744, 744, 744, 744, 744, 744, 744, 744, 744,
+ 744, 744, 744, 744, 744, 744, 744, 744, 744, 744,
+ 744, 744, 744, 744, 744, 744, 744, -1, 745, 745,
+ 745, 745, 745, 745, 745, 745, 745, 745, 745, 745,
+ 745, 745, 745, 745, 745, 745, 745, 745, 745, 745,
+ 745, 745, 745, 745, 745, 745, 745, 746, 745, 745,
+ 745, 745, 745, 745, 745, 745, 745, 745, 747, 747,
+ 748, 747, 747, 747, 749, 749, 749, 749, 749, 749,
+ 750, 751, 751, 751, 751, 752, 752, 752, 752, 752,
+ 752, 752, 752, 752, 752, 753, 753, 753, 753, 754,
+ 754, 754, 754, 755, 755, 755, 755, 755, 755, 755,
+ 755, 755, 755, 755, 755, 755, 755, 756, 756, 756,
+ 756, 757, 757, 757, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 758, 759,
+ -1, 760, 760, 760, 760, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 761, 761, 761, 761, 761,
+ 761, 761, 761, 762, 763, 763, 763, 764, 764, 764,
+ -1, -1, 765, 765, 765, 765, 766, 767, 766, 768,
+ 768, 769, 769, 769, 769, 770, 770, 770, 770, 770,
+ 770, 770, 770, 770, 770, 772, 773, 774, 775, 771,
+ 776, 777, 778, 779, 771, 781, 782, 780, 784, 785,
+ 783, 787, 786, 788, 786, 790, 789, 792, 791, 793,
+ 791, 794, 791, 795, 795, 795, 795, 796, 797, 797,
+ 799, 798, 800, 801, 798, 802, 802, 802, 802, 802,
+ 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 802, 802, 802, 802, 802, 802, 802, 802,
+ 802, 802, 802, 803, 803, 803, 803, 803, 803, 803,
+ 803, 803, 803, 803, 803, 804, 804, 804, 804, 804,
+ 805, 804, 806, 804, 804, 804, 804, 807, 807, 807,
+ 808, 808, 808, 808, 809, 809, 809, 810, 810, 810,
+ 810, 811, 810, 810, 810, 812, 812, 814, 813, 813,
+ 813, 813, 813
+};
+
+static const short yyr2[] = { 0,
+ 0, 0, 5, 2, 0, 10, 10, 11, 11, 12,
+ 0, 2, 0, 4, 0, 1, 1, 1, 1, 2,
+ 1, 1, 1, 1, 0, 2, 0, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 3, 2, 4, 0, 11, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 2, 0, 2,
+ 0, 6, 0, 7, 1, 1, 0, 6, 0, 2,
+ 0, 3, 3, 4, 7, 1, 2, 0, 2, 0,
+ 2, 1, 1, 1, 1, 1, 0, 3, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 0, 2, 0,
+ 2, 0, 2, 0, 2, 0, 2, 10, 9, 0,
+ 2, 2, 2, 0, 4, 1, 2, 1, 1, 1,
+ 1, 1, 1, 0, 2, 0, 2, 0, 2, 0,
+ 1, 4, 4, 4, 4, 4, 4, 0, 1, 0,
+ 1, 0, 1, 2, 1, 0, 2, 2, 2, 2,
+ 2, 2, 3, 3, 3, 3, 3, 3, 1, 2,
+ 1, 2, 6, 6, 0, 2, 2, 2, 2, 1,
+ 1, 2, 1, 1, 1, 1, 1, 2, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 2, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 1,
+ 2, 1, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 2, 2, 1, 1, 1,
+ 0, 6, 4, 0, 5, 3, 2, 1, 1, 2,
+ 1, 1, 1, 2, 2, 2, 2, 1, 1, 1,
+ 1, 1, 1, 2, 2, 2, 2, 2, 1, 2,
+ 2, 2, 1, 1, 1, 2, 2, 2, 2, 2,
+ 2, 2, 1, 1, 2, 2, 2, 1, 1, 2,
+ 2, 1, 1, 1, 1, 1, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 5,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 1, 2, 3, 3, 3, 3, 3, 3, 2, 2,
+ 2, 2, 2, 2, 1, 1, 1, 3, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
+ 2, 2, 1, 1, 3, 2, 1, 2, 0, 4,
+ 1, 2, 3, 5, 4, 4, 4, 3, 3, 3,
+ 2, 0, 3, 0, 4, 4, 3, 8, 7, 1,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 1, 1, 1, 1, 1,
+ 1, 3, 3, 3, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
+ 1, 2, 1, 1, 2, 2, 3, 3, 2, 2,
+ 3, 2, 2, 1, 1, 1, 4, 4, 2, 3,
+ 3, 4, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 3, 3, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
+ 2, 2, 1, 1, 2, 2, 1, 1, 2, 2,
+ 1, 2, 2, 1, 1, 2, 1, 1, 2, 1,
+ 1, 1, 1, 1, 2, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 2, 1, 1, 1, 1, 1, 2,
+ 2, 2, 2, 2, 3, 3, 2, 2, 2, 2,
+ 1, 1, 2, 2, 1, 1, 2, 3, 3, 3,
+ 1, 2, 2, 2, 3, 3, 2, 2, 1, 1,
+ 1, 2, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 1, 1, 1, 1, 2, 1, 3,
+ 2, 3, 2, 2, 2, 3, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 4, 3, 3, 3, 3, 2, 5, 5, 4, 4,
+ 4, 4, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 3, 2, 2, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
+ 3, 3, 3, 3, 3, 3, 1, 1, 2, 2,
+ 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
+ 2, 2, 1, 2, 2, 3, 3, 3, 3, 3,
+ 2, 2, 3, 3, 2, 2, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+ 4, 0, 6, 4, 0, 5, 2, 2, 1, 3,
+ 2, 2, 3, 3, 4, 2, 3, 4, 3, 3,
+ 4, 6, 7, 5, 6, 4, 5, 3, 4, 4,
+ 5, 3, 2, 3, 4, 4, 5, 1, 0, 3,
+ 3, 3, 3, 0, 3, 4, 8, 2, 1, 1,
+ 1, 3, 2, 3, 1, 1, 0, 3, 1, 0,
+ 1, 3, 1, 1, 2, 0, 2, 1, 2, 1,
+ 1, 1, 1, 2, 2, 2, 2, 1, 1, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 1, 2, 1, 2,
+ 2, 2, 1, 1, 2, 2, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0, 3, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 0, 3, 3, 2, 2, 2, 2, 3, 3, 3,
+ 5, 3, 2, 2, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 3, 3, 2,
+ 2, 3, 3, 2, 2, 2, 2, 2, 2, 2,
+ 3, 3, 3, 3, 3, 3, 3, 1, 1, 2,
+ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 2, 2, 2, 2, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 5, 5, 5,
+ 1, 2, 1, 2, 1, 1, 1, 1, 1, 2,
+ 2, 1, 2, 2, 2, 2, 2, 2, 2, 3,
+ 3, 2, 3, 3, 3, 3, 3, 3, 2, 2,
+ 3, 3, 6, 5, 1, 1, 2, 2, 5, 5,
+ 4, 1, 1, 2, 2, 1, 5, 4, 5, 4,
+ 22, 17, 17, 12, 10, 1, 1, 1, 1, 2,
+ 2, 2, 2, 5, 1, 2, 2, 5, 4, 3,
+ 1, 1, 2, 2, 3, 3, 0, 0, 4, 1,
+ 2, 1, 1, 2, 2, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 0, 0, 0, 13,
+ 0, 0, 0, 0, 12, 0, 0, 8, 0, 0,
+ 8, 0, 5, 0, 6, 0, 5, 0, 5, 0,
+ 6, 0, 7, 1, 1, 2, 2, 4, 4, 5,
+ 0, 5, 0, 0, 7, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 1, 1, 1, 2, 2, 2, 2,
+ 2, 2, 3, 3, 3, 1, 1, 1, 2, 2,
+ 0, 3, 0, 3, 2, 3, 3, 1, 1, 1,
+ 2, 2, 2, 2, 4, 1, 3, 0, 2, 1,
+ 2, 0, 4, 2, 1, 1, 2, 0, 3, 2,
+ 1, 3, 2
+};
+
+static const short yydefact[] = { 1,
+ 0, 5, 29, 27, 0, 27, 27, 27, 261, 507,
+ 27, 27, 624, 625, 626, 627, 628, 629, 630, 631,
+ 30, 27, 27, 27, 601, 602, 603, 607, 608, 609,
+ 606, 604, 605, 600, 598, 599, 27, 27, 469, 464,
+ 468, 467, 465, 466, 463, 833, 27, 27, 27, 27,
+ 27, 27, 744, 809, 811, 810, 815, 817, 818, 813,
+ 812, 27, 27, 27, 27, 822, 27, 27, 843, 27,
+ 27, 27, 27, 27, 27, 829, 831, 830, 263, 832,
+ 27, 27, 27, 27, 27, 27, 27, 510, 27, 511,
+ 512, 514, 27, 27, 836, 27, 27, 823, 279, 285,
+ 27, 284, 283, 27, 27, 293, 834, 804, 845, 532,
+ 318, 27, 27, 27, 27, 841, 516, 779, 513, 561,
+ 27, 821, 517, 508, 27, 298, 302, 27, 27, 310,
+ 311, 312, 309, 306, 304, 299, 27, 305, 303, 27,
+ 27, 27, 571, 569, 570, 838, 773, 27, 27, 27,
+ 27, 574, 575, 577, 576, 578, 27, 586, 587, 585,
+ 584, 579, 581, 580, 522, 521, 519, 520, 837, 27,
+ 27, 787, 27, 835, 803, 846, 531, 317, 27, 27,
+ 270, 272, 269, 273, 271, 518, 27, 814, 262, 268,
+ 27, 27, 27, 27, 825, 27, 826, 824, 27, 778,
+ 799, 828, 840, 294, 355, 27, 27, 27, 796, 797,
+ 842, 27, 27, 314, 315, 316, 313, 847, 848, 844,
+ 0, 739, 759, 0, 0, 738, 750, 751, 749, 384,
+ 31, 32, 33, 34, 35, 771, 770, 4, 0, 259,
+ 258, 357, 331, 0, 0, 329, 356, 358, 359, 345,
+ 346, 0, 367, 486, 347, 505, 352, 533, 535, 536,
+ 537, 538, 539, 551, 552, 555, 556, 354, 0, 589,
+ 353, 0, 0, 487, 0, 766, 709, 768, 764, 772,
+ 27, 2, 28, 783, 0, 0, 0, 0, 0, 0,
+ 0, 748, 0, 509, 805, 266, 530, 616, 548, 547,
+ 774, 264, 265, 775, 802, 595, 806, 801, 594, 0,
+ 276, 274, 277, 275, 278, 776, 563, 564, 777, 567,
+ 568, 562, 780, 781, 523, 296, 784, 292, 295, 785,
+ 782, 807, 515, 524, 280, 282, 281, 291, 288, 289,
+ 290, 557, 786, 287, 308, 307, 297, 300, 301, 286,
+ 1007, 267, 573, 583, 572, 582, 788, 789, 525, 527,
+ 526, 790, 791, 588, 528, 529, 827, 792, 793, 794,
+ 795, 798, 800, 986, 987, 988, 989, 0, 0, 0,
+ 0, 27, 27, 716, 0, 712, 321, 322, 323, 324,
+ 325, 326, 327, 328, 0, 0, 0, 760, 384, 0,
+ 259, 257, 820, 384, 330, 507, 27, 384, 332, 819,
+ 485, 700, 362, 367, 27, 691, 692, 693, 697, 698,
+ 696, 694, 699, 695, 690, 688, 689, 0, 0, 0,
+ 0, 27, 27, 666, 667, 27, 664, 665, 0, 0,
+ 0, 0, 0, 0, 27, 657, 658, 27, 663, 661,
+ 662, 27, 368, 371, 0, 633, 0, 0, 0, 637,
+ 638, 0, 673, 0, 339, 341, 340, 0, 343, 483,
+ 481, 482, 484, 478, 480, 479, 459, 382, 504, 361,
+ 0, 0, 488, 342, 344, 506, 350, 349, 534, 535,
+ 536, 537, 538, 539, 27, 27, 549, 550, 553, 554,
+ 27, 27, 27, 591, 593, 27, 351, 0, 0, 27,
+ 27, 0, 27, 27, 756, 733, 708, 711, 768, 765,
+ 0, 0, 0, 728, 0, 720, 27, 27, 27, 27,
+ 27, 27, 743, 0, 0, 0, 741, 742, 732, 745,
+ 559, 560, 565, 566, 558, 1008, 839, 592, 990, 991,
+ 992, 993, 0, 0, 0, 734, 849, 27, 851, 27,
+ 27, 898, 899, 27, 27, 866, 470, 867, 740, 868,
+ 869, 0, 865, 870, 1003, 1004, 719, 717, 714, 713,
+ 254, 319, 0, 0, 0, 390, 763, 487, 0, 0,
+ 384, 707, 820, 256, 0, 360, 636, 670, 669, 671,
+ 668, 686, 685, 674, 675, 682, 642, 645, 643, 644,
+ 641, 646, 369, 647, 648, 489, 0, 493, 0, 498,
+ 381, 490, 0, 635, 0, 0, 0, 639, 640, 0,
+ 0, 0, 0, 0, 0, 27, 27, 0, 0, 659,
+ 660, 0, 632, 681, 672, 333, 334, 336, 461, 335,
+ 27, 27, 27, 460, 0, 0, 372, 338, 337, 348,
+ 546, 545, 597, 596, 590, 623, 27, 27, 0, 27,
+ 27, 612, 613, 27, 27, 615, 614, 0, 710, 767,
+ 23, 24, 21, 22, 0, 27, 0, 11, 191, 190,
+ 192, 185, 208, 207, 209, 212, 210, 211, 199, 200,
+ 183, 184, 27, 193, 240, 248, 238, 232, 175, 27,
+ 27, 177, 187, 186, 220, 27, 242, 239, 241, 173,
+ 189, 182, 202, 201, 203, 206, 204, 205, 197, 198,
+ 196, 180, 181, 27, 188, 27, 171, 170, 27, 27,
+ 223, 27, 226, 250, 174, 27, 27, 222, 27, 27,
+ 231, 230, 227, 235, 27, 27, 27, 229, 243, 176,
+ 27, 27, 245, 27, 244, 249, 234, 233, 237, 236,
+ 225, 228, 384, 0, 159, 0, 161, 0, 0, 972,
+ 973, 0, 729, 730, 726, 721, 147, 148, 149, 150,
+ 151, 152, 27, 27, 27, 27, 27, 27, 0, 746,
+ 0, 1148, 1007, 736, 0, 0, 735, 850, 27, 0,
+ 854, 876, 877, 471, 0, 903, 904, 871, 872, 873,
+ 874, 875, 753, 27, 27, 27, 27, 27, 27, 27,
+ 27, 27, 27, 27, 863, 864, 900, 901, 1005, 1006,
+ 718, 715, 0, 0, 384, 27, 0, 385, 820, 701,
+ 251, 0, 820, 253, 705, 678, 677, 679, 676, 684,
+ 683, 687, 0, 0, 501, 491, 492, 382, 0, 497,
+ 499, 494, 0, 500, 380, 0, 0, 0, 650, 653,
+ 651, 652, 649, 654, 655, 656, 379, 0, 378, 634,
+ 680, 462, 474, 472, 473, 27, 27, 27, 383, 373,
+ 619, 620, 27, 27, 622, 621, 610, 611, 758, 25,
+ 12, 0, 25, 27, 25, 11, 195, 178, 167, 179,
+ 194, 221, 169, 168, 172, 219, 216, 217, 218, 214,
+ 213, 224, 215, 247, 246, 0, 3, 162, 160, 0,
+ 0, 724, 974, 975, 731, 727, 153, 154, 155, 156,
+ 157, 158, 0, 27, 820, 816, 1026, 0, 0, 0,
+ 0, 0, 0, 0, 1063, 1158, 34, 1152, 766, 1161,
+ 0, 1010, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
+ 1024, 1025, 1148, 0, 0, 995, 737, 0, 1000, 0,
+ 852, 27, 27, 27, 853, 902, 752, 878, 879, 880,
+ 881, 884, 885, 886, 887, 888, 889, 890, 27, 27,
+ 862, 27, 27, 27, 27, 27, 27, 27, 755, 255,
+ 706, 0, 387, 0, 762, 0, 0, 702, 704, 370,
+ 503, 490, 495, 496, 377, 0, 376, 375, 477, 475,
+ 476, 617, 618, 11, 25, 11, 26, 0, 0, 0,
+ 0, 722, 0, 0, 725, 0, 0, 0, 0, 1036,
+ 1039, 1114, 1115, 1116, 27, 27, 27, 1042, 0, 1046,
+ 0, 0, 0, 1048, 0, 1148, 1138, 1139, 1140, 1148,
+ 0, 1061, 0, 0, 1149, 1151, 1148, 1160, 1163, 1009,
+ 1011, 1154, 997, 994, 996, 0, 999, 855, 856, 857,
+ 27, 27, 27, 882, 883, 891, 892, 893, 894, 895,
+ 896, 897, 820, 705, 437, 416, 418, 405, 27, 406,
+ 27, 27, 443, 417, 27, 409, 410, 436, 411, 412,
+ 440, 454, 455, 456, 444, 419, 27, 27, 421, 407,
+ 408, 431, 432, 433, 434, 435, 0, 386, 395, 396,
+ 420, 399, 441, 397, 398, 0, 252, 703, 374, 0,
+ 11, 0, 0, 0, 0, 0, 723, 0, 0, 861,
+ 0, 1131, 1133, 1128, 0, 0, 0, 1032, 1148, 1148,
+ 1117, 1118, 1119, 1148, 1120, 1121, 1122, 27, 27, 27,
+ 1044, 1148, 1066, 1067, 1070, 1071, 1072, 1073, 1068, 1069,
+ 1074, 1075, 1078, 1079, 1080, 1081, 1076, 1077, 1082, 1083,
+ 1086, 1087, 1088, 1089, 1084, 1085, 1148, 0, 0, 0,
+ 1054, 1055, 1050, 0, 30, 31, 32, 33, 34, 35,
+ 42, 1013, 0, 1012, 0, 1148, 1148, 27, 27, 27,
+ 27, 0, 1156, 1159, 0, 0, 1162, 998, 858, 859,
+ 860, 754, 446, 425, 427, 415, 413, 414, 452, 426,
+ 438, 445, 449, 453, 428, 439, 442, 430, 0, 0,
+ 400, 401, 429, 404, 450, 402, 403, 0, 0, 0,
+ 0, 0, 0, 0, 0, 969, 970, 747, 0, 0,
+ 1135, 36, 37, 38, 39, 40, 41, 1129, 1130, 1027,
+ 1148, 0, 0, 1146, 0, 1123, 1124, 1125, 1148, 0,
+ 0, 1090, 1091, 1094, 1095, 1096, 1097, 1092, 1093, 1098,
+ 1099, 1102, 1103, 1104, 1105, 1100, 1101, 1106, 1107, 1110,
+ 1111, 1112, 1113, 1108, 1109, 1148, 1056, 1057, 1052, 1058,
+ 1015, 1014, 1059, 0, 0, 1141, 1142, 1143, 1144, 1064,
+ 1157, 1153, 424, 422, 423, 447, 448, 451, 0, 0,
+ 0, 0, 0, 0, 27, 0, 0, 43, 0, 163,
+ 164, 1132, 1134, 1136, 1137, 1148, 0, 1037, 1040, 1148,
+ 1043, 0, 1047, 1049, 0, 1148, 1060, 1062, 1148, 458,
+ 457, 27, 393, 394, 392, 389, 0, 0, 0, 0,
+ 0, 13, 45, 13, 0, 1033, 1148, 1148, 1148, 1147,
+ 1045, 1051, 0, 0, 391, 388, 13, 0, 13, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 44, 15,
+ 7, 6, 1028, 1148, 0, 0, 1145, 1053, 1065, 8,
+ 13, 9, 27, 59, 46, 0, 106, 165, 0, 0,
+ 16, 17, 18, 19, 1148, 0, 1038, 1041, 10, 58,
+ 27, 63, 0, 110, 105, 106, 0, 20, 27, 27,
+ 27, 98, 89, 0, 100, 98, 98, 13, 0, 1034,
+ 60, 0, 69, 0, 72, 27, 27, 27, 114, 107,
+ 166, 99, 101, 103, 88, 0, 90, 102, 100, 102,
+ 98, 100, 98, 14, 1029, 1148, 0, 27, 0, 0,
+ 0, 0, 111, 112, 113, 0, 124, 91, 92, 93,
+ 94, 95, 96, 97, 1148, 0, 0, 70, 47, 27,
+ 73, 0, 138, 27, 124, 116, 126, 118, 119, 120,
+ 122, 121, 123, 0, 1035, 65, 66, 67, 61, 78,
+ 74, 139, 143, 141, 0, 140, 138, 138, 125, 117,
+ 126, 27, 128, 1030, 0, 0, 0, 0, 27, 80,
+ 115, 142, 140, 142, 138, 140, 138, 128, 127, 27,
+ 0, 0, 0, 0, 48, 79, 27, 0, 0, 0,
+ 0, 0, 0, 0, 0, 129, 131, 0, 69, 64,
+ 69, 81, 82, 83, 84, 85, 86, 0, 76, 27,
+ 145, 133, 132, 134, 135, 137, 136, 0, 0, 0,
+ 0, 75, 77, 144, 0, 109, 0, 0, 108, 68,
+ 62, 0, 0, 0
+};
+
+static const short yydefgoto[] = { 1632,
+ 522, 282, 687, 1431, 1450, 688, 916, 297, 236, 237,
+ 1232, 1367, 1368, 1549, 1428, 1444, 1462, 1568, 1483, 1548,
+ 1566, 1509, 1451, 1485, 1511, 1608, 1570, 1588, 1609, 1452,
+ 1473, 1474, 1475, 1476, 1477, 1453, 1465, 1466, 1489, 1517,
+ 1535, 1536, 1537, 1563, 1581, 1598, 1555, 1556, 1557, 1558,
+ 1612, 1454, 533, 774, 775, 1468, 776, 777, 1026, 843,
+ 400, 240, 395, 396, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 453, 863, 480, 454, 481, 655, 250,
+ 397, 585, 1396, 1148, 1149, 1150, 1151, 1152, 1153, 1154,
+ 1155, 251, 252, 566, 654, 567, 253, 254, 620, 870,
+ 871, 872, 622, 866, 623, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 455, 456, 457, 458, 459, 460,
+ 461, 462, 463, 464, 274, 398, 1027, 844, 381, 310,
+ 569, 1020, 516, 678, 275, 589, 276, 517, 277, 278,
+ 279, 280, 351, 570, 809, 995, 535, 571, 572, 573,
+ 835, 836, 574, 823, 780, 781, 782, 379, 380, 985,
+ 556, 385, 547, 802, 1304, 1233, 972, 973, 1058, 1376,
+ 1455, 1525, 1059, 1301, 1434, 1506, 974, 1179, 1407, 975,
+ 1180, 1408, 976, 1184, 1309, 977, 1192, 978, 1217, 1336,
+ 1386, 1224, 979, 980, 981, 1237, 1083, 1389, 1075, 1069,
+ 1177, 1289, 1290, 1081, 1242, 1305, 982, 1087, 1244, 983,
+ 1084
+};
+
+static const short yypact[] = { -494,
+ 13027, 131,-32768, 127, 272, 127, 127, 127, 298,-32768,
+ 127, 127,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 127, 127, 127,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 127, 127,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 127, 127, 127, 127,
+ 127, 127, 1732,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, 127, 127, 127, 127,-32768, 127, 127,-32768, 127,
+ 127, 127, 127, 127, 127,-32768,-32768,-32768,-32768,-32768,
+ 127, 127, 127, 127, 127, 127, 127,-32768, 127,-32768,
+-32768,-32768, 127, 127,-32768, 127, 127,-32768,-32768,-32768,
+ 127,-32768,-32768, 127, 127,-32768,-32768,-32768,-32768,-32768,
+-32768, 127, 127, 127, 127,-32768,-32768,-32768,-32768, 223,
+ 127,-32768,-32768,-32768, 127,-32768,-32768, 127, 127,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 127,-32768,-32768, 127,
+ 127, 127,-32768,-32768,-32768,-32768,-32768, 127, 127, 127,
+ 127,-32768,-32768,-32768,-32768,-32768, 127,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 127,
+ 127,-32768, 127,-32768,-32768,-32768,-32768,-32768, 127, 127,
+-32768,-32768,-32768,-32768,-32768,-32768, 127,-32768,-32768,-32768,
+ 127, 127, 127, 127,-32768, 127,-32768,-32768, 127,-32768,
+-32768,-32768,-32768,-32768,-32768, 127, 127, 127,-32768,-32768,
+-32768, 127, 127,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ -294,-32768,-32768, 101, 22,-32768,-32768,-32768,-32768, 20622,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 13469,-32768,
+ 13911, 20776,-32768, 17886, 2133,-32768,-32768,-32768,-32768, 21092,
+ 20776, 890, 390, 19195, 20776,-32768, 948, 2748, 170,-32768,
+-32768,-32768,-32768, 743, 743, 762, 762,-32768, 834, 87,
+ 1611, 1100, 495,-32768, 14353,-32768, 19195,-32768, 19526,-32768,
+ 127,-32768,-32768,-32768, -39, 22, 686, -426, -384, 22,
+ 22,-32768, 14353,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 19195,
+-32768,-32768,-32768,-32768,-32768,-32768, 223, 223,-32768, 418,
+ 418, 223,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ -295,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 87,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 408, 408, 408, 408, 189, -362, -355,
+ 1252, 127, 127, 18321, 22, 19195,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, -345, 14353, 18760, 14353, 20622, 14795,
+-32768, 15237, 13027, 20622,-32768,-32768, 127,-32768,-32768,-32768,
+-32768, 1201,-32768, 390, 127,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 890, 890, 890,
+ 890, 127, 127, 1512, 1512, 127,-32768,-32768, 890, 890,
+ 890, 890, 890, 890, 127,-32768,-32768, 127,-32768,-32768,
+-32768, 127,-32768,-32768, 10817, 1076, 10083, 5390, 2002,-32768,
+-32768, 147, 1512, 552, 21092, 21092, 2487, 890, 2128,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 28,-32768,-32768,-32768,
+ 199, 10817,-32768, 614, 157,-32768,-32768, 1611,-32768, 170,
+-32768,-32768,-32768,-32768, 127, 127,-32768,-32768,-32768,-32768,
+ 127, 127, 127,-32768, 121, 127,-32768, 1115, 560, 127,
+ 127, 594, 127, 127, 14353,-32768, 19195,-32768,-32768,-32768,
+ 150, 10288, -425, 18321, 22, 19195, 127, 127, 127, 127,
+ 127, 127, 723, -189, 19195, 262,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 121,-32768,-32768,
+-32768,-32768, -168, -355, 7, 19195,-32768, 127,-32768, 127,
+ 127,-32768,-32768, 127, 127,-32768, 28,-32768,-32768,-32768,
+-32768, 17333, 547, 214, 237, 237,-32768, 19195, 19195,-32768,
+-32768, 15679, 297, 19195, -268,-32768, 16121,-32768, -263, -255,
+ 20622, 16563, 13027,-32768, -249,-32768,-32768, 1512, 1512, 1512,
+ 1512, 552, 552,-32768,-32768, 552,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 10817, 17447, 11259,-32768,
+-32768,-32768, 10817,-32768, 10817, 5390, 2002,-32768,-32768, 890,
+ 890, 890, 890, 890, 890, 127, 127, 10817, 2002,-32768,
+-32768, 10817, 1076,-32768, 1512, 2487, 614, 2487, 28,-32768,
+ 127, 127, 127, 279, 14353, 10817,-32768, 614,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 127, 127, 682, 127,
+ 127,-32768,-32768, 127, 127,-32768,-32768, 19195,-32768,-32768,
+-32768,-32768,-32768,-32768, 621, 127, 124, 31,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 127,-32768,-32768,-32768,-32768,-32768,-32768, 127,
+ 127,-32768,-32768,-32768,-32768, 127,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 127,-32768, 127,-32768,-32768, 127, 127,
+-32768, 127,-32768,-32768,-32768, 127, 127,-32768, 127, 127,
+-32768,-32768,-32768,-32768, 127, 127, 127,-32768,-32768,-32768,
+ 127, 127,-32768, 127,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 20341, -245, 13027, 10288,-32768, -239, 348,-32768,
+-32768, 222,-32768, 19195, 19195,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 127, 127, 127, 127, 127, 127, 1252,-32768,
+ -190, 9589, -416, 19195, -74, 11701,-32768,-32768, 127, -111,
+-32768,-32768,-32768, 279, 319,-32768,-32768,-32768,-32768,-32768,
+-32768, 214, 19195, 127, 127, 127, 127, 127, 127, 127,
+ 127, 127, 127, 127, 778, 374,-32768,-32768,-32768,-32768,
+-32768,-32768, 14353, 14353, 20622, 127, -177,-32768, 13027,-32768,
+-32768, -153, 13027,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 10083, 10817,-32768,-32768,-32768, 717, 10817,-32768,
+-32768,-32768, 10817,-32768,-32768, 10817, 2002, 10817,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 10817,-32768,-32768,
+-32768, 279,-32768,-32768,-32768, 127, 127, 127,-32768,-32768,
+-32768,-32768, 127, 127,-32768,-32768,-32768,-32768,-32768, 427,
+-32768, 621, 427, 127, 427, 50,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, -291,-32768,-32768, 13027, 222,
+ 217, 19195,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 17333, 127,-32768,-32768, -148, -144, -131, 1,
+ -124, -98, -119, -146, -115,-32768, 9948, -129,-32768, 19195,
+ 6358,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 9948, 22, -100, 40,-32768, 14353,-32768, 12143,
+-32768, 127, 127, 127, 141,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 127, 127,
+ 374, 127, 127, 127, 127, 127, 127, 127, 17005,-32768,
+-32768, -87, 1713, -71,-32768, 14353, 14353,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 10817,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 50, 427, 50,-32768, -32, -29, 22,
+ 22, 19195, 19914, 19914,-32768, -75, -53, 400, -36,-32768,
+-32768,-32768,-32768,-32768, 127, 127, 127,-32768, 138,-32768,
+ 939, 949, 982,-32768, -301, 6717,-32768,-32768,-32768, 6717,
+ -33,-32768, 0, 19626,-32768,-32768, 6717, 19195,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 12585,-32768,-32768,-32768,-32768,
+ 127, 127, 127,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 13027, -18, 704, 861, 861,-32768, 127,-32768,
+ 127, 127, 704, 861, 127,-32768,-32768, 704,-32768,-32768,
+ 704,-32768,-32768,-32768, 704, 861, 127, 127, 861,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 541,-32768, 1713, 1713,
+ 861, 1713, 704, 1713, 1713, 545,-32768,-32768,-32768, -7,
+ 50, -3, 563, 574, 14, 53,-32768, 55, 58,-32768,
+ 14353, 20, 52, 400, -52, -52, 54,-32768, 9589, 9589,
+-32768,-32768,-32768, 9589,-32768,-32768,-32768, 127, 127, 127,
+-32768, 6717,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768, 6717, 994, 1005, 1040,
+-32768,-32768,-32768, 109,-32768,-32768,-32768,-32768, 9948,-32768,
+-32768,-32768, 2050,-32768, 2409, 6717, 9589, 127, 127, 127,
+ 127, 77,-32768,-32768, 90, 2768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 861, 861, 861,-32768,-32768,
+ 704,-32768,-32768,-32768,-32768, 704, 704,-32768, 22, 22,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 439, 683, 110,
+ 696, 5, 5, 10288, 10288,-32768,-32768, 14353, 400, 400,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 400, 400,-32768,
+ 9589, 7076, 7435, 9589, -307,-32768,-32768,-32768, 9589, 3127,
+ 3486,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768, 6717,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768, 3845, -230,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 126, 134,
+ 248, 5, 714, 5, 127, 720, 154, 5, 161, 13027,
+ 13027,-32768,-32768,-32768,-32768, 9589, 7794,-32768,-32768, 8153,
+-32768, -224,-32768,-32768, 4204, 6717,-32768,-32768, 9589,-32768,
+-32768, 127,-32768,-32768,-32768, 1713, 164, 5, 176, 1572,
+ 220, 142,-32768, 142, 8512,-32768, 9589, 9589, 9589, 9589,
+-32768,-32768, 4563, -197,-32768,-32768, 142, 228, 142,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 777, 5, 435,
+-32768,-32768,-32768, 9589, 4922, 5281, 9589,-32768,-32768,-32768,
+ 142,-32768, 127, 712,-32768, 792, 249, 257, -12, 263,
+-32768,-32768,-32768,-32768, 9589, 8871,-32768,-32768,-32768,-32768,
+ 127, 269, 289, 713,-32768, 249, 278,-32768, 127, 127,
+ 127, 749, 12, 290, 799, 419, 812, 142, 9230,-32768,
+-32768, 854, 862, 852, 309, 127, 127, 127, 329,-32768,
+-32768,-32768,-32768,-32768, 12, 331,-32768, 878, 894, 878,
+ 896, 894, 896,-32768,-32768, 9589, 870, 127, 22, 907,
+ 354, 852,-32768,-32768,-32768, 916, 20935,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768, 9589, 5640, 829,-32768,-32768, 127,
+-32768, 355, 786, 127, 20935,-32768, 905, 614, 2487,-32768,
+-32768, 1078,-32768, 5999,-32768,-32768,-32768, 379, 381, 934,
+-32768,-32768,-32768,-32768, 387, 808, 866, 473,-32768,-32768,
+ 905, 127, 893,-32768, 953, 19914, 954, 394, 127, 951,
+-32768, 936, 937, 936, 938, 937, 938, 893,-32768, 127,
+ 22, 968, 409, 970,-32768,-32768, 127, 908, 36, 36,
+ 36, 36, 36, 36, 22,-32768,-32768, 420, 862,-32768,
+ 862,-32768,-32768,-32768,-32768,-32768,-32768, 71,-32768, 127,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768, 423, 433, 22,
+ 22,-32768,-32768,-32768, 464,-32768, 465, 466,-32768,-32768,
+-32768, 1050, 1051,-32768
+};
+
+static const short yypgoto[] = {-32768,
+-32768,-32768, -576, -1068,-32768, -565, -716, -4,-32768, 18,
+ -939, -1092, -306,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768, -1057,-32768,-32768, -447,-32768,-32768,-32768, -544,-32768,
+ -406, -1324, -982, -1119, -924,-32768, -383,-32768,-32768,-32768,
+-32768, -451, -449, -474, -490, -506,-32768, -989, -865, -979,
+ -324,-32768,-32768,-32768, -744,-32768,-32768, 6,-32768,-32768,
+ 9, -200, -286,-32768, -125, 293, -186, -275,-32768, -218,
+-32768,-32768, 849,-32768,-32768, 680, 232, 482,-32768, -128,
+-32768,-32768,-32768, -937,-32768, -441,-32768, -176,-32768,-32768,
+-32768, -238, -240, -117, -448, -187, -204,-32768,-32768, -234,
+-32768, 233, -543,-32768, -232, -236, -250, -252,-32768, 848,
+ 35, -34, 144, -143,-32768,-32768,-32768,-32768, -233, -179,
+ 842, -244, -262, -241, -404, 651,-32768, 657, -363, 659,
+ 663, -174, -323,-32768, 56,-32768,-32768,-32768,-32768,-32768,
+-32768, -709, 830,-32768, 17,-32768, 16, 155, 333, -276,
+ -1321,-32768,-32768, -537,-32768,-32768,-32768, -536, 326,-32768,
+-32768, 291, -530, 175, -706, -686, 351, 521, 751,-32768,
+ 578, -223, 339,-32768, -730, -901, 18862,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+ -944,-32768,-32768,-32768,-32768, -1139, -910,-32768,-32768, 59,
+-32768
+};
+
+
+#define YYLAST 21420
+
+
+static const short yytable[] = { 284,
+ 519, 294, 295, 296, 486, 489, 238, 298, 508, 239,
+ 468, 465, 488, 466, 469, 1365, 485, 299, 300, 301,
+ 482, 293, 405, 487, 1469, 1470, 1471, 1292, 805, 509,
+ 512, 939, 302, 303, 820, 821, 914, 507, 401, 414,
+ 21, 822, 304, 305, 306, 307, 308, 309, 1469, 1470,
+ 1471, 624, 625, 638, 642, 409, 1085, 311, 312, 313,
+ 314, 525, 315, 316, 477, 317, 318, 319, 320, 321,
+ 322, 971, 1092, 865, 867, 943, 323, 324, 325, 326,
+ 327, 328, 329, 546, 330, 1610, 1, 2, 331, 332,
+ 505, 333, 334, 627, 639, 944, 335, 1345, 778, 336,
+ 337, 21, 1603, 1604, 1605, 1606, 1607, 338, 339, 340,
+ 341, 915, 590, 402, 494, 21, 343, 595, 814, 910,
+ 344, 913, 467, 345, 346, 595, 484, 681, 682, 283,
+ 651, 683, 347, 684, 1021, 348, 349, 350, 1050, 281,
+ 645, 652, 653, 352, 353, 354, 355, 568, 1496, 515,
+ 21, 984, 356, 681, 682, 534, 779, 683, 1051, 684,
+ 578, 374, 375, 376, 377, 357, 358, 515, 359, 1382,
+ 1496, 1218, 1219, 1220, 360, 361, 543, 544, 1235, 618,
+ 21, 482, 362, 405, 548, 1246, 363, 364, 365, 366,
+ 1369, 367, 586, 1044, 368, 1543, 1046, 536, 1048, 401,
+ 892, 369, 370, 371, 546, 49, 618, 372, 373, 52,
+ 553, 1271, 1272, 1543, 1274, 486, 1276, 1277, 486, 378,
+ 621, 876, 878, 492, 468, 508, 555, 647, 646, 1291,
+ 648, 499, 500, 943, 888, 1298, 1299, 581, 890, 501,
+ 680, 384, 386, 502, 468, 658, 509, 657, 656, 1414,
+ 619, 495, 496, 944, 660, 39, 40, 41, 42, 604,
+ 605, 479, 877, 342, 43, 44, 669, 415, 45, 1397,
+ 582, 1399, 587, 799, 592, 1403, 521, 619, 860, 861,
+ 649, 1380, 862, 801, 1381, 1221, 1222, 378, 644, 1223,
+ 1310, 803, 491, 1341, 520, 1341, 405, -820, 497, 498,
+ 784, 21, 524, 526, 852, 1418, 1341, 537, 538, 483,
+ 598, 599, 600, 601, 848, 1311, 1157, 1158, 1085, 850,
+ 1032, 607, 608, 609, 610, 611, 612, 851, 1161, 1077,
+ 1078, 1079, 518, 855, 1344, 1432, 1445, 937, 819, 1049,
+ 650, 864, 779, 618, 1372, 1373, 1045, 618, 1440, 618,
+ 1442, 839, 840, 1374, 1375, 1498, 659, 1503, 1380, -820,
+ -820, 1388, 618, 405, 1380, 540, 618, 1411, 405, 941,
+ 1341, 1341, 1459, 405, 1071, 1072, 1073, 575, 576, 1520,
+ 618, 896, 1523, 954, 70, 71, 873, 988, 874, 75,
+ 875, 1380, 897, 898, 1439, 486, 996, 486, 992, 993,
+ 994, 493, 579, 887, 1341, 1024, 468, 889, 594, 1504,
+ 597, 239, 619, 619, 619, 820, 821, 468, 619, 686,
+ 619, 900, 822, 856, 857, 858, 859, 602, 603, 1028,
+ 409, 606, 914, 619, 1385, 120, 899, 619, 686, 577,
+ 613, 580, -1031, 614, 1080, 1341, 1060, 615, 1302, 1303,
+ 478, 619, 479, 588, 818, 1469, 1446, 1471, 1416, 1061,
+ 541, 542, 1086, 382, 383, 545, 1070, 1160, 806, 1162,
+ 891, 1076, 1036, 1341, 1447, 1082, 1062, 1063, 1064, 1065,
+ 1066, 1067, 1094, 523, 1413, 1448, 1238, 1239, 1240, 1241,
+ 661, 662, 1074, 1500, 1502, 1114, 663, 664, 665, 1449,
+ 1095, 666, 1392, 1393, 1394, 672, 673, 1170, 676, 677,
+ 1156, 912, 879, 880, 881, 882, 883, 884, 1522, 1552,
+ 1524, 1554, 787, 788, 789, 790, 791, 792, 1395, 1171,
+ 239, 1293, 1294, 1295, 1296, 1297, 1231, 685, 686, 1370,
+ 1371, 1620, 785, 1621, 231, 232, 233, 234, 235, 1163,
+ 1499, 1501, 1164, 808, 1178, 810, 811, 1236, 1022, 812,
+ 813, 513, 514, 846, -320, 568, 1278, 1574, 1576, 1282,
+ 1377, 1472, 679, 1519, 1279, 1521, 1573, 1575, 1281, 783,
+ 1283, 786, 73, 74, 1280, 1592, 1366, 1594, 618, 817,
+ 800, 1068, 1589, 618, 1591, -98, 1284, 618, 854, 293,
+ 618, 239, 618, 382, 383, 231, 232, 233, 234, 235,
+ -1126, 807, 618, 1185, 1186, 1187, 1188, 1189, 1190, 231,
+ 232, 233, 234, 235, 681, 682, 670, 671, 683, 1031,
+ 684, 885, 886, 841, 842, 1285, 873, 1286, 1034, 847,
+ 1287, 1035, -1127, 1037, 1300, 1405, 893, 894, 895, 1410,
+ 1101, 1102, 1103, 1038, 231, 232, 233, 234, 235, 619,
+ 674, 675, 901, 902, 619, 905, 906, 1350, 619, 907,
+ 908, 619, 1351, 619, 1254, 1255, 1435, 1436, 1437, 1361,
+ 990, 911, 1260, 619, 231, 232, 233, 234, 235, 1362,
+ 1572, 1363, 1577, 519, 1265, 1337, 1338, 1268, 917, 1339,
+ 432, 433, 1364, 1456, 436, 918, 919, 1590, 1390, 1273,
+ 1593, 920, 39, 40, 41, 42, 1391, 1019, 1019, 819,
+ 1398, 43, 44, 1430, 1479, 45, 837, 838, 1191, 921,
+ 1365, 922, 1461, 909, 923, 924, 1402, 925, 408, 382,
+ 383, 926, 927, 1404, 928, 929, 1417, 617, 903, 904,
+ 930, 931, 932, 1486, 1487, 1488, 933, 934, 1419, 935,
+ 618, -820, -820, -820, -820, -820, -820, -820, -820, -820,
+ 223, 405, 285, 286, 617, 1526, 1168, 1169, -507, -507,
+ 938, 1053, 1054, 239, 239, 1469, 1470, 1471, 947, 948,
+ 949, 950, 951, 952, 1544, 223, 1443, 285, 286, 942,
+ 405, 1159, 1429, 779, 991, 231, 232, 233, 234, 235,
+ 1441, 680, 1269, 1270, 1353, 1354, 1355, 969, 1463, 998,
+ 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
+ 1464, 619, 1552, 1553, 1554, 818, 1470, 1471, 1467, 945,
+ 946, 1023, 287, 288, 289, 1478, 290, 291, 1469, 1470,
+ 1482, 292, 1546, 1547, 1025, 1553, 1554, 239, 1029, 987,
+ 1491, 239, 1096, 374, 375, 376, 377, 287, 288, 289,
+ 1484, 290, 291, 1497, -820, 1507, 292, 405, 997, 1510,
+ -820, 1172, 1173, 1174, 1175, 1176, -820, 1508, -820, -820,
+ 1512, 1039, 1040, 1041, 549, 550, 551, 552, 1042, 1043,
+ 1019, 1019, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1047,
+ 1516, 617, 1552, 1553, 1518, 617, 1471, 617, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 617, 1470, 1469, 1527, 617, 1530, 1531, 1551, 1253, 1603,
+ 1604, 1605, 1606, 1607, 938, 1115, 1259, 239, 617, 1057,
+ 1562, 1262, 501, 1123, 1263, 1125, 502, 1052, 1264, 1533,
+ 1565, 1128, 1567, 1569, 1131, 1132, 1133, 1134, 1135, 1571,
+ 817, 1137, 1138, 1580, 1582, 1584, 1275, 1585, 143, 144,
+ 145, 1587, 969, 1553, 1552, 1554, 969, 1098, 1099, 1100,
+ 1599, 1600, 1601, 470, 471, 472, 473, 1055, 969, 474,
+ 475, 1093, 476, 1619, 1104, 1105, 1625, 1106, 1107, 1108,
+ 1109, 1110, 1111, 1112, 12, 1626, 13, 14, 15, 16,
+ 17, 18, 19, 20, 149, 1089, 151, 152, 153, 154,
+ 155, 156, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 150, 1288, 1629, 1630, 1631, 1633,
+ 1634, 157, 158, 159, 160, 161, 162, 163, 164, 1401,
+ 1181, 1182, 1183, 1623, 1532, 1495, 49, 1165, 1166, 405,
+ 52, 824, 825, 826, 827, 828, 829, 830, 831, 832,
+ 833, 834, 1490, 1560, 1356, 1561, 1578, 1595, 1618, 1357,
+ 1358, 969, 413, 596, 1030, 969, 1249, 1250, 1251, 969,
+ 869, 1033, 969, 1116, 1117, 490, 1119, 1167, 1121, 1122,
+ 504, 1124, 643, 626, 1256, 628, 1257, 1258, 1252, 629,
+ 1261, 239, 539, 1088, 953, 1011, 1136, 1056, 940, 554,
+ 1139, 804, 1266, 1267, 970, 0, 1142, 1143, 1144, 1145,
+ 1146, 986, 1245, 1247, 506, 0, 13, 14, 15, 16,
+ 17, 18, 19, 20, 0, 0, 617, 0, 0, 503,
+ 0, 617, 0, 0, 0, 617, 510, 511, 617, 0,
+ 617, 16, 17, 18, 19, 20, 0, 0, 0, 0,
+ 617, 667, 668, 1306, 1307, 1308, 16, 17, 18, 19,
+ 20, 0, 0, 0, 969, 969, 415, 0, 0, 969,
+ 527, 528, 529, 530, 531, 532, 0, 969, 416, 417,
+ 418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 0,
+ 0, 0, 969, 1346, 1347, 1348, 1349, 793, 794, 795,
+ 796, 797, 798, 0, 969, 0, 0, 0, 969, 0,
+ 969, 969, 969, 387, 388, 389, 390, 391, 392, 393,
+ 394, 969, 0, 0, 1540, 1613, 1614, 1615, 1616, 1617,
+ 0, 0, 1542, 192, 0, 0, 0, 0, 1538, 508,
+ 1539, 0, 1540, 1541, 0, 0, 1359, 1360, 486, 1583,
+ 1542, 0, 239, 239, 0, 0, 1538, 468, 1539, 970,
+ 509, 1541, 0, 970, 1009, 1010, 828, 829, 830, 831,
+ 832, 833, 834, 0, 0, 970, 969, 969, 969, 969,
+ 0, 0, 0, 0, 969, 969, 969, 0, 617, 0,
+ 0, 0, 0, 0, 0, 0, 25, 26, 27, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 0, 0,
+ 0, 969, 0, 0, 0, 470, 471, 472, 473, 969,
+ 1400, 474, 475, 0, 476, 0, 0, 0, 0, 0,
+ 49, 0, 0, 0, 52, 938, 938, 0, 239, 239,
+ 0, 0, 0, 0, 0, 0, 0, 1415, 0, 0,
+ 0, 969, 969, 0, 0, 969, 0, 0, 0, 0,
+ 969, 969, 0, 0, 969, 0, 0, 0, 970, 0,
+ 0, 0, 970, 0, 0, 0, 970, 0, 0, 970,
+ 969, 0, 969, 969, 969, 969, 0, 0, 969, 1193,
+ 1194, 1195, 1196, 1197, 1198, 1199, 1200, 0, 1460, 1201,
+ 1202, 1203, 1204, 1205, 1206, 1207, 1208, 0, 0, 969,
+ 969, 969, 969, 0, 0, 0, 1481, 0, 0, 0,
+ 0, 0, 0, 0, 1492, 1493, 1494, 0, 0, 0,
+ 969, 969, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
+ 0, 1513, 1514, 1515, 1312, 1313, 1314, 1315, 1316, 1317,
+ 1318, 1319, 0, 0, 969, 1320, 1321, 1322, 1323, 1324,
+ 1325, 1326, 1327, 1528, 0, 0, 0, 0, 0, 0,
+ 0, 970, 970, 0, 0, 0, 970, 0, 0, 0,
+ 0, 969, 0, 0, 970, 1550, 1529, 0, 0, 1559,
+ 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 0, 0,
+ 969, 969, 0, 0, 0, 0, 0, 0, 0, 970,
+ 0, 0, 0, 0, 0, 0, 0, 1579, 0, 969,
+ 0, 970, 0, 0, 1586, 970, 0, 970, 970, 970,
+ 0, 0, 0, 0, 0, 1596, 0, 192, 970, 0,
+ 0, 0, 1602, 1420, 1421, 1422, 1423, 1424, 1425, 1426,
+ 1427, 0, 0, 0, 0, 0, 0, 0, 1597, 0,
+ 0, 0, 0, 0, 0, 1624, 1611, 1611, 1611, 1611,
+ 1611, 1611, 1597, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1622, 0, 0, 0, 0,
+ 0, 0, 0, 970, 970, 970, 970, 1627, 1628, 0,
+ 0, 970, 970, 970, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 0, 0, 0, 970, 0,
+ 0, 0, 0, 0, 0, 0, 970, 506, 0, 13,
+ 14, 15, 16, 17, 18, 19, 20, 0, 0, 0,
+ 0, 0, 0, 0, 0, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 0, 970, 970,
+ 0, 0, 970, 0, 0, 0, 0, 970, 970, 0,
+ 0, 970, 0, 0, 0, 0, 0, 0, 0, 49,
+ 0, -816, 0, 52, 0, 0, 0, 970, 0, 970,
+ 970, 970, 970, 0, 0, 970, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 557, 558, 559, 560,
+ 561, 0, 0, 0, 562, 563, 970, 970, 970, 970,
+ 0, 0, -816, 0, 0, 0, 564, 565, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 970, 970, 0,
+ 0, 0, 0, -816, -816, 0, 0, -816, -816, 0,
+ -816, -816, -816, -816, -816, -816, -816, -816, 0, 0,
+ 0, 970, 0, -816, -816, 0, -816, -816, -816, -816,
+ -816, -816, -816, -816, -816, -816, -816, -816, 0, 0,
+ -816, -816, -816, -816, 0, 0, 0, 0, 970, -816,
+ -816, 0, 0, -816, 0, 0, 0, 0, 0, 0,
+ -816, 0, 0, 0, -816, 0, 0, 970, 970, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 970, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -816, -816, 0, -816, -816, -816, 0,
+ 0, 0, 0, 0, 0, 0, -816, 0, 0, 0,
+ 0, -816, 0, -816, -816, -816, 0, 0, 0, -816,
+ -816, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -816, 0, 0, 192, 0, 0, 0,
+ 0, -816, 0, -816, -816, 0, 0, -816, -816, 0,
+ 0, 0, 0, 0, 1115, 1116, 1117, 1118, 1119, 1120,
+ 1121, 1122, 1123, 1124, 1125, 1126, 1127, -816, -816, -816,
+ 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 0,
+ 1137, 1138, 1139, 0, 0, 0, 1140, 1141, 1142, 1143,
+ 1144, 1145, 1146, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -816, -816, -816, -816, -816, -816, -816,
+ -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
+ -816, -816, -816, 0, 0, 0, 0, -816, 0, 0,
+ 0, -816, 0, 0, -816, -816, 0, 0, 0, 0,
+ 0, -816, 3, 0, 0, 0, 0, -816, -816, -816,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -816, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 955, 0, 0, 0, 0, 0, 0, 0, 0,
+ 410, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 415, 0, 0, 0, 0, 0, 0, 1225,
+ 0, 0, 0, 24, 416, 417, 418, 419, 420, 421,
+ 422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
+ 432, 433, 434, 435, 436, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 46, 47, 48, 6, 50,
+ 0, 51, 0, 956, 54, 55, 56, 57, 58, 59,
+ 60, 61, 0, 0, 0, 0, 0, 0, 406, 0,
+ 0, 0, 0, 407, 0, -816, -816, -816, -816, -816,
+ -816, -816, -816, -816, 0, 0, 0, 66, 0, 68,
+ 69, 0, 0, 72, 0, 0, 0, 76, 77, 78,
+ 0, 80, 81, 82, 0, 0, 85, 0, 0, 0,
+ 89, 0, 0, 0, 93, 94, 95, 0, 0, 98,
+ 0, 0, 0, 0, 0, 0, 0, 0, 107, 108,
+ 109, 0, 0, 415, 0, 0, 0, 0, 116, 0,
+ 118, 0, 0, 121, 122, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 0, 0, 146, 147,
+ 0, 0, 0, 0, 1147, 0, 0, 0, 0, 0,
+ 0, 0, 83, 0, 0, 0, 0, 88, -816, 90,
+ 91, 92, 0, 0, -816, 96, 97, 0, 0, 0,
+ -816, 0, -816, -816, 0, 0, 0, 0, 0, 110,
+ 0, 0, 0, 0, 0, 437, 0, 117, 0, 119,
+ 0, 0, 0, 123, 124, 0, 0, 640, 641, 0,
+ 0, 169, 170, 171, 172, 0, 174, 175, 176, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 187, 188, 0, 0, 191, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 206, 207, 208, 209, 210, 211, 212,
+ 213, 3, 0, 0, 0, 218, 219, 0, 0, 4,
+ 0, 0, 0, 0, 0, 165, 166, 167, 168, 0,
+ 0, 0, 0, 173, 0, 0, 0, 177, 0, 0,
+ 179, 180, 0, 438, 0, 0, 0, 186, 0, 0,
+ 7, 0, 0, 0, 193, 194, 0, 0, 0, 0,
+ 955, 0, 0, 0, 0, 0, 0, 0, 0, 410,
+ 0, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 0, 449, 450, 451, 452, 0, 0, 1225, 0,
+ 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 957, 958, 959, 960, 961, 962, 963,
+ 964, 965, 0, 0, 46, 47, 48, 6, 50, 0,
+ 51, 0, 956, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 0, 0, 0, 406, 0, 0,
+ 0, 0, 407, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 68, 69,
+ 0, 0, 72, 0, 0, 0, 76, 77, 78, 0,
+ 80, 81, 82, 0, 0, 85, 0, 0, 0, 89,
+ 0, 0, 0, 93, 94, 95, 0, 0, 98, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 108, 109,
+ 0, 0, 0, 0, 0, 0, 0, 116, 0, 118,
+ 0, 0, 121, 122, 0, 0, 0, 0, 0, 0,
+ 0, 966, 0, 1226, 1227, 1228, 1229, 1230, 1231, 0,
+ 968, 1340, 0, 0, 0, 0, 0, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 83, 0, 0, 0, 0, 88, 0, 90, 91,
+ 92, 0, 0, 0, 96, 97, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 110, 0,
+ 0, 0, 0, 0, 0, 0, 117, 0, 119, 0,
+ 0, 0, 123, 124, 0, 0, 0, 0, 0, 408,
+ 169, 170, 171, 172, 0, 174, 175, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
+ 188, 0, 0, 191, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 3, 0, 0, 0, 218, 219, 0, 0, 4, 0,
+ 0, 0, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 173, 0, 0, 0, 177, 0, 0, 179,
+ 180, 0, 0, 0, 0, 0, 186, 0, 0, 7,
+ 0, 0, 0, 193, 194, 0, 0, 0, 0, 955,
+ 0, 0, 0, 0, 0, 0, 0, 0, 410, 22,
+ 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1225, 0, 0,
+ 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 957, 958, 959, 960, 961, 962, 963, 964,
+ 965, 0, 0, 46, 47, 48, 0, 50, 0, 51,
+ 0, 956, 54, 55, 56, 57, 58, 59, 60, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,
+ 71, 0, 73, 74, 75, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66, 0, 68, 69, 0,
+ 0, 72, 0, 0, 0, 76, 77, 78, 0, 80,
+ 81, 82, 0, 0, 85, 0, 0, 0, 89, 0,
+ 0, 0, 93, 94, 95, 0, 0, 98, 0, 0,
+ 120, 0, 0, 0, 0, 0, 107, 108, 109, 0,
+ 0, 0, 0, 0, 0, 0, 116, 0, 118, 0,
+ 0, 121, 122, 143, 144, 145, 0, 0, 0, 0,
+ 966, 0, 1226, 1227, 1228, 1229, 1230, 1231, 0, 968,
+ 1343, 0, 0, 0, 0, 0, 146, 147, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 169,
+ 170, 171, 172, 0, 174, 175, 176, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 0, 0, 191, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 3,
+ 0, 0, 0, 218, 219, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 955, 0,
+ 0, 0, 0, 0, 0, 0, 0, 410, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1225, 0, 0, 0,
+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 220, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 957, 958, 959, 960, 961, 962, 963, 964, 965,
+ 0, 0, 46, 47, 48, 0, 50, 0, 51, 0,
+ 956, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 0, 68, 69, 0, 0,
+ 72, 0, 0, 0, 76, 77, 78, 0, 80, 81,
+ 82, 0, 0, 85, 0, 0, 0, 89, 0, 0,
+ 0, 93, 94, 95, 0, 0, 98, 0, 0, 0,
+ 0, 0, 0, 0, 0, 107, 108, 109, 0, 0,
+ 0, 0, 0, 0, 0, 116, 0, 118, 0, 0,
+ 121, 122, 0, 0, 0, 0, 0, 0, 0, 966,
+ 0, 1226, 1227, 1228, 1229, 1230, 1231, 0, 968, 1352,
+ 0, 0, 0, 0, 0, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 170,
+ 171, 172, 0, 174, 175, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 0,
+ 0, 191, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 3, 0,
+ 0, 0, 218, 219, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 955, 0, 0,
+ 0, 0, 0, 0, 0, 0, 410, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1225, 0, 0, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 957, 958, 959, 960, 961, 962, 963, 964, 965, 0,
+ 0, 46, 47, 48, 0, 50, 0, 51, 0, 956,
+ 54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66, 0, 68, 69, 0, 0, 72,
+ 0, 0, 0, 76, 77, 78, 0, 80, 81, 82,
+ 0, 0, 85, 0, 0, 0, 89, 0, 0, 0,
+ 93, 94, 95, 0, 0, 98, 0, 0, 0, 0,
+ 0, 0, 0, 0, 107, 108, 109, 0, 0, 0,
+ 0, 0, 0, 0, 116, 0, 118, 0, 0, 121,
+ 122, 0, 0, 0, 0, 0, 0, 0, 966, 0,
+ 1226, 1227, 1228, 1229, 1230, 1231, 0, 968, 1383, 0,
+ 0, 0, 0, 0, 146, 147, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 170, 171,
+ 172, 0, 174, 175, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 187, 188, 0, 0,
+ 191, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 3, 0, 0,
+ 0, 218, 219, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 955, 0, 0, 0,
+ 0, 0, 0, 0, 0, 410, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1225, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 957,
+ 958, 959, 960, 961, 962, 963, 964, 965, 0, 0,
+ 46, 47, 48, 0, 50, 0, 51, 0, 956, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 66, 0, 68, 69, 0, 0, 72, 0,
+ 0, 0, 76, 77, 78, 0, 80, 81, 82, 0,
+ 0, 85, 0, 0, 0, 89, 0, 0, 0, 93,
+ 94, 95, 0, 0, 98, 0, 0, 0, 0, 0,
+ 0, 0, 0, 107, 108, 109, 0, 0, 0, 0,
+ 0, 0, 0, 116, 0, 118, 0, 0, 121, 122,
+ 0, 0, 0, 0, 0, 0, 0, 966, 0, 1226,
+ 1227, 1228, 1229, 1230, 1231, 0, 968, 1384, 0, 0,
+ 0, 0, 0, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 170, 171, 172,
+ 0, 174, 175, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 187, 188, 0, 0, 191,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 3, 0, 0, 0,
+ 218, 219, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 955, 0, 0, 0, 0,
+ 0, 0, 0, 0, 410, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1225, 0, 0, 0, 24, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 220, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 957, 958,
+ 959, 960, 961, 962, 963, 964, 965, 0, 0, 46,
+ 47, 48, 0, 50, 0, 51, 0, 956, 54, 55,
+ 56, 57, 58, 59, 60, 61, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 66, 0, 68, 69, 0, 0, 72, 0, 0,
+ 0, 76, 77, 78, 0, 80, 81, 82, 0, 0,
+ 85, 0, 0, 0, 89, 0, 0, 0, 93, 94,
+ 95, 0, 0, 98, 0, 0, 0, 0, 0, 0,
+ 0, 0, 107, 108, 109, 0, 0, 0, 0, 0,
+ 0, 0, 116, 0, 118, 0, 0, 121, 122, 0,
+ 0, 0, 0, 0, 0, 0, 966, 0, 1226, 1227,
+ 1228, 1229, 1230, 1231, 0, 968, 1387, 0, 0, 0,
+ 0, 0, 146, 147, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 169, 170, 171, 172, 0,
+ 174, 175, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 187, 188, 0, 0, 191, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 206, 207, 208,
+ 209, 210, 211, 212, 213, 3, 0, 0, 0, 218,
+ 219, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 955, 0, 0, 0, 0, 0,
+ 0, 0, 0, 410, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1225, 0, 0, 0, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 957, 958, 959,
+ 960, 961, 962, 963, 964, 965, 0, 0, 46, 47,
+ 48, 0, 50, 0, 51, 0, 956, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66, 0, 68, 69, 0, 0, 72, 0, 0, 0,
+ 76, 77, 78, 0, 80, 81, 82, 0, 0, 85,
+ 0, 0, 0, 89, 0, 0, 0, 93, 94, 95,
+ 0, 0, 98, 0, 0, 0, 0, 0, 0, 0,
+ 0, 107, 108, 109, 0, 0, 0, 0, 0, 0,
+ 0, 116, 0, 118, 0, 0, 121, 122, 0, 0,
+ 0, 0, 0, 0, 0, 966, 0, 1226, 1227, 1228,
+ 1229, 1230, 1231, 0, 968, 1412, 0, 0, 0, 0,
+ 0, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 170, 171, 172, 0, 174,
+ 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 187, 188, 0, 0, 191, 0, 0,
+ 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 3, 0, 0, 0, 218, 219,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 955, 0, 0, 0, 0, 0, 0,
+ 0, 0, 410, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 21, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 957, 958, 959, 960,
+ 961, 962, 963, 964, 965, 0, 0, 46, 47, 48,
+ 0, 50, 0, 51, 0, 956, 54, 55, 56, 57,
+ 58, 59, 60, 61, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 68, 69, 0, 0, 72, 0, 0, 0, 76,
+ 77, 78, 0, 80, 81, 82, 0, 0, 85, 0,
+ 0, 0, 89, 0, 0, 0, 93, 94, 95, 0,
+ 0, 98, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 108, 109, 0, 0, 0, 0, 0, 0, 0,
+ 116, 0, 118, 0, 0, 121, 122, 0, 0, 0,
+ 0, 0, 0, 0, 966, 0, 1226, 1227, 1228, 1229,
+ 1230, 1231, 0, 968, 1438, 0, 0, 0, 0, 0,
+ 146, 147, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 169, 170, 171, 172, 0, 174, 175,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 0, 0, 191, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 206, 207, 208, 209, 210,
+ 211, 212, 213, 3, 0, 0, 0, 218, 219, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 955, 0, 0, 0, 0, 0, 0, 0,
+ 0, 410, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 24, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 957, 958, 959, 960, 961,
+ 962, 963, 964, 965, 0, 0, 46, 47, 48, 0,
+ 50, 0, 51, 0, 956, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
+ 68, 69, 0, 0, 72, 0, 0, 0, 76, 77,
+ 78, 0, 80, 81, 82, 0, 0, 85, 0, 0,
+ 0, 89, 0, 0, 0, 93, 94, 95, 0, 0,
+ 98, 0, 0, 0, 0, 0, 0, 0, 0, 107,
+ 108, 109, 0, 0, 0, 0, 0, 0, 0, 116,
+ 0, 118, 0, 0, 121, 122, 0, 0, 0, 0,
+ 0, 0, 0, 966, 0, 231, 232, 233, 967, 235,
+ 415, 0, 968, 1457, 0, 0, 0, 0, 0, 146,
+ 147, 0, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
+ 434, 435, 436, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 170, 171, 172, 0, 174, 175, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 188, 0, 0, 191, 0, 0, 0, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 3, 0, 0, 0, 218, 219, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 955, 0, 0, 0, 0, 0, 0, 0, 0,
+ 410, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 0, 0, 0, 24, 0, 0, 0, 0, 630, 631,
+ 632, 633, 634, 635, 220, 446, 447, 636, 0, 0,
+ 0, 0, 637, 0, 957, 958, 959, 960, 961, 962,
+ 963, 964, 965, 0, 0, 46, 47, 48, 0, 50,
+ 0, 51, 0, 956, 54, 55, 56, 57, 58, 59,
+ 60, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 66, 0, 68,
+ 69, 0, 0, 72, 0, 0, 0, 76, 77, 78,
+ 0, 80, 81, 82, 0, 0, 85, 0, 0, 0,
+ 89, 0, 0, 0, 93, 94, 95, 0, 0, 98,
+ 0, 0, 0, 0, 0, 0, 0, 0, 107, 108,
+ 109, 0, 0, 0, 0, 0, 0, 0, 116, 0,
+ 118, 0, 0, 121, 122, 0, 0, 0, 0, 0,
+ 0, 0, 966, 0, 231, 232, 233, 967, 235, 0,
+ 0, 968, 1458, 0, 0, 0, 0, 0, 146, 147,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 169, 170, 171, 172, 0, 174, 175, 176, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 187, 188, 0, 0, 191, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 206, 207, 208, 209, 210, 211, 212,
+ 213, 3, 0, 0, 0, 218, 219, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 955, 0, 0, 0, 0, 0, 0, 0, 0, 410,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+ 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 957, 958, 959, 960, 961, 962, 963,
+ 964, 965, 0, 0, 46, 47, 48, 0, 50, 0,
+ 51, 0, 956, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 68, 69,
+ 0, 0, 72, 0, 0, 0, 76, 77, 78, 0,
+ 80, 81, 82, 0, 0, 85, 0, 0, 0, 89,
+ 0, 0, 0, 93, 94, 95, 0, 0, 98, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 108, 109,
+ 0, 0, 0, 0, 0, 0, 0, 116, 0, 118,
+ 0, 0, 121, 122, 0, 0, 0, 0, 0, 0,
+ 0, 966, 0, 231, 232, 233, 967, 235, 0, 0,
+ 968, 1545, 0, 0, 0, 0, 0, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 170, 171, 172, 0, 174, 175, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
+ 188, 0, 0, 191, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 3, 0, 0, 0, 218, 219, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 955,
+ 0, 0, 0, 0, 0, 0, 0, 0, 410, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
+ 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 957, 958, 959, 960, 961, 962, 963, 964,
+ 965, 0, 0, 46, 47, 48, 0, 50, 0, 51,
+ 0, 956, 54, 55, 56, 57, 58, 59, 60, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66, 0, 68, 69, 0,
+ 0, 72, 0, 0, 0, 76, 77, 78, 0, 80,
+ 81, 82, 0, 0, 85, 0, 0, 0, 89, 0,
+ 0, 0, 93, 94, 95, 0, 0, 98, 0, 0,
+ 0, 0, 0, 0, 0, 0, 107, 108, 109, 0,
+ 0, 0, 0, 0, 0, 0, 116, 0, 118, 0,
+ 0, 121, 122, 0, 0, 0, 0, 0, 0, 0,
+ 966, 0, 231, 232, 233, 967, 235, 0, 0, 968,
+ 1564, 0, 0, 0, 0, 0, 146, 147, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 169,
+ 170, 171, 172, 0, 174, 175, 176, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 0, 0, 191, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 3,
+ 0, 0, 0, 218, 219, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 955, 0,
+ 0, 0, 0, 0, 0, 0, 0, 410, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1225, 0, 0, 0,
+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 220, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 957, 958, 959, 960, 961, 962, 963, 964, 965,
+ 0, 0, 46, 47, 48, 0, 50, 0, 51, 0,
+ 956, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 66, 0, 68, 69, 0, 0,
+ 72, 0, 0, 0, 76, 77, 78, 0, 80, 81,
+ 82, 0, 0, 85, 0, 0, 0, 89, 0, 0,
+ 0, 93, 94, 95, 0, 0, 98, 0, 0, 0,
+ 0, 0, 0, 0, 0, 107, 108, 109, 0, 0,
+ 0, 0, 0, 0, 0, 116, 0, 118, 0, 0,
+ 121, 122, 0, 0, 1090, 0, 0, 0, 0, 966,
+ 0, 231, 232, 233, 967, 235, 0, 0, 968, 0,
+ 0, 0, 0, 0, 0, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 170,
+ 171, 172, 0, 174, 175, 176, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 0,
+ 0, 191, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 3, 0,
+ 0, 0, 218, 219, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 955, 0, 0,
+ 0, 0, 0, 0, 0, 0, 410, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 21, 0, 0, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 220, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 957, 958, 959, 960, 961, 962, 963, 964, 965, 0,
+ 0, 46, 47, 48, 0, 50, 0, 51, 0, 956,
+ 54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 66, 0, 68, 69, 0, 0, 72,
+ 0, 0, 0, 76, 77, 78, 0, 80, 81, 82,
+ 0, 0, 85, 0, 0, 0, 89, 0, 0, 0,
+ 93, 94, 95, 0, 0, 98, 0, 0, 0, 0,
+ 0, 0, 0, 0, 107, 108, 109, 0, 0, 0,
+ 0, 0, 0, 0, 116, 0, 118, 0, 0, 121,
+ 122, 0, 0, 0, 0, 0, 0, 0, 966, 0,
+ 1226, 1227, 1228, 1229, 1230, 1231, 0, 968, 0, 0,
+ 0, 0, 0, 0, 146, 147, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 170, 171,
+ 172, 0, 174, 175, 176, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 187, 188, 0, 0,
+ 191, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 3, 0, 0,
+ 0, 218, 219, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 955, 0, 0, 0,
+ 0, 0, 0, 0, 0, 410, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 957,
+ 958, 959, 960, 961, 962, 963, 964, 965, 0, 0,
+ 46, 47, 48, 0, 50, 0, 51, 0, 956, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 66, 0, 68, 69, 0, 0, 72, 0,
+ 0, 0, 76, 77, 78, 0, 80, 81, 82, 0,
+ 0, 85, 0, 0, 0, 89, 0, 0, 0, 93,
+ 94, 95, 0, 0, 98, 0, 0, 0, 0, 0,
+ 0, 0, 0, 107, 108, 109, 0, 0, 0, 0,
+ 0, 0, 0, 116, 0, 118, 0, 0, 121, 122,
+ 0, 0, 0, 0, 0, 0, 0, 966, 0, 231,
+ 232, 233, 967, 235, 1378, 0, 968, 0, 0, 0,
+ 0, 0, 0, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 170, 171, 172,
+ 0, 174, 175, 176, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 187, 188, 0, 0, 191,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 3, 0, 0, 0,
+ 218, 219, 0, 0, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 7, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 955, 0, 0, 0, 0,
+ 0, 0, 0, 0, 410, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 21, 0, 0, 0, 24, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 220, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 957, 958,
+ 959, 960, 961, 962, 963, 964, 965, 0, 0, 46,
+ 47, 48, 0, 50, 0, 51, 0, 956, 54, 55,
+ 56, 57, 58, 59, 60, 61, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 66, 0, 68, 69, 0, 0, 72, 0, 0,
+ 0, 76, 77, 78, 0, 80, 81, 82, 0, 0,
+ 85, 0, 0, 0, 89, 0, 0, 0, 93, 94,
+ 95, 0, 0, 98, 0, 0, 0, 0, 0, 0,
+ 0, 0, 107, 108, 109, 0, 0, 0, 0, 0,
+ 0, 0, 116, 0, 118, 0, 0, 121, 122, 0,
+ 0, 0, 0, 0, 0, 0, 966, 0, 231, 232,
+ 233, 967, 235, 1379, 0, 968, 0, 0, 0, 0,
+ 0, 0, 146, 147, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 169, 170, 171, 172, 0,
+ 174, 175, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 187, 188, 0, 0, 191, 0,
+ 0, 0, 195, 196, 197, 198, 199, 200, 201, 202,
+ 203, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 206, 207, 208,
+ 209, 210, 211, 212, 213, 3, 0, 0, 0, 218,
+ 219, 0, 0, 4, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 7, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 955, 0, 0, 0, 0, 0,
+ 0, 0, 0, 410, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 21, 0, 0, 0, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 957, 958, 959,
+ 960, 961, 962, 963, 964, 965, 0, 0, 46, 47,
+ 48, 0, 50, 0, 51, 0, 956, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 66, 0, 68, 69, 0, 0, 72, 0, 0, 0,
+ 76, 77, 78, 0, 80, 81, 82, 0, 0, 85,
+ 0, 0, 0, 89, 0, 0, 0, 93, 94, 95,
+ 0, 0, 98, 0, 0, 0, 0, 0, 0, 0,
+ 0, 107, 108, 109, 0, 0, 0, 0, 0, 0,
+ 0, 116, 0, 118, 0, 0, 121, 122, 0, 0,
+ 0, 0, 0, 0, 0, 966, 0, 231, 232, 233,
+ 967, 235, 1406, 0, 968, 0, 0, 0, 0, 0,
+ 0, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 170, 171, 172, 0, 174,
+ 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 187, 188, 0, 0, 191, 0, 0,
+ 0, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 3, 0, 0, 0, 218, 219,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 955, 0, 0, 0, 0, 0, 0,
+ 0, 0, 410, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 21, 0, 0, 0, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 220, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 957, 958, 959, 960,
+ 961, 962, 963, 964, 965, 0, 0, 46, 47, 48,
+ 0, 50, 0, 51, 0, 956, 54, 55, 56, 57,
+ 58, 59, 60, 61, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
+ 0, 68, 69, 0, 0, 72, 0, 0, 0, 76,
+ 77, 78, 0, 80, 81, 82, 0, 0, 85, 0,
+ 0, 0, 89, 0, 0, 0, 93, 94, 95, 0,
+ 0, 98, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 108, 109, 0, 0, 0, 0, 0, 0, 0,
+ 116, 0, 118, 0, 0, 121, 122, 0, 0, 0,
+ 0, 0, 0, 0, 966, 0, 231, 232, 233, 967,
+ 235, 1409, 0, 968, 0, 0, 0, 0, 0, 0,
+ 146, 147, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 169, 170, 171, 172, 0, 174, 175,
+ 176, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 0, 0, 191, 0, 0, 0,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 206, 207, 208, 209, 210,
+ 211, 212, 213, 3, 0, 0, 0, 218, 219, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 955, 0, 0, 0, 0, 0, 0, 0,
+ 0, 410, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 24, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 220, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 957, 958, 959, 960, 961,
+ 962, 963, 964, 965, 0, 0, 46, 47, 48, 0,
+ 50, 0, 51, 0, 956, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 66, 0,
+ 68, 69, 0, 0, 72, 0, 0, 0, 76, 77,
+ 78, 0, 80, 81, 82, 0, 0, 85, 0, 0,
+ 0, 89, 0, 0, 0, 93, 94, 95, 0, 0,
+ 98, 0, 0, 0, 0, 0, 0, 0, 0, 107,
+ 108, 109, 0, 0, 0, 0, 0, 0, 0, 116,
+ 0, 118, 0, 0, 121, 122, 0, 0, 0, 0,
+ 0, 0, 0, 966, 0, 231, 232, 233, 967, 235,
+ 1433, 0, 968, 0, 0, 0, 0, 0, 0, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 170, 171, 172, 0, 174, 175, 176,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 188, 0, 0, 191, 0, 0, 0, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 3, 0, 0, 0, 218, 219, 0, 0,
+ 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 955, 0, 0, 0, 0, 0, 0, 0, 0,
+ 410, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 0, 0, 0, 24, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 220, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 957, 958, 959, 960, 961, 962,
+ 963, 964, 965, 0, 0, 46, 47, 48, 0, 50,
+ 0, 51, 0, 956, 54, 55, 56, 57, 58, 59,
+ 60, 61, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 66, 0, 68,
+ 69, 0, 0, 72, 0, 0, 0, 76, 77, 78,
+ 0, 80, 81, 82, 0, 0, 85, 0, 0, 0,
+ 89, 0, 0, 0, 93, 94, 95, 0, 0, 98,
+ 0, 0, 0, 0, 0, 0, 0, 0, 107, 108,
+ 109, 0, 0, 0, 0, 0, 0, 0, 116, 0,
+ 118, 0, 0, 121, 122, 0, 0, 0, 0, 0,
+ 0, 0, 966, 0, 231, 232, 233, 967, 235, 1480,
+ 0, 968, 0, 0, 0, 0, 0, 0, 146, 147,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 169, 170, 171, 172, 0, 174, 175, 176, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 187, 188, 0, 0, 191, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 206, 207, 208, 209, 210, 211, 212,
+ 213, 3, 0, 0, 0, 218, 219, 0, 0, 4,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 955, 0, 0, 0, 0, 0, 0, 0, 0, 410,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 21, 0,
+ 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 220, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 957, 958, 959, 960, 961, 962, 963,
+ 964, 965, 0, 0, 46, 47, 48, 0, 50, 0,
+ 51, 0, 956, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 66, 0, 68, 69,
+ 0, 0, 72, 0, 0, 0, 76, 77, 78, 0,
+ 80, 81, 82, 0, 0, 85, 0, 0, 0, 89,
+ 0, 0, 0, 93, 94, 95, 0, 0, 98, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 108, 109,
+ 0, 0, 0, 0, 0, 0, 0, 116, 0, 118,
+ 0, 0, 121, 122, 0, 0, 0, 0, 0, 0,
+ 0, 966, 0, 231, 232, 233, 967, 235, 1505, 0,
+ 968, 0, 0, 0, 0, 0, 0, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 170, 171, 172, 0, 174, 175, 176, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
+ 188, 0, 0, 191, 0, 0, 0, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 3, 0, 0, 0, 218, 219, 0, 0, 4, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 955,
+ 0, 0, 0, 0, 0, 0, 0, 0, 410, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
+ 0, 24, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 220, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 957, 958, 959, 960, 961, 962, 963, 964,
+ 965, 0, 0, 46, 47, 48, 0, 50, 0, 51,
+ 0, 956, 54, 55, 56, 57, 58, 59, 60, 61,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 66, 0, 68, 69, 0,
+ 0, 72, 0, 0, 0, 76, 77, 78, 0, 80,
+ 81, 82, 0, 0, 85, 0, 0, 0, 89, 0,
+ 0, 0, 93, 94, 95, 0, 0, 98, 0, 0,
+ 0, 0, 0, 0, 0, 0, 107, 108, 109, 0,
+ 0, 0, 0, 0, 0, 0, 116, 0, 118, 0,
+ 0, 121, 122, 0, 0, 0, 0, 0, 0, 0,
+ 966, 0, 231, 232, 233, 967, 235, 0, 0, 968,
+ 0, 0, 0, 0, 0, 0, 146, 147, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 415, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 416, 417, 418, 419, 420,
+ 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
+ 431, 432, 433, 434, 435, 436, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 169,
+ 170, 171, 172, 0, 174, 175, 176, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 0, 0, 191, 0, 0, 0, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 437, 0, 0, 0, 0,
+ 3, 0, 0, 0, 0, 0, 0, 0, 4, 0,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 5,
+ 0, 0, 0, 218, 219, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,
+ 8, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 0, 0, 0, 0, 0, 0, 0, 0, 10, 0,
+ 0, 0, 0, 11, 12, 0, 13, 14, 15, 16,
+ 17, 18, 19, 20, 0, 0, 0, 21, 0, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+ 0, 0, 0, 438, 0, 43, 44, 0, 0, 45,
+ 0, 220, 0, 46, 47, 48, 49, 50, 0, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 0, 439, 440, 441, 442, 443, 444, 0, 446, 447,
+ 448, 0, 449, 450, 451, 452, 0, 0, 0, 0,
+ 0, 62, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
+ 0, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 0, 966,
+ 0, 231, 232, 233, 967, 235, 0, 0, 968, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 148, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 0, 178,
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
+ 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
+ 199, 200, 201, 202, 203, 204, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 205, 0, 0, 0,
+ 0, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 689, 690, 691, 692, 693,
+ 694, 695, 696, 697, 698, 699, 700, 701, 702, 703,
+ 704, 705, 706, 707, 708, 709, 710, 711, 712, 713,
+ 714, 715, 716, 717, 718, 719, 720, 721, 722, 723,
+ 724, 725, 726, 727, 728, 729, 730, 731, 732, 733,
+ 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
+ 744, 745, 746, 747, 748, 749, 750, 0, 751, 752,
+ 753, 754, 755, 756, 757, 758, 759, 760, 761, 762,
+ 763, 764, 765, 766, 767, 768, 769, 0, 770, 771,
+ 772, 220, 221, 0, 0, 0, 0, 0, 0, 0,
+ 222, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 223, 0, 224, 225,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 226, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 7, 8,
+ 0, 0, 0, 0, 0, 227, 228, 229, 9, 773,
+ 0, 231, 232, 233, 234, 235, 0, 10, 616, 479,
+ 0, 0, 11, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 20, 0, 0, 0, 21, 0, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 0, 43, 44, 0, 0, 45, 0,
+ 0, 0, 46, 47, 48, 49, 50, 0, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 0, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 4,
+ 220, 221, 0, 0, 0, 0, 0, 0, 0, 222,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, 0, 0, 0, 0, 223, 0, 224, 225, 868,
+ 616, 479, 0, 0, 11, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 20, 0, 0, 226, 21, 0,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 0, 43, 44, 0, 0,
+ 45, 0, 0, 0, 46, 47, 48, 49, 50, 0,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 227, 228, 229, 0, 404, 0,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 0,
+ 0, 0, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 0, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 148, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 4, 220, 221, 0, 0, 0, 0, 0, 0,
+ 0, 222, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 223, 0, 224,
+ 225, 10, 0, 0, 0, 0, 11, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 20, 0, 0, 226,
+ 21, 0, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 0, 43, 44,
+ 0, 0, 45, 0, 0, 0, 46, 47, 48, 49,
+ 50, 0, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 227, 228, 229, 0,
+ 404, 0, 231, 232, 233, 234, 235, 0, 0, 0,
+ 0, 0, 0, 0, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 0, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 0, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 4, 220, 221, 0, 0, 0, 0,
+ 0, 0, 0, 222, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 7, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 0, 223,
+ 0, 224, 225, 10, 0, 0, 0, 0, 11, 12,
+ 0, 13, 14, 15, 16, 17, 18, 19, 20, 0,
+ 0, 226, 21, 0, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 0, 0, 0, 0, 0,
+ 43, 44, 0, 0, 45, 0, 0, 0, 46, 47,
+ 48, 49, 50, 0, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 227, 228,
+ 229, 0, 404, 989, 231, 232, 233, 234, 235, 0,
+ 0, 0, 0, 0, 0, 0, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 0, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 0, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 205, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 4, 220, 221, 0, 0,
+ 0, 0, 0, 0, 0, 222, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 223, 0, 224, 225, 10, 0, 0, 0, 0,
+ 11, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 20, 0, 0, 226, 21, 0, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 0, 43, 44, 0, 0, 45, 0, 0, 0,
+ 46, 47, 48, 49, 50, 0, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 227, 228, 229, 0, 404, 1097, 231, 232, 233, 234,
+ 235, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 0, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 0, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 205, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 4, 220, 221,
+ 0, 0, 0, 0, 0, 0, 0, 222, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 7, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
+ 0, 0, 0, 223, 0, 224, 225, 10, 0, 0,
+ 0, 0, 11, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 20, 0, 0, 226, 21, 0, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 0, 43, 44, 0, 0, 45, 0,
+ 0, 0, 46, 47, 48, 49, 50, 0, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 227, 228, 229, 0, 404, 1248, 231, 232,
+ 233, 234, 235, 0, 0, 0, 0, 0, 0, 0,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 0, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 205, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 4,
+ 220, 221, 0, 0, 0, 0, 0, 0, 0, 222,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, 0, 0, 0, 0, 223, 0, 224, 225, 10,
+ 0, 0, 0, 0, 11, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 20, 0, 0, 226, 21, 0,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 0, 43, 44, 0, 0,
+ 45, 0, 0, 0, 46, 47, 48, 49, 50, 0,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 227, 228, 229, 0, 230, 0,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 0,
+ 0, 0, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 0, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 148, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 4, 220, 221, 0, 0, 0, 0, 0, 0,
+ 0, 222, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 403, 0, 0, 0, 0, 223, 0, 224,
+ 225, 10, 0, 0, 0, 0, 11, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 20, 0, 0, 226,
+ 21, 0, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 0, 43, 44,
+ 0, 0, 45, 0, 0, 0, 46, 47, 48, 49,
+ 50, 0, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 227, 228, 229, 0,
+ 399, 0, 231, 232, 233, 234, 235, 0, 0, 0,
+ 0, 0, 0, 0, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 0, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 0, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 4, 220, 221, 0, 0, 0, 0,
+ 0, 0, 0, 222, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 7, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 9, 0, 0, 0, 0, 223,
+ 0, 224, 225, 10, 0, 0, 0, 0, 11, 12,
+ 0, 13, 14, 15, 16, 17, 18, 19, 20, 0,
+ 0, 226, 21, 0, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 0, 0, 0, 0, 0,
+ 43, 44, 0, 0, 45, 0, 0, 0, 46, 47,
+ 48, 49, 50, 0, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 227, 228,
+ 229, 0, 404, 0, 231, 232, 233, 234, 235, 0,
+ 0, 0, 0, 0, 0, 0, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 0, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 0, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 205, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 4, 220, 221, 0, 0,
+ 0, 0, 0, 0, 0, 222, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 223, 0, 224, 225, 10, 0, 0, 0, 0,
+ 11, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 20, 0, 0, 226, 21, 0, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 0, 43, 44, 0, 0, 45, 0, 0, 0,
+ 46, 47, 48, 49, 50, 0, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 227, 228, 229, 0, 404, 0, 231, 232, 233, 234,
+ 235, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 0, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 0, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 205, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
+ 0, 0, 0, 0, 0, 0, 0, 4, 220, 221,
+ 0, 0, 0, 0, 0, 0, 0, 222, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 6, 7, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 593, 0,
+ 0, 0, 0, 223, 0, 224, 225, 10, 0, 0,
+ 0, 0, 11, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 20, 0, 0, 226, 21, 0, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 0,
+ 0, 0, 0, 0, 43, 44, 0, 0, 45, 0,
+ 0, 0, 46, 47, 48, 49, 50, 0, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 227, 228, 229, 0, 591, 0, 231, 232,
+ 233, 234, 235, 0, 0, 0, 0, 0, 0, 0,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 0,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 0, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 205, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 3, 0, 0, 0, 0, 0, 0, 0, 4,
+ 220, 221, 0, 0, 0, 0, 0, 0, 0, 222,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
+ 7, 8, 0, 0, 0, 0, 0, 0, 0, 0,
+ 9, 0, 0, 0, 0, 223, 0, 224, 225, 10,
+ 0, 0, 0, 0, 11, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 20, 0, 0, 226, 21, 0,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 0, 0, 0, 0, 0, 43, 44, 0, 0,
+ 45, 0, 0, 0, 46, 47, 48, 49, 50, 0,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 0, 0, 0, 227, 228, 229, 0, 404, 0,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 0,
+ 0, 0, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 0, 111, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 148, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
+ 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 205, 0, 0,
+ 0, 0, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 4, 220, 221, 0, 0, 0, 0, 0, 0,
+ 0, 222, 5, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 6, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 849, 0, 0, 0, 0, 223, 0, 224,
+ 225, 10, 0, 0, 0, 0, 11, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 20, 0, 0, 226,
+ 21, 0, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 0, 0, 0, 0, 0, 43, 44,
+ 0, 0, 45, 0, 0, 0, 46, 47, 48, 49,
+ 50, 0, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 227, 228, 229, 0,
+ 845, 0, 231, 232, 233, 234, 235, 0, 0, 0,
+ 0, 0, 0, 0, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 0, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 0, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+ 0, 0, 0, 4, 220, 221, 0, 0, 0, 0,
+ 0, 0, 0, 222, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 6, 7, 8, 0, 0, 0, 0,
+ 0, 0, 0, 0, 853, 0, 0, 0, 0, 223,
+ 0, 224, 225, 10, 0, 0, 0, 0, 11, 12,
+ 0, 13, 14, 15, 16, 17, 18, 19, 20, 0,
+ 0, 226, 21, 0, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 0, 0, 0, 0, 0,
+ 43, 44, 0, 0, 45, 0, 0, 0, 46, 47,
+ 48, 49, 50, 0, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, 61, 0, 0, 0, 227, 228,
+ 229, 0, 404, 0, 231, 232, 233, 234, 235, 0,
+ 0, 0, 0, 0, 0, 0, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 0, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 148,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 0, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 205, 0, 0, 0, 0, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 4, 220, 221, 0, 0,
+ 0, 0, 0, 0, 0, 222, 5, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1113, 0, 0, 0,
+ 0, 223, 0, 224, 225, 10, 0, 0, 0, 0,
+ 11, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 20, 0, 0, 226, 21, 0, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 0, 0, 0,
+ 0, 0, 43, 44, 0, 0, 45, 0, 0, 0,
+ 46, 47, 48, 49, 50, 0, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 227, 228, 229, 0, 404, 0, 231, 232, 233, 234,
+ 235, 0, 0, 0, 0, 0, 0, 0, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 0, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 143, 144, 145, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 0, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 205, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 815,
+ 0, 816, 21, 0, 0, 0, 0, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 0,
+ 0, 0, 0, 0, 0, 0, 470, 471, 472, 473,
+ 0, 0, 474, 475, 0, 476, 0, 0, 0, 3,
+ 0, 49, 0, 0, 0, 52, 0, 4, 220, 221,
+ 0, 0, 0, 0, 0, 0, 0, 222, 5, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 7, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
+ 0, 0, 0, 223, 0, 224, 225, 410, 616, 479,
+ 0, 0, 411, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 226, 21, 0, 0, 0,
+ 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 37, 38, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 46, 47, 48, 0, 50, 0, 51, 0,
+ 53, 54, 55, 56, 57, 58, 59, 60, 61, 0,
+ 0, 0, 227, 228, 229, 0, 404, 0, 231, 232,
+ 233, 234, 235, 0, 0, 0, 0, 0, 0, 0,
+ 62, 63, 64, 65, 66, 67, 68, 69, 0, 0,
+ 72, 0, 0, 0, 76, 77, 78, 79, 80, 81,
+ 82, 0, 84, 85, 86, 87, 0, 89, 0, 0,
+ 0, 93, 94, 95, 0, 0, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 0, 0,
+ 111, 112, 113, 114, 115, 116, 0, 118, 192, 0,
+ 121, 122, 0, 0, 125, 126, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 0, 0, 0, 146, 147, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 148, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 170,
+ 171, 172, 0, 174, 175, 176, 0, 0, 178, 0,
+ 0, 181, 182, 183, 184, 185, 0, 187, 188, 189,
+ 190, 191, 0, 0, 0, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 557, 558, 559,
+ 560, 561, 0, 0, 0, 562, 563, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 564, 565, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 220, 221, 0, 0, 0, 0, 0, 5, 0, 222,
+ 0, 0, 0, 0, 0, 0, 231, 232, 233, 234,
+ 235, 0, 0, 0, 0, 0, 0, 7, 8, 0,
+ 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
+ 0, 0, 0, 0, 0, 223, 410, 224, 225, 0,
+ 0, 411, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 21, 0, 226, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 37, 38, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 46, 47, 48, 0, 50, 0, 51, 0, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
+ 0, 0, 0, 0, 227, 228, 229, 0, 412, 0,
+ 231, 232, 233, 234, 235, 0, 0, 0, 0, 62,
+ 63, 64, 65, 66, 67, 68, 69, 0, 0, 72,
+ 0, 0, 0, 76, 77, 78, 79, 80, 81, 82,
+ 0, 84, 85, 86, 87, 0, 89, 0, 0, 0,
+ 93, 94, 95, 0, 0, 98, 99, 100, 101, 102,
+ 103, 104, 105, 106, 107, 108, 109, 0, 0, 111,
+ 112, 113, 114, 115, 116, 0, 118, 0, 0, 121,
+ 122, 0, 0, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 0, 0, 0, 146, 147, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 148, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 170, 171,
+ 172, 0, 174, 175, 176, 0, 0, 178, 0, 0,
+ 181, 182, 183, 184, 185, 0, 187, 188, 189, 190,
+ 191, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 204, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 205, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 0, 0, 0, 0, 220,
+ 221, 0, 5, 0, 0, 0, 0, 0, 222, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
+ 0, 410, 0, 0, 223, 0, 224, 225, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 21, 0, 0, 0, 24, 0, 226, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 37, 38, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 46, 47, 48, 0,
+ 50, 0, 51, 0, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 227, 228, 229, 0, 412, 0, 231,
+ 232, 233, 234, 235, 62, 63, 64, 65, 66, 67,
+ 68, 69, 0, 0, 72, 0, 0, 0, 76, 77,
+ 78, 79, 80, 81, 82, 0, 84, 85, 86, 87,
+ 0, 89, 0, 0, 0, 93, 94, 95, 0, 0,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 0, 0, 111, 112, 113, 114, 115, 116,
+ 0, 118, 0, 0, 121, 122, 0, 0, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 0, 0, 0, 146,
+ 147, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 148, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 170, 171, 172, 0, 174, 175, 176,
+ 0, 0, 178, 0, 0, 181, 182, 183, 184, 185,
+ 0, 187, 188, 189, 190, 191, 0, 0, 0, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ 4, 0, 0, 0, 220, 221, 0, 0, 0, 0,
+ 0, 583, 0, 222, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 7, 8, 0, 0, 0, 0, 0, 0, 0,
+ 0, 9, 0, 0, 0, 0, 0, 0, 0, 223,
+ 410, 224, 225, 382, 383, 411, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 21,
+ 0, 226, 0, 24, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 37, 38, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 46, 47, 48, 0, 50,
+ 0, 51, 0, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 0, 0, 0, 0, 0, 0, 227, 228,
+ 229, 0, 412, 0, 231, 232, 233, 234, 235, 0,
+ 0, 0, 0, 62, 63, 64, 65, 66, 67, 68,
+ 69, 0, 0, 72, 0, 0, 0, 76, 77, 78,
+ 79, 80, 81, 82, 0, 84, 85, 86, 87, 0,
+ 89, 0, 0, 0, 93, 94, 95, 0, 0, 98,
+ 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
+ 109, 0, 0, 111, 112, 113, 114, 115, 116, 0,
+ 118, 0, 0, 121, 122, 0, 0, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 0, 0, 0, 146, 147,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 148, 0, 0, 0,
+ 584, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 169, 170, 171, 172, 0, 174, 175, 176, 0,
+ 0, 178, 0, 0, 181, 182, 183, 184, 185, 0,
+ 187, 188, 189, 190, 191, 0, 0, 0, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+ 0, 0, 0, 220, 221, 0, 5, 0, 0, 0,
+ 0, 0, 222, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 7, 8, 0, 0,
+ 0, 0, 0, 0, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 410, 0, 0, 223, 0,
+ 224, 225, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 21, 0, 0, 0, 24, 0,
+ 226, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 37, 38, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 46, 47, 48, 0, 50, 0, 51, 0, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 227, 228, 229,
+ 0, 412, 0, 231, 232, 233, 234, 235, 62, 63,
+ 64, 65, 66, 67, 68, 69, 0, 0, 72, 0,
+ 0, 0, 76, 77, 78, 79, 80, 81, 82, 0,
+ 84, 85, 86, 87, 0, 89, 0, 0, 0, 93,
+ 94, 95, 0, 0, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 0, 0, 111, 112,
+ 113, 114, 115, 116, 0, 118, 0, 0, 121, 122,
+ 0, 0, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
+ 0, 0, 0, 146, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 148, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 170, 171, 172,
+ 0, 174, 175, 176, 0, 0, 178, 0, 0, 181,
+ 182, 183, 184, 185, 0, 187, 188, 189, 190, 191,
+ 0, 0, 0, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
+ 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
+ 0, 0, 47, 48, 0, 50, 0, 51, 220, 221,
+ 0, 0, 0, 0, 0, 0, 0, 222, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 955, 0, 0,
+ 0, 0, 0, 0, 0, 68, 410, 0, 0, 72,
+ 0, 0, 0, 223, 0, 224, 225, 0, 81, 82,
+ 0, 0, 85, 0, 0, 21, 89, 0, 0, 24,
+ 93, 94, 0, 0, 0, 226, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 108, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 118, 0, 0, 121,
+ 0, 46, 47, 48, 0, 50, 0, 51, 0, 956,
+ 54, 55, 56, 57, 58, 59, 60, 61, 0, 0,
+ 0, 0, 0, 0, 0, 147, 0, 0, 0, 0,
+ 0, 0, 227, 228, 229, 0, 412, 0, 231, 232,
+ 233, 234, 235, 66, 0, 68, 69, 0, 0, 72,
+ 0, 0, 0, 76, 77, 78, 0, 80, 81, 82,
+ 0, 0, 85, 0, 0, 0, 89, 0, 0, 0,
+ 93, 94, 95, 0, 0, 98, 0, 0, 0, 0,
+ 0, 0, 0, 0, 107, 108, 109, 0, 170, 171,
+ 172, 0, 1091, 175, 116, 0, 118, 0, 0, 121,
+ 122, 0, 0, 0, 0, 0, 187, 0, 0, 0,
+ 191, 0, 0, 0, 0, 0, 0, 0, 199, 200,
+ 201, 0, 0, 0, 146, 147, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 0, 212, 213, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 170, 171,
+ 172, 0, 174, 175, 176, 0, 0, 1234, 0, 0,
+ 0, 1234, 0, 0, 0, 0, 187, 188, 1234, 0,
+ 191, 0, 0, 0, 195, 196, 197, 198, 199, 200,
+ 201, 202, 203, 0, 0, 955, 0, 0, 0, 0,
+ 0, 0, 0, 0, 410, 0, 0, 0, 0, 206,
+ 207, 208, 209, 210, 211, 212, 213, 0, 0, 0,
+ 0, 218, 219, 21, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,
+ 0, 0, 0, 0, 0, 0, 0, 956, 54, 55,
+ 56, 57, 58, 59, 60, 61, 0, 0, 0, 0,
+ 0, 0, 0, 1234, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 66, 0, 0, 69, 0, 0, 0, 1234, 220,
+ 0, 76, 77, 78, 0, 80, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1342, 0, 1342, 1234, 0, 0,
+ 95, 0, 0, 98, 0, 0, 0, 1342, 0, 0,
+ 0, 0, 107, 0, 109, 0, 0, 0, 0, 0,
+ 0, 0, 116, 0, 0, 0, 0, 0, 122, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 146, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1091, 1091, 1091, 0, 0, 0, 0,
+ 0, 1342, 1342, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1234, 0, 0,
+ 0, 0, 0, 0, 0, 1342, 0, 966, 1243, 231,
+ 232, 233, 234, 235, 0, 169, 0, 0, 0, 0,
+ 174, 0, 176, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 188, 0, 0, 1091, 0,
+ 0, 0, 195, 196, 197, 198, 1342, 1234, 0, 202,
+ 203, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0,
+ 0, 1091, 211, 0, 1342, 0, 0, 0, 0, 218,
+ 219, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1091, 1091, 1091, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 936, 0, 0, 0, 0, 220, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -700, 0, 0, 0, 0, 0, 1091, 0, 0,
+ 0, 0, 0, 387, 388, 389, 390, 391, 392, 393,
+ 394, 0, 0, 0, 0, 1091, 0, -700, 0, -700,
+ -700, -700, -700, -700, -700, -700, -700, 0, 0, 0,
+ 0, 0, -700, -700, 0, -700, -700, -700, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, 0, 0, -700,
+ -700, -700, -700, 0, 0, 0, 0, 0, -700, -700,
+ 0, 0, -700, 0, 0, 0, 0, 0, 0, -700,
+ 0, 0, 0, -700, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 231, 232, 233,
+ 234, 235, -700, -700, 0, -700, -700, -700, 0, 0,
+ 0, 0, 0, 0, 0, -700, 0, 0, 0, 0,
+ -700, 0, -700, -700, -700, 0, 0, 0, -700, -700,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -700, 0, 0, 0, 0, 0, 0, 0,
+ -700, 0, -700, -700, 0, 0, -700, -700, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -700, -700, -700, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -700, -700, -700, -700, -700, -700, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, -700, -700, -700,
+ -700, -700, 0, 0, 0, 0, -700, 0, 0, 0,
+ -700, 0, 0, -700, -700, 0, 0, 0, 0, 0,
+ -700, 0, -700, 0, 0, 0, -700, -700, -700, 0,
+ 0, 0, 0, 0, 387, 388, 389, 390, 391, 392,
+ 393, 394, 0, 0, 0, 0, 0, 0, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, -700, 0, 0,
+ 0, 0, 0, -700, -700, 0, -700, -700, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, -700, 0, 0,
+ -700, -700, -700, -700, 0, 0, 0, 0, 0, -700,
+ -700, 0, 0, -700, 0, 0, 0, 0, 0, 0,
+ -700, 0, 0, 0, -700, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -700, -700, 0, -700, -700, -700, 0,
+ 0, 0, 0, 0, 0, 0, -700, 0, 0, 0,
+ 0, -700, 0, -700, -700, -700, 0, 0, 0, -700,
+ -700, 0, 0, 0, 0, 0, 6, 0, 0, 0,
+ 0, 0, 0, -700, 0, 0, 0, 0, 0, 0,
+ 0, -700, 0, -700, -700, 0, 406, -700, -700, 0,
+ 0, 407, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -700, -700, -700,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 39, 40, 41, 42, 0, 0,
+ 0, 0, 0, 43, 44, 0, 0, 45, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -700, -700, -700, -700, -700, -700, -700,
+ -700, -700, -700, -700, -700, -700, -700, -700, -700, -700,
+ -700, -700, -700, -700, 0, 0, 0, -700, 0, 0,
+ 0, -700, 0, 0, -700, -700, 0, 0, 0, 0,
+ 0, -700, 0, 0, 0, 4, 0, -700, -700, -700,
+ 83, 0, 0, 0, 0, 88, 0, 90, 91, 92,
+ 0, 0, 0, 96, 97, 0, 0, 0, 0, 0,
+ -700, 0, 0, 0, 0, 6, 7, 110, 0, 1534,
+ 0, 0, 0, 0, 0, 117, 0, 119, 0, 0,
+ 0, 123, 124, 0, 0, 406, 0, 0, 0, 0,
+ 407, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 20, 0, 0, 0, 0, 0, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 0, 0, 39, 40, 41, 42, 0, 0, 0,
+ 0, 0, 43, 44, 0, 0, 45, 0, 0, 0,
+ 0, 47, 48, 49, 50, 0, 51, 52, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 173, 0, 0, 0, 177, 0, 0, 179, 180,
+ 0, 0, 0, 0, 68, 186, 70, 71, 72, 73,
+ 74, 75, 193, 194, 0, 0, 0, 81, 82, 83,
+ 0, 85, 0, 0, 88, 89, 90, 91, 92, 93,
+ 94, 0, 96, 97, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 0, 108, 0, 110, 0, 0, 0,
+ 0, 0, 0, 0, 117, 118, 119, 120, 121, 0,
+ 123, 124, 406, 0, 0, 0, 0, 407, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 143, 144, 145, 0, 147, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 39, 40, 41, 42, 0, 0, 0, 0, 0, 43,
+ 44, 0, 0, 45, -700, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 149, 150, 151, 152,
+ 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 0, 170, 171, 172,
+ 173, 0, 175, 0, 177, 0, 0, 179, 180, 0,
+ 0, 0, 0, 0, 186, 187, 0, 0, 0, 191,
+ 192, 193, 194, 0, 0, 0, 83, 199, 200, 201,
+ 0, 88, 0, 90, 91, 92, 0, 0, 0, 96,
+ 97, 0, 0, 0, 0, 0, 0, 0, 206, 207,
+ 208, 209, 210, 110, 212, 213, 0, 0, 0, 0,
+ 0, 117, 0, 119, 0, 0, 0, 123, 124, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 408, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 165,
+ 166, 167, 168, 0, 0, 0, 0, 173, 0, 0,
+ 0, 177, 0, 0, 179, 180, 0, 0, 0, 0,
+ 0, 186, 0, 0, 0, 0, 0, 0, 193, 194
+};
+
+static const short yycheck[] = { 4,
+ 277, 6, 7, 8, 255, 258, 1, 12, 271, 1,
+ 251, 250, 257, 250, 251, 11, 255, 22, 23, 24,
+ 253, 5, 241, 257, 37, 38, 39, 80, 22, 271,
+ 272, 776, 37, 38, 572, 572, 6, 271, 239, 244,
+ 80, 572, 47, 48, 49, 50, 51, 52, 37, 38,
+ 39, 456, 457, 458, 459, 242, 967, 62, 63, 64,
+ 65, 285, 67, 68, 252, 70, 71, 72, 73, 74,
+ 75, 802, 983, 617, 618, 782, 81, 82, 83, 84,
+ 85, 86, 87, 500, 89, 50, 581, 582, 93, 94,
+ 270, 96, 97, 457, 458, 782, 101, 1237, 524, 104,
+ 105, 80, 32, 33, 34, 35, 36, 112, 113, 114,
+ 115, 688, 399, 239, 258, 80, 121, 404, 567, 685,
+ 125, 687, 251, 128, 129, 412, 255, 4, 5, 3,
+ 103, 8, 137, 10, 844, 140, 141, 142, 430, 9,
+ 464, 114, 115, 148, 149, 150, 151, 381, 1473, 275,
+ 80, 568, 157, 4, 5, 582, 582, 8, 450, 10,
+ 384, 456, 457, 458, 459, 170, 171, 293, 173, 1309,
+ 1495, 473, 474, 475, 179, 180, 320, 321, 1080, 455,
+ 80, 414, 187, 402, 364, 1087, 191, 192, 193, 194,
+ 1283, 196, 397, 910, 199, 1517, 913, 582, 915, 400,
+ 649, 206, 207, 208, 500, 119, 482, 212, 213, 123,
+ 22, 1149, 1150, 1535, 1152, 466, 1154, 1155, 469, 582,
+ 455, 626, 627, 258, 465, 488, 582, 466, 465, 1174,
+ 467, 266, 267, 940, 639, 1175, 1176, 583, 643, 119,
+ 517, 224, 225, 123, 485, 484, 488, 482, 481, 1389,
+ 455, 82, 83, 940, 488, 99, 100, 101, 102, 434,
+ 435, 63, 626, 120, 108, 109, 508, 121, 112, 1362,
+ 396, 1364, 398, 463, 400, 1368, 281, 482, 602, 603,
+ 468, 589, 606, 22, 592, 587, 588, 582, 463, 591,
+ 1192, 460, 258, 1233, 279, 1235, 515, 0, 264, 265,
+ 524, 80, 285, 286, 591, 1398, 1246, 290, 291, 254,
+ 428, 429, 430, 431, 583, 1217, 1026, 1027, 1229, 583,
+ 864, 439, 440, 441, 442, 443, 444, 583, 1045, 476,
+ 477, 478, 277, 583, 1236, 1404, 1429, 583, 572, 916,
+ 469, 617, 582, 619, 1289, 1290, 912, 623, 1417, 625,
+ 1419, 575, 576, 1298, 1299, 1475, 485, 1477, 589, 62,
+ 63, 592, 638, 582, 589, 310, 642, 592, 587, 22,
+ 1310, 1311, 1441, 592, 473, 474, 475, 382, 383, 1499,
+ 656, 103, 1502, 574, 162, 163, 619, 462, 623, 167,
+ 625, 589, 114, 115, 592, 646, 78, 648, 510, 511,
+ 512, 258, 385, 638, 1344, 583, 647, 642, 403, 1478,
+ 415, 403, 617, 618, 619, 953, 953, 658, 623, 389,
+ 625, 656, 953, 598, 599, 600, 601, 432, 433, 583,
+ 617, 436, 6, 638, 1336, 213, 655, 642, 389, 384,
+ 445, 386, 591, 448, 591, 1385, 591, 452, 1179, 1180,
+ 61, 656, 63, 398, 572, 37, 22, 39, 1396, 591,
+ 317, 318, 592, 503, 504, 322, 591, 1044, 462, 1046,
+ 645, 591, 877, 1413, 40, 591, 476, 477, 478, 479,
+ 480, 481, 583, 523, 1386, 51, 487, 488, 489, 490,
+ 495, 496, 591, 1476, 1477, 583, 501, 502, 503, 65,
+ 461, 506, 255, 256, 257, 510, 511, 583, 513, 514,
+ 582, 388, 630, 631, 632, 633, 634, 635, 1501, 47,
+ 1503, 49, 527, 528, 529, 530, 531, 532, 281, 583,
+ 522, 584, 585, 586, 587, 588, 589, 388, 389, 1284,
+ 1285, 1599, 525, 1601, 584, 585, 586, 587, 588, 582,
+ 1475, 1476, 582, 558, 591, 560, 561, 591, 845, 564,
+ 565, 67, 68, 267, 583, 799, 22, 1557, 1558, 7,
+ 1301, 584, 517, 1498, 582, 1500, 1556, 1557, 582, 524,
+ 7, 526, 165, 166, 1161, 1575, 582, 1577, 864, 572,
+ 535, 591, 1572, 869, 1574, 584, 583, 873, 593, 583,
+ 876, 593, 878, 503, 504, 584, 585, 586, 587, 588,
+ 591, 556, 888, 476, 477, 478, 479, 480, 481, 584,
+ 585, 586, 587, 588, 4, 5, 67, 68, 8, 864,
+ 10, 636, 637, 578, 579, 583, 869, 583, 873, 584,
+ 583, 876, 591, 878, 591, 1376, 651, 652, 653, 1380,
+ 510, 511, 512, 888, 584, 585, 586, 587, 588, 864,
+ 67, 68, 667, 668, 869, 670, 671, 591, 873, 674,
+ 675, 876, 583, 878, 1116, 1117, 1407, 1408, 1409, 241,
+ 806, 686, 1124, 888, 584, 585, 586, 587, 588, 7,
+ 1556, 582, 1558, 970, 1136, 587, 588, 1139, 703, 591,
+ 149, 150, 7, 1434, 153, 710, 711, 1573, 583, 1151,
+ 1576, 716, 99, 100, 101, 102, 583, 843, 844, 953,
+ 7, 108, 109, 582, 1455, 112, 513, 514, 591, 734,
+ 11, 736, 21, 678, 739, 740, 583, 742, 582, 503,
+ 504, 746, 747, 583, 749, 750, 583, 455, 67, 68,
+ 755, 756, 757, 41, 42, 43, 761, 762, 583, 764,
+ 1036, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ 499, 990, 501, 502, 482, 1506, 1053, 1054, 62, 63,
+ 775, 565, 566, 775, 776, 37, 38, 39, 793, 794,
+ 795, 796, 797, 798, 1525, 499, 20, 501, 502, 782,
+ 1019, 1036, 583, 582, 809, 584, 585, 586, 587, 588,
+ 583, 1088, 272, 273, 1256, 1257, 1258, 802, 27, 824,
+ 825, 826, 827, 828, 829, 830, 831, 832, 833, 834,
+ 582, 1036, 47, 48, 49, 953, 38, 39, 582, 784,
+ 785, 846, 571, 572, 573, 583, 575, 576, 37, 38,
+ 582, 580, 24, 25, 849, 48, 49, 849, 853, 804,
+ 583, 853, 988, 456, 457, 458, 459, 571, 572, 573,
+ 582, 575, 576, 584, 577, 22, 580, 1096, 823, 28,
+ 583, 482, 483, 484, 485, 486, 589, 26, 591, 592,
+ 582, 896, 897, 898, 374, 375, 376, 377, 903, 904,
+ 1026, 1027, 529, 530, 531, 532, 533, 534, 535, 914,
+ 582, 619, 47, 48, 584, 623, 39, 625, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 638, 38, 37, 64, 642, 29, 583, 583, 1115, 32,
+ 33, 34, 35, 36, 939, 242, 1123, 939, 656, 954,
+ 46, 1128, 119, 250, 1131, 252, 123, 940, 1135, 44,
+ 582, 258, 582, 30, 261, 262, 263, 264, 265, 583,
+ 953, 268, 269, 81, 22, 22, 1153, 584, 236, 237,
+ 238, 31, 967, 48, 47, 49, 971, 992, 993, 994,
+ 23, 583, 23, 104, 105, 106, 107, 942, 983, 110,
+ 111, 984, 113, 584, 1009, 1010, 584, 1012, 1013, 1014,
+ 1015, 1016, 1017, 1018, 67, 583, 69, 70, 71, 72,
+ 73, 74, 75, 76, 282, 970, 284, 285, 286, 287,
+ 288, 289, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 283, 1171, 583, 583, 583, 0,
+ 0, 290, 291, 292, 293, 294, 295, 296, 297, 1366,
+ 1065, 1066, 1067, 1608, 1512, 1472, 119, 1050, 1051, 1288,
+ 123, 525, 526, 527, 528, 529, 530, 531, 532, 533,
+ 534, 535, 1466, 1535, 1261, 1535, 1561, 1578, 1595, 1266,
+ 1267, 1076, 244, 414, 863, 1080, 1101, 1102, 1103, 1084,
+ 619, 869, 1087, 243, 244, 258, 246, 1052, 248, 249,
+ 269, 251, 462, 457, 1119, 457, 1121, 1122, 1113, 457,
+ 1125, 1113, 293, 969, 799, 835, 266, 953, 778, 379,
+ 270, 554, 1137, 1138, 802, -1, 276, 277, 278, 279,
+ 280, 803, 1084, 1088, 67, -1, 69, 70, 71, 72,
+ 73, 74, 75, 76, -1, -1, 864, -1, -1, 326,
+ -1, 869, -1, -1, -1, 873, 67, 68, 876, -1,
+ 878, 72, 73, 74, 75, 76, -1, -1, -1, -1,
+ 888, 67, 68, 1188, 1189, 1190, 72, 73, 74, 75,
+ 76, -1, -1, -1, 1179, 1180, 121, -1, -1, 1184,
+ 515, 516, 517, 518, 519, 520, -1, 1192, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, -1,
+ -1, -1, 1217, 1238, 1239, 1240, 1241, 515, 516, 517,
+ 518, 519, 520, -1, 1229, -1, -1, -1, 1233, -1,
+ 1235, 1236, 1237, 53, 54, 55, 56, 57, 58, 59,
+ 60, 1246, -1, -1, 1517, 1590, 1591, 1592, 1593, 1594,
+ -1, -1, 1517, 326, -1, -1, -1, -1, 1517, 1542,
+ 1517, -1, 1535, 1517, -1, -1, 1269, 1270, 1539, 1566,
+ 1535, -1, 1284, 1285, -1, -1, 1535, 1538, 1535, 967,
+ 1542, 1535, -1, 971, 527, 528, 529, 530, 531, 532,
+ 533, 534, 535, -1, -1, 983, 1301, 1302, 1303, 1304,
+ -1, -1, -1, -1, 1309, 1310, 1311, -1, 1036, -1,
+ -1, -1, -1, -1, -1, -1, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ -1, 1336, -1, -1, -1, 104, 105, 106, 107, 1344,
+ 1365, 110, 111, -1, 113, -1, -1, -1, -1, -1,
+ 119, -1, -1, -1, 123, 1370, 1371, -1, 1370, 1371,
+ -1, -1, -1, -1, -1, -1, -1, 1392, -1, -1,
+ -1, 1376, 1377, -1, -1, 1380, -1, -1, -1, -1,
+ 1385, 1386, -1, -1, 1389, -1, -1, -1, 1076, -1,
+ -1, -1, 1080, -1, -1, -1, 1084, -1, -1, 1087,
+ 1405, -1, 1407, 1408, 1409, 1410, -1, -1, 1413, 491,
+ 492, 493, 494, 495, 496, 497, 498, -1, 1443, 491,
+ 492, 493, 494, 495, 496, 497, 498, -1, -1, 1434,
+ 1435, 1436, 1437, -1, -1, -1, 1461, -1, -1, -1,
+ -1, -1, -1, -1, 1469, 1470, 1471, -1, -1, -1,
+ 1455, 1456, 491, 492, 493, 494, 495, 496, 497, 498,
+ -1, 1486, 1487, 1488, 491, 492, 493, 494, 495, 496,
+ 497, 498, -1, -1, 1479, 491, 492, 493, 494, 495,
+ 496, 497, 498, 1508, -1, -1, -1, -1, -1, -1,
+ -1, 1179, 1180, -1, -1, -1, 1184, -1, -1, -1,
+ -1, 1506, -1, -1, 1192, 1530, 1509, -1, -1, 1534,
+ 491, 492, 493, 494, 495, 496, 497, 498, -1, -1,
+ 1525, 1526, -1, -1, -1, -1, -1, -1, -1, 1217,
+ -1, -1, -1, -1, -1, -1, -1, 1562, -1, 1544,
+ -1, 1229, -1, -1, 1569, 1233, -1, 1235, 1236, 1237,
+ -1, -1, -1, -1, -1, 1580, -1, 326, 1246, -1,
+ -1, -1, 1587, 12, 13, 14, 15, 16, 17, 18,
+ 19, -1, -1, -1, -1, -1, -1, -1, 1581, -1,
+ -1, -1, -1, -1, -1, 1610, 1589, 1590, 1591, 1592,
+ 1593, 1594, 1595, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 1608, -1, -1, -1, -1,
+ -1, -1, -1, 1301, 1302, 1303, 1304, 1620, 1621, -1,
+ -1, 1309, 1310, 1311, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, -1, -1, -1, 1336, -1,
+ -1, -1, -1, -1, -1, -1, 1344, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, -1, -1, -1, -1, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, -1, 1376, 1377,
+ -1, -1, 1380, -1, -1, -1, -1, 1385, 1386, -1,
+ -1, 1389, -1, -1, -1, -1, -1, -1, -1, 119,
+ -1, 0, -1, 123, -1, -1, -1, 1405, -1, 1407,
+ 1408, 1409, 1410, -1, -1, 1413, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 505, 506, 507, 508,
+ 509, -1, -1, -1, 513, 514, 1434, 1435, 1436, 1437,
+ -1, -1, 41, -1, -1, -1, 525, 526, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1455, 1456, -1,
+ -1, -1, -1, 62, 63, -1, -1, 66, 67, -1,
+ 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
+ -1, 1479, -1, 82, 83, -1, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, 101, 102, -1, -1, -1, -1, 1506, 108,
+ 109, -1, -1, 112, -1, -1, -1, -1, -1, -1,
+ 119, -1, -1, -1, 123, -1, -1, 1525, 1526, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1544, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 162, 163, -1, 165, 166, 167, -1,
+ -1, -1, -1, -1, -1, -1, 175, -1, -1, -1,
+ -1, 180, -1, 182, 183, 184, -1, -1, -1, 188,
+ 189, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 202, -1, -1, 326, -1, -1, -1,
+ -1, 210, -1, 212, 213, -1, -1, 216, 217, -1,
+ -1, -1, -1, -1, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 236, 237, 238,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, -1,
+ 268, 269, 270, -1, -1, -1, 274, 275, 276, 277,
+ 278, 279, 280, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, -1, -1, -1, -1, 306, -1, -1,
+ -1, 310, -1, -1, 313, 314, -1, -1, -1, -1,
+ -1, 320, 3, -1, -1, -1, -1, 326, 327, 328,
+ 11, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 349, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 42, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 52, -1, -1, -1, -1, -1, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 121, -1, -1, -1, -1, -1, -1, 80,
+ -1, -1, -1, 84, 133, 134, 135, 136, 137, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 149, 150, 151, 152, 153, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, 117, 118, 41, 120,
+ -1, 122, -1, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, -1, 66, -1, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, -1, -1, -1, 158, -1, 160,
+ 161, -1, -1, 164, -1, -1, -1, 168, 169, 170,
+ -1, 172, 173, 174, -1, -1, 177, -1, -1, -1,
+ 181, -1, -1, -1, 185, 186, 187, -1, -1, 190,
+ -1, -1, -1, -1, -1, -1, -1, -1, 199, 200,
+ 201, -1, -1, 121, -1, -1, -1, -1, 209, -1,
+ 211, -1, -1, 214, 215, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, -1, -1, 239, 240,
+ -1, -1, -1, -1, 582, -1, -1, -1, -1, -1,
+ -1, -1, 175, -1, -1, -1, -1, 180, 577, 182,
+ 183, 184, -1, -1, 583, 188, 189, -1, -1, -1,
+ 589, -1, 591, 592, -1, -1, -1, -1, -1, 202,
+ -1, -1, -1, -1, -1, 203, -1, 210, -1, 212,
+ -1, -1, -1, 216, 217, -1, -1, 346, 347, -1,
+ -1, 302, 303, 304, 305, -1, 307, 308, 309, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 321, 322, -1, -1, 325, -1, -1, -1, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
+ 361, 3, -1, -1, -1, 366, 367, -1, -1, 11,
+ -1, -1, -1, -1, -1, 298, 299, 300, 301, -1,
+ -1, -1, -1, 306, -1, -1, -1, 310, -1, -1,
+ 313, 314, -1, 311, -1, -1, -1, 320, -1, -1,
+ 42, -1, -1, -1, 327, 328, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, -1, -1, -1, -1, 61,
+ -1, 339, 340, 341, 342, 343, 344, 345, 346, 347,
+ 348, -1, 350, 351, 352, 353, -1, -1, 80, -1,
+ -1, -1, 84, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 454, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, -1, -1, 116, 117, 118, 41, 120, -1,
+ 122, -1, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, -1, -1, -1, 61, -1, -1,
+ -1, -1, 66, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 158, -1, 160, 161,
+ -1, -1, 164, -1, -1, -1, 168, 169, 170, -1,
+ 172, 173, 174, -1, -1, 177, -1, -1, -1, 181,
+ -1, -1, -1, 185, 186, 187, -1, -1, 190, -1,
+ -1, -1, -1, -1, -1, -1, -1, 199, 200, 201,
+ -1, -1, -1, -1, -1, -1, -1, 209, -1, 211,
+ -1, -1, 214, 215, -1, -1, -1, -1, -1, -1,
+ -1, 582, -1, 584, 585, 586, 587, 588, 589, -1,
+ 591, 592, -1, -1, -1, -1, -1, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 175, -1, -1, -1, -1, 180, -1, 182, 183,
+ 184, -1, -1, -1, 188, 189, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 202, -1,
+ -1, -1, -1, -1, -1, -1, 210, -1, 212, -1,
+ -1, -1, 216, 217, -1, -1, -1, -1, -1, 582,
+ 302, 303, 304, 305, -1, 307, 308, 309, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 321,
+ 322, -1, -1, 325, -1, -1, -1, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 3, -1, -1, -1, 366, 367, -1, -1, 11, -1,
+ -1, -1, -1, -1, 298, 299, 300, 301, -1, -1,
+ -1, -1, 306, -1, -1, -1, 310, -1, -1, 313,
+ 314, -1, -1, -1, -1, -1, 320, -1, -1, 42,
+ -1, -1, -1, 327, 328, -1, -1, -1, -1, 52,
+ -1, -1, -1, -1, -1, -1, -1, -1, 61, 82,
+ 83, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
+ -1, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 454, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, -1, -1, 116, 117, 118, -1, 120, -1, 122,
+ -1, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 162,
+ 163, -1, 165, 166, 167, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 158, -1, 160, 161, -1,
+ -1, 164, -1, -1, -1, 168, 169, 170, -1, 172,
+ 173, 174, -1, -1, 177, -1, -1, -1, 181, -1,
+ -1, -1, 185, 186, 187, -1, -1, 190, -1, -1,
+ 213, -1, -1, -1, -1, -1, 199, 200, 201, -1,
+ -1, -1, -1, -1, -1, -1, 209, -1, 211, -1,
+ -1, 214, 215, 236, 237, 238, -1, -1, -1, -1,
+ 582, -1, 584, 585, 586, 587, 588, 589, -1, 591,
+ 592, -1, -1, -1, -1, -1, 239, 240, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 302,
+ 303, 304, 305, -1, 307, 308, 309, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 321, 322,
+ -1, -1, 325, -1, -1, -1, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 354, 355, 356, 357, 358, 359, 360, 361, 3,
+ -1, -1, -1, 366, 367, -1, -1, 11, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 42, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, -1, -1, -1, -1, 61, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 80, -1, -1, -1,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 454, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ -1, -1, 116, 117, 118, -1, 120, -1, 122, -1,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 158, -1, 160, 161, -1, -1,
+ 164, -1, -1, -1, 168, 169, 170, -1, 172, 173,
+ 174, -1, -1, 177, -1, -1, -1, 181, -1, -1,
+ -1, 185, 186, 187, -1, -1, 190, -1, -1, -1,
+ -1, -1, -1, -1, -1, 199, 200, 201, -1, -1,
+ -1, -1, -1, -1, -1, 209, -1, 211, -1, -1,
+ 214, 215, -1, -1, -1, -1, -1, -1, -1, 582,
+ -1, 584, 585, 586, 587, 588, 589, -1, 591, 592,
+ -1, -1, -1, -1, -1, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 302, 303,
+ 304, 305, -1, 307, 308, 309, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 321, 322, -1,
+ -1, 325, -1, -1, -1, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 3, -1,
+ -1, -1, 366, 367, -1, -1, 11, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 52, -1, -1,
+ -1, -1, -1, -1, -1, -1, 61, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 80, -1, -1, -1, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 454, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, -1,
+ -1, 116, 117, 118, -1, 120, -1, 122, -1, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 158, -1, 160, 161, -1, -1, 164,
+ -1, -1, -1, 168, 169, 170, -1, 172, 173, 174,
+ -1, -1, 177, -1, -1, -1, 181, -1, -1, -1,
+ 185, 186, 187, -1, -1, 190, -1, -1, -1, -1,
+ -1, -1, -1, -1, 199, 200, 201, -1, -1, -1,
+ -1, -1, -1, -1, 209, -1, 211, -1, -1, 214,
+ 215, -1, -1, -1, -1, -1, -1, -1, 582, -1,
+ 584, 585, 586, 587, 588, 589, -1, 591, 592, -1,
+ -1, -1, -1, -1, 239, 240, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 302, 303, 304,
+ 305, -1, 307, 308, 309, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 321, 322, -1, -1,
+ 325, -1, -1, -1, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, 361, 3, -1, -1,
+ -1, 366, 367, -1, -1, 11, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 42, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, -1, -1, -1, -1, 61, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, -1, -1, 84, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 454,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, -1, -1,
+ 116, 117, 118, -1, 120, -1, 122, -1, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 158, -1, 160, 161, -1, -1, 164, -1,
+ -1, -1, 168, 169, 170, -1, 172, 173, 174, -1,
+ -1, 177, -1, -1, -1, 181, -1, -1, -1, 185,
+ 186, 187, -1, -1, 190, -1, -1, -1, -1, -1,
+ -1, -1, -1, 199, 200, 201, -1, -1, -1, -1,
+ -1, -1, -1, 209, -1, 211, -1, -1, 214, 215,
+ -1, -1, -1, -1, -1, -1, -1, 582, -1, 584,
+ 585, 586, 587, 588, 589, -1, 591, 592, -1, -1,
+ -1, -1, -1, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 302, 303, 304, 305,
+ -1, 307, 308, 309, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 321, 322, -1, -1, 325,
+ -1, -1, -1, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 3, -1, -1, -1,
+ 366, 367, -1, -1, 11, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 42, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 52, -1, -1, -1, -1,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 80, -1, -1, -1, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 454, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, -1, -1, 116,
+ 117, 118, -1, 120, -1, 122, -1, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 158, -1, 160, 161, -1, -1, 164, -1, -1,
+ -1, 168, 169, 170, -1, 172, 173, 174, -1, -1,
+ 177, -1, -1, -1, 181, -1, -1, -1, 185, 186,
+ 187, -1, -1, 190, -1, -1, -1, -1, -1, -1,
+ -1, -1, 199, 200, 201, -1, -1, -1, -1, -1,
+ -1, -1, 209, -1, 211, -1, -1, 214, 215, -1,
+ -1, -1, -1, -1, -1, -1, 582, -1, 584, 585,
+ 586, 587, 588, 589, -1, 591, 592, -1, -1, -1,
+ -1, -1, 239, 240, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 302, 303, 304, 305, -1,
+ 307, 308, 309, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 321, 322, -1, -1, 325, -1,
+ -1, -1, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, 356,
+ 357, 358, 359, 360, 361, 3, -1, -1, -1, 366,
+ 367, -1, -1, 11, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 42, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, -1,
+ -1, -1, -1, 61, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 80, -1, -1, -1, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 454, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, -1, -1, 116, 117,
+ 118, -1, 120, -1, 122, -1, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 158, -1, 160, 161, -1, -1, 164, -1, -1, -1,
+ 168, 169, 170, -1, 172, 173, 174, -1, -1, 177,
+ -1, -1, -1, 181, -1, -1, -1, 185, 186, 187,
+ -1, -1, 190, -1, -1, -1, -1, -1, -1, -1,
+ -1, 199, 200, 201, -1, -1, -1, -1, -1, -1,
+ -1, 209, -1, 211, -1, -1, 214, 215, -1, -1,
+ -1, -1, -1, -1, -1, 582, -1, 584, 585, 586,
+ 587, 588, 589, -1, 591, 592, -1, -1, -1, -1,
+ -1, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 302, 303, 304, 305, -1, 307,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 321, 322, -1, -1, 325, -1, -1,
+ -1, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 3, -1, -1, -1, 366, 367,
+ -1, -1, 11, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 42, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 52, -1, -1, -1, -1, -1, -1,
+ -1, -1, 61, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 80, -1, -1, -1, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 454, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, -1, -1, 116, 117, 118,
+ -1, 120, -1, 122, -1, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 158,
+ -1, 160, 161, -1, -1, 164, -1, -1, -1, 168,
+ 169, 170, -1, 172, 173, 174, -1, -1, 177, -1,
+ -1, -1, 181, -1, -1, -1, 185, 186, 187, -1,
+ -1, 190, -1, -1, -1, -1, -1, -1, -1, -1,
+ 199, 200, 201, -1, -1, -1, -1, -1, -1, -1,
+ 209, -1, 211, -1, -1, 214, 215, -1, -1, -1,
+ -1, -1, -1, -1, 582, -1, 584, 585, 586, 587,
+ 588, 589, -1, 591, 592, -1, -1, -1, -1, -1,
+ 239, 240, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 302, 303, 304, 305, -1, 307, 308,
+ 309, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 321, 322, -1, -1, 325, -1, -1, -1,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 354, 355, 356, 357, 358,
+ 359, 360, 361, 3, -1, -1, -1, 366, 367, -1,
+ -1, 11, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 42, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, -1, -1, -1,
+ -1, 61, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 80, -1, -1, -1, 84, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 454, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, -1, -1, 116, 117, 118, -1,
+ 120, -1, 122, -1, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 158, -1,
+ 160, 161, -1, -1, 164, -1, -1, -1, 168, 169,
+ 170, -1, 172, 173, 174, -1, -1, 177, -1, -1,
+ -1, 181, -1, -1, -1, 185, 186, 187, -1, -1,
+ 190, -1, -1, -1, -1, -1, -1, -1, -1, 199,
+ 200, 201, -1, -1, -1, -1, -1, -1, -1, 209,
+ -1, 211, -1, -1, 214, 215, -1, -1, -1, -1,
+ -1, -1, -1, 582, -1, 584, 585, 586, 587, 588,
+ 121, -1, 591, 592, -1, -1, -1, -1, -1, 239,
+ 240, -1, 133, 134, 135, 136, 137, 138, 139, 140,
+ 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
+ 151, 152, 153, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 302, 303, 304, 305, -1, 307, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 321, 322, -1, -1, 325, -1, -1, -1, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 3, -1, -1, -1, 366, 367, -1, -1,
+ 11, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 42, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 52, -1, -1, -1, -1, -1, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
+ -1, -1, -1, 84, -1, -1, -1, -1, 339, 340,
+ 341, 342, 343, 344, 454, 346, 347, 348, -1, -1,
+ -1, -1, 353, -1, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, -1, -1, 116, 117, 118, -1, 120,
+ -1, 122, -1, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 158, -1, 160,
+ 161, -1, -1, 164, -1, -1, -1, 168, 169, 170,
+ -1, 172, 173, 174, -1, -1, 177, -1, -1, -1,
+ 181, -1, -1, -1, 185, 186, 187, -1, -1, 190,
+ -1, -1, -1, -1, -1, -1, -1, -1, 199, 200,
+ 201, -1, -1, -1, -1, -1, -1, -1, 209, -1,
+ 211, -1, -1, 214, 215, -1, -1, -1, -1, -1,
+ -1, -1, 582, -1, 584, 585, 586, 587, 588, -1,
+ -1, 591, 592, -1, -1, -1, -1, -1, 239, 240,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 302, 303, 304, 305, -1, 307, 308, 309, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 321, 322, -1, -1, 325, -1, -1, -1, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
+ 361, 3, -1, -1, -1, 366, 367, -1, -1, 11,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 42, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, -1, -1, -1, -1, 61,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 80, -1,
+ -1, -1, 84, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 454, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, -1, -1, 116, 117, 118, -1, 120, -1,
+ 122, -1, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 158, -1, 160, 161,
+ -1, -1, 164, -1, -1, -1, 168, 169, 170, -1,
+ 172, 173, 174, -1, -1, 177, -1, -1, -1, 181,
+ -1, -1, -1, 185, 186, 187, -1, -1, 190, -1,
+ -1, -1, -1, -1, -1, -1, -1, 199, 200, 201,
+ -1, -1, -1, -1, -1, -1, -1, 209, -1, 211,
+ -1, -1, 214, 215, -1, -1, -1, -1, -1, -1,
+ -1, 582, -1, 584, 585, 586, 587, 588, -1, -1,
+ 591, 592, -1, -1, -1, -1, -1, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 302, 303, 304, 305, -1, 307, 308, 309, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 321,
+ 322, -1, -1, 325, -1, -1, -1, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 3, -1, -1, -1, 366, 367, -1, -1, 11, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 42,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
+ -1, -1, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
+ -1, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 454, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, -1, -1, 116, 117, 118, -1, 120, -1, 122,
+ -1, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 158, -1, 160, 161, -1,
+ -1, 164, -1, -1, -1, 168, 169, 170, -1, 172,
+ 173, 174, -1, -1, 177, -1, -1, -1, 181, -1,
+ -1, -1, 185, 186, 187, -1, -1, 190, -1, -1,
+ -1, -1, -1, -1, -1, -1, 199, 200, 201, -1,
+ -1, -1, -1, -1, -1, -1, 209, -1, 211, -1,
+ -1, 214, 215, -1, -1, -1, -1, -1, -1, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, 591,
+ 592, -1, -1, -1, -1, -1, 239, 240, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 302,
+ 303, 304, 305, -1, 307, 308, 309, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 321, 322,
+ -1, -1, 325, -1, -1, -1, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 354, 355, 356, 357, 358, 359, 360, 361, 3,
+ -1, -1, -1, 366, 367, -1, -1, 11, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 42, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, -1, -1, -1, -1, 61, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 80, -1, -1, -1,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 454, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 464, 465, 466, 467, 468, 469, 470, 471, 472,
+ -1, -1, 116, 117, 118, -1, 120, -1, 122, -1,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 158, -1, 160, 161, -1, -1,
+ 164, -1, -1, -1, 168, 169, 170, -1, 172, 173,
+ 174, -1, -1, 177, -1, -1, -1, 181, -1, -1,
+ -1, 185, 186, 187, -1, -1, 190, -1, -1, -1,
+ -1, -1, -1, -1, -1, 199, 200, 201, -1, -1,
+ -1, -1, -1, -1, -1, 209, -1, 211, -1, -1,
+ 214, 215, -1, -1, 577, -1, -1, -1, -1, 582,
+ -1, 584, 585, 586, 587, 588, -1, -1, 591, -1,
+ -1, -1, -1, -1, -1, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 302, 303,
+ 304, 305, -1, 307, 308, 309, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 321, 322, -1,
+ -1, 325, -1, -1, -1, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 3, -1,
+ -1, -1, 366, 367, -1, -1, 11, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 52, -1, -1,
+ -1, -1, -1, -1, -1, -1, 61, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 80, -1, -1, -1, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 454, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 464, 465, 466, 467, 468, 469, 470, 471, 472, -1,
+ -1, 116, 117, 118, -1, 120, -1, 122, -1, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 158, -1, 160, 161, -1, -1, 164,
+ -1, -1, -1, 168, 169, 170, -1, 172, 173, 174,
+ -1, -1, 177, -1, -1, -1, 181, -1, -1, -1,
+ 185, 186, 187, -1, -1, 190, -1, -1, -1, -1,
+ -1, -1, -1, -1, 199, 200, 201, -1, -1, -1,
+ -1, -1, -1, -1, 209, -1, 211, -1, -1, 214,
+ 215, -1, -1, -1, -1, -1, -1, -1, 582, -1,
+ 584, 585, 586, 587, 588, 589, -1, 591, -1, -1,
+ -1, -1, -1, -1, 239, 240, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 302, 303, 304,
+ 305, -1, 307, 308, 309, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 321, 322, -1, -1,
+ 325, -1, -1, -1, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, 361, 3, -1, -1,
+ -1, 366, 367, -1, -1, 11, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 42, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, -1, -1, -1, -1, 61, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, -1, -1, 84, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 454,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 464,
+ 465, 466, 467, 468, 469, 470, 471, 472, -1, -1,
+ 116, 117, 118, -1, 120, -1, 122, -1, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 158, -1, 160, 161, -1, -1, 164, -1,
+ -1, -1, 168, 169, 170, -1, 172, 173, 174, -1,
+ -1, 177, -1, -1, -1, 181, -1, -1, -1, 185,
+ 186, 187, -1, -1, 190, -1, -1, -1, -1, -1,
+ -1, -1, -1, 199, 200, 201, -1, -1, -1, -1,
+ -1, -1, -1, 209, -1, 211, -1, -1, 214, 215,
+ -1, -1, -1, -1, -1, -1, -1, 582, -1, 584,
+ 585, 586, 587, 588, 589, -1, 591, -1, -1, -1,
+ -1, -1, -1, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 302, 303, 304, 305,
+ -1, 307, 308, 309, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 321, 322, -1, -1, 325,
+ -1, -1, -1, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 3, -1, -1, -1,
+ 366, 367, -1, -1, 11, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 42, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 52, -1, -1, -1, -1,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 80, -1, -1, -1, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 454, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 464, 465,
+ 466, 467, 468, 469, 470, 471, 472, -1, -1, 116,
+ 117, 118, -1, 120, -1, 122, -1, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 158, -1, 160, 161, -1, -1, 164, -1, -1,
+ -1, 168, 169, 170, -1, 172, 173, 174, -1, -1,
+ 177, -1, -1, -1, 181, -1, -1, -1, 185, 186,
+ 187, -1, -1, 190, -1, -1, -1, -1, -1, -1,
+ -1, -1, 199, 200, 201, -1, -1, -1, -1, -1,
+ -1, -1, 209, -1, 211, -1, -1, 214, 215, -1,
+ -1, -1, -1, -1, -1, -1, 582, -1, 584, 585,
+ 586, 587, 588, 589, -1, 591, -1, -1, -1, -1,
+ -1, -1, 239, 240, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 302, 303, 304, 305, -1,
+ 307, 308, 309, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 321, 322, -1, -1, 325, -1,
+ -1, -1, 329, 330, 331, 332, 333, 334, 335, 336,
+ 337, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, 356,
+ 357, 358, 359, 360, 361, 3, -1, -1, -1, 366,
+ 367, -1, -1, 11, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 42, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, -1,
+ -1, -1, -1, 61, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 80, -1, -1, -1, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 454, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 464, 465, 466,
+ 467, 468, 469, 470, 471, 472, -1, -1, 116, 117,
+ 118, -1, 120, -1, 122, -1, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 158, -1, 160, 161, -1, -1, 164, -1, -1, -1,
+ 168, 169, 170, -1, 172, 173, 174, -1, -1, 177,
+ -1, -1, -1, 181, -1, -1, -1, 185, 186, 187,
+ -1, -1, 190, -1, -1, -1, -1, -1, -1, -1,
+ -1, 199, 200, 201, -1, -1, -1, -1, -1, -1,
+ -1, 209, -1, 211, -1, -1, 214, 215, -1, -1,
+ -1, -1, -1, -1, -1, 582, -1, 584, 585, 586,
+ 587, 588, 589, -1, 591, -1, -1, -1, -1, -1,
+ -1, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 302, 303, 304, 305, -1, 307,
+ 308, 309, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 321, 322, -1, -1, 325, -1, -1,
+ -1, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 3, -1, -1, -1, 366, 367,
+ -1, -1, 11, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 42, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 52, -1, -1, -1, -1, -1, -1,
+ -1, -1, 61, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 80, -1, -1, -1, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 454, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 464, 465, 466, 467,
+ 468, 469, 470, 471, 472, -1, -1, 116, 117, 118,
+ -1, 120, -1, 122, -1, 124, 125, 126, 127, 128,
+ 129, 130, 131, 132, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 158,
+ -1, 160, 161, -1, -1, 164, -1, -1, -1, 168,
+ 169, 170, -1, 172, 173, 174, -1, -1, 177, -1,
+ -1, -1, 181, -1, -1, -1, 185, 186, 187, -1,
+ -1, 190, -1, -1, -1, -1, -1, -1, -1, -1,
+ 199, 200, 201, -1, -1, -1, -1, -1, -1, -1,
+ 209, -1, 211, -1, -1, 214, 215, -1, -1, -1,
+ -1, -1, -1, -1, 582, -1, 584, 585, 586, 587,
+ 588, 589, -1, 591, -1, -1, -1, -1, -1, -1,
+ 239, 240, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 302, 303, 304, 305, -1, 307, 308,
+ 309, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 321, 322, -1, -1, 325, -1, -1, -1,
+ 329, 330, 331, 332, 333, 334, 335, 336, 337, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 354, 355, 356, 357, 358,
+ 359, 360, 361, 3, -1, -1, -1, 366, 367, -1,
+ -1, 11, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 42, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, -1, -1, -1,
+ -1, 61, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 80, -1, -1, -1, 84, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 454, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 464, 465, 466, 467, 468,
+ 469, 470, 471, 472, -1, -1, 116, 117, 118, -1,
+ 120, -1, 122, -1, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 158, -1,
+ 160, 161, -1, -1, 164, -1, -1, -1, 168, 169,
+ 170, -1, 172, 173, 174, -1, -1, 177, -1, -1,
+ -1, 181, -1, -1, -1, 185, 186, 187, -1, -1,
+ 190, -1, -1, -1, -1, -1, -1, -1, -1, 199,
+ 200, 201, -1, -1, -1, -1, -1, -1, -1, 209,
+ -1, 211, -1, -1, 214, 215, -1, -1, -1, -1,
+ -1, -1, -1, 582, -1, 584, 585, 586, 587, 588,
+ 589, -1, 591, -1, -1, -1, -1, -1, -1, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 302, 303, 304, 305, -1, 307, 308, 309,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 321, 322, -1, -1, 325, -1, -1, -1, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 3, -1, -1, -1, 366, 367, -1, -1,
+ 11, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 42, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 52, -1, -1, -1, -1, -1, -1, -1, -1,
+ 61, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
+ -1, -1, -1, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 454, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 464, 465, 466, 467, 468, 469,
+ 470, 471, 472, -1, -1, 116, 117, 118, -1, 120,
+ -1, 122, -1, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 158, -1, 160,
+ 161, -1, -1, 164, -1, -1, -1, 168, 169, 170,
+ -1, 172, 173, 174, -1, -1, 177, -1, -1, -1,
+ 181, -1, -1, -1, 185, 186, 187, -1, -1, 190,
+ -1, -1, -1, -1, -1, -1, -1, -1, 199, 200,
+ 201, -1, -1, -1, -1, -1, -1, -1, 209, -1,
+ 211, -1, -1, 214, 215, -1, -1, -1, -1, -1,
+ -1, -1, 582, -1, 584, 585, 586, 587, 588, 589,
+ -1, 591, -1, -1, -1, -1, -1, -1, 239, 240,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 302, 303, 304, 305, -1, 307, 308, 309, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 321, 322, -1, -1, 325, -1, -1, -1, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
+ 361, 3, -1, -1, -1, 366, 367, -1, -1, 11,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 42, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, -1, -1, -1, -1, 61,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 80, -1,
+ -1, -1, 84, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 454, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 464, 465, 466, 467, 468, 469, 470,
+ 471, 472, -1, -1, 116, 117, 118, -1, 120, -1,
+ 122, -1, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 158, -1, 160, 161,
+ -1, -1, 164, -1, -1, -1, 168, 169, 170, -1,
+ 172, 173, 174, -1, -1, 177, -1, -1, -1, 181,
+ -1, -1, -1, 185, 186, 187, -1, -1, 190, -1,
+ -1, -1, -1, -1, -1, -1, -1, 199, 200, 201,
+ -1, -1, -1, -1, -1, -1, -1, 209, -1, 211,
+ -1, -1, 214, 215, -1, -1, -1, -1, -1, -1,
+ -1, 582, -1, 584, 585, 586, 587, 588, 589, -1,
+ 591, -1, -1, -1, -1, -1, -1, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 302, 303, 304, 305, -1, 307, 308, 309, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 321,
+ 322, -1, -1, 325, -1, -1, -1, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 3, -1, -1, -1, 366, 367, -1, -1, 11, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 42,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 52,
+ -1, -1, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 80, -1, -1,
+ -1, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 454, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 464, 465, 466, 467, 468, 469, 470, 471,
+ 472, -1, -1, 116, 117, 118, -1, 120, -1, 122,
+ -1, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 158, -1, 160, 161, -1,
+ -1, 164, -1, -1, -1, 168, 169, 170, -1, 172,
+ 173, 174, -1, -1, 177, -1, -1, -1, 181, -1,
+ -1, -1, 185, 186, 187, -1, -1, 190, -1, -1,
+ -1, -1, -1, -1, -1, -1, 199, 200, 201, -1,
+ -1, -1, -1, -1, -1, -1, 209, -1, 211, -1,
+ -1, 214, 215, -1, -1, -1, -1, -1, -1, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, 591,
+ -1, -1, -1, -1, -1, -1, 239, 240, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 302,
+ 303, 304, 305, -1, 307, 308, 309, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 321, 322,
+ -1, -1, 325, -1, -1, -1, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 203, -1, -1, -1, -1,
+ 3, -1, -1, -1, -1, -1, -1, -1, 11, -1,
+ -1, 354, 355, 356, 357, 358, 359, 360, 361, 22,
+ -1, -1, -1, 366, 367, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 41, 42,
+ 43, -1, -1, -1, -1, -1, -1, -1, -1, 52,
+ -1, -1, -1, -1, -1, -1, -1, -1, 61, -1,
+ -1, -1, -1, 66, 67, -1, 69, 70, 71, 72,
+ 73, 74, 75, 76, -1, -1, -1, 80, -1, 82,
+ 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
+ -1, -1, -1, 311, -1, 108, 109, -1, -1, 112,
+ -1, 454, -1, 116, 117, 118, 119, 120, -1, 122,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ -1, 339, 340, 341, 342, 343, 344, -1, 346, 347,
+ 348, -1, 350, 351, 352, 353, -1, -1, -1, -1,
+ -1, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
+ 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
+ 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
+ -1, 204, 205, 206, 207, 208, 209, 210, 211, 212,
+ 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 238, 239, 240, -1, 582,
+ -1, 584, 585, 586, 587, 588, -1, -1, 591, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 267, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 282,
+ 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
+ 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, 310, -1, 312,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 349, -1, -1, -1,
+ -1, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
+ 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
+ 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
+ 423, 424, 425, 426, 427, 428, 429, -1, 431, 432,
+ 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
+ 443, 444, 445, 446, 447, 448, 449, -1, 451, 452,
+ 453, 454, 455, -1, -1, -1, -1, -1, -1, -1,
+ 463, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 499, -1, 501, 502,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 521, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ -1, -1, -1, -1, -1, -1, -1, 11, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, 42, 43,
+ -1, -1, -1, -1, -1, 578, 579, 580, 52, 582,
+ -1, 584, 585, 586, 587, 588, -1, 61, 62, 63,
+ -1, -1, 66, 67, -1, 69, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, -1, 80, -1, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, -1,
+ -1, -1, -1, -1, 108, 109, -1, -1, 112, -1,
+ -1, -1, 116, 117, 118, 119, 120, -1, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, -1,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, -1, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, -1, -1, -1, -1, -1, -1, -1, 11,
+ 454, 455, -1, -1, -1, -1, -1, -1, -1, 463,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
+ 42, 43, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, 499, -1, 501, 502, 61,
+ 62, 63, -1, -1, 66, 67, -1, 69, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, 521, 80, -1,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, -1, -1, -1, -1, -1, 108, 109, -1, -1,
+ 112, -1, -1, -1, 116, 117, 118, 119, 120, -1,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, 578, 579, 580, -1, 582, -1,
+ 584, 585, 586, 587, 588, -1, -1, -1, -1, -1,
+ -1, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, -1, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 267, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, -1,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, -1, -1,
+ -1, 11, 454, 455, -1, -1, -1, -1, -1, -1,
+ -1, 463, 22, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, 499, -1, 501,
+ 502, 61, -1, -1, -1, -1, 66, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, 521,
+ 80, -1, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, -1, -1, -1, -1, -1, 108, 109,
+ -1, -1, 112, -1, -1, -1, 116, 117, 118, 119,
+ 120, -1, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, 578, 579, 580, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, -1,
+ -1, -1, -1, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, -1, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 267, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, -1, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 349,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, -1, -1, -1, -1,
+ -1, -1, -1, 11, 454, 455, -1, -1, -1, -1,
+ -1, -1, -1, 463, 22, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 41, 42, 43, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, 499,
+ -1, 501, 502, 61, -1, -1, -1, -1, 66, 67,
+ -1, 69, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, 521, 80, -1, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, -1, -1, -1, -1, -1,
+ 108, 109, -1, -1, 112, -1, -1, -1, 116, 117,
+ 118, 119, 120, -1, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, 578, 579,
+ 580, -1, 582, 583, 584, 585, 586, 587, 588, -1,
+ -1, -1, -1, -1, -1, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, -1, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, -1, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 349, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, 11, 454, 455, -1, -1,
+ -1, -1, -1, -1, -1, 463, 22, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 41, 42, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, 499, -1, 501, 502, 61, -1, -1, -1, -1,
+ 66, 67, -1, 69, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, 521, 80, -1, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, -1, -1, -1,
+ -1, -1, 108, 109, -1, -1, 112, -1, -1, -1,
+ 116, 117, 118, 119, 120, -1, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ 578, 579, 580, -1, 582, 583, 584, 585, 586, 587,
+ 588, -1, -1, -1, -1, -1, -1, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, -1, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, -1, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 349, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ -1, -1, -1, -1, -1, -1, -1, 11, 454, 455,
+ -1, -1, -1, -1, -1, -1, -1, 463, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, 42, 43,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, 499, -1, 501, 502, 61, -1, -1,
+ -1, -1, 66, 67, -1, 69, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, 521, 80, -1, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, -1,
+ -1, -1, -1, -1, 108, 109, -1, -1, 112, -1,
+ -1, -1, 116, 117, 118, 119, 120, -1, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, 578, 579, 580, -1, 582, 583, 584, 585,
+ 586, 587, 588, -1, -1, -1, -1, -1, -1, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, -1,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, -1, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 349, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, -1, -1, -1, -1, -1, -1, -1, 11,
+ 454, 455, -1, -1, -1, -1, -1, -1, -1, 463,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
+ 42, 43, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, 499, -1, 501, 502, 61,
+ -1, -1, -1, -1, 66, 67, -1, 69, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, 521, 80, -1,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, -1, -1, -1, -1, -1, 108, 109, -1, -1,
+ 112, -1, -1, -1, 116, 117, 118, 119, 120, -1,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, 578, 579, 580, -1, 582, -1,
+ 584, 585, 586, 587, 588, -1, -1, -1, -1, -1,
+ -1, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, -1, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 267, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, -1,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 349, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, -1, -1,
+ -1, 11, 454, 455, -1, -1, -1, -1, -1, -1,
+ -1, 463, 22, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, 499, -1, 501,
+ 502, 61, -1, -1, -1, -1, 66, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, 521,
+ 80, -1, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, -1, -1, -1, -1, -1, 108, 109,
+ -1, -1, 112, -1, -1, -1, 116, 117, 118, 119,
+ 120, -1, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, 578, 579, 580, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, -1,
+ -1, -1, -1, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, -1, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 267, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, -1, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 349,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, -1, -1, -1, -1,
+ -1, -1, -1, 11, 454, 455, -1, -1, -1, -1,
+ -1, -1, -1, 463, 22, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 41, 42, 43, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, 499,
+ -1, 501, 502, 61, -1, -1, -1, -1, 66, 67,
+ -1, 69, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, 521, 80, -1, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, -1, -1, -1, -1, -1,
+ 108, 109, -1, -1, 112, -1, -1, -1, 116, 117,
+ 118, 119, 120, -1, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, 578, 579,
+ 580, -1, 582, -1, 584, 585, 586, 587, 588, -1,
+ -1, -1, -1, -1, -1, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, -1, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, -1, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 349, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, 11, 454, 455, -1, -1,
+ -1, -1, -1, -1, -1, 463, 22, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 41, 42, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, 499, -1, 501, 502, 61, -1, -1, -1, -1,
+ 66, 67, -1, 69, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, 521, 80, -1, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, -1, -1, -1,
+ -1, -1, 108, 109, -1, -1, 112, -1, -1, -1,
+ 116, 117, 118, 119, 120, -1, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ 578, 579, 580, -1, 582, -1, 584, 585, 586, 587,
+ 588, -1, -1, -1, -1, -1, -1, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, -1, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, -1, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 349, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ -1, -1, -1, -1, -1, -1, -1, 11, 454, 455,
+ -1, -1, -1, -1, -1, -1, -1, 463, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 41, 42, 43,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, 499, -1, 501, 502, 61, -1, -1,
+ -1, -1, 66, 67, -1, 69, 70, 71, 72, 73,
+ 74, 75, 76, -1, -1, 521, 80, -1, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, -1,
+ -1, -1, -1, -1, 108, 109, -1, -1, 112, -1,
+ -1, -1, 116, 117, 118, 119, 120, -1, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, 578, 579, 580, -1, 582, -1, 584, 585,
+ 586, 587, 588, -1, -1, -1, -1, -1, -1, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, -1,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, -1, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 349, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, -1, -1, -1, -1, -1, -1, -1, 11,
+ 454, 455, -1, -1, -1, -1, -1, -1, -1, 463,
+ 22, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 41,
+ 42, 43, -1, -1, -1, -1, -1, -1, -1, -1,
+ 52, -1, -1, -1, -1, 499, -1, 501, 502, 61,
+ -1, -1, -1, -1, 66, 67, -1, 69, 70, 71,
+ 72, 73, 74, 75, 76, -1, -1, 521, 80, -1,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, -1, -1, -1, -1, -1, 108, 109, -1, -1,
+ 112, -1, -1, -1, 116, 117, 118, 119, 120, -1,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, -1, -1, -1, 578, 579, 580, -1, 582, -1,
+ 584, 585, 586, 587, 588, -1, -1, -1, -1, -1,
+ -1, -1, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, -1, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 267, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, -1,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, 333, 334, 335, 336, 337, 338, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 349, -1, -1,
+ -1, -1, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, -1, -1,
+ -1, 11, 454, 455, -1, -1, -1, -1, -1, -1,
+ -1, 463, 22, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, 499, -1, 501,
+ 502, 61, -1, -1, -1, -1, 66, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, 521,
+ 80, -1, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, -1, -1, -1, -1, -1, 108, 109,
+ -1, -1, 112, -1, -1, -1, 116, 117, 118, 119,
+ 120, -1, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, 578, 579, 580, -1,
+ 582, -1, 584, 585, 586, 587, 588, -1, -1, -1,
+ -1, -1, -1, -1, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, -1, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 267, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, -1, 312, 313, 314, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 349,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, -1, -1, -1, -1,
+ -1, -1, -1, 11, 454, 455, -1, -1, -1, -1,
+ -1, -1, -1, 463, 22, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 41, 42, 43, -1, -1, -1, -1,
+ -1, -1, -1, -1, 52, -1, -1, -1, -1, 499,
+ -1, 501, 502, 61, -1, -1, -1, -1, 66, 67,
+ -1, 69, 70, 71, 72, 73, 74, 75, 76, -1,
+ -1, 521, 80, -1, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, -1, -1, -1, -1, -1,
+ 108, 109, -1, -1, 112, -1, -1, -1, 116, 117,
+ 118, 119, 120, -1, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, -1, -1, -1, 578, 579,
+ 580, -1, 582, -1, 584, 585, 586, 587, 588, -1,
+ -1, -1, -1, -1, -1, -1, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, -1, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, -1, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
+ 338, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 349, -1, -1, -1, -1, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, 11, 454, 455, -1, -1,
+ -1, -1, -1, -1, -1, 463, 22, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 41, 42, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, 499, -1, 501, 502, 61, -1, -1, -1, -1,
+ 66, 67, -1, 69, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, 521, 80, -1, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, -1, -1, -1,
+ -1, -1, 108, 109, -1, -1, 112, -1, -1, -1,
+ 116, 117, 118, 119, 120, -1, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ 578, 579, 580, -1, 582, -1, 584, 585, 586, 587,
+ 588, -1, -1, -1, -1, -1, -1, -1, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, -1, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, -1, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 349, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
+ -1, 79, 80, -1, -1, -1, -1, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, -1,
+ -1, -1, -1, -1, -1, -1, 104, 105, 106, 107,
+ -1, -1, 110, 111, -1, 113, -1, -1, -1, 3,
+ -1, 119, -1, -1, -1, 123, -1, 11, 454, 455,
+ -1, -1, -1, -1, -1, -1, -1, 463, 22, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 42, 43,
+ -1, -1, -1, -1, -1, -1, -1, -1, 52, -1,
+ -1, -1, -1, 499, -1, 501, 502, 61, 62, 63,
+ -1, -1, 66, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 521, 80, -1, -1, -1,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 97, 98, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 116, 117, 118, -1, 120, -1, 122, -1,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, -1,
+ -1, -1, 578, 579, 580, -1, 582, -1, 584, 585,
+ 586, 587, 588, -1, -1, -1, -1, -1, -1, -1,
+ 154, 155, 156, 157, 158, 159, 160, 161, -1, -1,
+ 164, -1, -1, -1, 168, 169, 170, 171, 172, 173,
+ 174, -1, 176, 177, 178, 179, -1, 181, -1, -1,
+ -1, 185, 186, 187, -1, -1, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, -1, -1,
+ 204, 205, 206, 207, 208, 209, -1, 211, 326, -1,
+ 214, 215, -1, -1, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, -1, -1, -1, 239, 240, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 302, 303,
+ 304, 305, -1, 307, 308, 309, -1, -1, 312, -1,
+ -1, 315, 316, 317, 318, 319, -1, 321, 322, 323,
+ 324, 325, -1, -1, -1, 329, 330, 331, 332, 333,
+ 334, 335, 336, 337, 338, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 505, 506, 507,
+ 508, 509, -1, -1, -1, 513, 514, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 525, 526, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3, -1,
+ -1, -1, -1, -1, -1, -1, 11, -1, -1, -1,
+ 454, 455, -1, -1, -1, -1, -1, 22, -1, 463,
+ -1, -1, -1, -1, -1, -1, 584, 585, 586, 587,
+ 588, -1, -1, -1, -1, -1, -1, 42, 43, -1,
+ -1, -1, -1, -1, -1, -1, -1, 52, -1, -1,
+ -1, -1, -1, -1, -1, 499, 61, 501, 502, -1,
+ -1, 66, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 80, -1, 521, -1, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 97, 98, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 116, 117, 118, -1, 120, -1, 122, -1, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, -1, -1,
+ -1, -1, -1, -1, 578, 579, 580, -1, 582, -1,
+ 584, 585, 586, 587, 588, -1, -1, -1, -1, 154,
+ 155, 156, 157, 158, 159, 160, 161, -1, -1, 164,
+ -1, -1, -1, 168, 169, 170, 171, 172, 173, 174,
+ -1, 176, 177, 178, 179, -1, 181, -1, -1, -1,
+ 185, 186, 187, -1, -1, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, -1, -1, 204,
+ 205, 206, 207, 208, 209, -1, 211, -1, -1, 214,
+ 215, -1, -1, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, -1, -1, -1, 239, 240, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 267, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 302, 303, 304,
+ 305, -1, 307, 308, 309, -1, -1, 312, -1, -1,
+ 315, 316, 317, 318, 319, -1, 321, 322, 323, 324,
+ 325, -1, -1, -1, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, 338, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 349, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
+ 365, 366, 367, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, -1, -1, -1, -1, -1, -1,
+ -1, 11, -1, -1, -1, -1, -1, -1, -1, 454,
+ 455, -1, 22, -1, -1, -1, -1, -1, 463, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 42, 43, -1, -1, -1, -1, -1, -1,
+ -1, -1, 52, -1, -1, -1, -1, -1, -1, -1,
+ -1, 61, -1, -1, 499, -1, 501, 502, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 80, -1, -1, -1, 84, -1, 521, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 97, 98, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 116, 117, 118, -1,
+ 120, -1, 122, -1, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 578, 579, 580, -1, 582, -1, 584,
+ 585, 586, 587, 588, 154, 155, 156, 157, 158, 159,
+ 160, 161, -1, -1, 164, -1, -1, -1, 168, 169,
+ 170, 171, 172, 173, 174, -1, 176, 177, 178, 179,
+ -1, 181, -1, -1, -1, 185, 186, 187, -1, -1,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, -1, -1, 204, 205, 206, 207, 208, 209,
+ -1, 211, -1, -1, 214, 215, -1, -1, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, -1, -1, -1, 239,
+ 240, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 267, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 302, 303, 304, 305, -1, 307, 308, 309,
+ -1, -1, 312, -1, -1, 315, 316, 317, 318, 319,
+ -1, 321, 322, 323, 324, 325, -1, -1, -1, 329,
+ 330, 331, 332, 333, 334, 335, 336, 337, 338, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,
+ 11, -1, -1, -1, 454, 455, -1, -1, -1, -1,
+ -1, 22, -1, 463, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 42, 43, -1, -1, -1, -1, -1, -1, -1,
+ -1, 52, -1, -1, -1, -1, -1, -1, -1, 499,
+ 61, 501, 502, 503, 504, 66, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 80,
+ -1, 521, -1, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 97, 98, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 116, 117, 118, -1, 120,
+ -1, 122, -1, 124, 125, 126, 127, 128, 129, 130,
+ 131, 132, -1, -1, -1, -1, -1, -1, 578, 579,
+ 580, -1, 582, -1, 584, 585, 586, 587, 588, -1,
+ -1, -1, -1, 154, 155, 156, 157, 158, 159, 160,
+ 161, -1, -1, 164, -1, -1, -1, 168, 169, 170,
+ 171, 172, 173, 174, -1, 176, 177, 178, 179, -1,
+ 181, -1, -1, -1, 185, 186, 187, -1, -1, 190,
+ 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
+ 201, -1, -1, 204, 205, 206, 207, 208, 209, -1,
+ 211, -1, -1, 214, 215, -1, -1, 218, 219, 220,
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 234, 235, -1, -1, -1, 239, 240,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 267, -1, -1, -1,
+ 271, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 302, 303, 304, 305, -1, 307, 308, 309, -1,
+ -1, 312, -1, -1, 315, 316, 317, 318, 319, -1,
+ 321, 322, 323, 324, 325, -1, -1, -1, 329, 330,
+ 331, 332, 333, 334, 335, 336, 337, 338, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 354, 355, 356, 357, 358, 359, 360,
+ 361, 362, 363, 364, 365, 366, 367, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, -1, -1,
+ -1, -1, -1, -1, -1, 11, -1, -1, -1, -1,
+ -1, -1, -1, 454, 455, -1, 22, -1, -1, -1,
+ -1, -1, 463, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 42, 43, -1, -1,
+ -1, -1, -1, -1, -1, -1, 52, -1, -1, -1,
+ -1, -1, -1, -1, -1, 61, -1, -1, 499, -1,
+ 501, 502, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 80, -1, -1, -1, 84, -1,
+ 521, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 97, 98, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 116, 117, 118, -1, 120, -1, 122, -1, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 578, 579, 580,
+ -1, 582, -1, 584, 585, 586, 587, 588, 154, 155,
+ 156, 157, 158, 159, 160, 161, -1, -1, 164, -1,
+ -1, -1, 168, 169, 170, 171, 172, 173, 174, -1,
+ 176, 177, 178, 179, -1, 181, -1, -1, -1, 185,
+ 186, 187, -1, -1, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, -1, -1, 204, 205,
+ 206, 207, 208, 209, -1, 211, -1, -1, 214, 215,
+ -1, -1, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ -1, -1, -1, 239, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 302, 303, 304, 305,
+ -1, 307, 308, 309, -1, -1, 312, -1, -1, 315,
+ 316, 317, 318, 319, -1, 321, 322, 323, 324, 325,
+ -1, -1, -1, 329, 330, 331, 332, 333, 334, 335,
+ 336, 337, 338, -1, -1, -1, 11, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, -1, -1, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3, -1,
+ -1, -1, -1, -1, -1, -1, 11, -1, -1, -1,
+ -1, -1, 117, 118, -1, 120, -1, 122, 454, 455,
+ -1, -1, -1, -1, -1, -1, -1, 463, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 42, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 52, -1, -1,
+ -1, -1, -1, -1, -1, 160, 61, -1, -1, 164,
+ -1, -1, -1, 499, -1, 501, 502, -1, 173, 174,
+ -1, -1, 177, -1, -1, 80, 181, -1, -1, 84,
+ 185, 186, -1, -1, -1, 521, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 200, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 211, -1, -1, 214,
+ -1, 116, 117, 118, -1, 120, -1, 122, -1, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, -1, -1,
+ -1, -1, -1, -1, -1, 240, -1, -1, -1, -1,
+ -1, -1, 578, 579, 580, -1, 582, -1, 584, 585,
+ 586, 587, 588, 158, -1, 160, 161, -1, -1, 164,
+ -1, -1, -1, 168, 169, 170, -1, 172, 173, 174,
+ -1, -1, 177, -1, -1, -1, 181, -1, -1, -1,
+ 185, 186, 187, -1, -1, 190, -1, -1, -1, -1,
+ -1, -1, -1, -1, 199, 200, 201, -1, 303, 304,
+ 305, -1, 971, 308, 209, -1, 211, -1, -1, 214,
+ 215, -1, -1, -1, -1, -1, 321, -1, -1, -1,
+ 325, -1, -1, -1, -1, -1, -1, -1, 333, 334,
+ 335, -1, -1, -1, 239, 240, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, -1, 360, 361, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 302, 303, 304,
+ 305, -1, 307, 308, 309, -1, -1, 1076, -1, -1,
+ -1, 1080, -1, -1, -1, -1, 321, 322, 1087, -1,
+ 325, -1, -1, -1, 329, 330, 331, 332, 333, 334,
+ 335, 336, 337, -1, -1, 52, -1, -1, -1, -1,
+ -1, -1, -1, -1, 61, -1, -1, -1, -1, 354,
+ 355, 356, 357, 358, 359, 360, 361, -1, -1, -1,
+ -1, 366, 367, 80, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, -1, -1, -1, -1, -1, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, -1, -1, -1, -1,
+ -1, -1, -1, 1192, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 158, -1, -1, 161, -1, -1, -1, 1217, 454,
+ -1, 168, 169, 170, -1, 172, -1, -1, -1, -1,
+ -1, -1, -1, -1, 1233, -1, 1235, 1236, -1, -1,
+ 187, -1, -1, 190, -1, -1, -1, 1246, -1, -1,
+ -1, -1, 199, -1, 201, -1, -1, -1, -1, -1,
+ -1, -1, 209, -1, -1, -1, -1, -1, 215, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 239, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 1302, 1303, 1304, -1, -1, -1, -1,
+ -1, 1310, 1311, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1336, -1, -1,
+ -1, -1, -1, -1, -1, 1344, -1, 582, 583, 584,
+ 585, 586, 587, 588, -1, 302, -1, -1, -1, -1,
+ 307, -1, 309, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 322, -1, -1, 1377, -1,
+ -1, -1, 329, 330, 331, 332, 1385, 1386, -1, 336,
+ 337, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1405, -1, -1, -1,
+ -1, 1410, 359, -1, 1413, -1, -1, -1, -1, 366,
+ 367, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 1435, 1436, 1437, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 1456, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 1479, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 22, -1, -1, -1, -1, 454, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 41, -1, -1, -1, -1, -1, 1526, -1, -1,
+ -1, -1, -1, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, -1, -1, -1, 1544, -1, 67, -1, 69,
+ 70, 71, 72, 73, 74, 75, 76, -1, -1, -1,
+ -1, -1, 82, 83, -1, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, -1, -1, 99,
+ 100, 101, 102, -1, -1, -1, -1, -1, 108, 109,
+ -1, -1, 112, -1, -1, -1, -1, -1, -1, 119,
+ -1, -1, -1, 123, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 584, 585, 586,
+ 587, 588, 162, 163, -1, 165, 166, 167, -1, -1,
+ -1, -1, -1, -1, -1, 175, -1, -1, -1, -1,
+ 180, -1, 182, 183, 184, -1, -1, -1, 188, 189,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 202, -1, -1, -1, -1, -1, -1, -1,
+ 210, -1, 212, 213, -1, -1, 216, 217, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 236, 237, 238, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, -1, -1, -1, -1, 306, -1, -1, -1,
+ 310, -1, -1, 313, 314, -1, -1, -1, -1, -1,
+ 320, -1, 41, -1, -1, -1, 326, 327, 328, -1,
+ -1, -1, -1, -1, 53, 54, 55, 56, 57, 58,
+ 59, 60, -1, -1, -1, -1, -1, -1, 67, 349,
+ 69, 70, 71, 72, 73, 74, 75, 76, -1, -1,
+ -1, -1, -1, 82, 83, -1, 85, 86, 87, 88,
+ 89, 90, 91, 92, 93, 94, 95, 96, -1, -1,
+ 99, 100, 101, 102, -1, -1, -1, -1, -1, 108,
+ 109, -1, -1, 112, -1, -1, -1, -1, -1, -1,
+ 119, -1, -1, -1, 123, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 162, 163, -1, 165, 166, 167, -1,
+ -1, -1, -1, -1, -1, -1, 175, -1, -1, -1,
+ -1, 180, -1, 182, 183, 184, -1, -1, -1, 188,
+ 189, -1, -1, -1, -1, -1, 41, -1, -1, -1,
+ -1, -1, -1, 202, -1, -1, -1, -1, -1, -1,
+ -1, 210, -1, 212, 213, -1, 61, 216, 217, -1,
+ -1, 66, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 236, 237, 238,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 99, 100, 101, 102, -1, -1,
+ -1, -1, -1, 108, 109, -1, -1, 112, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 282, 283, 284, 285, 286, 287, 288,
+ 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
+ 299, 300, 301, 583, -1, -1, -1, 306, -1, -1,
+ -1, 310, -1, -1, 313, 314, -1, -1, -1, -1,
+ -1, 320, -1, -1, -1, 11, -1, 326, 327, 328,
+ 175, -1, -1, -1, -1, 180, -1, 182, 183, 184,
+ -1, -1, -1, 188, 189, -1, -1, -1, -1, -1,
+ 349, -1, -1, -1, -1, 41, 42, 202, -1, 45,
+ -1, -1, -1, -1, -1, 210, -1, 212, -1, -1,
+ -1, 216, 217, -1, -1, 61, -1, -1, -1, -1,
+ 66, 67, -1, 69, 70, 71, 72, 73, 74, 75,
+ 76, -1, -1, -1, -1, -1, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, -1, -1, 99, 100, 101, 102, -1, -1, -1,
+ -1, -1, 108, 109, -1, -1, 112, -1, -1, -1,
+ -1, 117, 118, 119, 120, -1, 122, 123, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 298, 299, 300, 301, -1, -1, -1,
+ -1, 306, -1, -1, -1, 310, -1, -1, 313, 314,
+ -1, -1, -1, -1, 160, 320, 162, 163, 164, 165,
+ 166, 167, 327, 328, -1, -1, -1, 173, 174, 175,
+ -1, 177, -1, -1, 180, 181, 182, 183, 184, 185,
+ 186, -1, 188, 189, -1, -1, -1, -1, -1, -1,
+ -1, -1, 41, -1, 200, -1, 202, -1, -1, -1,
+ -1, -1, -1, -1, 210, 211, 212, 213, 214, -1,
+ 216, 217, 61, -1, -1, -1, -1, 66, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 236, 237, 238, -1, 240, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 99, 100, 101, 102, -1, -1, -1, -1, -1, 108,
+ 109, -1, -1, 112, 583, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, -1, 303, 304, 305,
+ 306, -1, 308, -1, 310, -1, -1, 313, 314, -1,
+ -1, -1, -1, -1, 320, 321, -1, -1, -1, 325,
+ 326, 327, 328, -1, -1, -1, 175, 333, 334, 335,
+ -1, 180, -1, 182, 183, 184, -1, -1, -1, 188,
+ 189, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ 356, 357, 358, 202, 360, 361, -1, -1, -1, -1,
+ -1, 210, -1, 212, -1, -1, -1, 216, 217, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 582, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 298,
+ 299, 300, 301, -1, -1, -1, -1, 306, -1, -1,
+ -1, 310, -1, -1, 313, 314, -1, -1, -1, -1,
+ -1, 320, -1, -1, -1, -1, -1, -1, 327, 328
+};
+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
+#line 3 "/usr/local/lib/bison.simple"
+
+/* Skeleton output parser for bison,
+ Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
+
+ 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 1, 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+
+#ifndef alloca
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not GNU C. */
+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
+#include <alloca.h>
+#else /* not sparc */
+#if defined (MSDOS) && !defined (__TURBOC__)
+#include <malloc.h>
+#else /* not MSDOS, or __TURBOC__ */
+#if defined(_AIX)
+#include <malloc.h>
+ #pragma alloca
+#else /* not MSDOS, __TURBOC__, or _AIX */
+#ifdef __hpux
+#ifdef __cplusplus
+extern "C" {
+void *alloca (unsigned int);
+};
+#else /* not __cplusplus */
+void *alloca ();
+#endif /* not __cplusplus */
+#endif /* __hpux */
+#endif /* not _AIX */
+#endif /* not MSDOS, or __TURBOC__ */
+#endif /* not sparc. */
+#endif /* not GNU C. */
+#endif /* alloca not defined. */
+
+/* This is the parser code that is written into each bison parser
+ when the %semantic_parser declaration is not specified in the grammar.
+ It was written by Richard Stallman by simplifying the hairy parser
+ used when %semantic_parser is specified. */
+
+/* Note: there must be only one dollar sign in this file.
+ It is replaced by the list of actions, each action
+ as one case of the switch. */
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY -2
+#define YYEOF 0
+#define YYACCEPT return(0)
+#define YYABORT return(1)
+#define YYERROR goto yyerrlab1
+/* Like YYERROR except do call yyerror.
+ This remains here temporarily to ease the
+ transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+#define YYFAIL goto yyerrlab
+#define YYRECOVERING() (!!yyerrstatus)
+#define YYBACKUP(token, value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { yychar = (token), yylval = (value); \
+ yychar1 = YYTRANSLATE (yychar); \
+ YYPOPSTACK; \
+ goto yybackup; \
+ } \
+ else \
+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
+while (0)
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+#ifndef YYPURE
+#define YYLEX yylex()
+#endif
+
+#ifdef YYPURE
+#ifdef YYLSP_NEEDED
+#define YYLEX yylex(&yylval, &yylloc)
+#else
+#define YYLEX yylex(&yylval)
+#endif
+#endif
+
+/* If nonreentrant, generate the variables here */
+
+#ifndef YYPURE
+
+int yychar; /* the lookahead symbol */
+YYSTYPE yylval; /* the semantic value of the */
+ /* lookahead symbol */
+
+#ifdef YYLSP_NEEDED
+YYLTYPE yylloc; /* location data for the lookahead */
+ /* symbol */
+#endif
+
+int yynerrs; /* number of parse errors so far */
+#endif /* not YYPURE */
+
+#if YYDEBUG != 0
+int yydebug; /* nonzero means print parse trace */
+/* Since this is uninitialized, it does not stop multiple parsers
+ from coexisting. */
+#endif
+
+/* YYINITDEPTH indicates the initial size of the parser's stacks */
+
+#ifndef YYINITDEPTH
+#define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH is the maximum size the stacks can grow to
+ (effective only if the built-in stack extension method is used). */
+
+#if YYMAXDEPTH == 0
+#undef YYMAXDEPTH
+#endif
+
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH 10000
+#endif
+
+/* Prevent warning if -Wstrict-prototypes. */
+#ifdef __GNUC__
+int yyparse (void);
+#endif
+
+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
+#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
+#else /* not GNU C or C++ */
+#ifndef __cplusplus
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_bcopy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#else /* __cplusplus */
+
+/* This is the most reliable way to avoid incompatibilities
+ in available built-in functions on various systems. */
+static void
+__yy_bcopy (char *from, char *to, int count)
+{
+ register char *f = from;
+ register char *t = to;
+ register int i = count;
+
+ while (i-- > 0)
+ *t++ = *f++;
+}
+
+#endif
+#endif
+
+#line 184 "/usr/local/lib/bison.simple"
+int
+yyparse()
+{
+ register int yystate;
+ register int yyn;
+ register short *yyssp;
+ register YYSTYPE *yyvsp;
+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
+
+ short yyssa[YYINITDEPTH]; /* the state stack */
+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
+
+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
+
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
+ YYLTYPE *yyls = yylsa;
+ YYLTYPE *yylsp;
+
+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
+#else
+#define YYPOPSTACK (yyvsp--, yyssp--)
+#endif
+
+ int yystacksize = YYINITDEPTH;
+
+#ifdef YYPURE
+ int yychar;
+ YYSTYPE yylval;
+ int yynerrs;
+#ifdef YYLSP_NEEDED
+ YYLTYPE yylloc;
+#endif
+#endif
+
+ YYSTYPE yyval; /* the variable used to return */
+ /* semantic values from the action */
+ /* routines */
+
+ int yylen;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Starting parse\n");
+#endif
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss - 1;
+ yyvsp = yyvs;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls;
+#endif
+
+/* Push a new state, which is found in yystate . */
+/* In all cases, when you get here, the value and location stacks
+ have just been pushed. so pushing a state here evens the stacks. */
+yynewstate:
+
+ *++yyssp = yystate;
+
+ if (yyssp >= yyss + yystacksize - 1)
+ {
+ /* Give user a chance to reallocate the stack */
+ /* Use copies of these so that the &'s don't force the real ones into memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ short *yyss1 = yyss;
+#ifdef YYLSP_NEEDED
+ YYLTYPE *yyls1 = yyls;
+#endif
+
+ /* Get the current used size of the three stacks, in elements. */
+ int size = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ /* Each stack pointer address is followed by the size of
+ the data in use in that stack, in bytes. */
+#ifdef YYLSP_NEEDED
+ /* This used to be a conditional around just the two extra args,
+ but that might be undefined if yyoverflow is a macro. */
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yyls1, size * sizeof (*yylsp),
+ &yystacksize);
+#else
+ yyoverflow("parser stack overflow",
+ &yyss1, size * sizeof (*yyssp),
+ &yyvs1, size * sizeof (*yyvsp),
+ &yystacksize);
+#endif
+
+ yyss = yyss1; yyvs = yyvs1;
+#ifdef YYLSP_NEEDED
+ yyls = yyls1;
+#endif
+#else /* no yyoverflow */
+ /* Extend the stack our own way. */
+ if (yystacksize >= YYMAXDEPTH)
+ {
+ yyerror("parser stack overflow");
+ return 2;
+ }
+ yystacksize *= 2;
+ if (yystacksize > YYMAXDEPTH)
+ yystacksize = YYMAXDEPTH;
+ yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
+ __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
+ yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
+ __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
+#ifdef YYLSP_NEEDED
+ yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
+ __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
+#endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + size - 1;
+ yyvsp = yyvs + size - 1;
+#ifdef YYLSP_NEEDED
+ yylsp = yyls + size - 1;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
+#endif
+
+ if (yyssp >= yyss + yystacksize - 1)
+ YYABORT;
+ }
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Entering state %d\n", yystate);
+#endif
+
+ goto yybackup;
+ yybackup:
+
+/* Do appropriate processing given the current state. */
+/* Read a lookahead token if we need one and don't already have one. */
+/* yyresume: */
+
+ /* First try to decide what to do without reference to lookahead token. */
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yydefault;
+
+ /* Not known => get a lookahead token if don't already have one. */
+
+ /* yychar is either YYEMPTY or YYEOF
+ or a valid token in external form. */
+
+ if (yychar == YYEMPTY)
+ {
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Reading a token: ");
+#endif
+ yychar = YYLEX;
+ }
+
+ /* Convert token to internal form (in yychar1) for indexing tables with */
+
+ if (yychar <= 0) /* This means end of input. */
+ {
+ yychar1 = 0;
+ yychar = YYEOF; /* Don't call YYLEX any more */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Now at end of input.\n");
+#endif
+ }
+ else
+ {
+ yychar1 = YYTRANSLATE(yychar);
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
+ /* Give the individual parser a way to print the precise meaning
+ of a token, for further debugging info. */
+#ifdef YYPRINT
+ YYPRINT (stderr, yychar, yylval);
+#endif
+ fprintf (stderr, ")\n");
+ }
+#endif
+ }
+
+ yyn += yychar1;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
+ goto yydefault;
+
+ yyn = yytable[yyn];
+
+ /* yyn is what to do for this token type in this state.
+ Negative => reduce, -yyn is rule number.
+ Positive => shift, yyn is new state.
+ New state is final state => don't bother to shift,
+ just return success.
+ 0, or most negative number => error. */
+
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrlab;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Shift the lookahead token. */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
+#endif
+
+ /* Discard the token being shifted unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ /* count tokens shifted since error; after three, turn off error status. */
+ if (yyerrstatus) yyerrstatus--;
+
+ yystate = yyn;
+ goto yynewstate;
+
+/* Do the default action for the current state. */
+yydefault:
+
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+
+/* Do a reduction. yyn is the number of a rule to reduce with. */
+yyreduce:
+ yylen = yyr2[yyn];
+ if (yylen > 0)
+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ int i;
+
+ fprintf (stderr, "Reducing via rule %d (line %d), ",
+ yyn, yyrline[yyn]);
+
+ /* Print the symbols being reduced, and their result. */
+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
+ }
+#endif
+
+
+ switch (yyn) {
+
+case 2:
+#line 872 "rtf.y"
+{ FLAG_DebutTeX=1;
+ fprintf(SORT,"%%\n%% This document was generated using\n%% ");
+ fprintf(SORT,"w2LaTeX\n%% Bug Reports: jgarmend@cyberspace.org\n%%\n\n");
+ fprintf(SORT,"\\documentstyle[a4]{article}\n");
+ fprintf(SORT,"\n\\parindent = %d pt \n",0/*(PZ_FD.FDDEFTAB)*/);
+ fprintf(SORT,"\n\\oddsidemargin0cm\n");
+ fprintf(SORT,"\n\\evensidemargin0cm\n");
+ fprintf(SORT,"\n\\hoffset%dpt \n",(int)(-72+(PZ_FD.FDMARGL)));
+ fprintf(SORT,"\n\\textwidth%dpt \n",
+ (int)(614-(PZ_FD.FDMARGL)-(PZ_FD.FDMARGR)));
+ fprintf(SORT,"\n\\vsize=%dpt\n",(int)(644-(PZ_FD.FDMARGT)));
+ fprintf(SORT,"\n\\font\\mathex=cmex10\n");
+ fprintf(SORT,"\n\\font\\pzrm=cmr10\n");
+ fprintf(SORT,"\n\\pagestyle{myheadings}\n");
+ fprintf(SORT,"\n\\begin{document}\n");
+ /*parcoursfontes();*/
+ ;
+ break;}
+case 3:
+#line 889 "rtf.y"
+{ ifDTfprintf(SORT,"\n\\end{document}\n"); /*parcourscontexts();*/
+ FLAG_EndTeX=1;;
+ break;}
+case 22:
+#line 923 "rtf.y"
+{ ASCII_TABLE=1; ;
+ break;}
+case 23:
+#line 924 "rtf.y"
+{ ASCII_TABLE=2; ;
+ break;}
+case 27:
+#line 932 "rtf.y"
+{ yyval.numo = 1; ;
+ break;}
+case 28:
+#line 933 "rtf.y"
+{ yyval.numo = yyvsp[0].numo; ;
+ break;}
+case 29:
+#line 935 "rtf.y"
+{ yyval.numo=yyvsp[0].numo; ;
+ break;}
+case 30:
+#line 937 "rtf.y"
+{ yyval.pcdata = yyvsp[0].pcdata; ;
+ break;}
+case 31:
+#line 938 "rtf.y"
+{ yyval.pcdata = ";"; ;
+ break;}
+case 32:
+#line 939 "rtf.y"
+{ yyval.pcdata = "e"; ;
+ break;}
+case 33:
+#line 940 "rtf.y"
+{ yyval.pcdata = "q"; ;
+ break;}
+case 34:
+#line 941 "rtf.y"
+{ yyval.pcdata = " "; ;
+ break;}
+case 35:
+#line 942 "rtf.y"
+{ yyval.pcdata = " "; ;
+ break;}
+case 36:
+#line 944 "rtf.y"
+{ yyval.pcdata = yyvsp[0].pcdata; ;
+ break;}
+case 37:
+#line 945 "rtf.y"
+{ yyval.pcdata = ";"; ;
+ break;}
+case 38:
+#line 946 "rtf.y"
+{ yyval.pcdata = "e"; ;
+ break;}
+case 39:
+#line 947 "rtf.y"
+{ yyval.pcdata = "q"; ;
+ break;}
+case 40:
+#line 948 "rtf.y"
+{ yyval.pcdata = " "; ;
+ break;}
+case 41:
+#line 949 "rtf.y"
+{ yyval.pcdata = " "; ;
+ break;}
+case 42:
+#line 950 "rtf.y"
+{ yyval.pcdata = ","; ;
+ break;}
+case 47:
+#line 958 "rtf.y"
+{ nouvfonte(yyvsp[-6].numo,yyvsp[-5].numo,yyvsp[-4].numo,yyvsp[-3].numo,yyvsp[0].pcdata); ;
+ break;}
+case 49:
+#line 962 "rtf.y"
+{ yyval.numo=LF_FNIL; ;
+ break;}
+case 50:
+#line 963 "rtf.y"
+{ yyval.numo=LF_FROMAN; ;
+ break;}
+case 51:
+#line 964 "rtf.y"
+{ yyval.numo=LF_FSWISS; ;
+ break;}
+case 52:
+#line 965 "rtf.y"
+{ yyval.numo=LF_FMODERN; ;
+ break;}
+case 53:
+#line 966 "rtf.y"
+{ yyval.numo=LF_FSCRIPT; ;
+ break;}
+case 54:
+#line 967 "rtf.y"
+{ yyval.numo=LF_FDECOR; ;
+ break;}
+case 55:
+#line 968 "rtf.y"
+{ yyval.numo=LF_FTECH; ;
+ break;}
+case 56:
+#line 969 "rtf.y"
+{ yyval.numo=LF_FBIDI; ;
+ break;}
+case 57:
+#line 975 "rtf.y"
+{ yyval.numo=-1; ;
+ break;}
+case 58:
+#line 976 "rtf.y"
+{ yyval.numo=yyvsp[0].numo; ;
+ break;}
+case 59:
+#line 979 "rtf.y"
+{ yyval.numo=-1; ;
+ break;}
+case 60:
+#line 980 "rtf.y"
+{ yyval.numo=yyvsp[0].numo; ;
+ break;}
+case 167:
+#line 1157 "rtf.y"
+{ PZ_FD.FDDEFTAB=(yyvsp[0].numo/20); ;
+ break;}
+case 213:
+#line 1207 "rtf.y"
+{ PZ_FD.FDPAPERW=(yyvsp[0].numo/20); ;
+ break;}
+case 214:
+#line 1208 "rtf.y"
+{ PZ_FD.FDPAPERH=(yyvsp[0].numo/20); ;
+ break;}
+case 215:
+#line 1209 "rtf.y"
+{ PZ_FD.FDPSZ=(yyvsp[0].numo/20); ;
+ break;}
+case 216:
+#line 1210 "rtf.y"
+{ PZ_FD.FDMARGL=(yyvsp[0].numo/20); ;
+ break;}
+case 217:
+#line 1211 "rtf.y"
+{ PZ_FD.FDMARGR=(yyvsp[0].numo/20); ;
+ break;}
+case 218:
+#line 1212 "rtf.y"
+{ PZ_FD.FDMARGT=(yyvsp[0].numo/20); ;
+ break;}
+case 219:
+#line 1213 "rtf.y"
+{ PZ_FD.FDMARGB=(yyvsp[0].numo/20); ;
+ break;}
+case 220:
+#line 1214 "rtf.y"
+{ PZ_FD.FDFACINGP=1; ;
+ break;}
+case 221:
+#line 1215 "rtf.y"
+{ PZ_FD.FDGUTTER=(yyvsp[0].numo/20); ;
+ break;}
+case 222:
+#line 1216 "rtf.y"
+{ PZ_FD.FDMARGMIRROR=1; ;
+ break;}
+case 223:
+#line 1217 "rtf.y"
+{ PZ_FD.FDLANDSCAPE=1; ;
+ break;}
+case 224:
+#line 1218 "rtf.y"
+{ PZ_FD.FDPGNSTART=(yyvsp[0].numo/20); ;
+ break;}
+case 225:
+#line 1219 "rtf.y"
+{ PZ_FD.FDWIDOWCTRL=1; ;
+ break;}
+case 251:
+#line 1252 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 254:
+#line 1256 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 320:
+#line 1334 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 322:
+#line 1338 "rtf.y"
+{ FLAG_Footer=1; ifDTfprintf(SORT,"\\markright{");;
+ break;}
+case 355:
+#line 1378 "rtf.y"
+{ Num_Max_Col=0; Inter_Col=0; FLAG_NIT=0 ;;
+ break;}
+case 369:
+#line 1398 "rtf.y"
+{ Inter_Col=yyvsp[0].numo/10; ;
+ break;}
+case 382:
+#line 1414 "rtf.y"
+{ if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n"); };
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",FLAG_FI);
+ FLAG_Dollars=0;
+ ;
+ break;}
+case 383:
+#line 1425 "rtf.y"
+{ yyval.pcdata=yyvsp[0].pcdata; ;
+ break;}
+case 384:
+#line 1428 "rtf.y"
+{ ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ ;
+ break;}
+case 385:
+#line 1432 "rtf.y"
+{
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==-1 && !FLAG_Indice)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==-1 && !FLAG_Exposant)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ yyval.pcdata="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ ;
+ break;}
+case 463:
+#line 1549 "rtf.y"
+{ /*ifDTfprintf(SORT,"\\hline %%\n");*/ ;
+ break;}
+case 464:
+#line 1550 "rtf.y"
+{ /*FLAG_BorderBot=1;*/ ;
+ break;}
+case 485:
+#line 1575 "rtf.y"
+{ yyval.motcomm=""; ;
+ break;}
+case 486:
+#line 1576 "rtf.y"
+{ yyval.motcomm=yyvsp[0].motcomm; ;
+ break;}
+case 487:
+#line 1578 "rtf.y"
+{ yyval.motcomm=yyvsp[0].pcdata; ;
+ break;}
+case 488:
+#line 1579 "rtf.y"
+{
+ yyval.motcomm = (char * ) malloc (strlen(yyvsp[-1].motcomm) + strlen(yyvsp[0].pcdata) + 1);
+ strcpy(yyval.motcomm,yyvsp[-1].motcomm);
+ strcat(yyval.motcomm,yyvsp[0].pcdata);
+
+ ;
+ break;}
+case 489:
+#line 1586 "rtf.y"
+{Num_Col_Tabular=0; FLAG_Tableau=0; FLAG_NIT=1;;
+ break;}
+case 504:
+#line 1608 "rtf.y"
+{
+ if (Num_Col_Tabular<Num_Max_Col)
+ {
+ if (FLAG_DebutTeX) endkeepcontext();
+ ifDTfprintf(SORT,"%s{%dpt}",pzIntermDef,
+ Largeur_Cols[Num_Col_Tabular++]);
+ if (FLAG_DebutTeX) showcontext();
+ }
+ else
+ { if (FLAG_DebutTeX) contextback();
+ ifDTfprintf(SORT,"%s",pzEndDef);
+ }
+ ;
+ break;}
+case 507:
+#line 1625 "rtf.y"
+{ if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n");};
+ FLAG_Dollars=0;
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",FLAG_FI);
+ ;
+ break;}
+case 508:
+#line 1636 "rtf.y"
+{ if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",0);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",0);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",0);
+ FLAG_LI=0;
+ FLAG_RI=0;
+ FLAG_FI=0;
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n"); };
+ /*if (Num_Col_Tabular!=0) Num_Max_Col=Num_Col_Tabular;
+ Num_Col_Tabular=0;*/
+ ifDTfprintf(SORT,"\\normalsize ");
+ ifDTfprintf(SORT,"\\pzrm ");
+ if (FLAG_LI!=0)
+ {
+ FLAG_LI=0;
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",0);
+ }
+ if (FLAG_RI!=0)
+ {
+ FLAG_RI=0;
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",0);
+ }
+ if (FLAG_FI!=0)
+ {
+ FLAG_FI=0;
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",0);
+ }
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=JUST;
+ ;
+ break;}
+case 511:
+#line 1690 "rtf.y"
+{ if (FLAG_Tableau==0 && Num_Col_Tabular==0 /* && Num_Col_Tabular<Num_Max_Col*/)
+ {
+ ifDTfprintf(SORT,"%s{%dpt}",pzStartDef,
+ Largeur_Cols[0]+Inter_Col);
+ Num_Col_Tabular=1;
+ ContextInitTab=ContextActuel;
+ if (FLAG_DebutTeX) showcontext();
+ }
+ FLAG_Tableau=1;
+ FLAG_NIT=1;
+ ;
+ break;}
+case 519:
+#line 1709 "rtf.y"
+{ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (!FLAG_Footer) { ifDTfprintf(SORT,"\n\\begin{flushleft}\n"); };
+
+ if (ContextActuel==NULL && FLAG_DebutTeX ) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=LEFT;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_FlushLeft=1;
+ ;
+ break;}
+case 520:
+#line 1726 "rtf.y"
+{ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (!FLAG_Footer && FLAG_NIT) { ifDTfprintf(SORT,"\n\\begin{flushright}\n"); };
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=RIGHT;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_FlushRight=1;
+ ;
+ break;}
+case 521:
+#line 1742 "rtf.y"
+{ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=JUST;
+ ;
+ break;}
+case 522:
+#line 1761 "rtf.y"
+{ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (!FLAG_Footer && FLAG_NIT) { ifDTfprintf(SORT,"\n\\begin{center}\n"); }
+ if (FLAG_Footer) { ifDTfprintf(SORT," \\centerline "); };
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX && !FLAG_Footer) ContextActuel->EtatTexte=CENTER;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_Center=1;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_Dollars=1;
+ ;
+ break;}
+case 523:
+#line 1778 "rtf.y"
+{ if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_FI=(int)(yyvsp[0].numo/20);
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",FLAG_FI);
+ }
+ ;
+ break;}
+case 524:
+#line 1784 "rtf.y"
+{ if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_LI=(int)(yyvsp[0].numo/20);
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ }
+ ;
+ break;}
+case 525:
+#line 1790 "rtf.y"
+{ if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_RI=(int)(yyvsp[0].numo/20);
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ }
+ ;
+ break;}
+case 636:
+#line 1941 "rtf.y"
+{ if (Num_Max_Col==0)
+ Largeur_Cols[Num_Max_Col]=(yyvsp[0].numo/20);
+ if (Num_Max_Col!=0)
+ {
+ cpt=1;
+ Largeur_Cols[Num_Max_Col]=(yyvsp[0].numo/20);
+ while(cpt<=Num_Max_Col)
+ Largeur_Cols[Num_Max_Col]-=Largeur_Cols[Num_Max_Col-(cpt++)];
+ }
+ Num_Max_Col++;;
+ break;}
+case 700:
+#line 2031 "rtf.y"
+{ ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ ;
+ break;}
+case 701:
+#line 2035 "rtf.y"
+{
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==-1 && !FLAG_Indice)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==-1 && !FLAG_Exposant)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ yyval.pcdata="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ ;
+ break;}
+case 702:
+#line 2062 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 705:
+#line 2066 "rtf.y"
+{ if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; ;
+ break;}
+case 708:
+#line 2071 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[0].pcdata;
+ ;
+ break;}
+case 709:
+#line 2078 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[0].pcdata;
+ ;
+ break;}
+case 710:
+#line 2085 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[-1].pcdata;
+ ;
+ break;}
+case 711:
+#line 2092 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[-1].pcdata;
+ ;
+ break;}
+case 712:
+#line 2099 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 713:
+#line 2100 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 714:
+#line 2101 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 715:
+#line 2102 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 716:
+#line 2103 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 717:
+#line 2104 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 718:
+#line 2105 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 719:
+#line 2106 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 720:
+#line 2107 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 721:
+#line 2108 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 722:
+#line 2109 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 723:
+#line 2110 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 724:
+#line 2111 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 725:
+#line 2112 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 726:
+#line 2113 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 727:
+#line 2114 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 728:
+#line 2115 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 729:
+#line 2116 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 730:
+#line 2117 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 731:
+#line 2118 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 732:
+#line 2119 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 733:
+#line 2120 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 734:
+#line 2121 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 735:
+#line 2122 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 736:
+#line 2123 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 737:
+#line 2124 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 738:
+#line 2125 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 739:
+#line 2126 "rtf.y"
+{ FLAG_InPict=1; FLAG_WMetafile=0; ;
+ break;}
+case 741:
+#line 2128 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 742:
+#line 2129 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 743:
+#line 2130 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 744:
+#line 2131 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 746:
+#line 2133 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 747:
+#line 2134 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 748:
+#line 2135 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 749:
+#line 2136 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 750:
+#line 2137 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 751:
+#line 2138 "rtf.y"
+{ yyval.pcdata=""; ;
+ break;}
+case 752:
+#line 2140 "rtf.y"
+{ yyval.pcdata=""; if (FLAG_WMetafile)
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ FLAG_PICTLargeur,FLAG_PICTHauteur);
+ else
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ (int)(FLAG_PICTLargeur*20),
+ (int)(FLAG_PICTHauteur*20));
+ FLAG_PICTHauteur=0;
+ FLAG_PICTLargeur=0;
+ FLAG_InPict=0;
+ FLAG_WMetafile=0;
+ ;
+ break;}
+case 753:
+#line 2152 "rtf.y"
+{ yyval.pcdata=""; if (FLAG_WMetafile)
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ FLAG_PICTLargeur,FLAG_PICTHauteur);
+ else
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ (int)(FLAG_PICTLargeur*20),
+ (int)(FLAG_PICTHauteur*20));
+ FLAG_PICTHauteur=0;
+ FLAG_PICTLargeur=0;
+ FLAG_InPict=0;
+ FLAG_WMetafile=0;
+ ;
+ break;}
+case 756:
+#line 2168 "rtf.y"
+{ /*ifDTfprintf(SORT,"}%%\n");*/ ;
+ break;}
+case 757:
+#line 2169 "rtf.y"
+{ ifDTfprintf(SORT,"}%%\n"); ;
+ break;}
+case 759:
+#line 2172 "rtf.y"
+{ FLAG_Exposant=0; FLAG_Indice=0;
+ /* fseek(SORT,-strlen("$^{"),1); */
+ ifDTfprintf(SORT,"\\footnote{%%\n"); ;
+ break;}
+case 766:
+#line 2184 "rtf.y"
+{yyval.pcdata="";;
+ break;}
+case 767:
+#line 2185 "rtf.y"
+{ yyval.pcdata = (char * ) malloc (strlen(yyvsp[-1].pcdata) + strlen(yyvsp[0].pcdata) + 1);
+ strcpy(yyval.pcdata,yyvsp[-1].pcdata);
+ strcat(yyval.pcdata,yyvsp[0].pcdata);
+ ;
+ break;}
+case 768:
+#line 2191 "rtf.y"
+{ yyval.pcdata = (char * ) malloc (strlen(yyvsp[0].pcdata) + 1);
+ strcpy(yyval.pcdata,yyvsp[0].pcdata);
+ ;
+ break;}
+case 769:
+#line 2194 "rtf.y"
+{ yyval.pcdata = (char * ) malloc (strlen(yyvsp[-1].pcdata) + strlen(yyvsp[0].pcdata) + 1);
+ strcpy(yyval.pcdata,yyvsp[-1].pcdata);
+ strcat(yyval.pcdata,yyvsp[0].pcdata);
+ ;
+ break;}
+case 770:
+#line 2199 "rtf.y"
+{
+ yyval.pcdata=yyvsp[0].pcdata;
+ if (FLAG_Symbol==0)
+ {
+ printText(yyvsp[0].pcdata);
+ }
+ if (FLAG_Symbol!=0)
+ { if (FLAG_Equation==0)
+ { ifDTfprintf(SORT,"$");
+ printSymbol(yyvsp[0].pcdata);
+ ifDTfprintf(SORT,"$");
+ }
+ if (FLAG_Equation!=0) printSymbol(yyvsp[0].pcdata);
+ }
+ ;
+ break;}
+case 771:
+#line 2214 "rtf.y"
+{ yyval.pcdata=""; ifDTfprintf(SORT,"%d",yyvsp[0].numo); ;
+ break;}
+case 772:
+#line 2215 "rtf.y"
+{ yyval.pcdata=""; /*FLAG_Equation=0;*/ ;
+ break;}
+case 774:
+#line 2218 "rtf.y"
+{ if (yyvsp[0].numo==1) { ifDTfprintf(SORT,"\\bf "); FLAG_Bold=1; }
+ if (yyvsp[0].numo!=1)
+ {
+ if (yyvsp[0].numo==0) ifDTfprintf(SORT,"\t\t\t ****** Fin de bold \n");
+ if (yyvsp[0].numo!=0) ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le bold \n");
+ }
+ ;
+ break;}
+case 777:
+#line 2227 "rtf.y"
+{ if (FLAG_DebutTeX)
+ {
+ if (FLAG_Equation==0)
+ {FLAG_Equation=-1;
+ ifDTfprintf(SORT,"$_{");
+ }
+ else
+ { ifDTfprintf(SORT,"_{"); }
+ FLAG_Indice++;
+ }
+ ;
+ break;}
+case 783:
+#line 2243 "rtf.y"
+{ FonteActuelle=DebLisFontes;
+ while(FonteActuelle!=NULL && FonteActuelle->LF_Fontnum!=yyvsp[0].numo)
+ FonteActuelle=FonteActuelle->suiv;
+ if (FonteActuelle!=NULL)
+ { if (!strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ FLAG_Symbol=1;
+ if (strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ {
+ ifDTfprintf(SORT,"%s",FonteActuelle->LF_TexEquiv);
+ FLAG_Symbol=0;
+ }
+ }
+ else FLAG_Symbol=0;
+
+ if (FLAG_Bold)
+ ifDTfprintf(SORT,"\\bf ");
+ if (FLAG_Italique)
+ ifDTfprintf(SORT,"\\it ");
+ ;
+ break;}
+case 784:
+#line 2266 "rtf.y"
+{ if (FLAG_DebutTeX && FLAG_Equation==0) ifDTfprintf(SORT,"%s",EqTeXTaille(yyvsp[0].numo));
+ FonteActuelle=DebLisFontes;
+ while(FonteActuelle!=NULL && FonteActuelle->LF_Fontnum!=yyvsp[0].numo)
+ FonteActuelle=FonteActuelle->suiv;
+ if (FonteActuelle!=NULL)
+ { if (!strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ FLAG_Symbol=1;
+ if (strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ {
+ ifDTfprintf(SORT,"%s",FonteActuelle->LF_TexEquiv);
+ FLAG_Symbol=0;
+ }
+ }
+ else FLAG_Symbol=0;
+ /* On est obliges de repositionner les parametres de la fonte... */
+ if (FLAG_Bold)
+ ifDTfprintf(SORT,"\\bf ");
+ if (FLAG_Italique)
+ ifDTfprintf(SORT,"\\it ");
+ ;
+ break;}
+case 785:
+#line 2286 "rtf.y"
+{ if (yyvsp[0].numo==1) { ifDTfprintf(SORT,"\\it "); FLAG_Italique=1; }
+ else if (yyvsp[0].numo==0) ifDTfprintf(SORT,"\t\t\t ****** Fin de italique \n");
+ else ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le italique \n");
+ ;
+ break;}
+case 793:
+#line 2297 "rtf.y"
+{ if (FLAG_DebutTeX)
+ { if (yyvsp[0].numo==1)
+ {
+ ifDTfprintf(SORT,"\\underline {");
+ FLAG_Underline=1;
+ }
+ else if (yyvsp[0].numo==0)
+ {
+ ifDTfprintf(SORT,"\t\t\t ****** Fin de underline \n");
+ FLAG_Underline=0;
+ }
+ else ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le underline \n");
+ }
+ ;
+ break;}
+case 798:
+#line 2315 "rtf.y"
+{ if (FLAG_DebutTeX)
+ {
+ if (FLAG_Equation==0)
+ {FLAG_Equation=-1;
+ ifDTfprintf(SORT,"$^{%%\n");
+ }
+ else
+ { ifDTfprintf(SORT,"^{%%\n"); }
+ FLAG_Exposant++;
+ }
+ ;
+ break;}
+case 809:
+#line 2341 "rtf.y"
+{ ifDTfprintf(SORT,"\\today "); ;
+ break;}
+case 810:
+#line 2342 "rtf.y"
+{ ifDTfprintf(SORT,"\\today "); ;
+ break;}
+case 811:
+#line 2343 "rtf.y"
+{ ifDTfprintf(SORT,"\\today "); ;
+ break;}
+case 819:
+#line 2353 "rtf.y"
+{ if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par "); };
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",FLAG_FI);
+ FLAG_Dollars=0;
+ ;
+ break;}
+case 821:
+#line 2370 "rtf.y"
+{ ifDTfprintf(SORT,"\\newpage ");;
+ break;}
+case 823:
+#line 2372 "rtf.y"
+{ ifDTfprintf(SORT,"\\newline ");;
+ break;}
+case 828:
+#line 2377 "rtf.y"
+{ ifDTfprintf(SORT,"\n\\hspace{%dpt}", PZ_FD.FDDEFTAB);;
+ break;}
+case 829:
+#line 2378 "rtf.y"
+{ ifDTfprintf(SORT,"--"); ;
+ break;}
+case 830:
+#line 2379 "rtf.y"
+{ ifDTfprintf(SORT,"-"); ;
+ break;}
+case 831:
+#line 2380 "rtf.y"
+{ ifDTfprintf(SORT,"\\,\\,"); ;
+ break;}
+case 832:
+#line 2381 "rtf.y"
+{ ifDTfprintf(SORT,"\\, "); ;
+ break;}
+case 833:
+#line 2382 "rtf.y"
+{ if (FLAG_Equation) ifDTfprintf(SORT,"\\bullet ");
+ if (!FLAG_Equation) ifDTfprintf(SORT,"$\\bullet $"); ;
+ break;}
+case 834:
+#line 2384 "rtf.y"
+{ ifDTfprintf(SORT,"`"); ;
+ break;}
+case 835:
+#line 2385 "rtf.y"
+{ ifDTfprintf(SORT,"'"); ;
+ break;}
+case 836:
+#line 2386 "rtf.y"
+{ ifDTfprintf(SORT,"\""); ;
+ break;}
+case 837:
+#line 2387 "rtf.y"
+{ ifDTfprintf(SORT,"\""); ;
+ break;}
+case 838:
+#line 2388 "rtf.y"
+{ FLAG_Equation=1; ;
+ break;}
+case 840:
+#line 2390 "rtf.y"
+{ ifDTfprintf(SORT,"\\ "); ;
+ break;}
+case 844:
+#line 2396 "rtf.y"
+{ {
+ unsigned long ullu;
+ ullu=strtol(yyvsp[0].motcomm,NULL,16);
+ if (FLAG_Symbol) printApostrophe(ullu);
+ if (!FLAG_Symbol)
+ {
+ if (ASCII_TABLE==2 && !FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_PC[ullu-DEBASCII_PC]);
+ if (ASCII_TABLE==1 && !FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_MAC[ullu-DEBASCII_MAC]);
+ if (ASCII_TABLE==2 && FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_PC_MATH[ullu-DEBASCII_PC]);
+ if (ASCII_TABLE==1 && FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_MAC_MATH[ullu-DEBASCII_MAC]);
+ }
+ }
+ ;
+ break;}
+case 851:
+#line 2422 "rtf.y"
+{ FLAG_WMetafile=1; ;
+ break;}
+case 876:
+#line 2452 "rtf.y"
+{ FLAG_PICTLargeur=yyvsp[0].numo/20; ;
+ break;}
+case 877:
+#line 2453 "rtf.y"
+{ FLAG_PICTHauteur=yyvsp[0].numo/20; ;
+ break;}
+case 878:
+#line 2454 "rtf.y"
+{ FLAG_PICTLargeur=yyvsp[0].numo/20; ;
+ break;}
+case 879:
+#line 2455 "rtf.y"
+{ FLAG_PICTHauteur=yyvsp[0].numo/20; ;
+ break;}
+case 880:
+#line 2457 "rtf.y"
+{ FLAG_PICTLargeur=yyvsp[0].numo/20; ;
+ break;}
+case 881:
+#line 2458 "rtf.y"
+{ FLAG_PICTHauteur=yyvsp[0].numo/20; ;
+ break;}
+case 882:
+#line 2459 "rtf.y"
+{ FLAG_PICTLargeur=yyvsp[0].numo/20; ;
+ break;}
+case 883:
+#line 2460 "rtf.y"
+{ FLAG_PICTHauteur=yyvsp[0].numo/20; ;
+ break;}
+case 1008:
+#line 2630 "rtf.y"
+{ FLAG_Equation=1;
+ /*if (FLAG_Dollars==1) ifDTfprintf(SORT,"$$ ");
+ if (FLAG_Dollars!=1) */ifDTfprintf(SORT,"$ ");
+ ;
+ break;}
+case 1009:
+#line 2634 "rtf.y"
+{ FLAG_Equation=0;
+ /*if (FLAG_Dollars==1) ifDTfprintf(SORT," $$");
+ if (FLAG_Dollars!=1) */ifDTfprintf(SORT," $");
+ FLAG_Dollars=0;
+ ;
+ break;}
+case 1013:
+#line 2644 "rtf.y"
+{
+ yyval.pcdata=yyvsp[0].pcdata;
+ if (FLAG_Symbol==0)
+ {
+ ifDTfprintf(SORT,"{%%\n\\rm ");
+ printText(yyvsp[0].pcdata);
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ else
+ {
+ printSymbol(yyvsp[0].pcdata);
+ }
+ ;
+ break;}
+case 1015:
+#line 2659 "rtf.y"
+{
+ yyval.pcdata=yyvsp[0].pcdata;
+ if (FLAG_Symbol==0)
+ {
+ ifDTfprintf(SORT,"{%%\n\\rm ");
+ printText(yyvsp[0].pcdata);
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ else
+ {
+ printSymbol(yyvsp[0].pcdata);
+ }
+ ;
+ break;}
+case 1026:
+#line 2684 "rtf.y"
+{ FLAG_Integrale=INTINT; ;
+ break;}
+case 1027:
+#line 2686 "rtf.y"
+{if (FLAG_Integrale==INTINT)
+ ifDTfprintf(SORT,"\\int_{");
+ if (FLAG_Integrale==INTSUM)
+ ifDTfprintf(SORT,"\\sum_{");
+ if (FLAG_Integrale==INTPROD)
+ ifDTfprintf(SORT,"\\prod_{");
+ ;
+ break;}
+case 1028:
+#line 2693 "rtf.y"
+{ifDTfprintf(SORT,"}^{");
+ ;
+ break;}
+case 1029:
+#line 2695 "rtf.y"
+{ifDTfprintf(SORT,"}{");
+ ;
+ break;}
+case 1030:
+#line 2697 "rtf.y"
+{ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1031:
+#line 2699 "rtf.y"
+{ FLAG_Integrale=INTINT; ;
+ break;}
+case 1032:
+#line 2700 "rtf.y"
+{if (FLAG_Integrale==INTINT)
+ ifDTfprintf(SORT,"\\int_{");
+ if (FLAG_Integrale==INTSUM)
+ ifDTfprintf(SORT,"\\sum_{");
+ if (FLAG_Integrale==INTPROD)
+ ifDTfprintf(SORT,"\\prod_{");
+ ;
+ break;}
+case 1033:
+#line 2707 "rtf.y"
+{ifDTfprintf(SORT,"}^{");
+ ;
+ break;}
+case 1034:
+#line 2709 "rtf.y"
+{ifDTfprintf(SORT,"}{");
+ ;
+ break;}
+case 1035:
+#line 2711 "rtf.y"
+{ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1036:
+#line 2715 "rtf.y"
+{ifDTfprintf(SORT,"\\sqrt[{");
+ ;
+ break;}
+case 1037:
+#line 2717 "rtf.y"
+{ifDTfprintf(SORT,"}]{");
+ ;
+ break;}
+case 1038:
+#line 2719 "rtf.y"
+{ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1039:
+#line 2723 "rtf.y"
+{ifDTfprintf(SORT,"\\frac{");
+ ;
+ break;}
+case 1040:
+#line 2725 "rtf.y"
+{ifDTfprintf(SORT,"}{");
+ ;
+ break;}
+case 1041:
+#line 2727 "rtf.y"
+{ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1042:
+#line 2731 "rtf.y"
+{ifDTfprintf(SORT,"\\begin{array}{c}\n");
+ FLAG_InMatrix=1;
+ FLAG_MatrixColCour=1;
+ ;
+ break;}
+case 1043:
+#line 2735 "rtf.y"
+{ifDTfprintf(SORT,"\n\\end{array}\n");
+ FLAG_InMatrix=0;
+ ;
+ break;}
+case 1044:
+#line 2738 "rtf.y"
+{ifDTfprintf(SORT,"\\begin{array}{");
+ for(cpt3=0;cpt3<FLAG_MatrixCols;cpt3++)
+ ifDTfprintf(SORT,"%c",TAB_PosTabMatrix[FLAG_MatrixAlign]);
+ ifDTfprintf(SORT,"}%%\n");
+ FLAG_InMatrix=1;
+ FLAG_MatrixColCour=1;
+ ;
+ break;}
+case 1045:
+#line 2745 "rtf.y"
+{ifDTfprintf(SORT,"\n\\end{array}\n");
+ FLAG_InMatrix=0;
+ ;
+ break;}
+case 1046:
+#line 2749 "rtf.y"
+{ ifDTfprintf(SORT,"\\fbox{$");
+ ;
+ break;}
+case 1047:
+#line 2751 "rtf.y"
+{ ifDTfprintf(SORT,"$}%%\n");
+ ;
+ break;}
+case 1048:
+#line 2754 "rtf.y"
+{ ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); ;
+ break;}
+case 1049:
+#line 2755 "rtf.y"
+{ ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; ;
+ break;}
+case 1050:
+#line 2757 "rtf.y"
+{ ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); ;
+ break;}
+case 1051:
+#line 2758 "rtf.y"
+{ ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; ;
+ break;}
+case 1052:
+#line 2760 "rtf.y"
+{ ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); ;
+ break;}
+case 1053:
+#line 2761 "rtf.y"
+{ ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; ;
+ break;}
+case 1061:
+#line 2777 "rtf.y"
+{ ifDTfprintf(SORT,"%%\n\\begin{tabular}{l}\n$"); FLAG_SusTab=1;
+ if (FLAG_InMatrix==1) FLAG_InMatrix=-1;
+ ;
+ break;}
+case 1062:
+#line 2780 "rtf.y"
+{ ifDTfprintf(SORT,"$%%\n\\end{tabular}\n"); FLAG_SusTab=0;
+ if (FLAG_InMatrix==-1) FLAG_InMatrix=1;
+ ;
+ break;}
+case 1063:
+#line 2783 "rtf.y"
+{ FLAG_Suscript=0; ;
+ break;}
+case 1064:
+#line 2784 "rtf.y"
+{
+ if (FLAG_InMatrix==1) FLAG_InMatrix=-1;
+ if (FLAG_Suscript==EQUP)
+ {ifDTfprintf(SORT,"^{");}
+ else {if (FLAG_Suscript==EQDO)
+ {ifDTfprintf(SORT,"_{");}
+ else {ifDTfprintf(SORT,"{%%\n");}}
+ ;
+ break;}
+case 1065:
+#line 2792 "rtf.y"
+{ ifDTfprintf(SORT,"}%%\n");
+ if (FLAG_InMatrix==-1) FLAG_InMatrix=1;
+ ;
+ break;}
+case 1066:
+#line 2796 "rtf.y"
+{ FLAG_bracketleft=BRCrochetO; ;
+ break;}
+case 1067:
+#line 2797 "rtf.y"
+{ FLAG_bracketleft=BRCrochetF; ;
+ break;}
+case 1068:
+#line 2798 "rtf.y"
+{ FLAG_bracketleft=BRSupInfO; ;
+ break;}
+case 1069:
+#line 2799 "rtf.y"
+{ FLAG_bracketleft=BRSupInfF; ;
+ break;}
+case 1070:
+#line 2800 "rtf.y"
+{ FLAG_bracketleft=BRParentheseO; ;
+ break;}
+case 1071:
+#line 2801 "rtf.y"
+{ FLAG_bracketleft=BRParentheseF; ;
+ break;}
+case 1072:
+#line 2802 "rtf.y"
+{ FLAG_bracketleft=BRAccoladeO; ;
+ break;}
+case 1073:
+#line 2803 "rtf.y"
+{ FLAG_bracketleft=BRAccoladeF; ;
+ break;}
+case 1074:
+#line 2804 "rtf.y"
+{ FLAG_bracketright=BRCrochetO; ;
+ break;}
+case 1075:
+#line 2805 "rtf.y"
+{ FLAG_bracketright=BRCrochetF; ;
+ break;}
+case 1076:
+#line 2806 "rtf.y"
+{ FLAG_bracketright=BRSupInfO; ;
+ break;}
+case 1077:
+#line 2807 "rtf.y"
+{ FLAG_bracketright=BRSupInfF; ;
+ break;}
+case 1078:
+#line 2808 "rtf.y"
+{ FLAG_bracketright=BRParentheseO; ;
+ break;}
+case 1079:
+#line 2809 "rtf.y"
+{ FLAG_bracketright=BRParentheseF; ;
+ break;}
+case 1080:
+#line 2810 "rtf.y"
+{ FLAG_bracketright=BRAccoladeO; ;
+ break;}
+case 1081:
+#line 2811 "rtf.y"
+{ FLAG_bracketright=BRAccoladeF; ;
+ break;}
+case 1082:
+#line 2812 "rtf.y"
+{ FLAG_bracketright=BRCrochetO; FLAG_bracketleft=BRCrochetO;;
+ break;}
+case 1083:
+#line 2813 "rtf.y"
+{ FLAG_bracketright=BRCrochetF; FLAG_bracketleft=BRCrochetF;;
+ break;}
+case 1084:
+#line 2814 "rtf.y"
+{ FLAG_bracketright=BRSupInfO; FLAG_bracketleft=BRSupInfO;;
+ break;}
+case 1085:
+#line 2815 "rtf.y"
+{ FLAG_bracketright=BRSupInfF; FLAG_bracketleft=BRSupInfF;;
+ break;}
+case 1086:
+#line 2816 "rtf.y"
+{ FLAG_bracketright=BRParentheseO; FLAG_bracketleft=BRParentheseO;;
+ break;}
+case 1087:
+#line 2817 "rtf.y"
+{ FLAG_bracketright=BRParentheseF; FLAG_bracketleft=BRParentheseF;;
+ break;}
+case 1088:
+#line 2818 "rtf.y"
+{ FLAG_bracketright=BRAccoladeO; FLAG_bracketleft=BRAccoladeO;;
+ break;}
+case 1089:
+#line 2819 "rtf.y"
+{ FLAG_bracketright=BRAccoladeF; FLAG_bracketleft=BRAccoladeF;;
+ break;}
+case 1090:
+#line 2820 "rtf.y"
+{ FLAG_bracketleft=BRCrochetO; ;
+ break;}
+case 1091:
+#line 2821 "rtf.y"
+{ FLAG_bracketleft=BRCrochetF; ;
+ break;}
+case 1092:
+#line 2822 "rtf.y"
+{ FLAG_bracketleft=BRSupInfO; ;
+ break;}
+case 1093:
+#line 2823 "rtf.y"
+{ FLAG_bracketleft=BRSupInfF; ;
+ break;}
+case 1094:
+#line 2824 "rtf.y"
+{ FLAG_bracketleft=BRParentheseO; ;
+ break;}
+case 1095:
+#line 2825 "rtf.y"
+{ FLAG_bracketleft=BRParentheseF; ;
+ break;}
+case 1096:
+#line 2826 "rtf.y"
+{ FLAG_bracketleft=BRAccoladeO; ;
+ break;}
+case 1097:
+#line 2827 "rtf.y"
+{ FLAG_bracketleft=BRAccoladeF; ;
+ break;}
+case 1098:
+#line 2828 "rtf.y"
+{ FLAG_bracketright=BRCrochetO; ;
+ break;}
+case 1099:
+#line 2829 "rtf.y"
+{ FLAG_bracketright=BRCrochetF; ;
+ break;}
+case 1100:
+#line 2830 "rtf.y"
+{ FLAG_bracketright=BRSupInfO; ;
+ break;}
+case 1101:
+#line 2831 "rtf.y"
+{ FLAG_bracketright=BRSupInfF; ;
+ break;}
+case 1102:
+#line 2832 "rtf.y"
+{ FLAG_bracketright=BRParentheseO; ;
+ break;}
+case 1103:
+#line 2833 "rtf.y"
+{ FLAG_bracketright=BRParentheseF; ;
+ break;}
+case 1104:
+#line 2834 "rtf.y"
+{ FLAG_bracketright=BRAccoladeO; ;
+ break;}
+case 1105:
+#line 2835 "rtf.y"
+{ FLAG_bracketright=BRAccoladeF; ;
+ break;}
+case 1106:
+#line 2836 "rtf.y"
+{ FLAG_bracketright=BRCrochetO; FLAG_bracketleft=BRCrochetO;;
+ break;}
+case 1107:
+#line 2837 "rtf.y"
+{ FLAG_bracketright=BRCrochetF; FLAG_bracketleft=BRCrochetF;;
+ break;}
+case 1108:
+#line 2838 "rtf.y"
+{ FLAG_bracketright=BRSupInfO; FLAG_bracketleft=BRSupInfO;;
+ break;}
+case 1109:
+#line 2839 "rtf.y"
+{ FLAG_bracketright=BRSupInfF; FLAG_bracketleft=BRSupInfF;;
+ break;}
+case 1110:
+#line 2840 "rtf.y"
+{ FLAG_bracketright=BRParentheseO; FLAG_bracketleft=BRParentheseO;;
+ break;}
+case 1111:
+#line 2841 "rtf.y"
+{ FLAG_bracketright=BRParentheseF; FLAG_bracketleft=BRParentheseF;;
+ break;}
+case 1112:
+#line 2842 "rtf.y"
+{ FLAG_bracketright=BRAccoladeO; FLAG_bracketleft=BRAccoladeO;;
+ break;}
+case 1113:
+#line 2843 "rtf.y"
+{ FLAG_bracketright=BRAccoladeF; FLAG_bracketleft=BRAccoladeF;;
+ break;}
+case 1114:
+#line 2846 "rtf.y"
+{ FLAG_MatrixAlign=LEFT; ;
+ break;}
+case 1115:
+#line 2847 "rtf.y"
+{ FLAG_MatrixAlign=CENTER; ;
+ break;}
+case 1116:
+#line 2848 "rtf.y"
+{ FLAG_MatrixAlign=RIGHT; ;
+ break;}
+case 1117:
+#line 2849 "rtf.y"
+{ FLAG_MatrixCols=yyvsp[0].numo; ;
+ break;}
+case 1120:
+#line 2852 "rtf.y"
+{ FLAG_MatrixAlign=LEFT; ;
+ break;}
+case 1121:
+#line 2853 "rtf.y"
+{ FLAG_MatrixAlign=CENTER; ;
+ break;}
+case 1122:
+#line 2854 "rtf.y"
+{ FLAG_MatrixAlign=RIGHT; ;
+ break;}
+case 1123:
+#line 2855 "rtf.y"
+{ FLAG_MatrixCols=yyvsp[0].numo; ;
+ break;}
+case 1126:
+#line 2859 "rtf.y"
+{ FLAG_Integrale=INTSUM; ;
+ break;}
+case 1127:
+#line 2860 "rtf.y"
+{ FLAG_Integrale=INTPROD; ;
+ break;}
+case 1131:
+#line 2864 "rtf.y"
+{ FLAG_Integrale=INTSUM; ;
+ break;}
+case 1133:
+#line 2866 "rtf.y"
+{ FLAG_Integrale=INTPROD; ;
+ break;}
+case 1142:
+#line 2877 "rtf.y"
+{ FLAG_Suscript=EQUP; ;
+ break;}
+case 1144:
+#line 2879 "rtf.y"
+{ FLAG_Suscript=EQDO; ;
+ break;}
+case 1145:
+#line 2882 "rtf.y"
+{
+ if (FLAG_SusTab) ifDTfprintf(SORT,"$\\\\\n$");
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ ;
+ break;}
+case 1146:
+#line 2896 "rtf.y"
+{
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ ;
+ break;}
+case 1147:
+#line 2910 "rtf.y"
+{
+ if (FLAG_SusTab) ifDTfprintf(SORT,"$\\\\\n$");
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ ;
+ break;}
+case 1151:
+#line 2929 "rtf.y"
+{ ifDTfprintf(SORT,"()"); ;
+ break;}
+case 1152:
+#line 2930 "rtf.y"
+{ ifDTfprintf(SORT,"("); ;
+ break;}
+case 1153:
+#line 2931 "rtf.y"
+{ ifDTfprintf(SORT,")"); ;
+ break;}
+case 1156:
+#line 2937 "rtf.y"
+{
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==0 && !FLAG_Indice)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==0 && !FLAG_Exposant)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ yyval.pcdata="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1157:
+#line 2959 "rtf.y"
+{
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==0 && !FLAG_Indice)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==0 && !FLAG_Exposant)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ yyval.pcdata="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ ;
+ break;}
+case 1158:
+#line 2981 "rtf.y"
+{ ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ ;
+ break;}
+case 1160:
+#line 2987 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[0].pcdata;
+ ;
+ break;}
+case 1161:
+#line 2994 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[0].pcdata;
+ ;
+ break;}
+case 1162:
+#line 3001 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[-1].pcdata;
+ ;
+ break;}
+case 1163:
+#line 3008 "rtf.y"
+{ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ yyval.pcdata=yyvsp[-1].pcdata;
+ ;
+ break;}
+}
+ /* the action file gets copied in in place of this dollarsign */
+#line 465 "/usr/local/lib/bison.simple"
+
+ yyvsp -= yylen;
+ yyssp -= yylen;
+#ifdef YYLSP_NEEDED
+ yylsp -= yylen;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+ *++yyvsp = yyval;
+
+#ifdef YYLSP_NEEDED
+ yylsp++;
+ if (yylen == 0)
+ {
+ yylsp->first_line = yylloc.first_line;
+ yylsp->first_column = yylloc.first_column;
+ yylsp->last_line = (yylsp-1)->last_line;
+ yylsp->last_column = (yylsp-1)->last_column;
+ yylsp->text = 0;
+ }
+ else
+ {
+ yylsp->last_line = (yylsp+yylen-1)->last_line;
+ yylsp->last_column = (yylsp+yylen-1)->last_column;
+ }
+#endif
+
+ /* Now "shift" the result of the reduction.
+ Determine what state that goes to,
+ based on the state we popped back to
+ and the rule number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTBASE];
+
+ goto yynewstate;
+
+yyerrlab: /* here on detecting error */
+
+ if (! yyerrstatus)
+ /* If not already recovering from an error, report this error. */
+ {
+ ++yynerrs;
+
+#ifdef YYERROR_VERBOSE
+ yyn = yypact[yystate];
+
+ if (yyn > YYFLAG && yyn < YYLAST)
+ {
+ int size = 0;
+ char *msg;
+ int x, count;
+
+ count = 0;
+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ size += strlen(yytname[x]) + 15, count++;
+ msg = (char *) malloc(size + 15);
+ if (msg != 0)
+ {
+ strcpy(msg, "parse error");
+
+ if (count < 5)
+ {
+ count = 0;
+ for (x = (yyn < 0 ? -yyn : 0);
+ x < (sizeof(yytname) / sizeof(char *)); x++)
+ if (yycheck[x + yyn] == x)
+ {
+ strcat(msg, count == 0 ? ", expecting `" : " or `");
+ strcat(msg, yytname[x]);
+ strcat(msg, "'");
+ count++;
+ }
+ }
+ yyerror(msg);
+ free(msg);
+ }
+ else
+ yyerror ("parse error; also virtual memory exceeded");
+ }
+ else
+#endif /* YYERROR_VERBOSE */
+ yyerror("parse error");
+ }
+
+ goto yyerrlab1;
+yyerrlab1: /* here on error raised explicitly by an action */
+
+ if (yyerrstatus == 3)
+ {
+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
+
+ /* return failure if at end of input */
+ if (yychar == YYEOF)
+ YYABORT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
+#endif
+
+ yychar = YYEMPTY;
+ }
+
+ /* Else will try to reuse lookahead token
+ after shifting the error token. */
+
+ yyerrstatus = 3; /* Each real token shifted decrements this */
+
+ goto yyerrhandle;
+
+yyerrdefault: /* current state does not do anything special for the error token. */
+
+#if 0
+ /* This is wrong; only states that explicitly want error tokens
+ should shift them. */
+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
+ if (yyn) goto yydefault;
+#endif
+
+yyerrpop: /* pop the current state because it cannot handle the error token */
+
+ if (yyssp == yyss) YYABORT;
+ yyvsp--;
+ yystate = *--yyssp;
+#ifdef YYLSP_NEEDED
+ yylsp--;
+#endif
+
+#if YYDEBUG != 0
+ if (yydebug)
+ {
+ short *ssp1 = yyss - 1;
+ fprintf (stderr, "Error: state stack now");
+ while (ssp1 != yyssp)
+ fprintf (stderr, " %d", *++ssp1);
+ fprintf (stderr, "\n");
+ }
+#endif
+
+yyerrhandle:
+
+ yyn = yypact[yystate];
+ if (yyn == YYFLAG)
+ goto yyerrdefault;
+
+ yyn += YYTERROR;
+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
+ goto yyerrdefault;
+
+ yyn = yytable[yyn];
+ if (yyn < 0)
+ {
+ if (yyn == YYFLAG)
+ goto yyerrpop;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ else if (yyn == 0)
+ goto yyerrpop;
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+#if YYDEBUG != 0
+ if (yydebug)
+ fprintf(stderr, "Shifting error token, ");
+#endif
+
+ *++yyvsp = yylval;
+#ifdef YYLSP_NEEDED
+ *++yylsp = yylloc;
+#endif
+
+ yystate = yyn;
+ goto yynewstate;
+}
+#line 3019 "rtf.y"
+
+#include "rtf.lex.c"
+
+
+
+
+
diff --git a/support/w2latex/rtf.y b/support/w2latex/rtf.y
new file mode 100644
index 0000000000..0865ac5a21
--- /dev/null
+++ b/support/w2latex/rtf.y
@@ -0,0 +1,3025 @@
+%{
+ /* Declarations en C */
+#include <stdio.h>
+#include <stdlib.h>
+#define YYDEBUG 1
+#include <malloc.h>
+/*#define fprintf if(!FLAG_DebutTeX) {;} else fprintf*/
+#define ifDTfprintf if(!FLAG_DebutTeX) {;} else fprintf
+#define LF_FNIL 1
+#define LF_FROMAN 2
+#define LF_FSWISS 3
+#define LF_FMODERN 4
+#define LF_FSCRIPT 5
+#define LF_FDECOR 6
+#define LF_FTECH 7
+#define LF_FBIDI 8
+#define CENTER 1
+#define LEFT 2
+#define RIGHT 3
+#define JUST 0
+#define INTINT 0
+#define INTSUM 1
+#define INTPROD 2
+#define BRParentheseO '('
+#define BRAccoladeO '{'
+#define BRSupInfO '<'
+#define BRCrochetO '['
+#define BRParentheseF ')'
+#define BRAccoladeF '}'
+#define BRSupInfF '>'
+#define BRCrochetF ']'
+#define BRPoint '.'
+#include "rtf.ascii.c"
+char calutemp;
+
+char pzIntermStd[]="\\end{minipage}\n\\begin{minipage}";
+char pzIntermFrame[]="\\end{minipage}}\n\\fbox{\\begin{minipage}";
+char * pzIntermDef=pzIntermStd;
+
+char pzEndStd[]="\\end{minipage}\n";
+char * pzEndDef=pzEndStd;
+char pzEndFrame[]="\\end{minipage}}\n";
+
+char pzStartStd[]="\n\\begin{minipage}";
+char * pzStartDef=pzStartStd;
+char pzStartFrame[]="\n\\fbox{\\begin{minipage}";
+
+FILE * entree;
+FILE * sortie;
+FILE * auxiliaire;
+FILE * filetemp;
+FILE * SORT;
+int FLAG_Underline=0;
+int FLAG_Bold=0;
+int FLAG_DebutTeX=0;
+int FLAG_Italique=0;
+int FLAG_FlushLeft=0;
+int FLAG_FlushRight=0;
+int FLAG_Equation=0;
+int FLAG_Center=0;
+int FLAG_Dollars=0;
+int FLAG_FI=0;
+int FLAG_RI=0;
+int FLAG_LI=0;
+int FLAG_Indice=0;
+int FLAG_Exposant=0;
+int FLAG_Integrale=0;
+int FLAG_Symbol=0;
+int FLAG_Suscript=0;
+int FLAG_bracketleft='.';
+int FLAG_bracketright='.';
+int FLAG_SusTab=0;
+int FLAG_CompteTableau=0;
+int FLAG_Tableau=0;
+int FLAG_MatrixAlign=CENTER;
+int FLAG_MatrixCols=1;
+int FLAG_InMatrix=0;
+int FLAG_MatrixColCour=1;
+int FLAG_PICTLargeur=0;
+int FLAG_PICTHauteur=0;
+int FLAG_BorderBot=0;
+int FLAG_Footer=0;
+int FLAG_InPict=0;
+int FLAG_WMetafile=0;
+int FLAG_NIT=1;
+int FLAG_ERROR=0;
+int FLAG_FIRST_ERROR=1;
+int FLAG_EndTeX=0;
+char TAB_PosTabMatrix[]={ ' ', 'c', 'l', 'r' };
+int Num_Col_Tabular=0;
+int ASCII_TABLE=2;
+int lengthLCT=1024;
+int Largeur_Cols[512];
+int cpt,cpt2,cpt3;
+int Num_Max_Col=0;
+int Inter_Col=0;
+char * Ligne_Courante_Tabular;
+typedef struct t_formatDocument
+ {
+ int FDDEFTAB;
+ int FDPAPERW;
+ int FDPAPERH;
+ int FDPSZ;
+ int FDMARGL;
+ int FDMARGR;
+ int FDMARGT;
+ int FDMARGB;
+ int FDFACINGP;
+ int FDGUTTER;
+ int FDMARGMIRROR;
+ int FDLANDSCAPE;
+ int FDPGNSTART;
+ int FDWIDOWCTRL;
+ } t_FormatDocument;
+t_FormatDocument PZ_FD;
+typedef struct t_lfonte
+ {
+ int LF_Fontnum; /* Numero de fonte : Le meme que dans l'ordre de la liste en general */
+ int LF_Fontfamily; /* Famille de fonte: cf les defines */
+ int LF_Fcharset; /* Jeu de caracteres dans la table des polices */
+ int LF_Fprq; /* 'Pitch' de la police dans la table de caracteres */
+ char * LF_Fontname; /* Nom de la fonte */
+ char * LF_TexEquiv; /* Equivalent TeX */
+ struct t_lfonte * suiv;/* Maillon suivant */
+ } t_LFonte, *p_LFonte;
+typedef struct t_ConTeXte
+ {
+ int EtatTexte; /* CENTER ou RIGHT ou LEFT */
+ struct t_ConTeXte * suiv;
+ struct t_ConTeXte * prec;
+ /* Pour l'instant ca nous suffit */
+ } t_contexte, * p_contexte;
+p_contexte DebLisContextes=NULL;
+p_contexte ContextActuel=NULL;
+p_contexte ContextInitTab=NULL;
+p_LFonte DebLisFontes=NULL;
+p_LFonte FonteActuelle=NULL;
+#include "rtf.fonts.c"
+#include "rtf.context.c"
+%}
+
+
+ /* Declarations YACC - BISON */
+%expect 12179
+%union {
+char calu;
+int numo;
+char* motcomm;
+char carcomm;
+char* pcdata;
+}
+%token <numo> NUM
+ /* INCLURE ICI TOUS LES MOTS DE COMMANDE EN TANT QUE TYPES DE TOKENS TERMINAUX. */
+%token <motcomm> PC
+%token <motcomm> PCA
+%token <motcomm> DEFF
+%token <motcomm> FONTTBL
+%token <motcomm> ANSI
+%token <motcomm> RTF
+%token <motcomm> MAC
+%token <motcomm> F
+%token <motcomm> FNIL
+%token <motcomm> FROMAN
+%token <motcomm> FSWISS
+%token <motcomm> FMODERN
+%token <motcomm> FSCRIPT
+%token <motcomm> FDECOR
+%token <motcomm> FTECH
+%token <motcomm> FBIDI
+%token <motcomm> FCHARSET
+%token <motcomm> FPQR
+%token <carcomm> ETOILE /* represente le caractere de commande '/''*' */
+%token <motcomm> FONTFI_LE
+%token <motcomm> FTNIL
+%token <motcomm> FTTRUETYPE
+%token <motcomm> CPG
+%token <motcomm> FI_LETBL
+%token <motcomm> FI_LE
+%token <motcomm> FID
+%token <motcomm> FRELATIVE
+%token <motcomm> FOSNUM
+%token <motcomm> FVALIDMAC
+%token <motcomm> FVALIDDOS
+%token <motcomm> FVALIDNTFS
+%token <motcomm> FVALIDHPFS
+%token <motcomm> FNETWORK
+%token <motcomm> RED
+%token <motcomm> BLUE
+%token <motcomm> GREEN
+%token <motcomm> STYLESHEET
+%token <motcomm> S
+%token <motcomm> CS
+%token <motcomm> DS
+%token <motcomm> KEYCODE
+%token <motcomm> ADDITIVE
+%token <motcomm> SBASEDON
+%token <motcomm> SHIFT
+%token <motcomm> CTRL
+%token <motcomm> ALT
+%token <motcomm> FN
+%token <motcomm> INFO
+%token <motcomm> SECT
+%token <motcomm> HEADER
+%token <motcomm> FOOTER
+%token <motcomm> HEADERL
+%token <motcomm> HEADERR
+%token <motcomm> HEADERF
+%token <motcomm> FOOTERL
+%token <motcomm> FOOTERR
+%token <motcomm> FOOTERF
+%token <motcomm> PAR
+%token <motcomm> ROW
+%token <motcomm> CELL
+%token <motcomm> FONTEMB
+%token <motcomm> COLORTBL
+%token <motcomm> SUBDOCUMENT
+%token <motcomm> TX
+%token <motcomm> TB
+%token <motcomm> TQR
+%token <motcomm> TQC
+%token <motcomm> TQDEC
+%token <motcomm> TLDOT
+%token <motcomm> TLHYPH
+%token <motcomm> TLUL
+%token <motcomm> TITH
+%token <motcomm> TLEQ
+%token <motcomm> BIN
+%token <motcomm> BDATA
+%token <motcomm> SDATA
+%token <pcdata> PCDATA
+%token <pcdata> SNEXT
+%token <motcomm> ABSH
+%token <motcomm> ABSW
+%token <motcomm> B
+%token <motcomm> BGBDIAG
+%token <motcomm> BGCROSS
+%token <motcomm> BGDCROSS
+%token <motcomm> BGDKBDIAG
+%token <motcomm> BGDKCROSS
+%token <motcomm> BGDKDCROSS
+%token <motcomm> BGDKFDIAG
+%token <motcomm> BGDKHORIZ
+%token <motcomm> BGDKVERT
+%token <motcomm> BGFDIAG
+%token <motcomm> BGHORIZ
+%token <motcomm> BGVERT
+%token <motcomm> BINFSXN
+%token <motcomm> BINSXN
+%token <motcomm> BOX
+%token <motcomm> BRDRB
+%token <motcomm> BRDRBAR
+%token <motcomm> BRDRBTW
+%token <motcomm> BRDRCF
+%token <motcomm> BRDRDASH
+%token <motcomm> BRDRDB
+%token <motcomm> BRDRDOT
+%token <motcomm> BRDRHAIR
+%token <motcomm> BRDRL
+%token <motcomm> BRDRR
+%token <motcomm> BRDRS
+%token <motcomm> BRDRSH
+%token <motcomm> BRDRT
+%token <motcomm> BRDRTH
+%token <motcomm> BRDRW
+%token <motcomm> BRSP
+%token <motcomm> BULLET
+%token <motcomm> CAPS
+%token <motcomm> CB
+%token <motcomm> CBPAT
+%token <motcomm> CCHS
+%token <motcomm> CELLX
+%token <motcomm> CF
+%token <motcomm> CFPAT
+%token <motcomm> CHATN
+%token <motcomm> CHDATE
+%token <motcomm> CHDPA
+%token <motcomm> CHDPL
+%token <motcomm> CHFTN
+%token <motcomm> CHFTNSEP
+%token <motcomm> CHFTNSEPC
+%token <motcomm> CHPGN
+%token <motcomm> CHTIME
+%token <motcomm> CLBGBDIAG
+%token <motcomm> CLBGCROSS
+%token <motcomm> CLBGDCROSS
+%token <motcomm> CLBGDKBDIAG
+%token <motcomm> CLBGDKCROSS
+%token <motcomm> CLBGDKFDIAG
+%token <motcomm> CLBGDKHOR
+%token <motcomm> CLBGDKRCDCROSS
+%token <motcomm> CLBGDKVERT
+%token <motcomm> CLBGFDIAG
+%token <motcomm> CLBGHORIZ
+%token <motcomm> CLBGVERT
+%token <motcomm> CLBRDRB
+%token <motcomm> CLBRDRL
+%token <motcomm> CLBRDRR
+%token <motcomm> CLBRDRT
+%token <motcomm> CLCBPAT
+%token <motcomm> CLCFPAT
+%token <motcomm> CLMGF
+%token <motcomm> CLMGR
+%token <motcomm> CLSHDNG
+%token <motcomm> COLNO
+%token <motcomm> COLS
+%token <motcomm> COLSR
+%token <motcomm> COLSX
+%token <motcomm> COLUMN
+%token <motcomm> COLW
+%token <motcomm> DELETED
+%token <motcomm> DEUXPOINTS
+%token <motcomm> DFRMTXTX
+%token <motcomm> DFRMTXTY
+%token <motcomm> DN
+%token <motcomm> DROPCAPLI
+%token <motcomm> DROPCAPT
+%token <motcomm> DXFRTEXT
+%token <motcomm> EMDASH
+%token <motcomm> EMSPACE
+%token <motcomm> ENDASH
+%token <motcomm> ENDNHERE
+%token <motcomm> ENSPACE
+%token <motcomm> EXPND
+%token <motcomm> EXPNDTW
+%token <motcomm> FI
+%token <motcomm> FOOTERY
+%token <motcomm> FS
+%token <motcomm> GUTTERSXN
+%token <motcomm> HEADERY
+%token <motcomm> HYPHPAR
+%token <motcomm> I
+%token <motcomm> INTBL
+%token <motcomm> KEEP
+%token <motcomm> KEEPN
+%token <motcomm> KERNING
+%token <motcomm> LANG
+%token <motcomm> LDBLQUOTE
+%token <motcomm> LEVEL
+%token <motcomm> LI
+%token <motcomm> LINE
+%token <motcomm> LINEBETCOL
+%token <motcomm> LINECONT
+%token <motcomm> LINEMOD
+%token <motcomm> LINEPPAGE
+%token <motcomm> LINERESTART
+%token <motcomm> LINESTARTS
+%token <motcomm> LINEX
+%token <motcomm> LNDSCPSXN
+%token <motcomm> LQUOTE
+%token <motcomm> LTRCH
+%token <motcomm> LTRMARK
+%token <motcomm> LTRPAR
+%token <motcomm> LTRROW
+%token <motcomm> LTRSECT
+%token <motcomm> MARGBSXN
+%token <motcomm> MARGLSXN
+%token <motcomm> MARGRSXN
+%token <motcomm> MARGTSXN
+%token <motcomm> MOINS
+%token <motcomm> NOLINE
+%token <motcomm> NOSUPERSUB
+%token <motcomm> NOWIDCLTPAR
+%token <motcomm> NOWRAP
+%token <motcomm> OUTL
+%token <motcomm> PAGE
+%token <motcomm> PAGEBB
+%token <motcomm> PARD
+%token <motcomm> PGHSXN
+%token <motcomm> PGNCONT
+%token <motcomm> PGNDEC
+%token <motcomm> PGNGNSH
+%token <motcomm> PGNHN
+%token <motcomm> PGNHNSC
+%token <motcomm> PGNHNSM
+%token <motcomm> PGNHNSN
+%token <motcomm> PGNHNSP
+%token <motcomm> PGNLCLTR
+%token <motcomm> PGNLCRM
+%token <motcomm> PGNRESTART
+%token <motcomm> PGNSTARTS
+%token <motcomm> PGNUCLTR
+%token <motcomm> PGNUCRM
+%token <motcomm> PGNX
+%token <motcomm> PGNY
+%token <motcomm> PGWSXN
+%token <motcomm> PHCOL
+%token <motcomm> PHMRG
+%token <motcomm> PHPG
+%token <motcomm> PIPE
+%token <motcomm> PLAIN
+%token <motcomm> PN
+%token <motcomm> PNACROSS
+%token <motcomm> PNB
+%token <motcomm> PNCAPS
+%token <motcomm> PNCARD
+%token <motcomm> PNCF
+%token <motcomm> PNDEC
+%token <motcomm> PNF
+%token <motcomm> PNFS
+%token <motcomm> PNHANG
+%token <motcomm> PNI
+%token <motcomm> PNINDENT
+%token <motcomm> PNLCLTR
+%token <motcomm> PNLCRM
+%token <motcomm> PNLVL
+%token <motcomm> PNLVLBODY
+%token <motcomm> PNLVLCONT
+%token <motcomm> PNNUMONCE
+%token <motcomm> PNORD
+%token <motcomm> PNORDT
+%token <motcomm> PNPREV
+%token <motcomm> PNQC
+%token <motcomm> PNQL
+%token <motcomm> PNQR
+%token <motcomm> PNRESTART
+%token <motcomm> PNSCAPS
+%token <motcomm> PNSECLVL
+%token <motcomm> PNSP
+%token <motcomm> PNSTART
+%token <motcomm> PNSTRIKE
+%token <motcomm> PNTEXT
+%token <motcomm> PNTXTA
+%token <motcomm> PNTXTB
+%token <motcomm> PNUCLTR
+%token <motcomm> PNUCRM
+%token <motcomm> PNUL
+%token <motcomm> PNULD
+%token <motcomm> PNULDB
+%token <motcomm> PNULNONE
+%token <motcomm> PNULW
+%token <motcomm> PNVLBT
+%token <motcomm> POSNEGX
+%token <motcomm> POSNEGY
+%token <motcomm> POSX
+%token <motcomm> POSXC
+%token <motcomm> POSXI
+%token <motcomm> POSXL
+%token <motcomm> POSXO
+%token <motcomm> POSXR
+%token <motcomm> POSY
+%token <motcomm> POSYB
+%token <motcomm> POSYC
+%token <motcomm> POSYIL
+%token <motcomm> POSYT
+%token <motcomm> PVMRG
+%token <motcomm> PVPARA
+%token <motcomm> PVPG
+%token <motcomm> QC
+%token <motcomm> QJ
+%token <motcomm> QL
+%token <motcomm> QR
+%token <motcomm> RDBLQUOTE
+%token <motcomm> REVAUTH
+%token <motcomm> REVDTTM
+%token <motcomm> REVISED
+%token <motcomm> RI
+%token <motcomm> RQUOTE
+%token <motcomm> RTLCH
+%token <motcomm> RTLMARK
+%token <motcomm> RTLPAR
+%token <motcomm> RTLROW
+%token <motcomm> RTLSECT
+%token <motcomm> SA
+%token <motcomm> SB
+%token <motcomm> SBKCOL
+%token <motcomm> SBKEVEN
+%token <motcomm> SBKNONE
+%token <motcomm> SBKODD
+%token <motcomm> SBKPAGE
+%token <motcomm> SBYS
+%token <motcomm> SCAPS
+%token <motcomm> SECTNUM
+%token <motcomm> SECTD
+%token <motcomm> SETUNLOCKED
+%token <motcomm> SHAD
+%token <motcomm> SHADING
+%token <motcomm> SL
+%token <motcomm> SLMULT
+%token <motcomm> SOFTCOL
+%token <motcomm> SOFTLHEIGHT
+%token <motcomm> SOFTLINE
+%token <motcomm> SOFTPAGE
+%token <motcomm> STRIKE
+%token <motcomm> SUB
+%token <motcomm> SUPER
+%token <motcomm> TAB
+%token <motcomm> TILDE
+%token <motcomm> TITLEPG
+%token <motcomm> TRBRDRB
+%token <motcomm> TRBRDRH
+%token <motcomm> TRBRDRL
+%token <motcomm> TRBRDRR
+%token <motcomm> TRBRDRT
+%token <motcomm> TRBRDRV
+%token <motcomm> TRGAPH
+%token <motcomm> TRHDR
+%token <motcomm> TRKEEP
+%token <motcomm> TRLEFT
+%token <motcomm> TROWD
+%token <motcomm> TRQC
+%token <motcomm> TRQL
+%token <motcomm> TRQR
+%token <motcomm> TRRH
+%token <motcomm> UL
+%token <motcomm> ULD
+%token <motcomm> ULDB
+%token <motcomm> ULNONE
+%token <motcomm> ULW
+%token <motcomm> UNDERSCORE
+%token <motcomm> UP
+%token <motcomm> V
+%token <motcomm> VERTALB
+%token <motcomm> VERTALC
+%token <motcomm> VERTALJ
+%token <motcomm> VERTALT
+%token <motcomm> ZWJ
+%token <motcomm> ZWNJ
+%token <motcomm> AENDDOC
+%token <motcomm> AENDNOTES
+%token <motcomm> AFTNBJ
+%token <motcomm> AFTNCN
+%token <motcomm> AFTNNALC
+%token <motcomm> AFTNNAR
+%token <motcomm> AFTNNAUC
+%token <motcomm> AFTNNCHI
+%token <motcomm> AFTNNRLC
+%token <motcomm> AFTNNRUC
+%token <motcomm> AFTNRESTART
+%token <motcomm> AFTNRSTCONT
+%token <motcomm> AFTNSEP
+%token <motcomm> AFTNSEPC
+%token <motcomm> AFTNSTART
+%token <motcomm> AFTNTJ
+%token <motcomm> ALLPROT
+%token <motcomm> ANNOTPROT
+%token <motcomm> BRKFRM
+%token <motcomm> CVMME
+%token <motcomm> DEFFORMAT
+%token <motcomm> DEFLANG
+%token <motcomm> DEFTAB
+%token <motcomm> DOCTEMP
+%token <motcomm> ENDDOC
+%token <motcomm> ENDNOTES
+%token <motcomm> FACINGP
+%token <motcomm> FET
+%token <motcomm> FORMDISP
+%token <motcomm> FORMPROT
+%token <motcomm> FORMSHADE
+%token <motcomm> FRACWIDTH
+%token <motcomm> FTNBJ
+%token <motcomm> FTNCN
+%token <motcomm> FTNNALC
+%token <motcomm> FTNNAR
+%token <motcomm> FTNNAUC
+%token <motcomm> FTNNCHI
+%token <motcomm> FTNNRLC
+%token <motcomm> FTNNRUC
+%token <motcomm> FTNRESTART
+%token <motcomm> FTNRSTCONT
+%token <motcomm> FTNRSTPG
+%token <motcomm> FTNSEP
+%token <motcomm> FTNSEPC
+%token <motcomm> FTNSTART
+%token <motcomm> FTNTJ
+%token <motcomm> GUTTER
+%token <motcomm> HYPHAUTO
+%token <motcomm> HYPHCAPS
+%token <motcomm> HYPHCONSEC
+%token <motcomm> HYPHHOTZ
+%token <motcomm> LANDSCAPE
+%token <motcomm> LINESTART
+%token <motcomm> LINKSTYLES
+%token <motcomm> LTRDOC
+%token <motcomm> MAKEBACKUP
+%token <motcomm> MARGB
+%token <motcomm> MARGL
+%token <motcomm> MARGMIRROR
+%token <motcomm> MARGR
+%token <motcomm> MARGT
+%token <motcomm> NEXTFILE
+%token <motcomm> NOCOLBAL
+%token <motcomm> NOEXTRASPRL
+%token <motcomm> NOTABIND
+%token <motcomm> OTBLRUL
+%token <motcomm> PAPERH
+%token <motcomm> PAPERW
+%token <motcomm> PGNSTART
+%token <motcomm> PRCOLBL
+%token <motcomm> PRINTDATA
+%token <motcomm> PSOVER
+%token <motcomm> PSZ
+%token <motcomm> REVBAR
+%token <motcomm> REVISIONS
+%token <motcomm> REVPROP
+%token <motcomm> REVPROT
+%token <motcomm> RTLDOC
+%token <motcomm> SPRSSPBF
+%token <motcomm> SPRSTSP
+%token <motcomm> SWPBDR
+%token <motcomm> TEMPLATE
+%token <motcomm> TRANSMF
+%token <motcomm> WIDOWCTRL
+%token <motcomm> WRAPTRSP
+%token <motcomm> APOSTROPHE
+%token <motcomm> FIELD
+%token <motcomm> FLDDIRTY
+%token <motcomm> FLDEDIT
+%token <motcomm> FLDLOCK
+%token <motcomm> FLDPRIV
+%token <motcomm> FLDINST
+%token <motcomm> FLDALT
+%token <motcomm> FLDRSLT
+%token <motcomm> PICT
+%token <motcomm> PZINTEGRALE
+%token <motcomm> PZRACINE
+%token <motcomm> PZFRACTION
+%token <motcomm> PZMATRIX
+%token <motcomm> PZBOX
+%token <motcomm> PZBRACKET
+%token <motcomm> PZLIST
+%token <motcomm> PZOVERSTRIKE
+%token <motcomm> PZSUSCRIPT
+%token <motcomm> EQLC
+%token <motcomm> EQRC
+%token <motcomm> EQBC
+%token <motcomm> EQAL
+%token <motcomm> EQAC
+%token <motcomm> EQAR
+%token <motcomm> EQCO
+%token <motcomm> EQVS
+%token <motcomm> EQHS
+%token <motcomm> EQSU
+%token <motcomm> EQPR
+%token <motcomm> EQIN
+%token <motcomm> EQFC
+%token <motcomm> EQVC
+%token <motcomm> EQAI
+%token <motcomm> EQUP
+%token <motcomm> EQDI
+%token <motcomm> EQDO
+%token <motcomm> EQCROCHETO
+%token <motcomm> EQCROCHETF
+%token <motcomm> EQPARENTHO
+%token <motcomm> EQPARENTHF
+%token <motcomm> EQACCOLADO
+%token <motcomm> EQACCOLADF
+%token <motcomm> EQSUPINFO
+%token <motcomm> EQSUPINFF
+%token <motcomm> FOOTNOTE
+%token <motcomm> PZPEQ
+%token <motcomm> BKMKSTART
+%token <motcomm> BKMKEND
+%token <motcomm> BKMKCOLF
+%token <motcomm> BKMKCOLL
+%token <motcomm> MACPICT
+%token <motcomm> PMMETAFILE
+%token <motcomm> WMETAFILE
+%token <motcomm> DIBITMAP
+%token <motcomm> WBITMAP
+%token <motcomm> WBMBITSPIXEL
+%token <motcomm> WBMPLANES
+%token <motcomm> WBMWIDTHBYTES
+%token <motcomm> PICBMP
+%token <motcomm> PICBPP
+%token <motcomm> YR
+%token <motcomm> MO
+%token <motcomm> DY
+%token <motcomm> HR
+%token <motcomm> MIN
+%token <motcomm> SEC
+%token <motcomm> OBJECT
+%token <motcomm> OBJTOPICT
+%token <motcomm> BKMKPUB
+%token <motcomm> PUBAUTO
+%token <motcomm> PICW
+%token <motcomm> PICH
+%token <motcomm> PICWGOAL
+%token <motcomm> PICHGOAL
+%token <motcomm> PICSCALEX
+%token <motcomm> PICSCALEY
+%token <motcomm> PICSCALED
+%token <motcomm> PICCROPT
+%token <motcomm> PICCROPB
+%token <motcomm> PICCROPR
+%token <motcomm> PICCROPL
+%token <motcomm> OBJEMB
+%token <motcomm> OBJLINK
+%token <motcomm> OBJAUTLINK
+%token <motcomm> OBJSUB
+%token <motcomm> OBJPUB
+%token <motcomm> ONJICEMB
+%token <motcomm> LINKSELF
+%token <motcomm> OBJLOCK
+%token <motcomm> OBJUPDATE
+%token <motcomm> OBJCLASS
+%token <motcomm> OBJNAME
+%token <motcomm> OBJTIME
+%token <motcomm> RSLTMERGE
+%token <motcomm> RSLTRTF
+%token <motcomm> RSLTTXT
+%token <motcomm> RSLTPICT
+%token <motcomm> RSLTBMP
+%token <motcomm> OBJSETSIZE
+%token <motcomm> OBJALIGN
+%token <motcomm> OBJTRANSY
+%token <motcomm> OBJCROPT
+%token <motcomm> OBJCROPB
+%token <motcomm> OBJCROPL
+%token <motcomm> OBJCROPR
+%token <motcomm> OBJSCALEY
+%token <motcomm> OBJSCALEX
+%token <motcomm> OBJH
+%token <motcomm> OBJW
+%token <motcomm> OBJDATA
+%token <motcomm> OBJALIAS
+%token <motcomm> OBJSECT
+%token <motcomm> RESULT
+%token <motcomm> PZPAUTREFIELD
+%token <motcomm> ATRFSTART
+%token <motcomm> ATRFEND
+%token <motcomm> ATNTIME
+%token <motcomm> ATNICN
+%token <motcomm> ANNOTATION
+%token <motcomm> ATNREF
+%token <motcomm> ATNID
+%token <motcomm> ATNAUTHOR
+%token <motcomm> PZPENDEQ
+%token <motcomm> XE
+%token <motcomm> TC
+%token <motcomm> DO
+%token <motcomm> PZERROR
+%type <numo> num
+%type <motcomm> input
+%type <motcomm> Entete
+%type <motcomm> pzdeflang
+%type <motcomm> ppentete
+%type <motcomm> pentete
+%type <motcomm> charset
+%type <motcomm> deffont
+%type <motcomm> pfontinfo
+%type <motcomm> fontinfo
+%type <numo> fontfamily
+%type <numo> fcharset
+%type <numo> fpqr
+%type <motcomm> fontaltname
+%type <motcomm> fontemb
+%type <motcomm> fonttype
+%type <pcdata> fontfname
+%type <motcomm> codepage
+%type <motcomm> filetbl
+%type <motcomm> pfileinfo
+%type <motcomm> fileinfo
+%type <motcomm> pfilesource
+%type <motcomm> relpath
+%type <motcomm> osnum
+%type <motcomm> filesource
+%type <motcomm> colortbl
+%type <motcomm> pcolordef
+%type <motcomm> colordef
+%type <motcomm> red
+%type <motcomm> blue
+%type <motcomm> green
+%type <motcomm> stylesheet
+%type <motcomm> pstyle
+%type <motcomm> style
+%type <motcomm> styledef
+%type <motcomm> keycode
+%type <motcomm> pformatting
+%type <motcomm> formatting
+%type <motcomm> additive
+%type <motcomm> based
+%type <motcomm> next
+%type <motcomm> stylename
+%type <motcomm> keys
+%type <motcomm> shift
+%type <motcomm> alt
+%type <motcomm> ctrl
+%type <motcomm> key
+%type <motcomm> revtbl
+%type <motcomm> Document
+%type <motcomm> pdocfmtpsection
+%type <motcomm> info
+%type <motcomm> docfmt
+%type <motcomm> section
+%type <motcomm> psecfmt
+%type <motcomm> secfmt
+%type <motcomm> hdrftr
+%type <motcomm> hdrctl
+%type <pcdata> ppara
+%type <pcdata> ppar
+%type <pcdata> para
+%type <motcomm> pzpn
+%type <motcomm> pnlevel
+%type <motcomm> pndesc
+%type <motcomm> pnnstyle
+%type <motcomm> pnchrfmt
+%type <motcomm> pnul
+%type <motcomm> pnfmt
+%type <motcomm> pnjust
+%type <motcomm> pntxtb
+%type <motcomm> pntxta
+%type <motcomm> brdrdef
+%type <motcomm> brdrseg
+%type <motcomm> pbrdr
+%type <motcomm> brdrk
+%type <motcomm> brdr
+%type <motcomm> psubdoc
+%type <motcomm> pchar
+%type <motcomm> pcell
+%type <motcomm> pznvpparfmt
+%type <motcomm> parfmt
+%type <motcomm> pznvpapoctl
+%type <motcomm> apoctl
+%type <motcomm> framesize
+%type <motcomm> horzpos
+%type <motcomm> vertpos
+%type <motcomm> txtwrap
+%type <motcomm> dropcap
+%type <motcomm> hframe
+%type <motcomm> hdist
+%type <motcomm> vframe
+%type <motcomm> vdist
+%type <motcomm> pznvshading
+%type <motcomm> pshading
+%type <motcomm> pat
+%type <motcomm> pznvtabdef
+%type <motcomm> tabkind
+%type <motcomm> tablead
+%type <motcomm> zpcelldef
+%type <motcomm> ptbldef
+%type <motcomm> pptbldef
+%type <motcomm> ppptbldef
+%type <motcomm> rowjust
+%type <motcomm> rowwrite
+%type <motcomm> pcelldef
+%type <motcomm> pcellshad
+%type <motcomm> cellpat
+%type <pcdata> charr
+%type <pcdata> pznvcharr
+%type <motcomm> pchrfmt
+%type <pcdata> pdata
+%type <pcdata> pznvpdata
+%type <pcdata> data
+%type <motcomm> chrfmt
+%type <motcomm> atext
+%type <carcomm> spec
+%type <motcomm> picttype
+%type <motcomm> bitmapinfo
+%type <motcomm> pictsize
+%type <motcomm> metafileinfo
+%type <motcomm> do
+%type <motcomm> annot
+%type <motcomm> fieldmod
+%type <motcomm> fieldinst
+%type <motcomm> fieldrslt
+%type <motcomm> idx
+%type <motcomm> toc
+%type <pcdata> pzpvpcdata
+%type <pcdata> ppvformule
+%type <pcdata> pzpcdata
+%type <pcdata> pzpict
+%type <pcdata> pzpictsize
+%type <pcdata> ppzpictsize
+%type <pcdata> pppzpictsize
+%type <pcdata> accopzpn
+%type <numo> pznvnum
+%type <pcdata> etfinpznvcharr
+%type <pcdata> endpict
+%%
+ /* Regles de Grammaire */
+input: /* Vide */
+ | '{' Entete { FLAG_DebutTeX=1;
+ fprintf(SORT,"%%\n%% This document was generated using\n%% ");
+ fprintf(SORT,"w2LaTeX\n%% Bug Reports: jgarmend@cyberspace.org\n%%\n\n");
+ fprintf(SORT,"\\documentstyle[a4]{article}\n");
+ fprintf(SORT,"\n\\parindent = %d pt \n",0/*(PZ_FD.FDDEFTAB)*/);
+ fprintf(SORT,"\n\\oddsidemargin0cm\n");
+ fprintf(SORT,"\n\\evensidemargin0cm\n");
+ fprintf(SORT,"\n\\hoffset%dpt \n",(int)(-72+(PZ_FD.FDMARGL)));
+ fprintf(SORT,"\n\\textwidth%dpt \n",
+ (int)(614-(PZ_FD.FDMARGL)-(PZ_FD.FDMARGR)));
+ fprintf(SORT,"\n\\vsize=%dpt\n",(int)(644-(PZ_FD.FDMARGT)));
+ fprintf(SORT,"\n\\font\\mathex=cmex10\n");
+ fprintf(SORT,"\n\\font\\pzrm=cmr10\n");
+ fprintf(SORT,"\n\\pagestyle{myheadings}\n");
+ fprintf(SORT,"\n\\begin{document}\n");
+ /*parcoursfontes();*/
+ }
+ Document '}' { ifDTfprintf(SORT,"\n\\end{document}\n"); /*parcourscontexts();*/
+ FLAG_EndTeX=1;}
+ | PZERROR section
+ ;
+Entete: /* Vide */
+ | RTF num charset deffont /*?*/ pzdeflang '{' FONTTBL pfontinfo '}' ppentete
+ | RTF num charset pzdeflang deffont /*?*/ '{' FONTTBL pfontinfo '}' ppentete
+ | RTF num DEFFORMAT charset deffont /*?*/ pzdeflang '{' FONTTBL pfontinfo '}' ppentete
+ | RTF num pzdeflang charset deffont /*?*/ pzdeflang '{' FONTTBL pfontinfo '}' ppentete
+ | RTF num pzdeflang DEFFORMAT charset deffont /*?*/ pzdeflang '{' FONTTBL pfontinfo '}' ppentete
+ /* Cette derniere regle a ete imposee par la pratique car certains documents generes
+ avec WORD pour MAC ne suivent pas les conventions.... (sic) */
+ /* Note: Ce document se refere aux specifications de la version 1.2 notee simplement 1.
+ Il s'agit en realite des specifications fournies par Microsoft pour la version
+ de WORD 6.0. Nous essayerons de faire de notre mieux pour assurer la compatibilite
+ avec les formats precedents, qui ne sont pas assures de suivre la norme..(sic) ..
+ Note: deffN definit la fonte a utiliser par defaut dans tout le document. */
+ /* Note: les 2 dernieres lignes ont ete rajoutees pour la compatibilite Applix */
+ ;
+pzdeflang: /* Vide */
+ | DEFLANG num /* Ceci est necessaire pour des raisons de compatibilite
+ avec les versions anterieures de WORD */
+ ;
+ppentete: /* Vide */
+ | '{' pentete '}' ppentete
+ ;
+pentete: /* Vide */
+ | filetbl
+ | colortbl
+ | stylesheet
+ | revtbl
+ | INFO info
+ ;
+charset: ANSI
+ | MAC { ASCII_TABLE=1; }
+ | PC { ASCII_TABLE=2; }
+ | PCA
+ ;
+
+deffont: /* Vide */
+ | DEFF num
+ ;
+
+num: /* Vide */ { $$ = 1; }
+ | NUM { $$ = $1; }
+ ;
+pznvnum: NUM { $$=$1; }
+ ;
+pzpcdata: PCDATA { $$ = $1; }
+ | ';' { $$ = ";"; }
+ | 'e' { $$ = "e"; }
+ | 'q' { $$ = "q"; }
+ | ' ' { $$ = " "; }
+ | ' ' { $$ = " "; }
+ ;
+pzpvpcdata: PCDATA { $$ = $1; }
+ | ';' { $$ = ";"; }
+ | 'e' { $$ = "e"; }
+ | 'q' { $$ = "q"; }
+ | ' ' { $$ = " "; }
+ | ' ' { $$ = " "; }
+ | ',' { $$ = ","; }
+ ;
+pfontinfo: fontinfo
+ | '{' fontinfo '}'
+ | fontinfo pfontinfo
+ | '{' fontinfo '}' pfontinfo
+ ;
+
+fontinfo: F num fontfamily fcharset fpqr fontemb codepage pzpcdata { nouvfonte($2,$3,$4,$5,$8); }
+ fontaltname /*?*/ ';'
+ ;
+
+fontfamily: FNIL { $$=LF_FNIL; }
+ | FROMAN { $$=LF_FROMAN; }
+ | FSWISS { $$=LF_FSWISS; }
+ | FMODERN { $$=LF_FMODERN; }
+ | FSCRIPT { $$=LF_FSCRIPT; }
+ | FDECOR { $$=LF_FDECOR; }
+ | FTECH { $$=LF_FTECH; }
+ | FBIDI { $$=LF_FBIDI; }
+ ;
+ /* Note: L'interet de la famille defontes reside dans le fait que l'aplication recevant le document (et c'est
+ notre cas) pourrait ne pas disposer de toutes les fontes, et en particulier de celle demandee par le texte
+ en RTF. On pourra, en connaissant la famille de la police demandee, trouver la plus proche
+ disponible... */
+fcharset: /* Vide */ { $$=-1; }
+ | FCHARSET num { $$=$2; }
+ ;
+ /* Note: fcharsetN determine le jeux de caracteres de la table choisie. */
+fpqr: /* Vide */ { $$=-1; }
+ | FPQR num { $$=$2; }
+ ;
+ /* Note: Specifies the pitch of a font in the font table. (see Spec for values) */
+
+fontaltname: /* Vide */
+ | '{' ETOILE FONTFI_LE codepage /*?*/ pzpcdata '}'
+ ;
+fontemb: /* Vide */
+ | '{' ETOILE FONTEMB fonttype fontfname /*?*/ data /*?*/ '}'
+ ;
+ /* Note: Il et necessaire d'avoir au moins l'un des deux champs <fontfname> <data>
+ Note: deux types de fontes utilisant cette option: \ftnil (Default) et \fttruetype */
+fonttype: FTNIL
+ | FTTRUETYPE
+ ;
+fontfname: /* Vide */
+ | '{' ETOILE FONTFI_LE codepage /*?*/ pzpcdata '}'
+ ;
+codepage: /* Vide */
+ | CPG num
+ ;
+ /* NOTES: \falt determine une police de 'secours' si celle demandee n'est pas disponible.
+ Syntaxe: '{\*' \falt <Alternate Font Name > '}'
+ NOTES: \cpg determine la correspondance entre les tables de codes et les fontes.
+ (voir spec pour liste de valeurs). */
+
+filetbl: /* Vide */
+ | ETOILE FI_LETBL pfileinfo
+ ;
+
+pfileinfo: '{' fileinfo '}'
+ | pfileinfo '{' fileinfo '}'
+ ;
+fileinfo: FI_LE FID num relpath /*?*/ osnum /*?*/ pfilesource pzpcdata
+ ;
+pfilesource: filesource
+ | pfilesource filesource
+ ;
+
+relpath: /* Vide */
+ | FRELATIVE num
+ ;
+osnum: /* Vide */
+ | FOSNUM num
+ ;
+filesource: FVALIDMAC
+ | FVALIDDOS
+ | FVALIDNTFS
+ | FVALIDHPFS
+ | FNETWORK
+ ;
+
+colortbl: /* Vide */
+ | COLORTBL ';' pcolordef
+ | COLORTBL pcolordef /* Pour les besoins de la cause (specifications non specifiees) */
+ ;
+pcolordef: colordef ';'
+ | pcolordef colordef ';'
+ ;
+
+colordef: red blue green
+ | red green blue
+ | blue red green
+ | blue green red
+ | green red blue
+ | green blue red
+ ;
+red: /* Vide */
+ | RED num
+ ;
+blue: /* Vide */
+ | BLUE num
+ ;
+green: /* Vide */
+ | GREEN num
+ ;
+stylesheet: /* Vide */
+ | STYLESHEET pstyle
+ ;
+pstyle: /* Vide */
+ | style pstyle
+ ;
+style: '{' styledef /*?*/ keycode /*?*/ pformatting additive /*?*/ based /*?*/ next /*?*/
+ stylename /*?*/ ';' '}'
+ | '{' styledef /*?*/ keycode /*?*/ additive /*?*/ based /*?*/ next /*?*/
+ stylename /*?*/ ';' '}'
+ ;
+styledef: /* Vide */
+ | S num
+ | CS num
+ | DS num
+ ;
+ /* Note: \csN determine le style de caractere
+ Note: \sN determine le style du paragraphe
+ Note: \dsN determine le style de la section */
+keycode: /* Vide */
+ | '{' KEYCODE keys '}'
+ ;
+pformatting: formatting
+ | pformatting formatting
+ ;
+formatting: brdrdef
+ | pznvpparfmt
+ | pznvpapoctl
+ | pznvtabdef
+ | pznvshading
+ | chrfmt
+ ;
+additive: /* Vide */
+ | ADDITIVE num
+ ;
+ /* Note: \additive (utilise lors de la definition de styles avec '{\*\cs .... } ) indique que les attributs de
+ style doivent etre supperposes aux attributs courrants. */
+based: /* Vide */
+ | SBASEDON num
+ ;
+ /* Note: \sbasedonN definit le numero du style qui a servi de reference au style actuel. */
+next: /* Vide */
+ | SNEXT num
+ ;
+ /* Note: \snextN definit le prochain style associe avec le style courrant. S'il est omis on conserve
+ le style courrant */
+stylename: /* Vide */
+ | pzpcdata
+ ;
+keys: shift ctrl alt key
+ | shift alt ctrl key
+ | alt shift ctrl key
+ | alt ctrl shift key
+ | ctrl alt shift key
+ | ctrl shift alt key
+ ;
+shift: /* Vide */
+ | SHIFT
+ ;
+alt: /* Vide */
+ | ALT
+ ;
+ctrl: /* Vide */
+ | CTRL
+ ;
+key: FN num
+ | pzpcdata
+ ;
+ /* Note: \fnN determine une touche de fonction (numero N) */
+revtbl: /* Vide */
+ ;
+ /* Note: reference tous les auteurs et modifications effectuees sur les documents en question.
+ Il suffit de l'ignorer pour la lecture du texte. */
+time: YR num
+ | MO num
+ | DY num
+ | HR num
+ | MIN num
+ | SEC num
+ | time YR num
+ | time MO num
+ | time DY num
+ | time HR num
+ | time MIN num
+ | time SEC num
+ ;
+/*****************************************************************************************************************/
+Document: /*pinfo: On le metra dans l'entete*/ pdocfmtpsection
+/* | psection */
+ ;
+pdocfmtpsection: docfmt pdocfmtpsection
+ | section
+ | pdocfmtpsection section
+ | '{' ETOILE NEXTFILE pzpcdata '}' pdocfmtpsection
+ | '{' ETOILE TEMPLATE pzpcdata '}'pdocfmtpsection
+ ;
+info: /* Vide */
+ | '{' '}'
+ ;
+ /* POUR L'INSTANT CE CHAMP LA SERA IGNORE. L'ANALYSEUR LEXICAL NE TRANSMETTRA QUE LES ACCOLADES.
+ PAR LA SUITE NOUS TENTERONS DE L'IMPLEMENTER */
+docfmt: DEFTAB num { PZ_FD.FDDEFTAB=($2/20); }
+ | HYPHHOTZ num
+ | HYPHCONSEC num
+ | HYPHCAPS
+ | HYPHAUTO
+ | LINESTART num
+ | FRACWIDTH
+/* | '{' ETOILE NEXTFILE pzpcdata '}'
+ | '{' ETOILE TEMPLATE pzpcdata '}' */
+ | MAKEBACKUP
+ | DEFFORMAT
+ | PSOVER
+ | DOCTEMP
+ | DEFLANG num
+ /* FOOTNOTES AND ENDNOTES */
+ | FET num
+ | FTNSEP
+ | FTNSEPC
+ | FTNCN
+ | AFTNSEP
+ | AFTNSEPC
+ | AFTNCN
+ | ENDNOTES
+ | ENDDOC
+ | FTNTJ
+ | FTNBJ
+ | AENDNOTES
+ | AENDDOC
+ | AFTNBJ
+ | AFTNTJ
+ | FTNSTART num
+ | AFTNSTART num
+ | FTNRSTPG
+ | FTNRESTART
+ | FTNRSTCONT
+ | AFTNRESTART
+ | AFTNRSTCONT
+ | FTNNAR
+ | FTNNALC
+ | FTNNAUC
+ | FTNNRLC
+ | FTNNRUC
+ | FTNNCHI
+ | AFTNNAR
+ | AFTNNALC
+ | AFTNNAUC
+ | AFTNNRLC
+ | AFTNNRUC
+ | AFTNNCHI
+ /* PAGE INFORMATION */
+ | PAPERW num { PZ_FD.FDPAPERW=($2/20); }
+ | PAPERH num { PZ_FD.FDPAPERH=($2/20); }
+ | PSZ num { PZ_FD.FDPSZ=($2/20); }
+ | MARGL num { PZ_FD.FDMARGL=($2/20); }
+ | MARGR num { PZ_FD.FDMARGR=($2/20); }
+ | MARGT num { PZ_FD.FDMARGT=($2/20); }
+ | MARGB num { PZ_FD.FDMARGB=($2/20); }
+ | FACINGP { PZ_FD.FDFACINGP=1; }
+ | GUTTER num { PZ_FD.FDGUTTER=($2/20); }
+ | MARGMIRROR { PZ_FD.FDMARGMIRROR=1; }
+ | LANDSCAPE { PZ_FD.FDLANDSCAPE=1; }
+ | PGNSTART num { PZ_FD.FDPGNSTART=($2/20); }
+ | WIDOWCTRL { PZ_FD.FDWIDOWCTRL=1; }
+ /* LINKED STYLES */
+ | LINKSTYLES
+ /* COMPATIBILITY OPTIONS */
+ | NOTABIND
+ | WRAPTRSP
+ | PRCOLBL
+ | NOEXTRASPRL
+ | NOCOLBAL
+ | CVMME
+ | SPRSTSP
+ | SPRSSPBF
+ | OTBLRUL
+ | TRANSMF
+ | SWPBDR
+ | BRKFRM
+ /* FORMS */
+ | FORMPROT
+ | ALLPROT
+ | FORMSHADE
+ | FORMDISP
+ | PRINTDATA
+ /* REVISION MARKS */
+ | REVPROT
+ | REVISIONS
+ | REVPROP num
+ | REVBAR num
+ /* ANNOTATIONS */
+ | ANNOTPROT
+ /* BIDIRECTIONAL CONTROLS */
+ | RTLDOC
+ | LTRDOC
+ ;
+section: psecfmt '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ pzhdrftretfin
+ | psecfmt ppara SECT section
+ | '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ pzhdrftretfin
+ | ppara SECT section
+ | psecfmt ppara
+ | ppara
+ ; /* REMARQUE: Avant, c'etaient des ppara */
+psecfmt: secfmt
+ | psecfmt secfmt
+ ;
+secfmt: SECT
+ | SECTD
+ | ENDNHERE
+ | BINFSXN num
+ | BINSXN num
+ | DS num
+ | PNSECLVL num
+ | SETUNLOCKED
+ /* Section Break Command Words */
+ | SBKNONE
+ | SBKCOL
+ | SBKPAGE
+ | SBKEVEN
+ | SBKODD
+ /* Columns Command Words */
+ | COLS num
+ | COLSX num
+ | COLNO num
+ | COLSR num
+ | COLW num
+ | LINEBETCOL
+ /* Line Numbering Command Words */
+ | LINEMOD num
+ | LINEX num
+ | LINESTARTS num
+ | LINERESTART
+ | LINEPPAGE
+ | LINECONT
+ /* Page Information Command Words */
+ | PGWSXN num
+ | PGHSXN num
+ | MARGLSXN num
+ | MARGRSXN num
+ | MARGTSXN num
+ | MARGBSXN num
+ | GUTTERSXN num
+ | LNDSCPSXN
+ | TITLEPG
+ | HEADERY num
+ | FOOTERY num
+ /* Page Numbers Command Words */
+ | PGNSTARTS num
+ | PGNCONT
+ | PGNRESTART
+ | PGNX num
+ | PGNY num
+ | PGNDEC
+ | PGNUCRM
+ | PGNLCRM
+ | PGNUCLTR
+ | PGNLCLTR
+ | PGNHN num
+ | PGNGNSH num
+ | PGNHNSP
+ | PGNHNSC
+ | PGNHNSM
+ | PGNHNSN
+ /* Vertical Alignment Command Words */
+ | VERTALT
+ | VERTALB
+ | VERTALC
+ | VERTALJ
+ /* Bidirectional Controls */
+ | RTLSECT
+ | LTRSECT
+ ;
+ /* Definition des proprietes de formatage des sections. POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+hdrftr: hdrctl ppara
+ | hdrctl ppara '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ ;
+hdrctl: HEADER
+ | FOOTER { FLAG_Footer=1; ifDTfprintf(SORT,"\\markright{");}
+ | HEADERL
+ | HEADERR
+ | HEADERF
+ | FOOTERL
+ | FOOTERR
+ | FOOTERF
+ ;
+ /* Note: Definissent les entetes et les pieds de pages pour les pages de gauche, droite, toutes les
+ pages, ou simplement la premiere. */
+ppara: para
+ | ppara para
+ ;
+declpara: pzmultdeclpara
+ | declpara pzmultdeclpara
+ ;
+pzmultdeclpara: accopzpn brdrdef pznvpparfmt
+ | accopzpn pznvpparfmt brdrdef
+ | brdrdef pznvpparfmt accopzpn
+ | brdrdef accopzpn pznvpparfmt
+ | pznvpparfmt brdrdef accopzpn
+ | pznvpparfmt accopzpn brdrdef
+ | accopzpn brdrdef
+ | brdrdef accopzpn
+ | accopzpn pznvpparfmt
+ | pznvpparfmt accopzpn
+ | brdrdef pznvpparfmt
+ | pznvpparfmt brdrdef
+ | accopzpn
+ | brdrdef
+ | pznvpparfmt
+ ;
+declbispara: pznvpapoctl pznvtabdef pznvshading
+ | pznvpapoctl pznvtabdef
+ | pznvpapoctl pznvshading
+ | pznvtabdef pznvshading
+ | pznvpapoctl
+ | pznvtabdef
+ | pznvshading
+ ;
+pzmottrowd: TROWD { Num_Max_Col=0; Inter_Col=0; FLAG_NIT=0 ;}
+ ;
+para: pzsubquapara
+ | declpara
+ | pzsubquipara
+ | pzsubpara
+ | declbispara psubdoc pzsubterpara
+ | psubdoc pzsubterpara
+ ;
+pzsubquapara: declbispara pzsubpara
+ /* Il semblerait que d'anciennes versions de RTF aient ommis les TRGAPH (sic) */
+ ;
+pzsubquipara: pzsubquapara
+ | pzsubpara
+ | declbispara psubdoc pzsubterpara
+ | psubdoc pzsubterpara
+ ;
+pzsubpara: psubdoc
+ | pzmottrowd pzsubbispara
+ ;
+pzsubbispara: TRGAPH num { Inter_Col=$2/10; } pzpsubpar
+ | pzpsubpar
+ ;
+pzsubterpara: motcell pcell
+ | ppar motcell pcell
+ ;
+
+pzpsubpar: ptbldef pptbldef ppptbldef zpcelldef pcell /* Avant: row */
+ | pptbldef ppptbldef zpcelldef pcell
+ | ptbldef ppptbldef zpcelldef pcell
+ | ptbldef pptbldef zpcelldef pcell
+ | ppptbldef zpcelldef pcell
+ | pptbldef zpcelldef pcell
+ | ptbldef zpcelldef pcell
+ | zpcelldef pcell
+ ;
+ppar: PAR { if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n"); };
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",FLAG_FI);
+ FLAG_Dollars=0;
+ }
+ para { $$=$3; }
+ ;
+ /* Bullets and Numbering */
+accopzpn: '{' { ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ }
+ pzpn
+ '}' {
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==-1 && !FLAG_Indice)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==-1 && !FLAG_Exposant)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ $$="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ }
+ ;
+pzpn: ETOILE PNSECLVL num pndesc
+ | ETOILE PNSECLVL num
+ | PNTEXT charr '}' '{' ETOILE PN pnlevel pndesc
+ | PNTEXT charr '}' '{' ETOILE PN pnlevel
+ | psubdoc
+ ;
+
+pnlevel: PNLVL num
+ | PNVLBT
+ | PNLVLBODY
+ | PNLVLCONT
+ ;
+pndesc: pnnstyle
+ | pnchrfmt
+ | pntxtb
+ | pntxta
+ | pnfmt
+ | pnnstyle pndesc
+ | pnchrfmt pndesc
+ | pntxtb pndesc
+ | pntxta pndesc
+ | pnfmt pndesc
+ ;
+pnnstyle: PNCARD
+ | PNDEC
+ | PNUCLTR
+ | PNUCRM
+ | PNLCLTR
+ | PNLCRM
+ | PNORD
+ | PNORDT
+ ;
+pnchrfmt: PNF num
+ | PNFS num
+ | PNCF num
+ | PNB
+ | PNI
+ | PNCAPS
+ | PNSCAPS
+ | pnul
+ | PNSTRIKE
+ | PNF num pnchrfmt
+ | PNFS num pnchrfmt
+ | PNCF num pnchrfmt
+ | PNB pnchrfmt
+ | PNI pnchrfmt
+ | PNCAPS pnchrfmt
+ | PNSCAPS pnchrfmt
+ | pnul pnchrfmt
+ | PNSTRIKE pnchrfmt
+ ;
+pnul: PNUL
+ | PNULD
+ | PNULDB
+ | PNULNONE
+ | PNULW
+ ;
+pnfmt: PNNUMONCE
+ | PNACROSS
+ | PNINDENT num
+ | PNSP num
+ | PNPREV
+ | pnjust
+ | PNSTART num
+ | PNHANG
+ | PNRESTART
+ | PNNUMONCE pnfmt
+ | PNACROSS pnfmt
+ | PNINDENT num pnfmt
+ | PNSP num pnfmt
+ | PNPREV pnfmt
+ | pnjust pnfmt
+ | PNSTART num pnfmt
+ | PNHANG pnfmt
+ | PNRESTART pnfmt
+ ;
+pnjust: PNQC
+ | PNQL
+ | PNQR
+ ;
+pntxtb: '{' PNTXTB pzpcdata '}'
+ ;
+pntxta: '{' PNTXTA pzpcdata '}'
+ ;
+brdrdef: brdrseg brdrk
+ | brdrseg brdrk pbrdr
+ | brdrdef brdrseg brdrk
+ | brdrdef brdrseg brdrk pbrdr
+ ;
+brdrseg: BRDRT { /*ifDTfprintf(SORT,"\\hline %%\n");*/ }
+ | BRDRB { /*FLAG_BorderBot=1;*/ }
+ | BRDRL
+ | BRDRR
+ | BRDRBTW
+ | BRDRBAR
+ | BOX
+ ;
+brdr: brdrk
+ | brdrk pbrdr
+ ;
+pbrdr: BRDRW num
+ | BRSP num
+ | BRDRCF num
+ | pbrdr BRDRW num
+ | pbrdr BRSP num
+ | pbrdr BRDRCF num
+ ;
+brdrk: BRDRS
+ | BRDRTH
+ | BRDRSH
+ | BRDRDB
+ | BRDRDOT
+ | BRDRDASH
+ | BRDRHAIR
+ ;
+psubdoc: SUBDOCUMENT { $$=""; }
+ | pchar { $$=$1; }
+ ;
+pchar: charr { $$=$1; }
+ | pchar charr {
+ $$ = (char * ) malloc (strlen($1) + strlen($2) + 1);
+ strcpy($$,$1);
+ strcat($$,$2);
+
+ }
+ ;
+motrow: ROW {Num_Col_Tabular=0; FLAG_Tableau=0; FLAG_NIT=1;}
+ ;
+pcell: pzsubterpcell
+ | declpara pzsubquapcell
+ | declbispara pzsubterpcell
+ | declbispara
+ ;
+
+pzsubpcell: pzsubbispcell
+ | ppar pzsubbispcell
+ ;
+pzsubbispcell: motcell pcell
+ | pcell
+ ;
+pzsubterpcell: motrow
+ | psubdoc pzsubpcell
+ | motcell pcell /* Pour les cases de tableaux vides... */
+ ;
+pzsubquapcell: pzsubterpcell
+ | declbispara pzsubterpcell
+ | declbispara pcell /* L'etrange format Mac */
+ ;
+motcell: CELL {
+ if (Num_Col_Tabular<Num_Max_Col)
+ {
+ if (FLAG_DebutTeX) endkeepcontext();
+ ifDTfprintf(SORT,"%s{%dpt}",pzIntermDef,
+ Largeur_Cols[Num_Col_Tabular++]);
+ if (FLAG_DebutTeX) showcontext();
+ }
+ else
+ { if (FLAG_DebutTeX) contextback();
+ ifDTfprintf(SORT,"%s",pzEndDef);
+ }
+ }
+ ;
+pznvpparfmt: parfmt
+ | pznvpparfmt parfmt
+ ;
+parfmt: PAR { if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n");};
+ FLAG_Dollars=0;
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",FLAG_FI);
+ }
+ | PARD { if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",0);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",0);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",0);
+ FLAG_LI=0;
+ FLAG_RI=0;
+ FLAG_FI=0;
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par %%\n"); };
+ /*if (Num_Col_Tabular!=0) Num_Max_Col=Num_Col_Tabular;
+ Num_Col_Tabular=0;*/
+ ifDTfprintf(SORT,"\\normalsize ");
+ ifDTfprintf(SORT,"\\pzrm ");
+ if (FLAG_LI!=0)
+ {
+ FLAG_LI=0;
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",0);
+ }
+ if (FLAG_RI!=0)
+ {
+ FLAG_RI=0;
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",0);
+ }
+ if (FLAG_FI!=0)
+ {
+ FLAG_FI=0;
+ ifDTfprintf(SORT,"\n\\parindent = %d pt \n",0);
+ }
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=JUST;
+ }
+ | S num
+ | HYPHPAR
+ | INTBL { if (FLAG_Tableau==0 && Num_Col_Tabular==0 /* && Num_Col_Tabular<Num_Max_Col*/)
+ {
+ ifDTfprintf(SORT,"%s{%dpt}",pzStartDef,
+ Largeur_Cols[0]+Inter_Col);
+ Num_Col_Tabular=1;
+ ContextInitTab=ContextActuel;
+ if (FLAG_DebutTeX) showcontext();
+ }
+ FLAG_Tableau=1;
+ FLAG_NIT=1;
+ }
+ | KEEP
+ | NOWIDCLTPAR
+ | KEEPN
+ | LEVEL num
+ | NOLINE
+ | PAGEBB
+ | SBYS
+ /* Alignment Command Words */
+ | QL { if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (!FLAG_Footer) { ifDTfprintf(SORT,"\n\\begin{flushleft}\n"); };
+
+ if (ContextActuel==NULL && FLAG_DebutTeX ) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=LEFT;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_FlushLeft=1;
+ }
+ | QR { if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (!FLAG_Footer && FLAG_NIT) { ifDTfprintf(SORT,"\n\\begin{flushright}\n"); };
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=RIGHT;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_FlushRight=1;
+ }
+ | QJ { if (FLAG_Center==1)
+ {
+ FLAG_Center=0;
+ ifDTfprintf(SORT,"\n\\end{center}\n");
+ FLAG_Dollars=0;
+ }
+ if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX ) ContextActuel->EtatTexte=JUST;
+ }
+ | QC { if (FLAG_FlushLeft==1)
+ {
+ FLAG_FlushLeft=0;
+ ifDTfprintf(SORT,"\n\\end{flushleft}\n");
+ }
+ if (FLAG_FlushRight==1)
+ {
+ FLAG_FlushRight=0;
+ ifDTfprintf(SORT,"\n\\end{flushright}\n");
+ }
+ if (!FLAG_Footer && FLAG_NIT) { ifDTfprintf(SORT,"\n\\begin{center}\n"); }
+ if (FLAG_Footer) { ifDTfprintf(SORT," \\centerline "); };
+ if (ContextActuel==NULL && FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ if( FLAG_DebutTeX && !FLAG_Footer) ContextActuel->EtatTexte=CENTER;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_Center=1;
+ if( FLAG_DebutTeX && !FLAG_Footer) FLAG_Dollars=1;
+ }
+ | FI num { if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_FI=(int)($2/20);
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",FLAG_FI);
+ }
+ }
+ | LI num { if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_LI=(int)($2/20);
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ }
+ }
+ | RI num { if (FLAG_FlushRight==0 && FLAG_FlushLeft==0 && FLAG_Center==0)
+ {
+ FLAG_RI=(int)($2/20);
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ }
+ }
+ /* Spacing Command Words */
+ | SB num
+ | SA num
+ | SL num
+ | SLMULT num
+ /* Subdocuments Command Words */
+ | SUBDOCUMENT num
+ /* Bidirectionnal Controls */
+ | RTLPAR
+ | LTRPAR
+ ;
+ /* Definition des proprietes de formatage des paragraphes. Si le mot de commande \pard n'est pas
+ specifie, le paragraphe recupere les proprietes de son precedent. POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+
+pznvpapoctl: apoctl
+ | apoctl pznvpapoctl
+ ;
+apoctl: framesize
+ | horzpos
+ | vertpos
+ | txtwrap
+ | dropcap
+ | apoctl framesize
+ | apoctl horzpos
+ | apoctl vertpos
+ | apoctl txtwrap
+ | apoctl dropcap
+ ;
+framesize: framesize ABSW num
+ | framesize ABSH num
+ | ABSW num
+ | ABSH num
+ ;
+horzpos: hframe horzpos
+ | hdist horzpos
+ | hframe
+ | hdist
+ ;
+vertpos: vframe vertpos
+ | vdist vertpos
+ | vframe
+ | vdist
+ ;
+txtwrap: NOWRAP txtwrap
+ | DXFRTEXT num txtwrap
+ | DFRMTXTX num txtwrap
+ | DFRMTXTY num txtwrap
+ | NOWRAP
+ | DXFRTEXT num
+ | DFRMTXTX num
+ | DFRMTXTY num
+ ;
+dropcap: DROPCAPLI num dropcap
+ | DROPCAPT num dropcap
+ | DROPCAPLI num
+ | DROPCAPT num
+ ;
+hframe: PHMRG
+ | PHPG
+ | PHCOL
+ ;
+hdist: POSX num
+ | POSNEGX num
+ | POSXC
+ | POSXI
+ | POSXO
+ | POSXL
+ | POSXR
+ ;
+vframe: PVMRG
+ | PVPG
+ | PVPARA
+ ;
+vdist: POSY num
+ | POSNEGY num
+ | POSYT
+ | POSYIL
+ | POSYB
+ | POSYC
+ ;
+
+pznvshading: SHADING num
+ | pat
+ | pshading SHADING num
+ | pshading pat
+ | SHADING num pshading
+ | pat pshading
+ ;
+pshading: CFPAT num
+ | CBPAT num
+ | pshading CFPAT num
+ | pshading CBPAT num
+ ;
+pat: BGHORIZ
+ | BGVERT
+ | BGFDIAG
+ | BGBDIAG
+ | BGCROSS
+ | BGDCROSS
+ | BGDKHORIZ
+ | BGDKVERT
+ | BGDKFDIAG
+ | BGDKBDIAG
+ | BGDKCROSS
+ | BGDKDCROSS
+ ;
+pznvtabdef: tabkind tablead TX num
+ | tabkind tablead TB num
+ | tabkind TX num /* Ajoute a posteriori */
+ | tabkind TB num /* Ajoute a posteriori */
+ | tablead TB num /* Ajoute a posteriori */
+ | tablead TX num /* Ajoute a posteriori */
+ | TX num /* Pour les besoins de la cause... */
+ | pznvtabdef tabkind tablead TX num
+ | pznvtabdef tabkind tablead TB num
+ | pznvtabdef tabkind TX num /* Ajoute a posteriori */
+ | pznvtabdef tabkind TB num /* Ajoute a posteriori */
+ | pznvtabdef tablead TB num /* Ajoute a posteriori */
+ | pznvtabdef tablead TX num /* Ajoute a posteriori */
+ | pznvtabdef TX num /* Pour les besoins de la cause... */
+ ;
+tabkind: TQR
+ | TQC
+ | TQDEC
+ ;
+ /* Note: \tqr : Flush Right Tab
+ Note: \tqc : Centered Tab
+ Note: \tqdes : Decimal Tab */
+tablead: TLDOT
+ | TLHYPH
+ | TLUL
+ | TITH
+ | TLEQ
+ ;
+ /* Note: \tldot : Leader dots
+ Note: \tlhyph : Leader Hyphens
+ Note: \tlul : Leader underline
+ Note: \tith : Leader thick line
+ Note: \tleq :Leader equal sign */
+
+zpcelldef: pcelldef motcellxnum
+ | motcellxnum
+ | pcelldef motcellxnum zpcelldef
+ | motcellxnum zpcelldef
+ ;
+motcellxnum: CELLX num { if (Num_Max_Col==0)
+ Largeur_Cols[Num_Max_Col]=($2/20);
+ if (Num_Max_Col!=0)
+ {
+ cpt=1;
+ Largeur_Cols[Num_Max_Col]=($2/20);
+ while(cpt<=Num_Max_Col)
+ Largeur_Cols[Num_Max_Col]-=Largeur_Cols[Num_Max_Col-(cpt++)];
+ }
+ Num_Max_Col++;}
+ ;
+
+ptbldef: rowjust
+ | rowwrite
+ | ptbldef rowjust
+ | ptbldef rowwrite
+ ;
+pptbldef: TRBRDRT brdr
+ | TRBRDRB brdr
+ | TRBRDRL brdr
+ | TRBRDRR brdr
+ | TRBRDRH brdr
+ | TRBRDRV brdr
+ | TRLEFT num
+ | TRRH num
+ | pptbldef TRBRDRT brdr
+ | pptbldef TRBRDRB brdr
+ | pptbldef TRBRDRL brdr
+ | pptbldef TRBRDRR brdr
+ | pptbldef TRBRDRH brdr
+ | pptbldef TRBRDRV brdr
+ | pptbldef TRLEFT num
+ | pptbldef TRRH num
+ ;
+ppptbldef: TRHDR
+ | TRKEEP
+ | ppptbldef TRHDR
+ | ppptbldef TRKEEP
+ ;
+rowjust: TRQL
+ | TRQR
+ | TRQC
+ ;
+rowwrite: LTRROW
+ | RTLROW
+ ;
+
+pcelldef: CLMGF
+ | CLMGR
+ | CLBRDRT brdr
+ | CLBRDRL brdr
+ | CLBRDRB brdr
+ | CLBRDRR brdr
+ | cellpat pcellshad
+ | pcellshad
+ | CLMGF pcelldef
+ | CLMGR pcelldef
+ | CLBRDRT brdr pcelldef
+ | CLBRDRL brdr pcelldef
+ | CLBRDRB brdr pcelldef
+ | CLBRDRR brdr pcelldef
+ | cellpat pcellshad pcelldef
+ | pcellshad pcelldef
+ ;
+
+pcellshad: CLSHDNG num /* Ou Vide ? Cette ligne n'est pas tres claire dans la Spec. */
+ | CLCFPAT num pcellshad
+ | CLCBPAT num pcellshad
+ | CLCFPAT num
+ | CLCBPAT num
+ | CLSHDNG num pcellshad
+ ;
+cellpat: CLBGHORIZ
+ | CLBGVERT
+ | CLBGFDIAG
+ | CLBGBDIAG
+ | CLBGCROSS
+ | CLBGDCROSS
+ | CLBGDKHOR
+ | CLBGDKVERT
+ | CLBGDKFDIAG
+ | CLBGDKBDIAG
+ | CLBGDKCROSS
+ | CLBGDKRCDCROSS
+ ;
+
+/*............................................................................................
+ TEXTE ET CARACTERES
+ ----------------- */
+
+charr: '{' { ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ }
+ pzincharr '}'
+ {
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==-1 && !FLAG_Indice)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==-1 && !FLAG_Exposant)
+ { FLAG_Equation=0;
+ ifDTfprintf(SORT,"}$%%\n");
+ }
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ $$="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ FLAG_Bold=0;
+ FLAG_Italique=0;
+ }
+ | psecfmt '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ pzhdrftretfin
+ | psecfmt ppara SECT section
+ | '{' hdrftr '}' { if (FLAG_Footer) ifDTfprintf(SORT,"}%%\n");
+ FLAG_Footer=0; }
+ pzhdrftretfin
+ | psecfmt ppara
+ /*| atext ; Non traite pour l'instant*/
+ | pchrfmt pdata { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$2;
+ }
+ | pznvpdata { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$1;
+ }
+ | pchrfmt pdata charr { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$2;
+ }
+ | pznvpdata charr { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$1;
+ }
+ | BKMKEND pzpcdata { $$=""; }
+ | BKMKEND pzpcdata charr { $$=""; }
+ | BKMKSTART bkmkcol pzpcdata { $$=""; }
+ | BKMKSTART bkmkcol pzpcdata charr { $$=""; }
+ | BKMKSTART pzpcdata { $$=""; }
+ | BKMKSTART pzpcdata bkmkcol { $$=""; }
+ | BKMKSTART pzpcdata bkmkcol charr { $$=""; }
+ | BKMKSTART pzpcdata charr { $$=""; }
+ | ETOILE BKMKEND pzpcdata { $$=""; }
+ | ETOILE BKMKEND pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART BKMKPUB PUBAUTO pzpubobject pzpcdata { $$=""; }
+ | ETOILE BKMKSTART BKMKPUB PUBAUTO pzpubobject pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART BKMKPUB pzpubobject pzpcdata { $$=""; }
+ | ETOILE BKMKSTART BKMKPUB pzpubobject pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART bkmkcol pzpcdata { $$=""; }
+ | ETOILE BKMKSTART bkmkcol pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART pzpcdata { $$=""; }
+ | ETOILE BKMKSTART pzpcdata charr { $$=""; }
+ | ETOILE BKMKSTART pzpcdata bkmkcol { $$=""; }
+ | ETOILE BKMKSTART pzpcdata bkmkcol charr { $$=""; }
+ | ETOILE pzmotfootnote pzetfincharr { $$=""; }
+ | pzmotfootnote pzetfincharr { $$=""; }
+ | FIELD fieldinst fieldrslt { $$=""; }
+ | FIELD fieldinst fieldrslt charr { $$=""; }
+ | FIELD fieldmod /*?*/ fieldinst fieldrslt { $$=""; }
+ | FIELD fieldmod /*?*/ fieldinst fieldrslt charr { $$=""; }
+ | OBJECT /*pzobj objdata result */ { $$=""; }
+ | PICT { FLAG_InPict=1; FLAG_WMetafile=0; }
+ endpict
+ | ETOILE ATNID pzpcdata { $$=""; }
+ | ETOILE ATNAUTHOR pzpcdata { $$=""; }
+ | ETOILE ATNTIME time { $$=""; }
+ | CHATN { $$=""; }
+ charr
+ | ETOILE ATNICN pict charr { $$=""; }
+ | ETOILE ANNOTATION '{' ETOILE ATNREF num '}' ppara { $$=""; }
+ | ETOILE DO { $$=""; }
+ | DO { $$=""; }
+ | XE { $$=""; }
+ | TC { $$=""; }
+ ;
+endpict: pzpict datadata charr { $$=""; if (FLAG_WMetafile)
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ FLAG_PICTLargeur,FLAG_PICTHauteur);
+ else
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ (int)(FLAG_PICTLargeur*20),
+ (int)(FLAG_PICTHauteur*20));
+ FLAG_PICTHauteur=0;
+ FLAG_PICTLargeur=0;
+ FLAG_InPict=0;
+ FLAG_WMetafile=0;
+ }
+ | pzpict datadata { $$=""; if (FLAG_WMetafile)
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ FLAG_PICTLargeur,FLAG_PICTHauteur);
+ else
+ ifDTfprintf(SORT,"%%\n\\framebox(%d,%d){}\n",
+ (int)(FLAG_PICTLargeur*20),
+ (int)(FLAG_PICTHauteur*20));
+ FLAG_PICTHauteur=0;
+ FLAG_PICTLargeur=0;
+ FLAG_InPict=0;
+ FLAG_WMetafile=0;
+ }
+ ;
+pzhdrftretfin: ppara SECT section
+ | ppara
+ ;
+pzetfincharr: ppara { /*ifDTfprintf(SORT,"}%%\n");*/ }
+ | ppara { ifDTfprintf(SORT,"}%%\n"); }
+ charr
+ ;
+pzmotfootnote: FOOTNOTE { FLAG_Exposant=0; FLAG_Indice=0;
+ /* fseek(SORT,-strlen("$^{"),1); */
+ ifDTfprintf(SORT,"\\footnote{%%\n"); }
+ ;
+pzincharr: /* Vide: Pour une fois il semblerait bon. */
+ | charr
+ | ppara SECT section
+ | ppara
+ ;
+pchrfmt: chrfmt
+ | chrfmt pchrfmt
+ ;
+pdata: /*data*/ {$$="";} /* Avant: data . Pb avec les specifications */
+ | pdata data { $$ = (char * ) malloc (strlen($1) + strlen($2) + 1);
+ strcpy($$,$1);
+ strcat($$,$2);
+ }
+ ;
+/* La regle suivante s'applique aux champs de donees ne pouvant pas etre vides */
+pznvpdata: data { $$ = (char * ) malloc (strlen($1) + 1);
+ strcpy($$,$1);
+ }
+ | pznvpdata data { $$ = (char * ) malloc (strlen($1) + strlen($2) + 1);
+ strcpy($$,$1);
+ strcat($$,$2);
+ }
+ ;
+data: pzpcdata {
+ $$=$1;
+ if (FLAG_Symbol==0)
+ {
+ printText($1);
+ }
+ if (FLAG_Symbol!=0)
+ { if (FLAG_Equation==0)
+ { ifDTfprintf(SORT,"$");
+ printSymbol($1);
+ ifDTfprintf(SORT,"$");
+ }
+ if (FLAG_Equation!=0) printSymbol($1);
+ }
+ }
+ | pznvnum { $$=""; ifDTfprintf(SORT,"%d",$1); }
+ | spec { $$=""; /*FLAG_Equation=0;*/ }
+ ;
+chrfmt: PLAIN
+ | B num { if ($2==1) { ifDTfprintf(SORT,"\\bf "); FLAG_Bold=1; }
+ if ($2!=1)
+ {
+ if ($2==0) ifDTfprintf(SORT,"\t\t\t ****** Fin de bold \n");
+ if ($2!=0) ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le bold \n");
+ }
+ }
+ | CAPS num
+ | DELETED num
+ | DN num { if (FLAG_DebutTeX)
+ {
+ if (FLAG_Equation==0)
+ {FLAG_Equation=-1;
+ ifDTfprintf(SORT,"$_{");
+ }
+ else
+ { ifDTfprintf(SORT,"_{"); }
+ FLAG_Indice++;
+ }
+ }
+ | SUB
+ | NOSUPERSUB
+ | EXPND num
+ | EXPNDTW num
+ | KERNING num
+ | F num { FonteActuelle=DebLisFontes;
+ while(FonteActuelle!=NULL && FonteActuelle->LF_Fontnum!=$2)
+ FonteActuelle=FonteActuelle->suiv;
+ if (FonteActuelle!=NULL)
+ { if (!strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ FLAG_Symbol=1;
+ if (strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ {
+ ifDTfprintf(SORT,"%s",FonteActuelle->LF_TexEquiv);
+ FLAG_Symbol=0;
+ }
+ }
+ else FLAG_Symbol=0;
+
+ if (FLAG_Bold)
+ ifDTfprintf(SORT,"\\bf ");
+ if (FLAG_Italique)
+ ifDTfprintf(SORT,"\\it ");
+ }
+
+ /* On a besoin de faire une mise a jour de l'aspect (Bold, Italique)
+ car le changement de fonte le detruit (justement)*/
+
+ | FS num { if (FLAG_DebutTeX && FLAG_Equation==0) ifDTfprintf(SORT,"%s",EqTeXTaille($2));
+ FonteActuelle=DebLisFontes;
+ while(FonteActuelle!=NULL && FonteActuelle->LF_Fontnum!=$2)
+ FonteActuelle=FonteActuelle->suiv;
+ if (FonteActuelle!=NULL)
+ { if (!strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ FLAG_Symbol=1;
+ if (strcmp(FonteActuelle->LF_Fontname,"Symbol"))
+ {
+ ifDTfprintf(SORT,"%s",FonteActuelle->LF_TexEquiv);
+ FLAG_Symbol=0;
+ }
+ }
+ else FLAG_Symbol=0;
+ /* On est obliges de repositionner les parametres de la fonte... */
+ if (FLAG_Bold)
+ ifDTfprintf(SORT,"\\bf ");
+ if (FLAG_Italique)
+ ifDTfprintf(SORT,"\\it ");
+ }
+ | I num { if ($2==1) { ifDTfprintf(SORT,"\\it "); FLAG_Italique=1; }
+ else if ($2==0) ifDTfprintf(SORT,"\t\t\t ****** Fin de italique \n");
+ else ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le italique \n");
+ }
+ | OUTL num
+ | REVISED
+ | REVAUTH num
+ | REVDTTM num
+ | SCAPS num
+ | SHAD num
+ | STRIKE num
+ | UL num { if (FLAG_DebutTeX)
+ { if ($2==1)
+ {
+ ifDTfprintf(SORT,"\\underline {");
+ FLAG_Underline=1;
+ }
+ else if ($2==0)
+ {
+ ifDTfprintf(SORT,"\t\t\t ****** Fin de underline \n");
+ FLAG_Underline=0;
+ }
+ else ifDTfprintf(SORT,"\t\t\t !!!!!! Erreur dans le underline \n");
+ }
+ }
+ | ULD num
+ | ULDB num
+ | ULNONE
+ | ULW
+ | UP num { if (FLAG_DebutTeX)
+ {
+ if (FLAG_Equation==0)
+ {FLAG_Equation=-1;
+ ifDTfprintf(SORT,"$^{%%\n");
+ }
+ else
+ { ifDTfprintf(SORT,"^{%%\n"); }
+ FLAG_Exposant++;
+ }
+ }
+ | SUPER
+ | V num
+ | CF num
+ | CB num
+ | RTLCH
+ | LTRCH
+ | CS num
+ | CCHS num
+ | LANG num
+ ;
+ /* Proprietes de formatage du texte */
+atext: 'z' /* Code qui ne sera jamais passe par l'analyseur lexical */
+ /* Vide POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+ ;
+ /* Proprietes des characteres associes (pour les langues Arabe et Hebreux) */
+spec: CHDATE { ifDTfprintf(SORT,"\\today "); }
+ | CHDPL { ifDTfprintf(SORT,"\\today "); }
+ | CHDPA { ifDTfprintf(SORT,"\\today "); }
+ | CHTIME
+ | CHPGN
+ | SECTNUM
+ | CHFTN
+ | CHATN
+ | CHFTNSEP
+ | CHFTNSEPC
+/* | motcell
+ | motrow*/
+ | PAR { if (FLAG_BorderBot) ifDTfprintf(SORT,"\\hline%%\n");
+ FLAG_BorderBot=0;
+ if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (!FLAG_Footer && !FLAG_Equation) { ifDTfprintf(SORT,"\n\\par "); };
+ if (FLAG_LI!=0)
+ ifDTfprintf(SORT,"\n\\leftskip = %d pt ",FLAG_LI);
+ if (FLAG_RI!=0)
+ ifDTfprintf(SORT,"\n\\rightskip = %d pt ",FLAG_RI);
+ if (FLAG_FI!=0)
+ ifDTfprintf(SORT,"\n\\parindent = %d pt\n",FLAG_FI);
+ FLAG_Dollars=0;
+ }
+ | SECT
+ | PAGE { ifDTfprintf(SORT,"\\newpage ");}
+ | COLUMN
+ | LINE { ifDTfprintf(SORT,"\\newline ");}
+ | SOFTPAGE
+ | SOFTCOL
+ | SOFTLINE
+ | SOFTLHEIGHT num
+ | TAB { ifDTfprintf(SORT,"\n\\hspace{%dpt}", PZ_FD.FDDEFTAB);}
+ | EMDASH { ifDTfprintf(SORT,"--"); }
+ | ENDASH { ifDTfprintf(SORT,"-"); }
+ | EMSPACE { ifDTfprintf(SORT,"\\,\\,"); }
+ | ENSPACE { ifDTfprintf(SORT,"\\, "); }
+ | BULLET { if (FLAG_Equation) ifDTfprintf(SORT,"\\bullet ");
+ if (!FLAG_Equation) ifDTfprintf(SORT,"$\\bullet $"); }
+ | LQUOTE { ifDTfprintf(SORT,"`"); }
+ | RQUOTE { ifDTfprintf(SORT,"'"); }
+ | LDBLQUOTE { ifDTfprintf(SORT,"\""); }
+ | RDBLQUOTE { ifDTfprintf(SORT,"\""); }
+ | PIPE { FLAG_Equation=1; }
+ equation
+ | TILDE { ifDTfprintf(SORT,"\\ "); }
+ | MOINS /* Optional Hyphen: Cesure */
+ | UNDERSCORE /* Nonbreaking Hyphen: Cesure */
+ | DEUXPOINTS /* Sous-Entree dans un index */
+/* | ETOILE /* Nouvelles commandes */
+ | APOSTROPHE /* ' : APOSTROPHE plus valeur hexa */
+ { {
+ unsigned long ullu;
+ ullu=strtol($1,NULL,16);
+ if (FLAG_Symbol) printApostrophe(ullu);
+ if (!FLAG_Symbol)
+ {
+ if (ASCII_TABLE==2 && !FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_PC[ullu-DEBASCII_PC]);
+ if (ASCII_TABLE==1 && !FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_MAC[ullu-DEBASCII_MAC]);
+ if (ASCII_TABLE==2 && FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_PC_MATH[ullu-DEBASCII_PC]);
+ if (ASCII_TABLE==1 && FLAG_Equation)
+ ifDTfprintf(SORT,"%s",ASCII_MAC_MATH[ullu-DEBASCII_MAC]);
+ }
+ }
+ }
+ | LTRMARK
+ | RTLMARK
+ | ZWJ
+ | ZWNJ
+ ;
+ /* Caracteres Speciaux */
+
+picttype: MACPICT
+ | PMMETAFILE num
+ | WMETAFILE { FLAG_WMetafile=1; }
+ num
+ | DIBITMAP num bitmapinfo
+ | WBITMAP num
+ ;
+bitmapinfo: WBMBITSPIXEL num
+ | WBMPLANES num
+ | WBMWIDTHBYTES num
+ | bitmapinfo WBMBITSPIXEL num
+ | bitmapinfo WBMPLANES num
+ | bitmapinfo WBMWIDTHBYTES num
+ ;
+pict: '{' PICT pzpict datadata '}'
+ ;
+pictsize: pzpictsize ppzpictsize pppzpictsize
+ | pzpictsize ppzpictsize
+ | pzpictsize pppzpictsize
+ | pzpictsize
+ ;
+pzpict: brdr
+ | pznvshading
+ | picttype
+ | pictsize
+ | metafileinfo
+ | pzpict brdr
+ | pzpict pznvshading
+ | pzpict picttype
+ | pzpict pictsize
+ | pzpict metafileinfo
+ ;
+pzpictsize: PICW num { FLAG_PICTLargeur=$2/20; }
+ | PICH num { FLAG_PICTHauteur=$2/20; }
+ | pzpictsize PICW num { FLAG_PICTLargeur=$3/20; }
+ | pzpictsize PICH num { FLAG_PICTHauteur=$3/20; }
+ ;
+ppzpictsize: PICWGOAL num { FLAG_PICTLargeur=$2/20; }
+ | PICHGOAL num { FLAG_PICTHauteur=$2/20; }
+ | ppzpictsize PICWGOAL num { FLAG_PICTLargeur=$3/20; }
+ | ppzpictsize PICHGOAL num { FLAG_PICTHauteur=$3/20; }
+ ;
+pppzpictsize: PICSCALEX num
+ | PICSCALEY num
+ | PICSCALED num
+ | PICCROPT num
+ | PICCROPB num
+ | PICCROPR num
+ | PICCROPL num
+ | pppzpictsize PICSCALEX num
+ | pppzpictsize PICSCALEY num
+ | pppzpictsize PICSCALED num
+ | pppzpictsize PICCROPT num
+ | pppzpictsize PICCROPB num
+ | pppzpictsize PICCROPR num
+ | pppzpictsize PICCROPL num
+ ;
+metafileinfo: PICBMP
+ | PICBPP
+ | metafileinfo PICBMP
+ | metafileinfo PICBPP
+ ;
+datadata: BIN BDATA
+ | SDATA
+ | pzpcdata
+ ;
+pzobj: objtype
+ | objmod
+ | objclass
+ | objname
+ | objtime
+ | objsize
+ | rsltmod
+ | pzobj objtype
+ | pzobj objmod
+ | pzobj objclass
+ | pzobj objname
+ | pzobj objtime
+ | pzobj objsize
+ | pzobj rsltmod
+ ;
+objtype: OBJEMB
+ | OBJLINK
+ | OBJAUTLINK
+ | OBJSUB
+ | OBJPUB
+ | ONJICEMB
+ ;
+objmod: LINKSELF
+ | OBJLOCK
+ | OBJUPDATE
+ ;
+objclass: '{' ETOILE OBJCLASS pzpcdata '}'
+ ;
+objname: '{' ETOILE OBJNAME pzpcdata '}'
+ ;
+objtime: '{' ETOILE OBJTIME time '}'
+ ;
+rsltmod: RSLTMERGE
+ | rsltmod RSLTMERGE
+ | rslttype
+ | rsltmod rslttype
+ ;
+rslttype: RSLTRTF
+ | RSLTTXT
+ | RSLTPICT
+ | RSLTBMP
+ ;
+objsize: OBJSETSIZE
+ | OBJALIGN num
+ | OBJTRANSY num
+ | objhw
+ | OBJCROPT num
+ | OBJCROPB num
+ | OBJCROPL num
+ | OBJCROPR num
+ | OBJSCALEY num
+ | OBJSCALEX num
+ | objsize OBJSETSIZE
+ | objsize OBJALIGN num
+ | objsize OBJTRANSY num
+ | objsize objhw
+ | objsize OBJCROPT num
+ | objsize OBJCROPB num
+ | objsize OBJCROPL num
+ | objsize OBJCROPR num
+ | objsize OBJSCALEY num
+ | objsize OBJSCALEX num
+ ;
+objhw: OBJH num
+ | OBJW num
+ | objhw OBJH num
+ | objhw OBJW num
+ ;
+objdata: '{' ETOILE OBJDATA pzobjdata data '}'
+ | '{' ETOILE OBJDATA data '}'
+ ;
+pzobjdata: objalias
+ | objsect
+ | pzobjdata objalias
+ | pzobjdata objsect
+ ;
+objalias: '{' ETOILE OBJALIAS data '}'
+ ;
+objsect: '{' ETOILE OBJSECT data '}'
+ ;
+result: '{' RESULT ppara '}'
+ ;
+pzpubobject: objalias
+ | objsect
+ | pzpubobject objalias
+ | pzpubobject objsect
+ ;
+ /* Objets crees par Microsoft OLE links et Macintosh Edition Manager*/
+do: 'z' /* Code qui ne sera jamais passe par l'analyseur lexical */
+ /* Vide POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+ ;
+ /* Drawing Objects */
+atrfstart: '{' ETOILE ATRFSTART num '}'
+ | '{' ATRFSTART num '}'
+ ;
+atrfend: '{' ETOILE ATRFEND num '}'
+ | '{' ATRFEND num '}'
+ ;
+annot: atnidauthor '{' ETOILE ATNTIME time '}' CHATN '{' ETOILE ATNICN pict '}'
+ '{' ETOILE ANNOTATION '{' ETOILE ATNREF num '}' ppara '}'
+ | atnidauthor CHATN '{' ETOILE ATNICN pict '}' '{' ETOILE ANNOTATION
+ '{' ETOILE ATNREF num '}' ppara '}'
+ | atnidauthor '{' ETOILE ATNTIME time '}' CHATN '{' ETOILE ANNOTATION
+ '{' ETOILE ATNREF num '}' ppara '}'
+ | atnidauthor CHATN '{' ETOILE ANNOTATION '{' ETOILE ATNREF num '}' ppara '}'
+ ;
+atnidauthor: '{' ETOILE ATNID pzpcdata '}' '{' ETOILE ATNAUTHOR pzpcdata '}'
+ ;
+ /* Annotations */
+fieldmod: FLDDIRTY /* TROUVER UN MOYEN DE GERER LE DIRTY !!!!!! */
+ | FLDEDIT
+ | FLDLOCK
+ | FLDPRIV
+ | FLDDIRTY fieldmod /* TROUVER UN MOYEN DE GERER LE DIRTY !!!!!! */
+ | FLDEDIT fieldmod
+ | FLDLOCK fieldmod
+ | FLDPRIV fieldmod
+ ;
+fieldinst: '{' ETOILE FLDINST pzeqalt '}'
+ ;
+pzeqalt: equation
+ | equation FLDALT
+ | PZPAUTREFIELD pzpcdata
+ ;
+fieldrslt: '{' ETOILE FLDRSLT ppara '}'
+ | '{' FLDRSLT ppara '}' /* Ecart entre la theorie RTF et la pratique :-( */
+ | '{' FLDRSLT '}' /* Ecart entre la theorie RTF et la pratique :-( */
+ ;
+idx: 'z' /* Code qui ne sera jamais passe par l'analyseur lexical */
+ /* Vide POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+ ;
+ /* Index Entries */
+toc: 'z' /* Code qui ne sera jamais passe par l'analyseur lexical */
+ /* Vide POUR L'INSTANT CE CHAMP LA SERA IGNORE. */
+ ;
+ /* Table Of Contents Entries */
+bkmkcol: BKMKCOLF num
+ | BKMKCOLL num
+ | BKMKCOLF num bkmkcol
+ | BKMKCOLL num bkmkcol
+ ;
+
+ /* Regles de Grammaire pour les formules mathematiques */
+equation: /* Vide */
+ | PZPEQ { FLAG_Equation=1;
+ /*if (FLAG_Dollars==1) ifDTfprintf(SORT,"$$ ");
+ if (FLAG_Dollars!=1) */ifDTfprintf(SORT,"$ ");
+ }
+ pformule PZPENDEQ { FLAG_Equation=0;
+ /*if (FLAG_Dollars==1) ifDTfprintf(SORT," $$");
+ if (FLAG_Dollars!=1) */ifDTfprintf(SORT," $");
+ FLAG_Dollars=0;
+ }
+ ;
+pformule: formule
+ | pformule formule
+ ;
+ppvformule: formule
+ | pzpvpcdata {
+ $$=$1;
+ if (FLAG_Symbol==0)
+ {
+ ifDTfprintf(SORT,"{%%\n\\rm ");
+ printText($1);
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ else
+ {
+ printSymbol($1);
+ }
+ }
+ | ppvformule formule
+ | ppvformule pzpvpcdata
+ {
+ $$=$2;
+ if (FLAG_Symbol==0)
+ {
+ ifDTfprintf(SORT,"{%%\n\\rm ");
+ printText($2);
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ else
+ {
+ printSymbol($2);
+ }
+ }
+ ;
+formule: integrale
+ | racine
+ | fraction
+ | matrix
+ | box
+ | bracket
+ | list
+ | overstrike
+ | suscript
+ | texte
+ ;
+integrale: PZINTEGRALE { FLAG_Integrale=INTINT; }
+ integralesw '('
+ {if (FLAG_Integrale==INTINT)
+ ifDTfprintf(SORT,"\\int_{");
+ if (FLAG_Integrale==INTSUM)
+ ifDTfprintf(SORT,"\\sum_{");
+ if (FLAG_Integrale==INTPROD)
+ ifDTfprintf(SORT,"\\prod_{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}^{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}{");
+ }
+ pformule ')' {ifDTfprintf(SORT,"}%%\n");
+ }
+ | PZINTEGRALE { FLAG_Integrale=INTINT; }
+ '(' {if (FLAG_Integrale==INTINT)
+ ifDTfprintf(SORT,"\\int_{");
+ if (FLAG_Integrale==INTSUM)
+ ifDTfprintf(SORT,"\\sum_{");
+ if (FLAG_Integrale==INTPROD)
+ ifDTfprintf(SORT,"\\prod_{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}^{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}{");
+ }
+ pformule ')' {ifDTfprintf(SORT,"}%%\n");
+ }
+ ;
+
+racine: PZRACINE '(' {ifDTfprintf(SORT,"\\sqrt[{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}]{");
+ }
+ pformule ')' {ifDTfprintf(SORT,"}%%\n");
+ }
+ ;
+
+fraction: PZFRACTION '(' {ifDTfprintf(SORT,"\\frac{");
+ }
+ pformule ',' {ifDTfprintf(SORT,"}{");
+ }
+ pformule ')' {ifDTfprintf(SORT,"}%%\n");
+ }
+ ;
+
+matrix: PZMATRIX '(' {ifDTfprintf(SORT,"\\begin{array}{c}\n");
+ FLAG_InMatrix=1;
+ FLAG_MatrixColCour=1;
+ }
+ colones ')' {ifDTfprintf(SORT,"\n\\end{array}\n");
+ FLAG_InMatrix=0;
+ }
+ | PZMATRIX matrixsw '(' {ifDTfprintf(SORT,"\\begin{array}{");
+ for(cpt3=0;cpt3<FLAG_MatrixCols;cpt3++)
+ ifDTfprintf(SORT,"%c",TAB_PosTabMatrix[FLAG_MatrixAlign]);
+ ifDTfprintf(SORT,"}%%\n");
+ FLAG_InMatrix=1;
+ FLAG_MatrixColCour=1;
+ }
+ colones ')' {ifDTfprintf(SORT,"\n\\end{array}\n");
+ FLAG_InMatrix=0;
+ }
+ ;
+box: PZBOX '(' { ifDTfprintf(SORT,"\\fbox{$");
+ }
+ ppvformule ')' { ifDTfprintf(SORT,"$}%%\n");
+ }
+ ;
+bracket: PZBRACKET '(' { ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); }
+ ppvformule ')' { ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; }
+ | PZBRACKET bracketsw '(' { ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); }
+ ppvformule ')' { ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; }
+ | PZBRACKET bracketsw espaces '(' { ifDTfprintf(SORT,"\\left%c ",FLAG_bracketleft); }
+ ppvformule ')' { ifDTfprintf(SORT,"\\right%c ",FLAG_bracketright);
+ FLAG_bracketleft=BRPoint; FLAG_bracketright=BRPoint; }
+ ;
+espaces: ' '
+ | ' '
+ | espaces ' '
+ | espaces ' '
+ ;
+list: PZLIST '('
+ ppvformule ')'
+ ;
+overstrike: PZOVERSTRIKE '('
+ ppvformule ')'
+ | PZOVERSTRIKE overstrikesw '('
+ ppvformule ')'
+ ;
+suscript: PZSUSCRIPT '(' { ifDTfprintf(SORT,"%%\n\\begin{tabular}{l}\n$"); FLAG_SusTab=1;
+ if (FLAG_InMatrix==1) FLAG_InMatrix=-1;
+ }
+ colones ')' { ifDTfprintf(SORT,"$%%\n\\end{tabular}\n"); FLAG_SusTab=0;
+ if (FLAG_InMatrix==-1) FLAG_InMatrix=1;
+ }
+ | PZSUSCRIPT { FLAG_Suscript=0; }
+ suscriptsw '(' {
+ if (FLAG_InMatrix==1) FLAG_InMatrix=-1;
+ if (FLAG_Suscript==EQUP)
+ {ifDTfprintf(SORT,"^{");}
+ else {if (FLAG_Suscript==EQDO)
+ {ifDTfprintf(SORT,"_{");}
+ else {ifDTfprintf(SORT,"{%%\n");}}
+ }
+ colones ')' { ifDTfprintf(SORT,"}%%\n");
+ if (FLAG_InMatrix==-1) FLAG_InMatrix=1;
+ }
+ ;
+bracketsw: EQLC EQCROCHETO { FLAG_bracketleft=BRCrochetO; }
+ | EQLC EQCROCHETF { FLAG_bracketleft=BRCrochetF; }
+ | EQLC EQSUPINFO { FLAG_bracketleft=BRSupInfO; }
+ | EQLC EQSUPINFF { FLAG_bracketleft=BRSupInfF; }
+ | EQLC EQPARENTHO { FLAG_bracketleft=BRParentheseO; }
+ | EQLC EQPARENTHF { FLAG_bracketleft=BRParentheseF; }
+ | EQLC EQACCOLADO { FLAG_bracketleft=BRAccoladeO; }
+ | EQLC EQACCOLADF { FLAG_bracketleft=BRAccoladeF; }
+ | EQRC EQCROCHETO { FLAG_bracketright=BRCrochetO; }
+ | EQRC EQCROCHETF { FLAG_bracketright=BRCrochetF; }
+ | EQRC EQSUPINFO { FLAG_bracketright=BRSupInfO; }
+ | EQRC EQSUPINFF { FLAG_bracketright=BRSupInfF; }
+ | EQRC EQPARENTHO { FLAG_bracketright=BRParentheseO; }
+ | EQRC EQPARENTHF { FLAG_bracketright=BRParentheseF; }
+ | EQRC EQACCOLADO { FLAG_bracketright=BRAccoladeO; }
+ | EQRC EQACCOLADF { FLAG_bracketright=BRAccoladeF; }
+ | EQBC EQCROCHETO { FLAG_bracketright=BRCrochetO; FLAG_bracketleft=BRCrochetO;}
+ | EQBC EQCROCHETF { FLAG_bracketright=BRCrochetF; FLAG_bracketleft=BRCrochetF;}
+ | EQBC EQSUPINFO { FLAG_bracketright=BRSupInfO; FLAG_bracketleft=BRSupInfO;}
+ | EQBC EQSUPINFF { FLAG_bracketright=BRSupInfF; FLAG_bracketleft=BRSupInfF;}
+ | EQBC EQPARENTHO { FLAG_bracketright=BRParentheseO; FLAG_bracketleft=BRParentheseO;}
+ | EQBC EQPARENTHF { FLAG_bracketright=BRParentheseF; FLAG_bracketleft=BRParentheseF;}
+ | EQBC EQACCOLADO { FLAG_bracketright=BRAccoladeO; FLAG_bracketleft=BRAccoladeO;}
+ | EQBC EQACCOLADF { FLAG_bracketright=BRAccoladeF; FLAG_bracketleft=BRAccoladeF;}
+ | bracketsw EQLC EQCROCHETO { FLAG_bracketleft=BRCrochetO; }
+ | bracketsw EQLC EQCROCHETF { FLAG_bracketleft=BRCrochetF; }
+ | bracketsw EQLC EQSUPINFO { FLAG_bracketleft=BRSupInfO; }
+ | bracketsw EQLC EQSUPINFF { FLAG_bracketleft=BRSupInfF; }
+ | bracketsw EQLC EQPARENTHO { FLAG_bracketleft=BRParentheseO; }
+ | bracketsw EQLC EQPARENTHF { FLAG_bracketleft=BRParentheseF; }
+ | bracketsw EQLC EQACCOLADO { FLAG_bracketleft=BRAccoladeO; }
+ | bracketsw EQLC EQACCOLADF { FLAG_bracketleft=BRAccoladeF; }
+ | bracketsw EQRC EQCROCHETO { FLAG_bracketright=BRCrochetO; }
+ | bracketsw EQRC EQCROCHETF { FLAG_bracketright=BRCrochetF; }
+ | bracketsw EQRC EQSUPINFO { FLAG_bracketright=BRSupInfO; }
+ | bracketsw EQRC EQSUPINFF { FLAG_bracketright=BRSupInfF; }
+ | bracketsw EQRC EQPARENTHO { FLAG_bracketright=BRParentheseO; }
+ | bracketsw EQRC EQPARENTHF { FLAG_bracketright=BRParentheseF; }
+ | bracketsw EQRC EQACCOLADO { FLAG_bracketright=BRAccoladeO; }
+ | bracketsw EQRC EQACCOLADF { FLAG_bracketright=BRAccoladeF; }
+ | bracketsw EQBC EQCROCHETO { FLAG_bracketright=BRCrochetO; FLAG_bracketleft=BRCrochetO;}
+ | bracketsw EQBC EQCROCHETF { FLAG_bracketright=BRCrochetF; FLAG_bracketleft=BRCrochetF;}
+ | bracketsw EQBC EQSUPINFO { FLAG_bracketright=BRSupInfO; FLAG_bracketleft=BRSupInfO;}
+ | bracketsw EQBC EQSUPINFF { FLAG_bracketright=BRSupInfF; FLAG_bracketleft=BRSupInfF;}
+ | bracketsw EQBC EQPARENTHO { FLAG_bracketright=BRParentheseO; FLAG_bracketleft=BRParentheseO;}
+ | bracketsw EQBC EQPARENTHF { FLAG_bracketright=BRParentheseF; FLAG_bracketleft=BRParentheseF;}
+ | bracketsw EQBC EQACCOLADO { FLAG_bracketright=BRAccoladeO; FLAG_bracketleft=BRAccoladeO;}
+ | bracketsw EQBC EQACCOLADF { FLAG_bracketright=BRAccoladeF; FLAG_bracketleft=BRAccoladeF;}
+ ;
+
+matrixsw: EQAL { FLAG_MatrixAlign=LEFT; }
+ | EQAC { FLAG_MatrixAlign=CENTER; }
+ | EQAR { FLAG_MatrixAlign=RIGHT; }
+ | EQCO num { FLAG_MatrixCols=$2; }
+ | EQVS num
+ | EQHS num
+ | matrixsw EQAL { FLAG_MatrixAlign=LEFT; }
+ | matrixsw EQAC { FLAG_MatrixAlign=CENTER; }
+ | matrixsw EQAR { FLAG_MatrixAlign=RIGHT; }
+ | matrixsw EQCO num { FLAG_MatrixCols=$3; }
+ | matrixsw EQVS num
+ | matrixsw EQHS num
+ ;
+integralesw: EQSU { FLAG_Integrale=INTSUM; }
+ | EQPR { FLAG_Integrale=INTPROD; }
+ | EQIN
+ | EQFC pzpvpcdata
+ | EQVC pzpvpcdata
+ | EQSU { FLAG_Integrale=INTSUM; }
+ integralesw
+ | EQPR { FLAG_Integrale=INTPROD; }
+ integralesw
+ | EQIN integralesw
+ | EQFC pzpvpcdata integralesw
+ | EQVC pzpvpcdata integralesw
+ ;
+overstrikesw: EQAL
+ | EQAC
+ | EQAR
+ ;
+suscriptsw: EQAI num
+ | EQUP num { FLAG_Suscript=EQUP; }
+ | EQDI num
+ | EQDO num { FLAG_Suscript=EQDO; }
+ ;
+colones: colones ',' ','
+ pformule {
+ if (FLAG_SusTab) ifDTfprintf(SORT,"$\\\\\n$");
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ }
+ | pformule {
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ }
+ | colones ','
+ pformule {
+ if (FLAG_SusTab) ifDTfprintf(SORT,"$\\\\\n$");
+ if (FLAG_InMatrix==1)
+ {
+ if (FLAG_MatrixColCour==FLAG_MatrixCols)
+ {
+ ifDTfprintf(SORT,"\\\\\n");
+ FLAG_MatrixColCour=0;
+ }
+ if (FLAG_MatrixColCour!=FLAG_MatrixCols && FLAG_MatrixCols!=1)
+ ifDTfprintf(SORT," %c ",'&');
+ FLAG_MatrixColCour++;
+ }
+ }
+ ;
+
+texte: /* Vide */
+ | ' ' texte
+ | ' '
+ | '(' ')' { ifDTfprintf(SORT,"()"); }
+ | '(' { ifDTfprintf(SORT,"("); }
+ ppvformule ')' { ifDTfprintf(SORT,")"); }
+ | pznvcharr texte
+ | pznvcharr
+ ;
+/* Les regles suivantes sont necessaires pour eviter des boucles infinies dans le vide */
+etfinpznvcharr: '}'
+ {
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==0 && !FLAG_Indice)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==0 && !FLAG_Exposant)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ $$="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ }
+ | pznvcharr '}'
+ {
+ if (FLAG_Indice)
+ {
+ FLAG_Indice--;
+ if (FLAG_Equation==0 && !FLAG_Indice)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Exposant)
+ {
+ FLAG_Exposant--;
+ if (FLAG_Equation==0 && !FLAG_Exposant)
+ ifDTfprintf(SORT,"}$%%\n");
+ else
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ if (FLAG_Symbol==1) FLAG_Symbol=0;
+ $$="";
+ if (FLAG_DebutTeX) contextback();ifDTfprintf(SORT,"}%%\n");
+ }
+ ;
+pznvcharr: '{' { ifDTfprintf(SORT,"{%%\n");
+ if (FLAG_DebutTeX) ContextActuel=nouvcontext(JUST);
+ }
+ etfinpznvcharr
+
+ /* | atext ; Non traite pour l'instant*/
+ | pchrfmt pdata { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$2;
+ }
+ | pznvpdata { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$1;
+ }
+ | pchrfmt pdata charr { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$2;
+ }
+ | pznvpdata charr { if (FLAG_Underline==1)
+ {
+ FLAG_Underline=0;
+ ifDTfprintf(SORT,"}%%\n");
+ }
+ $$=$1;
+ }
+ ;
+
+
+
+%%
+#include "rtf.lex.c"
+
+
+
+
+