Changes in / [698664b3:d2ded3e7]


Ignore:
Files:
9 added
3 deleted
25 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r698664b3 rd2ded3e7  
    2727# generated by bison and lex from cfa.yy and lex.ll, respectively
    2828src/Parser/parser.output
     29
     30# generated by latex
     31doc/refrat/refrat.aux
     32doc/refrat/refrat.bbl
     33doc/refrat/refrat.blg
     34doc/refrat/refrat.brf
     35doc/refrat/refrat.dvi
     36doc/refrat/refrat.idx
     37doc/refrat/refrat.ilg
     38doc/refrat/refrat.ind
     39doc/refrat/refrat.log
     40doc/refrat/refrat.out
     41doc/refrat/refrat.pdf
     42doc/refrat/refrat.ps
     43doc/refrat/refrat.toc
  • doc/refrat/refrat.tex

    r698664b3 rd2ded3e7  
     1% requires tex packages: texlive-base texlive-latex-base tex-common texlive-humanities texlive-latex-extra texlive-fonts-recommended
     2
     3\documentclass[openright,twoside]{report}
     4%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     5
     6% Latex packages used in the document.
     7
     8\usepackage{fullpage,times}
     9\usepackage{xspace}
     10\usepackage{varioref}
     11\usepackage{listings}
     12\usepackage{comment}
     13\usepackage{latexsym}                                   % \Box
     14\usepackage{mathptmx}                                   % better math font with "times"
     15\usepackage[pagewise]{lineno}
     16\renewcommand{\linenumberfont}{\scriptsize\sffamily}
     17\usepackage[dvips,plainpages=false,pdfpagelabels,pdfpagemode=UseNone,colorlinks=true,pagebackref=true,linkcolor=blue,citecolor=blue,urlcolor=blue,pagebackref=true,breaklinks=true]{hyperref}
     18\usepackage{breakurl}
     19\urlstyle{sf}
     20
     21%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     22
     23% Names used in the document.
     24
     25\newcommand{\CFA}{Cforall\xspace}               % set language text name
     26\newcommand{\CFAA}{C$\forall$\xspace}   % set language symbolic name
     27\newcommand{\CC}{C\kern-.1em\hbox{+\kern-.25em+}\xspace} % CC symbolic name
     28\def\c11{ISO/IEC C} % C11 name (cannot have numbers in latex command name)
     29
     30%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     31
     32% Bespoke macros used in the document.
     33
     34\makeatletter
     35% index macros
     36\newcommand{\italic}[1]{\emph{\hyperpage{#1}}}
     37\newcommand{\definition}[1]{\textbf{\hyperpage{#1}}}
     38\newcommand{\see}[1]{\emph{see} #1}
     39
     40% Define some commands that produce formatted index entries suitable for cross-references.
     41% ``\spec'' produces entries for specifications of entities.  ``\impl'' produces entries for their
     42% implementations, and ``\use'' for their uses.
     43
     44%  \newcommand{\bold}[1]{{\bf #1}}
     45%  \def\spec{\@bsphack\begingroup
     46%             \def\protect##1{\string##1\space}\@sanitize
     47%             \@wrxref{|bold}}
     48\def\impl{\@bsphack\begingroup
     49          \def\protect##1{\string##1\space}\@sanitize
     50          \@wrxref{|definition}}
     51\newcommand{\indexcode}[1]{{\lstinline$#1$}}
     52\def\use{\@bsphack\begingroup
     53         \def\protect##1{\string##1\space}\@sanitize
     54         \@wrxref{|hyperpage}}
     55\def\@wrxref#1#2{\let\thepage\relax
     56    \xdef\@gtempa{\write\@indexfile{\string
     57    \indexentry{#2@{\lstinline$#2$}#1}{\thepage}}}\endgroup\@gtempa
     58    \if@nobreak \ifvmode\nobreak\fi\fi\@esphack}
     59%\newcommand{\use}[1]{\index{#1@{\lstinline$#1$}}}
     60%\newcommand{\impl}[1]{\index{\protect#1@{\lstinline$\protect#1$}|definition}}
     61
     62% text inline and lowercase index: \Index{Inline and index text}
     63% text inline and as-in index: \Index{Inline and Index text}
     64% text inline but index with different as-is text: \Index[index text]{inline text}
     65\newcommand{\Index}{\@ifstar\@sIndex\@Index}
     66\newcommand{\@Index}[2][\@empty]{\lowercase{\def\temp{#2}}#2\ifx#1\@empty\index{\temp}\else\index{#1@{\protect#2}}\fi}
     67\newcommand{\@sIndex}[2][\@empty]{#2\ifx#1\@empty\index{#2}\else\index{#1@{\protect#2}}\fi}
     68\makeatother
     69
     70% blocks and titles
     71\newcommand{\define}[1]{\emph{#1\/}\index{#1}}
     72\newenvironment{rationale}{%
     73  \begin{quotation}\noindent$\Box$\enspace
     74}{%
     75  \hfill\enspace$\Box$\end{quotation}
     76}%
     77\newcommand{\rewrite}{\(\Rightarrow\)}
     78\newcommand{\rewriterules}{\paragraph{Rewrite Rules}~\par\noindent}
     79\newcommand{\examples}{\paragraph{Examples}~\par\noindent}
     80\newcommand{\semantics}{\paragraph{Semantics}~\par\noindent}
     81\newcommand{\constraints}{\paragraph{Constraints}~\par\noindent}
     82\newcommand{\predefined}{\paragraph{Predefined Identifiers}~\par\noindent}
     83
     84% BNF macros
     85\def\syntax{\paragraph{Syntax}\trivlist\parindent=.5in\item[\hskip.5in]}
     86\let\endsyntax=\endtrivlist
     87\newcommand{\lhs}[1]{\par{\emph{#1:}}\index{#1@{\emph{#1}}|italic}}
     88\newcommand{\rhs}{\hfil\break\hbox{\hskip1in}}
     89\newcommand{\oldlhs}[1]{\emph{#1: \ldots}\index{#1@{\emph{#1}}|italic}}
     90\newcommand{\nonterm}[1]{\emph{#1\/}\index{#1@{\emph{#1}}|italic}}
     91\newcommand{\opt}{$_{opt}$\ }
     92
     93% adjust varioref package with default "section" and "page" titles, and optional title with faraway page numbers
     94% \VRef{label} => Section 2.7, \VPageref{label} => page 17
     95% \VRef[Figure]{label} => Figure 3.4, \VPageref{label} => page 17
     96\renewcommand{\reftextfaceafter}{\unskip}
     97\renewcommand{\reftextfacebefore}{\unskip}
     98\renewcommand{\reftextafter}{\unskip}
     99\renewcommand{\reftextbefore}{\unskip}
     100\renewcommand{\reftextfaraway}[1]{\unskip, p.~\pageref{#1}}
     101\renewcommand{\reftextpagerange}[2]{\unskip, pp.~\pageref{#1}--\pageref{#2}}
     102\newcommand{\VRef}[2][Section]{\ifx#1\@empty\else{#1}\nobreakspace\fi\vref{#2}}
     103\newcommand{\VPageref}[2][page]{\ifx#1\@empty\else{#1}\nobreakspace\fi\pageref{#2}}
     104
     105% adjust listings macros
     106\lstdefinelanguage{CFA}[ANSI]{C}%
     107{morekeywords={asm,_Alignas,_Alignof,_At,_Atomic,_Bool,catch,catchResume,choose,_Complex,context,disable,dtype,enable,
     108        fallthru,finally,forall,ftype,_Generic,_Imaginary,inline,lvalue,_Noreturn,restrict,_Static_assert,
     109        _Thread_local,throw,throwResume,try,type,},
     110}%
     111
     112\lstset{
     113language=CFA,
     114columns=fullflexible,
     115basicstyle=\sf\small,
     116tabsize=4,
     117xleftmargin=\parindent,
     118escapechar=@,
     119%fancyvrb=true,
     120%showtabs=true,
     121keepspaces=true,
     122showtabs=true,
     123tab=,
     124}%
     125
     126\makeatletter
     127% replace/adjust listings characters that look bad in sanserif
     128\lst@CCPutMacro
     129\lst@ProcessOther{"2D}{\lst@ttfamily{-{}}{{\ttfamily\upshape -}}} % replace minus
     130\lst@ProcessOther{"3C}{\lst@ttfamily{<}{\texttt{<}}} % replace less than
     131\lst@ProcessOther{"3E}{\lst@ttfamily{<}{\texttt{>}}} % replace greater than
     132\lst@ProcessOther{"5E}{\raisebox{0.4ex}{$\scriptstyle\land\,$}} % replace circumflex
     133\lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}{{\makebox[1.2ex][c]{\rule{1ex}{0.1ex}}}}} % replace underscore
     134\lst@ProcessOther{"7E}{\raisebox{0.3ex}{$\scriptstyle\sim\,$}} % replace tilde
     135%\lst@ProcessOther{"7E}{\raisebox{-.4ex}[1ex][0pt]{\textasciitilde}} % lower tilde
     136\@empty\z@\@empty
     137\makeatother
     138
     139\setcounter{secnumdepth}{3}     % number subsubsections
     140\setcounter{tocdepth}{3}                % subsubsections in table of contents
     141\makeindex
     142
     143%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     144
     145\begin{document}
     146\pagestyle{headings}
     147\linenumbers                                    % comment out to turn off line numbering
     148
     149\title{\CFA (\CFAA) Reference Manual and Rationale}
     150\author{Glen Ditchfield \and Peter A. Buhr}
     151\date{DRAFT\\\today}
     152
     153\pagenumbering{roman}
     154\pagestyle{plain}
     155
     156\maketitle
     157
     158\vspace*{\fill}
     159\thispagestyle{empty}
     160\noindent
     161\copyright\,2015 Glen Ditchfield \\ \\
     162\noindent
     163This work is licensed under the Creative Commons Attribution 4.0 International License. To view a
     164copy of this license, visit {\small\url{http://creativecommons.org/licenses/by/4.0}}.
     165\vspace*{1in}
     166
     167\clearpage
     168\pdfbookmark[1]{Contents}{section}
     169\tableofcontents
     170
     171\clearpage
     172\pagenumbering{arabic}
     173
     174
     175\chapter*{Introduction}\addcontentsline{toc}{chapter}{Introduction}
     176
     177This document is a reference manual and rationale for \CFA, a polymorphic extension of the C
     178programming language. It makes frequent reference to the {\c11} standard \cite{ANS:C11}, and
     179occasionally compares \CFA to {\CC} \cite{c++}.
     180
     181The manual deliberately imitates the ordering of the {\c11} standard (although the section numbering
     182differs). Unfortunately, this means the manual contains more ``forward references'' than usual,
     183making it harder to follow if the reader does not have a copy of the {\c11} standard. For a simple
     184introduction to \CFA, see the companion document ``An Overview of \CFA''
     185\cite{Ditchfield96:Overview}.
     186
     187\begin{rationale}
     188Commentary (like this) is quoted with quads. Commentary usually deals with subtle points, the
     189rationale behind a rule, and design decisions.
     190\end{rationale}
     191
     192% No ``Scope'' or ``Normative references'' chapters yet.
     193
     194
     195\setcounter{chapter}{2}
     196\chapter{Terms, definitions, and symbols}
     197
     198Terms from the {\c11} standard used in this document have the same meaning as in the {\c11}
     199standard.
     200
     201% No ``Conformance'' or ``Environment'' chapters yet.
     202
     203
     204\setcounter{chapter}{5}
     205\chapter{Language}
     206
     207
     208\section{Notation}
     209The syntax notation used in this document is the same as in the {\c11} standard, with one exception:
     210ellipsis in the definition of a nonterminal, as in ``\emph{declaration:} \ldots'', indicates that
     211these rules extend a previous definition, which occurs in this document or in the {\c11} standard.
     212
     213
     214\section{Concepts}
     215
     216
     217\subsection{Scopes of identifiers}\index{scopes}
     218
     219\CFA's scope rules differ from C's in one major respect: a declaration of an identifier may
     220overload\index{overloading} outer declarations of lexically identical identifiers in the same
     221\Index{name space}, instead of hiding them. The outer declaration is hidden if the two declarations
     222have \Index{compatible type}, or if one declares an array type and the other declares a pointer type
     223and the element type and pointed-at type are compatible, or if one has function type and the other
     224is a pointer to a compatible function type, or if one declaration is a \lstinline$type$\use{type} or
     225\lstinline$typedef$\use{typedef} declaration and the other is not.  The outer declaration becomes
     226\Index{visible} when the scope of the inner declaration terminates.
     227\begin{rationale}
     228Hence, a \CFA program can declare an \lstinline$int v$ and a \lstinline$float v$ in the same
     229scope; a {\CC} program can not.
     230\end{rationale}
     231
     232
     233\subsection{Linkage of identifiers}
     234\index{linkage}
     235
     236\CFA's linkage rules differ from C's in only one respect: instances of a particular identifier with
     237external or internal linkage do not necessarily denote the same object or function. Instead, in the
     238set of translation units and libraries that constitutes an entire program, any two instances of a
     239particular identifier with \Index{external linkage} denote the same object or function if they have
     240\Index{compatible type}s, or if one declares an array type and the other declares a pointer type and
     241the element type and pointed-at type are compatible, or if one has function type and the other is a
     242pointer to a compatible function type. Within one translation unit, each instance of an identifier
     243with \Index{internal linkage} denotes the same object or function in the same circumstances.
     244Identifiers with \Index{no linkage} always denote unique entities.
     245\begin{rationale}
     246A \CFA program can declare an \lstinline$extern int v$ and an \lstinline$extern float v$; a C
     247program cannot.
     248\end{rationale}
     249
     250
     251\setcounter{subsection}{8}
     252\subsection{Generic Types}
     253
     254
     255\subsubsection{Semantics}
     256
     257\CFA provides a capability for generic types; using this capability a single "generic type
     258generator" can be written that can represent multiple concrete type instantiations by substitution
     259of the "type parameters" of the generic type for concrete types. Syntactically a generic type
     260generator is represented by putting a forall specifier on a struct or union declaration, as defined
     261in \VRef{forall}. An instantiation of the generic type is written by specifying the type parameters
     262in parentheses after the name of the generic type generator:
     263\begin{lstlisting}
     264forall( type T | sumable( T ) ) struct pair {
     265        T x;
     266        T y;
     267};
     268pair( int ) p = { 3, 14 };
     269\end{lstlisting}
     270
     271The type parameters in an instantiation of a generic type must satisfy any constraints in the forall
     272specifier on the type generator declaration, e.g., \lstinline$sumable$. The instantiation then has
     273the semantics that would result if the type parameters were substituted into the type generator
     274declaration by macro substitution.
     275
     276Polymorphic functions may have generic types as parameters, and those generic types may use type
     277parameters of the polymorphic function as type parameters of the generic type:
     278\begin{lstlisting}
     279forall( type T ) void swap( pair(T) *p ) {
     280        T z = p->x;
     281        p->x = p->y;
     282        p->y = z;
     283}
     284\end{lstlisting}
     285
     286
     287\subsubsection{Constraints}
     288
     289To avoid unduly constraining implementors, the generic type generator definition must be visible at
     290any point where it is instantiated.  Forward declarations of generic type generators are not
     291forbidden, but the definition must be visible to instantiate the generic type.  Equivalently,
     292instantiations of generic types are not allowed to be incomplete types.
     293
     294\examples
     295\begin{lstlisting}
     296forall( type T ) struct A;
     297
     298forall( type T ) struct B {
     299        A(T) *a;  // legal, but cannot instantiate B(T)
     300};
     301
     302B(T) x; // illegal, *x.a is of an incomplete generic type
     303
     304forall( type T ) struct A {
     305        B( T ) *b;
     306};
     307
     308B( T ) y; // legal, *x.a is now of a complete generic type
     309
     310
     311// box.h:
     312        forall( type T ) struct box;
     313        forall( type T ) box( T ) *make_box( T );
     314        forall( type T ) void use_box( box( T ) *b );
     315       
     316// main.c:
     317        box( int ) *b = make_box( 42 ); // illegal, def'n of box not visible
     318        use_box( b ); // illegal
     319\end{lstlisting}
     320
     321
     322\section{Conversions}
     323\CFA defines situations where values of one type are automatically converted to another type.
     324These conversions are called \define{implicit conversion}s. The programmer can request
     325\define{explicit conversion}s using cast expressions.
     326
     327
     328\subsection{Arithmetic operands}
     329
     330
     331\setcounter{subsubsection}{8}
     332\subsubsection{Safe arithmetic conversions}
     333
     334In C, a pattern of conversions known as the \define{usual arithmetic conversion}s is used with most
     335binary arithmetic operators to convert the operands to a common type and determine the type of the
     336operator's result. In \CFA, these conversions play a role in overload resolution, and
     337collectively are called the \define{safe arithmetic conversion}s.
     338
     339Let \(int_r\) and \(unsigned_r\) be the signed and unsigned integer types with integer conversion
     340rank\index{integer conversion rank}\index{rank|see{integer conversion rank}} $r$. Let
     341\(unsigned_{mr}\) be the unsigned integer type with maximal rank.
     342
     343The following conversions are \emph{direct} safe arithmetic conversions.
     344\begin{itemize}
     345\item
     346The \Index{integer promotion}s.
     347
     348\item
     349For every rank $r$ greater than or equal to the rank of \lstinline$int$, conversion from \(int_r\)
     350to \(unsigned_r\).
     351
     352\item
     353For every rank $r$ greater than or equal to the rank of \lstinline$int$, where \(int_{r+1}\) exists
     354and can represent all values of \(unsigned_r\), conversion from \(unsigned_r\) to \(int_{r+1}\).
     355
     356\item
     357Conversion from \(unsigned_{mr}\) to \lstinline$float$.
     358
     359\item
     360Conversion from an enumerated type to its compatible integer type.
     361
     362\item
     363Conversion from \lstinline$float$ to \lstinline$double$, and from \lstinline$double$ to
     364\lstinline$long double$.
     365
     366\item
     367Conversion from \lstinline$float _Complex$ to \lstinline$double _Complex$,
     368and from \lstinline$double _Complex$ to \lstinline$long double _Complex$.
     369
     370\begin{sloppypar}
     371\item
     372Conversion from \lstinline$float _Imaginary$ to \lstinline$double _Imaginary$, and from
     373\lstinline$double _Imaginary$ to \lstinline$long double$ \lstinline$_Imaginary$, if the
     374implementation supports imaginary types.
     375\end{sloppypar}
     376\end{itemize}
     377
     378If type \lstinline$T$ can be converted to type \lstinline$U$ by a safe direct arithmetic conversion
     379and type \lstinline$U$ can be converted to type \lstinline$V$ by a safe arithmetic conversion, then
     380the conversion from \lstinline$T$ to type \lstinline$V$ is an \emph{indirect} safe arithmetic
     381conversion.
     382
     383\begin{rationale}
     384Note that {\c11} does not include conversion from \Index{real type}s to \Index{complex type}s in the
     385usual arithmetic conversions, and \CFA does not include them as safe conversions.
     386\end{rationale}
     387
     388
     389\subsection{Other operands}
     390
     391
     392\setcounter{subsubsection}{3}
     393\subsubsection{Anonymous structures and unions}
     394\label{anon-conv}
     395
     396If an expression's type is a pointer to a structure or union type that has a member that is an
     397\Index{anonymous structure} or an \Index{anonymous union}, it can be implicitly
     398converted\index{implicit conversion} to a pointer to the anonymous structure's or anonymous union's
     399type. The result of the conversion is a pointer to the member.
     400
     401\examples
     402\begin{lstlisting}
     403struct point {
     404        int x, y;
     405};
     406void move_by(struct point * p1, struct point * p2) {@\impl{move_by}@
     407        p1->x += p2.x;
     408        p1->y += p2.y;
     409}
     410
     411struct color_point {
     412        enum { RED, BLUE, GREEN } color;
     413        struct point;
     414} cp1, cp2;
     415move_to(&cp1, &cp2);
     416\end{lstlisting}
     417Thanks to implicit conversion, the two arguments that \lstinline$move_by()$ receives are pointers to
     418\lstinline$cp1$'s second member and \lstinline$cp2$'s second member.
     419
     420
     421\subsubsection{Specialization}
     422A function or value whose type is polymorphic may be implicitly converted to one whose type is
     423\Index{less polymorphic} by binding values to one or more of its \Index{inferred parameter}. Any
     424value that is legal for the inferred parameter may be used, including other inferred parameters.
     425
     426If, after the inferred parameter binding, an \Index{assertion parameter} has no inferred parameters
     427in its type, then an object or function must be visible at the point of the specialization that has
     428the same identifier as the assertion parameter and has a type that is compatible\index{compatible
     429  type} with or can be specialized to the type of the assertion parameter.  The assertion parameter
     430is bound to that object or function.
     431
     432The type of the specialization is the type of the original with the bound inferred parameters and
     433the bound assertion parameters replaced by their bound values.
     434
     435\examples
     436The type
     437\begin{lstlisting}
     438forall( type T, type U ) void (*)( T, U );
     439\end{lstlisting}
     440can be specialized to (among other things)
     441\begin{lstlisting}
     442forall( type T ) void (*)( T, T );              // U bound to T
     443forall( type T ) void (*)( T, real );   // U bound to real
     444forall( type U ) void (*)( real, U );   // T bound to real
     445void f( real, real );                                   // both bound to real
     446\end{lstlisting}
     447
     448The type
     449\begin{lstlisting}
     450forall( type T | T ?+?( T, T )) T (*)( T );
     451\end{lstlisting}
     452can be specialized to (among other things)
     453\begin{lstlisting}
     454int (*)( int );                                         // T bound to int, and T ?+?(T, T ) bound to int ?+?( int, int )
     455\end{lstlisting}
     456
     457
     458\subsubsection{Safe conversions}
     459
     460A \define{direct safe conversion} is one of the following conversions:
     461\begin{itemize}
     462\item
     463a direct safe arithmetic conversion;
     464\item
     465from any object type or incomplete type to \lstinline$void$;
     466\item
     467from a pointer to any non-\lstinline$void$ type to a pointer to \lstinline$void$;
     468\item
     469from a pointer to any type to a pointer to a more qualified version of the type\index{qualified
     470type};
     471\item
     472from a pointer to a structure or union type to a pointer to the type of a member of the structure or
     473union that is an \Index{anonymous structure} or an \Index{anonymous union};
     474\item
     475within the scope of an initialized \Index{type declaration}, conversions between a type and its
     476implementation or between a pointer to a type and a pointer to its implementation.
     477\end{itemize}
     478
     479Conversions that are not safe conversions are \define{unsafe conversion}s.
     480\begin{rationale}
     481As in C, there is an implicit conversion from \lstinline$void *$ to any pointer type. This is
     482clearly dangerous, and {\CC} does not have this implicit conversion.
     483\CFA\index{deficiencies!void * conversion} keeps it, in the interest of remaining as pure a
     484superset of C as possible, but discourages it by making it unsafe.
     485\end{rationale}
     486
     487
     488\subsection{Conversion cost}
     489
     490The \define{conversion cost} of a safe\index{safe conversion}
     491conversion\footnote{Unsafe\index{unsafe conversion} conversions do not have defined conversion
     492costs.} is a measure of how desirable or undesirable it is. It is defined as follows.
     493\begin{itemize}
     494\item
     495The cost of a conversion from any type to itself is 0.
     496
     497\item
     498The cost of a direct safe conversion is 1.
     499
     500\item
     501The cost of an indirect safe arithmetic conversion is the smallest number of direct conversions
     502needed to make up the conversion.
     503\end{itemize}
     504
     505\examples
     506In the following, assume an implementation that does not provide any extended integer types.
     507
     508\begin{itemize}
     509\item
     510The cost of an implicit conversion from \lstinline$int$ to \lstinline$long$ is 1. The cost of an
     511implicit conversion from \lstinline$long$ to \lstinline$double$ is 3, because it is defined in terms
     512of conversions from \lstinline$long$ to \lstinline$unsigned long$, then to \lstinline$float$, and
     513then to \lstinline$double$.
     514
     515\item
     516If \lstinline$int$ can represent all the values of \lstinline$unsigned short$, then the cost of an
     517implicit conversion from \lstinline$unsigned short$ to \lstinline$unsigned$ is 2:
     518\lstinline$unsigned short$ to \lstinline$int$ to \lstinline$unsigned$. Otherwise,
     519\lstinline$unsigned short$ is converted directly to \lstinline$unsigned$, and the cost is 1.
     520
     521\item
     522If \lstinline$long$ can represent all the values of \lstinline$unsigned$, then the conversion cost
     523of \lstinline$unsigned$ to \lstinline$long$ is 1. Otherwise, the conversion is an unsafe
     524conversion, and its conversion cost is undefined.
     525\end{itemize}
     526
     527\section{Lexical elements}
     528\subsection{Keywords}
     529\begin{syntax}
     530\oldlhs{keyword}
     531        \rhs \lstinline$forall$
     532        \rhs \lstinline$lvalue$
     533        \rhs \lstinline$context$
     534        \rhs \lstinline$dtype$
     535        \rhs \lstinline$ftype$
     536        \rhs \lstinline$type$
     537\end{syntax}
     538
     539
     540\subsection{Identifiers}
     541
     542\CFA allows operator \Index{overloading} by associating operators with special function
     543identifiers. Furthermore, the constants ``\lstinline$0$'' and ``\lstinline$1$'' have special status
     544for many of C's data types (and for many programmer-defined data types as well), so \CFA treats them
     545as overloadable identifiers. Programmers can use these identifiers to declare functions and objects
     546that implement operators and constants for their own types.
     547
     548
     549\setcounter{subsubsection}{2}
     550\subsubsection{Constant identifiers}
     551
     552\begin{syntax}
     553\oldlhs{identifier}
     554\rhs \lstinline$0$
     555\rhs \lstinline$1$
     556\end{syntax}
     557
     558\index{constant identifiers}\index{identifiers!for constants} The tokens ``\lstinline$0$''\impl{0}
     559and ``\lstinline$1$''\impl{1} are identifiers. No other tokens defined by the rules for integer
     560constants are considered to be identifiers.
     561\begin{rationale}
     562Why ``\lstinline$0$'' and ``\lstinline$1$''? Those integers have special status in C. All scalar
     563types can be incremented and decremented, which is defined in terms of adding or subtracting 1. The
     564operations ``\lstinline$&&$'', ``\lstinline$||$'', and ``\lstinline$!$'' can be applied to any
     565scalar arguments, and are defined in terms of comparison against 0. A \nonterm{constant-expression}
     566that evaluates to 0 is effectively compatible with every pointer type.
     567
     568In C, the integer constants 0 and 1 suffice because the integer promotion rules can convert them to
     569any arithmetic type, and the rules for pointer expressions treat constant expressions evaluating to
     5700 as a special case. However, user-defined arithmetic types often need the equivalent of a 1 or 0
     571for their functions or operators, polymorphic functions often need 0 and 1 constants of a type
     572matching their polymorphic parameters, and user-defined pointer-like types may need a null value.
     573Defining special constants for a user-defined type is more efficient than defining a conversion to
     574the type from \lstinline$_Bool$.
     575
     576Why \emph{just} ``\lstinline$0$'' and ``\lstinline$1$''? Why not other integers? No other integers
     577have special status in C. A facility that let programmers declare specific
     578constants---``\lstinline$const Rational 12$'', for instance---would not be much of an improvement.
     579Some facility for defining the creation of values of programmer-defined types from arbitrary integer
     580tokens would be needed. The complexity of such a feature doesn't seem worth the gain.
     581\end{rationale}
     582
     583
     584\subsubsection{Operator identifiers}
     585
     586\index{operator identifiers}\index{identifiers!for operators} Table \ref{opids} lists the
     587programmer-definable operator identifiers and the operations they are associated with. Functions
     588that are declared with (or pointed at by function pointers that are declared with) these identifiers
     589can be called by expressions that use the operator tokens and syntax, or the operator identifiers
     590and ``function call'' syntax. The relationships between operators and function calls are discussed
     591in descriptions of the operators.
     592
     593\begin{table}[hbt]
     594\hfil
     595\begin{tabular}[t]{ll}
     596%identifier & operation \\ \hline
     597\lstinline$?[?]$ & subscripting \impl{?[?]}\\
     598\lstinline$?()$ & function call \impl{?()}\\
     599\lstinline$?++$ & postfix increment \impl{?++}\\
     600\lstinline$?--$ & postfix decrement \impl{?--}\\
     601\lstinline$++?$ & prefix increment \impl{++?}\\
     602\lstinline$--?$ & prefix decrement \impl{--?}\\
     603\lstinline$*?$ & dereference \impl{*?}\\
     604\lstinline$+?$ & unary plus \impl{+?}\\
     605\lstinline$-?$ & arithmetic negation \impl{-?}\\
     606\lstinline$~?$ & bitwise negation \impl{~?}\\
     607\lstinline$!?$ & logical complement \impl{"!?}\\
     608\lstinline$?*?$ & multiplication \impl{?*?}\\
     609\lstinline$?/?$ & division \impl{?/?}\\
     610\end{tabular}\hfil
     611\begin{tabular}[t]{ll}
     612%identifier & operation \\ \hline
     613\lstinline$?%?$ & remainder \impl{?%?}\\
     614\lstinline$?+?$ & addition \impl{?+?}\\
     615\lstinline$?-?$ & subtraction \impl{?-?}\\
     616\lstinline$?<<?$ & left shift \impl{?<<?}\\
     617\lstinline$?>>?$ & right shift \impl{?>>?}\\
     618\lstinline$?<?$ & less than \impl{?<?}\\
     619\lstinline$?<=?$ & less than or equal \impl{?<=?}\\
     620\lstinline$?>=?$ & greater than or equal \impl{?>=?}\\
     621\lstinline$?>?$ & greater than \impl{?>?}\\
     622\lstinline$?==?$ & equality \impl{?==?}\\
     623\lstinline$?!=?$ & inequality \impl{?"!=?}\\
     624\lstinline$?&?$ & bitwise AND \impl{?&?}\\
     625\end{tabular}\hfil
     626\begin{tabular}[t]{ll}
     627%identifier & operation \\ \hline
     628\lstinline$?^?$ & exclusive OR \impl{?^?}\\
     629\lstinline$?|?$ & inclusive OR \impl{?"|?}\\
     630\lstinline$?=?$ & simple assignment \impl{?=?}\\
     631\lstinline$?*=?$ & multiplication assignment \impl{?*=?}\\
     632\lstinline$?/=?$ & division assignment \impl{?/=?}\\
     633\lstinline$?%=?$ & remainder assignment \impl{?%=?}\\
     634\lstinline$?+=?$ & addition assignment \impl{?+=?}\\
     635\lstinline$?-=?$ & subtraction assignment \impl{?-=?}\\
     636\lstinline$?<<=?$ & left-shift assignment \impl{?<<=?}\\
     637\lstinline$?>>=?$ & right-shift assignment \impl{?>>=?}\\
     638\lstinline$?&=?$ & bitwise AND assignment \impl{?&=?}\\
     639\lstinline$?^=?$ & exclusive OR assignment \impl{?^=?}\\
     640\lstinline$?|=?$ & inclusive OR assignment \impl{?"|=?}\\
     641\end{tabular}
     642\hfil
     643\caption{Operator Identifiers}
     644\label{opids}
     645\end{table}
     646
     647\begin{rationale}
     648Operator identifiers are made up of the characters of the operator token, with question marks added
     649to mark the positions of the arguments of operators. The question marks serve as mnemonic devices;
     650programmers can not create new operators by arbitrarily mixing question marks and other
     651non-alphabetic characters. Note that prefix and postfix versions of the increment and decrement
     652operators are distinguished by the position of the question mark.
     653\end{rationale}
     654
     655\begin{rationale}
     656The use of ``\lstinline$?$'' in identifiers means that some C programs are not \CFA programs.  For
     657instance, the sequence of characters ``\lstinline$(i < 0)?--i:i$'' is legal in a C program, but a
     658\CFA compiler detects a syntax error because it treats ``\lstinline$?--$'' as an identifier, not
     659as the two tokens ``\lstinline$?$'' and ``\lstinline$--$''.
     660\end{rationale}
     661
     662\begin{rationale}
     663Certain operators \emph{cannot} be defined by the programmer:
     664\begin{itemize}
     665\item
     666The logical operators ``\lstinline$&&$'' and ``\lstinline$||$'', and the conditional operator
     667``\lstinline$?:$''. These operators do not always evaluate their operands, and hence can not be
     668properly defined by functions unless some mechanism like call-by-name is added to the language.
     669Note that the definitions of ``\lstinline$&&$'' and ``\lstinline$||$'' say that they work by
     670checking that their arguments are unequal to 0, so defining ``\lstinline$!=$'' and ``\lstinline$0$''
     671for user-defined types is enough to allow them to be used in logical expressions.
     672
     673\item
     674The comma operator\index{comma expression}. It is a control-flow operator like those above.
     675Changing its meaning seems pointless and confusing.
     676
     677\item
     678The ``address of'' operator. It would seem useful to define a unary ``\lstinline$&$'' operator that
     679returns values of some programmer-defined pointer-like type. The problem lies with the type of the
     680operator. Consider the expression ``\lstinline$p = &x$'', where \lstinline$x$ is of type
     681\lstinline$T$ and \lstinline$p$ has the programmer-defined type \lstinline$T_ptr$. The expression
     682might be treated as a call to the unary function ``\lstinline$&?$''. Now what is the type of the
     683function's parameter? It can not be \lstinline$T$, because then \lstinline$x$ would be passed by
     684value, and there is no way to create a useful pointer-like result from a value. Hence the parameter
     685must have type \lstinline$T *$. But then the expression must be rewritten as ``\lstinline$p = &?( &x )$''
     686---which doesn't seem like progress!
     687
     688The rule for address-of expressions would have to be something like ``keep applying address-of
     689functions until you get one that takes a pointer argument, then use the built-in operator and
     690stop''. It seems simpler to define a conversion function from \lstinline$T *$ to \lstinline$T_ptr$.
     691
     692\item
     693The \lstinline$sizeof$ operator. It is already defined for every object type, and intimately tied
     694into the language's storage allocation model. Redefining it seems pointless.
     695
     696\item
     697The ``member of'' operators ``\lstinline$.$'' and ``\lstinline$->$''. These are not really infix
     698operators, since their right ``operand'' is not a value or object.
     699
     700\item
     701Cast operators\index{cast expression}. Anything that can be done with an explicit cast can be done
     702with a function call. The difference in syntax is small.
     703\end{itemize}
     704\end{rationale}
     705
     706
     707\section{Expressions}
     708
     709\CFA allows operators and identifiers to be overloaded. Hence, each expression can have a number
     710of \define{interpretation}s, each of which has a different type. The interpretations that are
     711potentially executable are called \define{valid interpretation}s. The set of interpretations
     712depends on the kind of expression and on the interpretations of the subexpressions that it contains.
     713The rules for determining the valid interpretations of an expression are discussed below for each
     714kind of expression. Eventually the context of the outermost expression chooses one interpretation
     715of that expression.
     716
     717An \define{ambiguous interpretation} is an interpretation which does not specify the exact object or
     718function denoted by every identifier in the expression. An expression can have some interpretations
     719that are ambiguous and others that are unambiguous. An expression that is chosen to be executed
     720shall not be ambiguous.
     721
     722The \define{best valid interpretations} are the valid interpretations that use the fewest
     723unsafe\index{unsafe conversion} conversions. Of these, the best are those where the functions and
     724objects involved are the least polymorphic\index{less polymorphic}. Of these, the best have the
     725lowest total \Index{conversion cost}, including all implicit conversions in the argument
     726expressions. Of these, the best have the highest total conversion cost for the implicit conversions
     727(if any) applied to the argument expressions. If there is no single best valid interpretation, or if
     728the best valid interpretation is ambiguous, then the resulting interpretation is
     729ambiguous\index{ambiguous interpretation}.
     730
     731\begin{rationale}
     732\CFA's rules for selecting the best interpretation are designed to allow overload resolution to
     733mimic C's operator semantics. In C, the ``usual arithmetic conversions'' are applied to the
     734operands of binary operators if necessary to convert the operands to types with a common real type.
     735In \CFA, those conversions are ``safe''. The ``fewest unsafe conversions'' rule ensures that the
     736usual conversions are done, if possible. The ``lowest total expression cost'' rule chooses the
     737proper common type. The odd-looking ``highest argument conversion cost'' rule ensures that, when
     738unary expressions must be converted, conversions of function results are preferred to conversion of
     739function arguments: \lstinline$(double)-i$ will be preferred to \lstinline$-(double)i$.
     740
     741The ``least polymorphic'' rule reduces the number of polymorphic function calls, since such
     742functions are presumably more expensive than monomorphic functions and since the more specific
     743function is presumably more appropriate. It also gives preference to monomorphic values (such as the
     744\lstinline$int$ \lstinline$0$) over polymorphic values (such as the \Index{null pointer}
     745\lstinline$0$\use{0}). However, interpretations that call polymorphic functions are preferred to
     746interpretations that perform unsafe conversions, because those conversions potentially lose accuracy
     747or violate strong typing.
     748
     749There are two notable differences between \CFA's overload resolution rules and the rules for
     750{\CC} defined in \cite{c++}. First, the result type of a function plays a role. In {\CC}, a
     751function call must be completely resolved based on the arguments to the call in most circumstances.
     752In \CFA, a function call may have several interpretations, each with a different result type, and
     753the interpretations of the containing context choose among them. Second, safe conversions are used
     754to choose among interpretations of all sorts of functions; in {\CC}, the ``usual arithmetic
     755conversions'' are a separate set of rules that apply only to the built-in operators.
     756\end{rationale}
     757
     758Expressions involving certain operators\index{operator identifiers} are considered to be equivalent
     759to function calls. A transformation from ``operator'' syntax to ``function call'' syntax is defined
     760by \define{rewrite rules}. Each operator has a set of predefined functions that overload its
     761identifier. Overload resolution determines which member of the set is executed in a given
     762expression. The functions have \Index{internal linkage} and are implicitly declared with \Index{file
     763scope}. The predefined functions and rewrite rules are discussed below for each of these
     764operators.
     765\begin{rationale}
     766Predefined functions and constants have internal linkage because that simplifies optimization in
     767traditional compile-and-link environments. For instance, ``\lstinline$an_int + an_int$'' is
     768equivalent to ``\lstinline$?+?(an_int, an_int)$''. If integer addition has not been redefined in
     769the current scope, a compiler can generate code to perform the addition directly. If predefined
     770functions had external linkage, this optimization would be difficult.
     771\end{rationale}
     772
     773\begin{rationale}
     774Since each subsection describes the interpretations of an expression in terms of the interpretations
     775of its subexpressions, this chapter can be taken as describing an overload resolution algorithm that
     776uses one bottom-up pass over an expression tree. Such an algorithm was first described (for Ada) by
     777Baker~\cite{Bak:overload}. It is extended here to handle polymorphic functions and arithmetic
     778conversions. The overload resolution rules and the predefined functions have been chosen so that, in
     779programs that do not introduce overloaded declarations, expressions will have the same meaning in C
     780and in \CFA.
     781\end{rationale}
     782
     783\begin{rationale}
     784Expression syntax is quoted from the {\c11} standard. The syntax itself defines the precedence and
     785associativity of operators. The sections are arranged in decreasing order of precedence, with all
     786operators in a section having the same precedence.
     787\end{rationale}
     788
     789
     790\subsection{Primary expressions}
     791
     792\begin{syntax}
     793\lhs{primary-expression}
     794\rhs \nonterm{identifier}
     795\rhs \nonterm{constant}
     796\rhs \nonterm{string-literal}
     797\rhs \lstinline$($ \nonterm{expression} \lstinline$)$
     798\rhs \nonterm{generic-selection}
     799\end{syntax}
     800
     801\predefined
     802\begin{lstlisting}
     803const int 1;@\use{1}@
     804const int 0;@\use{0}@
     805forall( dtype DT ) DT *const 0;
     806forall( ftype FT ) FT *const 0;
     807\end{lstlisting}
     808
     809\semantics
     810The \Index{valid interpretation} of an \nonterm{identifier} are given by the visible\index{visible}
     811declarations of the identifier.
     812
     813A \nonterm{constant} or \nonterm{string-literal} has one valid interpretation, which has the type
     814and value defined by {\c11}. The predefined integer identifiers ``\lstinline$1$'' and
     815``\lstinline$0$'' have the integer values 1 and 0, respectively. The other two predefined
     816``\lstinline$0$'' identifiers are bound to polymorphic pointer values that, when
     817specialized\index{specialization} with a data type or function type respectively, produce a null
     818pointer of that type.
     819
     820A parenthesised expression has the same interpretations as the contained \nonterm{expression}.
     821
     822\examples
     823The expression \lstinline$(void *)0$\use{0} specializes the (polymorphic) null pointer to a null
     824pointer to \lstinline$void$. \lstinline$(const void *)0$ does the same, and also uses a safe
     825conversion from \lstinline$void *$ to \lstinline$const void *$. In each case, the null pointer
     826conversion is better\index{best valid interpretations} than the unsafe conversion of the integer
     827\lstinline$0$ to a pointer.
     828
     829\begin{rationale}
     830Note that the predefined identifiers have addresses.
     831
     832\CFA does not have C's concept of ``null pointer constants'', which are not typed values but
     833special strings of tokens. The C token ``\lstinline$0$'' is an expression of type \lstinline$int$
     834with the value ``zero'', and it \emph{also} is a null pointer constant. Similarly,
     835``\lstinline$(void *)0$ is an expression of type \lstinline$(void *)$ whose value is a null pointer,
     836and it also is a null pointer constant. However, in C, ``\lstinline$(void *)(void *)0$'' is
     837\emph{not} a null pointer constant, even though it is null-valued, a pointer, and constant! The
     838semantics of C expressions contain many special cases to deal with subexpressions that are null
     839pointer constants.
     840
     841\CFA handles these cases through overload resolution. The declaration
     842\begin{lstlisting}
     843forall( dtype DT ) DT *const 0;
     844\end{lstlisting}
     845means that \lstinline$0$ is a polymorphic object, and contains a value that can have \emph{any}
     846pointer-to-object type or pointer-to-incomplete type. The only such value is the null pointer.
     847Therefore the type \emph{alone} is enough to identify a null pointer. Where C defines an operator
     848with a special case for the null pointer constant, \CFA defines predefined functions with a
     849polymorphic object parameter.
     850\end{rationale}
     851
     852
     853\subsubsection{Generic selection}
     854
     855\constraints The best interpretation of the controlling expression shall be
     856unambiguous\index{ambiguous interpretation}, and shall have type compatible with at most one of the
     857types named in its generic association list. If a generic selection has no \lstinline$default$
     858generic association, the best interpretation of its controlling expression shall have type
     859compatible with exactly one of the types named in its generic association list.
     860
     861\semantics
     862A generic selection has the same interpretations as its result expression.
     863
     864
     865\subsection{Postfix operators}
     866
     867\begin{syntax}
     868\lhs{postfix-expression}
     869\rhs \nonterm{primary-expression}
     870\rhs \nonterm{postfix-expression} \lstinline$[$ \nonterm{expression} \lstinline$]$
     871\rhs \nonterm{postfix-expression} \lstinline$($
     872         \nonterm{argument-expression-list}\opt \lstinline$)$
     873\rhs \nonterm{postfix-expression} \lstinline$.$ \nonterm{identifier}
     874\rhs \nonterm{postfix-expression} \lstinline$->$ \nonterm{identifier}
     875\rhs \nonterm{postfix-expression} \lstinline$++$
     876\rhs \nonterm{postfix-expression} \lstinline$--$
     877\rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$}$
     878\rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \lstinline${$ \nonterm{initializer-list} \lstinline$,$ \lstinline$}$
     879\lhs{argument-expression-list}
     880\rhs \nonterm{assignment-expression}
     881\rhs \nonterm{argument-expression-list} \lstinline$,$
     882         \nonterm{assignment-expression}
     883\end{syntax}
     884
     885\rewriterules
     886\begin{lstlisting}
     887a[b] @\rewrite@ ?[?]( b, a ) // if a has integer type */@\use{?[?]}@
     888a[b] @\rewrite@ ?[?]( a, b ) // otherwise
     889a( ${\em arguments }$ ) @\rewrite@ ?()( a, ${\em arguments} )$@\use{?()}@
     890a++ @\rewrite@ ?++(&( a ))@\use{?++}@
     891a-- @\rewrite@ ?--(&( a ))@\use{?--}@
     892\end{lstlisting}
     893
     894
     895\subsubsection{Array subscripting}
     896
     897\predefined
     898\begin{lstlisting}
     899forall( type T ) lvalue T ?[?]( T *, ptrdiff_t );@\use{ptrdiff_t}@
     900forall( type T ) lvalue _Atomic T ?[?]( _Atomic T *, ptrdiff_t );
     901forall( type T ) lvalue const T ?[?]( const T *, ptrdiff_t );
     902forall( type T ) lvalue restrict T ?[?]( restrict T *, ptrdiff_t );
     903forall( type T ) lvalue volatile T ?[?]( volatile T *, ptrdiff_t );
     904forall( type T ) lvalue _Atomic const T ?[?]( _Atomic const T *, ptrdiff_t );
     905forall( type T ) lvalue _Atomic restrict T ?[?]( _Atomic restrict T *, ptrdiff_t );
     906forall( type T ) lvalue _Atomic volatile T ?[?]( _Atomic volatile T *, ptrdiff_t );
     907forall( type T ) lvalue const restrict T ?[?]( const restrict T *, ptrdiff_t );
     908forall( type T ) lvalue const volatile T ?[?]( const volatile T *, ptrdiff_t );
     909forall( type T ) lvalue restrict volatile T ?[?]( restrict volatile T *, ptrdiff_t );
     910forall( type T ) lvalue _Atomic const restrict T ?[?]( _Atomic const restrict T *, ptrdiff_t );
     911forall( type T ) lvalue _Atomic const volatile T ?[?]( _Atomic const volatile T *, ptrdiff_t );
     912forall( type T ) lvalue _Atomic restrict volatile T ?[?]( _Atomic restrict volatile T *, ptrdiff_t );
     913forall( type T ) lvalue const restrict volatile T ?[?]( const restrict volatile T *, ptrdiff_t );
     914forall( type T ) lvalue _Atomic const restrict volatile T ?[?]( _Atomic const restrict volatile T *, ptrdiff_t );
     915\end{lstlisting}
     916\semantics
     917The interpretations of subscript expressions are the interpretations of the corresponding function
     918call expressions.
     919\begin{rationale}
     920C defines subscripting as pointer arithmetic in a way that makes \lstinline$a[i]$ and
     921\lstinline$i[a]$ equivalent. \CFA provides the equivalence through a rewrite rule to reduce the
     922number of overloadings of \lstinline$?[?]$.
     923
     924Subscript expressions are rewritten as function calls that pass the first parameter by value. This
     925is somewhat unfortunate, since array-like types tend to be large. The alternative is to use the
     926rewrite rule ``\lstinline$a[b]$ \rewrite \lstinline$?[?](&(a), b)$''. However, C semantics forbid
     927this approach: the \lstinline$a$ in ``\lstinline$a[b]$'' can be an arbitrary pointer value, which
     928does not have an address.
     929
     930The repetitive form of the predefined identifiers shows up a deficiency\index{deficiencies!pointers
     931 to qualified types} of \CFA's type system. Type qualifiers are not included in type values, so
     932polymorphic functions that take pointers to arbitrary types often come in one flavor for each
     933possible qualification of the pointed-at type.
     934\end{rationale}
     935
     936
     937\subsubsection{Function calls}
     938
     939\semantics
     940A \define{function designator} is an interpretation of an expression that has function type. The
     941\nonterm{postfix-expression} in a function call may have some interpretations that are function
     942designators and some that are not.
     943
     944For those interpretations of the \nonterm{postfix-expression} that are not function designators, the
     945expression is rewritten and becomes a call of a function named ``\lstinline$?()$''. The valid
     946interpretations of the rewritten expression are determined in the manner described below.
     947
     948Each combination of function designators and argument interpretations is considered. For those
     949interpretations of the \nonterm{postfix-expression} that are \Index{monomorphic function}
     950designators, the combination has a \Index{valid interpretation} if the function designator accepts
     951the number of arguments given, and each argument interpretation matches the corresponding explicit
     952parameter:
     953\begin{itemize}
     954\item
     955if the argument corresponds to a parameter in the function designator's prototype, the argument
     956interpretation must have the same type as the corresponding parameter, or be implicitly convertible
     957to the parameter's type
     958\item
     959if the function designator's type does not include a prototype or if the argument corresponds to
     960``\lstinline$...$'' in a prototype, a \Index{default argument promotion} is applied to it.
     961\end{itemize}
     962The type of the valid interpretation is the return type of the function designator.
     963
     964For those combinations where the interpretation of the \nonterm{postfix-expression} is a
     965\Index{polymorphic function} designator and the function designator accepts the number of arguments
     966given, there shall be at least one set of \define{implicit argument}s for the implicit parameters
     967such that
     968\begin{itemize}
     969\item
     970If the declaration of the implicit parameter uses \Index{type-class} \lstinline$type$\use{type}, the
     971implicit argument must be an object type; if it uses \lstinline$dtype$, the implicit argument must
     972be an object type or an incomplete type; and if it uses \lstinline$ftype$, the implicit argument
     973must be a function type.
     974
     975\item
     976if an explicit parameter's type uses any implicit parameters, then the corresponding explicit
     977argument must have a type that is (or can be safely converted\index{safe conversion} to) the type
     978produced by substituting the implicit arguments for the implicit parameters in the explicit
     979parameter type.
     980
     981\item
     982the remaining explicit arguments must match the remaining explicit parameters, as described for
     983monomorphic function designators.
     984
     985\item
     986for each \Index{assertion parameter} in the function designator's type, there must be an object or
     987function with the same identifier that is visible at the call site and whose type is compatible with
     988or can be specialized to the type of the assertion declaration.
     989\end{itemize}
     990There is a valid interpretation for each such set of implicit parameters. The type of each valid
     991interpretation is the return type of the function designator with implicit parameter values
     992substituted for the implicit arguments.
     993
     994A valid interpretation is ambiguous\index{ambiguous interpretation} if the function designator or
     995any of the argument interpretations is ambiguous.
     996
     997Every valid interpretation whose return type is not compatible with any other valid interpretation's
     998return type is an interpretation of the function call expression.
     999
     1000Every set of valid interpretations that have mutually compatible\index{compatible type} result types
     1001also produces an interpretation of the function call expression. The type of the interpretation is
     1002the \Index{composite type} of the types of the valid interpretations, and the value of the
     1003interpretation is that of the \Index{best valid interpretation}.
     1004\begin{rationale}
     1005One desirable property of a polymorphic programming language is \define{generalizability}: the
     1006ability to replace an abstraction with a more general but equivalent abstraction without requiring
     1007changes in any of the uses of the original\cite{Cormack90}. For instance, it should be possible to
     1008replace a function ``\lstinline$int f( int );$'' with ``\lstinline$forall( type T ) T f( T );$''
     1009without affecting any calls of \lstinline$f$.
     1010
     1011\CFA\index{deficiencies!generalizability} does not fully possess this property, because
     1012\Index{unsafe conversion} are not done when arguments are passed to polymorphic parameters.
     1013Consider
     1014\begin{lstlisting}
     1015float g( float, float );
     1016int i;
     1017float f;
     1018double d;
     1019f = g( f, f );  // (1)
     1020f = g( i, f );  // (2) (safe conversion to float)
     1021f = g( d, f );  // (3) (unsafe conversion to float)
     1022\end{lstlisting}
     1023If \lstinline$g$ was replaced by ``\lstinline$forall( type T ) T g( T, T );$'', the first and second
     1024calls would be unaffected, but the third would change: \lstinline$f$ would be converted to
     1025\lstinline$double$, and the result would be a \lstinline$double$.
     1026
     1027Another example is the function ``\lstinline$void h( int *);$''. This function can be passed a
     1028\lstinline$void *$ argument, but the generalization ``\lstinline$forall( type T ) void h( T *);$''
     1029can not. In this case, \lstinline$void$ is not a valid value for \lstinline$T$ because it is not an
     1030object type. If unsafe conversions were allowed, \lstinline$T$ could be inferred to be \emph{any}
     1031object type, which is undesirable.
     1032\end{rationale}
     1033
     1034\examples
     1035A function called ``\lstinline$?()$'' might be part of a numerical differentiation package.
     1036\begin{lstlisting}
     1037extern type Derivative;
     1038extern double ?()( Derivative, double );
     1039extern Derivative derivative_of( double (*f)( double ) );
     1040extern double sin( double );
     1041
     1042Derivative sin_dx = derivative_of( sin );
     1043double d;
     1044d = sin_dx( 12.9 );
     1045\end{lstlisting}
     1046Here, the only interpretation of \lstinline$sin_dx$ is as an object of type \lstinline$Derivative$.
     1047For that interpretation, the function call is treated as ``\lstinline$?()( sin_dx, 12.9 )$''.
     1048\begin{lstlisting}
     1049int f( long );          // (1)
     1050int f( int, int );      // (2)
     1051int f( int *);          // (3)
     1052
     1053int i = f( 5 );         // calls (1)
     1054\end{lstlisting}
     1055Function (1) provides a valid interpretation of ``\lstinline$f( 5 )$'', using an implicit
     1056\lstinline$int$ to \lstinline$long$ conversion. The other functions do not, since the second
     1057requires two arguments, and since there is no implicit conversion from \lstinline$int$ to
     1058\lstinline$int *$ that could be used with the third function.
     1059
     1060\begin{lstlisting}
     1061forall( type T ) T h( T );
     1062double d = h( 1.5 );
     1063\end{lstlisting}
     1064``\lstinline$1.5$'' is a \lstinline$double$ constant, so \lstinline$T$ is inferred to be
     1065\lstinline$double$, and the result of the function call is a \lstinline$double$.
     1066
     1067\begin{lstlisting}
     1068forall( type T, type U ) void g( T, U );        // (4)
     1069forall( type T ) void g( T, T );                        // (5)
     1070forall( type T ) void g( T, long );                     // (6)
     1071void g( long, long );                                           // (7)
     1072double d;
     1073int i;
     1074int *p;
     1075
     1076g( d, d );                      // calls (5)
     1077g( d, i );                      // calls (6)
     1078g( i, i );                      // calls (7)
     1079g( i, p );                      // calls (4)
     1080\end{lstlisting}
     1081The first call has valid interpretations for all four versions of \lstinline$g$. (6) and (7) are
     1082discarded because they involve unsafe \lstinline$double$-to-\lstinline$long$ conversions. (5) is
     1083chosen because it is less polymorphic than (4).
     1084
     1085For the second call, (7) is again discarded. Of the remaining interpretations for (4), (5), and (6)
     1086(with \lstinline$i$ converted to \lstinline$long$), (6) is chosen because it is the least
     1087polymorphic.
     1088
     1089The third call has valid interpretations for all of the functions; (7) is chosen since it is not
     1090polymorphic at all.
     1091
     1092The fourth call has no interpretation for (5), because its arguments must have compatible type. (4)
     1093is chosen because it does not involve unsafe conversions.
     1094\begin{lstlisting}
     1095forall( type T ) T min( T, T );
     1096double max( double, double );
     1097context min_max( T ) {@\impl{min_max}@
     1098        T min( T, T );
     1099        T max( T, T );
     1100}
     1101forall( type U | min_max( U ) ) void shuffle( U, U );
     1102shuffle(9, 10);
     1103\end{lstlisting}
     1104The only possibility for \lstinline$U$ is \lstinline$double$, because that is the type used in the
     1105only visible \lstinline$max$ function. 9 and 10 must be converted to \lstinline$double$, and
     1106\lstinline$min$ must be specialized with \lstinline$T$ bound to \lstinline$double$.
     1107\begin{lstlisting}
     1108extern void q( int );           // (8)
     1109extern void q( void * );        // (9)
     1110extern void r();
     1111q( 0 );
     1112r( 0 );
     1113\end{lstlisting}
     1114The \lstinline$int 0$ could be passed to (8), or the \lstinline$(void *)$ \Index{specialization} of
     1115the null pointer\index{null pointer} \lstinline$0$\use{0} could be passed to (9). The former is
     1116chosen because the \lstinline$int$ \lstinline$0$ is \Index{less polymorphic}. For
     1117the same reason, \lstinline$int$ \lstinline$0$ is passed to \lstinline$r()$, even though it has
     1118\emph{no} declared parameter types.
     1119
     1120
     1121\subsubsection{Structure and union members}
     1122
     1123\semantics In the member selection expression ``\lstinline$s$.\lstinline$m$'', there shall be at
     1124least one interpretation of \lstinline$s$ whose type is a structure type or union type containing a
     1125member named \lstinline$m$. If two or more interpretations of \lstinline$s$ have members named
     1126\lstinline$m$ with mutually compatible types, then the expression has an \Index{ambiguous
     1127interpretation} whose type is the composite type of the types of the members. If an interpretation
     1128of \lstinline$s$ has a member \lstinline$m$ whose type is not compatible with any other
     1129\lstinline$s$'s \lstinline$m$, then the expression has an interpretation with the member's type. The
     1130expression has no other interpretations.
     1131
     1132The expression ``\lstinline$p->m$'' has the same interpretations as the expression
     1133``\lstinline$(*p).m$''.
     1134
     1135
     1136\subsubsection{Postfix increment and decrement operators}
     1137
     1138\predefined
     1139\begin{lstlisting}
     1140_Bool ?++( volatile _Bool * ),
     1141        ?++( _Atomic volatile _Bool * );
     1142char ?++( volatile char * ),
     1143        ?++( _Atomic volatile char * );
     1144signed char ?++( volatile signed char * ),
     1145        ?++( _Atomic volatile signed char * );
     1146unsigned char ?++( volatile signed char * ),
     1147        ?++( _Atomic volatile signed char * );
     1148short int ?++( volatile short int * ),
     1149        ?++( _Atomic volatile short int * );
     1150unsigned short int ?++( volatile unsigned short int * ),
     1151        ?++( _Atomic volatile unsigned short int * );
     1152int ?++( volatile int * ),
     1153        ?++( _Atomic volatile int * );
     1154unsigned int ?++( volatile unsigned int * ),
     1155        ?++( _Atomic volatile unsigned int * );
     1156long int ?++( volatile long int * ),
     1157        ?++( _Atomic volatile long int * );
     1158long unsigned int ?++( volatile long unsigned int * ),
     1159        ?++( _Atomic volatile long unsigned int * );
     1160long long int ?++( volatile long long int * ),
     1161        ?++( _Atomic volatile long long int * );
     1162long long unsigned ?++( volatile long long unsigned int * ),
     1163        ?++( _Atomic volatile long long unsigned int * );
     1164float ?++( volatile float * ),
     1165        ?++( _Atomic volatile float * );
     1166double ?++( volatile double * ),
     1167        ?++( _Atomic volatile double * );
     1168long double ?++( volatile long double * ),
     1169        ?++( _Atomic volatile long double * );
     1170
     1171forall( type T ) T * ?++( T * restrict volatile * ),
     1172        * ?++( T * _Atomic restrict volatile * );
     1173
     1174forall( type T ) _Atomic T * ?++( _Atomic T * restrict volatile * ),
     1175        * ?++( _Atomic T * _Atomic restrict volatile * );
     1176
     1177forall( type T ) const T * ?++( const T * restrict volatile * ),
     1178        * ?++( const T * _Atomic restrict volatile * );
     1179
     1180forall( type T ) volatile T * ?++( volatile T * restrict volatile * ),
     1181        * ?++( volatile T * _Atomic restrict volatile * );
     1182
     1183forall( type T ) restrict T * ?++( restrict T * restrict volatile * ),
     1184        * ?++( restrict T * _Atomic restrict volatile * );
     1185
     1186forall( type T ) _Atomic const T * ?++( _Atomic const T * restrict volatile * ),
     1187        * ?++( _Atomic const T * _Atomic restrict volatile * );
     1188
     1189forall( type T ) _Atomic restrict T * ?++( _Atomic restrict T * restrict volatile * ),
     1190        * ?++( _Atomic restrict T * _Atomic restrict volatile * );
     1191
     1192forall( type T ) _Atomic volatile T * ?++( _Atomic volatile T * restrict volatile * ),
     1193        * ?++( _Atomic volatile T * _Atomic restrict volatile * );
     1194
     1195forall( type T ) const restrict T * ?++( const restrict T * restrict volatile * ),
     1196        * ?++( const restrict T * _Atomic restrict volatile * );
     1197
     1198forall( type T ) const volatile T * ?++( const volatile T * restrict volatile * ),
     1199        * ?++( const volatile T * _Atomic restrict volatile * );
     1200
     1201forall( type T ) restrict volatile T * ?++( restrict volatile T * restrict volatile * ),
     1202        * ?++( restrict volatile T * _Atomic restrict volatile * );
     1203
     1204forall( type T ) _Atomic const restrict T * ?++( _Atomic const restrict T * restrict volatile * ),
     1205        * ?++( _Atomic const restrict T * _Atomic restrict volatile * );
     1206
     1207forall( type T ) _Atomic const volatile T * ?++( _Atomic const volatile T * restrict volatile * ),
     1208        * ?++( _Atomic const volatile T * _Atomic restrict volatile * );
     1209
     1210forall( type T ) _Atomic restrict volatile T * ?++( _Atomic restrict volatile T * restrict volatile * ),
     1211        * ?++( _Atomic restrict volatile T * _Atomic restrict volatile * );
     1212
     1213forall( type T ) const restrict volatile T * ?++( const restrict volatile T * restrict volatile * ),
     1214        * ?++( const restrict volatile T * _Atomic restrict volatile * );
     1215
     1216forall( type T ) _Atomic const restrict volatile T * ?++( _Atomic const restrict volatile T * restrict volatile * ),
     1217        * ?++( _Atomic const restrict volatile T * _Atomic restrict volatile * );
     1218
     1219_Bool ?--( volatile _Bool * ),
     1220        ?--( _Atomic volatile _Bool * );
     1221char ?--( volatile char * ),
     1222        ?--( _Atomic volatile char * );
     1223signed char ?--( volatile signed char * ),
     1224        ?--( _Atomic volatile signed char * );
     1225unsigned char ?--( volatile signed char * ),
     1226        ?--( _Atomic volatile signed char * );
     1227short int ?--( volatile short int * ),
     1228        ?--( _Atomic volatile short int * );
     1229unsigned short int ?--( volatile unsigned short int * ),
     1230        ?--( _Atomic volatile unsigned short int * );
     1231int ?--( volatile int * ),
     1232        ?--( _Atomic volatile int * );
     1233unsigned int ?--( volatile unsigned int * ),
     1234        ?--( _Atomic volatile unsigned int * );
     1235long int ?--( volatile long int * ),
     1236        ?--( _Atomic volatile long int * );
     1237long unsigned int ?--( volatile long unsigned int * ),
     1238        ?--( _Atomic volatile long unsigned int * );
     1239long long int ?--( volatile long long int * ),
     1240        ?--( _Atomic volatile long long int * );
     1241long long unsigned ?--( volatile long long unsigned int * ),
     1242        ?--( _Atomic volatile long long unsigned int * );
     1243float ?--( volatile float * ),
     1244        ?--( _Atomic volatile float * );
     1245double ?--( volatile double * ),
     1246        ?--( _Atomic volatile double * );
     1247long double ?--( volatile long double * ),
     1248        ?--( _Atomic volatile long double * );
     1249
     1250forall( type T ) T * ?--( T * restrict volatile * ),
     1251        * ?--( T * _Atomic restrict volatile * );
     1252
     1253forall( type T ) _Atomic T * ?--( _Atomic T * restrict volatile * ),
     1254        * ?--( _Atomic T * _Atomic restrict volatile * );
     1255
     1256forall( type T ) const T * ?--( const T * restrict volatile * ),
     1257        * ?--( const T * _Atomic restrict volatile * );
     1258
     1259forall( type T ) volatile T * ?--( volatile T * restrict volatile * ),
     1260        * ?--( volatile T * _Atomic restrict volatile * );
     1261
     1262forall( type T ) restrict T * ?--( restrict T * restrict volatile * ),
     1263        * ?--( restrict T * _Atomic restrict volatile * );
     1264
     1265forall( type T ) _Atomic const T * ?--( _Atomic const T * restrict volatile * ),
     1266        * ?--( _Atomic const T * _Atomic restrict volatile * );
     1267
     1268forall( type T ) _Atomic restrict T * ?--( _Atomic restrict T * restrict volatile * ),
     1269        * ?--( _Atomic restrict T * _Atomic restrict volatile * );
     1270
     1271forall( type T ) _Atomic volatile T * ?--( _Atomic volatile T * restrict volatile * ),
     1272        * ?--( _Atomic volatile T * _Atomic restrict volatile * );
     1273
     1274forall( type T ) const restrict T * ?--( const restrict T * restrict volatile * ),
     1275        * ?--( const restrict T * _Atomic restrict volatile * );
     1276
     1277forall( type T ) const volatile T * ?--( const volatile T * restrict volatile * ),
     1278        * ?--( const volatile T * _Atomic restrict volatile * );
     1279
     1280forall( type T ) restrict volatile T * ?--( restrict volatile T * restrict volatile * ),
     1281        * ?--( restrict volatile T * _Atomic restrict volatile * );
     1282
     1283forall( type T ) _Atomic const restrict T * ?--( _Atomic const restrict T * restrict volatile * ),
     1284        * ?--( _Atomic const restrict T * _Atomic restrict volatile * );
     1285
     1286forall( type T ) _Atomic const volatile T * ?--( _Atomic const volatile T * restrict volatile * ),
     1287        * ?--( _Atomic const volatile T * _Atomic restrict volatile * );
     1288
     1289forall( type T ) _Atomic restrict volatile T * ?--( _Atomic restrict volatile T * restrict volatile * ),
     1290        * ?--( _Atomic restrict volatile T * _Atomic restrict volatile * );
     1291
     1292forall( type T ) const restrict volatile T * ?--( const restrict volatile T * restrict volatile * ),
     1293        * ?--( const restrict volatile T * _Atomic restrict volatile * );
     1294
     1295forall( type T ) _Atomic const restrict volatile T * ?--( _Atomic const restrict volatile T * restrict volatile * ),
     1296        * ?--( _Atomic const restrict volatile T * _Atomic restrict volatile * );
     1297\end{lstlisting}
     1298For every extended integer type \lstinline$X$ there exist
     1299% Don't use predefined: keep this out of prelude.cf.
     1300\begin{lstlisting}
     1301X ?++( volatile X * ), ?++( _Atomic volatile X * ),
     1302  ?--( volatile X * ), ?--( _Atomic volatile X * );
     1303\end{lstlisting}
     1304For every complete enumerated type \lstinline$E$ there exist
     1305% Don't use predefined: keep this out of prelude.cf.
     1306\begin{lstlisting}
     1307E ?++( volatile E * ), ?++( _Atomic volatile E * ),
     1308  ?--( volatile E * ), ?--( _Atomic volatile E * );
     1309\end{lstlisting}
     1310
     1311\begin{rationale}
     1312Note that ``\lstinline$++$'' and ``\lstinline$--$'' are rewritten as function calls that are given a
     1313pointer to that operand. (This is true of all operators that modify an operand.) As Hamish Macdonald
     1314has pointed out, this forces the modified operand of such expressions to be an lvalue. This
     1315partially enforces the C semantic rule that such operands must be \emph{modifiable} lvalues.
     1316\end{rationale}
     1317
     1318\begin{rationale}
     1319In C, a semantic rule requires that pointer operands of increment and decrement be pointers to
     1320object types. Hence, \lstinline$void *$ objects cannot be incremented. In \CFA, the restriction
     1321follows from the use of a \lstinline$type$ parameter in the predefined function definitions, as
     1322opposed to \lstinline$dtype$, since only object types can be inferred arguments corresponding to the
     1323type parameter \lstinline$T$.
     1324\end{rationale}
     1325
     1326\semantics
     1327First, each interpretation of the operand of an increment or decrement expression is considered
     1328separately. For each interpretation that is a bit-field or is declared with the
     1329\lstinline$register$\index{register@{\lstinline$register$}} \index{Itorage-class specifier}, the
     1330expression has one valid interpretation, with the type of the operand, and the expression is
     1331ambiguous if the operand is.
     1332
     1333For the remaining interpretations, the expression is rewritten, and the interpretations of the
     1334expression are the interpretations of the corresponding function call. Finally, all interpretations
     1335of the expression produced for the different interpretations of the operand are combined to produce
     1336the interpretations of the expression as a whole; where interpretations have compatible result
     1337types, the best interpretations are selected in the manner described for function call expressions.
     1338
     1339\examples
     1340\begin{lstlisting}
     1341volatile short int vs;  vs++; // rewritten as ?++( &(vs) )
     1342short int s;                    s++;
     1343const short int cs;             cs++;
     1344_Atomic short int as;   as++;
     1345\end{lstlisting}
     1346\begin{sloppypar}
     1347Since \lstinline$&(vs)$ has type \lstinline$volatile short int *$, the best valid interpretation of
     1348\lstinline$vs++$ calls the \lstinline$?++$ function with the \lstinline$volatile short *$ parameter.
     1349\lstinline$s++$ does the same, applying the safe conversion from \lstinline$short int *$ to
     1350\lstinline$volatile short int *$. Note that there is no conversion that adds an \lstinline$_Atomic$
     1351qualifier, so the \lstinline$_Atomic volatile short int$ overloading does not provide a valid
     1352interpretation.
     1353\end{sloppypar}
     1354
     1355There is no safe conversion from \lstinline$const short int *$ to \lstinline$volatile short int *$,
     1356and no \lstinline$?++$ function that accepts a \lstinline$const *$ parameter, so \lstinline$cs++$
     1357has no valid interpretations.
     1358
     1359The best valid interpretation of \lstinline$as++$ calls the \lstinline$short ?++$ function with the
     1360\lstinline$_Atomic volatile short int *$ parameter, applying a safe conversion to add the
     1361\lstinline$volatile$ qualifier.
     1362
     1363\begin{lstlisting}
     1364char * const restrict volatile * restrict volatile pqpc; pqpc++
     1365char * * restrict volatile ppc; ppc++;
     1366\end{lstlisting}
     1367Since \lstinline$&(pqpc)$ has type \lstinline$char * const restrict volatile * restrict volatile *$,
     1368the best valid interpretation of \lstinline$pqpc++$ calls the polymorphic \lstinline$?++$ function
     1369with the \lstinline$const restrict volatile T * restrict volatile *$ parameter, inferring
     1370\lstinline$T$ to be \lstinline$char *$.
     1371
     1372\begin{sloppypar}
     1373\lstinline$ppc++$ calls the same function, again inferring \lstinline$T$ to be \lstinline$char *$,
     1374and using the safe conversions from \lstinline$T$ to \lstinline$T const restrict volatile$.
     1375\end{sloppypar}
     1376
     1377\begin{rationale}
     1378Increment and decrement expressions show up a deficiency of \CFA's type system. There is no such
     1379thing as a pointer to a register object or bit-field\index{deficiencies!pointers to bit-fields}.
     1380Therefore, there is no way to define a function that alters them, and hence no way to define
     1381increment and decrement functions for them. As a result, the semantics of increment and decrement
     1382expressions must treat them specially. This holds true for all of the operators that may modify
     1383such objects.
     1384\end{rationale}
     1385
     1386\begin{rationale}
     1387The polymorphic overloadings for pointer increment and decrement can be understood by considering
     1388increasingly complex types.
     1389\begin{enumerate}
     1390\item
     1391``\lstinline$char * p; p++;$''. The argument to \lstinline$?++$ has type \lstinline$char * *$, and
     1392the result has type \lstinline$char *$. The expression would be valid if \lstinline$?++$ were
     1393declared by
     1394\begin{lstlisting}
     1395forall( type T ) T * ?++( T * * );
     1396\end{lstlisting}
     1397with \lstinline$T$ inferred to be \lstinline$char$.
     1398
     1399\item
     1400``\lstinline$char *restrict volatile qp; qp++$''. The result again has type \lstinline$char *$, but
     1401the argument now has type \lstinline$char *restrict volatile *$, so it cannot be passed to the
     1402hypothetical function declared in point 1. Hence the actual predefined function is
     1403\begin{lstlisting}
     1404forall( type T ) T * ?++( T * restrict volatile * );
     1405\end{lstlisting}
     1406which also accepts a \lstinline$char * *$ argument, because of the safe conversions that add
     1407\lstinline$volatile$ and \lstinline$restrict$ qualifiers. (The parameter is not const-qualified, so
     1408constant pointers cannot be incremented.)
     1409
     1410\item
     1411``\lstinline$char *_Atomic ap; ap++$''. The result again has type \lstinline$char *$, but no safe
     1412conversion adds an \lstinline$_Atomic$ qualifier, so the function in point 2 is not applicable. A
     1413separate overloading of \lstinline$?++$ is required.
     1414
     1415\item
     1416``\lstinline$char const volatile * pq; pq++$''. Here the result has type
     1417\lstinline$char const volatile *$, so a new overloading is needed:
     1418\begin{lstlisting}
     1419forall( type T ) T const volatile * ?++( T const volatile *restrict volatile * );
     1420\end{lstlisting}
     1421One overloading is needed for each combination of qualifiers in the pointed-at
     1422type\index{deficiencies!pointers to qualified types}.
     1423 
     1424\item
     1425``\lstinline$float *restrict * prp; prp++$''. The \lstinline$restrict$ qualifier is handled just
     1426like \lstinline$const$ and \lstinline$volatile$ in the previous case:
     1427\begin{lstlisting}
     1428forall( type T ) T restrict * ?++( T restrict *restrict volatile * );
     1429\end{lstlisting}
     1430with \lstinline$T$ inferred to be \lstinline$float *$. This looks odd, because {\c11} contains a
     1431constraint that requires restrict-qualified types to be pointer-to-object types, and \lstinline$T$
     1432is not syntactically a pointer type. \CFA loosens the constraint.
     1433\end{enumerate}
     1434\end{rationale}
     1435
     1436
     1437\subsubsection{Compound literals}
     1438
     1439\semantics
     1440A compound literal has one interpretation, with the type given by the \nonterm{type-name} of the
     1441compound literal.
     1442
     1443
     1444\subsection{Unary operators}
     1445
     1446\begin{syntax}
     1447\lhs{unary-expression}
     1448\rhs \nonterm{postfix-expression}
     1449\rhs \lstinline$++$ \nonterm{unary-expression}
     1450\rhs \lstinline$--$ \nonterm{unary-expression}
     1451\rhs \nonterm{unary-operator} \nonterm{cast-expression}
     1452\rhs \lstinline$sizeof$ \nonterm{unary-expression}
     1453\rhs \lstinline$sizeof$ \lstinline$($ \nonterm{type-name} \lstinline$)$
     1454\lhs{unary-operator} one of \rhs \lstinline$&$ \lstinline$*$ \lstinline$+$ \lstinline$-$ \lstinline$~$ \lstinline$!$
     1455\end{syntax}
     1456
     1457\rewriterules
     1458\begin{lstlisting}
     1459*a      @\rewrite@ *?(a) @\use{*?}@
     1460+a      @\rewrite@ +?(a) @\use{+?}@
     1461-a      @\rewrite@ -?(a) @\use{-?}@
     1462~a      @\rewrite@ ~?(a) @\use{~?}@
     1463!a      @\rewrite@ !?(a) @\use{"!?}@
     1464++a     @\rewrite@ ++?(&(a)) @\use{++?}@
     1465--a     @\rewrite@ --?(&(a)) @\use{--?}@
     1466\end{lstlisting}
     1467
     1468
     1469\subsubsection{Prefix increment and decrement operators}
     1470
     1471\predefined
     1472\begin{lstlisting}
     1473_Bool ++?( volatile _Bool * ),
     1474        ++?( _Atomic volatile _Bool * );
     1475char ++?( volatile char * ),
     1476        ++?( _Atomic volatile char * );
     1477signed char ++?( volatile signed char * ),
     1478        ++?( _Atomic volatile signed char * );
     1479unsigned char ++?( volatile signed char * ),
     1480        ++?( _Atomic volatile signed char * );
     1481short int ++?( volatile short int * ),
     1482        ++?( _Atomic volatile short int * );
     1483unsigned short int ++?( volatile unsigned short int * ),
     1484        ++?( _Atomic volatile unsigned short int * );
     1485int ++?( volatile int * ),
     1486        ++?( _Atomic volatile int * );
     1487unsigned int ++?( volatile unsigned int * ),
     1488        ++?( _Atomic volatile unsigned int * );
     1489long int ++?( volatile long int * ),
     1490        ++?( _Atomic volatile long int * );
     1491long unsigned int ++?( volatile long unsigned int * ),
     1492        ++?( _Atomic volatile long unsigned int * );
     1493long long int ++?( volatile long long int * ),
     1494        ++?( _Atomic volatile long long int * );
     1495long long unsigned ++?( volatile long long unsigned int * ),
     1496        ++?( _Atomic volatile long long unsigned int * );
     1497float ++?( volatile float * ),
     1498        ++?( _Atomic volatile float * );
     1499double ++?( volatile double * ),
     1500        ++?( _Atomic volatile double * );
     1501long double ++?( volatile long double * ),
     1502        ++?( _Atomic volatile long double * );
     1503
     1504forall( type T ) T * ++?( T * restrict volatile * ),
     1505        * ++?( T * _Atomic restrict volatile * );
     1506
     1507forall( type T ) _Atomic T * ++?( _Atomic T * restrict volatile * ),
     1508        * ++?( _Atomic T * _Atomic restrict volatile * );
     1509
     1510forall( type T ) const T * ++?( const T * restrict volatile * ),
     1511        * ++?( const T * _Atomic restrict volatile * );
     1512
     1513forall( type T ) volatile T * ++?( volatile T * restrict volatile * ),
     1514        * ++?( volatile T * _Atomic restrict volatile * );
     1515
     1516forall( type T ) restrict T * ++?( restrict T * restrict volatile * ),
     1517        * ++?( restrict T * _Atomic restrict volatile * );
     1518
     1519forall( type T ) _Atomic const T * ++?( _Atomic const T * restrict volatile * ),
     1520        * ++?( _Atomic const T * _Atomic restrict volatile * );
     1521
     1522forall( type T ) _Atomic volatile T * ++?( _Atomic volatile T * restrict volatile * ),
     1523        * ++?( _Atomic volatile T * _Atomic restrict volatile * );
     1524
     1525forall( type T ) _Atomic restrict T * ++?( _Atomic restrict T * restrict volatile * ),
     1526        * ++?( _Atomic restrict T * _Atomic restrict volatile * );
     1527
     1528forall( type T ) const volatile T * ++?( const volatile T * restrict volatile * ),
     1529        * ++?( const volatile T * _Atomic restrict volatile * );
     1530
     1531forall( type T ) const restrict T * ++?( const restrict T * restrict volatile * ),
     1532        * ++?( const restrict T * _Atomic restrict volatile * );
     1533
     1534forall( type T ) restrict volatile T * ++?( restrict volatile T * restrict volatile * ),
     1535        * ++?( restrict volatile T * _Atomic restrict volatile * );
     1536
     1537forall( type T ) _Atomic const volatile T * ++?( _Atomic const volatile T * restrict volatile * ),
     1538        * ++?( _Atomic const volatile T * _Atomic restrict volatile * );
     1539
     1540forall( type T ) _Atomic const restrict T * ++?( _Atomic const restrict T * restrict volatile * ),
     1541        * ++?( _Atomic const restrict T * _Atomic restrict volatile * );
     1542
     1543forall( type T ) _Atomic restrict volatile T * ++?( _Atomic restrict volatile T * restrict volatile * ),
     1544        * ++?( _Atomic restrict volatile T * _Atomic restrict volatile * );
     1545
     1546forall( type T ) const restrict volatile T * ++?( const restrict volatile T * restrict volatile * ),
     1547        * ++?( const restrict volatile T * _Atomic restrict volatile * );
     1548
     1549forall( type T ) _Atomic const restrict volatile T * ++?( _Atomic const restrict volatile T * restrict volatile * ),
     1550        * ++?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
     1551
     1552_Bool --?( volatile _Bool * ),
     1553        --?( _Atomic volatile _Bool * );
     1554char --?( volatile char * ),
     1555        --?( _Atomic volatile char * );
     1556signed char --?( volatile signed char * ),
     1557        --?( _Atomic volatile signed char * );
     1558unsigned char --?( volatile signed char * ),
     1559        --?( _Atomic volatile signed char * );
     1560short int --?( volatile short int * ),
     1561        --?( _Atomic volatile short int * );
     1562unsigned short int --?( volatile unsigned short int * ),
     1563        --?( _Atomic volatile unsigned short int * );
     1564int --?( volatile int * ),
     1565        --?( _Atomic volatile int * );
     1566unsigned int --?( volatile unsigned int * ),
     1567        --?( _Atomic volatile unsigned int * );
     1568long int --?( volatile long int * ),
     1569        --?( _Atomic volatile long int * );
     1570long unsigned int --?( volatile long unsigned int * ),
     1571        --?( _Atomic volatile long unsigned int * );
     1572long long int --?( volatile long long int * ),
     1573        --?( _Atomic volatile long long int * );
     1574long long unsigned --?( volatile long long unsigned int * ),
     1575        --?( _Atomic volatile long long unsigned int * );
     1576float --?( volatile float * ),
     1577        --?( _Atomic volatile float * );
     1578double --?( volatile double * ),
     1579        --?( _Atomic volatile double * );
     1580long double --?( volatile long double * ),
     1581        --?( _Atomic volatile long double * );
     1582
     1583forall( type T ) T * --?( T * restrict volatile * ),
     1584        * --?( T * _Atomic restrict volatile * );
     1585
     1586forall( type T ) _Atomic T * --?( _Atomic T * restrict volatile * ),
     1587        * --?( _Atomic T * _Atomic restrict volatile * );
     1588
     1589forall( type T ) const T * --?( const T * restrict volatile * ),
     1590        * --?( const T * _Atomic restrict volatile * );
     1591
     1592forall( type T ) volatile T * --?( volatile T * restrict volatile * ),
     1593        * --?( volatile T * _Atomic restrict volatile * );
     1594
     1595forall( type T ) restrict T * --?( restrict T * restrict volatile * ),
     1596        * --?( restrict T * _Atomic restrict volatile * );
     1597
     1598forall( type T ) _Atomic const T * --?( _Atomic const T * restrict volatile * ),
     1599        * --?( _Atomic const T * _Atomic restrict volatile * );
     1600
     1601forall( type T ) _Atomic volatile T * --?( _Atomic volatile T * restrict volatile * ),
     1602        * --?( _Atomic volatile T * _Atomic restrict volatile * );
     1603
     1604forall( type T ) _Atomic restrict T * --?( _Atomic restrict T * restrict volatile * ),
     1605        * --?( _Atomic restrict T * _Atomic restrict volatile * );
     1606
     1607forall( type T ) const volatile T * --?( const volatile T * restrict volatile * ),
     1608        * --?( const volatile T * _Atomic restrict volatile * );
     1609
     1610forall( type T ) const restrict T * --?( const restrict T * restrict volatile * ),
     1611        * --?( const restrict T * _Atomic restrict volatile * );
     1612
     1613forall( type T ) restrict volatile T * --?( restrict volatile T * restrict volatile * ),
     1614        * --?( restrict volatile T * _Atomic restrict volatile * );
     1615
     1616forall( type T ) _Atomic const volatile T * --?( _Atomic const volatile T * restrict volatile * ),
     1617        * --?( _Atomic const volatile T * _Atomic restrict volatile * );
     1618
     1619forall( type T ) _Atomic const restrict T * --?( _Atomic const restrict T * restrict volatile * ),
     1620        * --?( _Atomic const restrict T * _Atomic restrict volatile * );
     1621
     1622forall( type T ) _Atomic restrict volatile T * --?( _Atomic restrict volatile T * restrict volatile * ),
     1623        * --?( _Atomic restrict volatile T * _Atomic restrict volatile * );
     1624
     1625forall( type T ) const restrict volatile T * --?( const restrict volatile T * restrict volatile * ),
     1626        * --?( const restrict volatile T * _Atomic restrict volatile * );
     1627
     1628forall( type T ) _Atomic const restrict volatile T * --?( _Atomic const restrict volatile T * restrict volatile * ),
     1629        * --?( _Atomic const restrict volatile T * _Atomic restrict volatile * );
     1630\end{lstlisting}
     1631For every extended integer type \lstinline$X$ there exist
     1632% Don't use predefined: keep this out of prelude.cf.
     1633\begin{lstlisting}
     1634X       ++?( volatile X * ),
     1635        ++?( _Atomic volatile X * ),
     1636        --?( volatile X * ),
     1637        --?( _Atomic volatile X * );
     1638\end{lstlisting}
     1639For every complete enumerated type \lstinline$E$ there exist
     1640% Don't use predefined: keep this out of prelude.cf.
     1641\begin{lstlisting}
     1642E ++?( volatile E * ),
     1643        ++?( _Atomic volatile E * ),
     1644        ?--( volatile E * ),
     1645        ?--( _Atomic volatile E * );
     1646\end{lstlisting}
     1647
     1648\semantics
     1649The interpretations of prefix increment and decrement expressions are
     1650determined in the same way as the interpretations of postfix increment and
     1651decrement expressions.
     1652
     1653
     1654\subsubsection{Address and indirection operators}
     1655
     1656\predefined
     1657\begin{lstlisting}
     1658forall( type T ) lvalue T *?( T * );
     1659forall( type T ) _Atomic lvalue T *?( _Atomic T * );
     1660forall( type T ) const lvalue T *?( const T * );
     1661forall( type T ) volatile lvalue T *?( volatile T * );
     1662forall( type T ) restrict lvalue T *?( restrict T * );
     1663forall( type T ) _Atomic const lvalue T *?( _Atomic const T * );
     1664forall( type T ) _Atomic volatile lvalue T *?( _Atomic volatile T * );
     1665forall( type T ) _Atomic restrict lvalue T *?( _Atomic restrict T * );
     1666forall( type T ) const volatile lvalue T *?( const volatile T * );
     1667forall( type T ) const restrict lvalue T *?( const restrict T * );
     1668forall( type T ) restrict volatile lvalue T *?( restrict volatile T * );
     1669forall( type T ) _Atomic const volatile lvalue T *?( _Atomic const volatile T * );
     1670forall( type T ) _Atomic const restrict lvalue T *?( _Atomic const restrict T * );
     1671forall( type T ) _Atomic restrict volatile lvalue T *?( _Atomic restrict volatile T * );
     1672forall( type T ) const restrict volatile lvalue T *?( const restrict volatile T * );
     1673forall( type T ) _Atomic const restrict volatile lvalue T *?( _Atomic const restrict volatile T * );
     1674
     1675forall( ftype FT ) FT *?( FT * );
     1676\end{lstlisting}
     1677
     1678\constraints
     1679The operand of the unary ``\lstinline$&$'' operator shall have exactly one
     1680\Index{interpretation}\index{ambiguous interpretation}, which shall be unambiguous.
     1681
     1682\semantics
     1683The ``\lstinline$&$'' expression has one interpretation which is of type \lstinline$T *$, where
     1684\lstinline$T$ is the type of the operand.
     1685
     1686The interpretations of an indirection expression are the interpretations of the corresponding
     1687function call.
     1688
     1689
     1690\subsubsection{Unary arithmetic operators}
     1691
     1692\predefined
     1693\begin{lstlisting}
     1694int
     1695        +?( int ),
     1696        -?( int ),
     1697        ~?( int );
     1698unsigned int
     1699        +?( unsigned int ),
     1700        -?( unsigned int ),
     1701         ~?( unsigned int );
     1702long int
     1703        +?( long int ),
     1704        -?( long int ),
     1705        ~?( long int );
     1706long unsigned int
     1707        +?( long unsigned int ),
     1708        -?( long unsigned int ),
     1709        ~?( long unsigned int );
     1710long long int
     1711        +?( long long int ),
     1712        -?( long long int ),
     1713        ~?( long long int );
     1714long long unsigned int
     1715        +?( long long unsigned int ),
     1716        -?( long long unsigned int ),
     1717        ~?( long long unsigned int );
     1718float
     1719        +?( float ),
     1720        -?( float );
     1721double
     1722        +?( double ),
     1723        -?( double );
     1724long double
     1725        +?( long double ),
     1726        -?( long double );
     1727_Complex float
     1728        +?( _Complex float ),
     1729        -?( _Complex float );
     1730_Complex double
     1731        +?( _Complex double ),
     1732        -?( _Complex double );
     1733_Complex long double
     1734        +?( _Complex long double ),
     1735        -?( _Complex long double );
     1736
     1737int !?( int ),
     1738        !?( unsigned int ),
     1739        !?( long ),
     1740        !?( long unsigned int ),
     1741        !?( long long int ),
     1742        !?( long long unsigned int ),
     1743        !?( float ),
     1744        !?( double ),
     1745        !?( long double ),
     1746        !?( _Complex float ),
     1747        !?( _Complex double ),
     1748        !?( _Complex long double );
     1749
     1750forall( dtype DT ) int !?( const restrict volatile DT * );
     1751forall( dtype DT ) int !?( _Atomic const restrict volatile DT * );
     1752forall( ftype FT ) int !?( FT * );
     1753\end{lstlisting}
     1754For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     1755rank of \lstinline$int$ there exist
     1756% Don't use predefined: keep this out of prelude.cf.
     1757\begin{lstlisting}
     1758X +?( X ), -?( X ), ~?( X );
     1759int !?( X );
     1760\end{lstlisting}
     1761
     1762\semantics
     1763The interpretations of a unary arithmetic expression are the interpretations of the corresponding
     1764function call.
     1765
     1766\examples
     1767\begin{lstlisting}
     1768long int li;
     1769void eat_double( double );@\use{eat_double}@
     1770
     1771eat_double(-li ); // @\rewrite@ eat_double( -?( li ) );
     1772\end{lstlisting}
     1773The valid interpretations of ``\lstinline$-li$'' (assuming no extended integer types exist) are
     1774\begin{center}
     1775\begin{tabular}{llc}
     1776interpretation & result type & expression conversion cost \\
     1777\hline
     1778\lstinline$-?( (int)li )$                                       & \lstinline$int$                                       & (unsafe) \\
     1779\lstinline$-?( (unsigned)li)$                           & \lstinline$unsigned int$                      & (unsafe) \\
     1780\lstinline$-?( (long)li)$                                       & \lstinline$long$                                      & 0 \\
     1781\lstinline$-?( (long unsigned int)li)$          & \lstinline$long unsigned int$         & 1 \\
     1782\lstinline$-?( (long long int)li)$                      & \lstinline$long long int$                     & 2 \\
     1783\lstinline$-?( (long long unsigned int)li)$     & \lstinline$long long unsigned int$& 3 \\
     1784\lstinline$-?( (float)li)$                                      & \lstinline$float$                                     & 4 \\
     1785\lstinline$-?( (double)li)$                                     & \lstinline$double$                            & 5 \\
     1786\lstinline$-?( (long double)li)$                        & \lstinline$long double$                       & 6 \\
     1787\lstinline$-?( (_Complex float)li)$                     & \lstinline$float$                                     & (unsafe) \\
     1788\lstinline$-?( (_Complex double)li)$            & \lstinline$double$                            & (unsafe) \\
     1789\lstinline$-?( (_Complex long double)li)$       & \lstinline$long double$                       & (unsafe) \\
     1790\end{tabular}
     1791\end{center}
     1792The valid interpretations of the \lstinline$eat_double$ call, with the cost of the argument
     1793conversion and the cost of the entire expression, are
     1794\begin{center}
     1795\begin{tabular}{lcc}
     1796interpretation & argument cost & expression cost \\
     1797\hline
     1798\lstinline$eat_double( (double)-?( (int)li) )$                                  & 7                     & (unsafe) \\
     1799\lstinline$eat_double( (double)-?( (unsigned)li) )$                             & 6                     & (unsafe) \\
     1800\lstinline$eat_double( (double)-?(li) )$                                                & 5                     & \(0+5=5\) \\
     1801\lstinline$eat_double( (double)-?( (long unsigned int)li) )$    & 4                     & \(1+4=5\) \\
     1802\lstinline$eat_double( (double)-?( (long long int)li) )$                & 3                     & \(2+3=5\) \\
     1803\lstinline$eat_double( (double)-?( (long long unsigned int)li) )$& 2            & \(3+2=5\) \\
     1804\lstinline$eat_double( (double)-?( (float)li) )$                                & 1                     & \(4+1=5\) \\
     1805\lstinline$eat_double( (double)-?( (double)li) )$                               & 0                     & \(5+0=5\) \\
     1806\lstinline$eat_double( (double)-?( (long double)li) )$                  & (unsafe)      & (unsafe) \\
     1807\lstinline$eat_double( (double)-?( (_Complex float)li) )$               & (unsafe)      & (unsafe) \\
     1808\lstinline$eat_double( (double)-?( (_Complex double)li) )$              & (unsafe)      & (unsafe) \\
     1809\lstinline$eat_double( (double)-?( (_Complex long double)li) )$ & (unsafe)      & (unsafe) \\
     1810\end{tabular}
     1811\end{center}
     1812Each has result type \lstinline$void$, so the best must be selected. The interpretations involving
     1813unsafe conversions are discarded. The remainder have equal expression conversion costs, so the
     1814``highest argument conversion cost'' rule is invoked, and the chosen interpretation is
     1815\lstinline$eat_double( (double)-?(li) )$.
     1816
     1817
     1818\subsubsection{The \lstinline$sizeof$ and \lstinline$_Alignof$ operators}
     1819
     1820\constraints
     1821The operand of \lstinline$sizeof$ or \lstinline$_Alignof$ shall not be \lstinline$type$,
     1822\lstinline$dtype$, or \lstinline$ftype$.
     1823
     1824When the \lstinline$sizeof$\use{sizeof} operator is applied to an expression, the expression shall
     1825have exactly one \Index{interpretation}\index{ambiguous interpretation}, which shall
     1826be unambiguous. \semantics A \lstinline$sizeof$ or \lstinline$_Alignof$ expression has one
     1827interpretation, of type \lstinline$size_t$.
     1828
     1829When \lstinline$sizeof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
     1830\nonterm{type-parameter}, it yields the size in bytes of the type that implements the operand. When
     1831the operand is an opaque type or an inferred type parameter\index{inferred parameter}, the
     1832expression is not a constant expression.
     1833
     1834When \lstinline$_Alignof$ is applied to an identifier declared by a \nonterm{type-declaration} or a
     1835\nonterm{type-parameter}, it yields the alignment requirement of the type that implements the
     1836operand. When the operand is an opaque type or an inferred type parameter\index{inferred
     1837parameter}, the expression is not a constant expression.
     1838\begin{rationale}
     1839\begin{lstlisting}
     1840type Pair = struct { int first, second; };
     1841size_t p_size = sizeof(Pair);           // constant expression
     1842
     1843extern type Rational;@\use{Rational}@
     1844size_t c_size = sizeof(Rational);       // non-constant expression
     1845
     1846forall(type T) T f(T p1, T p2) {
     1847        size_t t_size = sizeof(T);              // non-constant expression
     1848        ...
     1849}
     1850\end{lstlisting}
     1851``\lstinline$sizeof Rational$'', although not statically known, is fixed. Within \lstinline$f()$,
     1852``\lstinline$sizeof(T)$'' is fixed for each call of \lstinline$f()$, but may vary from call to call.
     1853\end{rationale}
     1854
     1855
     1856\subsection{Cast operators}
     1857
     1858\begin{syntax}
     1859\lhs{cast-expression}
     1860\rhs \nonterm{unary-expression}
     1861\rhs \lstinline$($ \nonterm{type-name} \lstinline$)$ \nonterm{cast-expression}
     1862\end{syntax}
     1863
     1864\constraints
     1865The \nonterm{type-name} in a \nonterm{cast-expression} shall not be \lstinline$type$,
     1866\lstinline$dtype$, or \lstinline$ftype$.
     1867
     1868\semantics
     1869
     1870In a \Index{cast expression} ``\lstinline$($\nonterm{type-name}\lstinline$)e$'', if
     1871\nonterm{type-name} is the type of an interpretation of \lstinline$e$, then that interpretation is
     1872the only interpretation of the cast expression; otherwise, \lstinline$e$ shall have some
     1873interpretation that can be converted to \nonterm{type-name}, and the interpretation of the cast
     1874expression is the cast of the interpretation that can be converted at the lowest cost. The cast
     1875expression's interpretation is ambiguous\index{ambiguous interpretation} if more than one
     1876interpretation can be converted at the lowest cost or if the selected interpretation is ambiguous.
     1877
     1878\begin{rationale}
     1879Casts can be used to eliminate ambiguity in expressions by selecting interpretations of
     1880subexpressions, and to specialize polymorphic functions and values.
     1881\end{rationale}
     1882
     1883
     1884\subsection{Multiplicative operators}
     1885
     1886\begin{syntax}
     1887\lhs{multiplicative-expression}
     1888\rhs \nonterm{cast-expression}
     1889\rhs \nonterm{multiplicative-expression} \lstinline$*$ \nonterm{cast-expression}
     1890\rhs \nonterm{multiplicative-expression} \lstinline$/$ \nonterm{cast-expression}
     1891\rhs \nonterm{multiplicative-expression} \lstinline$%$ \nonterm{cast-expression}
     1892\end{syntax}
     1893
     1894\rewriterules
     1895\begin{lstlisting}
     1896a * b @\rewrite@ ?*?( a, b )@\use{?*?}@
     1897a / b @\rewrite@ ?/?( a, b )@\use{?/?}@
     1898a % b @\rewrite@ ?%?( a, b )@\use{?%?}@
     1899\end{lstlisting}
     1900
     1901\predefined
     1902\begin{lstlisting}
     1903int?*?( int, int ),
     1904        ?/?( int, int ),
     1905        ?%?( int, int );
     1906unsigned int?*?( unsigned int, unsigned int ),
     1907        ?/?( unsigned int, unsigned int ),
     1908        ?%?( unsigned int, unsigned int );
     1909long int?*?( long int, long int ),
     1910        ?/?( long, long ),
     1911        ?%?( long, long );
     1912long unsigned int?*?( long unsigned int, long unsigned int ),
     1913        ?/?( long unsigned int, long unsigned int ),
     1914        ?%?( long unsigned int, long unsigned int );
     1915long long int?*?( long long int, long long int ),
     1916        ?/?( long long int, long long int ),
     1917        ?%?( long long int, long long int );
     1918long long unsigned int ?*?( long long unsigned int, long long unsigned int ),
     1919        ?/?( long long unsigned int, long long unsigned int ),
     1920        ?%?( long long unsigned int, long long unsigned int );
     1921float?*?( float, float ),
     1922        ?/?( float, float );
     1923double?*?( double, double ),
     1924        ?/?( double, double );
     1925long double?*?( long double, long double ),
     1926        ?/?( long double, long double );
     1927_Complex float?*?( float, _Complex float ),
     1928        ?/?( float, _Complex float ),
     1929        ?*?( _Complex float, float ),
     1930        ?/?( _Complex float, float ),
     1931        ?*?( _Complex float, _Complex float ),
     1932        ?/?( _Complex float, _Complex float );
     1933_Complex double?*?( double, _Complex double ),
     1934        ?/?( double, _Complex double ),
     1935        ?*?( _Complex double, double ),
     1936        ?/?( _Complex double, double ),
     1937        ?*?( _Complex double, _Complex double ),
     1938        ?/?( _Complex double, _Complex double );
     1939_Complex long double?*?( long double, _Complex long double ),
     1940        ?/?( long double, _Complex long double ),
     1941        ?*?( _Complex long double, long double ),
     1942        ?/?( _Complex long double, long double ),
     1943        ?*?( _Complex long double, _Complex long double ),
     1944        ?/?( _Complex long double, _Complex long double );
     1945\end{lstlisting}
     1946For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     1947rank of \lstinline$int$ there exist
     1948% Don't use predefined: keep this out of prelude.cf.
     1949\begin{lstlisting}
     1950X ?*?( X ), ?/?( X ), ?%?( X );
     1951\end{lstlisting}
     1952
     1953\begin{rationale}
     1954{\c11} does not include conversions from the \Index{real type}s to \Index{complex type}s in the
     1955\Index{usual arithmetic conversion}s.  Instead it specifies conversion of the result of binary
     1956operations on arguments from mixed type domains. \CFA's predefined operators match that pattern.
     1957\end{rationale}
     1958
     1959\semantics
     1960The interpretations of multiplicative expressions are the interpretations of the corresponding
     1961function call.
     1962
     1963\examples
     1964\begin{lstlisting}
     1965int i;
     1966long li;
     1967void eat_double( double );@\use{eat_double}@
     1968eat_double( li % i );
     1969\end{lstlisting}
     1970``\lstinline$li % i$'' is rewritten as ``\lstinline$?%?(li, i )$''. The valid interpretations
     1971of \lstinline$?%?(li, i )$, the cost\index{conversion cost} of converting their arguments, and
     1972the cost of converting the result to \lstinline$double$ (assuming no extended integer types are
     1973present ) are
     1974\begin{center}
     1975\begin{tabular}{lcc}
     1976interpretation & argument cost & result cost \\
     1977\hline
     1978\lstinline$ ?%?( (int)li, i )$                                                                          & (unsafe)      & 6     \\
     1979\lstinline$ ?%?( (unsigned)li,(unsigned)i )$                                            & (unsafe)      & 5     \\
     1980\lstinline$ ?%?(li,(long)i )$                                                                           & 1                     & 4     \\
     1981\lstinline$ ?%?( (long unsigned)li,(long unsigned)i )$                          & 3                     & 3     \\
     1982\lstinline$ ?%?( (long long)li,(long long)i )$                                          & 5                     & 2     \\
     1983\lstinline$ ?%?( (long long unsigned)li, (long long unsigned)i )$       & 7                     & 1     \\
     1984\end{tabular}
     1985\end{center}
     1986The best interpretation of \lstinline$eat_double( li, i )$ is
     1987\lstinline$eat_double( (double)?%?(li, (long)i ))$, which has no unsafe conversions and the
     1988lowest total cost.
     1989
     1990\begin{rationale}
     1991{\c11} defines most arithmetic operations to apply an \Index{integer promotion} to any argument that
     1992belongs to a type that has an \Index{integer conversion rank} less than that of \lstinline$int$.If
     1993\lstinline$s$ is a \lstinline$short int$, ``\lstinline$s *s$'' does not have type \lstinline$short int$;
     1994it is treated as ``\lstinline$( (int)s ) * ( (int)s )$'', and has type \lstinline$int$. \CFA matches
     1995that pattern; it does not predefine ``\lstinline$short ?*?( short, short )$''.
     1996
     1997These ``missing'' operators limit polymorphism. Consider
     1998\begin{lstlisting}
     1999forall( type T | T ?*?( T, T ) ) T square( T );
     2000short s;
     2001square( s );
     2002\end{lstlisting}
     2003Since \CFA does not define a multiplication operator for \lstinline$short int$,
     2004\lstinline$square( s )$ is treated as \lstinline$square( (int)s )$, and the result has type
     2005\lstinline$int$. This is mildly surprising, but it follows the {\c11} operator pattern.
     2006
     2007A more troubling example is
     2008\begin{lstlisting}
     2009forall( type T | ?*?( T, T ) ) T product( T[], int n );
     2010short sa[5];
     2011product( sa, 5);
     2012\end{lstlisting}
     2013This has no valid interpretations, because \CFA has no conversion from ``array of
     2014\lstinline$short int$'' to ``array of \lstinline$int$''. The alternatives in such situations
     2015include
     2016\begin{itemize}
     2017\item
     2018Defining monomorphic overloadings of \lstinline$product$ for \lstinline$short$ and the other
     2019``small'' types.
     2020\item
     2021Defining ``\lstinline$short ?*?( short, short )$'' within the scope containing the call to
     2022\lstinline$product$.
     2023\item
     2024Defining \lstinline$product$ to take as an argument a conversion function from the ``small'' type to
     2025the operator's argument type.
     2026\end{itemize}
     2027\end{rationale}
     2028
     2029
     2030\subsection{Additive operators}
     2031
     2032\begin{syntax}
     2033\lhs{additive-expression}
     2034\rhs \nonterm{multiplicative-expression}
     2035\rhs \nonterm{additive-expression} \lstinline$+$ \nonterm{multiplicative-expression}
     2036\rhs \nonterm{additive-expression} \lstinline$-$ \nonterm{multiplicative-expression}
     2037\end{syntax}
     2038
     2039\rewriterules
     2040\begin{lstlisting}
     2041a + b @\rewrite@ ?+?( a, b )@\use{?+?}@
     2042a - b @\rewrite@ ?-?( a, b )@\use{?-?}@
     2043\end{lstlisting}
     2044
     2045\predefined
     2046\begin{lstlisting}
     2047int?+?( int, int ),
     2048        ?-?( int, int );
     2049unsigned int?+?( unsigned int, unsigned int ),
     2050        ?-?( unsigned int, unsigned int );
     2051long int?+?( long int, long int ),
     2052        ?-?( long int, long int );
     2053long unsigned int?+?( long unsigned int, long unsigned int ),
     2054        ?-?( long unsigned int, long unsigned int );
     2055long long int?+?( long long int, long long int ),
     2056        ?-?( long long int, long long int );
     2057long long unsigned int ?+?( long long unsigned int, long long unsigned int ),
     2058        ?-?( long long unsigned int, long long unsigned int );
     2059float?+?( float, float ),
     2060        ?-?( float, float );
     2061double?+?( double, double ),
     2062        ?-?( double, double );
     2063long double?+?( long double, long double ),
     2064        ?-?( long double, long double );
     2065_Complex float?+?( _Complex float, float ),
     2066        ?-?( _Complex float, float ),
     2067        ?+?( float, _Complex float ),
     2068        ?-?( float, _Complex float ),
     2069        ?+?( _Complex float, _Complex float ),
     2070        ?-?( _Complex float, _Complex float );
     2071_Complex double?+?( _Complex double, double ),
     2072        ?-?( _Complex double, double ),
     2073        ?+?( double, _Complex double ),
     2074        ?-?( double, _Complex double ),
     2075        ?+?( _Complex double, _Complex double ),
     2076        ?-?( _Complex double, _Complex double );
     2077_Complex long double?+?( _Complex long double, long double ),
     2078        ?-?( _Complex long double, long double ),
     2079        ?+?( long double, _Complex long double ),
     2080        ?-?( long double, _Complex long double ),
     2081        ?+?( _Complex long double, _Complex long double ),
     2082        ?-?( _Complex long double, _Complex long double );
     2083
     2084forall( type T ) T
     2085        * ?+?( T *, ptrdiff_t ),
     2086        * ?+?( ptrdiff_t, T * ),
     2087        * ?-?( T *, ptrdiff_t );
     2088
     2089forall( type T ) _Atomic T
     2090        * ?+?( _Atomic T *, ptrdiff_t ),
     2091        * ?+?( ptrdiff_t, _Atomic T * ),
     2092        * ?-?( _Atomic T *, ptrdiff_t );
     2093
     2094forall( type T ) const T
     2095        * ?+?( const T *, ptrdiff_t ),
     2096        * ?+?( ptrdiff_t, const T * ),
     2097        * ?-?( const T *, ptrdiff_t );
     2098
     2099forall( type T ) restrict T
     2100        * ?+?( restrict T *, ptrdiff_t ),
     2101        * ?+?( ptrdiff_t, restrict T * ),
     2102        * ?-?( restrict T *, ptrdiff_t );
     2103
     2104forall( type T ) volatile T
     2105        * ?+?( volatile T *, ptrdiff_t ),
     2106        * ?+?( ptrdiff_t, volatile T * ),
     2107        * ?-?( volatile T *, ptrdiff_t );
     2108
     2109forall( type T ) _Atomic const T
     2110        * ?+?( _Atomic const T *, ptrdiff_t ),
     2111        * ?+?( ptrdiff_t, _Atomic const T * ),
     2112        * ?-?( _Atomic const T *, ptrdiff_t );
     2113
     2114forall( type T ) _Atomic restrict T
     2115        * ?+?( _Atomic restrict T *, ptrdiff_t ),
     2116        * ?+?( ptrdiff_t, _Atomic restrict T * ),
     2117        * ?-?( _Atomic restrict T *, ptrdiff_t );
     2118
     2119forall( type T ) _Atomic volatile T
     2120        * ?+?( _Atomic volatile T *, ptrdiff_t ),
     2121        * ?+?( ptrdiff_t, _Atomic volatile T * ),
     2122        * ?-?( _Atomic volatile T *, ptrdiff_t );
     2123
     2124forall( type T ) const restrict T
     2125        * ?+?( const restrict T *, ptrdiff_t ),
     2126        * ?+?( ptrdiff_t, const restrict T * ),
     2127        * ?-?( const restrict T *, ptrdiff_t );
     2128
     2129forall( type T ) const volatile T
     2130        * ?+?( const volatile T *, ptrdiff_t ),
     2131        * ?+?( ptrdiff_t, const volatile T * ),
     2132        * ?-?( const volatile T *, ptrdiff_t );
     2133
     2134forall( type T ) restrict volatile T
     2135        * ?+?( restrict volatile T *, ptrdiff_t ),
     2136        * ?+?( ptrdiff_t, restrict volatile T * ),
     2137        * ?-?( restrict volatile T *, ptrdiff_t );
     2138
     2139forall( type T ) _Atomic const restrict T
     2140        * ?+?( _Atomic const restrict T *, ptrdiff_t ),
     2141        * ?+?( ptrdiff_t, _Atomic const restrict T * ),
     2142        * ?-?( _Atomic const restrict T *, ptrdiff_t );
     2143
     2144forall( type T ) ptrdiff_t
     2145        * ?-?( const restrict volatile T *, const restrict volatile T * ),
     2146        * ?-?( _Atomic const restrict volatile T *, _Atomic const restrict volatile T * );
     2147\end{lstlisting}
     2148For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2149rank of \lstinline$int$ there exist
     2150% Don't use predefined: keep this out of prelude.cf.
     2151\begin{lstlisting}
     2152X ?+?( X ), ?-?( X );
     2153\end{lstlisting}
     2154
     2155\semantics
     2156The interpretations of additive expressions are the interpretations of the corresponding function
     2157calls.
     2158
     2159\begin{rationale}
     2160\lstinline$ptrdiff_t$ is an implementation-defined identifier defined in \lstinline$<stddef.h>$ that
     2161is synonymous with a signed integral type that is large enough to hold the difference between two
     2162pointers. It seems reasonable to use it for pointer addition as well. (This is technically a
     2163difference between \CFA and C, which only specifies that pointer addition uses an \emph{integral}
     2164argument.) Hence it is also used for subscripting, which is defined in terms of pointer addition.
     2165The {\c11} standard uses \lstinline$size_t$ in several cases where a library function takes an
     2166argument that is used as a subscript, but \lstinline$size_t$ is unsuitable here because it is an
     2167unsigned type.
     2168\end{rationale}
     2169
     2170
     2171\subsection{Bitwise shift operators}
     2172
     2173\begin{syntax}
     2174\lhs{shift-expression}
     2175\rhs \nonterm{additive-expression}
     2176\rhs \nonterm{shift-expression} \lstinline$<<$ \nonterm{additive-expression}
     2177\rhs \nonterm{shift-expression} \lstinline$>>$ \nonterm{additive-expression}
     2178\end{syntax}
     2179
     2180\rewriterules \use{?>>?}%use{?<<?}
     2181\begin{lstlisting}
     2182a << b @\rewrite@ ?<<?( a, b )
     2183a >> b @\rewrite@ ?>>?( a, b )
     2184\end{lstlisting}
     2185
     2186\predefined
     2187\begin{lstlisting}
     2188int ?<<?( int, int ),
     2189         ?>>?( int, int );
     2190unsigned int ?<<?( unsigned int, int ),
     2191         ?>>?( unsigned int, int );
     2192long int ?<<?( long int, int ),
     2193         ?>>?( long int, int );
     2194long unsigned int ?<<?( long unsigned int, int ),
     2195         ?>>?( long unsigned int, int );
     2196long long int ?<<?( long long int, int ),
     2197         ?>>?( long long int, int );
     2198long long unsigned int ?<<?( long long unsigned int, int ),
     2199         ?>>?( long long unsigned int, int);
     2200\end{lstlisting}
     2201For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2202rank of \lstinline$int$ there exist
     2203% Don't use predefined: keep this out of prelude.cf.
     2204\begin{lstlisting}
     2205X ?<<?( X, int ), ?>>?( X, int );
     2206\end{lstlisting}
     2207
     2208\begin{rationale}
     2209The bitwise shift operators break the usual pattern: they do not convert both operands to a common
     2210type. The right operand only undergoes \Index{integer promotion}.
     2211\end{rationale}
     2212
     2213\semantics
     2214The interpretations of a bitwise shift expression are the interpretations of the corresponding
     2215function calls.
     2216
     2217
     2218\subsection{Relational operators}
     2219
     2220\begin{syntax}
     2221\lhs{relational-expression}
     2222\rhs \nonterm{shift-expression}
     2223\rhs \nonterm{relational-expression} \lstinline$< $ \nonterm{shift-expression}
     2224\rhs \nonterm{relational-expression} \lstinline$> $ \nonterm{shift-expression}
     2225\rhs \nonterm{relational-expression} \lstinline$<=$ \nonterm{shift-expression}
     2226\rhs \nonterm{relational-expression} \lstinline$>=$ \nonterm{shift-expression}
     2227\end{syntax}
     2228
     2229\rewriterules\use{?>?}\use{?>=?}%use{?<?}%use{?<=?}
     2230\begin{lstlisting}
     2231a < b @\rewrite@ ?<?( a, b )
     2232a > b @\rewrite@ ?>?( a, b )
     2233a <= b @\rewrite@ ?<=?( a, b )
     2234a >= b @\rewrite@ ?>=?( a, b )
     2235\end{lstlisting}
     2236
     2237\predefined
     2238\begin{lstlisting}
     2239int ?<?( int, int ),
     2240        ?<=?( int, int ),
     2241        ?>?( int, int ),
     2242        ?>=?( int, int );
     2243int ?<?( unsigned int, unsigned int ),
     2244        ?<=?( unsigned int, unsigned int ),
     2245        ?>?( unsigned int, unsigned int ),
     2246        ?>=?( unsigned int, unsigned int );
     2247int ?<?( long int, long int ),
     2248        ?<=?( long int, long int ),
     2249        ?>?( long int, long int ),
     2250        ?>=?( long int, long int );
     2251int ?<?( long unsigned int, long unsigned ),
     2252        ?<=?( long unsigned int, long unsigned ),
     2253        ?>?( long unsigned int, long unsigned ),
     2254        ?>=?( long unsigned int, long unsigned );
     2255int ?<?( long long int, long long int ),
     2256        ?<=?( long long int, long long int ),
     2257        ?>?( long long int, long long int ),
     2258        ?>=?( long long int, long long int );
     2259int ?<?( long long unsigned int, long long unsigned ),
     2260        ?<=?( long long unsigned int, long long unsigned ),
     2261        ?>?( long long unsigned int, long long unsigned ),
     2262        ?>=?( long long unsigned int, long long unsigned );
     2263int ?<?( float, float ),
     2264        ?<=?( float, float ),
     2265        ?>?( float, float ),
     2266        ?>=?( float, float );
     2267int ?<?( double, double ),
     2268        ?<=?( double, double ),
     2269        ?>?( double, double ),
     2270        ?>=?( double, double );
     2271int ?<?( long double, long double ),
     2272        ?<=?( long double, long double ),
     2273        ?>?( long double, long double ),
     2274        ?>=?( long double, long double );
     2275
     2276forall( dtype DT ) int
     2277        ?<?( const restrict volatile DT *, const restrict volatile DT * ),
     2278        ?<?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
     2279        ?<=?( const restrict volatile DT *, const restrict volatile DT * ),
     2280        ?<=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
     2281        ?>?( const restrict volatile DT *, const restrict volatile DT * ),
     2282        ?>?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
     2283        ?>=?( const restrict volatile DT *, const restrict volatile DT * ),
     2284        ?>=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * );
     2285\end{lstlisting}
     2286For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2287rank of \lstinline$int$ there exist
     2288% Don't use predefined: keep this out of prelude.cf.
     2289\begin{lstlisting}
     2290int ?<?( X, X ),
     2291        ?<=?( X, X ),
     2292        ?<?( X, X ),
     2293        ?>=?( X, X );
     2294\end{lstlisting}
     2295
     2296\semantics
     2297The interpretations of a relational expression are the interpretations of the corresponding function
     2298call.
     2299
     2300
     2301\subsection{Equality operators}
     2302
     2303\begin{syntax}
     2304\lhs{equality-expression}
     2305\rhs \nonterm{relational-expression}
     2306\rhs \nonterm{equality-expression} \lstinline$==$ \nonterm{relational-expression}
     2307\rhs \nonterm{equality-expression} \lstinline$!=$ \nonterm{relational-expression}
     2308\end{syntax}
     2309
     2310\rewriterules
     2311\begin{lstlisting}
     2312a == b @\rewrite@ ?==?( a, b )@\use{?==?}@
     2313a != b @\rewrite@ ?!=?( a, b )@\use{?"!=?}@
     2314\end{lstlisting}
     2315
     2316\predefined
     2317\begin{lstlisting}
     2318int ?==?( int, int ),
     2319        ?!=?( int, int ),
     2320        ?==?( unsigned int, unsigned int ),
     2321        ?!=?( unsigned int, unsigned int ),
     2322        ?==?( long int, long int ),
     2323        ?!=?( long int, long int ),
     2324        ?==?( long unsigned int, long unsigned int ),
     2325        ?!=?( long unsigned int, long unsigned int ),
     2326        ?==?( long long int, long long int ),
     2327        ?!=?( long long int, long long int ),
     2328        ?==?( long long unsigned int, long long unsigned int ),
     2329        ?!=?( long long unsigned int, long long unsigned int ),
     2330        ?==?( float, float ),
     2331        ?!=?( float, float ),
     2332        ?==?( _Complex float, float ),
     2333        ?!=?( _Complex float, float ),
     2334        ?==?( float, _Complex float ),
     2335        ?!=?( float, _Complex float ),
     2336        ?==?( _Complex float, _Complex float ),
     2337        ?!=?( _Complex float, _Complex float ),
     2338        ?==?( double, double ),
     2339        ?!=?( double, double ),
     2340        ?==?( _Complex double, double ),
     2341        ?!=?( _Complex double, double ),
     2342        ?==?( double, _Complex double ),
     2343        ?!=?( double, _Complex double ),
     2344        ?==?( _Complex double, _Complex double ),
     2345        ?!=?( _Complex double, _Complex double ),
     2346        ?==?( long double, long double ),
     2347        ?!=?( long double, long double ),
     2348        ?==?( _Complex long double, long double ),
     2349        ?!=?( _Complex long double, long double ),
     2350        ?==?( long double, _Complex long double ),
     2351        ?!=?( long double, _Complex long double ),
     2352        ?==?( _Complex long double, _Complex long double ),
     2353        ?!=?( _Complex long double, _Complex long double );
     2354
     2355forall( dtype DT ) int
     2356        ?==?( const restrict volatile DT *, const restrict volatile DT * ),
     2357        ?!=?( const restrict volatile DT *, const restrict volatile DT * ),
     2358        ?==?( const restrict volatile DT *, const restrict volatile void * ),
     2359        ?!=?( const restrict volatile DT *, const restrict volatile void * ),
     2360        ?==?( const restrict volatile void *, const restrict volatile DT * ),
     2361        ?!=?( const restrict volatile void *, const restrict volatile DT * ),
     2362        ?==?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ),
     2363        ?!=?( const restrict volatile DT *, forall( dtype DT2) const DT2 * ),
     2364        ?==?( forall( dtype DT2) const DT2*, const restrict volatile DT * ),
     2365        ?!=?( forall( dtype DT2) const DT2*, const restrict volatile DT * ),
     2366        ?==?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ),
     2367        ?!=?( forall( dtype DT2) const DT2*, forall( dtype DT3) const DT3 * ),
     2368
     2369        ?==?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
     2370        ?!=?( _Atomic const restrict volatile DT *, _Atomic const restrict volatile DT * ),
     2371        ?==?( _Atomic const restrict volatile DT *, const restrict volatile void * ),
     2372        ?!=?( _Atomic const restrict volatile DT *, const restrict volatile void * ),
     2373        ?==?( const restrict volatile void *, _Atomic const restrict volatile DT * ),
     2374        ?!=?( const restrict volatile void *, _Atomic const restrict volatile DT * ),
     2375        ?==?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ),
     2376        ?!=?( _Atomic const restrict volatile DT *, forall( dtype DT2) const DT2 * ),
     2377        ?==?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * ),
     2378        ?!=?( forall( dtype DT2) const DT2*, _Atomic const restrict volatile DT * );
     2379
     2380forall( ftype FT ) int
     2381        ?==?( FT *, FT * ),
     2382        ?!=?( FT *, FT * ),
     2383        ?==?( FT *, forall( ftype FT2) FT2 * ),
     2384        ?!=?( FT *, forall( ftype FT2) FT2 * ),
     2385        ?==?( forall( ftype FT2) FT2*, FT * ),
     2386        ?!=?( forall( ftype FT2) FT2*, FT * ),
     2387        ?==?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * ),
     2388        ?!=?( forall( ftype FT2) FT2*, forall( ftype FT3) FT3 * );
     2389\end{lstlisting}
     2390For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2391rank of \lstinline$int$ there exist
     2392% Don't use predefined: keep this out of prelude.cf.
     2393\begin{lstlisting}
     2394int ?==?( X, X ),
     2395        ?!=?( X, X );
     2396\end{lstlisting}
     2397
     2398\begin{rationale}
     2399The polymorphic equality operations come in three styles: comparisons between pointers of compatible
     2400types, between pointers to \lstinline$void$ and pointers to object types or incomplete types, and
     2401between the \Index{null pointer} constant and pointers to any type. In the last case, a special
     2402constraint rule for null pointer constant operands has been replaced by a consequence of the \CFA
     2403type system.
     2404\end{rationale}
     2405
     2406\semantics
     2407The interpretations of an equality expression are the interpretations of the corresponding function
     2408call.
     2409
     2410\begin{sloppypar}
     2411The result of an equality comparison between two pointers to predefined functions or predefined
     2412values is implementation-defined.
     2413\end{sloppypar}
     2414\begin{rationale}
     2415The implementation-defined status of equality comparisons allows implementations to use one library
     2416routine to implement many predefined functions. These optimization are particularly important when
     2417the predefined functions are polymorphic, as is the case for most pointer operations
     2418\end{rationale}
     2419
     2420
     2421\subsection{Bitwise AND operator}
     2422
     2423\begin{syntax}
     2424\lhs{AND-expression}
     2425\rhs \nonterm{equality-expression}
     2426\rhs \nonterm{AND-expression} \lstinline$&$ \nonterm{equality-expression}
     2427\end{syntax}
     2428
     2429\rewriterules
     2430\begin{lstlisting}
     2431a & b @\rewrite@ ?&?( a, b )@\use{?&?}@
     2432\end{lstlisting}
     2433
     2434\predefined
     2435\begin{lstlisting}
     2436int ?&?( int, int );
     2437unsigned int ?&?( unsigned int, unsigned int );
     2438long int ?&?( long int, long int );
     2439long unsigned int ?&?( long unsigned int, long unsigned int );
     2440long long int ?&?( long long int, long long int );
     2441long long unsigned int ?&?( long long unsigned int, long long unsigned int );
     2442\end{lstlisting}
     2443For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2444rank of \lstinline$int$ there exist
     2445% Don't use predefined: keep this out of prelude.cf.
     2446\begin{lstlisting}
     2447int ?&?( X, X );
     2448\end{lstlisting}
     2449
     2450\semantics
     2451The interpretations of a bitwise AND expression are the interpretations of the corresponding
     2452function call.
     2453
     2454
     2455\subsection{Bitwise exclusive OR operator}
     2456
     2457\begin{syntax}
     2458\lhs{exclusive-OR-expression}
     2459\rhs \nonterm{AND-expression}
     2460\rhs \nonterm{exclusive-OR-expression} \lstinline$^$ \nonterm{AND-expression}
     2461\end{syntax}
     2462
     2463\rewriterules
     2464\begin{lstlisting}
     2465a ^ b @\rewrite@ ?^?( a, b )@\use{?^?}@
     2466\end{lstlisting}
     2467
     2468\predefined
     2469\begin{lstlisting}
     2470int ?^?( int, int );
     2471unsigned int ?^?( unsigned int, unsigned int );
     2472long int ?^?( long int, long int );
     2473long unsigned int ?^?( long unsigned int, long unsigned int );
     2474long long int ?^?( long long int, long long int );
     2475long long unsigned int ?^?( long long unsigned int, long long unsigned int );
     2476\end{lstlisting}
     2477For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2478rank of \lstinline$int$ there exist
     2479% Don't use predefined: keep this out of prelude.cf.
     2480\begin{lstlisting}
     2481int ?^?( X, X );
     2482\end{lstlisting}
     2483
     2484\semantics
     2485The interpretations of a bitwise exclusive OR expression are the interpretations of the
     2486corresponding function call.
     2487
     2488
     2489\subsection{Bitwise inclusive OR operator}
     2490
     2491\begin{syntax}
     2492\lhs{inclusive-OR-expression}
     2493\rhs \nonterm{exclusive-OR-expression}
     2494\rhs \nonterm{inclusive-OR-expression} \lstinline$|$ \nonterm{exclusive-OR-expression}
     2495\end{syntax}
     2496
     2497\rewriterules\use{?"|?}
     2498\begin{lstlisting}
     2499a | b @\rewrite@ ?|?( a, b )
     2500\end{lstlisting}
     2501
     2502\predefined
     2503\begin{lstlisting}
     2504int ?|?( int, int );
     2505unsigned int ?|?( unsigned int, unsigned int );
     2506long int ?|?( long int, long int );
     2507long unsigned int ?|?( long unsigned int, long unsigned int );
     2508long long int ?|?( long long int, long long int );
     2509long long unsigned int ?|?( long long unsigned int, long long unsigned int );
     2510\end{lstlisting}
     2511For every extended integer type \lstinline$X$ with \Index{integer conversion rank} greater than the
     2512rank of \lstinline$int$ there exist
     2513% Don't use predefined: keep this out of prelude.cf.
     2514\begin{lstlisting}
     2515int ?|?( X, X );
     2516\end{lstlisting}
     2517
     2518\semantics
     2519The interpretations of a bitwise inclusive OR expression are the interpretations of the
     2520corresponding function call.
     2521
     2522
     2523\subsection{Logical AND operator}
     2524
     2525\begin{syntax}
     2526\lhs{logical-AND-expression}
     2527\rhs \nonterm{inclusive-OR-expression}
     2528\rhs \nonterm{logical-AND-expression} \lstinline$&&$ \nonterm{inclusive-OR-expression}
     2529\end{syntax}
     2530
     2531\semantics The operands of the expression ``\lstinline$a && b$'' are treated as
     2532``\lstinline$(int)((a)!=0)$'' and ``\lstinline$(int)((b)!=0)$'', which shall both be
     2533unambiguous. The expression has only one interpretation, which is of type \lstinline$int$.
     2534\begin{rationale}
     2535When the operands of a logical expression are values of built-in types, and ``\lstinline$!=$'' has
     2536not been redefined for those types, the compiler can optimize away the function calls.
     2537
     2538A common C idiom omits comparisons to \lstinline$0$ in the controlling expressions of loops and
     2539\lstinline$if$ statements. For instance, the loop below iterates as long as \lstinline$rp$ points
     2540at a \lstinline$Rational$ value that is non-zero.
     2541
     2542\begin{lstlisting}
     2543extern type Rational;@\use{Rational}@
     2544extern const Rational 0;@\use{0}@
     2545extern int ?!=?( Rational, Rational );
     2546Rational *rp;
     2547
     2548while ( rp && *rp ) { ... }
     2549\end{lstlisting}
     2550The logical expression calls the \lstinline$Rational$ inequality operator, passing
     2551it \lstinline$*rp$ and the \lstinline$Rational 0$, and getting a 1 or 0 as a result. In
     2552contrast, {\CC} would apply a programmer-defined \lstinline$Rational$-to-\lstinline$int$
     2553conversion to \lstinline$*rp$ in the equivalent situation. The conversion to \lstinline$int$ would
     2554produce a general integer value, which is unfortunate, and possibly dangerous if the conversion was
     2555not written with this situation in mind.
     2556\end{rationale}
     2557
     2558
     2559\subsection{Logical OR operator}
     2560
     2561\begin{syntax}
     2562\lhs{logical-OR-expression}
     2563\rhs \nonterm{logical-AND-expression}
     2564\rhs \nonterm{logical-OR-expression} \lstinline$||$ \nonterm{logical-AND-expression}
     2565\end{syntax}
     2566
     2567\semantics
     2568
     2569The operands of the expression ``\lstinline$a || b$'' are treated as ``\lstinline$(int)((a)!=0)$''
     2570and ``\lstinline$(int)((b))!=0)$'', which shall both be unambiguous. The expression has only one
     2571interpretation, which is of type \lstinline$int$.
     2572
     2573
     2574\subsection{Conditional operator}
     2575
     2576\begin{syntax}
     2577\lhs{conditional-expression}
     2578\rhs \nonterm{logical-OR-expression}
     2579\rhs \nonterm{logical-OR-expression} \lstinline$?$ \nonterm{expression}
     2580         \lstinline$:$ \nonterm{conditional-expression}
     2581\end{syntax}
     2582
     2583\semantics
     2584In the conditional expression\use{?:} ``\lstinline$a?b:c$'', if the second and
     2585third operands both have an interpretation with \lstinline$void$ type, then the expression has an
     2586interpretation with type \lstinline$void$, equivalent to
     2587\begin{lstlisting}
     2588( int)(( a)!=0) ? ( void)( b) : ( void)( c)
     2589\end{lstlisting}
     2590
     2591If the second and third operands both have interpretations with non-\lstinline$void$ types, the
     2592expression is treated as if it were the call ``\lstinline$cond((a)!=0, b, c)$'',
     2593with \lstinline$cond$ declared as
     2594\begin{lstlisting}
     2595forall( type T ) T cond( int, T, T );
     2596 
     2597forall( dtype D ) void
     2598        * cond( int, D *, void * ),
     2599        * cond( int, void *, D * );
     2600       
     2601forall( dtype D ) _atomic void
     2602        * cond( int, _Atomic D *, _Atomic void * ),
     2603        * cond( int, _Atomic void *, _Atomic D * );
     2604
     2605forall( dtype D ) const void
     2606        * cond( int, const D *, const void * ),
     2607        * cond( int, const void *, const D * );
     2608
     2609forall( dtype D ) restrict void
     2610        * cond( int, restrict D *, restrict void * ),
     2611        * cond( int, restrict void *, restrict D * );
     2612
     2613forall( dtype D ) volatile void
     2614        * cond( int, volatile D *, volatile void * ),
     2615        * cond( int, volatile void *, volatile D * );
     2616
     2617forall( dtype D ) _Atomic const void
     2618        * cond( int, _Atomic const D *, _Atomic const void * ),
     2619        * cond( int, _Atomic const void *, _Atomic const D * );
     2620
     2621forall( dtype D ) _Atomic restrict void
     2622        * cond( int, _Atomic restrict D *, _Atomic restrict void * ),
     2623        * cond( int, _Atomic restrict void *, _Atomic restrict D * );
     2624
     2625forall( dtype D ) _Atomic volatile void
     2626        * cond( int, _Atomic volatile D *, _Atomic volatile void * ),
     2627        * cond( int, _Atomic volatile void *, _Atomic volatile D * );
     2628
     2629forall( dtype D ) const restrict void
     2630        * cond( int, const restrict D *, const restrict void * ),
     2631        * cond( int, const restrict void *, const restrict D * );
     2632
     2633forall( dtype D ) const volatile void
     2634        * cond( int, const volatile D *, const volatile void * ),
     2635        * cond( int, const volatile void *, const volatile D * );
     2636
     2637forall( dtype D ) restrict volatile void
     2638        * cond( int, restrict volatile D *, restrict volatile void * ),
     2639        * cond( int, restrict volatile void *, restrict volatile D * );
     2640
     2641forall( dtype D ) _Atomic const restrict void
     2642        * cond( int, _Atomic const restrict D *, _Atomic const restrict void * ),
     2643        * cond( int, _Atomic const restrict void *, _Atomic const restrict D * );
     2644
     2645forall( dtype D ) _Atomic const volatile void
     2646        * cond( int, _Atomic const volatile D *, _Atomic const volatile void * ),
     2647        * cond( int, _Atomic const volatile void *, _Atomic const volatile D * );
     2648
     2649forall( dtype D ) _Atomic restrict volatile void
     2650        * cond( int, _Atomic restrict volatile D *,
     2651         _Atomic restrict volatile void * ),
     2652        * cond( int, _Atomic restrict volatile void *,
     2653         _Atomic restrict volatile D * );
     2654
     2655forall( dtype D ) const restrict volatile void
     2656        * cond( int, const restrict volatile D *,
     2657         const restrict volatile void * ),
     2658        * cond( int, const restrict volatile void *,
     2659         const restrict volatile D * );
     2660
     2661forall( dtype D ) _Atomic const restrict volatile void
     2662        * cond( int, _Atomic const restrict volatile D *,
     2663         _Atomic const restrict volatile void * ),
     2664        * cond( int, _Atomic const restrict volatile void *,
     2665         _Atomic const restrict volatile D * );
     2666\end{lstlisting}
     2667
     2668\begin{rationale}
     2669The object of the above is to apply the \Index{usual arithmetic conversion}s when the second and
     2670third operands have arithmetic type, and to combine the qualifiers of the second and third operands
     2671if they are pointers.
     2672\end{rationale}
     2673
     2674\examples
     2675\begin{lstlisting}
     2676#include <stdlib.h>
     2677int i;
     2678long l;
     2679rand() ? i : l;
     2680\end{lstlisting}
     2681The best interpretation infers the expression's type to be \lstinline$long$ and applies the safe
     2682\lstinline$int$-to-\lstinline$long$ conversion to \lstinline$i$.
     2683
     2684\begin{lstlisting}
     2685const int *cip;
     2686volatile int *vip;
     2687rand() ? cip : vip;
     2688\end{lstlisting}
     2689The expression has type \lstinline$const volatile int *$, with safe conversions applied to the second
     2690and third operands to add \lstinline$volatile$ and \lstinline$const$ qualifiers, respectively.
     2691
     2692\begin{lstlisting}
     2693rand() ? cip : 0;
     2694\end{lstlisting}
     2695The expression has type \lstinline$const int *$, with a specialization conversion applied to
     2696\lstinline$0$.
     2697
     2698
     2699\subsection{Assignment operators}
     2700
     2701\begin{syntax}
     2702\lhs{assignment-expression}
     2703\rhs \nonterm{conditional-expression}
     2704\rhs \nonterm{unary-expression} \nonterm{assignment-operator}
     2705         \nonterm{assignment-expression}
     2706\lhs{assignment-operator} one of
     2707\rhs \lstinline$=$\ \ \lstinline$*=$\ \ \lstinline$/=$\ \ \lstinline$%=$\ \ \lstinline$+=$\ \ \lstinline$-=$\ \ 
     2708         \lstinline$<<=$\ \ \lstinline$>>=$\ \ \lstinline$&=$\ \ \lstinline$^=$\ \ \lstinline$|=$
     2709\end{syntax}
     2710
     2711\rewriterules
     2712Let ``\(\leftarrow\)'' be any of the assignment operators. Then
     2713\use{?=?}\use{?*=?}\use{?/=?}\use{?%=?}\use{?+=?}\use{?-=?}
     2714\use{?>>=?}\use{?&=?}\use{?^=?}\use{?"|=?}%use{?<<=?}
     2715\begin{lstlisting}
     2716a @$\leftarrow$@ b @\rewrite@ ?@$\leftarrow$@?( &( a ), b )
     2717\end{lstlisting}
     2718
     2719\semantics
     2720Each interpretation of the left operand of an assignment expression is considered separately. For
     2721each interpretation that is a bit-field or is declared with the \lstinline$register$ storage class
     2722specifier, the expression has one valid interpretation, with the type of the left operand. The
     2723right operand is cast to that type, and the assignment expression is ambiguous if either operand is.
     2724For the remaining interpretations, the expression is rewritten, and the interpretations of the
     2725assignment expression are the interpretations of the corresponding function call. Finally, all
     2726interpretations of the expression produced for the different interpretations of the left operand are
     2727combined to produce the interpretations of the expression as a whole; where interpretations have
     2728compatible result types, the best interpretations are selected in the manner described for function
     2729call expressions.
     2730
     2731
     2732\subsubsection{Simple assignment}
     2733
     2734\predefined
     2735\begin{lstlisting}
     2736_Bool
     2737        ?=?( volatile _Bool *, _Bool ),
     2738        ?=?( volatile _Bool *, forall( dtype D ) D * ),
     2739        ?=?( volatile _Bool *, forall( ftype F ) F * ),
     2740        ?=?( _Atomic volatile _Bool *, _Bool ),
     2741        ?=?( _Atomic volatile _Bool *, forall( dtype D ) D * ),
     2742        ?=?( _Atomic volatile _Bool *, forall( ftype F ) F * );
     2743char
     2744        ?=?( volatile char *, char ),
     2745        ?=?( _Atomic volatile char *, char );
     2746unsigned char
     2747        ?=?( volatile unsigned char *, unsigned char ),
     2748        ?=?( _Atomic volatile unsigned char *, unsigned char );
     2749signed char
     2750        ?=?( volatile signed char *, signed char ),
     2751        ?=?( _Atomic volatile signed char *, signed char );
     2752short int
     2753        ?=?( volatile short int *, short int ),
     2754        ?=?( _Atomic volatile short int *, short int );
     2755unsigned short
     2756        ?=?( volatile unsigned int *, unsigned int ),
     2757        ?=?( _Atomic volatile unsigned int *, unsigned int );
     2758int
     2759        ?=?( volatile int *, int ),
     2760        ?=?( _Atomic volatile int *, int );
     2761unsigned int
     2762        ?=?( volatile unsigned int *, unsigned int ),
     2763        ?=?( _Atomic volatile unsigned int *, unsigned int );
     2764long int
     2765        ?=?( volatile long int *, long int ),
     2766        ?=?( _Atomic volatile long int *, long int );
     2767unsigned long int
     2768        ?=?( volatile unsigned long int *, unsigned long int ),
     2769        ?=?( _Atomic volatile unsigned long int *, unsigned long int );
     2770long long int
     2771        ?=?( volatile long long int *, long long int ),
     2772        ?=?( _Atomic volatile long long int *, long long int );
     2773unsigned long long int
     2774        ?=?( volatile unsigned long long int *, unsigned long long int ),
     2775        ?=?( _Atomic volatile unsigned long long int *, unsigned long long int );
     2776float
     2777        ?=?( volatile float *, float ),
     2778        ?=?( _Atomic volatile float *, float );
     2779double
     2780        ?=?( volatile double *, double ),
     2781        ?=?( _Atomic volatile double *, double );
     2782long double
     2783        ?=?( volatile long double *, long double ),
     2784        ?=?( _Atomic volatile long double *, long double );
     2785_Complex float
     2786        ?=?( volatile float *, float ),
     2787        ?=?( _Atomic volatile float *, float );
     2788_Complex double
     2789        ?=?( volatile double *, double ),
     2790        ?=?( _Atomic volatile double *, double );
     2791_Complex long double
     2792        ?=?( volatile _Complex long double *, _Complex long double ),
     2793        ?=?( _Atomic volatile _Complex long double *, _Atomic _Complex long double );
     2794
     2795forall( ftype FT ) FT
     2796        * ?=?( FT * volatile *, FT * ),
     2797        * ?=?( FT * volatile *, forall( ftype F ) F * );
     2798
     2799forall( ftype FT ) FT const
     2800        * ?=?( FT const * volatile *, FT const * ),
     2801        * ?=?( FT const * volatile *, forall( ftype F ) F * );
     2802
     2803forall( ftype FT ) FT volatile
     2804        * ?=?( FT volatile * volatile *, FT * ),
     2805        * ?=?( FT volatile * volatile *, forall( ftype F ) F * );
     2806
     2807forall( ftype FT ) FT const
     2808        * ?=?( FT const volatile * volatile *, FT const * ),
     2809        * ?=?( FT const volatile * volatile *, forall( ftype F ) F * );
     2810
     2811forall( dtype DT ) DT
     2812        * ?=?( DT * restrict volatile *, DT * ),
     2813        * ?=?( DT * restrict volatile *, void * ),
     2814        * ?=?( DT * restrict volatile *, forall( dtype D ) D * ),
     2815        * ?=?( DT * _Atomic restrict volatile *, DT * ),
     2816        * ?=?( DT * _Atomic restrict volatile *, void * ),
     2817        * ?=?( DT * _Atomic restrict volatile *, forall( dtype D ) D * );
     2818
     2819forall( dtype DT ) DT _Atomic
     2820        * ?=?( _Atomic DT * restrict volatile *, DT _Atomic * ),
     2821        * ?=?( _Atomic DT * restrict volatile *, void * ),
     2822        * ?=?( _Atomic DT * restrict volatile *, forall( dtype D ) D * ),
     2823        * ?=?( _Atomic DT * _Atomic restrict volatile *, DT _Atomic * ),
     2824        * ?=?( _Atomic DT * _Atomic restrict volatile *, void * ),
     2825        * ?=?( _Atomic DT * _Atomic restrict volatile *, forall( dtype D ) D * );
     2826
     2827forall( dtype DT ) DT const
     2828        * ?=?( DT const * restrict volatile *, DT const * ),
     2829        * ?=?( DT const * restrict volatile *, void const * ),
     2830        * ?=?( DT const * restrict volatile *, forall( dtype D ) D * ),
     2831        * ?=?( DT const * _Atomic restrict volatile *, DT const * ),
     2832        * ?=?( DT const * _Atomic restrict volatile *, void const * ),
     2833        * ?=?( DT const * _Atomic restrict volatile *, forall( dtype D ) D * );
     2834
     2835forall( dtype DT ) DT restrict
     2836        * ?=?( restrict DT * restrict volatile *, DT restrict * ),
     2837        * ?=?( restrict DT * restrict volatile *, void * ),
     2838        * ?=?( restrict DT * restrict volatile *, forall( dtype D ) D * ),
     2839        * ?=?( restrict DT * _Atomic restrict volatile *, DT restrict * ),
     2840        * ?=?( restrict DT * _Atomic restrict volatile *, void * ),
     2841        * ?=?( restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );
     2842
     2843forall( dtype DT ) DT volatile
     2844        * ?=?( DT volatile * restrict volatile *, DT volatile * ),
     2845        * ?=?( DT volatile * restrict volatile *, void volatile * ),
     2846        * ?=?( DT volatile * restrict volatile *, forall( dtype D ) D * ),
     2847        * ?=?( DT volatile * _Atomic restrict volatile *, DT volatile * ),
     2848        * ?=?( DT volatile * _Atomic restrict volatile *, void volatile * ),
     2849        * ?=?( DT volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
     2850
     2851forall( dtype DT ) DT _Atomic const
     2852        * ?=?( DT _Atomic const * restrict volatile *, DT _Atomic const * ),
     2853        * ?=?( DT _Atomic const * restrict volatile *, void const * ),
     2854        * ?=?( DT _Atomic const * restrict volatile *, forall( dtype D ) D * ),
     2855        * ?=?( DT _Atomic const * _Atomic restrict volatile *, DT _Atomic const * ),
     2856        * ?=?( DT _Atomic const * _Atomic restrict volatile *, void const * ),
     2857        * ?=?( DT _Atomic const * _Atomic restrict volatile *, forall( dtype D ) D * );
     2858
     2859forall( dtype DT ) DT _Atomic restrict
     2860        * ?=?( _Atomic restrict DT * restrict volatile *, DT _Atomic restrict * ),
     2861        * ?=?( _Atomic restrict DT * restrict volatile *, void * ),
     2862        * ?=?( _Atomic restrict DT * restrict volatile *, forall( dtype D ) D * ),
     2863        * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, DT _Atomic restrict * ),
     2864        * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, void * ),
     2865        * ?=?( _Atomic restrict DT * _Atomic restrict volatile *, forall( dtype D ) D * );
     2866
     2867forall( dtype DT ) DT _Atomic volatile
     2868        * ?=?( DT _Atomic volatile * restrict volatile *, DT _Atomic volatile * ),
     2869        * ?=?( DT _Atomic volatile * restrict volatile *, void volatile * ),
     2870        * ?=?( DT _Atomic volatile * restrict volatile *, forall( dtype D ) D * ),
     2871        * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, DT _Atomic volatile * ),
     2872        * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, void volatile * ),
     2873        * ?=?( DT _Atomic volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
     2874
     2875forall( dtype DT ) DT const restrict
     2876        * ?=?( DT const restrict * restrict volatile *, DT const restrict * ),
     2877        * ?=?( DT const restrict * restrict volatile *, void const * ),
     2878        * ?=?( DT const restrict * restrict volatile *, forall( dtype D ) D * ),
     2879        * ?=?( DT const restrict * _Atomic restrict volatile *, DT const restrict * ),
     2880        * ?=?( DT const restrict * _Atomic restrict volatile *, void const * ),
     2881        * ?=?( DT const restrict * _Atomic restrict volatile *, forall( dtype D ) D * );
     2882
     2883forall( dtype DT ) DT const volatile
     2884        * ?=?( DT const volatile * restrict volatile *, DT const volatile * ),
     2885        * ?=?( DT const volatile * restrict volatile *, void const volatile * ),
     2886        * ?=?( DT const volatile * restrict volatile *, forall( dtype D ) D * ),
     2887        * ?=?( DT const volatile * _Atomic restrict volatile *, DT const volatile * ),
     2888        * ?=?( DT const volatile * _Atomic restrict volatile *, void const volatile * ),
     2889        * ?=?( DT const volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
     2890
     2891forall( dtype DT ) DT restrict volatile
     2892        * ?=?( DT restrict volatile * restrict volatile *, DT restrict volatile * ),
     2893        * ?=?( DT restrict volatile * restrict volatile *, void volatile * ),
     2894        * ?=?( DT restrict volatile * restrict volatile *, forall( dtype D ) D * ),
     2895        * ?=?( DT restrict volatile * _Atomic restrict volatile *, DT restrict volatile * ),
     2896        * ?=?( DT restrict volatile * _Atomic restrict volatile *, void volatile * ),
     2897        * ?=?( DT restrict volatile * _Atomic restrict volatile *, forall( dtype D ) D * );
     2898
     2899forall( dtype DT ) DT _Atomic const restrict
     2900        * ?=?( DT _Atomic const restrict * restrict volatile *,
     2901         DT _Atomic const restrict * ),
     2902        * ?=?( DT _Atomic const restrict * restrict volatile *,
     2903         void const * ),
     2904        * ?=?( DT _Atomic const restrict * restrict volatile *,
     2905         forall( dtype D ) D * ),
     2906        * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,
     2907         DT _Atomic const restrict * ),
     2908        * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,
     2909         void const * ),
     2910        * ?=?( DT _Atomic const restrict * _Atomic restrict volatile *,
     2911         forall( dtype D ) D * );
     2912
     2913forall( dtype DT ) DT _Atomic const volatile
     2914        * ?=?( DT _Atomic const volatile * restrict volatile *,
     2915         DT _Atomic const volatile * ),
     2916        * ?=?( DT _Atomic const volatile * restrict volatile *,
     2917         void const volatile * ),
     2918        * ?=?( DT _Atomic const volatile * restrict volatile *,
     2919         forall( dtype D ) D * ),
     2920        * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,
     2921         DT _Atomic const volatile * ),
     2922        * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,
     2923         void const volatile * ),
     2924        * ?=?( DT _Atomic const volatile * _Atomic restrict volatile *,
     2925         forall( dtype D ) D * );
     2926
     2927forall( dtype DT ) DT _Atomic restrict volatile
     2928        * ?=?( DT _Atomic restrict volatile * restrict volatile *,
     2929         DT _Atomic restrict volatile * ),
     2930        * ?=?( DT _Atomic restrict volatile * restrict volatile *,
     2931         void volatile * ),
     2932        * ?=?( DT _Atomic restrict volatile * restrict volatile *,
     2933         forall( dtype D ) D * ),
     2934        * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,
     2935         DT _Atomic restrict volatile * ),
     2936        * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,
     2937         void volatile * ),
     2938        * ?=?( DT _Atomic restrict volatile * _Atomic restrict volatile *,
     2939         forall( dtype D ) D * );
     2940
     2941forall( dtype DT ) DT const restrict volatile
     2942        * ?=?( DT const restrict volatile * restrict volatile *,
     2943         DT const restrict volatile * ),
     2944        * ?=?( DT const restrict volatile * restrict volatile *,
     2945         void const volatile * ),
     2946        * ?=?( DT const restrict volatile * restrict volatile *,
     2947         forall( dtype D ) D * ),
     2948        * ?=?( DT const restrict volatile * _Atomic restrict volatile *,
     2949         DT const restrict volatile * ),
     2950        * ?=?( DT const restrict volatile * _Atomic restrict volatile *,
     2951         void const volatile * ),
     2952        * ?=?( DT const restrict volatile * _Atomic restrict volatile *,
     2953         forall( dtype D ) D * );
     2954
     2955forall( dtype DT ) DT _Atomic const restrict volatile
     2956        * ?=?( DT _Atomic const restrict volatile * restrict volatile *,
     2957         DT _Atomic const restrict volatile * ),
     2958        * ?=?( DT _Atomic const restrict volatile * restrict volatile *,
     2959         void const volatile * ),
     2960        * ?=?( DT _Atomic const restrict volatile * restrict volatile *,
     2961         forall( dtype D ) D * ),
     2962        * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,
     2963         DT _Atomic const restrict volatile * ),
     2964        * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,
     2965         void const volatile * ),
     2966        * ?=?( DT _Atomic const restrict volatile * _Atomic restrict volatile *,
     2967         forall( dtype D ) D * );
     2968
     2969forall( dtype DT ) void
     2970        * ?=?( void * restrict volatile *, DT * );
     2971
     2972forall( dtype DT ) void const
     2973        * ?=?( void const * restrict volatile *, DT const * );
     2974
     2975forall( dtype DT ) void volatile
     2976        * ?=?( void volatile * restrict volatile *, DT volatile * );
     2977
     2978forall( dtype DT ) void const volatile
     2979        * ?=?( void const volatile * restrict volatile *, DT const volatile * );
     2980\end{lstlisting}
     2981\begin{rationale}
     2982The pattern of overloadings for simple assignment resembles that of pointer increment and decrement,
     2983except that the polymorphic pointer assignment functions declare a \lstinline$dtype$ parameter,
     2984instead of a \lstinline$type$ parameter, because the left operand may be a pointer to an incomplete
     2985type.
     2986\end{rationale}
     2987
     2988For every complete structure or union type \lstinline$S$ there exist
     2989% Don't use predefined: keep this out of prelude.cf.
     2990\begin{lstlisting}
     2991S ?=?( S volatile *, S ), ?=?( S _Atomic volatile *, S );
     2992\end{lstlisting}
     2993
     2994For every extended integer type \lstinline$X$ there exist
     2995% Don't use predefined: keep this out of prelude.cf.
     2996\begin{lstlisting}
     2997X ?=?( X volatile *, X ), ?=?( X _Atomic volatile *, X );
     2998\end{lstlisting}
     2999
     3000For every complete enumerated type \lstinline$E$ there exist
     3001% Don't use predefined: keep this out of prelude.cf.
     3002\begin{lstlisting}
     3003E ?=?( E volatile *, int ), ?=?( E _Atomic volatile *, int );
     3004\end{lstlisting}
     3005\begin{rationale}
     3006The right-hand argument is \lstinline$int$ because enumeration constants have type \lstinline$int$.
     3007\end{rationale}
     3008
     3009\semantics
     3010The structure assignment functions provide member-wise assignment; each non-array member and each
     3011element of each array member of the right argument is assigned to the corresponding member or
     3012element of the left argument using the assignment function defined for its type. All other
     3013assignment functions have the same effect as the corresponding C assignment expression.
     3014\begin{rationale}
     3015Note that, by default, union assignment\index{deficiencies!union assignment} uses C semantics---that
     3016is, bitwise copy---even if some of the union members have programmer-defined assignment functions.
     3017\end{rationale}
     3018
     3019
     3020\subsubsection{Compound assignment}
     3021
     3022\predefined
     3023\begin{lstlisting}
     3024forall( type T ) T
     3025        * ?+=?( T * restrict volatile *, ptrdiff_t ),
     3026        * ?-=?( T * restrict volatile *, ptrdiff_t ),
     3027        * ?+=?( T * _Atomic restrict volatile *, ptrdiff_t ),
     3028        * ?-=?( T * _Atomic restrict volatile *, ptrdiff_t );
     3029
     3030forall( type T ) T _Atomic
     3031        * ?+=?( T _Atomic * restrict volatile *, ptrdiff_t ),
     3032        * ?-=?( T _Atomic * restrict volatile *, ptrdiff_t ),
     3033        * ?+=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t ),
     3034        * ?-=?( T _Atomic * _Atomic restrict volatile *, ptrdiff_t );
     3035
     3036forall( type T ) T const
     3037        * ?+=?( T const * restrict volatile *, ptrdiff_t ),
     3038        * ?-=?( T const * restrict volatile *, ptrdiff_t ),
     3039        * ?+=?( T const * _Atomic restrict volatile *, ptrdiff_t ),
     3040        * ?-=?( T const * _Atomic restrict volatile *, ptrdiff_t );
     3041
     3042forall( type T ) T restrict
     3043        * ?+=?( T restrict * restrict volatile *, ptrdiff_t ),
     3044        * ?-=?( T restrict * restrict volatile *, ptrdiff_t ),
     3045        * ?+=?( T restrict * _Atomic restrict volatile *, ptrdiff_t ),
     3046        * ?-=?( T restrict * _Atomic restrict volatile *, ptrdiff_t );
     3047
     3048forall( type T ) T volatile
     3049        * ?+=?( T volatile * restrict volatile *, ptrdiff_t ),
     3050        * ?-=?( T volatile * restrict volatile *, ptrdiff_t ),
     3051        * ?+=?( T volatile * _Atomic restrict volatile *, ptrdiff_t ),
     3052        * ?-=?( T volatile * _Atomic restrict volatile *, ptrdiff_t );
     3053
     3054forall( type T ) T _Atomic const
     3055        * ?+=?( T _Atomic const restrict volatile *, ptrdiff_t ),
     3056        * ?-=?( T _Atomic const restrict volatile *, ptrdiff_t ),
     3057        * ?+=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t ),
     3058        * ?-=?( T _Atomic const _Atomic restrict volatile *, ptrdiff_t );
     3059
     3060forall( type T ) T _Atomic restrict
     3061        * ?+=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),
     3062        * ?-=?( T _Atomic restrict * restrict volatile *, ptrdiff_t ),
     3063        * ?+=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t ),
     3064        * ?-=?( T _Atomic restrict * _Atomic restrict volatile *, ptrdiff_t );
     3065
     3066forall( type T ) T _Atomic volatile
     3067        * ?+=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),
     3068        * ?-=?( T _Atomic volatile * restrict volatile *, ptrdiff_t ),
     3069        * ?+=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t ),
     3070        * ?-=?( T _Atomic volatile * _Atomic restrict volatile *, ptrdiff_t );
     3071
     3072forall( type T ) T const restrict
     3073        * ?+=?( T const restrict * restrict volatile *, ptrdiff_t ),
     3074        * ?-=?( T const restrict * restrict volatile *, ptrdiff_t ),
     3075        * ?+=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t ),
     3076        * ?-=?( T const restrict * _Atomic restrict volatile *, ptrdiff_t );
     3077
     3078forall( type T ) T const volatile
     3079        * ?+=?( T const volatile * restrict volatile *, ptrdiff_t ),
     3080        * ?-=?( T const volatile * restrict volatile *, ptrdiff_t ),
     3081        * ?+=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t ),
     3082        * ?-=?( T const volatile * _Atomic restrict volatile *, ptrdiff_t );
     3083
     3084forall( type T ) T restrict volatile
     3085        * ?+=?( T restrict volatile * restrict volatile *, ptrdiff_t ),
     3086        * ?-=?( T restrict volatile * restrict volatile *, ptrdiff_t ),
     3087        * ?+=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
     3088        * ?-=?( T restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
     3089
     3090forall( type T ) T _Atomic const restrict
     3091        * ?+=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),
     3092        * ?-=?( T _Atomic const restrict * restrict volatile *, ptrdiff_t ),
     3093        * ?+=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t ),
     3094        * ?-=?( T _Atomic const restrict * _Atomic restrict volatile *, ptrdiff_t );
     3095
     3096forall( type T ) T _Atomic const volatile
     3097        * ?+=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),
     3098        * ?-=?( T _Atomic const volatile * restrict volatile *, ptrdiff_t ),
     3099        * ?+=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t ),
     3100        * ?-=?( T _Atomic const volatile * _Atomic restrict volatile *, ptrdiff_t );
     3101
     3102forall( type T ) T _Atomic restrict volatile
     3103        * ?+=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),
     3104        * ?-=?( T _Atomic restrict volatile * restrict volatile *, ptrdiff_t ),
     3105        * ?+=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
     3106        * ?-=?( T _Atomic restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
     3107
     3108forall( type T ) T const restrict volatile
     3109        * ?+=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),
     3110        * ?-=?( T const restrict volatile * restrict volatile *, ptrdiff_t ),
     3111        * ?+=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
     3112        * ?-=?( T const restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
     3113
     3114forall( type T ) T _Atomic const restrict volatile
     3115        * ?+=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),
     3116        * ?-=?( T _Atomic const restrict volatile * restrict volatile *, ptrdiff_t ),
     3117        * ?+=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t ),
     3118        * ?-=?( T _Atomic const restrict volatile * _Atomic restrict volatile *, ptrdiff_t );
     3119
     3120_Bool
     3121        ?*=?( _Bool volatile *, _Bool ),
     3122        ?/=?( _Bool volatile *, _Bool ),
     3123        ?+=?( _Bool volatile *, _Bool ),
     3124        ?-=?( _Bool volatile *, _Bool ),
     3125        ?%=?( _Bool volatile *, _Bool ),
     3126        ?<<=?( _Bool volatile *, int ),
     3127        ?>>=?( _Bool volatile *, int ),
     3128        ?&=?( _Bool volatile *, _Bool ),
     3129        ?^=?( _Bool volatile *, _Bool ),
     3130        ?|=?( _Bool volatile *, _Bool );
     3131char
     3132        ?*=?( char volatile *, char ),
     3133        ?/=?( char volatile *, char ),
     3134        ?+=?( char volatile *, char ),
     3135        ?-=?( char volatile *, char ),
     3136        ?%=?( char volatile *, char ),
     3137        ?<<=?( char volatile *, int ),
     3138        ?>>=?( char volatile *, int ),
     3139        ?&=?( char volatile *, char ),
     3140        ?^=?( char volatile *, char ),
     3141        ?|=?( char volatile *, char );
     3142unsigned char
     3143        ?*=?( unsigned char volatile *, unsigned char ),
     3144        ?/=?( unsigned char volatile *, unsigned char ),
     3145        ?+=?( unsigned char volatile *, unsigned char ),
     3146        ?-=?( unsigned char volatile *, unsigned char ),
     3147        ?%=?( unsigned char volatile *, unsigned char ),
     3148        ?<<=?( unsigned char volatile *, int ),
     3149        ?>>=?( unsigned char volatile *, int ),
     3150        ?&=?( unsigned char volatile *, unsigned char ),
     3151        ?^=?( unsigned char volatile *, unsigned char ),
     3152        ?|=?( unsigned char volatile *, unsigned char );
     3153signed char
     3154        ?*=?( signed char volatile *, signed char ),
     3155        ?/=?( signed char volatile *, signed char ),
     3156        ?+=?( signed char volatile *, signed char ),
     3157        ?-=?( signed char volatile *, signed char ),
     3158        ?%=?( signed char volatile *, signed char ),
     3159        ?<<=?( signed char volatile *, int ),
     3160        ?>>=?( signed char volatile *, int ),
     3161        ?&=?( signed char volatile *, signed char ),
     3162        ?^=?( signed char volatile *, signed char ),
     3163        ?|=?( signed char volatile *, signed char );
     3164short int
     3165        ?*=?( short int volatile *, short int ),
     3166        ?/=?( short int volatile *, short int ),
     3167        ?+=?( short int volatile *, short int ),
     3168        ?-=?( short int volatile *, short int ),
     3169        ?%=?( short int volatile *, short int ),
     3170        ?<<=?( short int volatile *, int ),
     3171        ?>>=?( short int volatile *, int ),
     3172        ?&=?( short int volatile *, short int ),
     3173        ?^=?( short int volatile *, short int ),
     3174        ?|=?( short int volatile *, short int );
     3175unsigned short int
     3176        ?*=?( unsigned short int volatile *, unsigned short int ),
     3177        ?/=?( unsigned short int volatile *, unsigned short int ),
     3178        ?+=?( unsigned short int volatile *, unsigned short int ),
     3179        ?-=?( unsigned short int volatile *, unsigned short int ),
     3180        ?%=?( unsigned short int volatile *, unsigned short int ),
     3181        ?<<=?( unsigned short int volatile *, int ),
     3182        ?>>=?( unsigned short int volatile *, int ),
     3183        ?&=?( unsigned short int volatile *, unsigned short int ),
     3184        ?^=?( unsigned short int volatile *, unsigned short int ),
     3185        ?|=?( unsigned short int volatile *, unsigned short int );
     3186int
     3187        ?*=?( int volatile *, int ),
     3188        ?/=?( int volatile *, int ),
     3189        ?+=?( int volatile *, int ),
     3190        ?-=?( int volatile *, int ),
     3191        ?%=?( int volatile *, int ),
     3192        ?<<=?( int volatile *, int ),
     3193        ?>>=?( int volatile *, int ),
     3194        ?&=?( int volatile *, int ),
     3195        ?^=?( int volatile *, int ),
     3196        ?|=?( int volatile *, int );
     3197unsigned int
     3198        ?*=?( unsigned int volatile *, unsigned int ),
     3199        ?/=?( unsigned int volatile *, unsigned int ),
     3200        ?+=?( unsigned int volatile *, unsigned int ),
     3201        ?-=?( unsigned int volatile *, unsigned int ),
     3202        ?%=?( unsigned int volatile *, unsigned int ),
     3203        ?<<=?( unsigned int volatile *, int ),
     3204        ?>>=?( unsigned int volatile *, int ),
     3205        ?&=?( unsigned int volatile *, unsigned int ),
     3206        ?^=?( unsigned int volatile *, unsigned int ),
     3207        ?|=?( unsigned int volatile *, unsigned int );
     3208long int
     3209        ?*=?( long int volatile *, long int ),
     3210        ?/=?( long int volatile *, long int ),
     3211        ?+=?( long int volatile *, long int ),
     3212        ?-=?( long int volatile *, long int ),
     3213        ?%=?( long int volatile *, long int ),
     3214        ?<<=?( long int volatile *, int ),
     3215        ?>>=?( long int volatile *, int ),
     3216        ?&=?( long int volatile *, long int ),
     3217        ?^=?( long int volatile *, long int ),
     3218        ?|=?( long int volatile *, long int );
     3219unsigned long int
     3220        ?*=?( unsigned long int volatile *, unsigned long int ),
     3221        ?/=?( unsigned long int volatile *, unsigned long int ),
     3222        ?+=?( unsigned long int volatile *, unsigned long int ),
     3223        ?-=?( unsigned long int volatile *, unsigned long int ),
     3224        ?%=?( unsigned long int volatile *, unsigned long int ),
     3225        ?<<=?( unsigned long int volatile *, int ),
     3226        ?>>=?( unsigned long int volatile *, int ),
     3227        ?&=?( unsigned long int volatile *, unsigned long int ),
     3228        ?^=?( unsigned long int volatile *, unsigned long int ),
     3229        ?|=?( unsigned long int volatile *, unsigned long int );
     3230long long int
     3231        ?*=?( long long int volatile *, long long int ),
     3232        ?/=?( long long int volatile *, long long int ),
     3233        ?+=?( long long int volatile *, long long int ),
     3234        ?-=?( long long int volatile *, long long int ),
     3235        ?%=?( long long int volatile *, long long int ),
     3236        ?<<=?( long long int volatile *, int ),
     3237        ?>>=?( long long int volatile *, int ),
     3238        ?&=?( long long int volatile *, long long int ),
     3239        ?^=?( long long int volatile *, long long int ),
     3240        ?|=?( long long int volatile *, long long int );
     3241unsigned long long int
     3242        ?*=?( unsigned long long int volatile *, unsigned long long int ),
     3243        ?/=?( unsigned long long int volatile *, unsigned long long int ),
     3244        ?+=?( unsigned long long int volatile *, unsigned long long int ),
     3245        ?-=?( unsigned long long int volatile *, unsigned long long int ),
     3246        ?%=?( unsigned long long int volatile *, unsigned long long int ),
     3247        ?<<=?( unsigned long long int volatile *, int ),
     3248        ?>>=?( unsigned long long int volatile *, int ),
     3249        ?&=?( unsigned long long int volatile *, unsigned long long int ),
     3250        ?^=?( unsigned long long int volatile *, unsigned long long int ),
     3251        ?|=?( unsigned long long int volatile *, unsigned long long int );
     3252float
     3253        ?*=?( float volatile *, float ),
     3254        ?/=?( float volatile *, float ),
     3255        ?+=?( float volatile *, float ),
     3256        ?-=?( float volatile *, float );
     3257double
     3258        ?*=?( double volatile *, double ),
     3259        ?/=?( double volatile *, double ),
     3260        ?+=?( double volatile *, double ),
     3261        ?-=?( double volatile *, double );
     3262long double
     3263        ?*=?( long double volatile *, long double ),
     3264        ?/=?( long double volatile *, long double ),
     3265        ?+=?( long double volatile *, long double ),
     3266        ?-=?( long double volatile *, long double );
     3267_Complex float
     3268        ?*=?( _Complex float volatile *, _Complex float ),
     3269        ?/=?( _Complex float volatile *, _Complex float ),
     3270        ?+=?( _Complex float volatile *, _Complex float ),
     3271        ?-=?( _Complex float volatile *, _Complex float );
     3272_Complex double
     3273        ?*=?( _Complex double volatile *, _Complex double ),
     3274        ?/=?( _Complex double volatile *, _Complex double ),
     3275        ?+=?( _Complex double volatile *, _Complex double ),
     3276        ?-=?( _Complex double volatile *, _Complex double );
     3277_Complex long double
     3278        ?*=?( _Complex long double volatile *, _Complex long double ),
     3279        ?/=?( _Complex long double volatile *, _Complex long double ),
     3280        ?+=?( _Complex long double volatile *, _Complex long double ),
     3281        ?-=?( _Complex long double volatile *, _Complex long double );
     3282\end{lstlisting}
     3283
     3284For every extended integer type \lstinline$X$ there exist
     3285% Don't use predefined: keep this out of prelude.cf.
     3286\begin{lstlisting}
     3287?*=?( X volatile *, X ),
     3288?/=?( X volatile *, X ),
     3289?+=?( X volatile *, X ),
     3290?-=?( X volatile *, X ),
     3291?%=?( X volatile *, X ),
     3292?<<=?( X volatile *, int ),
     3293?>>=?( X volatile *, int ),
     3294?&=?( X volatile *, X ),
     3295?^=?( X volatile *, X ),
     3296?|=?( X volatile *, X );
     3297\end{lstlisting}
     3298
     3299For every complete enumerated type \lstinline$E$ there exist
     3300% Don't use predefined: keep this out of prelude.cf.
     3301\begin{lstlisting}
     3302?*=?( E volatile *, E ),
     3303?/=?( E volatile *, E ),
     3304?+=?( E volatile *, E ),
     3305?-=?( E volatile *, E ),
     3306?%=?( E volatile *, E ),
     3307?<<=?( E volatile *, int ),
     3308?>>=?( E volatile *, int ),
     3309?&=?( E volatile *, E ),
     3310?^=?( E volatile *, E ),
     3311?|=?( E volatile *, E );
     3312\end{lstlisting}
     3313
     3314
     3315\subsection{Comma operator}
     3316
     3317\begin{syntax}
     3318\lhs{expression}
     3319\rhs \nonterm{assignment-expression}
     3320\rhs \nonterm{expression} \lstinline$,$ \nonterm{assignment-expression}
     3321\end{syntax}
     3322
     3323\semantics
     3324In the comma expression ``\lstinline$a, b$'', the first operand is interpreted as
     3325``\lstinline$( void )(a)$'', which shall be unambiguous\index{ambiguous interpretation}. The
     3326interpretations of the expression are the interpretations of the second operand.
     3327
     3328
     3329\section{Constant expressions}
     3330
     3331
     3332\section{Declarations}
     3333
     3334\begin{syntax}
     3335\oldlhs{declaration}
     3336\rhs \nonterm{type-declaration}
     3337\rhs \nonterm{spec-definition}
     3338\end{syntax}
     3339
     3340\constraints
     3341If an identifier has \Index{no linkage}, there shall be no more than one declaration of the
     3342identifier ( in a declarator or type specifier ) with compatible types in the same scope and in the
     3343same name space, except that:
     3344\begin{itemize}
     3345\item
     3346a typedef name may be redefined to denote the same type as it currently does, provided that type is
     3347not a variably modified type;
     3348\item
     3349tags may be redeclared as specified in section 6.7.2.3 of the {\c11} standard.
     3350\end{itemize}
     3351\begin{rationale}
     3352This constraint adds the phrase ``with compatible types'' to the {\c11} constraint, to allow
     3353overloading.
     3354\end{rationale}
     3355
     3356An identifier declared by a type declaration shall not be redeclared as a parameter in a function
     3357definition whose declarator includes an identifier list.
     3358\begin{rationale}
     3359This restriction echos {\c11}'s ban on the redeclaration of typedef names as parameters. This
     3360avoids an ambiguity between old-style function declarations and new-style function prototypes:
     3361\begin{lstlisting}
     3362void f( Complex,        // ... 3000 characters ...
     3363void g( Complex,        // ... 3000 characters ...
     3364int Complex; { ... }
     3365\end{lstlisting}
     3366Without the rule, \lstinline$Complex$ would be a type in the first case, and a parameter name in the
     3367second.
     3368\end{rationale}
     3369
     3370
     3371\setcounter{subsection}{1}
     3372\subsection{Type specifiers}
     3373
     3374\begin{syntax}
     3375\oldlhs{type-specifier}
     3376\rhs \nonterm{forall-specifier}
     3377\end{syntax}
     3378
     3379\semantics
     3380Forall specifiers are discussed in \VRef{forall}.
     3381
     3382
     3383\subsubsection{Structure and union specifiers}
     3384
     3385\semantics
     3386\CFA extends the {\c11} definition of \define{anonymous structure} to include structure
     3387specifiers with tags, and extends the {\c11} definition of \define{anonymous union} to include union
     3388specifiers with tags.
     3389\begin{rationale}
     3390This extension imitates an extension in the Plan 9 C compiler \cite{Thompson90new}.
     3391\end{rationale}
     3392
     3393\examples
     3394\begin{lstlisting}
     3395struct point {@\impl{point}@
     3396        int x, y;
     3397};
     3398struct color_point {@\impl{color_point}@
     3399        enum { RED, BLUE, GREEN } color;
     3400        struct point;
     3401};
     3402struct color_point cp;
     3403cp.x = 0;
     3404cp.color = RED;
     3405
     3406struct literal {@\impl{literal}@
     3407        enum { NUMBER, STRING } tag;
     3408        union {
     3409         double n;
     3410         char *s;
     3411        };
     3412};
     3413struct literal *next;
     3414int length;
     3415extern int strlen( const char * );
     3416...
     3417if ( next->tag == STRING ) length = strlen( next->s );
     3418\end{lstlisting}
     3419
     3420
     3421\setcounter{subsubsection}{4}
     3422\subsubsection{Forall specifiers}
     3423\label{forall}
     3424
     3425\begin{syntax}
     3426\lhs{forall-specifier}
     3427\rhs \lstinline$forall$ \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
     3428\end{syntax}
     3429
     3430\begin{comment}
     3431\constraints
     3432If the \nonterm{declaration-specifiers} of a declaration that contains a \nonterm{forall-specifier}
     3433declares a structure or union tag, the types of the members of the structure or union shall not use
     3434any of the type identifiers declared by the \nonterm{type-parameter-list}.
     3435\begin{rationale}
     3436This sort of declaration is illegal because the scope of the type identifiers ends at the end of the
     3437declaration, but the scope of the structure tag does not.
     3438\begin{lstlisting}
     3439forall( type T ) struct Pair { T a, b; } mkPair( T, T ); // illegal
     3440\end{lstlisting}
     3441If an instance of \lstinline$struct Pair$ was declared later in the current scope, what would the
     3442members' type be?
     3443\end{rationale}
     3444\end{comment}
     3445
     3446\semantics
     3447The \nonterm{type-parameter-list}s and assertions of the \nonterm{forall-specifier}s declare type
     3448identifiers, function and object identifiers with \Index{no linkage}.
     3449
     3450If, in the declaration ``\lstinline$T D$'', \lstinline$T$ contains \nonterm{forall-specifier}s and
     3451\lstinline$D$ has the form
     3452\begin{lstlisting}
     3453D( @\normalsize\nonterm{parameter-type-list}@ )
     3454\end{lstlisting}
     3455then a type identifier declared by one of the \nonterm{forall-specifier}s is an \define{inferred
     3456parameter} of the function declarator if and only if it is not an inferred parameter of a function
     3457declarator in \lstinline$D$, and it is used in the type of a parameter in the following
     3458\nonterm{type-parameter-list} or it and an inferred parameter are used as arguments of a
     3459\Index{specification} in one of the \nonterm{forall-specifier}s. The identifiers declared by
     3460assertions that use an inferred parameter of a function declarator are \Index{assertion parameter}s
     3461of that function declarator.
     3462
     3463\begin{comment}
     3464\begin{rationale}
     3465Since every inferred parameter is used by some parameter, inference can be understood as a single
     3466bottom-up pass over the expression tree, that only needs to apply local reasoning at each node.
     3467
     3468If this restriction were lifted, it would be possible to write
     3469\begin{lstlisting}
     3470forall( type T ) T * alloc( void );@\use{alloc}@
     3471int *p = alloc();
     3472\end{lstlisting}
     3473Here \lstinline$alloc()$ would receive \lstinline$int$ as an inferred argument, and return an
     3474\lstinline$int *$. In general, if a call to \lstinline$alloc()$ is a subexpression of an expression
     3475involving polymorphic functions and overloaded identifiers, there could be considerable distance
     3476between the call and the subexpression that causes \lstinline$T$ to be bound.
     3477
     3478With the current restriction, \lstinline$alloc()$ must be given an argument that determines
     3479\lstinline$T$:
     3480\begin{lstlisting}
     3481forall( type T ) T * alloc( T initial_value );@\use{alloc}@
     3482\end{lstlisting}
     3483\end{rationale}
     3484\end{comment}
     3485
     3486If a function declarator is part of a function definition, its inferred parameters and assertion
     3487parameters have \Index{block scope}; otherwise, identifiers declared by assertions have a
     3488\define{declaration scope}, which terminates at the end of the \nonterm{declaration}.
     3489
     3490A function type that has at least one inferred parameter is a \define{polymorphic function} type.
     3491Function types with no inferred parameters are \define{monomorphic function} types. One function
     3492type is \define{less polymorphic} than another if it has fewer inferred parameters, or if it has the
     3493same number of inferred parameters and fewer of its explicit parameters have types that depend on an
     3494inferred parameter.
     3495
     3496The names of inferred parameters and the order of identifiers in forall specifiers are not relevant
     3497to polymorphic function type compatibility. Let $f$ and $g$ be two polymorphic function types with
     3498the same number of inferred parameters, and let $f_i$ and $g_i$ be the inferred parameters of $f$
     3499and $g$ in their order of occurance in the function types' \nonterm{parameter-type-list}s. Let $f'$
     3500be $f$ with every occurrence of $f_i$ replaced by $g_i$, for all $i$. Then $f$ and $g$ are
     3501\Index{compatible type}s if $f'$'s and $g$'s return types and parameter lists are compatible, and if
     3502for every assertion parameter of $f'$ there is an assertion parameter in $g$ with the same
     3503identifier and compatible type, and vice versa.
     3504
     3505\examples
     3506Consider these analogous monomorphic and polymorphic declarations.
     3507\begin{lstlisting}
     3508int fi( int );
     3509forall( type T ) T fT( T );
     3510\end{lstlisting}
     3511\lstinline$fi()$ takes an \lstinline$int$ and returns an \lstinline$int$. \lstinline$fT()$ takes a
     3512\lstinline$T$ and returns a \lstinline$T$, for any type \lstinline$T$.
     3513\begin{lstlisting}
     3514int (*pfi )( int ) = fi;
     3515forall( type T ) T (*pfT )( T ) = fT;
     3516\end{lstlisting}
     3517\lstinline$pfi$ and \lstinline$pfT$ are pointers to functions. \lstinline$pfT$ is not
     3518polymorphic, but the function it points at is.
     3519\begin{lstlisting}
     3520int (*fvpfi( void ))( int ) {
     3521        return pfi;
     3522}
     3523forall( type T ) T (*fvpfT( void ))( T ) {
     3524        return pfT;
     3525}
     3526\end{lstlisting}
     3527\lstinline$fvpfi()$ and \lstinline$fvpfT()$ are functions taking no arguments and returning pointers
     3528to functions. \lstinline$fvpfT()$ is monomorphic, but the function that its return value points
     3529at is polymorphic.
     3530\begin{lstlisting}
     3531forall( type T ) int ( *fTpfi( T ) )( int );
     3532forall( type T ) T ( *fTpfT( T ) )( T );
     3533forall( type T, type U ) U ( *fTpfU( T ) )( U );
     3534\end{lstlisting}
     3535\lstinline$fTpfi()$ is a polymorphic function that returns a pointer to a monomorphic function
     3536taking an integer and returning an integer. It could return \lstinline$pfi$. \lstinline$fTpfT()$
     3537is subtle: it is a polymorphic function returning a \emph{monomorphic} function taking and returning
     3538\lstinline$T$, where \lstinline$T$ is an inferred parameter of \lstinline$fTpfT()$. For instance,
     3539in the expression ``\lstinline$fTpfT(17)$'', \lstinline$T$ is inferred to be \lstinline$int$, and
     3540the returned value would have type \lstinline$int ( * )( int )$. ``\lstinline$fTpfT(17)(13)$'' and
     3541``\lstinline$fTpfT("yes")("no")$'' are legal, but ``\lstinline$fTpfT(17)("no")$'' is illegal.
     3542\lstinline$fTpfU()$ is polymorphic ( in type \lstinline$T$), and returns a pointer to a function that
     3543is polymorphic ( in type \lstinline$U$). ``\lstinline$f5(17)("no")$'' is a legal expression of type
     3544\lstinline$char *$.
     3545\begin{lstlisting}
     3546forall( type T, type U, type V ) U * f( T *, U, V * const );
     3547forall( type U, type V, type W ) U * g( V *, U, W * const );
     3548\end{lstlisting}
     3549The functions \lstinline$f()$ and \lstinline$g()$ have compatible types. Let \(f\) and \(g\) be
     3550their types; then \(f_1\) = \lstinline$T$, \(f_2\) = \lstinline$U$, \(f_3\) = \lstinline$V$, \(g_1\)
     3551= \lstinline$V$, \(g_2\) = \lstinline$U$, and \(g_3\) = \lstinline$W$. Replacing every \(f_i\)
     3552by \(g_i\) in \(f\) gives
     3553\begin{lstlisting}
     3554forall( type V, type U, type W ) U * f( V *, U, W * const );
     3555\end{lstlisting}
     3556which has a return type and parameter list that is compatible with \(g\).
     3557\begin{rationale}
     3558The word ``\lstinline$type$'' in a forall specifier is redundant at the moment, but I want to leave
     3559room for inferred parameters of ordinary types in case parameterized types get added one day.
     3560
     3561Even without parameterized types, I might try to allow
     3562\begin{lstlisting}
     3563forall( int n ) int sum( int vector[n] );
     3564\end{lstlisting}
     3565but C currently rewrites array parameters as pointer parameters, so the effects of such a change
     3566require more thought.
     3567\end{rationale}
     3568
     3569\begin{rationale}
     3570A polymorphic declaration must do two things: it must introduce type parameters, and it must apply
     3571assertions to those types. Adding this to existing C declaration syntax and semantics was delicate,
     3572and not entirely successful.
     3573
     3574C depends on declaration-before-use, so a forall specifier must introduce type names before they can
     3575be used in the declaration specifiers. This could be done by making the forall specifier part of
     3576the declaration specifiers, or by making it a new introductory clause of declarations.
     3577
     3578Assertions are also part of polymorphic function types, because it must be clear which functions
     3579have access to the assertion parameters declared by the assertions. All attempts to put assertions
     3580inside an introductory clause produced complex semantics and confusing code. Building them into the
     3581declaration specifiers could be done by placing them in the function's parameter list, or in a
     3582forall specifier that is a declaration specifier. Assertions are also used with type parameters of
     3583specifications, and by type declarations. For consistency's sake it seems best to attach assertions
     3584to the type declarations in forall specifiers, which means that forall specifiers must be
     3585declaration specifiers.
     3586\end{rationale}
     3587%HERE
     3588
     3589
     3590\subsection{Type qualifiers}
     3591
     3592\CFA defines a new type qualifier \lstinline$lvalue$\impl{lvalue}\index{lvalue}.
     3593\begin{syntax}
     3594\oldlhs{type-qualifier}
     3595\rhs \lstinline$lvalue$
     3596\end{syntax}
     3597
     3598\constraints
     3599\lstinline$restrict$\index{register@{\lstinline$restrict$}} Types other than type parameters and
     3600pointer types whose referenced type is an object type shall not be restrict-qualified.
     3601
     3602\semantics
     3603An object's type may be a restrict-qualified type parameter. \lstinline$restrict$ does not
     3604establish any special semantics in that case.
     3605
     3606\begin{rationale}
     3607\CFA loosens the constraint on the restrict qualifier so that restrict-qualified pointers may be
     3608passed to polymorphic functions.
     3609\end{rationale}
     3610
     3611\lstinline$lvalue$ may be used to qualify the return type of a function type. Let \lstinline$T$ be
     3612an unqualified version of a type; then the result of calling a function with return type
     3613\lstinline$lvalue T$ is a \Index{modifiable lvalue} of type \lstinline$T$.
     3614\lstinline$const$\use{const} and \lstinline$volatile$\use{volatile} qualifiers may also be added to
     3615indicate that the function result is a constant or volatile lvalue.
     3616\begin{rationale}
     3617The \lstinline$const$ and \lstinline$volatile$ qualifiers can only be sensibly used to qualify the
     3618return type of a function if the \lstinline$lvalue$ qualifier is also used.
     3619\end{rationale}
     3620
     3621An {lvalue}-qualified type may be used in a \Index{cast expression} if the operand is an lvalue; the
     3622result of the expression is an lvalue.
     3623
     3624\begin{rationale}
     3625\lstinline$lvalue$ provides some of the functionality of {\CC}'s ``\lstinline$T&$'' ( reference to
     3626object of type \lstinline$T$) type. Reference types have four uses in {\CC}.
     3627\begin{itemize}
     3628\item
     3629They are necessary for user-defined operators that return lvalues, such as ``subscript'' and
     3630``dereference''.
     3631
     3632\item
     3633A reference can be used to define an alias for a complicated lvalue expression, as a way of getting
     3634some of the functionality of the Pascal \lstinline$with$ statement. The following {\CC} code gives
     3635an example.
     3636\begin{lstlisting}
     3637{
     3638        char &code = long_name.some_field[i].data->code;
     3639        code = toupper( code );
     3640}
     3641\end{lstlisting}
     3642This is not very useful.
     3643
     3644\item
     3645A reference parameter can be used to allow a function to modify an argument without forcing the
     3646caller to pass the address of the argument. This is most useful for user-defined assignment
     3647operators. In {\CC}, plain assignment is done by a function called ``\lstinline$operator=$'', and
     3648the two expressions
     3649\begin{lstlisting}
     3650a = b;
     3651operator=( a, b );
     3652\end{lstlisting}
     3653are equivalent. If \lstinline$a$ and \lstinline$b$ are of type \lstinline$T$, then the first
     3654parameter of \lstinline$operator=$ must have type ``\lstinline$T&$''. It cannot have type
     3655\lstinline$T$, because then assignment couldn't alter the variable, and it can't have type
     3656``\lstinline$T *$'', because the assignment would have to be written ``\lstinline$&a = b;$''.
     3657
     3658In the case of user-defined operators, this could just as well be handled by using pointer types and
     3659by changing the rewrite rules so that ``\lstinline$a = b;$'' is equivalent to
     3660``\lstinline$operator=(&( a), b )$''. Reference parameters of ``normal'' functions are Bad Things,
     3661because they remove a useful property of C function calls: an argument can only be modified by a
     3662function if it is preceded by ``\lstinline$&$''.
     3663
     3664\item
     3665References to \Index{const-qualified} types can be used instead of value parameters.  Given the
     3666{\CC} function call ``\lstinline$fiddle( a_thing )$'', where the type of \lstinline$a_thing$ is
     3667\lstinline$Thing$, the type of \lstinline$fiddle$ could be either of
     3668\begin{lstlisting}
     3669void fiddle( Thing );
     3670void fiddle( const Thing & );
     3671\end{lstlisting}
     3672If the second form is used, then constructors and destructors are not invoked to create a temporary
     3673variable at the call site ( and it is bad style for the caller to make any assumptions about such
     3674things), and within \lstinline$fiddle$ the parameter is subject to the usual problems caused by
     3675aliases. The reference form might be chosen for efficiency's sake if \lstinline$Thing$s are too
     3676large or their constructors or destructors are too expensive. An implementation may switch between
     3677them without causing trouble for well-behaved clients. This leaves the implementor to define ``too
     3678large'' and ``too expensive''.
     3679
     3680I propose to push this job onto the compiler by allowing it to implement
     3681\begin{lstlisting}
     3682void fiddle( const volatile Thing );
     3683\end{lstlisting}
     3684with call-by-reference. Since it knows all about the size of \lstinline$Thing$s and the parameter
     3685passing mechanism, it should be able to come up with a better definition of ``too large'', and may
     3686be able to make a good guess at ``too expensive''.
     3687\end{itemize}
     3688
     3689In summary, since references are only really necessary for returning lvalues, I'll only provide
     3690lvalue functions.
     3691\end{rationale}
     3692
     3693
     3694\setcounter{subsection}{8}
     3695\subsection{Initialization}
     3696
     3697An expression that is used as an \nonterm{initializer} is treated as being cast to the type of the
     3698object being initialized. An expression used in an \nonterm{initializer-list} is treated as being
     3699cast to the type of the aggregate member that it initializes. In either case the cast must have a
     3700single unambiguous \Index{interpretation}.
     3701
     3702
     3703\setcounter{subsection}{10}
     3704\subsection{Specification definitions}
     3705
     3706\begin{syntax}
     3707\lhs{spec-definition}
     3708\rhs \lstinline$spec$ \nonterm{identifier}
     3709        \lstinline$($ \nonterm{type-parameter-list} \lstinline$)$
     3710        \lstinline${$ \nonterm{spec-declaration-list}\opt \lstinline$}$
     3711\lhs{spec-declaration-list}
     3712\rhs \nonterm{spec-declaration} \lstinline$;$
     3713\rhs \nonterm{spec-declaration-list} \nonterm{spec-declaration} \lstinline$;$
     3714\lhs{spec-declaration}
     3715\rhs \nonterm{specifier-qualifier-list} \nonterm{declarator-list}
     3716\lhs{declarator-list}
     3717\rhs \nonterm{declarator}
     3718\rhs \nonterm{declarator-list} \lstinline$,$ \nonterm{declarator}
     3719\end{syntax}
     3720\begin{rationale}
     3721The declarations allowed in a specification are much the same as those allowed in a structure,
     3722except that bit fields are not allowed, and \Index{incomplete type}s and function types are allowed.
     3723\end{rationale}
     3724
     3725\semantics
     3726A \define{specification definition} defines a name for a \define{specification}: a parameterized
     3727collection of object and function declarations.
     3728
     3729The declarations in a specification consist of the declarations in the
     3730\nonterm{spec-declaration-list} and declarations produced by any assertions in the
     3731\nonterm{spec-parameter-list}. If the collection contains two declarations that declare the same
     3732identifier and have compatible types, they are combined into one declaration with the composite type
     3733constructed from the two types.
     3734
     3735
     3736\subsubsection{Assertions}
     3737
     3738\begin{syntax}
     3739\lhs{assertion-list}
     3740\rhs \nonterm{assertion}
     3741\rhs \nonterm{assertion-list} \nonterm{assertion}
     3742\lhs{assertion}
     3743\rhs \lstinline$|$ \nonterm{identifier} \lstinline$($ \nonterm{type-name-list} \lstinline$)$
     3744\rhs \lstinline$|$ \nonterm{spec-declaration}
     3745\lhs{type-name-list}
     3746\rhs \nonterm{type-name}
     3747\rhs \nonterm{type-name-list} \lstinline$,$ \nonterm{type-name}
     3748\end{syntax}
     3749
     3750\constraints
     3751The \nonterm{identifier} in an assertion that is not a \nonterm{spec-declaration} shall be the name
     3752of a specification. The \nonterm{type-name-list} shall contain one \nonterm{type-name} argument for
     3753each \nonterm{type-parameter} in that specification's \nonterm{spec-parameter-list}. If the
     3754\nonterm{type-parameter} uses type-class \lstinline$type$\use{type}, the argument shall be the type
     3755name of an \Index{object type}; if it uses \lstinline$dtype$, the argument shall be the type name of
     3756an object type or an \Index{incomplete type}; and if it uses \lstinline$ftype$, the argument shall
     3757be the type name of a \Index{function type}.
     3758
     3759\semantics
     3760An \define{assertion} is a declaration of a collection of objects and functions, called
     3761\define{assertion parameters}.
     3762
     3763The assertion parameters produced by an assertion that applies the name of a specification to type
     3764arguments are found by taking the declarations specified in the specification and treating each of
     3765the specification's parameters as a synonym for the corresponding \nonterm{type-name} argument.
     3766
     3767The collection of assertion parameters produced by the \nonterm{assertion-list} are found by
     3768combining the declarations produced by each assertion. If the collection contains two declarations
     3769that declare the same identifier and have compatible types, they are combined into one declaration
     3770with the \Index{composite type} constructed from the two types.
     3771
     3772\examples
     3773\begin{lstlisting}
     3774forall( type T | T ?*?( T, T ))@\use{?*?}@
     3775T square( T val ) {@\impl{square}@
     3776        return val + val;
     3777}
     3778
     3779context summable( type T ) {@\impl{summable}@
     3780        T ?+=?( T *, T );@\use{?+=?}@
     3781        const T 0;@\use{0}@
     3782};
     3783context list_of( type List, type Element ) {@\impl{list_of}@
     3784        Element car( List );
     3785        List cdr( List );
     3786        List cons( Element, List );
     3787        List nil;
     3788        int is_nil( List );
     3789};
     3790context sum_list( type List, type Element | summable( Element ) | list_of( List, Element ) ) {};
     3791\end{lstlisting}
     3792\lstinline$sum_list$ contains seven declarations, which describe a list whose elements can be added
     3793up. The assertion ``\lstinline$|sum_list( i_list, int )$''\use{sum_list} produces the assertion
     3794parameters
     3795\begin{lstlisting}
     3796int ?+=?( int *, int );
     3797const int 0;
     3798int car( i_list );
     3799i_list cdr( i_list );
     3800i_list cons( int, i_list );
     3801i_list nil;
     3802int is_nil;
     3803\end{lstlisting}
     3804
     3805
     3806\subsection{Type declarations}
     3807
     3808\begin{syntax}
     3809\lhs{type-parameter-list}
     3810\rhs \nonterm{type-parameter}
     3811\rhs \nonterm{type-parameter-list} \lstinline$,$ \nonterm{type-parameter}
     3812\lhs{type-parameter}
     3813\rhs \nonterm{type-class} \nonterm{identifier} \nonterm{assertion-list}\opt
     3814\lhs{type-class}
     3815\rhs \lstinline$type$
     3816\rhs \lstinline$dtype$
     3817\rhs \lstinline$ftype$
     3818\lhs{type-declaration}
     3819\rhs \nonterm{storage-class-specifier}\opt \lstinline$type$ \nonterm{type-declarator-list} \verb|;|
     3820\lhs{type-declarator-list}
     3821\rhs \nonterm{type-declarator}
     3822\rhs \nonterm{type-declarator-list} \lstinline$,$ \nonterm{type-declarator}
     3823\lhs{type-declarator}
     3824\rhs \nonterm{identifier} \nonterm{assertion-list}\opt \lstinline$=$ \nonterm{type-name}
     3825\rhs \nonterm{identifier} \nonterm{assertion-list}\opt
     3826\end{syntax}
     3827
     3828\constraints
     3829If a type declaration has block scope, and the declared identifier has external or internal linkage,
     3830the declaration shall have no initializer for the identifier.
     3831
     3832\semantics
     3833A \nonterm{type-parameter} or a \nonterm{type-declarator} declares an identifier to be a \Index{type
     3834name} for a type incompatible with all other types.
     3835
     3836An identifier declared by a \nonterm{type-parameter} has \Index{no linkage}. Identifiers declared
     3837with type-class \lstinline$type$\use{type} are \Index{object type}s; those declared with type-class
     3838\lstinline$dtype$\use{dtype} are \Index{incomplete type}s; and those declared with type-class
     3839\lstinline$ftype$\use{ftype} are \Index{function type}s. The identifier has \Index{block scope} that
     3840terminates at the end of the \nonterm{spec-declaration-list} or polymorphic function that contains
     3841the \nonterm{type-parameter}.
     3842
     3843A \nonterm{type-declarator} with an \Index{initializer} is a \define{type definition}.  The declared
     3844identifier is an \Index{incomplete type} within the initializer, and an \Index{object type} after
     3845the end of the initializer. The type in the initializer is called the \define{implementation
     3846  type}. Within the scope of the declaration, \Index{implicit conversion}s can be performed between
     3847the defined type and the implementation type, and between pointers to the defined type and pointers
     3848to the implementation type.
     3849
     3850A type declaration without an \Index{initializer} and without a \Index{storage-class specifier} or
     3851with storage-class specifier \lstinline$static$\use{static} defines an \Index{incomplete type}. If a
     3852\Index{translation unit} or \Index{block} contains one or more such declarations for an identifier,
     3853it must contain exactly one definition of the identifier ( but not in an enclosed block, which would
     3854define a new type known only within that block).
     3855\begin{rationale}
     3856Incomplete type declarations allow compact mutually-recursive types.
     3857\begin{lstlisting}
     3858type t1; // Incomplete type declaration.
     3859type t2 = struct { t1 * p; ... };
     3860type t1 = struct { t2 * p; ... };
     3861\end{lstlisting}
     3862Without them, mutual recursion could be handled by declaring mutually recursive structures, then
     3863initializing the types to those structures.
     3864\begin{lstlisting}
     3865struct s1;
     3866type t2 = struct s2 { struct s1 * p; ... };
     3867type t1 = struct s1 { struct s2 * p; ... };
     3868\end{lstlisting}
     3869This introduces extra names, and may force the programmer to cast between the types and their
     3870implementations.
     3871\end{rationale}
     3872
     3873A type declaration without an initializer and with \Index{storage-class specifier}
     3874\lstinline$extern$\use{extern} is an \define{opaque type declaration}. Opaque types are
     3875\Index{object type}s. An opaque type is not a \nonterm{constant-expression}; neither is a structure
     3876or union that has a member whose type is not a \nonterm{constant-expression}.  Every other
     3877\Index{object type} is a \nonterm{constant-expression}. Objects with static storage duration shall
     3878be declared with a type that is a \nonterm{constant-expression}.
     3879\begin{rationale}
     3880Type declarations can declare identifiers with external linkage, whereas typedef declarations
     3881declare identifiers that only exist within a translation unit. These opaque types can be used in
     3882declarations, but the implementation of the type is not visible.
     3883
     3884Static objects can not have opaque types because space for them would have to be allocated at
     3885program start-up. This is a deficiency\index{deficiencies!static opaque objects}, but I don't want
     3886to deal with ``module initialization'' code just now.
     3887\end{rationale}
     3888
     3889An \Index{incomplete type} which is not a qualified version\index{qualified type} of a type is a
     3890value of \Index{type-class} \lstinline$dtype$. An object type\index{object types} which is not a
     3891qualified version of a type is a value of type-classes \lstinline$type$ and \lstinline$dtype$. A
     3892\Index{function type} is a value of type-class \lstinline$ftype$.
     3893\begin{rationale}
     3894Syntactically, a type value is a \nonterm{type-name}, which is a declaration for an object which
     3895omits the identifier being declared.
     3896
     3897Object types are precisely the types that can be instantiated. Type qualifiers are not included in
     3898type values because the compiler needs the information they provide at compile time to detect
     3899illegal statements or to produce efficient machine instructions. For instance, the code that a
     3900compiler must generate to manipulate an object that has volatile-qualified type may be different
     3901from the code to manipulate an ordinary object.
     3902
     3903Type qualifiers are a weak point of C's type system. Consider the standard library function
     3904\lstinline$strchr()$ which, given a string and a character, returns a pointer to the first
     3905occurrence of the character in the string.
     3906\begin{lstlisting}
     3907char *strchr( const char *s, int c ) {@\impl{strchr}@
     3908        char real_c = c; // done because c was declared as int.
     3909        for ( ; *s != real_c; s++ )
     3910         if ( *s == '\0' ) return NULL;
     3911        return ( char * )s;
     3912}
     3913\end{lstlisting}
     3914The parameter \lstinline$s$ must be \lstinline$const char *$, because \lstinline$strchr()$ might be
     3915used to search a constant string, but the return type must be \lstinline$char *$, because the result
     3916might be used to modify a non-constant string. Hence the body must perform a cast, and ( even worse)
     3917\lstinline$strchr()$ provides a type-safe way to attempt to modify constant strings. What is needed
     3918is some way to say that \lstinline$s$'s type might contain qualifiers, and the result type has
     3919exactly the same qualifiers. Polymorphic functions do not provide a fix for this
     3920deficiency\index{deficiencies!pointers to qualified types}, because type qualifiers are not part of
     3921type values. Instead, overloading can be used to define \lstinline$strchr()$ for each combination
     3922of qualifiers.
     3923\end{rationale}
     3924
     3925\begin{rationale}
     3926Since \Index{incomplete type}s are not type values, they can not be used as the initializer in a
     3927type declaration, or as the type of a structure or union member. This prevents the declaration of
     3928types that contain each other.
     3929\begin{lstlisting}
     3930type t1;
     3931type t2 = t1; // illegal: incomplete type t1.
     3932type t1 = t2;
     3933\end{lstlisting}
     3934
     3935The initializer in a file-scope declaration must be a constant expression. This means type
     3936declarations can not build on opaque types, which is a deficiency\index{deficiencies!nesting opaque
     3937 types}.
     3938\begin{lstlisting}
     3939extern type Huge; // extended-precision integer type.
     3940type Rational = struct {
     3941        Huge numerator, denominator;    // illegal
     3942};
     3943struct Pair {
     3944        Huge first, second;                             // legal
     3945};
     3946\end{lstlisting}
     3947Without this restriction, \CFA might require ``module initialization'' code ( since
     3948\lstinline$Rational$ has external linkage, it must be created before any other translation unit
     3949instantiates it), and would force an ordering on the initialization of the translation unit that
     3950defines \lstinline$Huge$ and the translation that declares \lstinline$Rational$.
     3951
     3952A benefit of the restriction is that it prevents the declaration in separate translation units of
     3953types that contain each other, which would be hard to prevent otherwise.
     3954\begin{lstlisting}
     3955//  File a.c:
     3956        extern type t1;
     3957        type t2 = struct { t1 f1; ... } // illegal
     3958//  File b.c:
     3959        extern type t2;
     3960        type t1 = struct { t2 f2; ... } // illegal
     3961\end{lstlisting}
     3962\end{rationale}
     3963
     3964\begin{rationale}
     3965Since a \nonterm{type-declaration} is a \nonterm{declaration} and not a
     3966\nonterm{struct-declaration}, type declarations can not be structure members. The form of
     3967\nonterm{type-declaration} forbids arrays of, pointers to, and functions returning \lstinline$type$.
     3968Hence the syntax of \nonterm{type-specifier} does not have to be extended to allow type-valued
     3969expressions. It also side-steps the problem of type-valued expressions producing different values
     3970in different declarations.
     3971
     3972Since a type declaration is not a \nonterm{parameter-declaration}, functions can not have explicit
     3973type parameters. This may be too restrictive, but it attempts to make compilation simpler. Recall
     3974that when traditional C scanners read in an identifier, they look it up in the symbol table to
     3975determine whether or not it is a typedef name, and return a ``type'' or ``identifier'' token
     3976depending on what they find. A type parameter would add a type name to the current scope. The
     3977scope manipulations involved in parsing the declaration of a function that takes function pointer
     3978parameters and returns a function pointer may just be too complicated.
     3979
     3980Explicit type parameters don't seem to be very useful, anyway, because their scope would not include
     3981the return type of the function. Consider the following attempt to define a type-safe memory
     3982allocation function.
     3983\begin{lstlisting}
     3984#include <stdlib.h>
     3985T * new( type T ) { return ( T * )malloc( sizeof( T) ); };
     3986@\ldots@
     3987int * ip = new( int );
     3988\end{lstlisting}
     3989This looks sensible, but \CFA's declaration-before-use rules mean that ``\lstinline$T$'' in the
     3990function body refers to the parameter, but the ``\lstinline$T$'' in the return type refers to the
     3991meaning of \lstinline$T$ in the scope that contains \lstinline$new$; it could be undefined, or a
     3992type name, or a function or variable name. Nothing good can result from such a situation.
     3993\end{rationale}
     3994
     3995\examples
     3996Since type declarations create new types, instances of types are always passed by value.
     3997\begin{lstlisting}
     3998type A1 = int[2];
     3999void f1( A1 a ) { a[0] = 0; };
     4000typedef int A2[2];
     4001void f2( A2 a ) { a[0] = 0; };
     4002A1 v1;
     4003A2 v2;
     4004f1( v1 );
     4005f2( v2 );
     4006\end{lstlisting}
     4007\lstinline$V1$ is passed by value, so \lstinline$f1()$'s assignment to \lstinline$a[0]$ does not
     4008modify v1.  \lstinline$V2$ is converted to a pointer, so \lstinline$f2()$ modifies
     4009\lstinline$v2[0]$.
     4010
     4011A translation unit containing the declarations
     4012\begin{lstlisting}
     4013extern type Complex;@\use{Complex}@ // opaque type declaration.
     4014extern float abs( Complex );@\use{abs}@
     4015\end{lstlisting}
     4016can contain declarations of complex numbers, which can be passed to \lstinline$abs$. Some other
     4017translation unit must implement \lstinline$Complex$ and \lstinline$abs$. That unit might contain
     4018the declarations
     4019\begin{lstlisting}
     4020type Complex = struct { float re, im; };@\impl{Complex}@
     4021Complex cplx_i = { 0.0, 1.0 };@\impl{cplx_i}@
     4022float abs( Complex c ) {@\impl{abs( Complex )}@
     4023        return sqrt( c.re * c.re + c.im * c.im );
     4024}
     4025\end{lstlisting}
     4026Note that \lstinline$c$ is implicitly converted to a \lstinline$struct$ so that its components can
     4027be retrieved.
     4028
     4029\begin{lstlisting}
     4030type Time_of_day = int;@\impl{Time_of_day}@ // seconds since midnight.
     4031Time_of_day ?+?( Time_of_day t1, int seconds ) {@\impl{?+?}@
     4032        return (( int)t1 + seconds ) % 86400;
     4033}
     4034\end{lstlisting}
     4035\lstinline$t1$ must be cast to its implementation type to prevent infinite recursion.
     4036
     4037\begin{rationale}
     4038Within the scope of a type definition, an instance of the type can be viewed as having that type or
     4039as having the implementation type. In the \lstinline$Time_of_day$ example, the difference is
     4040important. Different languages have treated the distinction between the abstraction and the
     4041implementation in different ways.
     4042\begin{itemize}
     4043\item
     4044Inside a Clu cluster \cite{clu}, the declaration of an instance states which view applies. Two
     4045primitives called \lstinline$up$ and \lstinline$down$ can be used to convert between the views.
     4046\item
     4047The Simula class \cite{Simula87} is essentially a record type. Since the only operations on a
     4048record are member selection and assignment, which can not be overloaded, there is never any
     4049ambiguity as to whether the abstraction or the implementation view is being used. In {\CC}
     4050\cite{c++}, operations on class instances include assignment and ``\lstinline$&$'', which can be
     4051overloaded. A ``scope resolution'' operator can be used inside the class to specify whether the
     4052abstract or implementation version of the operation should be used.
     4053\item
     4054An Ada derived type definition \cite{ada} creates a new type from an old type, and also implicitly
     4055declares derived subprograms that correspond to the existing subprograms that use the old type as a
     4056parameter type or result type. The derived subprograms are clones of the existing subprograms with
     4057the old type replaced by the derived type. Literals and aggregates of the old type are also cloned.
     4058In other words, the abstract view provides exactly the same operations as the implementation view.
     4059This allows the abstract view to be used in all cases.
     4060
     4061The derived subprograms can be replaced by programmer-specified subprograms. This is an exception
     4062to the normal scope rules, which forbid duplicate definitions of a subprogram in a scope. In this
     4063case, explicit conversions between the derived type and the old type can be used.
     4064\end{itemize}
     4065\CFA's rules are like Clu's, except that implicit conversions and
     4066conversion costs allow it to do away with most uses of \lstinline$up$ and \lstinline$down$.
     4067\end{rationale}
     4068
     4069
     4070\subsubsection{Default functions and objects}
     4071
     4072A declaration\index{type declaration} of a type identifier \lstinline$T$ with type-class
     4073\lstinline$type$ implicitly declares a \define{default assignment} function
     4074\lstinline$T ?=?( T *, T )$\use{?=?}, with the same \Index{scope} and \Index{linkage} as the
     4075identifier \lstinline$T$.
     4076\begin{rationale}
     4077Assignment is central to C's imperative programming style, and every existing C object type has
     4078assignment defined for it ( except for array types, which are treated as pointer types for purposes
     4079of assignment). Without this rule, nearly every inferred type parameter would need an accompanying
     4080assignment assertion parameter. If a type parameter should not have an assignment operation,
     4081\lstinline$dtype$ should be used. If a type should not have assignment defined, the user can define
     4082an assignment function that causes a run-time error, or provide an external declaration but no
     4083definition and thus cause a link-time error.
     4084\end{rationale}
     4085
     4086A definition\index{type definition} of a type identifier \lstinline$T$ with \Index{implementation
     4087type} \lstinline$I$ and type-class \lstinline$type$ implicitly defines a default assignment
     4088function. A definition\index{type definition} of a type identifier \lstinline$T$ with implementation
     4089type \lstinline$I$ and an assertion list implicitly defines \define{default function}s and
     4090\define{default object}s as declared by the assertion declarations. The default objects and
     4091functions have the same \Index{scope} and \Index{linkage} as the identifier \lstinline$T$. Their
     4092values are determined as follows:
     4093\begin{itemize}
     4094\item
     4095If at the definition of \lstinline$T$ there is visible a declaration of an object with the same name
     4096as the default object, and if the type of that object with all occurrence of \lstinline$I$ replaced
     4097by \lstinline$T$ is compatible with the type of the default object, then the default object is
     4098initialized with that object. Otherwise the scope of the declaration of \lstinline$T$ must contain
     4099a definition of the default object.
     4100
     4101\item
     4102If at the definition of \lstinline$T$ there is visible a declaration of a function with the same
     4103name as the default function, and if the type of that function with all occurrence of \lstinline$I$
     4104replaced by \lstinline$T$ is compatible with the type of the default function, then the default
     4105function calls that function after converting its arguments and returns the converted result.
     4106
     4107Otherwise, if \lstinline$I$ contains exactly one anonymous member\index{anonymous member} such that
     4108at the definition of \lstinline$T$ there is visible a declaration of a function with the same name
     4109as the default function, and the type of that function with all occurrences of the anonymous
     4110member's type in its parameter list replaced by \lstinline$T$ is compatible with the type of the
     4111default function, then the default function calls that function after converting its arguments and
     4112returns the result.
     4113
     4114Otherwise the scope of the declaration of \lstinline$T$ must contain a definition of the default
     4115function.
     4116\end{itemize}
     4117\begin{rationale}
     4118Note that a pointer to a default function will not compare as equal to a pointer to the inherited
     4119function.
     4120\end{rationale}
     4121
     4122A function or object with the same type and name as a default function or object that is declared
     4123within the scope of the definition of \lstinline$T$ replaces the default function or object.
     4124
     4125\examples
     4126\begin{lstlisting}
     4127context s( type T ) {
     4128        T a, b;
     4129}
     4130struct impl { int left, right; } a = { 0, 0 };
     4131type Pair | s( Pair ) = struct impl;
     4132Pair b = { 1, 1 };
     4133\end{lstlisting}
     4134The definition of \lstinline$Pair$ implicitly defines two objects \lstinline$a$ and \lstinline$b$.
     4135\lstinline$Pair a$ inherits its value from the \lstinline$struct impl a$. The definition of
     4136\lstinline$Pair b$ is compulsory because there is no \lstinline$struct impl b$ to construct a value
     4137from.
     4138\begin{lstlisting}
     4139context ss( type T ) {
     4140        T clone( T );
     4141        void munge( T * );
     4142}
     4143type Whatsit | ss( Whatsit );@\use{Whatsit}@
     4144type Doodad | ss( Doodad ) = struct doodad {@\use{Doodad}@
     4145        Whatsit; // anonymous member
     4146        int extra;
     4147};
     4148Doodad clone( Doodad ) { ... }
     4149\end{lstlisting}
     4150The definition of \lstinline$Doodad$ implicitly defines three functions:
     4151\begin{lstlisting}
     4152Doodad ?=?( Doodad *, Doodad );
     4153Doodad clone( Doodad );
     4154void munge( Doodad * );
     4155\end{lstlisting}
     4156The assignment function inherits \lstinline$struct doodad$'s assignment function because the types
     4157match when \lstinline$struct doodad$ is replaced by \lstinline$Doodad$ throughout.
     4158\lstinline$munge()$ inherits \lstinline$Whatsit$'s \lstinline$munge()$ because the types match when
     4159\lstinline$Whatsit$ is replaced by \lstinline$Doodad$ in the parameter list. \lstinline$clone()$
     4160does \emph{not} inherit \lstinline$Whatsit$'s \lstinline$clone()$: replacement in the parameter
     4161list yields ``\lstinline$Whatsit clone( Doodad )$'', which is not compatible with
     4162\lstinline$Doodad$'s \lstinline$clone()$'s type. Hence the definition of
     4163``\lstinline$Doodad clone( Doodad )$'' is necessary.
     4164
     4165Default functions and objects are subject to the normal scope rules.
     4166\begin{lstlisting}
     4167type T = @\ldots@;
     4168T a_T = @\ldots@;               // Default assignment used.
     4169T ?=?( T *, T );
     4170T a_T = @\ldots@;               // Programmer-defined assignment called.
     4171\end{lstlisting}
     4172\begin{rationale}
     4173A compiler warning would be helpful in this situation.
     4174\end{rationale}
     4175
     4176\begin{rationale}
     4177The \emph{class} construct of object-oriented programming languages performs three independent
     4178functions. It \emph{encapsulates} a data structure; it defines a \emph{subtype} relationship, whereby
     4179instances of one class may be used in contexts that require instances of another; and it allows one
     4180class to \emph{inherit} the implementation of another.
     4181
     4182In \CFA, encapsulation is provided by opaque types and the scope rules, and subtyping is provided
     4183by specifications and assertions. Inheritance is provided by default functions and objects.
     4184\end{rationale}
     4185
     4186
     4187\section{Statements and blocks}
     4188
     4189\begin{syntax}
     4190\oldlhs{statement}
     4191\rhs \nonterm{exception-statement}
     4192\end{syntax}
     4193
     4194Many statements contain expressions, which may have more than one interpretation. The following
     4195sections describe how the \CFA translator selects an interpretation. In all cases the result of the
     4196selection shall be a single unambiguous \Index{interpretation}.
     4197
     4198
     4199\subsection{Labeled statements}
     4200
     4201\begin{syntax}
     4202\oldlhs{labeled-statement}
     4203\rhs \lstinline$case$ \nonterm{case-value-list} : \nonterm{statement}
     4204\lhs{case-value-list}
     4205\rhs \nonterm{case-value}
     4206\rhs \nonterm{case-value-list} \lstinline$,$ \nonterm{case-value}
     4207\lhs{case-value}
     4208\rhs \nonterm{constant-expression}
     4209\rhs \nonterm{subrange}
     4210\lhs{subrange}
     4211\rhs \nonterm{constant-expression} \lstinline$~$ \nonterm{constant-expression}
     4212\end{syntax}
     4213
     4214The following have identical meaning:
     4215\begin{lstlisting}
     4216case 1:  case 2:  case 3:  case 4:  case 5:
     4217case 1, 2, 3, 4, 5:
     4218case 1~5:
     4219\end{lstlisting}
     4220Multiple subranges are allowed:
     4221\begin{lstlisting}
     4222case 1~4, 9~14, 27~32:
     4223\end{lstlisting}
     4224The \lstinline$case$ and \lstinline$default$ clauses are restricted within the \lstinline$switch$ and \lstinline$choose$ statements, precluding Duff's device.
     4225
     4226
     4227\subsection{Expression and null statements}
     4228
     4229The expression in an expression statement is treated as being cast to \lstinline$void$.
     4230
     4231
     4232\subsection{Selection statements}
     4233
     4234\begin{syntax}
     4235\oldlhs{selection-statement}
     4236\rhs \lstinline$choose$ \lstinline$($ \nonterm{expression} \lstinline$)$ \nonterm{statement}
     4237\end{syntax}
     4238
     4239The controlling expression \lstinline$E$ in the \lstinline$switch$ and \lstinline$choose$ statement:
     4240\begin{lstlisting}
     4241switch ( E ) ...
     4242choose ( E ) ...
     4243\end{lstlisting}
     4244may have more than one interpretation, but it shall have only one interpretation with an integral type.
     4245An \Index{integer promotion} is performed on the expression if necessary.
     4246The constant expressions in \lstinline$case$ statements with the switch are converted to the promoted type.
     4247
     4248
     4249\setcounter{subsubsection}{3}
     4250\subsubsection{The \lstinline$choose$ statement}
     4251
     4252The \lstinline$choose$ statement is the same as the \lstinline$switch$ statement except control transfers to the end of the \lstinline$choose$ statement at a \lstinline$case$ or \lstinline$default$ labeled statement.
     4253The \lstinline$fallthru$ statement is used to fall through to the next \lstinline$case$ or \lstinline$default$ labeled statement.
     4254The following have identical meaning:
     4255\begin{flushleft}
     4256\begin{tabular}{@{\hspace{2em}}l@{\hspace{2em}}l@{}}
     4257\begin{lstlisting}
     4258switch (...) {
     4259  case 1: ... ; break;
     4260  case 2: ... ; break;
     4261  case 3: ... ; // fall through
     4262  case 4: ... ; // fall through
     4263  default: ... break;
     4264}
     4265\end{lstlisting}
     4266&
     4267\begin{lstlisting}
     4268choose (...) {
     4269  case 1: ... ; // exit
     4270  case 2: ... ; // exit
     4271  case 3: ... ; fallthru;
     4272  case 4: ... ; fallthru;
     4273  default: ... ; // exit
     4274}
     4275\end{lstlisting}
     4276\end{tabular}
     4277\end{flushleft}
     4278The \lstinline$choose$ statement addresses the problem of accidental fall-through associated with the \lstinline$switch$ statement.
     4279
     4280
     4281\subsection{Iteration statements}
     4282
     4283The controlling expression \lstinline$E$ in the loops
     4284\begin{lstlisting}
     4285if ( E ) ...
     4286while ( E ) ...
     4287do ... while ( E );
     4288\end{lstlisting}
     4289is treated as ``\lstinline$( int )((E)!=0)$''.
     4290
     4291The statement
     4292\begin{lstlisting}
     4293for ( a; b; c ) @\ldots@
     4294\end{lstlisting}
     4295is treated as
     4296\begin{lstlisting}
     4297for ( ( void )( a ); ( int )(( b )!=0); ( void )( c ) ) ...
     4298\end{lstlisting}
     4299
     4300
     4301\subsection{Jump statements}
     4302
     4303\begin{syntax}
     4304\oldlhs{jump-statement}
     4305\rhs \lstinline$continue$ \nonterm{identifier}\opt
     4306\rhs \lstinline$break$ \nonterm{identifier}\opt
     4307\rhs \ldots
     4308\rhs \lstinline$throw$ \nonterm{assignment-expression}\opt
     4309\rhs \lstinline$throwResume$ \nonterm{assignment-expression}\opt \nonterm{at-expression}\opt
     4310\lhs{at-expression} \lstinline$_At$ \nonterm{assignment-expression}
     4311\end{syntax}
     4312
     4313Labeled \lstinline$continue$ and \lstinline$break$ allow useful but restricted control-flow that reduces the need for the \lstinline$goto$ statement for exiting multiple nested control-structures.
     4314\begin{lstlisting}
     4315L1: {                                                   // compound
     4316  L2: switch ( ... ) {                  // switch
     4317          case ...:
     4318          L3: for ( ;; ) {                      // outer for
     4319                L4: for ( ;; ) {                // inner for
     4320                                continue L1;    // error: not enclosing iteration
     4321                                continue L2;    // error: not enclosing iteration
     4322                                continue L3;    // next iteration of outer for
     4323                                continue L4;    // next iteration of inner for
     4324                                break L1;               // exit compound
     4325                                break L2;               // exit switch
     4326                                break L3;               // exit outer for
     4327                                break L4;               // exit inner for
     4328                        } // for
     4329                } // for
     4330                break;                                  // exit switch
     4331          default:
     4332                break L1;                               // exit compound
     4333        } // switch
     4334        ...
     4335} // compound
     4336\end{lstlisting}
     4337
     4338
     4339\setcounter{subsubsection}{1}
     4340\subsubsection{The \lstinline$continue$ statement}
     4341
     4342The identifier in a \lstinline$continue$ statement shall name a label located on an enclosing iteration statement.
     4343
     4344
     4345\subsubsection{The \lstinline$break$ statement}
     4346
     4347The identifier in a \lstinline$break$ statement shall name a label located on an enclosing compound, selection or iteration statement.
     4348
     4349
     4350\subsubsection{The \lstinline$return$ statement}
     4351
     4352An expression in a \lstinline$return$ statement is treated as being cast to the result type of the function.
     4353
     4354
     4355\subsubsection{The \lstinline$throw$ statement}
     4356
     4357When an exception is raised, \Index{propagation} directs control from a raise in the source execution to a handler in the faulting execution.
     4358
     4359
     4360\subsubsection{The \lstinline$throwResume$ statement}
     4361
     4362
     4363\subsection{Exception statements}
     4364
     4365\begin{syntax}
     4366\lhs{exception-statement}
     4367\rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list}
     4368\rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{finally-clause}
     4369\rhs \lstinline$try$ \nonterm{compound-statement} \nonterm{handler-list} \nonterm{finally-clause}
     4370\lhs{handler-list}
     4371\rhs \nonterm{handler-clause}
     4372\rhs \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
     4373\rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
     4374\rhs \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
     4375\rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \ldots \lstinline$)$ \nonterm{compound-statement}
     4376\lhs{handler-clause}
     4377\rhs \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
     4378\rhs \nonterm{handler-clause} \lstinline$catch$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
     4379\rhs \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
     4380\rhs \nonterm{handler-clause} \lstinline$catchResume$ \lstinline$($ \nonterm{exception-declaration} \lstinline$)$ \nonterm{compound-statement}
     4381\lhs{finally-clause}
     4382\rhs \lstinline$finally$ \nonterm{compound-statement}
     4383\lhs{exception-declaration}
     4384\rhs \nonterm{type-specifier}
     4385\rhs \nonterm{type-specifier} \nonterm{declarator}
     4386\rhs \nonterm{type-specifier} \nonterm{abstract-declarator}
     4387\rhs \nonterm{new-abstract-declarator-tuple} \nonterm{identifier}
     4388\rhs \nonterm{new-abstract-declarator-tuple}
     4389\lhs{asynchronous-statement}
     4390\rhs \lstinline$enable$ \nonterm{identifier-list} \nonterm{compound-statement}
     4391\rhs \lstinline$disable$ \nonterm{identifier-list} \nonterm{compound-statement}
     4392\end{syntax}
     4393
     4394\Index{Exception statement}s allow a dynamic call to a handler for \Index{recovery} (\Index{termination}) or \Index{correction} (\Index{resumption}) of an \Index{abnormal event}.
     4395
     4396
     4397\subsubsection{The \lstinline$try$ statement}
     4398
     4399The \lstinline$try$ statement is a block with associated handlers, called a \Index{guarded block};
     4400all other blocks are \Index{unguarded block}s.
     4401A \lstinline$goto$, \lstinline$break$, \lstinline$return$, or \lstinline$continue$ statement can be used to transfer control out of a try block or handler, but not into one.
     4402
     4403
     4404\subsubsection{The \lstinline$enable$/\lstinline$disable$ statements}
     4405
     4406The \lstinline$enable$/\lstinline$disable$ statements toggle delivery of \Index{asynchronous exception}s.
     4407
     4408
     4409\setcounter{section}{9}
     4410\section{Preprocessing directives}
     4411
     4412
     4413\setcounter{subsection}{7}
     4414\subsection{Predefined macro names}
     4415
     4416The implementation shall define the macro names \lstinline$__LINE__$, \lstinline$__FILE__$,
     4417\lstinline$__DATE__$, and \lstinline$__TIME__$, as in the {\c11} standard. It shall not define the
     4418macro name \lstinline$__STDC__$.
     4419
     4420In addition, the implementation shall define the macro name \lstinline$__CFORALL__$ to be the
     4421decimal constant 1.
     4422
     4423
     4424\appendix
     4425
     4426
     4427\chapter{Examples}
     4428
     4429
     4430\section{C types}
     4431This section gives example specifications for some groups of types that are important in the C
     4432language, in terms of the predefined operations that can be applied to those types.
     4433
     4434
     4435\subsection{Scalar, arithmetic, and integral types}
     4436
     4437The pointer, integral, and floating-point types are all \define{scalar types}. All of these types
     4438can be logically negated and compared. The assertion ``\lstinline$scalar( Complex )$'' should be read
     4439as ``type \lstinline$Complex$ is scalar''.
     4440\begin{lstlisting}
     4441context scalar( type T ) {@\impl{scalar}@
     4442        int !?( T );
     4443        int ?<?( T, T ), ?<=?( T, T ), ?==?( T, T ), ?>=?( T, T ), ?>?( T, T ), ?!=?( T, T );
     4444};
     4445\end{lstlisting}
     4446
     4447The integral and floating-point types are \define{arithmetic types}, which support the basic
     4448arithmetic operators. The use of an assertion in the \nonterm{spec-parameter-list} declares that,
     4449in order to be arithmetic, a type must also be scalar ( and hence that scalar operations are
     4450available ). This is equivalent to inheritance of specifications.
     4451\begin{lstlisting}
     4452context arithmetic( type T | scalar( T ) ) {@\impl{arithmetic}@@\use{scalar}@
     4453        T +?( T ), -?( T );
     4454        T ?*?( T, T ), ?/?( T, T ), ?+?( T, T ), ?-?( T, T );
     4455};
     4456\end{lstlisting}
     4457
     4458The various flavors of \lstinline$char$ and \lstinline$int$ and the enumerated types make up the
     4459\define{integral types}.
     4460\begin{lstlisting}
     4461context integral( type T | arithmetic( T ) ) {@\impl{integral}@@\use{arithmetic}@
     4462        T ~?( T );
     4463        T ?&?( T, T ), ?|?( T, T ), ?^?( T, T );
     4464        T ?%?( T, T );
     4465        T ?<<?( T, T ), ?>>?( T, T );
     4466};
     4467\end{lstlisting}
     4468
     4469
     4470\subsection{Modifiable types}
     4471\index{modifiable lvalue}
     4472
     4473The only operation that can be applied to all modifiable lvalues is simple assignment.
     4474\begin{lstlisting}
     4475context m_lvalue( type T ) {@\impl{m_lvalue}@
     4476        T ?=?( T *, T );
     4477};
     4478\end{lstlisting}
     4479
     4480Modifiable scalar lvalues are scalars and are modifiable lvalues, and assertions in the
     4481\nonterm{spec-parameter-list} reflect those relationships. This is equivalent to multiple
     4482inheritance of specifications. Scalars can also be incremented and decremented.
     4483\begin{lstlisting}
     4484context m_l_scalar( type T | scalar( T ) | m_lvalue( T ) ) {@\impl{m_l_scalar}@
     4485        T ?++( T * ), ?--( T * );@\use{scalar}@@\use{m_lvalue}@
     4486        T ++?( T * ), --?( T * );
     4487};
     4488\end{lstlisting}
     4489
     4490Modifiable arithmetic lvalues are both modifiable scalar lvalues and arithmetic. Note that this
     4491results in the ``inheritance'' of \lstinline$scalar$ along both paths.
     4492\begin{lstlisting}
     4493context m_l_arithmetic( type T | m_l_scalar( T ) | arithmetic( T ) ) {@\impl{m_l_arithmetic}@
     4494        T ?/=?( T *, T ), ?*=?( T *, T );@\use{m_l_scalar}@@\use{arithmetic}@
     4495        T ?+=?( T *, T ), ?-=?( T *, T );
     4496};
     4497
     4498context m_l_integral( type T | m_l_arithmetic( T ) | integral( T ) ) {@\impl{m_l_integral}@
     4499        T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );@\use{m_l_arithmetic}@
     4500        T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );@\use{integral}@
     4501};
     4502\end{lstlisting}
     4503
     4504
     4505\subsection{Pointer and array types}
     4506
     4507Array types can barely be said to exist in {\c11}, since in most cases an array name is treated as a
     4508constant pointer to the first element of the array, and the subscript expression
     4509``\lstinline$a[i]$'' is equivalent to the dereferencing expression ``\lstinline$(*( a+( i )))$''.
     4510Technically, pointer arithmetic and pointer comparisons other than ``\lstinline$==$'' and
     4511``\lstinline$!=$'' are only defined for pointers to array elements, but the type system does not
     4512enforce those restrictions. Consequently, there is no need for a separate ``array type''
     4513specification.
     4514
     4515Pointer types are scalar types. Like other scalar types, they have ``\lstinline$+$'' and
     4516``\lstinline$-$'' operators, but the types do not match the types of the operations in
     4517\lstinline$arithmetic$, so these operators cannot be consolidated in \lstinline$scalar$.
     4518\begin{lstlisting}
     4519context pointer( type P | scalar( P ) ) {@\impl{pointer}@@\use{scalar}@
     4520        P ?+?( P, long int ), ?+?( long int, P ), ?-?( P, long int );
     4521        ptrdiff_t ?-?( P, P );
     4522};
     4523
     4524context m_l_pointer( type P | pointer( P ) | m_l_scalar( P ) ) {@\impl{m_l_pointer}@
     4525        P ?+=?( P *, long int ), ?-=?( P *, long int );
     4526        P ?=?( P *, void * );
     4527        void * ?=?( void **, P );
     4528};
     4529\end{lstlisting}
     4530
     4531Specifications that define the dereference operator ( or subscript operator ) require two
     4532parameters, one for the pointer type and one for the pointed-at ( or element ) type. Different
     4533specifications are needed for each set of \Index{type qualifier}s, because qualifiers are not
     4534included in types. The assertion ``\lstinline$|ptr_to( Safe_pointer, int )$'' should be read as
     4535``\lstinline$Safe_pointer$ acts like a pointer to \lstinline$int$''.
     4536\begin{lstlisting}
     4537context ptr_to( type P | pointer( P ), type T ) {@\impl{ptr_to}@@\use{pointer}@
     4538        lvalue T *?( P ); lvalue T ?[?]( P, long int );
     4539};
     4540
     4541context ptr_to_const( type P | pointer( P ), type T ) {@\impl{ptr_to_const}@
     4542        const lvalue T *?( P ); const lvalue T ?[?]( P, long int );@\use{pointer}@
     4543};
     4544
     4545context ptr_to_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_volatile}@
     4546        volatile lvalue T *?( P ); volatile lvalue T ?[?]( P, long int );@\use{pointer}@
     4547};
     4548\end{lstlisting}
     4549\begin{lstlisting}
     4550context ptr_to_const_volatile( type P | pointer( P ), type T ) }@\impl{ptr_to_const_volatile}@
     4551        const volatile lvalue T *?( P );@\use{pointer}@
     4552        const volatile lvalue T ?[?]( P, long int );
     4553};
     4554\end{lstlisting}
     4555
     4556Assignment to pointers is more complicated than is the case with other types, because the target's
     4557type can have extra type qualifiers in the pointed-at type: a ``\lstinline$T *$'' can be assigned to
     4558a ``\lstinline$const T *$'', a ``\lstinline$volatile T *$'', and a ``\lstinline$const volatile T *$''.
     4559Again, the pointed-at type is passed in, so that assertions can connect these specifications to the
     4560``\lstinline$ptr_to$'' specifications.
     4561\begin{lstlisting}
     4562context m_l_ptr_to( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to}@ type T | ptr_to( P, T )@\use{ptr_to}@ {
     4563        P ?=?( P *, T * );
     4564        T * ?=?( T **, P );
     4565};
     4566
     4567context m_l_ptr_to_const( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_const}@ type T | ptr_to_const( P, T )@\use{ptr_to_const}@) {
     4568        P ?=?( P *, const T * );
     4569        const T * ?=?( const T **, P );
     4570};
     4571
     4572context m_l_ptr_to_volatile( type P | m_l_pointer( P ),@\use{m_l_pointer}@@\impl{m_l_ptr_to_volatile}@ type T | ptr_to_volatile( P, T )) {@\use{ptr_to_volatile}@
     4573        P ?=?( P *, volatile T * );
     4574        volatile T * ?=?( volatile T **, P );
     4575};
     4576
     4577context m_l_ptr_to_const_volatile( type P | ptr_to_const_volatile( P ),@\use{ptr_to_const_volatile}@@\impl{m_l_ptr_to_const_volatile}@
     4578                type T | m_l_ptr_to_volatile( P, T ) | m_l_ptr_to_const( P )) {@\use{m_l_ptr_to_const}@@\use{m_l_ptr_to_volatile}@
     4579        P ?=?( P *, const volatile T * );
     4580        const volatile T * ?=?( const volatile T **, P );
     4581};
     4582\end{lstlisting}
     4583
     4584Note the regular manner in which type qualifiers appear in those specifications. An alternative
     4585specification can make use of the fact that qualification of the pointed-at type is part of a
     4586pointer type to capture that regularity.
     4587\begin{lstlisting}
     4588context m_l_ptr_like( type MyP | m_l_pointer( MyP ),@\use{m_l_pointer}@@\impl{m_l_ptr_like}@ type CP | m_l_pointer( CP ) ) {
     4589        MyP ?=?( MyP *, CP );
     4590        CP ?=?( CP *, MyP );
     4591};
     4592\end{lstlisting}
     4593The assertion ``\lstinline$| m_l_ptr_like( Safe_ptr, const int * )$'' should be read as
     4594``\lstinline$Safe_ptr$ is a pointer type like \lstinline$const int *$''. This specification has two
     4595defects, compared to the original four: there is no automatic assertion that dereferencing a
     4596\lstinline$MyP$ produces an lvalue of the type that \lstinline$CP$ points at, and the
     4597``\lstinline$|m_l_pointer( CP )$'' assertion provides only a weak assurance that the argument passed
     4598to \lstinline$CP$ really is a pointer type.
     4599
     4600
     4601\section{Relationships between operations}
     4602
     4603Different operators often have related meanings; for instance, in C, ``\lstinline$+$'',
     4604``\lstinline$+=$'', and the two versions of ``\lstinline$++$'' perform variations of addition.
     4605Languages like {\CC} and Ada allow programmers to define operators for new types, but do not
     4606require that these relationships be preserved, or even that all of the operators be implemented.
     4607Completeness and consistency is left to the good taste and discretion of the programmer. It is
     4608possible to encourage these attributes by providing generic operator functions, or member functions
     4609of abstract classes, that are defined in terms of other, related operators.
     4610
     4611In \CFA, polymorphic functions provide the equivalent of these generic operators, and
     4612specifications explicitly define the minimal implementation that a programmer should provide. This
     4613section shows a few examples.
     4614
     4615
     4616\subsection{Relational and equality operators}
     4617
     4618The different comparison operators have obvious relationships, but there is no obvious subset of the
     4619operations to use in the implementation of the others. However, it is usually convenient to
     4620implement a single comparison function that returns a negative integer, 0, or a positive integer if
     4621its first argument is respectively less than, equal to, or greater than its second argument; the
     4622library function \lstinline$strcmp$ is an example.
     4623
     4624C and \CFA have an extra, non-obvious comparison operator: ``\lstinline$!$'', logical negation,
     4625returns 1 if its operand compares equal to 0, and 0 otherwise.
     4626\begin{lstlisting}
     4627context comparable( type T ) {
     4628        const T 0;
     4629        int compare( T, T );
     4630}
     4631
     4632forall( type T | comparable( T ) ) int ?<?( T l, T r ) {
     4633        return compare( l, r ) < 0;
     4634}
     4635// ... similarly for <=, ==, >=, >, and !=.
     4636
     4637forall( type T | comparable( T ) ) int !?( T operand ) {
     4638        return !compare( operand, 0 );
     4639}
     4640\end{lstlisting}
     4641
     4642
     4643\subsection{Arithmetic and integer operations}
     4644
     4645A complete arithmetic type would provide the arithmetic operators and the corresponding assignment
     4646operators. Of these, the assignment operators are more likely to be implemented directly, because
     4647it is usually more efficient to alter the contents of an existing object than to create and return a
     4648new one. Similarly, a complete integral type would provide integral operations based on integral
     4649assignment operations.
     4650\begin{lstlisting}
     4651context arith_base( type T ) {
     4652        const T 1;
     4653        T ?+=?( T *, T ), ?-=?( T *, T ), ?*=?( T *, T ), ?/=?( T *, T );
     4654}
     4655
     4656forall( type T | arith_base( T ) ) T ?+?( T l, T r ) {
     4657        return l += r;
     4658}
     4659
     4660forall( type T | arith_base( T ) ) T ?++( T * operand ) {
     4661        T temporary = *operand;
     4662        *operand += 1;
     4663        return temporary;
     4664}
     4665
     4666forall( type T | arith_base( T ) ) T ++?( T * operand ) {
     4667        return *operand += 1;
     4668}
     4669// ... similarly for -, --, *, and /.
     4670
     4671context int_base( type T ) {
     4672        T ?&=?( T *, T ), ?|=?( T *, T ), ?^=?( T *, T );
     4673        T ?%=?( T *, T ), ?<<=?( T *, T ), ?>>=?( T *, T );
     4674}
     4675
     4676forall( type T | int_base( T ) ) T ?&?( T l, T r ) {
     4677        return l &= r;
     4678}
     4679// ... similarly for |, ^, %, <<, and >>.
     4680\end{lstlisting}
     4681
     4682Note that, although an arithmetic type would certainly provide comparison functions, and an integral
     4683type would provide arithmetic operations, there does not have to be any relationship among
     4684\lstinline$int_base$, \lstinline$arith_base$ and \lstinline$comparable$. Note also that these
     4685declarations provide guidance and assistance, but they do not define an absolutely minimal set of
     4686requirements. A truly minimal implementation of an arithmetic type might only provide
     4687\lstinline$0$, \lstinline$1$, and \lstinline$?-=?$, which would be used by polymorphic
     4688\lstinline$?+=?$, \lstinline$?*=?$, and \lstinline$?/=?$ functions.
     4689
     4690Note also that \lstinline$short$ is an integer type in C11 terms, but has no operations!
     4691
     4692
     4693\chapter{TODO}
     4694Review index entries.
     4695
     4696Restrict allowed to qualify anything, or type/dtype parameters, but only affects pointers. This gets
     4697into \lstinline$noalias$ territory. Qualifying anything (``\lstinline$short restrict rs$'') means
     4698pointer parameters of \lstinline$?++$, etc, would need restrict qualifiers.
     4699
     4700Enumerated types. Constants are not ints. Overloading. Definition should be ``representable as an
     4701integer type'', not ``as an int''. C11 usual conversions freely convert to and from ordinary
     4702integer types via assignment, which works between any integer types. Does enum Color ?*?( enum
     4703Color, enum Color ) really make sense? ?++ does, but it adds (int)1.
     4704
     4705Operators on {,signed,unsigned} char and other small types. ?<? harmless; ?*? questionable for
     4706chars. Generic selections make these choices visible. Safe conversion operators? Predefined
     4707``promotion'' function?
     4708
     4709\lstinline$register$ assignment might be handled as assignment to a temporary with copying back and
     4710forth, but copying must not be done by assignment.
     4711
     4712Don't use ptrdiff\_t by name in the predefineds.
     4713
     4714Polymorphic objects. Polymorphic typedefs and type declarations.
     4715
     4716
     4717\bibliographystyle{plain}
     4718\bibliography{refrat}
     4719
     4720
     4721\addcontentsline{toc}{chapter}{\indexname} % add index name to table of contents
     4722\begin{theindex}
     4723Italic page numbers give the location of the main entry for the referenced term. Plain page numbers
     4724denote uses of the indexed term. Entries for grammar non-terminals are italicized. A typewriter
     4725font is used for grammar terminals and program identifiers.
     4726\indexspace
     4727\input{refrat.ind}
     4728\end{theindex}
     4729
     4730\end{document}
     4731
     4732% Local Variables: %
     4733% tab-width: 4 %
     4734% fill-column: 100 %
     4735% compile-command: "make" %
     4736% End: %
  • src/CodeGen/CodeGenerator.cc

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jul 27 14:40:06 2015
    13 // Update Count     : 218
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Thu Sep 17 15:24:08 2015
     13// Update Count     : 231
    1414//
    1515
     
    186186        }
    187187
     188        void CodeGenerator::printDesignators( std::list< Expression * > & designators ) {
     189                typedef std::list< Expression * > DesignatorList;
     190                if ( designators.size() == 0 ) return;
     191                for ( DesignatorList::iterator iter = designators.begin(); iter != designators.end(); ++iter ) {
     192                        if ( dynamic_cast< NameExpr * >( *iter ) ) {
     193                                // if expression is a name, then initializing aggregate member
     194                                output << ".";
     195                                (*iter)->accept( *this );
     196                        } else {
     197                                // if not a simple name, it has to be a constant expression, i.e. an array designator
     198                                output << "[";
     199                                (*iter)->accept( *this );
     200                                output << "]";
     201                        }
     202                }
     203                output << " = ";
     204        }
     205
    188206        void CodeGenerator::visit( SingleInit *init ) {
     207                printDesignators( init->get_designators() );
    189208                init->get_value()->accept( *this );
    190209        }
    191210
    192211        void CodeGenerator::visit( ListInit *init ) {
     212                printDesignators( init->get_designators() );
    193213                output << "{ ";
    194214                genCommaList( init->begin_initializers(), init->end_initializers() );
     
    372392
    373393        void CodeGenerator::visit( CastExpr *castExpr ) {
    374                 output << "((";
    375                 if ( castExpr->get_results().empty() ) {
    376                         output << "void" ;
    377                 } else {
    378                         output << genType( castExpr->get_results().front(), "" );
    379                 } // if
    380                 output << ")";
    381                 castExpr->get_arg()->accept( *this );
    382                 output << ")";
     394                // if the cast is to an lvalue type, then the cast
     395                // should be dropped, since the result of a cast is
     396                // never an lvalue in C
     397                if ( castExpr->get_results().front()->get_isLvalue() ) {
     398                        castExpr->get_arg()->accept( *this );
     399                } else {
     400                        output << "((";
     401                        if ( castExpr->get_results().empty() ) {
     402                                output << "void" ;
     403                        } else {
     404                                output << genType( castExpr->get_results().front(), "" );
     405                        } // if
     406                        output << ")";
     407                        castExpr->get_arg()->accept( *this );
     408                        output << ")";                 
     409                }
    383410        }
    384411 
  • src/CodeGen/CodeGenerator.h

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jul 24 13:34:47 2015
    13 // Update Count     : 25
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:27:14 2015
     13// Update Count     : 27
    1414//
    1515
     
    9595                std::ostream &output;
    9696
     97                void printDesignators( std::list< Expression * > & );
    9798                static std::string printLabels ( std::list < Label > & );
    9899                void handleStorageClass( Declaration *decl );
  • src/GenPoly/PolyMutator.cc

    r698664b3 rd2ded3e7  
    1010// Created On       : Mon May 18 07:44:20 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Jul 15 14:50:58 2015
    13 // Update Count     : 3
     12// Last Modified On : Fri Aug 14 15:28:50 2015
     13// Update Count     : 11
    1414//
    1515
     
    2020#include "SynTree/Statement.h"
    2121#include "SynTree/Mutator.h"
    22 
     22#include "SynTree/Initializer.h"
    2323
    2424namespace GenPoly {
     
    146146        }
    147147 
     148 
     149        Initializer *PolyMutator::mutate( SingleInit *singleInit ) {
     150                singleInit->set_value( mutateExpression( singleInit->get_value() ) );
     151                return singleInit;
     152        }
     153
     154
    148155        /* static class method */
    149156        void PolyMutator::makeTyVarMap( Type *type, TyVarMap &tyVarMap ) {
  • src/GenPoly/PolyMutator.h

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue May 19 07:46:45 2015
    13 // Update Count     : 1
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Fri Aug 14 15:27:38 2015
     13// Update Count     : 4
    1414//
    1515
     
    4545 
    4646                virtual Expression* mutate(UntypedExpr *untypedExpr);
    47  
     47
     48                virtual Initializer* mutate(SingleInit *SingleInit);
     49
    4850                // template method
    4951                virtual void doBeginScope() {}
  • src/GenPoly/Specialize.cc

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun 13 15:54:07 2015
    13 // Update Count     : 6
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Tue Sep 22 14:04:13 2015
     13// Update Count     : 15
    1414//
    1515
     
    200200        Expression * Specialize::mutate( AddressExpr *addrExpr ) {
    201201                addrExpr->get_arg()->acceptMutator( *this );
     202                assert( ! addrExpr->get_results().empty() );
    202203                addrExpr->set_arg( doSpecialization( addrExpr->get_results().front(), addrExpr->get_arg() ) );
    203204                return addrExpr;
  • src/Parser/ExpressionNode.cc

    r698664b3 rd2ded3e7  
    1010// Created On       : Sat May 16 13:17:07 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Aug 11 15:13:48 2015
    13 // Update Count     : 200
     12// Last Modified On : Mon Oct  5 16:37:24 2015
     13// Update Count     : 255
    1414//
    1515
     
    3232ExpressionNode::ExpressionNode() : ParseNode(), argName( 0 ) {}
    3333
    34 ExpressionNode::ExpressionNode( const string *name_ ) : ParseNode( name_ ), argName( 0 ) {}
     34ExpressionNode::ExpressionNode( const string *name ) : ParseNode( name ), argName( 0 ) {}
    3535
    3636ExpressionNode::ExpressionNode( const ExpressionNode &other ) : ParseNode( other.name ) {
     
    290290DesignatorNode::DesignatorNode( ExpressionNode *expr, bool isArrayIndex ) : isArrayIndex( isArrayIndex ) {
    291291        set_argName( expr );
     292        assert( get_argName() );
     293
     294        if ( ! isArrayIndex ) {
     295                if ( VarRefNode * var = dynamic_cast< VarRefNode * >( expr ) ) {
     296
     297                        stringstream ss( var->get_name() );
     298                        double value;
     299                        if ( ss >> value ) {
     300                                // this is a floating point constant. It MUST be
     301                                // ".0" or ".1", otherwise the program is invalid
     302                                if ( ! (var->get_name() == ".0" || var->get_name() == ".1") ) {
     303                                        throw SemanticError( "invalid designator name: " + var->get_name() );
     304                                } // if
     305                                var->set_name( var->get_name().substr(1) );
     306                        } // if
     307                } // if
     308        } // if
    292309}
    293310
     
    295312}
    296313
     314class DesignatorFixer : public Mutator {
     315public:
     316        virtual Expression* mutate( NameExpr *nameExpr ) {
     317                if ( nameExpr->get_name() == "0" || nameExpr->get_name() == "1" ) {
     318                        Constant val( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), nameExpr->get_name() );
     319                        delete nameExpr;
     320                        return new ConstantExpr( val );
     321                }
     322                return nameExpr;
     323        }
     324};
     325
    297326Expression *DesignatorNode::build() const {
     327        Expression * ret = get_argName()->build();
     328
    298329        if ( isArrayIndex ) {
    299                 return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );
    300         } else {
    301                 return new NameExpr( get_name(), maybeBuild< Expression >( get_argName() ) );
    302         } // if
     330                // need to traverse entire structure and change any instances of 0 or 1 to
     331                // ConstantExpr
     332                DesignatorFixer fixer;
     333                ret = ret->acceptMutator( fixer );
     334        } // if
     335
     336        return ret;
    303337}
    304338
     
    384418
    385419CompositeExprNode::CompositeExprNode( ExpressionNode *f, ExpressionNode *arg1, ExpressionNode *arg2):
    386         function( f ), arguments( arg1) {
    387         arguments->set_link( arg2);
     420        function( f ), arguments( arg1 ) {
     421        arguments->set_link( arg2 );
    388422}
    389423
  • src/Parser/InitializerNode.cc

    r698664b3 rd2ded3e7  
    1010// Created On       : Sat May 16 13:20:24 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 15:49:42 2015
    13 // Update Count     : 3
     12// Last Modified On : Thu Oct  8 17:18:55 2015
     13// Update Count     : 4
    1414//
    1515
     
    8080
    8181        if ( aggregate ) {
    82                 assert( next_init() != 0 );
     82                //assert( next_init() != 0 );
    8383
    8484                std::list< Initializer *> initlist;
  • src/Parser/ParseNode.cc

    r698664b3 rd2ded3e7  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:26:29 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 30 14:55:54 2015
    13 // Update Count     : 26
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 13:26:00 2015
     13// Update Count     : 36
    1414//
    1515
     
    2020int ParseNode::indent_by = 4;
    2121
    22 ParseNode::ParseNode() : name( 0 ), next( 0 ) {};
    23 ParseNode::ParseNode( const string *name_ ) : name( name_ ), next( 0 ) {}
     22ParseNode::ParseNode() : next( 0 ) {};
     23ParseNode::ParseNode( const string *name ) : name( *name ), next( 0 ) { delete name; }
     24ParseNode::ParseNode( const string &name ) : name( name ), next( 0 ) { }
    2425
    2526ParseNode::~ParseNode() {
    26         delete next; delete name;
     27        delete next;
    2728};
    2829
  • src/Parser/ParseNode.h

    r698664b3 rd2ded3e7  
    99// Author           : Rodolfo G. Esteves
    1010// Created On       : Sat May 16 13:28:16 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Aug 11 15:11:29 2015
    13 // Update Count     : 145
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 13:27:11 2015
     13// Update Count     : 172
    1414//
    1515
     
    4040        ParseNode();
    4141        ParseNode( const std::string * );
     42        ParseNode( const std::string & );  // for copy constructing subclasses
    4243        virtual ~ParseNode();
    4344
     
    4950        virtual ParseNode *clone() const { return 0; };
    5051
    51         const std::string &get_name() const { return *name; }
     52        const std::string &get_name() const { return name; }
     53        void set_name( const std::string &newValue ) { name = newValue; }
     54
    5255        virtual void print( std::ostream &, int indent = 0 ) const;
    5356        virtual void printList( std::ostream &, int indent = 0 ) const;
     
    5558        ParseNode &operator,( ParseNode &);
    5659  protected:
    57         const std::string *name;
     60        std::string name;
    5861        ParseNode *next;
    5962        static int indent_by;
  • src/Parser/lex.cc

    r698664b3 rd2ded3e7  
    382382        (yy_c_buf_p) = yy_cp;
    383383
    384 #define YY_NUM_RULES 171
    385 #define YY_END_OF_BUFFER 172
     384#define YY_NUM_RULES 178
     385#define YY_END_OF_BUFFER 179
    386386/* This struct is not used in this scanner,
    387387   but its presence is necessary. */
     
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[826] =
     393static yyconst flex_int16_t yy_accept[852] =
    394394    {   0,
    395         0,    0,    0,    0,    0,    0,  108,  108,  111,  111,
    396       172,  170,    7,    9,    8,  131,  110,   95,  136,  139,
    397       107,  118,  119,  134,  132,  122,  133,  125,  135,  100,
    398       101,  102,  123,  124,  141,  143,  142,  144,  170,   95,
    399       116,  170,  117,  137,   95,   97,   95,   95,   95,   95,
    400        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    401        95,  120,  140,  121,  138,    7,  170,    4,    4,  171,
    402        98,  171,   99,  108,  109,  115,  111,  112,    7,    9,
    403         0,    8,  148,  166,   95,    0,  160,  130,  153,  161,
    404       158,  145,  156,  146,  157,  155,    0,  105,    3,    0,
    405 
    406       159,  105,  103,    0,    0,  103,  103,    0,    0,  103,
    407       102,  102,  102,    0,  102,  128,  129,  127,  149,  151,
    408       147,  152,  150,    0,    0,    0,    0,    0,    0,    0,
    409         0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
    410       110,  107,   95,    0,    0,  163,   95,   95,   95,   95,
    411        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    412        95,   95,   36,   95,   95,   95,   95,   95,   95,   95,
    413        95,   95,   95,   53,   95,   95,   95,   95,   95,   95,
    414        95,   95,   95,   95,   95,   95,   95,   95,   95,  162,
    415       154,    7,    0,    0,    0,    2,    0,    5,   98,    0,
    416 
    417         0,    0,  108,    0,  114,  113,  113,    0,    0,    0,
    418       111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    419         0,    0,    0,    0,    0,    0,  126,  105,    0,  105,
    420         0,    0,    6,    0,  103,    0,    0,    0,  105,    0,
    421       103,  103,  103,  103,    0,  104,    0,    0,  102,  102,
    422       102,  102,    0,  164,  165,    0,  168,  167,    0,    0,
    423         0,   96,    0,    0,    0,    0,    0,    0,    0,   95,
    424        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    425        95,   95,   95,   95,   95,   95,   95,   95,   14,   95,
    426        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    427 
    428        95,   95,   95,   95,   95,   47,   95,   95,   95,   60,
    429        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    430        95,   95,   82,   95,   95,   95,   95,   95,   95,   95,
    431         0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
    432         0,    0,    0,    0,  113,    0,    0,  169,    0,    0,
    433         0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
    434       105,    0,  103,  103,    0,    0,  104,  104,    0,  104,
    435         0,  104,  102,  102,    0,    0,    0,    0,    0,    0,
    436         0,    0,    0,    0,   95,   95,   95,   95,   95,   95,
    437        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    438 
    439        95,   95,   95,   95,   95,   95,   20,   95,   23,   95,
    440        25,   95,   95,   95,   95,   95,   95,   39,   40,   95,
    441        95,   95,   95,   95,   95,   95,   52,   95,   63,   95,
    442        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    443        83,   95,   95,   90,   95,   95,    0,    0,    0,    0,
     395        0,    0,    0,    0,    0,    0,  113,  113,  116,  116,
     396      179,  177,    7,    9,    8,  136,  115,  100,  141,  144,
     397      112,  123,  124,  139,  137,  127,  138,  130,  140,  105,
     398      106,  107,  128,  129,  146,  148,  147,  149,  177,  100,
     399      121,  177,  122,  142,  100,  102,  100,  100,  100,  100,
     400      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
     401      100,  125,  145,  126,  143,    7,  177,    4,    4,  178,
     402      103,  178,  104,  113,  114,  120,  116,  117,    7,    9,
     403        0,    8,  153,  172,  100,    0,  165,  135,  158,  166,
     404      163,  150,  161,  151,  162,  160,    0,  110,    3,    0,
     405
     406      164,  110,  108,    0,    0,  108,  108,    0,    0,  108,
     407      107,  107,  107,    0,  107,  133,  134,  132,  154,  156,
     408      152,  157,  155,    0,    0,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,  101,  171,
     410        0,  115,  112,  100,    0,    0,  168,    0,  100,  100,
     411      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
     412      100,  100,  100,  100,  100,   39,  100,  100,  100,  100,
     413      100,  100,  100,  100,  100,  100,   57,  100,  100,  100,
     414      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
     415      100,  100,  167,  159,    7,    0,    0,    0,    2,    0,
     416
     417        5,  103,    0,    0,    0,  113,    0,  119,  118,  118,
     418        0,    0,    0,  116,    0,    0,    0,    0,    0,    0,
     419        0,    0,    0,    0,    0,    0,    0,    0,    0,  131,
     420      110,    0,  110,    0,    0,    6,    0,  108,    0,    0,
     421        0,  110,    0,  108,  108,  108,  108,    0,  109,    0,
     422        0,  107,  107,  107,  107,    0,  169,  170,    0,  175,
     423      173,    0,    0,    0,  101,    0,    0,    0,    0,    0,
     424        0,    0,    0,  100,   17,  100,  100,  100,  100,  100,
     425      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
     426      100,  100,   14,  100,  100,  100,  100,  100,  100,  100,
     427
     428      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
     429      100,   51,  100,  100,  100,   64,  100,  100,  100,  100,
     430      100,  100,  100,  100,  100,  100,  100,  100,   87,  100,
     431      100,  100,  100,  100,  100,  100,    0,    0,    0,    0,
     432        0,    0,    0,    0,  118,    0,    0,    0,    0,    0,
     433      118,    0,    0,  176,    0,    0,    0,    0,    0,    0,
     434        0,    0,  110,    0,    0,    0,  110,    0,  108,  108,
     435        0,    0,  109,  109,    0,  109,    0,  109,  107,  107,
    444436        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    445       113,    0,    0,    0,    0,    0,  105,    0,    0,    0,
    446         0,    0,    0,  104,  104,    0,  106,    0,  104,  104,
     437      174,  100,  100,  100,  100,  100,  100,  100,  100,  100,
     438
     439      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
     440      100,  100,  100,   21,  100,   24,  100,   27,  100,  100,
     441      100,  100,  100,  100,  100,   42,  100,   44,  100,  100,
     442      100,  100,  100,  100,  100,   56,  100,   67,  100,  100,
     443      100,  100,  100,  100,  100,  100,  100,  100,  100,   88,
     444      100,  100,   95,  100,  100,    0,    0,    0,    0,    0,
     445        0,    0,    0,    0,    0,    0,    0,    0,    0,  118,
     446        0,    0,    0,    0,    0,  110,    0,    0,    0,    0,
     447        0,    0,  109,  109,    0,  111,    0,  109,  109,    0,
    447448        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    448         0,    0,    0,   95,   95,   21,   95,   95,   95,   95,
    449 
    450        95,   95,   95,   15,   95,   95,   95,   95,   95,   95,
    451        95,   95,   95,   95,   95,   95,   95,   22,   24,   95,
    452        30,   95,   95,   95,   95,   38,   95,   95,   95,   45,
    453        95,   95,   50,   95,   95,   95,   95,   95,   71,   95,
    454        95,   95,   95,   95,   81,   95,   95,   88,   95,   95,
    455        94,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     449
     450        0,    0,  100,  100,   22,  100,  100,  100,  100,  100,
     451      100,  100,   15,  100,  100,  100,  100,  100,  100,  100,
     452      100,  100,  100,  100,  100,  100,   23,   25,  100,   32,
     453      100,  100,  100,  100,  100,   41,  100,  100,  100,  100,
     454       49,  100,  100,   54,  100,  100,  100,  100,  100,   75,
     455      100,  100,  100,  100,  100,   85,  100,  100,   93,  100,
     456      100,   99,    0,    0,    0,    0,    0,    0,    0,    0,
    456457        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    457       106,    0,    0,  104,  106,  106,    0,  104,    0,    0,
    458         0,    0,    0,    0,    0,    0,    0,    0,   95,    0,
    459        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
    460 
    461        95,   95,   95,   95,   95,   55,   95,   95,   95,   95,
    462        95,   95,   95,   26,   95,   95,   95,   37,   42,   95,
    463        95,   48,   95,   57,   64,   95,   95,   70,   72,   75,
    464        76,   78,   79,   95,   85,   95,   95,    0,    1,    0,
    465         0,    0,    0,    0,    0,   98,    0,    0,    0,  113,
    466         0,    0,    0,    0,  106,    0,    0,    0,    0,    0,
    467         0,    0,    0,    0,    0,   95,   95,   17,   95,   95,
    468        95,   95,   95,   95,   95,   16,   95,   95,   31,   95,
    469        95,   95,   95,   95,   95,   95,   95,   95,   95,   33,
    470        95,   35,   95,   44,   49,   95,   95,   84,   95,   95,
    471 
     458        0,  111,    0,    0,  109,  111,  111,    0,  109,    0,
     459        0,    0,    0,    0,    0,    0,    0,    0,    0,  100,
     460
     461        0,  100,  100,  100,  100,  100,  100,  100,  100,  100,
     462      100,  100,  100,  100,  100,  100,   59,  100,  100,  100,
     463      100,  100,  100,  100,  100,   28,  100,  100,  100,  100,
     464       40,   43,   46,  100,  100,   52,  100,   61,   68,  100,
     465      100,   74,   76,   79,   80,   82,   83,  100,  100,   90,
     466      100,  100,    0,    1,    0,    0,    0,    0,    0,    0,
     467      103,    0,    0,    0,  118,    0,    0,    0,    0,  111,
    472468        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    473         0,    0,    0,   10,   11,   27,   51,   95,   95,   95,
    474        95,   95,   95,   95,   95,   95,   95,   56,   58,   61,
    475        95,   95,   73,   86,   95,   34,   43,   66,   67,   89,
    476        91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    477         0,    0,    0,   95,   65,   95,   95,   12,   95,   28,
    478        32,   95,   95,   95,   62,   95,   95,   95,   95,    0,
     469      100,  100,   18,  100,  100,  100,  100,  100,  100,  100,
     470       16,  100,  100,   33,  100,  100,  100,  100,  100,  100,
     471
     472      100,  100,  100,  100,  100,   35,  100,   37,   38,  100,
     473       48,   53,  100,  100,  100,   89,  100,  100,    0,    0,
    479474        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    480         0,    0,   54,   95,   95,   95,   95,   95,   95,   46,
    481        59,   68,   74,   87,   92,    0,    0,    0,    0,    0,
    482 
    483         0,    0,    0,   95,   95,   13,   18,   29,   95,   95,
    484        95,    0,    0,   95,   95,   95,   95,   69,   93,   95,
    485        80,   19,   41,   77,    0
     475        0,   10,   11,   29,   55,  100,  100,  100,  100,  100,
     476      100,  100,  100,  100,  100,   60,   62,   65,  100,  100,
     477       77,   91,  100,  100,   36,   47,   70,   71,  100,   94,
     478       96,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     479        0,    0,    0,  100,   69,  100,  100,   12,  100,   30,
     480       34,  100,  100,  100,   66,  100,  100,  100,  100,  100,
     481      100,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     482
     483        0,    0,    0,    0,   58,  100,  100,  100,  100,  100,
     484      100,   50,   63,   72,   78,   92,   97,  100,  100,    0,
     485        0,    0,    0,    0,    0,    0,    0,  100,  100,   13,
     486       19,   31,  100,  100,  100,   26,   86,    0,    0,  100,
     487      100,  100,  100,   73,   98,  100,   84,   20,   45,   81,
     488        0
    486489    } ;
    487490
     
    496499       32,   33,   34,   35,   36,   37,   38,   39,   40,   41,
    497500       42,   11,   43,   11,   11,   44,   11,   45,   11,   46,
    498        11,   11,   47,   48,   49,   11,   11,   50,   11,   11,
    499        51,   52,   53,   54,   55,   56,   57,   58,   59,   60,
    500 
    501        61,   62,   63,   64,   65,   11,   66,   67,   68,   69,
    502        70,   71,   11,   72,   73,   74,   75,   76,   77,   78,
    503        79,   80,   81,   82,   83,   84,    1,    1,    1,    1,
     501       11,   47,   48,   49,   50,   11,   11,   51,   11,   11,
     502       52,   53,   54,   55,   56,   57,   58,   59,   60,   61,
     503
     504       62,   63,   64,   65,   66,   11,   67,   68,   69,   70,
     505       71,   72,   11,   73,   74,   75,   76,   77,   78,   79,
     506       80,   81,   82,   83,   84,   85,    1,    1,    1,    1,
    504507        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    505508        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    518521    } ;
    519522
    520 static yyconst flex_int32_t yy_meta[85] =
     523static yyconst flex_int32_t yy_meta[86] =
    521524    {   0,
    522525        1,    1,    2,    1,    1,    1,    1,    1,    3,    1,
    523526        4,    1,    1,    5,    1,    1,    1,    1,    1,    1,
    524527        6,    1,    7,    7,    7,    7,    7,    7,    1,    1,
    525         1,    1,    1,    1,    1,    8,    8,    8,    8,    8,
    526         8,    4,    4,    9,    4,   10,    4,    4,    9,    4,
    527         1,   11,    1,    1,   12,    1,    8,    8,    8,    8,
    528         8,    8,    4,    4,    4,    4,    9,    4,    4,    4,
    529        10,    4,    4,    4,    9,    4,    4,    4,    4,    4,
    530         1,    1,    1,    1
     528        1,    8,    1,    1,    1,    9,    9,    9,    9,    9,
     529        9,    4,    4,   10,    4,   11,    4,    4,    4,   10,
     530        4,    1,   12,    1,    1,   13,    1,    9,    9,    9,
     531        9,    9,    9,    4,    4,    4,    4,   10,    4,    4,
     532        4,   11,    4,    4,    4,   10,    4,    4,    4,    4,
     533        4,    1,    1,    1,    1
    531534    } ;
    532535
    533 static yyconst flex_int16_t yy_base[999] =
     536static yyconst flex_int16_t yy_base[1025] =
    534537    {   0,
    535         0,   83, 2266, 2265,   93,    0,  175,  176,  177,  178,
    536      2281, 2568,  189, 2568,  195,   54, 2568, 2223,   59,  171,
    537      2568, 2568, 2568,   55,  186, 2568,  189,  187,  202,  214,
    538       272,    0, 2241, 2568,  214, 2241,  150,  340, 2215,  222,
    539      2568,  157, 2568, 2234,  277, 2568,  192,  133,  196,  198,
    540       204,  271,  155,  218,  181,  200,  266,  238,  337,  224,
    541       227, 2568,  223, 2568, 2231,  372,  400, 2568, 2237, 2568,
    542      2206,  213, 2568,    0, 2568,  427,    0, 2568,  363, 2568,
    543       381,  393, 2568,  498, 2205,  229, 2568, 2568, 2568, 2568,
    544      2568, 2217, 2568, 2216, 2568, 2568, 2228,  558, 2568, 2240,
    545 
    546      2568,  603,  385,  443,  419,  259,  239,  280,  399,  406,
    547         0,  305,  240,  335,  411, 2568, 2568, 2568, 2210, 2568,
    548      2568, 2568, 2209, 2188,  215,  277, 2203,  310,  383,  384,
    549       327,  425,  380,  399, 2180,  448, 2130,  458, 2160,  288,
    550      2568, 2568,  486, 2151, 2150, 2568,  420,  423,  439,  456,
    551       445,  455,  460,  329,  483,  469,  462,  467,  480,  494,
    552       396,  471,  472,  487,  470,  513,  489,  506,  508,  509,
    553       386,  510,  516, 2152,  520,  522,  518,  541,  526,  543,
    554       540,  551,  549,  553,  565,  598,  572,  581,  557, 2568,
    555      2568,  669,  659, 2195,  686, 2568,  692, 2568, 2145,  559,
    556 
    557      2141, 2135,    0,  649, 2568, 2568,  679, 2134, 2133, 2127,
    558         0, 2149,  535,  606,  607,  674,  635,  625,  646,  664,
    559       689, 2146,  692,  693, 2119, 2118, 2568,  712,  723, 2568,
    560      2117, 2165, 2568,  714,    0,  555,  705,  759,  765,  776,
    561       593, 2568, 2123, 2099,    0,  784, 2141,  787,  632, 2568,
    562      2116, 2087,  798, 2568, 2568, 2119, 2568, 2568,  710,  725,
    563      2099, 2094,  720, 2090, 2089, 2085,    0, 2084,    0,  712,
    564       548,  710,  766,  767,  597,  745,  711,  777,  764,  788,
    565       720,  783,  792,  713,  639,  789,  611,  793, 2086,  794,
    566       791,  795,  810,  800,  805,  813,  814,  361,  818,  815,
    567 
    568       816,  821,  825,  822,  826,  828,  829,  836,  838, 2080,
    569       841,  842,  843,  839,  844,  845,  846,  849,  847,  853,
    570       855,  860, 2079,  859,  905,  864,  866,  872,  870,  871,
    571       933,  930, 2075, 2069, 2068,    0, 2067,    0,  920,  924,
    572      2061,    0, 2060,    0, 2059,    0, 2074, 2568,  919,  920,
    573      2054, 2051,    0, 2045,    0,  935,  941,  953,  963,  974,
    574       986,  996, 2568, 2568,  960,  961, 1013,  989, 1047,  926,
    575      1045,  968, 2568, 2568, 2044, 2043, 2037,    0, 2036,    0,
    576      2035,    0, 2014,    0,  874,  873,  987,  903,  931,  932,
    577       984,  920,  994,  995,  974,  976, 1009, 1024, 1017,  992,
    578 
    579      1029, 1027,  952, 1030, 1034, 1040, 2016, 1031, 2011, 1047,
    580      2010, 1049, 1043, 1054, 1038, 1056, 1057, 2009, 2003, 1052,
    581      1058, 1062, 1069, 1073, 1074, 1075, 2002, 1076, 2001, 1078,
    582      1079, 1082, 1083, 1085, 1081, 1086, 1092, 1089, 1099,  583,
    583      1108, 1095, 1087, 1995, 1097, 1109, 1160, 1991,    0, 1990,
    584         0, 1984,    0, 1983,    0, 1149, 1982,    0, 1978,    0,
    585      1977, 1976, 1972,    0, 1971,    0, 1156, 1162, 1207, 1121,
    586      1218, 1149, 1120, 1144, 2568, 1224, 1230, 1241, 1981, 1954,
    587      1959, 1957,    0, 1953,    0, 1951,    0, 1945,    0, 1944,
    588         0, 1943,    0, 1125, 1144, 1940, 1146, 1149, 1147, 1153,
    589 
    590      1150, 1218, 1162, 1110, 1156, 1155, 1164, 1211, 1224, 1225,
    591      1226,  164, 1228, 1208, 1170, 1232, 1238, 1939, 1938, 1235,
    592      1932, 1227, 1231, 1234, 1242, 1931, 1246, 1247, 1250, 1930,
    593      1252, 1255, 1924, 1257, 1261, 1254, 1256, 1258, 1923, 1264,
    594       709, 1271, 1262, 1268, 1922, 1273, 1277, 1916, 1274, 1279,
    595      1915, 1963, 1905,    0, 1904,    0, 1903,    0, 1897,    0,
    596      1896,    0, 1895,    0, 1891,    0, 1890,    0, 1322, 1328,
    597      1334, 1345, 1889, 2568, 1356, 2568, 1380, 2568, 1885,    0,
    598      1884,    0, 1883,    0, 1850,    0,    0,    0, 1852,    0,
    599      1342, 1281, 1315, 1322, 1333, 1289, 1283, 1338, 1340, 1336,
    600 
    601      1361, 1343, 1341, 1362, 1364, 1365, 1367, 1397, 1373, 1314,
    602      1376, 1375, 1377, 1847, 1378, 1380, 1382, 1846, 1845, 1381,
    603      1387, 1839, 1389, 1838, 1837, 1396, 1391, 1833, 1832, 1831,
    604      1827, 1826, 1825, 1392, 1818, 1407, 1394, 1846, 2568, 1793,
    605         0, 1792,    0,    0,    0, 1791,    0,    0,    0, 2568,
    606         0,    0,    0,    0, 1446, 1452, 1497, 1787,    0, 1786,
    607         0,    0,    0,    0, 1782, 1408, 1430, 1784, 1410, 1432,
    608      1437, 1411, 1412, 1443, 1433, 1783, 1447, 1445, 1457, 1413,
    609      1476, 1463, 1450, 1477, 1475, 1474, 1480, 1479, 1481, 1779,
    610      1482, 1778, 1483, 1777, 1773, 1464, 1485, 1772, 1490, 1486,
    611 
    612         0,    0, 1768, 1764, 1763, 1762, 1537,    0, 1758, 1757,
    613      1756, 1752, 1751, 1753, 1749, 1748, 1747, 1496, 1497, 1499,
    614      1502, 1493, 1492, 1501, 1518, 1519, 1547, 1738, 1522, 1737,
    615      1523, 1458, 1528, 1530, 1524, 1734, 1733, 1732, 1715, 1707,
    616      1706, 1700, 1694, 1691, 1683, 1682, 1663, 1662, 1661, 1653,
    617      1652, 1613, 1612, 1529, 1614, 1534, 1535, 1538, 1536, 1542,
    618      1613, 1543, 1562, 1546, 1612, 1544, 1548, 1554, 1550, 1608,
    619      1607, 1606, 1605, 1604, 1603, 1602, 1601, 1600, 1598, 1597,
    620      1567, 1566, 1505, 1552, 1560, 1565, 1563, 1571, 1564, 1286,
    621      1285, 1575, 1188, 1158, 1576, 1001,  997,  950,  901,  753,
    622 
    623       752,  642,  556, 1577, 1580,  519, 1584,  475, 1588, 1589,
    624      1590,  471,  407, 1582, 1583, 1594, 1596,  353,  298, 1595,
    625       274,  234,  233,  165, 2568, 1669, 1681, 1693, 1702, 1711,
    626      1723, 1732, 1744, 1756, 1768, 1775, 1784, 1790, 1796, 1802,
    627      1808, 1814, 1820, 1826, 1832, 1838, 1850, 1856, 1859, 1866,
    628      1868, 1874, 1880, 1886, 1888, 1894, 1899, 1911, 1923, 1929,
    629      1935, 1941, 1947, 1949, 1955, 1957, 1963, 1965, 1971, 1973,
    630      1979, 1981, 1987, 1989, 1995, 1997, 2003, 2010, 2016, 2022,
    631      2028, 2034, 2036, 2042, 2044, 2050, 2052, 2058, 2063, 2075,
    632      2081, 2087, 2089, 2095, 2097, 2103, 2105, 2111, 2113, 2119,
    633 
    634      2121, 2127, 2129, 2135, 2141, 2143, 2149, 2151, 2157, 2163,
    635      2169, 2171, 2177, 2179, 2185, 2187, 2193, 2195, 2201, 2203,
    636      2209, 2214, 2226, 2232, 2238, 2240, 2246, 2248, 2254, 2256,
    637      2262, 2264, 2270, 2272, 2278, 2280, 2286, 2288, 2294, 2296,
    638      2302, 2308, 2310, 2316, 2318, 2324, 2326, 2332, 2334, 2336,
    639      2341, 2347, 2355, 2361, 2367, 2369, 2375, 2377, 2379, 2384,
    640      2390, 2392, 2394, 2396, 2398, 2400, 2402, 2404, 2410, 2412,
    641      2418, 2420, 2422, 2424, 2426, 2435, 2441, 2443, 2445, 2451,
    642      2457, 2463, 2465, 2471, 2477, 2483, 2489, 2495, 2501, 2507,
    643      2513, 2519, 2525, 2531, 2537, 2543, 2549, 2555
    644 
     538        0,   84, 2247, 2245,   94,    0,  177,  178,  179,  180,
     539     2259, 2762,  191, 2762,  197,   55, 2762, 2203,   60,  173,
     540     2762, 2762, 2762,   56,  188, 2762,  191,  189,  204,  216,
     541      275,    0, 2222, 2762,  216, 2222,  152,  344,  155,  220,
     542     2762,  159, 2762,  217,  226, 2762,  185,  154,  212,  251,
     543      237,  270,  235,  257,  241,  193,  305,  314,  333,  238,
     544      228, 2762,  225, 2762, 2218,  402,  390, 2762, 2227, 2762,
     545     2193,  204, 2762,    0, 2762,  426,    0, 2762,  417, 2762,
     546      439,  451, 2762,  498, 2192,  235, 2762, 2762, 2762, 2762,
     547     2762, 2210, 2762, 2208, 2762, 2762, 2218,  559, 2762, 2235,
     548
     549     2762,  605,  413,  498,  516,  289,  253,  197,  293,  305,
     550        0,  319,  280,  231,  334, 2762, 2762, 2762, 2205, 2762,
     551     2762, 2762, 2203, 2200,  298,  356, 2213,  366,  429,  439,
     552      398,  434,  438,  448, 2194,  443, 2143,  459, 2172, 2762,
     553      335, 2762, 2762,  495, 2166, 2163, 2762, 2136,  460,  282,
     554      297,  329,  409,  437,  442,  281,  503,  414,  474,  372,
     555      484,  493,  378,  434,  433,  325,  494,  459,  499,  492,
     556      502,  509,  461,  301,  515,  535, 2164,  536,  520,  538,
     557      544,  541,  545,  567,  539,  421,  554,  563,  597,  570,
     558      571,  548, 2762, 2762,  652,  662, 2212,  668, 2762,  674,
     559
     560     2762, 2159,  567, 2153, 2152,    0,  645, 2762, 2762,  680,
     561     2151, 2149, 2146,    0, 2167,  466,  640,  646,  689,  688,
     562      650,  678,  679,  682, 2164,  685,  692, 2141, 2139, 2762,
     563      714,  707, 2762, 2136, 2186, 2762,  703,    0,  697,  760,
     564      766,  779,  801,  696, 2762, 2144, 2119,    0,  787, 2164,
     565      825,  698, 2762, 2138, 2111,  841, 2762, 2762, 2144, 2762,
     566     2762,  717,  718, 2123, 2122,  719, 2099, 2097, 2096,    0,
     567     2093,    0, 2062,  585,  589,  704,  610,  675,  703,  540,
     568      706,  707,  743,  726,  720,  745,  787,  709,  748,  715,
     569      756,  759, 2092,  761,  781,  792,  817,  785,  791,  808,
     570
     571      788,  818,  819,  807,  822,  821,  820,  832,  833,  834,
     572      835,  837,  838,  843,  845, 2091,  276,  847,  850,  846,
     573      849,  851,  852,  855,  853,  854,  856,  865, 2089,  867,
     574      904,  866,  873,  197,  874,  870,  938,  939, 2083, 2080,
     575     2079,    0, 2078,    0,  926,  930, 2076,    0, 2073,    0,
     576     2070,    0, 2091, 2762,  901,  912, 2070, 2066,    0, 2063,
     577        0,  935,  942,  953,  964,  976,  989,  998, 2762, 2762,
     578      939,  962, 1014,  987, 1023,  928, 1041, 1005, 2762, 2762,
     579     2060, 2059, 2058,    0, 2056,    0, 2053,    0, 2052,    0,
     580     2762,  911,  940,  976,  966,  881, 1003,  944, 1000,  974,
     581
     582      941, 1015, 1018, 1019, 1021, 1006, 1025, 1027, 1039, 1041,
     583     1012, 1046, 1048, 2054, 1047, 2052,  975, 2049, 1050, 1051,
     584     1057, 1052, 1053, 1054, 1058, 2048, 1068, 2047, 1072, 1055,
     585     1074, 1076, 1078, 1079, 1081, 2045, 1080, 2042, 1082, 1085,
     586     1084, 1087, 1086, 1091, 1094, 1088, 1095, 1096,  588, 1109,
     587     1111, 1110, 2038, 1113, 1114, 1166, 2031,    0, 2029,    0,
     588     2027,    0, 2024,    0, 1159, 2022,    0, 2020,    0, 2017,
     589     2014, 2013,    0, 2012,    0, 1166, 1172, 1218, 1131, 1229,
     590     1155, 1132, 1129, 2762, 1235, 1242, 1253, 2022, 1995, 2004,
     591     2003,    0, 2002,    0, 2000,    0, 1997,    0, 1994,    0,
     592
     593     1993,    0, 1149, 1120, 1995, 1153, 1159, 1164, 1156, 1167,
     594     1165, 1161,  233, 1211, 1219, 1162, 1186, 1229, 1173, 1185,
     595      166, 1235, 1236, 1222, 1237, 1242, 1993, 1249, 1241, 1990,
     596     1171, 1248, 1240, 1251, 1253, 1987, 1254, 1256, 1259, 1260,
     597     1986, 1261, 1264, 1985, 1268, 1270, 1267, 1272, 1274, 1983,
     598     1278,  921, 1280, 1281, 1282, 1290, 1283, 1288, 1980, 1293,
     599     1295, 1977, 2026, 1972,    0, 1970,    0, 1967,    0, 1964,
     600        0, 1963,    0, 1962,    0, 1960,    0, 1957,    0, 1341,
     601     1347, 1354, 1365, 1954, 2762, 1377, 2762, 1388, 2762, 1953,
     602        0, 1952,    0, 1950,    0, 1947,    0,    0,    0, 1949,
     603
     604        0, 1366, 1297, 1296, 1333, 1306, 1331, 1300, 1301, 1353,
     605     1115, 1343, 1367, 1355, 1372, 1373, 1299, 1383, 1402, 1375,
     606     1381, 1385, 1378, 1386, 1388, 1948, 1393, 1399, 1404, 1405,
     607     1946, 1943, 1942, 1407, 1406, 1941, 1411, 1939, 1906, 1409,
     608     1334, 1904, 1903, 1900, 1897, 1896, 1895, 1410, 1413, 1893,
     609     1412, 1416, 1940, 2762, 1884,    0, 1883,    0,    0,    0,
     610     1885,    0,    0,    0, 2762,    0,    0,    0,    0, 1464,
     611     1470, 1516, 1880,    0, 1877,    0,    0,    0,    0, 1876,
     612     1425, 1420, 1878, 1424, 1447, 1448, 1429, 1456, 1457, 1451,
     613     1876, 1462, 1463, 1475, 1471, 1493, 1481, 1494, 1496, 1495,
     614
     615     1497, 1499, 1466, 1500, 1483, 1873, 1502, 1872, 1871, 1482,
     616     1869, 1866, 1501, 1506, 1508, 1862, 1509, 1514,    0,    0,
     617     1855, 1851, 1835, 1834, 1560,    0, 1833, 1831, 1828, 1827,
     618     1826, 1827, 1824, 1823, 1822, 1516, 1520, 1522, 1417, 1515,
     619     1518, 1512, 1539, 1540, 1552, 1820, 1543, 1817, 1544, 1548,
     620     1551, 1556, 1545, 1526, 1816, 1815, 1813, 1810, 1550, 1809,
     621     1808, 1803, 1800, 1799, 1798, 1796, 1793, 1792, 1791, 1789,
     622     1786, 1785, 1784, 1557, 1785, 1558, 1562, 1561, 1565, 1566,
     623     1782, 1567, 1594, 1571, 1781, 1570, 1572, 1578, 1577, 1582,
     624     1583, 1777, 1775, 1768, 1766, 1765, 1762, 1761, 1760, 1758,
     625
     626     1741, 1732, 1731, 1728, 1724, 1576, 1588, 1590, 1591, 1601,
     627     1589, 1721, 1714, 1602, 1712, 1711, 1607, 1603, 1608, 1687,
     628     1686, 1685, 1678, 1676, 1675, 1633, 1632, 1609, 1611, 1632,
     629     1619, 1626, 1620, 1621, 1625, 1596, 1477, 1462, 1152, 1613,
     630     1614, 1627, 1631, 1119, 1016, 1615,  762,  725,  676,  549,
     631     2762, 1690, 1703, 1716, 1726, 1736, 1749, 1759, 1772, 1785,
     632     1798, 1806, 1816, 1823, 1830, 1837, 1844, 1851, 1858, 1865,
     633     1872, 1879, 1892, 1899, 1903, 1911, 1914, 1921, 1928, 1935,
     634     1938, 1945, 1951, 1964, 1977, 1984, 1991, 1998, 2005, 2008,
     635     2015, 2018, 2025, 2028, 2035, 2038, 2045, 2048, 2055, 2058,
     636
     637     2065, 2068, 2075, 2083, 2090, 2097, 2104, 2111, 2114, 2121,
     638     2124, 2131, 2134, 2141, 2147, 2160, 2167, 2174, 2177, 2184,
     639     2187, 2194, 2197, 2204, 2207, 2214, 2217, 2224, 2227, 2234,
     640     2241, 2244, 2251, 2254, 2261, 2268, 2275, 2278, 2285, 2288,
     641     2295, 2298, 2305, 2308, 2315, 2318, 2325, 2331, 2344, 2351,
     642     2358, 2361, 2368, 2371, 2378, 2381, 2388, 2391, 2398, 2401,
     643     2408, 2411, 2418, 2421, 2428, 2431, 2438, 2445, 2448, 2455,
     644     2458, 2465, 2468, 2475, 2478, 2481, 2487, 2494, 2503, 2510,
     645     2517, 2520, 2527, 2530, 2533, 2539, 2546, 2549, 2552, 2555,
     646     2558, 2561, 2564, 2567, 2574, 2577, 2584, 2587, 2590, 2593,
     647
     648     2596, 2606, 2613, 2616, 2619, 2626, 2633, 2640, 2643, 2650,
     649     2657, 2664, 2671, 2678, 2685, 2692, 2699, 2706, 2713, 2720,
     650     2727, 2734, 2741, 2748
    645651    } ;
    646652
    647 static yyconst flex_int16_t yy_def[999] =
     653static yyconst flex_int16_t yy_def[1025] =
    648654    {   0,
    649       825,    1,  826,  826,  825,    5,  827,  827,  828,  828,
    650       825,  825,  825,  825,  825,  825,  825,  829,  825,  825,
    651       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    652       825,   31,  825,  825,  825,  825,  825,  825,  830,  829,
    653       825,  825,  825,  825,  829,  825,  829,  829,  829,  829,
    654       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
    655       829,  825,  825,  825,  825,  825,  831,  825,  825,  825,
    656       832,  825,  825,  833,  825,  825,  834,  825,  825,  825,
    657       825,  825,  825,  825,  829,  825,  825,  825,  825,  825,
    658       825,  825,  825,  825,  825,  825,  825,  825,  825,  835,
    659 
    660       825,  825,   30,  825,  825,  825,  825,  836,   30,  825,
    661        31,  825,  825,   31,  825,  825,  825,  825,  825,  825,
    662       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    663       825,  825,  825,  825,  825,  825,  825,  825,  837,  825,
    664       825,  825,  829,  838,  839,  825,  829,  829,  829,  829,
    665       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
    666       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
    667       829,  829,  829,  829,  829,  829,  829,  829,  829,  829,
    668       829,  829,  829,  829,  829,  829,  829,  829,  829,  825,
    669       825,  825,  831,  831,  831,  825,  831,  825,  832,  825,
    670 
    671       840,  841,  833,  825,  825,  825,  825,  842,  843,  844,
    672       834,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    673       825,  825,  825,  825,  845,  846,  825,  825,  825,  825,
    674       228,  847,  825,  825,  103,  103,  825,  825,  825,  825,
    675       825,  825,  825,  825,  848,  849,  850,  825,  825,  825,
    676       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    677       825,  837,  825,  851,  852,  853,  854,  855,  856,  857,
    678       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    679       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    680       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    681 
    682       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    683       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    684       857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
    685       858,  859,  860,  861,  862,  863,  864,  865,  825,  825,
    686       866,  867,  868,  869,  870,  871,  825,  825,  825,  825,
    687       825,  872,  873,  874,  875,  825,  825,  825,  825,  825,
    688       825,  825,  825,  825,  876,  877,  878,  825,  825,  825,
    689       878,  825,  825,  825,  879,  880,  881,  882,  883,  884,
    690       885,  886,  887,  888,  889,  889,  889,  889,  889,  889,
    691       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    692 
    693       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    694       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    695       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    696       889,  889,  889,  889,  889,  889,  889,  889,  889,  889,
    697       889,  889,  889,  889,  889,  889,  890,  891,  892,  893,
    698       894,  895,  896,  897,  898,  825,  899,  900,  901,  902,
    699       903,  903,  904,  905,  906,  907,  825,  825,  825,  908,
    700       825,  908,  825,  825,  825,  825,  825,  825,  825,  825,
    701       909,  910,  911,  912,  913,  914,  915,  916,  917,  918,
    702       919,  920,  921,  922,  922,  922,  922,  922,  922,  922,
    703 
    704       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    705       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    706       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    707       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    708       922,  922,  922,  922,  922,  922,  922,  922,  922,  922,
    709       922,  923,  924,  925,  926,  927,  928,  929,  930,  931,
    710       932,  933,  934,  935,  936,  937,  938,  939,  825,  825,
    711       825,  825,  940,  825,  825,  825,  825,  825,  941,  942,
    712       943,  944,  945,  946,  947,  948,  949,  950,  951,  952,
    713       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    714 
    715       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    716       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    717       951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
    718       951,  951,  951,  951,  951,  951,  951,  953,  825,  954,
    719       955,  956,  957,  958,  959,  960,  961,  962,  963,  825,
    720       964,  965,  966,  967,  825,  825,  825,  968,  969,  970,
    721       971,  972,  973,  974,  975,  976,  976,  976,  976,  976,
    722       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    723       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    724       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    725 
    726       977,  978,  956,  979,  980,  981,  825,  982,  968,  970,
    727       983,  984,  975,  976,  976,  976,  976,  976,  976,  976,
    728       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    729       976,  976,  976,  976,  976,  976,  976,  976,  976,  976,
    730       976,  985,  986,  979,  987,  980,  988,  981,  989,  990,
    731       983,  991,  984,  976,  976,  976,  976,  976,  976,  976,
    732       976,  976,  976,  976,  976,  976,  976,  976,  976,  992,
    733       985,  993,  986,  994,  987,  995,  988,  996,  989,  997,
    734       990,  991,  976,  976,  976,  976,  976,  976,  976,  976,
    735       976,  976,  976,  976,  976,  998,  992,  993,  994,  995,
    736 
    737       970,  996,  997,  976,  976,  976,  976,  976,  976,  976,
    738       976,  998,  970,  976,  976,  976,  976,  976,  976,  976,
    739       976,  976,  976,  976,    0,  825,  825,  825,  825,  825,
    740       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    741       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    742       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    743       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    744       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    745       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    746       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    747 
    748       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    749       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    750       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    751       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    752       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    753       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    754       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    755       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    756       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    757       825,  825,  825,  825,  825,  825,  825,  825
    758 
     655      851,    1,  852,  852,  851,    5,  853,  853,  854,  854,
     656      851,  851,  851,  851,  851,  851,  851,  855,  851,  851,
     657      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     658      851,   31,  851,  851,  851,  851,  851,  851,  856,  855,
     659      851,  851,  851,  851,  855,  851,  855,  855,  855,  855,
     660      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
     661      855,  851,  851,  851,  851,  851,  857,  851,  851,  851,
     662      858,  851,  851,  859,  851,  851,  860,  851,  851,  851,
     663      851,  851,  851,  851,  855,  851,  851,  851,  851,  851,
     664      851,  851,  851,  851,  851,  851,  851,  851,  851,  861,
     665
     666      851,  851,   30,  851,  851,  851,  851,  862,   30,  851,
     667       31,  851,  851,   31,  851,  851,  851,  851,  851,  851,
     668      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     669      851,  851,  851,  851,  851,  851,  851,  851,  863,  851,
     670      851,  851,  851,  855,  864,  865,  851,  851,  855,  855,
     671      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
     672      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
     673      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
     674      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
     675      855,  855,  851,  851,  851,  857,  857,  857,  851,  857,
     676
     677      851,  858,  851,  866,  867,  859,  851,  851,  851,  851,
     678      868,  869,  870,  860,  851,  851,  851,  851,  851,  851,
     679      851,  851,  851,  851,  851,  851,  851,  871,  872,  851,
     680      851,  851,  851,  231,  873,  851,  851,  103,  103,  851,
     681      851,  851,  851,  851,  851,  851,  851,  874,  875,  876,
     682      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     683      851,  851,  851,  851,  863,  851,  877,  878,  879,  880,
     684      881,  882,  851,  883,  883,  883,  883,  883,  883,  883,
     685      883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
     686      883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
     687
     688      883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
     689      883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
     690      883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
     691      883,  883,  883,  883,  883,  883,  884,  885,  886,  887,
     692      888,  889,  890,  891,  851,  851,  892,  893,  894,  895,
     693      896,  897,  851,  851,  851,  851,  851,  898,  899,  900,
     694      901,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     695      902,  903,  904,  851,  851,  851,  904,  851,  851,  851,
     696      905,  906,  907,  908,  909,  910,  911,  912,  913,  914,
     697      851,  915,  915,  915,  915,  915,  915,  915,  915,  915,
     698
     699      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
     700      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
     701      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
     702      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
     703      915,  915,  915,  915,  915,  915,  915,  915,  915,  915,
     704      915,  915,  915,  915,  915,  916,  917,  918,  919,  920,
     705      921,  922,  923,  924,  851,  925,  926,  927,  928,  929,
     706      929,  930,  931,  932,  933,  851,  851,  851,  934,  851,
     707      934,  851,  851,  851,  851,  851,  851,  851,  851,  935,
     708      936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
     709
     710      946,  947,  948,  948,  948,  948,  948,  948,  948,  948,
     711      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
     712      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
     713      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
     714      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
     715      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
     716      948,  948,  949,  950,  951,  952,  953,  954,  955,  956,
     717      957,  958,  959,  960,  961,  962,  963,  964,  965,  851,
     718      851,  851,  851,  966,  851,  851,  851,  851,  851,  967,
     719      968,  969,  970,  971,  972,  973,  974,  975,  976,  977,
     720
     721      978,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     722      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     723      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     724      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     725      977,  977,  977,  977,  977,  977,  977,  977,  977,  977,
     726      977,  977,  979,  851,  980,  981,  982,  983,  984,  985,
     727      986,  987,  988,  989,  851,  990,  991,  992,  993,  851,
     728      851,  851,  994,  995,  996,  997,  998,  999, 1000, 1001,
     729     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     730     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     731
     732     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     733     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003, 1004,
     734      982, 1005, 1006, 1007,  851, 1008,  994,  996, 1009, 1010,
     735     1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     736     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     737     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     738     1002, 1011, 1012, 1005, 1013, 1006, 1014, 1007, 1015, 1016,
     739     1009, 1017, 1010, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     740     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     741     1002, 1018, 1011, 1019, 1012, 1020, 1013, 1021, 1014, 1022,
     742
     743     1015, 1023, 1016, 1017, 1002, 1002, 1002, 1002, 1002, 1002,
     744     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1024,
     745     1018, 1019, 1020, 1021,  996, 1022, 1023, 1002, 1002, 1002,
     746     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1024,  996, 1002,
     747     1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002,
     748        0,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     749      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     750      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     751      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     752      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     753
     754      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     755      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     756      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     757      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     758      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     759      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     760      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     761      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     762      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     763      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     764
     765      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     766      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     767      851,  851,  851,  851
    759768    } ;
    760769
    761 static yyconst flex_int16_t yy_nxt[2653] =
     770static yyconst flex_int16_t yy_nxt[2848] =
    762771    {   0,
    763772       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    765774       28,   29,   30,   31,   32,   32,   32,   32,   33,   34,
    766775       35,   36,   37,   38,   39,   18,   18,   18,   18,   18,
    767        18,   18,   18,   40,   18,   18,   18,   18,   40,   18,
    768        41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
    769        51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
    770        18,   56,   57,   58,   59,   60,   61,   18,   18,   18,
    771        62,   63,   64,   65,   66,   83,   91,   84,   84,   66,
    772        87,   88,   67,   70,   70,   70,   70,   70,   70,   70,
    773 
    774        70,   70,   70,   71,   70,   70,   70,   70,   70,   70,
     776       18,   18,   18,   40,   18,   18,   18,   18,   18,   40,
     777       18,   41,   42,   43,   44,   45,   46,   47,   48,   49,
     778       50,   51,   52,   53,   18,   54,   18,   55,   18,   18,
     779       18,   18,   56,   57,   58,   59,   60,   61,   18,   18,
     780       18,   62,   63,   64,   65,   66,   83,   91,   84,   84,
     781       66,   87,   88,   67,   70,   70,   70,   70,   70,   70,
     782
     783       70,   70,   70,   70,   71,   70,   70,   70,   70,   70,
    775784       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
    776        70,   70,   70,   70,   70,   70,   70,   70,   71,   71,
     785       70,   70,   70,   70,   70,   70,   70,   70,   70,   71,
    777786       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    778        71,   71,   71,   70,   72,   70,   70,   71,   73,   71,
     787       71,   71,   71,   71,   71,   70,   72,   70,   70,   71,
     788       73,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    779789       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    780        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    781        71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
    782        78,  122,  123,   89,   86,   78,   78,  608,   75,   75,
    783        79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
    784 
    785        82,   81,   90,   92,  158,  144,   86,   97,   94,   98,
    786        98,   98,   98,   98,   98,   86,   86,   93,   99,   84,
    787        95,   96,   84,  100,  173,  117,   76,   76,   76,   76,
    788       141,  145,   86,  101,  102,  142,  103,  103,  103,  103,
    789       104,  104,  118,   86,  119,  120,  256,   86,  257,   86,
    790       176,   86,  159,  105,  190,   86,  177,  106,  162,  160,
    791       178,  201,  107,  108,  156,  161,  157,  163,  109,   86,
    792       165,  164,  166,   86,  105,   86,  143,  225,   86,  174,
    793       110,  167,  243,  251,   86,   86,  175,  202,  107,   86,
    794       189,  108,  102,  188,  111,  111,  111,  111,  111,  111,
    795 
    796       245,  183,  241,  226,  191,  244,  252,  242,  256,  184,
    797       257,  105,  147,  148,  149,  112,  185,   86,  150,  151,
    798       113,  152,   86,  153,  154,   86,  114,  168,   86,  179,
    799       180,  155,  105,  242,  247,  169,  264,  170,  115,  181,
    800       171,  256,  182,  257,  172,  141,  113,  124,  249,   86,
    801       142,  125,  126,  250,  127,  825,  128,  129,  256,  130,
    802       257,  131,  265,  186,   79,   80,   81,   81,   81,   79,
    803       132,  133,  134,  192,   80,   81,   81,   81,  192,  250,
    804        86,  193,   81,   80,   81,   81,   81,   81,   86,  253,
    805       135,  143,  278,  136,   81,   80,   82,   82,   82,   81,
    806 
    807       258,  195,  196,  258,   86,  187,  195,  235,  235,  235,
    808       235,  256,   86,  257,  256,  256,  257,  257,  416,  825,
    809       137,  138,  197,  197,  197,  197,  197,  197,  204,  205,
    810       256,  260,  257,  204,  825,  206,  238,   86,  238,  236,
    811       206,  239,  239,  239,  239,  239,  239,   86,  825,  207,
    812       207,  207,  207,  248,  242,  259,  256,  306,  257,  250,
    813       206,  825,  825,  102,  296,  104,  104,  104,  104,  104,
    814       104,   86,  241,  240,   86,  208,  825,  249,  206,  256,
    815       242,  257,  105,  206,  206,  250,  270,  206,  206,  256,
    816        86,  257,  272,  271,  141,  206,   86,  237,  206,  142,
    817 
    818       206,  209,  206,  105,  210,  212,   86,   86,  273,  213,
    819       214,   86,  275,   86,  215,  216,  274,  217,   86,  218,
    820        86,   86,   86,   86,  276,  825,   86,  291,  219,  220,
    821       221,   86,  297,  277,   86,  290,  289,   86,   86,  279,
    822        86,  280,  300,  281,  282,   86,  298,  283,  222,  284,
    823       294,  223,  292,  293,  285,  286,  287,   86,  288,   86,
    824        86,   86,  302,  295,   86,  299,  347,   86,  348,   86,
    825        86,   86,  303,   86,  312,  825,  304,   86,  305,  224,
    826       228,  228,  228,  228,  228,  228,  309,  301,  307,  308,
    827       311,   86,   86,  310,   86,  316,  319,  229,  230,   86,
    828 
    829        86,  230,   86,  313,   86,  317,  141,  333,   86,  360,
    830       825,  320,  231,  314,  315,  321,   86,  386,  229,  230,
    831       322,  330,  318,   86,  230,   98,   98,   98,   98,   98,
    832        98,  323,   86,  334,   86,  324,  326,  347,  347,  348,
    833       348,  363,  229,  230,  327,  328,  230,  329,   86,   86,
    834       204,  205,  325,  390,  348,  204,  347,  234,  348,  545,
    835       195,  196,   86,  229,  230,  195,  347,  363,  348,  230,
    836       192,   80,   81,   81,   81,  192,  349,  347,  193,  348,
    837       373,  197,  197,  197,  197,  197,  197,  195,  196,  405,
    838        86,  348,  195,  331,  196,  347,  825,  348,  331,  403,
    839 
    840       332,  339,  339,  339,  339,  347,  373,  348,  197,  197,
     790       71,   71,   71,   71,   71,   70,   70,   70,   70,   75,
     791       75,   78,   78,  122,  123,   89,  140,   78,   78,  619,
     792       75,   75,   79,   80,   81,   81,   81,   79,   81,   80,
     793
     794       82,   82,   82,   81,   90,   92,   86,  141,  145,   97,
     795       94,   98,   98,   98,   98,   98,   98,  248,   86,   93,
     796       99,   84,   95,   96,   84,  100,  160,  117,  142,   76,
     797       76,   76,   76,  143,  146,  101,  102,   86,  103,  103,
     798      103,  103,  104,  104,  118,   86,  119,  120,  147,   86,
     799      148,  851,  250,  204,  181,  105,  193,  453,  158,  106,
     800      159,  149,  150,  151,   86,  107,  108,  152,  153,  161,
     801      154,  109,   86,  155,  156,  144,  162,  105,   86,  205,
     802       86,  157,  163,  110,  228,   86,  256,   86,  611,   86,
     803       86,  107,  192,   86,  108,  102,  246,  111,  111,  111,
     804
     805      111,  111,  111,   86,  168,  176,  169,  194,  191,   86,
     806      229,  179,  164,  851,  105,  170,  165,  180,  112,  177,
     807      247,  166,   86,  254,  113,  167,  178,  171,   86,  259,
     808      114,  260,  244,   86,   86,  172,  105,  173,  245,  438,
     809      174,  142,  115,  851,  175,  282,  143,  255,  251,   86,
     810      113,  124,  276,   86,  245,  125,  126,   86,  127,  189,
     811      128,  129,  252,  130,  245,  131,   86,  277,  253,  182,
     812      183,  851,  244,  312,  132,  133,  134,   86,  186,  184,
     813      245,   86,  185,  253,  267,   86,  187,  259,  144,  260,
     814      278,  198,  199,  188,  253,  135,  198,  259,  136,  260,
     815
     816      303,  252,  190,  195,   80,   81,   81,   81,  195,  253,
     817      268,  196,  200,  200,  200,  200,  200,  200,   79,   80,
     818       81,   81,   81,   79,   86,  137,  138,  207,  208,  259,
     819       86,  260,  207,  295,  209,  238,  238,  238,  238,  209,
     820       81,   80,   81,   81,   81,   81,  261,  300,  210,  210,
     821      210,  210,   81,   80,   82,   82,   82,   81,  261,  209,
     822      259,   86,  260,  851,  262,  259,   86,  260,  239,  259,
     823      259,  260,  260,   86,  259,  211,  260,  279,  209,  259,
     824      263,  260,  293,  209,  209,   86,   86,  209,  209,   86,
     825      259,  851,  260,  328,   86,  209,  301,  353,  209,  354,
     826
     827      209,  212,  209,  142,  213,  215,  302,  280,  143,  216,
     828      217,   86,   86,   86,  218,  219,  281,  220,  102,  221,
     829      104,  104,  104,  104,  104,  104,   86,  274,  222,  223,
     830      224,  311,  305,  241,  275,  241,   86,  105,  242,  242,
     831      242,  242,  242,  242,   86,   86,   86,   86,  294,  225,
     832      298,   86,  226,  240,   86,   86,  306,  296,  297,  105,
     833      283,   86,  284,  299,  285,  286,  308,   86,  287,  309,
     834      288,  243,   86,  304,  307,  289,  290,  291,  310,  292,
     835      227,  231,  231,  231,  231,  231,  231,   86,   86,  317,
     836       86,   86,   86,   86,  313,  318,   86,   86,  232,  233,
     837
     838       86,   86,  233,  315,  327,  142,   86,  319,  323,  314,
     839      316,  322,  398,  336,  234,   86,  339,  320,  321,   86,
     840      232,  233,   86,   86,  325,  324,  233,   98,   98,   98,
     841       98,   98,   98,  329,  330,  332,  334,   86,  335,  326,
     842       86,   86,  340,  333,  232,  233,  207,  208,  233,   86,
     843      392,  207,  331,  195,   80,   81,   81,   81,  195,  393,
     844      237,  196,   86,  198,  199,  556,  232,  233,  198,  198,
     845      199,  353,  233,  354,  198,  337,  199,  353,  395,  354,
     846      337,  353,  338,  354,  200,  200,  200,  200,  200,  200,
     847      200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
     848
     849      200,  200,  345,  345,  345,  345,  354,  354,  355,  353,
     850      353,  354,  354,  353,  356,  354,  353,  851,  354,  353,
     851      353,  354,  354,  353,  362,  354,  362,   86,   86,  363,
     852      363,  363,  363,  363,  363,  346,  231,  231,  231,  231,
     853      231,  231,  232,  233,  396,  369,  233,  379,  259,  259,
     854      260,  260,  366,  232,  233,   86,   86,  233,   86,   86,
     855      397,   86,  364,  399,  232,  233,  409,   86,  381,  234,
     856      233,  369,   86,  379,  394,  232,  233,   86,   86,  400,
     857      411,  233,  104,  104,  104,  104,  104,  104,  242,  242,
     858      242,  242,  242,  242,  382,   86,  404,   86,  405,  105,
     859
     860       86,  367,  367,  367,  367,  367,  367,  372,   86,  410,
     861      401,   86,  406,   86,   86,  251,  402,  403,  241,  233,
     862      241,  105,  233,  242,  242,  242,  242,  242,  242,  413,
     863      374,  414,  375,   86,  368,  412,  376,   86,  415,   86,
     864       86,  233,  377,   86,   86,  422,  233,  104,  104,  104,
     865      104,  104,  104,  416,  378,  407,  408,  418,  375,   86,
     866       86,  419,  376,  111,  111,  111,  111,  111,  111,   86,
     867       86,   86,   86,   86,   86,  423,  417,  424,  425,  427,
     868      251,  420,  421,  426,   86,   86,   86,   86,  428,   86,
     869       86,  431,  432,  429,  433,   86,  256,   86,   86,   86,
     870
     871      430,   86,   86,   86,   86,   86,   86,   86,   86,  435,
     872      437,  434,  142,  436,  439,  440,  445,   86,   86,   86,
     873      441,  444,   86,  443,  442,   86,   86,  446,  450,  447,
     874      448,  454,  353,   86,  354,  449,  451,  455,  452,  337,
     875      199,  199,  507,  353,  337,  354,  338,  197,  209,  209,
     876      209,  209,  345,  345,  345,  345,   86,  363,  363,  363,
     877      363,  363,  363,   86,  476,  476,  476,  476,  476,  476,
     878      362,  488,  362,   86,  503,  363,  363,  363,  363,  363,
     879      363,  465,  233,  644,  480,  233,  231,  231,  231,  231,
     880      231,  231,   86,   86,  481,  489,   86,  477,  238,  238,
     881
     882      238,  238,  104,  104,  233,  509,  512,  480,  504,  233,
     883      480,  367,  367,  367,  367,  367,  367,  482,   86,  365,
     884      367,  367,  367,  367,  367,  367,   86,   86,   86,  233,
     885      483,  366,  233,  480,  372,  511,  484,  506,  233,  528,
     886      485,  233,  485,  505,  368,  486,  486,  486,  486,  486,
     887      486,  233,   86,  478,  484,   86,  233,  374,   86,  375,
     888      233,  851,  484,  376,   86,  233,  508,   86,   86,  377,
     889       86,   86,  483,   86,  510,  524,  518,   86,  487,   86,
     890      484,  378,  519,  513,  374,  375,  375,  515,  516,  376,
     891      376,   86,  514,   86,  520,  517,  490,  522,   86,   86,
     892
     893       86,  521,   86,   86,   86,   86,   86,   86,  378,   86,
     894       86,  534,  375,  527,  523,  526,  376,  525,  531,  536,
     895       86,  535,  532,  529,   86,  530,   86,  533,   86,  539,
     896       86,   86,   86,   86,   86,  537,   86,   86,   86,   86,
     897       86,  540,  544,   86,  538,  542,   86,   86,   86,  545,
     898      541,  543,  551,  553,  554,  555,  548,  546,  547,  549,
     899      550,   86,   86,   86,  552,   86,   86,   86,  199,  557,
     900      691,   86,   86,  560,  563,  562,  480,  480,  585,  558,
     901      559,  209,  209,  209,  209,  603,  481,  561,  476,  476,
     902      476,  476,  476,  476,  476,  476,  476,  476,  476,  476,
     903
     904      480,   86,  480,  480,  585,   86,  233,  851,   86,  233,
     905      584,   86,  233,   86,   86,  233,   86,   86,  602,   86,
     906      604,  477,  609,   86,  610,   86,  480,  580,  233,  606,
     907      607,  605,  608,  233,  233,  614,  617,   86,   86,  233,
     908      367,  367,  367,  367,  367,  367,  581,  615,  581,  627,
     909      618,  582,  582,  582,  582,  582,  582,  486,  486,  486,
     910      486,  486,  486,   86,  586,  586,  586,  586,  586,  586,
     911      485,   86,  485,  478,   86,  486,  486,  486,  486,  486,
     912      486,   86,  587,  612,  583,  587,  616,   86,   86,   86,
     913      613,  622,   86,   86,   86,  625,  620,  588,  623,  624,
     914
     915       86,   86,  626,   86,  587,   86,   86,  629,   86,  587,
     916      621,   86,   86,   86,  631,  632,   86,  628,  630,   86,
     917       86,  637,   86,  634,   86,  633,   86,  635,  636,  638,
     918       86,  639,   86,   86,   86,   86,  648,  641,  643,  645,
     919       86,  640,   86,  642,  649,   86,  647,   86,   86,   86,
     920      650,   86,   86,   86,  697,  646,  683,  684,   86,  688,
     921      652,  689,  651,  476,  476,  476,  476,  476,  476,  582,
     922      582,  582,  582,  582,  582,  686,  670,  670,  670,  670,
     923      670,  670,  581,   86,  581,   86,   86,  582,  582,  582,
     924      582,  582,  582,  714,  587,   86,  580,  587,  685,  586,
     925
     926      586,  586,  586,  586,  586,   86,  687,   86,  692,  671,
     927      586,  586,  586,  586,  586,  586,  587,  587,   86,   86,
     928      587,  587,  690,  681,   86,   86,  699,   86,  587,  694,
     929       86,  587,  588,   86,  693,   86,  682,   86,   86,  587,
     930       86,  695,  700,  672,  587,   86,  702,  696,  703,  705,
     931      587,   86,  698,  701,   86,  587,   86,   86,   86,   86,
     932      704,   86,   86,   86,   86,   86,  709,  706,   86,   86,
     933      713,  715,   86,  717,  707,  716,   86,   86,  708,  710,
     934      712,   86,  733,  718,  777,  711,  670,  670,  670,  670,
     935      670,  670,  670,  670,  670,  670,  670,  670,  732,   86,
     936
     937       86,  737,  734,   86,  587,  736,  735,  587,   86,   86,
     938      587,  738,  739,  587,   86,   86,  745,  851,   86,  671,
     939      741,  740,  748,   86,  742,  725,  587,   86,  752,   86,
     940      743,  587,  587,   86,   86,   86,  746,  587,  586,  586,
     941      586,  586,  586,  586,  744,   86,   86,   86,   86,   86,
     942      749,   86,   86,   86,   86,  747,  754,  756,   86,  751,
     943       86,   86,  750,  755,   86,  753,   86,   86,   86,  760,
     944       86,  672,   86,  757,   86,  761,  783,  778,   86,  776,
     945      758,  759,  670,  670,  670,  670,  670,  670,  774,  775,
     946      780,   86,   86,  779,  781,   86,   86,   86,  784,  785,
     947
     948       86,  790,   86,   86,   86,  782,  787,  786,   86,   86,
     949       86,  788,  789,   86,   86,  725,  808,   86,   86,   86,
     950      812,  810,   86,   86,   86,  791,  813,  815,   86,   86,
     951       86,  806,  807,  816,   86,   86,  805,  811,  817,  809,
     952       86,   86,   86,   86,  814,  830,   86,  829,   86,  828,
     953      818,  819,  831,   86,   86,   86,  832,  834,  833,   86,
     954       86,   86,  835,   86,  836,   86,   86,   86,  841,  837,
     955      840,   86,   86,   86,  842,  843,  844,   86,   86,   86,
     956      845,  847,  848,   86,   86,  846,  849,  851,  851,  850,
     957       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
     958
     959       68,   68,   68,   74,   74,   74,   74,   74,   74,   74,
     960       74,   74,   74,   74,   74,   74,   77,   77,   77,   77,
     961       77,   77,   77,   77,   77,   77,   77,   77,   77,   85,
     962      839,  851,   85,  851,   85,   85,   85,   85,   85,  139,
     963      851,  851,  838,  139,  139,  139,  139,  139,  139,  197,
    841964      197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
    842       347,  350,  348,  347,  347,  348,  348,  104,  104,  104,
    843       104,  104,  104,  340,  228,  228,  228,  228,  228,  228,
    844       356,  256,  356,  257,  105,  357,  357,  357,  357,  357,
    845       357,  229,  230,  229,  230,  230,  256,  230,  257,  248,
    846        86,   86,   86,   86,   86,  105,  231,  392,  375,  402,
    847       630,   86,  229,  230,  229,  230,  385,  358,  230,  387,
    848       230,  239,  239,  239,  239,  239,  239,  361,  361,  361,
    849       361,  361,  361,  238,  376,  238,   86,  398,  239,  239,
    850 
    851       239,  239,  239,  239,  366,  230,  813,  825,  230,  104,
    852       104,  104,  104,  104,  104,   86,  391,   86,   86,  362,
    853       111,  111,  111,  111,  111,  111,  230,  368,   86,  369,
    854       394,  230,  370,  388,   86,  389,  395,  396,  371,   86,
    855        86,  248,   86,   86,   86,   86,   86,  408,  393,  399,
    856       372,   86,  253,  404,  369,  409,   86,  397,  370,  400,
    857       401,   86,  406,  407,   86,   86,   86,   86,  410,   86,
    858       415,  411,   86,   86,  412,  418,   86,   86,  422,   86,
    859        86,  420,  423,  419,  424,  413,  414,   86,  417,   86,
    860        86,  421,   86,   86,   86,   86,   86,   86,   86,  426,
    861 
    862        86,  425,  428,  429,   86,  427,   86,  431,  430,  436,
    863        86,   86,  432,  141,  435,   86,  434,   86,  433,  441,
    864       437,   86,   86,   86,   86,   86,  445,  438,  439,  440,
    865       443,  444,  196,  442,  331,  196,  494,  446,  194,  331,
    866       495,  332,  206,  206,  206,  206,  339,  339,  339,  339,
    867       347,  347,  348,  348,   86,  825,   86,  357,  357,  357,
    868       357,  357,  357,  467,  467,  467,  467,  467,  467,  479,
    869       356,   86,  356,  497,  456,  357,  357,  357,  357,  357,
    870       357,  230,   86,   86,  230,  228,  228,  228,  228,  228,
    871       228,  498,  480,  501,  499,  468,  235,  235,  235,  235,
    872 
    873       104,  104,  230,   86,  825,  471,  471,  230,  361,  361,
    874       361,  361,  361,  361,  472,  473,  475,  359,  361,  361,
    875       361,  361,  361,  361,  514,   86,  230,   86,  360,  230,
    876       471,  471,  474,  366,  474,   86,  230,  475,   86,  230,
    877       362,  504,  475,   86,  500,   86,   86,  230,  510,  505,
    878       469,  825,  230,  496,  502,  812,  368,  230,  369,  503,
    879        86,  370,  230,  475,  476,  825,  476,  371,   86,  477,
    880       477,  477,  477,  477,  477,   86,  506,  507,   86,  372,
    881        86,   86,   86,  369,  513,   86,  509,  370,  368,   86,
    882       369,   86,  515,  370,   86,  511,  518,  508,   86,  481,
    883 
    884        86,  478,  512,   86,  516,   86,  517,   86,   86,   86,
    885       519,  372,  524,   86,  522,  369,  521,  526,  523,  370,
    886        86,  520,  525,  527,   86,   86,   86,   86,  529,   86,
    887        86,  528,   86,   86,   86,  533,   86,   86,   86,  531,
    888        86,  540,  530,   86,  534,  532,   86,  543,   86,  549,
    889        86,  536,  535,  537,  538,  541,  542,  544,  539,   86,
    890        86,   86,  196,  548,  600,  471,  471,  546,  552,  551,
    891       550,  206,  206,  206,  206,  472,   86,  547,  467,  467,
    892       467,  467,  467,  467,  467,  467,  467,  467,  467,  467,
    893       471,  471,  574,  591,  471,   86,  230,   86,   86,  230,
    894 
    895        86,   86,  230,  573,   86,  230,   86,   86,  592,   86,
    896       468,  595,  593,   86,  597,   86,  569,  230,  574,  471,
    897       594,   86,  230,  230,  599,  602,  596,  601,  230,  361,
    898       361,  361,  361,  361,  361,  570,  603,  570,  611,   86,
    899       571,  571,  571,  571,  571,  571,  477,  477,  477,  477,
    900       477,  477,  575,  575,  575,  575,  575,  575,  476,   86,
    901       476,  469,   86,  477,  477,  477,  477,  477,  477,   86,
    902       576,  604,  572,  576,  598,   86,   86,   86,   86,   86,
    903       605,  610,   86,   86,  577,   86,   86,  606,  609,   86,
    904       607,  576,  612,   86,  613,  614,  576,   86,   86,  616,
    905 
    906       617,   86,  618,   86,  615,   86,   86,   86,   86,   86,
    907       620,  623,   86,   86,  619,   86,  621,  624,  622,   86,
    908       627,  625,   86,  629,   86,   86,  628,  626,   86,  631,
    909        86,  633,   86,  634,   86,  632,   86,   86,  635,  668,
    910        86,  673,  636,  637,  467,  467,  467,  467,  467,  467,
    911       571,  571,  571,  571,  571,  571,  655,  655,  655,  655,
    912       655,  655,  570,  672,  570,   86,   86,  571,  571,  571,
    913       571,  571,  571,   86,  576,  669,  569,  576,  575,  575,
    914       575,  575,  575,  575,   86,  686,  670,   86,  656,   86,
    915       676,   86,   86,   86,   86,  576,  576,  674,  666,  576,
    916 
    917       576,  671,  575,  575,  575,  575,  575,  575,  675,  678,
    918       577,  667,   86,   86,  679,   86,   86,  576,   86,  682,
    919       576,  684,  576,  576,   86,  677,   86,   86,   86,   86,
    920       680,   86,   86,   86,  657,  683,  687,  681,   86,  685,
    921        86,  576,   86,   86,  688,   86,  576,   86,   86,  697,
    922       689,  690,  693,  698,  691,  692,  696,  695,   86,   86,
    923       700,   86,   86,   86,   86,  694,  720,  699,  655,  655,
    924       655,  655,  655,  655,  655,  655,  655,  655,  655,  655,
    925       714,   86,  719,   86,   86,  726,  576,  716,   86,  576,
    926       717,  715,  576,  718,   86,  576,   86,  721,   86,  727,
    927 
    928       656,   86,  722,  730,  723,  724,  707,  576,   86,   86,
    929       729,  725,  576,  576,   86,   86,  766,  728,  576,  575,
    930       575,  575,  575,  575,  575,   86,   86,   86,   86,  731,
    931        86,   86,   86,   86,   86,  738,   86,   86,  732,  733,
    932       734,   86,  736,   86,   86,  735,  741,   86,   86,  740,
    933        86,  657,   86,   86,  758,  756,   86,  737,  739,  655,
    934       655,  655,  655,  655,  655,  755,  759,  754,  757,   86,
    935        86,  763,  761,   86,   86,   86,  764,  765,  760,   86,
    936        86,   86,  767,  762,  768,   86,   86,   86,  790,   86,
    937       769,  707,  786,   86,   86,   86,  788,   86,   86,   86,
    938 
    939       791,   86,  793,   86,  785,   86,  784,  783,  794,  787,
    940       795,   86,  789,   86,   86,   86,   86,  792,  805,  806,
    941       825,  825,   86,  807,  804,  808,   86,   86,   86,  810,
    942       811,   86,  809,   86,   86,   86,  815,  814,  816,   86,
    943        86,   86,  817,  818,  819,   86,   86,   86,  822,  821,
    944       823,  803,  825,  820,  802,  825,  800,  825,  799,  825,
    945       798,  825,  797,   86,   86,   86,  825,  782,  824,   68,
    946        68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
    947        68,   74,   74,   74,   74,   74,   74,   74,   74,   74,
    948        74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
    949 
    950        77,   77,   77,   77,   77,   85,  825,  781,   85,   85,
    951        85,   85,   85,   85,  139,  779,  825,  777,  139,  139,
    952       139,  139,  139,  194,  194,  194,  194,  194,  194,  194,
    953       194,  194,  194,  194,  194,  199,  825,  775,  199,  199,
    954       199,  199,  199,  199,  203,  825,  203,  203,  773,  203,
    955       203,  203,  203,  203,  771,  203,  211,   86,   86,  211,
    956       211,  211,  211,  211,  211,  211,   86,  211,  232,  232,
    957       232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
    958       246,  246,  246,   86,   86,   86,  246,  262,   86,   86,
    959       262,  262,  262,  262,  262,  262,  266,  266,   86,   86,
    960 
    961        86,  266,  268,  268,   86,  825,  753,  268,  335,  335,
    962       751,  825,  825,  335,  337,  337,  748,  746,  744,  337,
    963       341,  341,  825,   86,   86,  341,  343,  343,   86,   86,
    964        86,  343,  345,  345,   86,   86,  713,  345,  352,  352,
    965       710,  709,  200,  352,  354,  354,  703,  702,  639,  354,
    966       232,  232,  232,  232,  232,  232,  232,  232,  232,  232,
    967       232,  232,  365,  365,  367,  367,  367,  367,  367,   86,
    968       367,  246,  246,  246,  377,  377,   86,   86,   86,  377,
    969       379,  379,   86,   86,   86,  379,  381,  381,   86,   86,
    970        86,  381,  266,  266,  383,  383,   86,   86,   86,  383,
    971 
    972       268,  268,   85,   86,  664,   85,   85,   85,   85,   85,
    973        85,  194,  194,  194,  194,  194,  194,  194,  194,  194,
    974       194,  194,  194,  447,  447,  447,  447,  447,  447,  447,
    975       447,  447,  447,  447,  447,  448,  448,  663,  661,  659,
    976       448,  450,  450,  573,  654,  653,  450,  452,  452,  651,
    977       649,  647,  452,  335,  335,  454,  454,  645,  643,  641,
    978       454,  337,  337,  457,  457,  639,   86,   86,  457,  341,
    979       341,  459,  459,   86,   86,   86,  459,  343,  343,  461,
    980       461,   86,   86,   86,  461,  345,  345,  463,  463,   86,
    981        86,   86,  463,  352,  352,  465,  465,  590,  588,  586,
    982 
    983       465,  354,  354,  470,  470,  584,  470,  582,  470,  365,
    984       365,  580,  365,  481,  365,  367,  367,  367,  367,  367,
    985       578,  367,  482,  482,  578,  568,  566,  482,  484,  484,
    986       462,  462,  564,  484,  486,  486,  562,  560,  558,  486,
    987       377,  377,  488,  488,  556,  554,   86,  488,  379,  379,
    988       490,  490,   86,   86,   86,  490,  381,  381,  492,  492,
    989        86,   86,   86,  492,  383,  383,   85,   86,  493,   85,
    990        85,   85,   85,   85,   85,  447,  447,  447,  447,  447,
    991       447,  447,  447,  447,  447,  447,  447,  553,  553,  491,
    992       489,  487,  553,  448,  448,  555,  555,  485,  483,  466,
    993 
    994       555,  450,  450,  557,  557,  464,  348,  348,  557,  452,
    995       452,  559,  559,  462,  460,  458,  559,  454,  454,  561,
    996       561,  455,  453,  451,  561,  457,  457,  563,  563,  449,
    997        86,   86,  563,  459,  459,  461,  461,   86,  384,  382,
    998       461,  565,  565,  380,  378,  263,  565,  463,  463,  567,
    999       567,  258,  257,  374,  567,  465,  465,  470,  470,  374,
    1000       470,  245,  470,  367,  367,  364,  364,  233,  367,  579,
    1001       579,  359,  355,  353,  579,  482,  482,  581,  581,  351,
    1002       347,  346,  581,  484,  484,  583,  583,  344,  342,  338,
    1003       583,  486,  486,  585,  585,  336,  200,  196,  585,  488,
    1004 
    1005       488,  587,  587,   86,  269,  267,  587,  490,  490,  589,
    1006       589,  263,  258,  261,  589,  492,  492,   85,  258,  256,
    1007        85,   85,   85,   85,   85,   85,  638,  638,  638,  638,
    1008       638,  638,  638,  638,  638,  638,  638,  638,  640,  640,
    1009       255,  254,  233,  640,  553,  553,  642,  642,  227,   84,
    1010        84,  642,  555,  555,  644,  644,   86,  200,  198,  644,
    1011       557,  557,  646,  646,   84,  146,  140,  646,  559,  559,
    1012       648,  648,  121,  116,   86,  648,  561,  561,  650,  650,
    1013       825,   69,   69,  650,  563,  563,  652,  652,  825,  825,
    1014       825,  652,  565,  565,   85,   85,  825,  825,  825,   85,
    1015 
    1016       567,  567,  470,  470,  825,  825,  825,  470,  658,  658,
    1017       825,  825,  825,  658,  579,  579,  660,  660,  825,  825,
    1018       825,  660,  581,  581,  662,  662,  825,  825,  825,  662,
    1019       583,  583,  139,  139,  825,  825,  825,  139,  585,  585,
    1020       665,  665,  587,  587,   85,  825,  825,   85,   85,   85,
    1021        85,   85,   85,  589,  589,  638,  638,  638,  638,  638,
    1022       638,  638,  638,  638,  638,  638,  638,  701,  701,  825,
    1023       825,  825,  701,  640,  640,  199,  199,  825,  825,  825,
    1024       199,  642,  642,  704,  704,  644,  644,  199,  825,  825,
    1025       199,  199,  199,  199,  199,  199,  646,  646,  705,  705,
    1026 
    1027       648,  648,  650,  650,  706,  706,  652,  652,   85,   85,
    1028       708,  708,  825,  825,  825,  708,  658,  658,  262,  262,
    1029       825,  825,  825,  262,  660,  660,  711,  711,  662,  662,
    1030       139,  139,  712,  712,  825,  825,  825,  712,   85,  825,
    1031       825,   85,   85,   85,   85,   85,   85,  742,  742,  701,
    1032       701,  743,  743,  825,  825,  825,  743,  745,  745,  825,
    1033       825,  825,  745,  747,  747,  825,  825,  825,  747,  749,
    1034       749,  750,  750,  825,  825,  825,  750,  752,  752,  825,
    1035       825,  825,  752,  770,  770,  825,  825,  825,  770,  772,
    1036       772,  825,  825,  825,  772,  774,  774,  825,  825,  825,
    1037 
    1038       774,  776,  776,  825,  825,  825,  776,  778,  778,  825,
    1039       825,  825,  778,  780,  780,  825,  825,  825,  780,  589,
    1040       589,  825,  825,  825,  589,  796,  796,  825,  825,  825,
    1041       796,  646,  646,  825,  825,  825,  646,  650,  650,  825,
    1042       825,  825,  650,   85,   85,  825,  825,  825,   85,  801,
    1043       801,  825,  825,  825,  801,  139,  139,  825,  825,  825,
    1044       139,  199,  199,  825,  825,  825,  199,   11,  825,  825,
    1045       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1046       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1047       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1048 
    1049       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1050       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1051       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1052       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1053       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1054       825,  825
     965      197,  197,  202,   86,   86,  202,   86,  202,  202,  202,
     966      202,  202,  206,   86,  206,  206,   86,  206,  206,  206,
     967      206,  206,  206,  851,  206,  214,  851,  827,  214,  214,
     968      214,  214,  214,  214,  214,  214,  851,  214,  235,  235,
     969
     970      235,  235,  235,  235,  235,  235,  235,  235,  235,  235,
     971      235,  249,  249,  826,  249,  851,  824,  851,  249,  265,
     972      823,  851,  265,  822,  265,  265,  265,  265,  265,  269,
     973      851,  269,  821,   86,   86,  269,  271,   86,  271,  851,
     974      804,  851,  271,  341,  803,  341,  801,  851,  799,  341,
     975      343,  851,  343,  797,  851,  795,  343,  347,  793,  347,
     976       86,   86,   86,  347,  349,   86,  349,   86,   86,   86,
     977      349,  351,   86,  351,   86,   86,   86,  351,  358,   86,
     978      358,  851,  773,  771,  358,  360,  851,  360,  851,  768,
     979      766,  360,  235,  235,  235,  235,  235,  235,  235,  235,
     980
     981      235,  235,  235,  235,  235,  371,  764,  371,  373,  373,
     982      851,  373,  373,  373,   86,  373,  249,  249,   86,  249,
     983      383,   86,  383,   86,   86,   86,  383,  385,   86,  385,
     984       86,  731,  728,  385,  387,  727,  387,  203,  721,  720,
     985      387,  269,  654,  269,  389,   86,  389,   86,   86,   86,
     986      389,  271,   86,  271,   85,   86,   86,   85,   86,   85,
     987       85,   85,   85,   85,  197,  197,  197,  197,  197,  197,
     988      197,  197,  197,  197,  197,  197,  197,  456,  456,  456,
     989      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
     990      457,   86,  457,   86,   86,   86,  457,  459,   86,  459,
     991
     992       86,   86,  679,  459,  461,  678,  461,  676,  674,  584,
     993      461,  341,  669,  341,  463,  668,  463,  666,  664,  662,
     994      463,  343,  660,  343,  466,  658,  466,  656,  654,   86,
     995      466,  347,   86,  347,  468,   86,  468,   86,   86,   86,
     996      468,  349,   86,  349,  470,   86,  470,   86,  601,  599,
     997      470,  351,  597,  351,  472,  595,  472,  593,  591,  490,
     998      472,  358,  589,  358,  474,  589,  474,  579,  577,  471,
     999      474,  360,  471,  360,  479,  575,  479,  573,  479,  571,
     1000      479,  371,  569,  371,  567,  371,  565,  371,  373,  373,
     1001       86,  373,  373,  373,   86,  373,  491,   86,  491,   86,
     1002
     1003       86,   86,  491,  493,   86,  493,   86,  502,  500,  493,
     1004      495,  498,  495,  496,  494,  492,  495,  383,  475,  383,
     1005      497,  473,  497,  354,  354,  471,  497,  385,  469,  385,
     1006      499,  467,  499,  464,  462,  460,  499,  387,  458,  387,
     1007      501,   86,  501,   86,   86,  391,  501,  389,  390,  389,
     1008       85,  388,  386,   85,  384,   85,   85,   85,   85,   85,
     1009      456,  456,  456,  456,  456,  456,  456,  456,  456,  456,
     1010      456,  456,  456,  564,  266,  564,  261,  260,  380,  564,
     1011      457,  380,  457,  566,  248,  566,  370,  370,  236,  566,
     1012      459,  365,  459,  568,  361,  568,  359,  357,  353,  568,
     1013
     1014      461,  352,  461,  570,  350,  570,  348,  344,  342,  570,
     1015      463,  203,  463,  572,  199,  572,   86,  273,  272,  572,
     1016      466,  270,  466,  574,  266,  574,  261,  264,  261,  574,
     1017      468,  259,  468,  470,  258,  470,  257,  236,  230,  470,
     1018      576,   84,  576,   84,   86,  203,  576,  472,  201,  472,
     1019      578,   84,  578,  121,  116,   86,  578,  474,  851,  474,
     1020      479,   69,  479,   69,  479,  851,  479,  373,  851,  373,
     1021      851,  851,  851,  373,  590,  851,  590,  851,  851,  851,
     1022      590,  491,  851,  491,  592,  851,  592,  851,  851,  851,
     1023      592,  493,  851,  493,  594,  851,  594,  851,  851,  851,
     1024
     1025      594,  495,  851,  495,  596,  851,  596,  851,  851,  851,
     1026      596,  497,  851,  497,  598,  851,  598,  851,  851,  851,
     1027      598,  499,  851,  499,  600,  851,  600,  851,  851,  851,
     1028      600,  501,  851,  501,   85,  851,  851,   85,  851,   85,
     1029       85,   85,   85,   85,  653,  653,  653,  653,  653,  653,
     1030      653,  653,  653,  653,  653,  653,  653,  655,  851,  655,
     1031      851,  851,  851,  655,  564,  851,  564,  657,  851,  657,
     1032      851,  851,  851,  657,  566,  851,  566,  659,  851,  659,
     1033      851,  851,  851,  659,  568,  851,  568,  661,  851,  661,
     1034      851,  851,  851,  661,  570,  851,  570,  663,  851,  663,
     1035
     1036      851,  851,  851,  663,  572,  851,  572,  665,  851,  665,
     1037      851,  851,  851,  665,  574,  851,  574,  667,  851,  667,
     1038      851,  851,  851,  667,  576,  851,  576,   85,  851,   85,
     1039      851,  851,  851,   85,  578,  851,  578,  479,  851,  479,
     1040      851,  851,  851,  479,  673,  851,  673,  851,  851,  851,
     1041      673,  590,  851,  590,  675,  851,  675,  851,  851,  851,
     1042      675,  592,  851,  592,  677,  851,  677,  851,  851,  851,
     1043      677,  594,  851,  594,  139,  851,  139,  851,  851,  851,
     1044      139,  596,  851,  596,  680,  851,  680,  598,  851,  598,
     1045       85,  851,  851,   85,  851,   85,   85,   85,   85,   85,
     1046
     1047      600,  851,  600,  653,  653,  653,  653,  653,  653,  653,
     1048      653,  653,  653,  653,  653,  653,  719,  851,  719,  851,
     1049      851,  851,  719,  655,  851,  655,  202,  851,  202,  851,
     1050      851,  851,  202,  657,  851,  657,  722,  851,  722,  659,
     1051      851,  659,  202,  851,  851,  202,  851,  202,  202,  202,
     1052      202,  202,  661,  851,  661,  723,  851,  723,  663,  851,
     1053      663,  665,  851,  665,  724,  851,  724,  667,  851,  667,
     1054       85,  851,   85,  726,  851,  726,  851,  851,  851,  726,
     1055      673,  851,  673,  265,  851,  265,  851,  851,  851,  265,
     1056      675,  851,  675,  729,  851,  729,  677,  851,  677,  139,
     1057
     1058      851,  139,  730,  851,  730,  851,  851,  851,  730,   85,
     1059      851,  851,   85,  851,   85,   85,   85,   85,   85,  762,
     1060      851,  762,  719,  851,  719,  763,  851,  763,  851,  851,
     1061      851,  763,  765,  851,  765,  851,  851,  851,  765,  767,
     1062      851,  767,  851,  851,  851,  767,  769,  851,  769,  770,
     1063      851,  770,  851,  851,  851,  770,  772,  851,  772,  851,
     1064      851,  851,  772,  792,  851,  792,  851,  851,  851,  792,
     1065      794,  851,  794,  851,  851,  851,  794,  796,  851,  796,
     1066      851,  851,  851,  796,  798,  851,  798,  851,  851,  851,
     1067      798,  800,  851,  800,  851,  851,  851,  800,  802,  851,
     1068
     1069      802,  851,  851,  851,  802,  600,  851,  600,  851,  851,
     1070      851,  600,  820,  851,  820,  851,  851,  851,  820,  661,
     1071      851,  661,  851,  851,  851,  661,  665,  851,  665,  851,
     1072      851,  851,  665,   85,  851,   85,  851,  851,  851,   85,
     1073      825,  851,  825,  851,  851,  851,  825,  139,  851,  139,
     1074      851,  851,  851,  139,  202,  851,  202,  851,  851,  851,
     1075      202,   11,  851,  851,  851,  851,  851,  851,  851,  851,
     1076      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1077      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1078      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1079
     1080      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1081      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1082      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1083      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1084      851,  851,  851,  851,  851,  851,  851
    10551085    } ;
    10561086
    1057 static yyconst flex_int16_t yy_chk[2653] =
     1087static yyconst flex_int16_t yy_chk[2848] =
    10581088    {   0,
    10591089        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    10651095        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    10661096        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    1067         1,    1,    1,    1,    2,   16,   24,   16,   24,    2,
    1068        19,   19,    2,    5,    5,    5,    5,    5,    5,    5,
     1097        1,    1,    1,    1,    1,    2,   16,   24,   16,   24,
     1098        2,   19,   19,    2,    5,    5,    5,    5,    5,    5,
    10691099
    10701100        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
     
    10751105        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    10761106        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    1077         5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
    1078        10,   37,   37,   20,   48,    9,   10,  512,    7,    8,
    1079        13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
    1080 
    1081        15,   15,   20,   25,   48,   42,   53,   28,   27,   28,
    1082        28,   28,   28,   28,   28,  512,  824,   25,   29,   25,
    1083        27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
    1084        40,   42,   55,   29,   30,   40,   30,   30,   30,   30,
    1085        30,   30,   35,   47,   35,   35,  125,   49,  125,   50,
    1086        55,   56,   49,   30,   63,   51,   55,   30,   50,   49,
    1087        56,   72,   30,   30,   47,   49,   47,   50,   30,   54,
    1088        51,   50,   51,   40,   30,   60,   40,   86,   61,   54,
    1089        30,   51,  107,  113,  823,  822,   54,   72,   30,   58,
    1090        61,   30,   31,   60,   31,   31,   31,   31,   31,   31,
    1091 
    1092       108,   58,  106,   86,   63,  107,  113,  106,  126,   58,
    1093       126,   31,   45,   45,   45,   31,   58,   57,   45,   45,
    1094        31,   45,   52,   45,   45,  821,   31,   52,   45,   57,
    1095        57,   45,   31,  106,  108,   52,  140,   52,   31,   57,
    1096        52,  128,   57,  128,   52,   59,   31,   38,  112,  819,
    1097        59,   38,   38,  112,   38,  114,   38,   38,  131,   38,
    1098       131,   38,  140,   59,   79,   79,   79,   79,   79,   79,
    1099        38,   38,   38,   66,   66,   66,   66,   66,   66,  112,
    1100       154,   66,   81,   81,   81,   81,   81,   81,   59,  114,
    1101        38,   59,  154,   38,   82,   82,   82,   82,   82,   82,
    1102 
    1103       129,   67,   67,  130,  818,   59,   67,  103,  103,  103,
    1104       103,  133,  298,  133,  129,  130,  129,  130,  298,  109,
    1105        38,   38,   67,   67,   67,   67,   67,   67,   76,   76,
    1106       134,  134,  134,   76,  103,   76,  105,  171,  105,  103,
    1107        76,  105,  105,  105,  105,  105,  105,  161,  109,   76,
    1108        76,   76,   76,  109,  110,  132,  132,  171,  132,  115,
    1109        76,  813,  103,  104,  161,  104,  104,  104,  104,  104,
    1110       104,  147,  110,  105,  148,   76,  109,  115,   76,  136,
    1111       110,  136,  104,   76,   76,  115,  147,   76,   76,  138,
    1112       149,  138,  148,  147,  143,   76,  151,  104,   76,  143,
    1113 
    1114        76,   76,   76,  104,   76,   84,  152,  150,  149,   84,
    1115        84,  153,  151,  157,   84,   84,  150,   84,  158,   84,
    1116       156,  165,  162,  163,  152,  812,  808,  158,   84,   84,
    1117        84,  159,  162,  153,  155,  157,  156,  143,  164,  155,
    1118       167,  155,  165,  155,  155,  160,  163,  155,   84,  155,
    1119       160,   84,  159,  159,  155,  155,  155,  168,  155,  169,
    1120       170,  172,  167,  160,  166,  164,  213,  173,  213,  177,
    1121       806,  175,  168,  176,  177,  236,  169,  179,  170,   84,
    1122        98,   98,   98,   98,   98,   98,  175,  166,  172,  173,
    1123       176,  181,  178,  175,  180,  179,  181,   98,   98,  271,
    1124 
    1125       183,   98,  182,  178,  184,  180,  186,  200,  189,  236,
    1126       803,  181,   98,  178,  178,  182,  185,  271,   98,   98,
    1127       183,  189,  180,  187,   98,  102,  102,  102,  102,  102,
    1128       102,  184,  188,  200,  440,  185,  187,  214,  215,  214,
    1129       215,  241,  102,  102,  187,  188,  102,  188,  275,  186,
    1130       204,  204,  186,  275,  217,  204,  218,  102,  218,  440,
    1131       193,  193,  287,  102,  102,  193,  217,  241,  217,  102,
    1132       192,  192,  192,  192,  192,  192,  219,  219,  192,  219,
    1133       249,  193,  193,  193,  193,  193,  193,  195,  195,  287,
    1134       285,  216,  195,  197,  197,  220,  802,  220,  197,  285,
    1135 
    1136       197,  207,  207,  207,  207,  216,  249,  216,  195,  195,
    1137       195,  195,  195,  195,  197,  197,  197,  197,  197,  197,
    1138       221,  221,  221,  223,  224,  223,  224,  237,  237,  237,
    1139       237,  237,  237,  207,  228,  228,  228,  228,  228,  228,
    1140       229,  259,  229,  259,  237,  229,  229,  229,  229,  229,
    1141       229,  228,  228,  234,  234,  228,  260,  234,  260,  237,
    1142       541,  272,  277,  270,  284,  237,  228,  277,  263,  284,
    1143       541,  281,  228,  228,  234,  234,  270,  229,  228,  272,
    1144       234,  238,  238,  238,  238,  238,  238,  239,  239,  239,
    1145       239,  239,  239,  240,  263,  240,  276,  281,  240,  240,
    1146 
    1147       240,  240,  240,  240,  246,  239,  801,  800,  239,  248,
    1148       248,  248,  248,  248,  248,  279,  276,  273,  274,  239,
    1149       253,  253,  253,  253,  253,  253,  239,  246,  278,  246,
    1150       279,  239,  246,  273,  282,  274,  279,  279,  246,  280,
    1151       286,  248,  291,  283,  288,  290,  292,  291,  278,  282,
    1152       246,  294,  253,  286,  246,  292,  295,  280,  246,  283,
    1153       283,  293,  288,  290,  296,  297,  300,  301,  293,  299,
    1154       297,  294,  302,  304,  295,  300,  303,  305,  304,  306,
    1155       307,  302,  305,  301,  306,  296,  296,  308,  299,  309,
    1156       314,  303,  311,  312,  313,  315,  316,  317,  319,  307,
    1157 
    1158       318,  306,  309,  311,  320,  308,  321,  313,  312,  318,
    1159       324,  322,  314,  325,  317,  326,  316,  327,  315,  324,
    1160       319,  329,  330,  328,  386,  385,  329,  320,  321,  322,
    1161       327,  328,  332,  326,  331,  331,  385,  330,  332,  331,
    1162       386,  331,  339,  339,  339,  339,  340,  340,  340,  340,
    1163       349,  350,  349,  350,  388,  799,  325,  356,  356,  356,
    1164       356,  356,  356,  357,  357,  357,  357,  357,  357,  370,
    1165       358,  392,  358,  388,  339,  358,  358,  358,  358,  358,
    1166       358,  357,  389,  390,  357,  359,  359,  359,  359,  359,
    1167       359,  389,  370,  392,  390,  357,  360,  360,  360,  360,
    1168 
    1169       360,  360,  357,  403,  798,  365,  366,  357,  361,  361,
    1170       361,  361,  361,  361,  365,  366,  372,  359,  362,  362,
    1171       362,  362,  362,  362,  403,  395,  361,  396,  360,  361,
    1172       365,  366,  368,  367,  372,  391,  362,  368,  387,  362,
    1173       361,  395,  372,  400,  391,  393,  394,  361,  400,  396,
    1174       362,  797,  361,  387,  393,  796,  367,  362,  367,  394,
    1175       397,  367,  362,  368,  369,  371,  369,  367,  399,  369,
    1176       369,  369,  369,  369,  369,  398,  397,  397,  402,  367,
    1177       401,  404,  408,  367,  402,  405,  399,  367,  371,  415,
    1178       371,  406,  404,  371,  413,  401,  408,  398,  410,  371,
    1179 
    1180       412,  369,  401,  420,  405,  414,  406,  416,  417,  421,
    1181       410,  371,  415,  422,  414,  371,  413,  417,  414,  371,
    1182       423,  412,  416,  420,  424,  425,  426,  428,  422,  430,
    1183       431,  421,  435,  432,  433,  426,  434,  436,  443,  424,
    1184       438,  435,  423,  437,  428,  425,  442,  438,  445,  443,
    1185       439,  431,  430,  432,  433,  436,  437,  439,  434,  441,
    1186       446,  504,  447,  442,  504,  473,  470,  441,  447,  446,
    1187       445,  456,  456,  456,  456,  470,  494,  441,  467,  467,
    1188       467,  467,  467,  467,  468,  468,  468,  468,  468,  468,
    1189       473,  470,  474,  494,  472,  495,  467,  497,  499,  467,
    1190 
    1191       498,  501,  468,  472,  500,  468,  506,  505,  495,  794,
    1192       467,  499,  497,  503,  501,  507,  468,  467,  474,  472,
    1193       498,  515,  467,  468,  503,  506,  500,  505,  468,  469,
    1194       469,  469,  469,  469,  469,  471,  507,  471,  515,  793,
    1195       471,  471,  471,  471,  471,  471,  476,  476,  476,  476,
    1196       476,  476,  477,  477,  477,  477,  477,  477,  478,  514,
    1197       478,  469,  508,  478,  478,  478,  478,  478,  478,  502,
    1198       477,  508,  471,  477,  502,  509,  510,  511,  522,  513,
    1199       509,  514,  523,  516,  477,  524,  520,  510,  513,  517,
    1200       511,  477,  516,  525,  517,  520,  477,  527,  528,  523,
    1201 
    1202       524,  529,  525,  531,  522,  536,  532,  537,  534,  538,
    1203       528,  532,  535,  543,  527,  540,  529,  534,  531,  544,
    1204       537,  535,  542,  540,  546,  549,  538,  536,  547,  542,
    1205       550,  544,  592,  546,  597,  543,  791,  790,  547,  592,
    1206       596,  597,  549,  550,  569,  569,  569,  569,  569,  569,
    1207       570,  570,  570,  570,  570,  570,  571,  571,  571,  571,
    1208       571,  571,  572,  596,  572,  610,  593,  572,  572,  572,
    1209       572,  572,  572,  594,  571,  593,  569,  571,  575,  575,
    1210       575,  575,  575,  575,  595,  610,  594,  600,  571,  598,
    1211       600,  599,  603,  591,  602,  571,  575,  598,  591,  575,
    1212 
    1213       571,  595,  577,  577,  577,  577,  577,  577,  599,  602,
    1214       575,  591,  601,  604,  603,  605,  606,  575,  607,  606,
    1215       577,  608,  575,  577,  609,  601,  612,  611,  613,  615,
    1216       604,  616,  620,  617,  577,  607,  611,  605,  621,  609,
    1217       623,  577,  627,  634,  612,  637,  577,  626,  608,  627,
    1218       613,  615,  620,  634,  616,  617,  626,  623,  636,  666,
    1219       637,  669,  672,  673,  680,  621,  673,  636,  655,  655,
    1220       655,  655,  655,  655,  656,  656,  656,  656,  656,  656,
    1221       666,  667,  672,  670,  675,  680,  655,  669,  671,  655,
    1222       670,  667,  656,  671,  674,  656,  678,  674,  677,  681,
    1223 
    1224       655,  683,  675,  684,  677,  678,  656,  655,  679,  732,
    1225       683,  679,  655,  656,  682,  696,  732,  682,  656,  657,
    1226       657,  657,  657,  657,  657,  686,  685,  681,  684,  685,
    1227       688,  687,  689,  691,  693,  696,  697,  700,  686,  687,
    1228       688,  699,  691,  723,  722,  689,  700,  718,  719,  699,
    1229       720,  657,  724,  721,  722,  720,  783,  693,  697,  707,
    1230       707,  707,  707,  707,  707,  719,  723,  718,  721,  725,
    1231       726,  727,  725,  729,  731,  735,  729,  731,  724,  733,
    1232       754,  734,  733,  726,  734,  756,  757,  759,  763,  758,
    1233       735,  707,  758,  760,  762,  766,  760,  764,  727,  767,
    1234 
    1235       764,  769,  767,  784,  757,  768,  756,  754,  768,  759,
    1236       769,  785,  762,  763,  787,  789,  786,  766,  785,  786,
    1237       782,  781,  788,  787,  784,  788,  792,  795,  804,  792,
    1238       795,  805,  789,  814,  815,  807,  805,  804,  807,  809,
    1239       810,  811,  809,  810,  811,  816,  820,  817,  816,  815,
    1240       817,  780,  779,  814,  778,  777,  776,  775,  774,  773,
    1241       772,  771,  770,  765,  761,  755,  753,  752,  820,  826,
    1242       826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
    1243       826,  827,  827,  827,  827,  827,  827,  827,  827,  827,
    1244       827,  827,  827,  828,  828,  828,  828,  828,  828,  828,
    1245 
    1246       828,  828,  828,  828,  828,  829,  751,  750,  829,  829,
    1247       829,  829,  829,  829,  830,  749,  748,  747,  830,  830,
    1248       830,  830,  830,  831,  831,  831,  831,  831,  831,  831,
    1249       831,  831,  831,  831,  831,  832,  746,  745,  832,  832,
    1250       832,  832,  832,  832,  833,  744,  833,  833,  743,  833,
    1251       833,  833,  833,  833,  742,  833,  834,  741,  740,  834,
    1252       834,  834,  834,  834,  834,  834,  739,  834,  835,  835,
    1253       835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
    1254       836,  836,  836,  738,  737,  736,  836,  837,  730,  728,
    1255       837,  837,  837,  837,  837,  837,  838,  838,  717,  716,
    1256 
    1257       715,  838,  839,  839,  714,  713,  712,  839,  840,  840,
    1258       711,  710,  709,  840,  841,  841,  706,  705,  704,  841,
    1259       842,  842,  703,  698,  695,  842,  843,  843,  694,  692,
    1260       690,  843,  844,  844,  676,  668,  665,  844,  845,  845,
    1261       660,  658,  646,  845,  846,  846,  642,  640,  638,  846,
    1262       847,  847,  847,  847,  847,  847,  847,  847,  847,  847,
    1263       847,  847,  848,  848,  849,  849,  849,  849,  849,  635,
    1264       849,  850,  850,  850,  851,  851,  633,  632,  631,  851,
    1265       852,  852,  630,  629,  628,  852,  853,  853,  625,  624,
    1266       622,  853,  854,  854,  855,  855,  619,  618,  614,  855,
    1267 
    1268       856,  856,  857,  589,  585,  857,  857,  857,  857,  857,
    1269       857,  858,  858,  858,  858,  858,  858,  858,  858,  858,
    1270       858,  858,  858,  859,  859,  859,  859,  859,  859,  859,
    1271       859,  859,  859,  859,  859,  860,  860,  583,  581,  579,
    1272       860,  861,  861,  573,  567,  565,  861,  862,  862,  563,
    1273       561,  559,  862,  863,  863,  864,  864,  557,  555,  553,
    1274       864,  865,  865,  866,  866,  552,  551,  548,  866,  867,
    1275       867,  868,  868,  545,  539,  533,  868,  869,  869,  870,
    1276       870,  530,  526,  521,  870,  871,  871,  872,  872,  519,
    1277       518,  496,  872,  873,  873,  874,  874,  492,  490,  488,
    1278 
    1279       874,  875,  875,  876,  876,  486,  876,  484,  876,  877,
    1280       877,  482,  877,  481,  877,  878,  878,  878,  878,  878,
    1281       480,  878,  879,  879,  479,  465,  463,  879,  880,  880,
    1282       462,  461,  459,  880,  881,  881,  457,  454,  452,  881,
    1283       882,  882,  883,  883,  450,  448,  444,  883,  884,  884,
    1284       885,  885,  429,  427,  419,  885,  886,  886,  887,  887,
    1285       418,  411,  409,  887,  888,  888,  889,  407,  383,  889,
    1286       889,  889,  889,  889,  889,  890,  890,  890,  890,  890,
    1287       890,  890,  890,  890,  890,  890,  890,  891,  891,  381,
    1288       379,  377,  891,  892,  892,  893,  893,  376,  375,  354,
    1289 
    1290       893,  894,  894,  895,  895,  352,  351,  347,  895,  896,
    1291       896,  897,  897,  345,  343,  341,  897,  898,  898,  899,
    1292       899,  337,  335,  334,  899,  900,  900,  901,  901,  333,
    1293       323,  310,  901,  902,  902,  903,  903,  289,  268,  266,
    1294       903,  904,  904,  265,  264,  262,  904,  905,  905,  906,
    1295       906,  261,  256,  252,  906,  907,  907,  908,  908,  251,
    1296       908,  247,  908,  909,  909,  244,  243,  232,  909,  910,
    1297       910,  231,  226,  225,  910,  911,  911,  912,  912,  222,
    1298       212,  210,  912,  913,  913,  914,  914,  209,  208,  202,
    1299       914,  915,  915,  916,  916,  201,  199,  194,  916,  917,
    1300 
    1301       917,  918,  918,  174,  145,  144,  918,  919,  919,  920,
    1302       920,  139,  137,  135,  920,  921,  921,  922,  127,  124,
    1303       922,  922,  922,  922,  922,  922,  923,  923,  923,  923,
    1304       923,  923,  923,  923,  923,  923,  923,  923,  924,  924,
    1305       123,  119,  100,  924,  925,  925,  926,  926,   97,   94,
    1306        92,  926,  927,  927,  928,  928,   85,   71,   69,  928,
    1307       929,  929,  930,  930,   65,   44,   39,  930,  931,  931,
    1308       932,  932,   36,   33,   18,  932,  933,  933,  934,  934,
    1309        11,    4,    3,  934,  935,  935,  936,  936,    0,    0,
    1310         0,  936,  937,  937,  938,  938,    0,    0,    0,  938,
    1311 
    1312       939,  939,  940,  940,    0,    0,    0,  940,  941,  941,
    1313         0,    0,    0,  941,  942,  942,  943,  943,    0,    0,
    1314         0,  943,  944,  944,  945,  945,    0,    0,    0,  945,
    1315       946,  946,  947,  947,    0,    0,    0,  947,  948,  948,
    1316       949,  949,  950,  950,  951,    0,    0,  951,  951,  951,
    1317       951,  951,  951,  952,  952,  953,  953,  953,  953,  953,
    1318       953,  953,  953,  953,  953,  953,  953,  954,  954,    0,
    1319         0,    0,  954,  955,  955,  956,  956,    0,    0,    0,
    1320       956,  957,  957,  958,  958,  959,  959,  960,    0,    0,
    1321       960,  960,  960,  960,  960,  960,  961,  961,  962,  962,
    1322 
    1323       963,  963,  964,  964,  965,  965,  966,  966,  967,  967,
    1324       968,  968,    0,    0,    0,  968,  969,  969,  970,  970,
    1325         0,    0,    0,  970,  971,  971,  972,  972,  973,  973,
    1326       974,  974,  975,  975,    0,    0,    0,  975,  976,    0,
    1327         0,  976,  976,  976,  976,  976,  976,  977,  977,  978,
    1328       978,  979,  979,    0,    0,    0,  979,  980,  980,    0,
    1329         0,    0,  980,  981,  981,    0,    0,    0,  981,  982,
    1330       982,  983,  983,    0,    0,    0,  983,  984,  984,    0,
    1331         0,    0,  984,  985,  985,    0,    0,    0,  985,  986,
    1332       986,    0,    0,    0,  986,  987,  987,    0,    0,    0,
    1333 
    1334       987,  988,  988,    0,    0,    0,  988,  989,  989,    0,
    1335         0,    0,  989,  990,  990,    0,    0,    0,  990,  991,
    1336       991,    0,    0,    0,  991,  992,  992,    0,    0,    0,
    1337       992,  993,  993,    0,    0,    0,  993,  994,  994,    0,
    1338         0,    0,  994,  995,  995,    0,    0,    0,  995,  996,
    1339       996,    0,    0,    0,  996,  997,  997,    0,    0,    0,
    1340       997,  998,  998,    0,    0,    0,  998,  825,  825,  825,
    1341       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1342       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1343       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1344 
    1345       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1346       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1347       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1348       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1349       825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
    1350       825,  825
     1107        5,    5,    5,    5,    5,    5,    5,    5,    5,    7,
     1108        8,    9,   10,   37,   37,   20,   39,    9,   10,  521,
     1109        7,    8,   13,   13,   13,   13,   13,   13,   15,   15,
     1110
     1111       15,   15,   15,   15,   20,   25,   48,   39,   42,   28,
     1112       27,   28,   28,   28,   28,   28,   28,  108,  521,   25,
     1113       29,   25,   27,   27,   27,   29,   48,   35,   40,    7,
     1114        8,    9,   10,   40,   42,   29,   30,   47,   30,   30,
     1115       30,   30,   30,   30,   35,   56,   35,   35,   44,  334,
     1116       44,  114,  108,   72,   56,   30,   63,  334,   47,   30,
     1117       47,   45,   45,   45,   49,   30,   30,   45,   45,   49,
     1118       45,   30,   40,   45,   45,   40,   49,   30,   45,   72,
     1119       61,   45,   49,   30,   86,  513,  114,   53,  513,   51,
     1120       60,   30,   61,   55,   30,   31,  107,   31,   31,   31,
     1121
     1122       31,   31,   31,   50,   51,   53,   51,   63,   60,   54,
     1123       86,   55,   50,  109,   31,   51,   50,   55,   31,   54,
     1124      107,   50,   52,  113,   31,   50,   54,   52,  317,  125,
     1125       31,  125,  106,  156,  150,   52,   31,   52,  106,  317,
     1126       52,   59,   31,  109,   52,  156,   59,  113,  109,  151,
     1127       31,   38,  150,  174,  110,   38,   38,   57,   38,   59,
     1128       38,   38,  112,   38,  106,   38,   58,  151,  112,   57,
     1129       57,  109,  110,  174,   38,   38,   38,  166,   58,   57,
     1130      110,  152,   57,  115,  141,   59,   58,  126,   59,  126,
     1131      152,   67,   67,   58,  112,   38,   67,  128,   38,  128,
     1132
     1133      166,  115,   59,   66,   66,   66,   66,   66,   66,  115,
     1134      141,   66,   67,   67,   67,   67,   67,   67,   79,   79,
     1135       79,   79,   79,   79,  160,   38,   38,   76,   76,  131,
     1136      163,  131,   76,  160,   76,  103,  103,  103,  103,   76,
     1137       81,   81,   81,   81,   81,   81,  129,  163,   76,   76,
     1138       76,   76,   82,   82,   82,   82,   82,   82,  130,   76,
     1139      129,  153,  129,  103,  132,  132,  158,  132,  103,  133,
     1140      130,  133,  130,  186,  136,   76,  136,  153,   76,  134,
     1141      134,  134,  158,   76,   76,  165,  164,   76,   76,  154,
     1142      138,  103,  138,  186,  155,   76,  164,  216,   76,  216,
     1143
     1144       76,   76,   76,  144,   76,   84,  165,  154,  144,   84,
     1145       84,  168,  149,  173,   84,   84,  155,   84,  104,   84,
     1146      104,  104,  104,  104,  104,  104,  159,  149,   84,   84,
     1147       84,  173,  168,  105,  149,  105,  161,  104,  105,  105,
     1148      105,  105,  105,  105,  170,  162,  167,  144,  159,   84,
     1149      162,  169,   84,  104,  171,  157,  169,  161,  161,  104,
     1150      157,  172,  157,  162,  157,  157,  170,  175,  157,  171,
     1151      157,  105,  179,  167,  169,  157,  157,  157,  172,  157,
     1152       84,   98,   98,   98,   98,   98,   98,  176,  178,  179,
     1153      180,  185,  280,  182,  175,  180,  181,  183,   98,   98,
     1154
     1155      192,  850,   98,  178,  185,  189,  187,  181,  183,  176,
     1156      178,  182,  280,  192,   98,  188,  203,  181,  181,  184,
     1157       98,   98,  190,  191,  184,  183,   98,  102,  102,  102,
     1158      102,  102,  102,  187,  188,  190,  191,  274,  191,  184,
     1159      449,  275,  203,  190,  102,  102,  207,  207,  102,  189,
     1160      274,  207,  189,  195,  195,  195,  195,  195,  195,  275,
     1161      102,  195,  277,  196,  196,  449,  102,  102,  196,  198,
     1162      198,  217,  102,  217,  198,  200,  200,  218,  277,  218,
     1163      200,  221,  200,  221,  196,  196,  196,  196,  196,  196,
     1164      198,  198,  198,  198,  198,  198,  200,  200,  200,  200,
     1165
     1166      200,  200,  210,  210,  210,  210,  219,  220,  222,  222,
     1167      223,  222,  223,  224,  224,  224,  226,  239,  226,  220,
     1168      219,  220,  219,  227,  232,  227,  232,  278,  849,  232,
     1169      232,  232,  232,  232,  232,  210,  231,  231,  231,  231,
     1170      231,  231,  237,  237,  278,  244,  237,  252,  262,  263,
     1171      262,  263,  239,  231,  231,  279,  276,  231,  281,  282,
     1172      279,  288,  232,  281,  237,  237,  288,  290,  266,  231,
     1173      237,  244,  285,  252,  276,  231,  231,  848,  284,  282,
     1174      290,  231,  240,  240,  240,  240,  240,  240,  241,  241,
     1175      241,  241,  241,  241,  266,  283,  284,  286,  285,  240,
     1176
     1177      289,  242,  242,  242,  242,  242,  242,  249,  291,  289,
     1178      283,  292,  286,  294,  847,  240,  283,  283,  243,  242,
     1179      243,  240,  242,  243,  243,  243,  243,  243,  243,  292,
     1180      249,  294,  249,  295,  242,  291,  249,  298,  295,  287,
     1181      301,  242,  249,  299,  296,  301,  242,  251,  251,  251,
     1182      251,  251,  251,  296,  249,  287,  287,  298,  249,  304,
     1183      300,  299,  249,  256,  256,  256,  256,  256,  256,  297,
     1184      302,  303,  307,  306,  305,  302,  297,  303,  304,  306,
     1185      251,  300,  300,  305,  308,  309,  310,  311,  307,  312,
     1186      313,  310,  311,  308,  312,  314,  256,  315,  320,  318,
     1187
     1188      309,  321,  319,  322,  323,  325,  326,  324,  327,  313,
     1189      315,  312,  331,  314,  318,  319,  324,  328,  332,  330,
     1190      320,  323,  336,  322,  321,  333,  335,  325,  330,  326,
     1191      327,  335,  355,  396,  355,  328,  332,  336,  333,  337,
     1192      337,  338,  396,  356,  337,  356,  337,  338,  345,  345,
     1193      345,  345,  346,  346,  346,  346,  331,  362,  362,  362,
     1194      362,  362,  362,  392,  363,  363,  363,  363,  363,  363,
     1195      364,  376,  364,  552,  392,  364,  364,  364,  364,  364,
     1196      364,  345,  363,  552,  371,  363,  365,  365,  365,  365,
     1197      365,  365,  393,  401,  371,  376,  398,  363,  366,  366,
     1198
     1199      366,  366,  366,  366,  363,  398,  401,  372,  393,  363,
     1200      371,  367,  367,  367,  367,  367,  367,  372,  395,  365,
     1201      368,  368,  368,  368,  368,  368,  400,  417,  394,  367,
     1202      374,  366,  367,  372,  373,  400,  374,  395,  368,  417,
     1203      375,  368,  375,  394,  367,  375,  375,  375,  375,  375,
     1204      375,  367,  399,  368,  378,  397,  367,  373,  406,  373,
     1205      368,  377,  374,  373,  411,  368,  397,  402,  845,  373,
     1206      403,  404,  378,  405,  399,  411,  406,  407,  375,  408,
     1207      378,  373,  407,  402,  377,  373,  377,  404,  404,  373,
     1208      377,  409,  403,  410,  408,  405,  377,  409,  412,  415,
     1209
     1210      413,  408,  419,  420,  422,  423,  424,  430,  377,  421,
     1211      425,  423,  377,  415,  410,  413,  377,  412,  421,  425,
     1212      427,  424,  421,  419,  429,  420,  431,  422,  432,  430,
     1213      433,  434,  437,  435,  439,  427,  441,  440,  443,  442,
     1214      446,  431,  435,  444,  429,  433,  445,  447,  448,  437,
     1215      432,  434,  444,  446,  447,  448,  441,  439,  440,  442,
     1216      443,  450,  452,  451,  445,  454,  455,  611,  456,  450,
     1217      611,  844,  504,  452,  456,  455,  479,  482,  483,  450,
     1218      451,  465,  465,  465,  465,  504,  479,  454,  476,  476,
     1219      476,  476,  476,  476,  477,  477,  477,  477,  477,  477,
     1220
     1221      481,  503,  479,  482,  483,  506,  476,  839,  509,  476,
     1222      481,  507,  477,  512,  516,  477,  508,  511,  503,  510,
     1223      506,  476,  511,  531,  512,  519,  481,  477,  476,  508,
     1224      509,  507,  510,  476,  477,  516,  519,  520,  517,  477,
     1225      478,  478,  478,  478,  478,  478,  480,  517,  480,  531,
     1226      520,  480,  480,  480,  480,  480,  480,  485,  485,  485,
     1227      485,  485,  485,  514,  486,  486,  486,  486,  486,  486,
     1228      487,  515,  487,  478,  524,  487,  487,  487,  487,  487,
     1229      487,  518,  486,  514,  480,  486,  518,  522,  523,  525,
     1230      515,  524,  533,  529,  526,  528,  522,  486,  525,  526,
     1231
     1232      532,  528,  529,  534,  486,  535,  537,  533,  538,  486,
     1233      523,  539,  540,  542,  535,  537,  543,  532,  534,  547,
     1234      545,  543,  546,  539,  548,  538,  549,  540,  542,  545,
     1235      551,  546,  553,  554,  555,  557,  556,  548,  551,  553,
     1236      558,  547,  556,  549,  557,  560,  555,  561,  604,  603,
     1237      558,  617,  608,  609,  617,  554,  603,  604,  606,  608,
     1238      561,  609,  560,  580,  580,  580,  580,  580,  580,  581,
     1239      581,  581,  581,  581,  581,  606,  582,  582,  582,  582,
     1240      582,  582,  583,  607,  583,  605,  641,  583,  583,  583,
     1241      583,  583,  583,  641,  582,  612,  580,  582,  605,  586,
     1242
     1243      586,  586,  586,  586,  586,  610,  607,  614,  612,  582,
     1244      588,  588,  588,  588,  588,  588,  582,  586,  602,  613,
     1245      586,  582,  610,  602,  615,  616,  619,  620,  588,  614,
     1246      623,  588,  586,  621,  613,  618,  602,  622,  624,  586,
     1247      625,  615,  620,  588,  586,  627,  622,  616,  623,  625,
     1248      588,  628,  618,  621,  619,  588,  629,  630,  635,  634,
     1249      624,  640,  648,  637,  651,  649,  630,  627,  652,  739,
     1250      640,  648,  682,  651,  628,  649,  684,  681,  629,  634,
     1251      637,  687,  682,  652,  739,  635,  670,  670,  670,  670,
     1252      670,  670,  671,  671,  671,  671,  671,  671,  681,  685,
     1253
     1254      686,  687,  684,  690,  670,  686,  685,  670,  688,  689,
     1255      671,  688,  689,  671,  692,  693,  696,  838,  703,  670,
     1256      692,  690,  699,  695,  693,  671,  670,  694,  703,  837,
     1257      694,  670,  671,  697,  710,  705,  697,  671,  672,  672,
     1258      672,  672,  672,  672,  695,  696,  698,  700,  699,  701,
     1259      700,  702,  704,  713,  707,  698,  705,  710,  714,  702,
     1260      715,  717,  701,  707,  742,  704,  718,  740,  736,  717,
     1261      741,  672,  737,  713,  738,  718,  745,  740,  754,  738,
     1262      714,  715,  725,  725,  725,  725,  725,  725,  736,  737,
     1263      742,  743,  744,  741,  743,  747,  749,  753,  747,  749,
     1264
     1265      750,  754,  759,  751,  745,  744,  751,  750,  752,  774,
     1266      776,  752,  753,  778,  777,  725,  778,  779,  780,  782,
     1267      783,  780,  786,  784,  787,  759,  784,  787,  806,  789,
     1268      788,  776,  777,  788,  790,  791,  774,  782,  789,  779,
     1269      807,  811,  808,  809,  786,  808,  783,  807,  836,  806,
     1270      790,  791,  809,  810,  814,  818,  810,  814,  811,  817,
     1271      819,  828,  817,  829,  818,  840,  841,  846,  829,  819,
     1272      828,  831,  833,  834,  831,  833,  834,  835,  832,  842,
     1273      835,  841,  842,  843,  830,  840,  843,  827,  826,  846,
     1274      852,  852,  852,  852,  852,  852,  852,  852,  852,  852,
     1275
     1276      852,  852,  852,  853,  853,  853,  853,  853,  853,  853,
     1277      853,  853,  853,  853,  853,  853,  854,  854,  854,  854,
     1278      854,  854,  854,  854,  854,  854,  854,  854,  854,  855,
     1279      825,  824,  855,  823,  855,  855,  855,  855,  855,  856,
     1280      822,  821,  820,  856,  856,  856,  856,  856,  856,  857,
     1281      857,  857,  857,  857,  857,  857,  857,  857,  857,  857,
     1282      857,  857,  858,  816,  815,  858,  813,  858,  858,  858,
     1283      858,  858,  859,  812,  859,  859,  805,  859,  859,  859,
     1284      859,  859,  859,  804,  859,  860,  803,  802,  860,  860,
     1285      860,  860,  860,  860,  860,  860,  801,  860,  861,  861,
     1286
     1287      861,  861,  861,  861,  861,  861,  861,  861,  861,  861,
     1288      861,  862,  862,  800,  862,  799,  798,  797,  862,  863,
     1289      796,  795,  863,  794,  863,  863,  863,  863,  863,  864,
     1290      793,  864,  792,  785,  781,  864,  865,  775,  865,  773,
     1291      772,  771,  865,  866,  770,  866,  769,  768,  767,  866,
     1292      867,  766,  867,  765,  764,  763,  867,  868,  762,  868,
     1293      761,  760,  758,  868,  869,  757,  869,  756,  755,  748,
     1294      869,  870,  746,  870,  735,  734,  733,  870,  871,  732,
     1295      871,  731,  730,  729,  871,  872,  728,  872,  727,  724,
     1296      723,  872,  873,  873,  873,  873,  873,  873,  873,  873,
     1297
     1298      873,  873,  873,  873,  873,  874,  722,  874,  875,  875,
     1299      721,  875,  875,  875,  716,  875,  876,  876,  712,  876,
     1300      877,  711,  877,  709,  708,  706,  877,  878,  691,  878,
     1301      683,  680,  675,  878,  879,  673,  879,  661,  657,  655,
     1302      879,  880,  653,  880,  881,  650,  881,  647,  646,  645,
     1303      881,  882,  644,  882,  883,  643,  642,  883,  639,  883,
     1304      883,  883,  883,  883,  884,  884,  884,  884,  884,  884,
     1305      884,  884,  884,  884,  884,  884,  884,  885,  885,  885,
     1306      885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
     1307      886,  638,  886,  636,  633,  632,  886,  887,  631,  887,
     1308
     1309      626,  600,  596,  887,  888,  594,  888,  592,  590,  584,
     1310      888,  889,  578,  889,  890,  576,  890,  574,  572,  570,
     1311      890,  891,  568,  891,  892,  566,  892,  564,  563,  562,
     1312      892,  893,  559,  893,  894,  550,  894,  544,  541,  536,
     1313      894,  895,  530,  895,  896,  527,  896,  505,  501,  499,
     1314      896,  897,  497,  897,  898,  495,  898,  493,  491,  490,
     1315      898,  899,  489,  899,  900,  488,  900,  474,  472,  471,
     1316      900,  901,  470,  901,  902,  468,  902,  466,  902,  463,
     1317      902,  903,  461,  903,  459,  903,  457,  903,  904,  904,
     1318      453,  904,  904,  904,  438,  904,  905,  436,  905,  428,
     1319
     1320      426,  418,  905,  906,  416,  906,  414,  389,  387,  906,
     1321      907,  385,  907,  383,  382,  381,  907,  908,  360,  908,
     1322      909,  358,  909,  357,  353,  351,  909,  910,  349,  910,
     1323      911,  347,  911,  343,  341,  340,  911,  912,  339,  912,
     1324      913,  329,  913,  316,  293,  273,  913,  914,  271,  914,
     1325      915,  269,  268,  915,  267,  915,  915,  915,  915,  915,
     1326      916,  916,  916,  916,  916,  916,  916,  916,  916,  916,
     1327      916,  916,  916,  917,  265,  917,  264,  259,  255,  917,
     1328      918,  254,  918,  919,  250,  919,  247,  246,  235,  919,
     1329      920,  234,  920,  921,  229,  921,  228,  225,  215,  921,
     1330
     1331      922,  213,  922,  923,  212,  923,  211,  205,  204,  923,
     1332      924,  202,  924,  925,  197,  925,  177,  148,  146,  925,
     1333      926,  145,  926,  927,  139,  927,  137,  135,  127,  927,
     1334      928,  124,  928,  929,  123,  929,  119,  100,   97,  929,
     1335      930,   94,  930,   92,   85,   71,  930,  931,   69,  931,
     1336      932,   65,  932,   36,   33,   18,  932,  933,   11,  933,
     1337      934,    4,  934,    3,  934,    0,  934,  935,    0,  935,
     1338        0,    0,    0,  935,  936,    0,  936,    0,    0,    0,
     1339      936,  937,    0,  937,  938,    0,  938,    0,    0,    0,
     1340      938,  939,    0,  939,  940,    0,  940,    0,    0,    0,
     1341
     1342      940,  941,    0,  941,  942,    0,  942,    0,    0,    0,
     1343      942,  943,    0,  943,  944,    0,  944,    0,    0,    0,
     1344      944,  945,    0,  945,  946,    0,  946,    0,    0,    0,
     1345      946,  947,    0,  947,  948,    0,    0,  948,    0,  948,
     1346      948,  948,  948,  948,  949,  949,  949,  949,  949,  949,
     1347      949,  949,  949,  949,  949,  949,  949,  950,    0,  950,
     1348        0,    0,    0,  950,  951,    0,  951,  952,    0,  952,
     1349        0,    0,    0,  952,  953,    0,  953,  954,    0,  954,
     1350        0,    0,    0,  954,  955,    0,  955,  956,    0,  956,
     1351        0,    0,    0,  956,  957,    0,  957,  958,    0,  958,
     1352
     1353        0,    0,    0,  958,  959,    0,  959,  960,    0,  960,
     1354        0,    0,    0,  960,  961,    0,  961,  962,    0,  962,
     1355        0,    0,    0,  962,  963,    0,  963,  964,    0,  964,
     1356        0,    0,    0,  964,  965,    0,  965,  966,    0,  966,
     1357        0,    0,    0,  966,  967,    0,  967,    0,    0,    0,
     1358      967,  968,    0,  968,  969,    0,  969,    0,    0,    0,
     1359      969,  970,    0,  970,  971,    0,  971,    0,    0,    0,
     1360      971,  972,    0,  972,  973,    0,  973,    0,    0,    0,
     1361      973,  974,    0,  974,  975,    0,  975,  976,    0,  976,
     1362      977,    0,    0,  977,    0,  977,  977,  977,  977,  977,
     1363
     1364      978,    0,  978,  979,  979,  979,  979,  979,  979,  979,
     1365      979,  979,  979,  979,  979,  979,  980,    0,  980,    0,
     1366        0,    0,  980,  981,    0,  981,  982,    0,  982,    0,
     1367        0,    0,  982,  983,    0,  983,  984,    0,  984,  985,
     1368        0,  985,  986,    0,    0,  986,    0,  986,  986,  986,
     1369      986,  986,  987,    0,  987,  988,    0,  988,  989,    0,
     1370      989,  990,    0,  990,  991,    0,  991,  992,    0,  992,
     1371      993,    0,  993,  994,    0,  994,    0,    0,    0,  994,
     1372      995,    0,  995,  996,    0,  996,    0,    0,    0,  996,
     1373      997,    0,  997,  998,    0,  998,  999,    0,  999, 1000,
     1374
     1375        0, 1000, 1001,    0, 1001,    0,    0,    0, 1001, 1002,
     1376        0,    0, 1002,    0, 1002, 1002, 1002, 1002, 1002, 1003,
     1377        0, 1003, 1004,    0, 1004, 1005,    0, 1005,    0,    0,
     1378        0, 1005, 1006,    0, 1006,    0,    0,    0, 1006, 1007,
     1379        0, 1007,    0,    0,    0, 1007, 1008,    0, 1008, 1009,
     1380        0, 1009,    0,    0,    0, 1009, 1010,    0, 1010,    0,
     1381        0,    0, 1010, 1011,    0, 1011,    0,    0,    0, 1011,
     1382     1012,    0, 1012,    0,    0,    0, 1012, 1013,    0, 1013,
     1383        0,    0,    0, 1013, 1014,    0, 1014,    0,    0,    0,
     1384     1014, 1015,    0, 1015,    0,    0,    0, 1015, 1016,    0,
     1385
     1386     1016,    0,    0,    0, 1016, 1017,    0, 1017,    0,    0,
     1387        0, 1017, 1018,    0, 1018,    0,    0,    0, 1018, 1019,
     1388        0, 1019,    0,    0,    0, 1019, 1020,    0, 1020,    0,
     1389        0,    0, 1020, 1021,    0, 1021,    0,    0,    0, 1021,
     1390     1022,    0, 1022,    0,    0,    0, 1022, 1023,    0, 1023,
     1391        0,    0,    0, 1023, 1024,    0, 1024,    0,    0,    0,
     1392     1024,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1393      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1394      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1395      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1396
     1397      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1398      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1399      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1400      851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
     1401      851,  851,  851,  851,  851,  851,  851
    13511402    } ;
    13521403
    13531404/* Table of booleans, true if rule could match eol. */
    1354 static yyconst flex_int32_t yy_rule_can_match_eol[172] =
     1405static yyconst flex_int32_t yy_rule_can_match_eol[179] =
    13551406    {   0,
    135614071, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     
    13591410    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    13601411    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1361     0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0,
     1412    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,
    13621413    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    13631414    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    1364     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
     1415    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     };
    13651416
    13661417static yy_state_type yy_last_accepting_state;
     
    13901441 * Created On       : Sat Sep 22 08:58:10 2001
    13911442 * Last Modified By : Peter A. Buhr
    1392  * Last Modified On : Fri Jun 19 11:10:14 2015
    1393  * Update Count     : 392
     1443 * Last Modified On : Thu Oct  8 16:13:07 2015
     1444 * Update Count     : 404
    13941445 */
    13951446#line 20 "lex.ll"
     
    14481499
    14491500
    1450 #line 1451 "Parser/lex.cc"
     1501#line 1502 "Parser/lex.cc"
    14511502
    14521503#define INITIAL 0
     
    16431694
    16441695                                   /* line directives */
    1645 #line 1646 "Parser/lex.cc"
     1696#line 1697 "Parser/lex.cc"
    16461697
    16471698        if ( !(yy_init) )
     
    16971748                                {
    16981749                                yy_current_state = (int) yy_def[yy_current_state];
    1699                                 if ( yy_current_state >= 826 )
     1750                                if ( yy_current_state >= 852 )
    17001751                                        yy_c = yy_meta[(unsigned int) yy_c];
    17011752                                }
     
    17031754                        ++yy_cp;
    17041755                        }
    1705                 while ( yy_base[yy_current_state] != 2568 );
     1756                while ( yy_base[yy_current_state] != 2762 );
    17061757
    17071758yy_find_action:
     
    18501901YY_RULE_SETUP
    18511902#line 184 "lex.ll"
     1903{ KEYWORD_RETURN(AT); }                                 // CFA
     1904        YY_BREAK
     1905case 18:
     1906YY_RULE_SETUP
     1907#line 185 "lex.ll"
    18521908{ KEYWORD_RETURN(ATOMIC); }                             // C11
    1853         YY_BREAK
    1854 case 18:
    1855 YY_RULE_SETUP
    1856 #line 185 "lex.ll"
    1857 { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
    18581909        YY_BREAK
    18591910case 19:
     
    18651916YY_RULE_SETUP
    18661917#line 187 "lex.ll"
     1918{ KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     1919        YY_BREAK
     1920case 21:
     1921YY_RULE_SETUP
     1922#line 188 "lex.ll"
    18671923{ KEYWORD_RETURN(AUTO); }
    18681924        YY_BREAK
    1869 case 21:
    1870 YY_RULE_SETUP
    1871 #line 188 "lex.ll"
     1925case 22:
     1926YY_RULE_SETUP
     1927#line 189 "lex.ll"
    18721928{ KEYWORD_RETURN(BOOL); }                               // C99
    18731929        YY_BREAK
    1874 case 22:
    1875 YY_RULE_SETUP
    1876 #line 189 "lex.ll"
     1930case 23:
     1931YY_RULE_SETUP
     1932#line 190 "lex.ll"
    18771933{ KEYWORD_RETURN(BREAK); }
    18781934        YY_BREAK
    1879 case 23:
    1880 YY_RULE_SETUP
    1881 #line 190 "lex.ll"
     1935case 24:
     1936YY_RULE_SETUP
     1937#line 191 "lex.ll"
    18821938{ KEYWORD_RETURN(CASE); }
    18831939        YY_BREAK
    1884 case 24:
    1885 YY_RULE_SETUP
    1886 #line 191 "lex.ll"
     1940case 25:
     1941YY_RULE_SETUP
     1942#line 192 "lex.ll"
    18871943{ KEYWORD_RETURN(CATCH); }                              // CFA
    18881944        YY_BREAK
    1889 case 25:
    1890 YY_RULE_SETUP
    1891 #line 192 "lex.ll"
     1945case 26:
     1946YY_RULE_SETUP
     1947#line 193 "lex.ll"
     1948{ KEYWORD_RETURN(CATCHRESUME); }                // CFA
     1949        YY_BREAK
     1950case 27:
     1951YY_RULE_SETUP
     1952#line 194 "lex.ll"
    18921953{ KEYWORD_RETURN(CHAR); }
    18931954        YY_BREAK
    1894 case 26:
    1895 YY_RULE_SETUP
    1896 #line 193 "lex.ll"
     1955case 28:
     1956YY_RULE_SETUP
     1957#line 195 "lex.ll"
    18971958{ KEYWORD_RETURN(CHOOSE); }                             // CFA
    18981959        YY_BREAK
    1899 case 27:
    1900 YY_RULE_SETUP
    1901 #line 194 "lex.ll"
     1960case 29:
     1961YY_RULE_SETUP
     1962#line 196 "lex.ll"
    19021963{ KEYWORD_RETURN(COMPLEX); }                    // C99
    19031964        YY_BREAK
    1904 case 28:
    1905 YY_RULE_SETUP
    1906 #line 195 "lex.ll"
     1965case 30:
     1966YY_RULE_SETUP
     1967#line 197 "lex.ll"
    19071968{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19081969        YY_BREAK
    1909 case 29:
    1910 YY_RULE_SETUP
    1911 #line 196 "lex.ll"
     1970case 31:
     1971YY_RULE_SETUP
     1972#line 198 "lex.ll"
    19121973{ KEYWORD_RETURN(COMPLEX); }                    // GCC
    19131974        YY_BREAK
    1914 case 30:
    1915 YY_RULE_SETUP
    1916 #line 197 "lex.ll"
     1975case 32:
     1976YY_RULE_SETUP
     1977#line 199 "lex.ll"
    19171978{ KEYWORD_RETURN(CONST); }
    19181979        YY_BREAK
    1919 case 31:
    1920 YY_RULE_SETUP
    1921 #line 198 "lex.ll"
     1980case 33:
     1981YY_RULE_SETUP
     1982#line 200 "lex.ll"
    19221983{ KEYWORD_RETURN(CONST); }                              // GCC
    19231984        YY_BREAK
    1924 case 32:
    1925 YY_RULE_SETUP
    1926 #line 199 "lex.ll"
     1985case 34:
     1986YY_RULE_SETUP
     1987#line 201 "lex.ll"
    19271988{ KEYWORD_RETURN(CONST); }                              // GCC
    19281989        YY_BREAK
    1929 case 33:
    1930 YY_RULE_SETUP
    1931 #line 200 "lex.ll"
     1990case 35:
     1991YY_RULE_SETUP
     1992#line 202 "lex.ll"
    19321993{ KEYWORD_RETURN(CONTEXT); }                    // CFA
    19331994        YY_BREAK
    1934 case 34:
    1935 YY_RULE_SETUP
    1936 #line 201 "lex.ll"
     1995case 36:
     1996YY_RULE_SETUP
     1997#line 203 "lex.ll"
    19371998{ KEYWORD_RETURN(CONTINUE); }
    19381999        YY_BREAK
    1939 case 35:
    1940 YY_RULE_SETUP
    1941 #line 202 "lex.ll"
     2000case 37:
     2001YY_RULE_SETUP
     2002#line 204 "lex.ll"
    19422003{ KEYWORD_RETURN(DEFAULT); }
    19432004        YY_BREAK
    1944 case 36:
    1945 YY_RULE_SETUP
    1946 #line 203 "lex.ll"
     2005case 38:
     2006YY_RULE_SETUP
     2007#line 205 "lex.ll"
     2008{ KEYWORD_RETURN(DISABLE); }                    // CFA
     2009        YY_BREAK
     2010case 39:
     2011YY_RULE_SETUP
     2012#line 206 "lex.ll"
    19472013{ KEYWORD_RETURN(DO); }
    19482014        YY_BREAK
    1949 case 37:
    1950 YY_RULE_SETUP
    1951 #line 204 "lex.ll"
     2015case 40:
     2016YY_RULE_SETUP
     2017#line 207 "lex.ll"
    19522018{ KEYWORD_RETURN(DOUBLE); }
    19532019        YY_BREAK
    1954 case 38:
    1955 YY_RULE_SETUP
    1956 #line 205 "lex.ll"
     2020case 41:
     2021YY_RULE_SETUP
     2022#line 208 "lex.ll"
    19572023{ KEYWORD_RETURN(DTYPE); }                              // CFA
    19582024        YY_BREAK
    1959 case 39:
    1960 YY_RULE_SETUP
    1961 #line 206 "lex.ll"
     2025case 42:
     2026YY_RULE_SETUP
     2027#line 209 "lex.ll"
    19622028{ KEYWORD_RETURN(ELSE); }
    19632029        YY_BREAK
    1964 case 40:
    1965 YY_RULE_SETUP
    1966 #line 207 "lex.ll"
     2030case 43:
     2031YY_RULE_SETUP
     2032#line 210 "lex.ll"
     2033{ KEYWORD_RETURN(ENABLE); }                             // CFA
     2034        YY_BREAK
     2035case 44:
     2036YY_RULE_SETUP
     2037#line 211 "lex.ll"
    19672038{ KEYWORD_RETURN(ENUM); }
    19682039        YY_BREAK
    1969 case 41:
    1970 YY_RULE_SETUP
    1971 #line 208 "lex.ll"
     2040case 45:
     2041YY_RULE_SETUP
     2042#line 212 "lex.ll"
    19722043{ KEYWORD_RETURN(EXTENSION); }                  // GCC
    19732044        YY_BREAK
    1974 case 42:
    1975 YY_RULE_SETUP
    1976 #line 209 "lex.ll"
     2045case 46:
     2046YY_RULE_SETUP
     2047#line 213 "lex.ll"
    19772048{ KEYWORD_RETURN(EXTERN); }
    19782049        YY_BREAK
    1979 case 43:
    1980 YY_RULE_SETUP
    1981 #line 210 "lex.ll"
     2050case 47:
     2051YY_RULE_SETUP
     2052#line 214 "lex.ll"
    19822053{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    19832054        YY_BREAK
    1984 case 44:
    1985 YY_RULE_SETUP
    1986 #line 211 "lex.ll"
     2055case 48:
     2056YY_RULE_SETUP
     2057#line 215 "lex.ll"
    19872058{ KEYWORD_RETURN(FINALLY); }                    // CFA
    19882059        YY_BREAK
    1989 case 45:
    1990 YY_RULE_SETUP
    1991 #line 212 "lex.ll"
     2060case 49:
     2061YY_RULE_SETUP
     2062#line 216 "lex.ll"
    19922063{ KEYWORD_RETURN(FLOAT); }
    19932064        YY_BREAK
    1994 case 46:
    1995 YY_RULE_SETUP
    1996 #line 213 "lex.ll"
     2065case 50:
     2066YY_RULE_SETUP
     2067#line 217 "lex.ll"
    19972068{ KEYWORD_RETURN(FLOAT); }                              // GCC
    19982069        YY_BREAK
    1999 case 47:
    2000 YY_RULE_SETUP
    2001 #line 214 "lex.ll"
     2070case 51:
     2071YY_RULE_SETUP
     2072#line 218 "lex.ll"
    20022073{ KEYWORD_RETURN(FOR); }
    20032074        YY_BREAK
    2004 case 48:
    2005 YY_RULE_SETUP
    2006 #line 215 "lex.ll"
     2075case 52:
     2076YY_RULE_SETUP
     2077#line 219 "lex.ll"
    20072078{ KEYWORD_RETURN(FORALL); }                             // CFA
    20082079        YY_BREAK
    2009 case 49:
    2010 YY_RULE_SETUP
    2011 #line 216 "lex.ll"
     2080case 53:
     2081YY_RULE_SETUP
     2082#line 220 "lex.ll"
    20122083{ KEYWORD_RETURN(FORTRAN); }
    20132084        YY_BREAK
    2014 case 50:
    2015 YY_RULE_SETUP
    2016 #line 217 "lex.ll"
     2085case 54:
     2086YY_RULE_SETUP
     2087#line 221 "lex.ll"
    20172088{ KEYWORD_RETURN(FTYPE); }                              // CFA
    20182089        YY_BREAK
    2019 case 51:
    2020 YY_RULE_SETUP
    2021 #line 218 "lex.ll"
     2090case 55:
     2091YY_RULE_SETUP
     2092#line 222 "lex.ll"
    20222093{ KEYWORD_RETURN(GENERIC); }                    // C11
    20232094        YY_BREAK
    2024 case 52:
    2025 YY_RULE_SETUP
    2026 #line 219 "lex.ll"
     2095case 56:
     2096YY_RULE_SETUP
     2097#line 223 "lex.ll"
    20272098{ KEYWORD_RETURN(GOTO); }
    20282099        YY_BREAK
    2029 case 53:
    2030 YY_RULE_SETUP
    2031 #line 220 "lex.ll"
     2100case 57:
     2101YY_RULE_SETUP
     2102#line 224 "lex.ll"
    20322103{ KEYWORD_RETURN(IF); }
    20332104        YY_BREAK
    2034 case 54:
    2035 YY_RULE_SETUP
    2036 #line 221 "lex.ll"
     2105case 58:
     2106YY_RULE_SETUP
     2107#line 225 "lex.ll"
    20372108{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    20382109        YY_BREAK
    2039 case 55:
    2040 YY_RULE_SETUP
    2041 #line 222 "lex.ll"
     2110case 59:
     2111YY_RULE_SETUP
     2112#line 226 "lex.ll"
    20422113{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    20432114        YY_BREAK
    2044 case 56:
    2045 YY_RULE_SETUP
    2046 #line 223 "lex.ll"
     2115case 60:
     2116YY_RULE_SETUP
     2117#line 227 "lex.ll"
    20472118{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    20482119        YY_BREAK
    2049 case 57:
    2050 YY_RULE_SETUP
    2051 #line 224 "lex.ll"
     2120case 61:
     2121YY_RULE_SETUP
     2122#line 228 "lex.ll"
    20522123{ KEYWORD_RETURN(INLINE); }                             // C99
    20532124        YY_BREAK
    2054 case 58:
    2055 YY_RULE_SETUP
    2056 #line 225 "lex.ll"
     2125case 62:
     2126YY_RULE_SETUP
     2127#line 229 "lex.ll"
    20572128{ KEYWORD_RETURN(INLINE); }                             // GCC
    20582129        YY_BREAK
    2059 case 59:
    2060 YY_RULE_SETUP
    2061 #line 226 "lex.ll"
     2130case 63:
     2131YY_RULE_SETUP
     2132#line 230 "lex.ll"
    20622133{ KEYWORD_RETURN(INLINE); }                             // GCC
    20632134        YY_BREAK
    2064 case 60:
    2065 YY_RULE_SETUP
    2066 #line 227 "lex.ll"
     2135case 64:
     2136YY_RULE_SETUP
     2137#line 231 "lex.ll"
    20672138{ KEYWORD_RETURN(INT); }
    20682139        YY_BREAK
    2069 case 61:
    2070 YY_RULE_SETUP
    2071 #line 228 "lex.ll"
     2140case 65:
     2141YY_RULE_SETUP
     2142#line 232 "lex.ll"
    20722143{ KEYWORD_RETURN(INT); }                                // GCC
    20732144        YY_BREAK
    2074 case 62:
    2075 YY_RULE_SETUP
    2076 #line 229 "lex.ll"
     2145case 66:
     2146YY_RULE_SETUP
     2147#line 233 "lex.ll"
    20772148{ KEYWORD_RETURN(LABEL); }                              // GCC
    20782149        YY_BREAK
    2079 case 63:
    2080 YY_RULE_SETUP
    2081 #line 230 "lex.ll"
     2150case 67:
     2151YY_RULE_SETUP
     2152#line 234 "lex.ll"
    20822153{ KEYWORD_RETURN(LONG); }
    20832154        YY_BREAK
    2084 case 64:
    2085 YY_RULE_SETUP
    2086 #line 231 "lex.ll"
     2155case 68:
     2156YY_RULE_SETUP
     2157#line 235 "lex.ll"
    20872158{ KEYWORD_RETURN(LVALUE); }                             // CFA
    20882159        YY_BREAK
    2089 case 65:
    2090 YY_RULE_SETUP
    2091 #line 232 "lex.ll"
     2160case 69:
     2161YY_RULE_SETUP
     2162#line 236 "lex.ll"
    20922163{ KEYWORD_RETURN(NORETURN); }                   // C11
    20932164        YY_BREAK
    2094 case 66:
    2095 YY_RULE_SETUP
    2096 #line 233 "lex.ll"
     2165case 70:
     2166YY_RULE_SETUP
     2167#line 237 "lex.ll"
    20972168{ KEYWORD_RETURN(REGISTER); }
    20982169        YY_BREAK
    2099 case 67:
    2100 YY_RULE_SETUP
    2101 #line 234 "lex.ll"
     2170case 71:
     2171YY_RULE_SETUP
     2172#line 238 "lex.ll"
    21022173{ KEYWORD_RETURN(RESTRICT); }                   // C99
    21032174        YY_BREAK
    2104 case 68:
    2105 YY_RULE_SETUP
    2106 #line 235 "lex.ll"
     2175case 72:
     2176YY_RULE_SETUP
     2177#line 239 "lex.ll"
    21072178{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    21082179        YY_BREAK
    2109 case 69:
    2110 YY_RULE_SETUP
    2111 #line 236 "lex.ll"
     2180case 73:
     2181YY_RULE_SETUP
     2182#line 240 "lex.ll"
    21122183{ KEYWORD_RETURN(RESTRICT); }                   // GCC
    21132184        YY_BREAK
    2114 case 70:
    2115 YY_RULE_SETUP
    2116 #line 237 "lex.ll"
     2185case 74:
     2186YY_RULE_SETUP
     2187#line 241 "lex.ll"
    21172188{ KEYWORD_RETURN(RETURN); }
    21182189        YY_BREAK
    2119 case 71:
    2120 YY_RULE_SETUP
    2121 #line 238 "lex.ll"
     2190case 75:
     2191YY_RULE_SETUP
     2192#line 242 "lex.ll"
    21222193{ KEYWORD_RETURN(SHORT); }
    21232194        YY_BREAK
    2124 case 72:
    2125 YY_RULE_SETUP
    2126 #line 239 "lex.ll"
     2195case 76:
     2196YY_RULE_SETUP
     2197#line 243 "lex.ll"
    21272198{ KEYWORD_RETURN(SIGNED); }
    21282199        YY_BREAK
    2129 case 73:
    2130 YY_RULE_SETUP
    2131 #line 240 "lex.ll"
     2200case 77:
     2201YY_RULE_SETUP
     2202#line 244 "lex.ll"
    21322203{ KEYWORD_RETURN(SIGNED); }                             // GCC
    21332204        YY_BREAK
    2134 case 74:
    2135 YY_RULE_SETUP
    2136 #line 241 "lex.ll"
     2205case 78:
     2206YY_RULE_SETUP
     2207#line 245 "lex.ll"
    21372208{ KEYWORD_RETURN(SIGNED); }                             // GCC
    21382209        YY_BREAK
    2139 case 75:
    2140 YY_RULE_SETUP
    2141 #line 242 "lex.ll"
     2210case 79:
     2211YY_RULE_SETUP
     2212#line 246 "lex.ll"
    21422213{ KEYWORD_RETURN(SIZEOF); }
    21432214        YY_BREAK
    2144 case 76:
    2145 YY_RULE_SETUP
    2146 #line 243 "lex.ll"
     2215case 80:
     2216YY_RULE_SETUP
     2217#line 247 "lex.ll"
    21472218{ KEYWORD_RETURN(STATIC); }
    21482219        YY_BREAK
    2149 case 77:
    2150 YY_RULE_SETUP
    2151 #line 244 "lex.ll"
     2220case 81:
     2221YY_RULE_SETUP
     2222#line 248 "lex.ll"
    21522223{ KEYWORD_RETURN(STATICASSERT); }               // C11
    21532224        YY_BREAK
    2154 case 78:
    2155 YY_RULE_SETUP
    2156 #line 245 "lex.ll"
     2225case 82:
     2226YY_RULE_SETUP
     2227#line 249 "lex.ll"
    21572228{ KEYWORD_RETURN(STRUCT); }
    21582229        YY_BREAK
    2159 case 79:
    2160 YY_RULE_SETUP
    2161 #line 246 "lex.ll"
     2230case 83:
     2231YY_RULE_SETUP
     2232#line 250 "lex.ll"
    21622233{ KEYWORD_RETURN(SWITCH); }
    21632234        YY_BREAK
    2164 case 80:
    2165 YY_RULE_SETUP
    2166 #line 247 "lex.ll"
     2235case 84:
     2236YY_RULE_SETUP
     2237#line 251 "lex.ll"
    21672238{ KEYWORD_RETURN(THREADLOCAL); }                // C11
    21682239        YY_BREAK
    2169 case 81:
    2170 YY_RULE_SETUP
    2171 #line 248 "lex.ll"
     2240case 85:
     2241YY_RULE_SETUP
     2242#line 252 "lex.ll"
    21722243{ KEYWORD_RETURN(THROW); }                              // CFA
    21732244        YY_BREAK
    2174 case 82:
    2175 YY_RULE_SETUP
    2176 #line 249 "lex.ll"
     2245case 86:
     2246YY_RULE_SETUP
     2247#line 253 "lex.ll"
     2248{ KEYWORD_RETURN(THROWRESUME); }                // CFA
     2249        YY_BREAK
     2250case 87:
     2251YY_RULE_SETUP
     2252#line 254 "lex.ll"
    21772253{ KEYWORD_RETURN(TRY); }                                // CFA
    21782254        YY_BREAK
    2179 case 83:
    2180 YY_RULE_SETUP
    2181 #line 250 "lex.ll"
     2255case 88:
     2256YY_RULE_SETUP
     2257#line 255 "lex.ll"
    21822258{ KEYWORD_RETURN(TYPE); }                               // CFA
    21832259        YY_BREAK
    2184 case 84:
    2185 YY_RULE_SETUP
    2186 #line 251 "lex.ll"
     2260case 89:
     2261YY_RULE_SETUP
     2262#line 256 "lex.ll"
    21872263{ KEYWORD_RETURN(TYPEDEF); }
    21882264        YY_BREAK
    2189 case 85:
    2190 YY_RULE_SETUP
    2191 #line 252 "lex.ll"
     2265case 90:
     2266YY_RULE_SETUP
     2267#line 257 "lex.ll"
    21922268{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    21932269        YY_BREAK
    2194 case 86:
    2195 YY_RULE_SETUP
    2196 #line 253 "lex.ll"
     2270case 91:
     2271YY_RULE_SETUP
     2272#line 258 "lex.ll"
    21972273{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    21982274        YY_BREAK
    2199 case 87:
    2200 YY_RULE_SETUP
    2201 #line 254 "lex.ll"
     2275case 92:
     2276YY_RULE_SETUP
     2277#line 259 "lex.ll"
    22022278{ KEYWORD_RETURN(TYPEOF); }                             // GCC
    22032279        YY_BREAK
    2204 case 88:
    2205 YY_RULE_SETUP
    2206 #line 255 "lex.ll"
     2280case 93:
     2281YY_RULE_SETUP
     2282#line 260 "lex.ll"
    22072283{ KEYWORD_RETURN(UNION); }
    22082284        YY_BREAK
    2209 case 89:
    2210 YY_RULE_SETUP
    2211 #line 256 "lex.ll"
     2285case 94:
     2286YY_RULE_SETUP
     2287#line 261 "lex.ll"
    22122288{ KEYWORD_RETURN(UNSIGNED); }
    22132289        YY_BREAK
    2214 case 90:
    2215 YY_RULE_SETUP
    2216 #line 257 "lex.ll"
     2290case 95:
     2291YY_RULE_SETUP
     2292#line 262 "lex.ll"
    22172293{ KEYWORD_RETURN(VOID); }
    22182294        YY_BREAK
    2219 case 91:
    2220 YY_RULE_SETUP
    2221 #line 258 "lex.ll"
     2295case 96:
     2296YY_RULE_SETUP
     2297#line 263 "lex.ll"
    22222298{ KEYWORD_RETURN(VOLATILE); }
    22232299        YY_BREAK
    2224 case 92:
    2225 YY_RULE_SETUP
    2226 #line 259 "lex.ll"
     2300case 97:
     2301YY_RULE_SETUP
     2302#line 264 "lex.ll"
    22272303{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    22282304        YY_BREAK
    2229 case 93:
    2230 YY_RULE_SETUP
    2231 #line 260 "lex.ll"
     2305case 98:
     2306YY_RULE_SETUP
     2307#line 265 "lex.ll"
    22322308{ KEYWORD_RETURN(VOLATILE); }                   // GCC
    22332309        YY_BREAK
    2234 case 94:
    2235 YY_RULE_SETUP
    2236 #line 261 "lex.ll"
     2310case 99:
     2311YY_RULE_SETUP
     2312#line 266 "lex.ll"
    22372313{ KEYWORD_RETURN(WHILE); }
    22382314        YY_BREAK
    22392315/* identifier */
    2240 case 95:
    2241 YY_RULE_SETUP
    2242 #line 264 "lex.ll"
     2316case 100:
     2317YY_RULE_SETUP
     2318#line 269 "lex.ll"
    22432319{ IDENTIFIER_RETURN(); }
    22442320        YY_BREAK
    2245 case 96:
    2246 YY_RULE_SETUP
    2247 #line 265 "lex.ll"
     2321case 101:
     2322YY_RULE_SETUP
     2323#line 270 "lex.ll"
    22482324{ ATTRIBUTE_RETURN(); }
    22492325        YY_BREAK
    2250 case 97:
    2251 YY_RULE_SETUP
    2252 #line 266 "lex.ll"
     2326case 102:
     2327YY_RULE_SETUP
     2328#line 271 "lex.ll"
    22532329{ BEGIN BKQUOTE; }
    22542330        YY_BREAK
    2255 case 98:
    2256 YY_RULE_SETUP
    2257 #line 267 "lex.ll"
     2331case 103:
     2332YY_RULE_SETUP
     2333#line 272 "lex.ll"
    22582334{ IDENTIFIER_RETURN(); }
    22592335        YY_BREAK
    2260 case 99:
    2261 YY_RULE_SETUP
    2262 #line 268 "lex.ll"
     2336case 104:
     2337YY_RULE_SETUP
     2338#line 273 "lex.ll"
    22632339{ BEGIN 0; }
    22642340        YY_BREAK
    22652341/* numeric constants */
    2266 case 100:
    2267 YY_RULE_SETUP
    2268 #line 271 "lex.ll"
     2342case 105:
     2343YY_RULE_SETUP
     2344#line 276 "lex.ll"
    22692345{ NUMERIC_RETURN(ZERO); }                               // CFA
    22702346        YY_BREAK
    2271 case 101:
    2272 YY_RULE_SETUP
    2273 #line 272 "lex.ll"
     2347case 106:
     2348YY_RULE_SETUP
     2349#line 277 "lex.ll"
    22742350{ NUMERIC_RETURN(ONE); }                                // CFA
    22752351        YY_BREAK
    2276 case 102:
    2277 YY_RULE_SETUP
    2278 #line 273 "lex.ll"
     2352case 107:
     2353YY_RULE_SETUP
     2354#line 278 "lex.ll"
    22792355{ NUMERIC_RETURN(INTEGERconstant); }
    22802356        YY_BREAK
    2281 case 103:
    2282 YY_RULE_SETUP
    2283 #line 274 "lex.ll"
     2357case 108:
     2358YY_RULE_SETUP
     2359#line 279 "lex.ll"
    22842360{ NUMERIC_RETURN(INTEGERconstant); }
    22852361        YY_BREAK
    2286 case 104:
    2287 YY_RULE_SETUP
    2288 #line 275 "lex.ll"
     2362case 109:
     2363YY_RULE_SETUP
     2364#line 280 "lex.ll"
    22892365{ NUMERIC_RETURN(INTEGERconstant); }
    22902366        YY_BREAK
    2291 case 105:
    2292 YY_RULE_SETUP
    2293 #line 276 "lex.ll"
     2367case 110:
     2368YY_RULE_SETUP
     2369#line 281 "lex.ll"
    22942370{ NUMERIC_RETURN(FLOATINGconstant); }
    22952371        YY_BREAK
    2296 case 106:
    2297 YY_RULE_SETUP
    2298 #line 277 "lex.ll"
     2372case 111:
     2373YY_RULE_SETUP
     2374#line 282 "lex.ll"
    22992375{ NUMERIC_RETURN(FLOATINGconstant); }
    23002376        YY_BREAK
    23012377/* character constant, allows empty value */
    2302 case 107:
    2303 YY_RULE_SETUP
    2304 #line 280 "lex.ll"
     2378case 112:
     2379YY_RULE_SETUP
     2380#line 285 "lex.ll"
    23052381{ BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23062382        YY_BREAK
    2307 case 108:
    2308 YY_RULE_SETUP
    2309 #line 281 "lex.ll"
     2383case 113:
     2384YY_RULE_SETUP
     2385#line 286 "lex.ll"
    23102386{ *strtext += std::string( yytext ); }
    23112387        YY_BREAK
    2312 case 109:
    2313 /* rule 109 can match eol */
    2314 YY_RULE_SETUP
    2315 #line 282 "lex.ll"
     2388case 114:
     2389/* rule 114 can match eol */
     2390YY_RULE_SETUP
     2391#line 287 "lex.ll"
    23162392{ BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
    23172393        YY_BREAK
    23182394/* ' stop highlighting */
    23192395/* string constant */
    2320 case 110:
    2321 YY_RULE_SETUP
    2322 #line 286 "lex.ll"
     2396case 115:
     2397YY_RULE_SETUP
     2398#line 291 "lex.ll"
    23232399{ BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
    23242400        YY_BREAK
    2325 case 111:
    2326 YY_RULE_SETUP
    2327 #line 287 "lex.ll"
     2401case 116:
     2402YY_RULE_SETUP
     2403#line 292 "lex.ll"
    23282404{ *strtext += std::string( yytext ); }
    23292405        YY_BREAK
    2330 case 112:
    2331 /* rule 112 can match eol */
    2332 YY_RULE_SETUP
    2333 #line 288 "lex.ll"
     2406case 117:
     2407/* rule 117 can match eol */
     2408YY_RULE_SETUP
     2409#line 293 "lex.ll"
    23342410{ BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
    23352411        YY_BREAK
    23362412/* " stop highlighting */
    23372413/* common character/string constant */
    2338 case 113:
    2339 YY_RULE_SETUP
    2340 #line 292 "lex.ll"
     2414case 118:
     2415YY_RULE_SETUP
     2416#line 297 "lex.ll"
    23412417{ rm_underscore(); *strtext += std::string( yytext ); }
    23422418        YY_BREAK
    2343 case 114:
    2344 /* rule 114 can match eol */
    2345 YY_RULE_SETUP
    2346 #line 293 "lex.ll"
     2419case 119:
     2420/* rule 119 can match eol */
     2421YY_RULE_SETUP
     2422#line 298 "lex.ll"
    23472423{}                                              // continuation (ALSO HANDLED BY CPP)
    23482424        YY_BREAK
    2349 case 115:
    2350 YY_RULE_SETUP
    2351 #line 294 "lex.ll"
     2425case 120:
     2426YY_RULE_SETUP
     2427#line 299 "lex.ll"
    23522428{ *strtext += std::string( yytext ); } // unknown escape character
    23532429        YY_BREAK
    23542430/* punctuation */
    2355 case 116:
    2356 YY_RULE_SETUP
    2357 #line 297 "lex.ll"
    2358 { ASCIIOP_RETURN(); }
    2359         YY_BREAK
    2360 case 117:
    2361 YY_RULE_SETUP
    2362 #line 298 "lex.ll"
    2363 { ASCIIOP_RETURN(); }
    2364         YY_BREAK
    2365 case 118:
    2366 YY_RULE_SETUP
    2367 #line 299 "lex.ll"
    2368 { ASCIIOP_RETURN(); }
    2369         YY_BREAK
    2370 case 119:
    2371 YY_RULE_SETUP
    2372 #line 300 "lex.ll"
    2373 { ASCIIOP_RETURN(); }
    2374         YY_BREAK
    2375 case 120:
    2376 YY_RULE_SETUP
    2377 #line 301 "lex.ll"
    2378 { ASCIIOP_RETURN(); }
    2379         YY_BREAK
    23802431case 121:
    23812432YY_RULE_SETUP
     
    23862437YY_RULE_SETUP
    23872438#line 303 "lex.ll"
    2388 { ASCIIOP_RETURN(); }                                   // also operator
     2439{ ASCIIOP_RETURN(); }
    23892440        YY_BREAK
    23902441case 123:
     
    24012452YY_RULE_SETUP
    24022453#line 306 "lex.ll"
     2454{ ASCIIOP_RETURN(); }
     2455        YY_BREAK
     2456case 126:
     2457YY_RULE_SETUP
     2458#line 307 "lex.ll"
     2459{ ASCIIOP_RETURN(); }
     2460        YY_BREAK
     2461case 127:
     2462YY_RULE_SETUP
     2463#line 308 "lex.ll"
    24032464{ ASCIIOP_RETURN(); }                                   // also operator
    24042465        YY_BREAK
    2405 case 126:
    2406 YY_RULE_SETUP
    2407 #line 307 "lex.ll"
     2466case 128:
     2467YY_RULE_SETUP
     2468#line 309 "lex.ll"
     2469{ ASCIIOP_RETURN(); }
     2470        YY_BREAK
     2471case 129:
     2472YY_RULE_SETUP
     2473#line 310 "lex.ll"
     2474{ ASCIIOP_RETURN(); }
     2475        YY_BREAK
     2476case 130:
     2477YY_RULE_SETUP
     2478#line 311 "lex.ll"
     2479{ ASCIIOP_RETURN(); }                                   // also operator
     2480        YY_BREAK
     2481case 131:
     2482YY_RULE_SETUP
     2483#line 312 "lex.ll"
    24082484{ NAMEDOP_RETURN(ELLIPSIS); }
    24092485        YY_BREAK
    24102486/* alternative C99 brackets, "<:" & "<:<:" handled by preprocessor */
    2411 case 127:
    2412 YY_RULE_SETUP
    2413 #line 310 "lex.ll"
     2487case 132:
     2488YY_RULE_SETUP
     2489#line 315 "lex.ll"
    24142490{ RETURN_VAL('['); }
    24152491        YY_BREAK
    2416 case 128:
    2417 YY_RULE_SETUP
    2418 #line 311 "lex.ll"
     2492case 133:
     2493YY_RULE_SETUP
     2494#line 316 "lex.ll"
    24192495{ RETURN_VAL(']'); }
    24202496        YY_BREAK
    2421 case 129:
    2422 YY_RULE_SETUP
    2423 #line 312 "lex.ll"
     2497case 134:
     2498YY_RULE_SETUP
     2499#line 317 "lex.ll"
    24242500{ RETURN_VAL('{'); }
    24252501        YY_BREAK
    2426 case 130:
    2427 YY_RULE_SETUP
    2428 #line 313 "lex.ll"
     2502case 135:
     2503YY_RULE_SETUP
     2504#line 318 "lex.ll"
    24292505{ RETURN_VAL('}'); }
    24302506        YY_BREAK
    24312507/* operators */
    2432 case 131:
    2433 YY_RULE_SETUP
    2434 #line 316 "lex.ll"
    2435 { ASCIIOP_RETURN(); }
    2436         YY_BREAK
    2437 case 132:
    2438 YY_RULE_SETUP
    2439 #line 317 "lex.ll"
    2440 { ASCIIOP_RETURN(); }
    2441         YY_BREAK
    2442 case 133:
    2443 YY_RULE_SETUP
    2444 #line 318 "lex.ll"
    2445 { ASCIIOP_RETURN(); }
    2446         YY_BREAK
    2447 case 134:
    2448 YY_RULE_SETUP
    2449 #line 319 "lex.ll"
    2450 { ASCIIOP_RETURN(); }
    2451         YY_BREAK
    2452 case 135:
    2453 YY_RULE_SETUP
    2454 #line 320 "lex.ll"
    2455 { ASCIIOP_RETURN(); }
    2456         YY_BREAK
    24572508case 136:
    24582509YY_RULE_SETUP
     
    25022553case 145:
    25032554YY_RULE_SETUP
     2555#line 330 "lex.ll"
     2556{ ASCIIOP_RETURN(); }
     2557        YY_BREAK
     2558case 146:
     2559YY_RULE_SETUP
    25042560#line 331 "lex.ll"
     2561{ ASCIIOP_RETURN(); }
     2562        YY_BREAK
     2563case 147:
     2564YY_RULE_SETUP
     2565#line 332 "lex.ll"
     2566{ ASCIIOP_RETURN(); }
     2567        YY_BREAK
     2568case 148:
     2569YY_RULE_SETUP
     2570#line 333 "lex.ll"
     2571{ ASCIIOP_RETURN(); }
     2572        YY_BREAK
     2573case 149:
     2574YY_RULE_SETUP
     2575#line 334 "lex.ll"
     2576{ ASCIIOP_RETURN(); }
     2577        YY_BREAK
     2578case 150:
     2579YY_RULE_SETUP
     2580#line 336 "lex.ll"
    25052581{ NAMEDOP_RETURN(ICR); }
    25062582        YY_BREAK
    2507 case 146:
    2508 YY_RULE_SETUP
    2509 #line 332 "lex.ll"
     2583case 151:
     2584YY_RULE_SETUP
     2585#line 337 "lex.ll"
    25102586{ NAMEDOP_RETURN(DECR); }
    25112587        YY_BREAK
    2512 case 147:
    2513 YY_RULE_SETUP
    2514 #line 333 "lex.ll"
     2588case 152:
     2589YY_RULE_SETUP
     2590#line 338 "lex.ll"
    25152591{ NAMEDOP_RETURN(EQ); }
    25162592        YY_BREAK
    2517 case 148:
    2518 YY_RULE_SETUP
    2519 #line 334 "lex.ll"
     2593case 153:
     2594YY_RULE_SETUP
     2595#line 339 "lex.ll"
    25202596{ NAMEDOP_RETURN(NE); }
    25212597        YY_BREAK
    2522 case 149:
    2523 YY_RULE_SETUP
    2524 #line 335 "lex.ll"
     2598case 154:
     2599YY_RULE_SETUP
     2600#line 340 "lex.ll"
    25252601{ NAMEDOP_RETURN(LS); }
    25262602        YY_BREAK
    2527 case 150:
    2528 YY_RULE_SETUP
    2529 #line 336 "lex.ll"
     2603case 155:
     2604YY_RULE_SETUP
     2605#line 341 "lex.ll"
    25302606{ NAMEDOP_RETURN(RS); }
    25312607        YY_BREAK
    2532 case 151:
    2533 YY_RULE_SETUP
    2534 #line 337 "lex.ll"
     2608case 156:
     2609YY_RULE_SETUP
     2610#line 342 "lex.ll"
    25352611{ NAMEDOP_RETURN(LE); }
    25362612        YY_BREAK
    2537 case 152:
    2538 YY_RULE_SETUP
    2539 #line 338 "lex.ll"
     2613case 157:
     2614YY_RULE_SETUP
     2615#line 343 "lex.ll"
    25402616{ NAMEDOP_RETURN(GE); }
    25412617        YY_BREAK
    2542 case 153:
    2543 YY_RULE_SETUP
    2544 #line 339 "lex.ll"
     2618case 158:
     2619YY_RULE_SETUP
     2620#line 344 "lex.ll"
    25452621{ NAMEDOP_RETURN(ANDAND); }
    25462622        YY_BREAK
    2547 case 154:
    2548 YY_RULE_SETUP
    2549 #line 340 "lex.ll"
     2623case 159:
     2624YY_RULE_SETUP
     2625#line 345 "lex.ll"
    25502626{ NAMEDOP_RETURN(OROR); }
    25512627        YY_BREAK
    2552 case 155:
    2553 YY_RULE_SETUP
    2554 #line 341 "lex.ll"
     2628case 160:
     2629YY_RULE_SETUP
     2630#line 346 "lex.ll"
    25552631{ NAMEDOP_RETURN(ARROW); }
    25562632        YY_BREAK
    2557 case 156:
    2558 YY_RULE_SETUP
    2559 #line 342 "lex.ll"
     2633case 161:
     2634YY_RULE_SETUP
     2635#line 347 "lex.ll"
    25602636{ NAMEDOP_RETURN(PLUSassign); }
    25612637        YY_BREAK
    2562 case 157:
    2563 YY_RULE_SETUP
    2564 #line 343 "lex.ll"
     2638case 162:
     2639YY_RULE_SETUP
     2640#line 348 "lex.ll"
    25652641{ NAMEDOP_RETURN(MINUSassign); }
    25662642        YY_BREAK
    2567 case 158:
    2568 YY_RULE_SETUP
    2569 #line 344 "lex.ll"
     2643case 163:
     2644YY_RULE_SETUP
     2645#line 349 "lex.ll"
    25702646{ NAMEDOP_RETURN(MULTassign); }
    25712647        YY_BREAK
    2572 case 159:
    2573 YY_RULE_SETUP
    2574 #line 345 "lex.ll"
     2648case 164:
     2649YY_RULE_SETUP
     2650#line 350 "lex.ll"
    25752651{ NAMEDOP_RETURN(DIVassign); }
    25762652        YY_BREAK
    2577 case 160:
    2578 YY_RULE_SETUP
    2579 #line 346 "lex.ll"
     2653case 165:
     2654YY_RULE_SETUP
     2655#line 351 "lex.ll"
    25802656{ NAMEDOP_RETURN(MODassign); }
    25812657        YY_BREAK
    2582 case 161:
    2583 YY_RULE_SETUP
    2584 #line 347 "lex.ll"
     2658case 166:
     2659YY_RULE_SETUP
     2660#line 352 "lex.ll"
    25852661{ NAMEDOP_RETURN(ANDassign); }
    25862662        YY_BREAK
    2587 case 162:
    2588 YY_RULE_SETUP
    2589 #line 348 "lex.ll"
     2663case 167:
     2664YY_RULE_SETUP
     2665#line 353 "lex.ll"
    25902666{ NAMEDOP_RETURN(ORassign); }
    25912667        YY_BREAK
    2592 case 163:
    2593 YY_RULE_SETUP
    2594 #line 349 "lex.ll"
     2668case 168:
     2669YY_RULE_SETUP
     2670#line 354 "lex.ll"
    25952671{ NAMEDOP_RETURN(ERassign); }
    25962672        YY_BREAK
    2597 case 164:
    2598 YY_RULE_SETUP
    2599 #line 350 "lex.ll"
     2673case 169:
     2674YY_RULE_SETUP
     2675#line 355 "lex.ll"
    26002676{ NAMEDOP_RETURN(LSassign); }
    26012677        YY_BREAK
    2602 case 165:
    2603 YY_RULE_SETUP
    2604 #line 351 "lex.ll"
     2678case 170:
     2679YY_RULE_SETUP
     2680#line 356 "lex.ll"
    26052681{ NAMEDOP_RETURN(RSassign); }
    26062682        YY_BREAK
     2683case 171:
     2684YY_RULE_SETUP
     2685#line 358 "lex.ll"
     2686{ NAMEDOP_RETURN(ATassign); }
     2687        YY_BREAK
    26072688/* CFA, operator identifier */
    2608 case 166:
    2609 YY_RULE_SETUP
    2610 #line 354 "lex.ll"
     2689case 172:
     2690YY_RULE_SETUP
     2691#line 361 "lex.ll"
    26112692{ IDENTIFIER_RETURN(); }                                // unary
    26122693        YY_BREAK
    2613 case 167:
    2614 YY_RULE_SETUP
    2615 #line 355 "lex.ll"
     2694case 173:
     2695YY_RULE_SETUP
     2696#line 362 "lex.ll"
    26162697{ IDENTIFIER_RETURN(); }
    26172698        YY_BREAK
    2618 case 168:
    2619 YY_RULE_SETUP
    2620 #line 356 "lex.ll"
     2699case 174:
     2700YY_RULE_SETUP
     2701#line 363 "lex.ll"
     2702{ IDENTIFIER_RETURN(); }
     2703        YY_BREAK
     2704case 175:
     2705YY_RULE_SETUP
     2706#line 364 "lex.ll"
    26212707{ IDENTIFIER_RETURN(); }                // binary
    26222708        YY_BREAK
     
    26472733          an argument list.
    26482734        */
    2649 case 169:
    2650 YY_RULE_SETUP
    2651 #line 383 "lex.ll"
     2735case 176:
     2736YY_RULE_SETUP
     2737#line 391 "lex.ll"
    26522738{
    26532739        // 1 or 2 character unary operator ?
     
    26622748        YY_BREAK
    26632749/* unknown characters */
    2664 case 170:
    2665 YY_RULE_SETUP
    2666 #line 395 "lex.ll"
     2750case 177:
     2751YY_RULE_SETUP
     2752#line 403 "lex.ll"
    26672753{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
    26682754        YY_BREAK
    2669 case 171:
    2670 YY_RULE_SETUP
    2671 #line 397 "lex.ll"
     2755case 178:
     2756YY_RULE_SETUP
     2757#line 405 "lex.ll"
    26722758ECHO;
    26732759        YY_BREAK
    2674 #line 2675 "Parser/lex.cc"
     2760#line 2761 "Parser/lex.cc"
    26752761case YY_STATE_EOF(INITIAL):
    26762762case YY_STATE_EOF(COMMENT):
     
    29693055                        {
    29703056                        yy_current_state = (int) yy_def[yy_current_state];
    2971                         if ( yy_current_state >= 826 )
     3057                        if ( yy_current_state >= 852 )
    29723058                                yy_c = yy_meta[(unsigned int) yy_c];
    29733059                        }
     
    29973083                {
    29983084                yy_current_state = (int) yy_def[yy_current_state];
    2999                 if ( yy_current_state >= 826 )
     3085                if ( yy_current_state >= 852 )
    30003086                        yy_c = yy_meta[(unsigned int) yy_c];
    30013087                }
    30023088        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3003         yy_is_jam = (yy_current_state == 825);
     3089        yy_is_jam = (yy_current_state == 851);
    30043090
    30053091        return yy_is_jam ? 0 : yy_current_state;
     
    36473733#define YYTABLES_NAME "yytables"
    36483734
    3649 #line 397 "lex.ll"
     3735#line 405 "lex.ll"
    36503736
    36513737
  • src/Parser/lex.ll

    r698664b3 rd2ded3e7  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Fri Jun 19 11:10:14 2015
    13  * Update Count     : 392
     12 * Last Modified On : Thu Oct  8 16:13:07 2015
     13 * Update Count     : 404
    1414 */
    1515
     
    182182__asm                   { KEYWORD_RETURN(ASM); }                                // GCC
    183183__asm__                 { KEYWORD_RETURN(ASM); }                                // GCC
     184_At                             { KEYWORD_RETURN(AT); }                                 // CFA
    184185_Atomic                 { KEYWORD_RETURN(ATOMIC); }                             // C11
    185186__attribute             { KEYWORD_RETURN(ATTRIBUTE); }                  // GCC
     
    190191case                    { KEYWORD_RETURN(CASE); }
    191192catch                   { KEYWORD_RETURN(CATCH); }                              // CFA
     193catchResume             { KEYWORD_RETURN(CATCHRESUME); }                // CFA
    192194char                    { KEYWORD_RETURN(CHAR); }
    193195choose                  { KEYWORD_RETURN(CHOOSE); }                             // CFA
     
    201203continue                { KEYWORD_RETURN(CONTINUE); }
    202204default                 { KEYWORD_RETURN(DEFAULT); }
     205disable                 { KEYWORD_RETURN(DISABLE); }                    // CFA
    203206do                              { KEYWORD_RETURN(DO); }
    204207double                  { KEYWORD_RETURN(DOUBLE); }
    205208dtype                   { KEYWORD_RETURN(DTYPE); }                              // CFA
    206209else                    { KEYWORD_RETURN(ELSE); }
     210enable                  { KEYWORD_RETURN(ENABLE); }                             // CFA
    207211enum                    { KEYWORD_RETURN(ENUM); }
    208212__extension__   { KEYWORD_RETURN(EXTENSION); }                  // GCC
     
    247251_Thread_local   { KEYWORD_RETURN(THREADLOCAL); }                // C11
    248252throw                   { KEYWORD_RETURN(THROW); }                              // CFA
     253throwResume             { KEYWORD_RETURN(THROWRESUME); }                // CFA
    249254try                             { KEYWORD_RETURN(TRY); }                                // CFA
    250255type                    { KEYWORD_RETURN(TYPE); }                               // CFA
     
    351356">>="                   { NAMEDOP_RETURN(RSassign); }
    352357
     358"@="                    { NAMEDOP_RETURN(ATassign); }
     359
    353360                                /* CFA, operator identifier */
    354361{op_unary}"?"   { IDENTIFIER_RETURN(); }                                // unary
    355362"?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); }
     363"^?{}" { IDENTIFIER_RETURN(); }
    356364"?"{op_binary_over}"?"  { IDENTIFIER_RETURN(); }                // binary
    357365        /*
     
    381389          an argument list.
    382390        */
    383 {op_unary}"?"(({op_unary_pre_post}|"[?]")|({op_binary_over}"?")) {
     391{op_unary}"?"({op_unary_pre_post}|"[?]"|{op_binary_over}"?") {
    384392        // 1 or 2 character unary operator ?
    385393        int i = yytext[1] == '?' ? 1 : 2;
  • src/Parser/parser.cc

    r698664b3 rd2ded3e7  
    166166     RETURN = 305,
    167167     CHOOSE = 306,
    168      FALLTHRU = 307,
    169      TRY = 308,
    170      CATCH = 309,
    171      FINALLY = 310,
    172      THROW = 311,
    173      ASM = 312,
    174      ALIGNAS = 313,
    175      ALIGNOF = 314,
    176      ATOMIC = 315,
    177      GENERIC = 316,
    178      NORETURN = 317,
    179      STATICASSERT = 318,
    180      THREADLOCAL = 319,
    181      IDENTIFIER = 320,
    182      QUOTED_IDENTIFIER = 321,
    183      TYPEDEFname = 322,
    184      TYPEGENname = 323,
    185      ATTR_IDENTIFIER = 324,
    186      ATTR_TYPEDEFname = 325,
    187      ATTR_TYPEGENname = 326,
    188      INTEGERconstant = 327,
    189      FLOATINGconstant = 328,
    190      CHARACTERconstant = 329,
    191      STRINGliteral = 330,
    192      ZERO = 331,
    193      ONE = 332,
    194      ARROW = 333,
    195      ICR = 334,
    196      DECR = 335,
    197      LS = 336,
    198      RS = 337,
    199      LE = 338,
    200      GE = 339,
    201      EQ = 340,
    202      NE = 341,
    203      ANDAND = 342,
    204      OROR = 343,
    205      ELLIPSIS = 344,
    206      MULTassign = 345,
    207      DIVassign = 346,
    208      MODassign = 347,
    209      PLUSassign = 348,
    210      MINUSassign = 349,
    211      LSassign = 350,
    212      RSassign = 351,
    213      ANDassign = 352,
    214      ERassign = 353,
    215      ORassign = 354,
    216      THEN = 355
     168     DISABLE = 307,
     169     ENABLE = 308,
     170     FALLTHRU = 309,
     171     TRY = 310,
     172     CATCH = 311,
     173     CATCHRESUME = 312,
     174     FINALLY = 313,
     175     THROW = 314,
     176     THROWRESUME = 315,
     177     AT = 316,
     178     ASM = 317,
     179     ALIGNAS = 318,
     180     ALIGNOF = 319,
     181     ATOMIC = 320,
     182     GENERIC = 321,
     183     NORETURN = 322,
     184     STATICASSERT = 323,
     185     THREADLOCAL = 324,
     186     IDENTIFIER = 325,
     187     QUOTED_IDENTIFIER = 326,
     188     TYPEDEFname = 327,
     189     TYPEGENname = 328,
     190     ATTR_IDENTIFIER = 329,
     191     ATTR_TYPEDEFname = 330,
     192     ATTR_TYPEGENname = 331,
     193     INTEGERconstant = 332,
     194     FLOATINGconstant = 333,
     195     CHARACTERconstant = 334,
     196     STRINGliteral = 335,
     197     ZERO = 336,
     198     ONE = 337,
     199     ARROW = 338,
     200     ICR = 339,
     201     DECR = 340,
     202     LS = 341,
     203     RS = 342,
     204     LE = 343,
     205     GE = 344,
     206     EQ = 345,
     207     NE = 346,
     208     ANDAND = 347,
     209     OROR = 348,
     210     ELLIPSIS = 349,
     211     MULTassign = 350,
     212     DIVassign = 351,
     213     MODassign = 352,
     214     PLUSassign = 353,
     215     MINUSassign = 354,
     216     LSassign = 355,
     217     RSassign = 356,
     218     ANDassign = 357,
     219     ERassign = 358,
     220     ORassign = 359,
     221     ATassign = 360,
     222     THEN = 361
    217223   };
    218224#endif
     
    267273#define RETURN 305
    268274#define CHOOSE 306
    269 #define FALLTHRU 307
    270 #define TRY 308
    271 #define CATCH 309
    272 #define FINALLY 310
    273 #define THROW 311
    274 #define ASM 312
    275 #define ALIGNAS 313
    276 #define ALIGNOF 314
    277 #define ATOMIC 315
    278 #define GENERIC 316
    279 #define NORETURN 317
    280 #define STATICASSERT 318
    281 #define THREADLOCAL 319
    282 #define IDENTIFIER 320
    283 #define QUOTED_IDENTIFIER 321
    284 #define TYPEDEFname 322
    285 #define TYPEGENname 323
    286 #define ATTR_IDENTIFIER 324
    287 #define ATTR_TYPEDEFname 325
    288 #define ATTR_TYPEGENname 326
    289 #define INTEGERconstant 327
    290 #define FLOATINGconstant 328
    291 #define CHARACTERconstant 329
    292 #define STRINGliteral 330
    293 #define ZERO 331
    294 #define ONE 332
    295 #define ARROW 333
    296 #define ICR 334
    297 #define DECR 335
    298 #define LS 336
    299 #define RS 337
    300 #define LE 338
    301 #define GE 339
    302 #define EQ 340
    303 #define NE 341
    304 #define ANDAND 342
    305 #define OROR 343
    306 #define ELLIPSIS 344
    307 #define MULTassign 345
    308 #define DIVassign 346
    309 #define MODassign 347
    310 #define PLUSassign 348
    311 #define MINUSassign 349
    312 #define LSassign 350
    313 #define RSassign 351
    314 #define ANDassign 352
    315 #define ERassign 353
    316 #define ORassign 354
    317 #define THEN 355
     275#define DISABLE 307
     276#define ENABLE 308
     277#define FALLTHRU 309
     278#define TRY 310
     279#define CATCH 311
     280#define CATCHRESUME 312
     281#define FINALLY 313
     282#define THROW 314
     283#define THROWRESUME 315
     284#define AT 316
     285#define ASM 317
     286#define ALIGNAS 318
     287#define ALIGNOF 319
     288#define ATOMIC 320
     289#define GENERIC 321
     290#define NORETURN 322
     291#define STATICASSERT 323
     292#define THREADLOCAL 324
     293#define IDENTIFIER 325
     294#define QUOTED_IDENTIFIER 326
     295#define TYPEDEFname 327
     296#define TYPEGENname 328
     297#define ATTR_IDENTIFIER 329
     298#define ATTR_TYPEDEFname 330
     299#define ATTR_TYPEGENname 331
     300#define INTEGERconstant 332
     301#define FLOATINGconstant 333
     302#define CHARACTERconstant 334
     303#define STRINGliteral 335
     304#define ZERO 336
     305#define ONE 337
     306#define ARROW 338
     307#define ICR 339
     308#define DECR 340
     309#define LS 341
     310#define RS 342
     311#define LE 343
     312#define GE 344
     313#define EQ 345
     314#define NE 346
     315#define ANDAND 347
     316#define OROR 348
     317#define ELLIPSIS 349
     318#define MULTassign 350
     319#define DIVassign 351
     320#define MODassign 352
     321#define PLUSassign 353
     322#define MINUSassign 354
     323#define LSassign 355
     324#define RSassign 356
     325#define ANDassign 357
     326#define ERassign 358
     327#define ORassign 359
     328#define ATassign 360
     329#define THEN 361
    318330
    319331
     
    325337
    326338/* Line 293 of yacc.c  */
    327 #line 108 "parser.yy"
     339#line 110 "parser.yy"
    328340
    329341        Token tok;
     
    342354
    343355/* Line 293 of yacc.c  */
    344 #line 345 "Parser/parser.cc"
     356#line 357 "Parser/parser.cc"
    345357} YYSTYPE;
    346358# define YYSTYPE_IS_TRIVIAL 1
     
    354366
    355367/* Line 343 of yacc.c  */
    356 #line 357 "Parser/parser.cc"
     368#line 369 "Parser/parser.cc"
    357369
    358370#ifdef short
     
    571583
    572584/* YYFINAL -- State number of the termination state.  */
    573 #define YYFINAL  246
     585#define YYFINAL  247
    574586/* YYLAST -- Last index in YYTABLE.  */
    575 #define YYLAST   11329
     587#define YYLAST   10817
    576588
    577589/* YYNTOKENS -- Number of terminals.  */
    578 #define YYNTOKENS  125
     590#define YYNTOKENS  131
    579591/* YYNNTS -- Number of nonterminals.  */
    580592#define YYNNTS  238
    581593/* YYNRULES -- Number of rules.  */
    582 #define YYNRULES  740
     594#define YYNRULES  749
    583595/* YYNRULES -- Number of states.  */
    584 #define YYNSTATES  1530
     596#define YYNSTATES  1570
    585597
    586598/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
    587599#define YYUNDEFTOK  2
    588 #define YYMAXUTOK   355
     600#define YYMAXUTOK   361
    589601
    590602#define YYTRANSLATE(YYX)                                                \
     
    597609       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    598610       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    599        2,     2,     2,   110,     2,     2,     2,   117,   112,     2,
    600      101,   102,   111,   113,   108,   114,   105,   116,     2,     2,
    601        2,     2,     2,     2,     2,     2,     2,     2,   109,   124,
    602      118,   123,   119,   122,     2,     2,     2,     2,     2,     2,
     611       2,     2,     2,   116,     2,     2,     2,   123,   118,     2,
     612     107,   108,   117,   119,   114,   120,   111,   122,     2,     2,
     613       2,     2,     2,     2,     2,     2,     2,     2,   115,   130,
     614     124,   129,   125,   128,     2,     2,     2,     2,     2,     2,
    603615       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    604616       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    605        2,   103,     2,   104,   120,     2,     2,     2,     2,     2,
     617       2,   109,     2,   110,   126,     2,     2,     2,     2,     2,
    606618       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    607619       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    608        2,     2,     2,   106,   121,   107,   115,     2,     2,     2,
     620       2,     2,     2,   112,   127,   113,   121,     2,     2,     2,
    609621       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
    610622       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
     
    629641      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
    630642      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
    631       95,    96,    97,    98,    99,   100
     643      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
     644     105,   106
    632645};
    633646
     
    640653      17,    19,    21,    23,    25,    27,    29,    32,    34,    36,
    641654      40,    44,    46,    53,    58,    62,    70,    74,    82,    85,
    642       88,    96,    98,   102,   103,   105,   109,   117,   127,   129,
    643      133,   135,   139,   147,   151,   159,   161,   163,   165,   168,
    644      171,   174,   177,   180,   183,   186,   191,   193,   198,   203,
    645      206,   211,   214,   216,   218,   220,   222,   224,   229,   234,
    646      236,   240,   244,   248,   250,   254,   258,   260,   264,   268,
    647      270,   274,   278,   282,   286,   288,   292,   296,   298,   302,
    648      304,   308,   310,   314,   316,   320,   322,   326,   328,   334,
    649      339,   345,   347,   349,   353,   357,   360,   361,   363,   366,
    650      372,   379,   387,   389,   393,   395,   397,   399,   401,   403,
    651      405,   407,   409,   411,   413,   415,   419,   420,   422,   424,
    652      426,   428,   430,   432,   434,   436,   438,   443,   446,   454,
    653      456,   460,   462,   465,   467,   470,   472,   475,   478,   484,
    654      492,   498,   508,   514,   524,   526,   530,   532,   534,   538,
    655      542,   545,   547,   550,   553,   554,   556,   559,   563,   564,
    656      566,   569,   573,   577,   582,   583,   585,   587,   590,   596,
    657      604,   611,   618,   623,   627,   632,   635,   639,   642,   646,
    658      650,   654,   657,   661,   665,   670,   672,   678,   685,   695,
    659      706,   709,   711,   714,   717,   720,   722,   729,   738,   749,
    660      762,   777,   778,   780,   781,   783,   785,   789,   794,   802,
    661      803,   805,   809,   811,   815,   817,   819,   821,   825,   827,
    662      829,   831,   835,   836,   838,   842,   847,   849,   853,   855,
    663      857,   861,   865,   869,   873,   877,   880,   884,   891,   895,
    664      899,   904,   906,   909,   912,   916,   922,   931,   939,   947,
    665      953,   963,   966,   969,   975,   979,   985,   990,   994,   999,
    666     1004,  1012,  1016,  1020,  1024,  1028,  1033,  1040,  1042,  1044,
    667     1046,  1048,  1050,  1052,  1054,  1056,  1057,  1059,  1061,  1064,
    668     1066,  1068,  1070,  1072,  1074,  1076,  1078,  1079,  1085,  1087,
    669     1090,  1094,  1096,  1099,  1101,  1103,  1105,  1107,  1109,  1111,
    670     1113,  1115,  1117,  1119,  1121,  1123,  1125,  1127,  1129,  1131,
    671     1133,  1135,  1137,  1139,  1141,  1143,  1146,  1149,  1153,  1157,
    672     1159,  1163,  1165,  1168,  1171,  1174,  1179,  1184,  1189,  1194,
    673     1196,  1199,  1202,  1206,  1208,  1211,  1214,  1216,  1219,  1222,
    674     1226,  1228,  1231,  1234,  1236,  1238,  1243,  1246,  1252,  1260,
    675     1263,  1266,  1269,  1271,  1274,  1277,  1281,  1284,  1288,  1290,
    676     1293,  1297,  1300,  1303,  1308,  1309,  1311,  1314,  1317,  1319,
    677     1320,  1322,  1325,  1328,  1334,  1341,  1344,  1347,  1352,  1353,
    678     1356,  1357,  1359,  1361,  1363,  1369,  1375,  1381,  1383,  1389,
    679     1395,  1405,  1407,  1413,  1414,  1416,  1418,  1424,  1426,  1428,
    680     1434,  1440,  1442,  1446,  1450,  1455,  1457,  1459,  1461,  1463,
    681     1466,  1468,  1472,  1476,  1478,  1481,  1483,  1487,  1489,  1491,
    682     1493,  1495,  1497,  1499,  1501,  1503,  1505,  1507,  1509,  1512,
    683     1514,  1516,  1518,  1521,  1522,  1525,  1527,  1532,  1534,  1537,
    684     1541,  1546,  1549,  1552,  1554,  1557,  1559,  1562,  1568,  1574,
    685     1582,  1589,  1591,  1594,  1597,  1601,  1603,  1606,  1609,  1614,
    686     1617,  1622,  1623,  1628,  1631,  1633,  1635,  1637,  1638,  1641,
    687     1647,  1653,  1667,  1669,  1671,  1675,  1679,  1682,  1686,  1690,
    688     1693,  1698,  1700,  1707,  1717,  1718,  1730,  1732,  1736,  1740,
    689     1744,  1746,  1748,  1754,  1757,  1763,  1764,  1766,  1768,  1772,
    690     1773,  1775,  1777,  1779,  1781,  1782,  1789,  1792,  1794,  1797,
    691     1802,  1805,  1809,  1813,  1817,  1822,  1828,  1834,  1840,  1847,
    692     1849,  1851,  1853,  1857,  1858,  1864,  1865,  1867,  1869,  1872,
    693     1879,  1881,  1885,  1886,  1888,  1893,  1895,  1897,  1899,  1901,
    694     1904,  1906,  1909,  1912,  1914,  1918,  1921,  1925,  1929,  1932,
    695     1937,  1942,  1946,  1955,  1959,  1962,  1964,  1967,  1974,  1983,
    696     1987,  1990,  1994,  1998,  2003,  2008,  2012,  2014,  2016,  2018,
    697     2023,  2030,  2034,  2037,  2041,  2045,  2050,  2055,  2059,  2062,
    698     2064,  2067,  2070,  2072,  2076,  2079,  2083,  2087,  2090,  2095,
    699     2100,  2104,  2111,  2120,  2124,  2127,  2129,  2132,  2135,  2138,
    700     2142,  2146,  2149,  2154,  2159,  2163,  2170,  2179,  2183,  2186,
    701     2188,  2191,  2194,  2196,  2198,  2201,  2205,  2209,  2212,  2217,
    702     2224,  2233,  2235,  2238,  2241,  2243,  2246,  2249,  2253,  2257,
    703     2259,  2264,  2269,  2273,  2279,  2288,  2292,  2295,  2299,  2301,
    704     2307,  2313,  2320,  2327,  2329,  2332,  2335,  2337,  2340,  2343,
    705     2347,  2351,  2353,  2358,  2363,  2367,  2373,  2382,  2386,  2388,
    706     2391,  2393,  2396,  2403,  2409,  2416,  2424,  2432,  2434,  2437,
    707     2440,  2442,  2445,  2448,  2452,  2456,  2458,  2463,  2468,  2472,
    708     2481,  2485,  2487,  2489,  2492,  2494,  2496,  2499,  2503,  2506,
    709     2510,  2513,  2517,  2521,  2524,  2529,  2533,  2536,  2540,  2543,
    710     2548,  2552,  2555,  2562,  2569,  2576,  2584,  2586,  2589,  2591,
    711     2593,  2595,  2598,  2602,  2605,  2609,  2612,  2616,  2620,  2625,
    712     2628,  2632,  2637,  2640,  2646,  2652,  2659,  2666,  2667,  2669,
    713     2670
     655      88,    96,   101,   103,   107,   108,   110,   114,   122,   132,
     656     134,   138,   140,   144,   152,   156,   164,   166,   168,   170,
     657     173,   176,   179,   182,   185,   188,   191,   196,   198,   203,
     658     208,   211,   216,   219,   221,   223,   225,   227,   229,   234,
     659     239,   241,   245,   249,   253,   255,   259,   263,   265,   269,
     660     273,   275,   279,   283,   287,   291,   293,   297,   301,   303,
     661     307,   309,   313,   315,   319,   321,   325,   327,   331,   333,
     662     339,   344,   350,   352,   354,   358,   362,   365,   366,   368,
     663     371,   377,   384,   392,   394,   398,   400,   402,   404,   406,
     664     408,   410,   412,   414,   416,   418,   420,   424,   425,   427,
     665     429,   431,   433,   435,   437,   439,   441,   443,   450,   455,
     666     458,   466,   468,   472,   474,   477,   479,   482,   484,   487,
     667     490,   496,   504,   510,   520,   526,   536,   538,   542,   544,
     668     546,   550,   554,   557,   559,   562,   565,   566,   568,   571,
     669     575,   576,   578,   581,   585,   589,   594,   595,   597,   599,
     670     602,   608,   616,   623,   630,   635,   639,   644,   647,   651,
     671     654,   658,   662,   666,   670,   676,   680,   684,   689,   691,
     672     697,   704,   710,   717,   727,   738,   748,   759,   762,   764,
     673     767,   770,   773,   775,   782,   791,   802,   815,   830,   831,
     674     833,   834,   836,   838,   842,   847,   855,   856,   858,   862,
     675     864,   868,   870,   872,   874,   878,   880,   882,   884,   888,
     676     889,   891,   895,   900,   902,   906,   908,   910,   914,   918,
     677     922,   926,   930,   933,   937,   944,   948,   952,   957,   959,
     678     962,   965,   969,   975,   984,   992,  1000,  1006,  1016,  1019,
     679    1022,  1028,  1032,  1038,  1043,  1047,  1052,  1057,  1065,  1069,
     680    1073,  1077,  1081,  1086,  1093,  1095,  1097,  1099,  1101,  1103,
     681    1105,  1107,  1109,  1110,  1112,  1114,  1117,  1119,  1121,  1123,
     682    1125,  1127,  1129,  1131,  1132,  1138,  1140,  1143,  1147,  1149,
     683    1152,  1154,  1156,  1158,  1160,  1162,  1164,  1166,  1168,  1170,
     684    1172,  1174,  1176,  1178,  1180,  1182,  1184,  1186,  1188,  1190,
     685    1192,  1194,  1196,  1199,  1202,  1206,  1210,  1212,  1216,  1218,
     686    1221,  1224,  1227,  1232,  1237,  1242,  1247,  1249,  1252,  1255,
     687    1259,  1261,  1264,  1267,  1269,  1272,  1275,  1279,  1281,  1284,
     688    1287,  1289,  1291,  1296,  1299,  1305,  1313,  1316,  1319,  1322,
     689    1324,  1327,  1330,  1334,  1337,  1341,  1343,  1346,  1350,  1353,
     690    1356,  1361,  1362,  1364,  1367,  1370,  1372,  1373,  1375,  1378,
     691    1381,  1387,  1394,  1397,  1400,  1405,  1406,  1409,  1410,  1412,
     692    1414,  1416,  1422,  1428,  1434,  1436,  1442,  1448,  1458,  1460,
     693    1466,  1467,  1469,  1471,  1477,  1479,  1481,  1487,  1493,  1495,
     694    1499,  1503,  1508,  1510,  1512,  1514,  1516,  1519,  1521,  1525,
     695    1529,  1531,  1534,  1536,  1540,  1542,  1544,  1546,  1548,  1550,
     696    1552,  1554,  1556,  1558,  1560,  1562,  1565,  1567,  1569,  1571,
     697    1574,  1575,  1578,  1581,  1583,  1588,  1589,  1591,  1594,  1598,
     698    1603,  1606,  1609,  1611,  1614,  1616,  1619,  1625,  1631,  1639,
     699    1646,  1648,  1651,  1654,  1658,  1660,  1663,  1666,  1671,  1674,
     700    1679,  1680,  1685,  1688,  1690,  1692,  1694,  1695,  1698,  1704,
     701    1710,  1724,  1726,  1728,  1732,  1736,  1739,  1743,  1747,  1750,
     702    1755,  1757,  1764,  1774,  1775,  1787,  1789,  1793,  1797,  1801,
     703    1803,  1805,  1811,  1814,  1820,  1821,  1823,  1825,  1829,  1830,
     704    1832,  1834,  1836,  1838,  1839,  1846,  1849,  1851,  1854,  1859,
     705    1862,  1866,  1870,  1874,  1879,  1885,  1891,  1897,  1904,  1906,
     706    1908,  1910,  1914,  1915,  1921,  1922,  1924,  1926,  1929,  1936,
     707    1938,  1942,  1943,  1945,  1950,  1952,  1954,  1956,  1958,  1961,
     708    1963,  1966,  1969,  1971,  1975,  1978,  1982,  1986,  1989,  1994,
     709    1999,  2003,  2012,  2016,  2019,  2021,  2024,  2031,  2040,  2044,
     710    2047,  2051,  2055,  2060,  2065,  2069,  2071,  2073,  2075,  2080,
     711    2087,  2091,  2094,  2098,  2102,  2107,  2112,  2116,  2119,  2121,
     712    2124,  2127,  2129,  2133,  2136,  2140,  2144,  2147,  2152,  2157,
     713    2161,  2168,  2177,  2181,  2184,  2186,  2189,  2192,  2195,  2199,
     714    2203,  2206,  2211,  2216,  2220,  2227,  2236,  2240,  2243,  2245,
     715    2248,  2251,  2253,  2255,  2258,  2262,  2266,  2269,  2274,  2281,
     716    2290,  2292,  2295,  2298,  2300,  2303,  2306,  2310,  2314,  2316,
     717    2321,  2326,  2330,  2336,  2345,  2349,  2352,  2356,  2358,  2364,
     718    2370,  2377,  2384,  2386,  2389,  2392,  2394,  2397,  2400,  2404,
     719    2408,  2410,  2415,  2420,  2424,  2430,  2439,  2443,  2445,  2448,
     720    2450,  2453,  2460,  2466,  2473,  2481,  2489,  2491,  2494,  2497,
     721    2499,  2502,  2505,  2509,  2513,  2515,  2520,  2525,  2529,  2538,
     722    2542,  2544,  2546,  2549,  2551,  2553,  2556,  2560,  2563,  2567,
     723    2570,  2574,  2578,  2581,  2586,  2590,  2593,  2597,  2600,  2605,
     724    2609,  2612,  2619,  2626,  2633,  2641,  2643,  2646,  2648,  2650,
     725    2652,  2655,  2659,  2662,  2666,  2669,  2673,  2677,  2682,  2685,
     726    2689,  2694,  2697,  2703,  2709,  2716,  2723,  2724,  2726,  2727
    714727};
    715728
     
    717730static const yytype_int16 yyrhs[] =
    718731{
    719      291,     0,    -1,    -1,    -1,    72,    -1,    73,    -1,    74,
    720       -1,    65,    -1,    69,    -1,   132,    -1,    65,    -1,    69,
    721       -1,    65,    -1,    76,    -1,    77,    -1,    75,    -1,   133,
    722       75,    -1,    65,    -1,   132,    -1,   101,   160,   102,    -1,
    723      101,   164,   102,    -1,   134,    -1,   135,   103,   126,   155,
    724      127,   104,    -1,   135,   101,   136,   102,    -1,   135,   105,
    725      131,    -1,   135,   105,   103,   126,   138,   127,   104,    -1,
    726      135,    78,   131,    -1,   135,    78,   103,   126,   138,   127,
    727      104,    -1,   135,    79,    -1,   135,    80,    -1,   101,   264,
    728      102,   106,   268,   361,   107,    -1,   137,    -1,   136,   108,
    729      137,    -1,    -1,   155,    -1,   131,   109,   155,    -1,   103,
    730      126,   155,   127,   104,   109,   155,    -1,   103,   126,   155,
    731      108,   158,   127,   104,   109,   155,    -1,   139,    -1,   138,
    732      108,   139,    -1,   131,    -1,   131,   105,   139,    -1,   131,
    733      105,   103,   126,   138,   127,   104,    -1,   131,    78,   139,
    734       -1,   131,    78,   103,   126,   138,   127,   104,    -1,   135,
    735       -1,   128,    -1,   133,    -1,    79,   140,    -1,    80,   140,
    736       -1,    38,   142,    -1,   141,   142,    -1,   110,   142,    -1,
    737      111,   142,    -1,    36,   140,    -1,    36,   101,   264,   102,
    738       -1,    69,    -1,    69,   101,   265,   102,    -1,    69,   101,
    739      137,   102,    -1,    59,   140,    -1,    59,   101,   264,   102,
    740       -1,    87,   131,    -1,   112,    -1,   113,    -1,   114,    -1,
    741      115,    -1,   140,    -1,   101,   264,   102,   142,    -1,   101,
    742      264,   102,   157,    -1,   142,    -1,   143,   111,   142,    -1,
    743      143,   116,   142,    -1,   143,   117,   142,    -1,   143,    -1,
    744      144,   113,   143,    -1,   144,   114,   143,    -1,   144,    -1,
    745      145,    81,   144,    -1,   145,    82,   144,    -1,   145,    -1,
    746      146,   118,   145,    -1,   146,   119,   145,    -1,   146,    83,
    747      145,    -1,   146,    84,   145,    -1,   146,    -1,   147,    85,
    748      146,    -1,   147,    86,   146,    -1,   147,    -1,   148,   112,
    749      147,    -1,   148,    -1,   149,   120,   148,    -1,   149,    -1,
    750      150,   121,   149,    -1,   150,    -1,   151,    87,   150,    -1,
    751      151,    -1,   152,    88,   151,    -1,   152,    -1,   152,   122,
    752      160,   109,   153,    -1,   152,   122,   109,   153,    -1,   152,
    753      122,   160,   109,   157,    -1,   153,    -1,   153,    -1,   140,
    754      123,   155,    -1,   140,   159,   155,    -1,   157,   362,    -1,
    755       -1,   155,    -1,   103,   104,    -1,   103,   126,   155,   127,
    756      104,    -1,   103,   126,   108,   158,   127,   104,    -1,   103,
    757      126,   155,   108,   158,   127,   104,    -1,   156,    -1,   158,
    758      108,   156,    -1,    90,    -1,    91,    -1,    92,    -1,    93,
    759       -1,    94,    -1,    95,    -1,    96,    -1,    97,    -1,    98,
    760       -1,    99,    -1,   155,    -1,   160,   108,   155,    -1,    -1,
    761      160,    -1,   163,    -1,   164,    -1,   168,    -1,   169,    -1,
    762      181,    -1,   183,    -1,   184,    -1,   189,    -1,   131,   109,
    763      301,   162,    -1,   106,   107,    -1,   106,   126,   126,   200,
    764      165,   127,   107,    -1,   166,    -1,   165,   126,   166,    -1,
    765      203,    -1,    38,   203,    -1,   297,    -1,   162,   127,    -1,
    766      162,    -1,   167,   162,    -1,   161,   124,    -1,    39,   101,
    767      160,   102,   162,    -1,    39,   101,   160,   102,   162,    40,
    768      162,    -1,    41,   101,   160,   102,   174,    -1,    41,   101,
    769      160,   102,   106,   126,   196,   175,   107,    -1,    51,   101,
    770      160,   102,   174,    -1,    51,   101,   160,   102,   106,   126,
    771      196,   177,   107,    -1,   154,    -1,   154,    89,   154,    -1,
    772      299,    -1,   170,    -1,   171,   108,   170,    -1,    42,   171,
    773      109,    -1,    43,   109,    -1,   172,    -1,   173,   172,    -1,
    774      173,   162,    -1,    -1,   176,    -1,   173,   167,    -1,   176,
    775      173,   167,    -1,    -1,   178,    -1,   173,   180,    -1,   173,
    776      167,   179,    -1,   178,   173,   180,    -1,   178,   173,   167,
    777      179,    -1,    -1,   180,    -1,    52,    -1,    52,   124,    -1,
    778       45,   101,   160,   102,   162,    -1,    44,   162,    45,   101,
    779      160,   102,   124,    -1,    46,   101,   126,   182,   102,   162,
    780       -1,   161,   127,   124,   161,   124,   161,    -1,   203,   161,
    781      124,   161,    -1,    49,   131,   124,    -1,    49,   111,   160,
    782      124,    -1,    48,   124,    -1,    48,   131,   124,    -1,    47,
    783      124,    -1,    47,   131,   124,    -1,    50,   161,   124,    -1,
    784       56,   155,   124,    -1,    56,   124,    -1,    53,   164,   185,
    785       -1,    53,   164,   187,    -1,    53,   164,   185,   187,    -1,
    786      186,    -1,    54,   101,    89,   102,   164,    -1,   186,    54,
    787      101,    89,   102,   164,    -1,    54,   101,   126,   126,   188,
    788      127,   102,   164,   127,    -1,   186,    54,   101,   126,   126,
    789      188,   127,   102,   164,   127,    -1,    55,   164,    -1,   216,
    790       -1,   216,   298,    -1,   216,   346,    -1,   355,   131,    -1,
    791      355,    -1,    57,   190,   101,   133,   102,   124,    -1,    57,
    792      190,   101,   133,   109,   191,   102,   124,    -1,    57,   190,
    793      101,   133,   109,   191,   109,   191,   102,   124,    -1,    57,
    794      190,   101,   133,   109,   191,   109,   191,   109,   194,   102,
    795      124,    -1,    57,   190,    49,   101,   133,   109,   109,   191,
    796      109,   194,   109,   195,   102,   124,    -1,    -1,    11,    -1,
    797       -1,   192,    -1,   193,    -1,   192,   108,   193,    -1,   133,
    798      101,   154,   102,    -1,   103,   154,   104,   133,   101,   154,
    799      102,    -1,    -1,   133,    -1,   194,   108,   133,    -1,   131,
    800       -1,   195,   108,   131,    -1,   127,    -1,   197,    -1,   203,
    801       -1,   197,   126,   203,    -1,   127,    -1,   199,    -1,   213,
    802       -1,   199,   126,   213,    -1,    -1,   201,    -1,    28,   202,
    803      124,    -1,   201,    28,   202,   124,    -1,   263,    -1,   202,
    804      108,   263,    -1,   204,    -1,   213,    -1,   205,   127,   124,
    805       -1,   210,   127,   124,    -1,   207,   127,   124,    -1,   282,
    806      127,   124,    -1,   285,   127,   124,    -1,   206,   266,    -1,
    807      222,   206,   266,    -1,   205,   127,   108,   126,   261,   266,
    808       -1,   356,   261,   300,    -1,   359,   261,   300,    -1,   218,
    809      359,   261,   300,    -1,   208,    -1,   218,   208,    -1,   222,
    810      208,    -1,   222,   218,   208,    -1,   207,   127,   108,   126,
    811      261,    -1,   103,   104,   261,   101,   126,   249,   127,   102,
    812       -1,   359,   261,   101,   126,   249,   127,   102,    -1,   209,
    813      261,   101,   126,   249,   127,   102,    -1,   103,   126,   251,
    814      127,   104,    -1,   103,   126,   251,   127,   108,   126,   252,
    815      127,   104,    -1,     3,   206,    -1,     3,   208,    -1,   210,
    816      127,   108,   126,   131,    -1,     3,   216,   298,    -1,   211,
    817      127,   108,   126,   298,    -1,   218,     3,   216,   298,    -1,
    818      216,     3,   298,    -1,   216,     3,   218,   298,    -1,     3,
    819      131,   123,   155,    -1,   212,   127,   108,   126,   131,   123,
    820      155,    -1,   214,   127,   124,    -1,   211,   127,   124,    -1,
    821      212,   127,   124,    -1,   231,   127,   124,    -1,   215,   298,
    822      300,   266,    -1,   214,   108,   301,   298,   300,   266,    -1,
    823      227,    -1,   231,    -1,   233,    -1,   272,    -1,   228,    -1,
    824      232,    -1,   234,    -1,   273,    -1,    -1,   218,    -1,   219,
    825       -1,   218,   219,    -1,   220,    -1,   303,    -1,    10,    -1,
    826       12,    -1,    11,    -1,    14,    -1,    60,    -1,    -1,    13,
    827      101,   221,   275,   102,    -1,   223,    -1,   218,   223,    -1,
    828      222,   218,   223,    -1,   224,    -1,   223,   224,    -1,   225,
    829       -1,     5,    -1,     7,    -1,     4,    -1,     6,    -1,     8,
    830       -1,     9,    -1,    62,    -1,    64,    -1,    16,    -1,    21,
    831       -1,    20,    -1,    18,    -1,    19,    -1,    17,    -1,    22,
    832       -1,    23,    -1,    15,    -1,    24,    -1,    25,    -1,    26,
    833       -1,   228,    -1,   222,   228,    -1,   227,   224,    -1,   227,
    834      224,   218,    -1,   227,   224,   228,    -1,   229,    -1,   217,
    835      230,   217,    -1,   226,    -1,   218,   226,    -1,   229,   219,
    836       -1,   229,   226,    -1,    27,   101,   265,   102,    -1,    27,
    837      101,   160,   102,    -1,    71,   101,   265,   102,    -1,    71,
    838      101,   160,   102,    -1,   232,    -1,   222,   232,    -1,   231,
    839      224,    -1,   231,   224,   218,    -1,   235,    -1,   218,   235,
    840       -1,   232,   219,    -1,   234,    -1,   222,   234,    -1,   233,
    841      224,    -1,   233,   224,   218,    -1,    67,    -1,   218,    67,
    842       -1,   234,   219,    -1,   236,    -1,   246,    -1,   237,   106,
    843      238,   107,    -1,   237,   263,    -1,   237,   263,   106,   238,
    844      107,    -1,   237,   101,   281,   102,   106,   238,   107,    -1,
    845      237,   274,    -1,    30,   301,    -1,    31,   301,    -1,   239,
    846       -1,   238,   239,    -1,   240,   124,    -1,    38,   240,   124,
    847       -1,   241,   124,    -1,    38,   241,   124,    -1,   355,    -1,
    848      355,   263,    -1,   240,   108,   263,    -1,   240,   108,    -1,
    849      216,   242,    -1,   241,   108,   301,   242,    -1,    -1,   244,
    850       -1,   307,   243,    -1,   320,   243,    -1,   346,    -1,    -1,
    851      244,    -1,   109,   154,    -1,    29,   301,    -1,   245,   106,
    852      247,   361,   107,    -1,   245,   263,   106,   247,   361,   107,
    853       -1,   245,   263,    -1,   263,   248,    -1,   247,   108,   263,
    854      248,    -1,    -1,   123,   154,    -1,    -1,   250,    -1,   252,
    855       -1,   251,    -1,   251,   127,   108,   126,   252,    -1,   252,
    856      127,   108,   126,    89,    -1,   251,   127,   108,   126,    89,
    857       -1,   256,    -1,   252,   127,   108,   126,   256,    -1,   251,
    858      127,   108,   126,   256,    -1,   251,   127,   108,   126,   252,
    859      127,   108,   126,   256,    -1,   257,    -1,   252,   127,   108,
    860      126,   257,    -1,    -1,   254,    -1,   255,    -1,   255,   127,
    861      108,   126,    89,    -1,   259,    -1,   258,    -1,   255,   127,
    862      108,   126,   259,    -1,   255,   127,   108,   126,   258,    -1,
    863      258,    -1,   351,   261,   362,    -1,   359,   261,   362,    -1,
    864      218,   359,   261,   362,    -1,   208,    -1,   259,    -1,   351,
    865       -1,   359,    -1,   218,   359,    -1,   360,    -1,   215,   325,
    866      362,    -1,   215,   329,   362,    -1,   215,    -1,   215,   340,
    867       -1,   131,    -1,   260,   108,   131,    -1,   129,    -1,    67,
    868       -1,    68,    -1,   130,    -1,    67,    -1,    68,    -1,   131,
    869       -1,    67,    -1,    68,    -1,   355,    -1,   216,    -1,   216,
    870      346,    -1,   355,    -1,   360,    -1,   216,    -1,   216,   334,
    871       -1,    -1,   123,   267,    -1,   155,    -1,   106,   268,   361,
    872      107,    -1,   267,    -1,   269,   267,    -1,   268,   108,   267,
    873       -1,   268,   108,   269,   267,    -1,   270,   109,    -1,   263,
    874      109,    -1,   271,    -1,   270,   271,    -1,    73,    -1,   105,
    875      263,    -1,   103,   126,   155,   127,   104,    -1,   103,   126,
    876      299,   127,   104,    -1,   103,   126,   154,    89,   154,   127,
    877      104,    -1,   105,   103,   126,   138,   127,   104,    -1,   273,
    878       -1,   222,   273,    -1,   272,   224,    -1,   272,   224,   218,
    879       -1,   274,    -1,   218,   274,    -1,   273,   219,    -1,    68,
    880      101,   281,   102,    -1,   276,   362,    -1,   275,   108,   276,
    881      362,    -1,    -1,   278,   263,   277,   279,    -1,   216,   325,
    882       -1,    32,    -1,    34,    -1,    33,    -1,    -1,   279,   280,
    883       -1,   121,   263,   101,   281,   102,    -1,   121,   106,   126,
    884      287,   107,    -1,   121,   101,   126,   275,   127,   102,   106,
    885      126,   287,   107,   101,   281,   102,    -1,   265,    -1,   155,
    886       -1,   281,   108,   265,    -1,   281,   108,   155,    -1,    32,
    887      283,    -1,   223,    32,   283,    -1,   282,   108,   283,    -1,
    888      284,   279,    -1,   284,   279,   123,   265,    -1,   263,    -1,
    889      262,   101,   126,   275,   127,   102,    -1,    35,   263,   101,
    890      126,   275,   127,   102,   106,   107,    -1,    -1,    35,   263,
    891      101,   126,   275,   127,   102,   106,   286,   287,   107,    -1,
    892      288,    -1,   287,   126,   288,    -1,   289,   127,   124,    -1,
    893      290,   127,   124,    -1,   206,    -1,   208,    -1,   289,   127,
    894      108,   126,   261,    -1,   216,   298,    -1,   290,   127,   108,
    895      126,   298,    -1,    -1,   292,    -1,   294,    -1,   292,   126,
    896      294,    -1,    -1,   292,    -1,   203,    -1,   296,    -1,   189,
    897       -1,    -1,     5,    75,   295,   106,   293,   107,    -1,    38,
    898      294,    -1,   297,    -1,   312,   164,    -1,   316,   126,   198,
    899      164,    -1,   207,   164,    -1,   215,   312,   164,    -1,   218,
    900      312,   164,    -1,   222,   312,   164,    -1,   222,   218,   312,
    901      164,    -1,   215,   316,   126,   198,   164,    -1,   218,   316,
    902      126,   198,   164,    -1,   222,   316,   126,   198,   164,    -1,
    903      222,   218,   316,   126,   198,   164,    -1,   307,    -1,   312,
    904       -1,   320,    -1,   154,   115,   154,    -1,    -1,    57,   101,
    905      133,   102,   301,    -1,    -1,   302,    -1,   303,    -1,   302,
    906      303,    -1,    37,   101,   101,   304,   102,   102,    -1,   305,
    907       -1,   304,   108,   305,    -1,    -1,   306,    -1,   306,   101,
    908      161,   102,    -1,   261,    -1,   225,    -1,   226,    -1,   219,
    909       -1,   308,   301,    -1,   309,    -1,   310,   301,    -1,   311,
    910      301,    -1,   129,    -1,   101,   308,   102,    -1,   111,   307,
    911       -1,   111,   218,   307,    -1,   101,   309,   102,    -1,   308,
    912      338,    -1,   101,   309,   102,   338,    -1,   101,   310,   102,
    913      339,    -1,   101,   310,   102,    -1,   101,   309,   102,   101,
    914      126,   253,   127,   102,    -1,   101,   311,   102,    -1,   313,
    915      301,    -1,   314,    -1,   315,   301,    -1,   308,   101,   126,
    916      253,   127,   102,    -1,   101,   314,   102,   101,   126,   253,
    917      127,   102,    -1,   101,   313,   102,    -1,   111,   312,    -1,
    918      111,   218,   312,    -1,   101,   314,   102,    -1,   101,   314,
    919      102,   338,    -1,   101,   315,   102,   339,    -1,   101,   315,
    920      102,    -1,   317,    -1,   318,    -1,   319,    -1,   308,   101,
    921      260,   102,    -1,   101,   318,   102,   101,   260,   102,    -1,
    922      101,   317,   102,    -1,   111,   316,    -1,   111,   218,   316,
    923       -1,   101,   318,   102,    -1,   101,   318,   102,   338,    -1,
    924      101,   319,   102,   339,    -1,   101,   319,   102,    -1,   321,
    925      301,    -1,   322,    -1,   323,   301,    -1,   324,   301,    -1,
    926      330,    -1,   101,   321,   102,    -1,   111,   320,    -1,   111,
    927      218,   320,    -1,   101,   322,   102,    -1,   321,   338,    -1,
    928      101,   322,   102,   338,    -1,   101,   323,   102,   339,    -1,
    929      101,   323,   102,    -1,   321,   101,   126,   253,   127,   102,
    930       -1,   101,   322,   102,   101,   126,   253,   127,   102,    -1,
    931      101,   324,   102,    -1,   308,   301,    -1,   326,    -1,   327,
    932      301,    -1,   328,   301,    -1,   111,   325,    -1,   111,   218,
    933      325,    -1,   101,   326,   102,    -1,   308,   344,    -1,   101,
    934      326,   102,   338,    -1,   101,   327,   102,   339,    -1,   101,
    935      327,   102,    -1,   308,   101,   126,   253,   127,   102,    -1,
    936      101,   326,   102,   101,   126,   253,   127,   102,    -1,   101,
    937      328,   102,    -1,   330,   301,    -1,   331,    -1,   332,   301,
    938       -1,   333,   301,    -1,    67,    -1,    68,    -1,   111,   329,
    939       -1,   111,   218,   329,    -1,   101,   331,   102,    -1,   330,
    940      344,    -1,   101,   331,   102,   344,    -1,   330,   101,   126,
    941      253,   127,   102,    -1,   101,   331,   102,   101,   126,   253,
    942      127,   102,    -1,   335,    -1,   336,   301,    -1,   337,   301,
    943       -1,   111,    -1,   111,   218,    -1,   111,   334,    -1,   111,
    944      218,   334,    -1,   101,   335,   102,    -1,   338,    -1,   101,
    945      335,   102,   338,    -1,   101,   336,   102,   339,    -1,   101,
    946      336,   102,    -1,   101,   126,   253,   127,   102,    -1,   101,
    947      335,   102,   101,   126,   253,   127,   102,    -1,   101,   337,
    948      102,    -1,   103,   104,    -1,   103,   104,   339,    -1,   339,
    949       -1,   103,   126,   155,   127,   104,    -1,   103,   126,   111,
    950      127,   104,    -1,   339,   103,   126,   155,   127,   104,    -1,
    951      339,   103,   126,   111,   127,   104,    -1,   341,    -1,   342,
    952      301,    -1,   343,   301,    -1,   111,    -1,   111,   218,    -1,
    953      111,   340,    -1,   111,   218,   340,    -1,   101,   341,   102,
    954       -1,   344,    -1,   101,   341,   102,   344,    -1,   101,   342,
    955      102,   339,    -1,   101,   342,   102,    -1,   101,   126,   253,
    956      127,   102,    -1,   101,   341,   102,   101,   126,   253,   127,
    957      102,    -1,   101,   343,   102,    -1,   345,    -1,   345,   339,
    958       -1,   339,    -1,   103,   104,    -1,   103,   126,   218,   111,
    959      127,   104,    -1,   103,   126,   218,   127,   104,    -1,   103,
    960      126,   218,   155,   127,   104,    -1,   103,   126,     7,   217,
    961      155,   127,   104,    -1,   103,   126,   218,     7,   155,   127,
    962      104,    -1,   347,    -1,   348,   301,    -1,   349,   301,    -1,
    963      111,    -1,   111,   218,    -1,   111,   346,    -1,   111,   218,
    964      346,    -1,   101,   347,   102,    -1,   338,    -1,   101,   347,
    965      102,   338,    -1,   101,   348,   102,   339,    -1,   101,   348,
    966      102,    -1,   101,   347,   102,   101,   126,   253,   127,   102,
    967       -1,   101,   349,   102,    -1,   351,    -1,   359,    -1,   218,
    968      359,    -1,   352,    -1,   353,    -1,   111,   216,    -1,   218,
    969      111,   216,    -1,   111,   360,    -1,   218,   111,   360,    -1,
    970      111,   350,    -1,   218,   111,   350,    -1,   103,   104,   216,
    971       -1,   354,   216,    -1,   103,   104,   339,   216,    -1,   354,
    972      339,   216,    -1,   339,   216,    -1,   103,   104,   352,    -1,
    973      354,   352,    -1,   103,   104,   339,   352,    -1,   354,   339,
    974      352,    -1,   339,   352,    -1,   103,   126,   218,   111,   127,
    975      104,    -1,   103,   126,   218,   155,   127,   104,    -1,   103,
    976      126,   222,   155,   127,   104,    -1,   103,   126,   222,   218,
    977      155,   127,   104,    -1,   359,    -1,   218,   359,    -1,   356,
    978       -1,   357,    -1,   358,    -1,   111,   216,    -1,   218,   111,
    979      216,    -1,   111,   360,    -1,   218,   111,   360,    -1,   111,
    980      355,    -1,   218,   111,   355,    -1,   103,   104,   216,    -1,
    981      103,   104,   339,   216,    -1,   339,   216,    -1,   103,   104,
    982      357,    -1,   103,   104,   339,   357,    -1,   339,   357,    -1,
    983      103,   126,   252,   127,   104,    -1,   103,   104,   101,   249,
    984      102,    -1,   359,   101,   126,   249,   127,   102,    -1,   209,
    985      101,   126,   249,   127,   102,    -1,    -1,   108,    -1,    -1,
    986      123,   155,    -1
     732     297,     0,    -1,    -1,    -1,    77,    -1,    78,    -1,    79,
     733      -1,    70,    -1,    74,    -1,   138,    -1,    70,    -1,    74,
     734      -1,    70,    -1,    81,    -1,    82,    -1,    80,    -1,   139,
     735      80,    -1,    70,    -1,   138,    -1,   107,   166,   108,    -1,
     736     107,   170,   108,    -1,   140,    -1,   141,   109,   132,   161,
     737     133,   110,    -1,   141,   107,   142,   108,    -1,   141,   111,
     738     137,    -1,   141,   111,   109,   132,   144,   133,   110,    -1,
     739     141,    83,   137,    -1,   141,    83,   109,   132,   144,   133,
     740     110,    -1,   141,    84,    -1,   141,    85,    -1,   107,   270,
     741     108,   112,   274,   367,   113,    -1,   141,   112,   142,   113,
     742      -1,   143,    -1,   142,   114,   143,    -1,    -1,   161,    -1,
     743     137,   115,   161,    -1,   109,   132,   161,   133,   110,   115,
     744     161,    -1,   109,   132,   161,   114,   164,   133,   110,   115,
     745     161,    -1,   145,    -1,   144,   114,   145,    -1,   137,    -1,
     746     137,   111,   145,    -1,   137,   111,   109,   132,   144,   133,
     747     110,    -1,   137,    83,   145,    -1,   137,    83,   109,   132,
     748     144,   133,   110,    -1,   141,    -1,   134,    -1,   139,    -1,
     749      84,   146,    -1,    85,   146,    -1,    38,   148,    -1,   147,
     750     148,    -1,   116,   148,    -1,   117,   148,    -1,    36,   146,
     751      -1,    36,   107,   270,   108,    -1,    74,    -1,    74,   107,
     752     271,   108,    -1,    74,   107,   143,   108,    -1,    64,   146,
     753      -1,    64,   107,   270,   108,    -1,    92,   137,    -1,   118,
     754      -1,   119,    -1,   120,    -1,   121,    -1,   146,    -1,   107,
     755     270,   108,   148,    -1,   107,   270,   108,   163,    -1,   148,
     756      -1,   149,   117,   148,    -1,   149,   122,   148,    -1,   149,
     757     123,   148,    -1,   149,    -1,   150,   119,   149,    -1,   150,
     758     120,   149,    -1,   150,    -1,   151,    86,   150,    -1,   151,
     759      87,   150,    -1,   151,    -1,   152,   124,   151,    -1,   152,
     760     125,   151,    -1,   152,    88,   151,    -1,   152,    89,   151,
     761      -1,   152,    -1,   153,    90,   152,    -1,   153,    91,   152,
     762      -1,   153,    -1,   154,   118,   153,    -1,   154,    -1,   155,
     763     126,   154,    -1,   155,    -1,   156,   127,   155,    -1,   156,
     764      -1,   157,    92,   156,    -1,   157,    -1,   158,    93,   157,
     765      -1,   158,    -1,   158,   128,   166,   115,   159,    -1,   158,
     766     128,   115,   159,    -1,   158,   128,   166,   115,   163,    -1,
     767     159,    -1,   159,    -1,   146,   129,   161,    -1,   146,   165,
     768     161,    -1,   163,   368,    -1,    -1,   161,    -1,   109,   110,
     769      -1,   109,   132,   161,   133,   110,    -1,   109,   132,   114,
     770     164,   133,   110,    -1,   109,   132,   161,   114,   164,   133,
     771     110,    -1,   162,    -1,   164,   114,   162,    -1,    95,    -1,
     772      96,    -1,    97,    -1,    98,    -1,    99,    -1,   100,    -1,
     773     101,    -1,   102,    -1,   103,    -1,   104,    -1,   161,    -1,
     774     166,   114,   161,    -1,    -1,   166,    -1,   169,    -1,   170,
     775      -1,   174,    -1,   175,    -1,   187,    -1,   189,    -1,   190,
     776      -1,   195,    -1,   126,   141,   112,   142,   113,   130,    -1,
     777     137,   115,   307,   168,    -1,   112,   113,    -1,   112,   132,
     778     132,   206,   171,   133,   113,    -1,   172,    -1,   171,   132,
     779     172,    -1,   209,    -1,    38,   209,    -1,   303,    -1,   168,
     780     133,    -1,   168,    -1,   173,   168,    -1,   167,   130,    -1,
     781      39,   107,   166,   108,   168,    -1,    39,   107,   166,   108,
     782     168,    40,   168,    -1,    41,   107,   166,   108,   180,    -1,
     783      41,   107,   166,   108,   112,   132,   202,   181,   113,    -1,
     784      51,   107,   166,   108,   180,    -1,    51,   107,   166,   108,
     785     112,   132,   202,   183,   113,    -1,   160,    -1,   160,    94,
     786     160,    -1,   305,    -1,   176,    -1,   177,   114,   176,    -1,
     787      42,   177,   115,    -1,    43,   115,    -1,   178,    -1,   179,
     788     178,    -1,   179,   168,    -1,    -1,   182,    -1,   179,   173,
     789      -1,   182,   179,   173,    -1,    -1,   184,    -1,   179,   186,
     790      -1,   179,   173,   185,    -1,   184,   179,   186,    -1,   184,
     791     179,   173,   185,    -1,    -1,   186,    -1,    54,    -1,    54,
     792     130,    -1,    45,   107,   166,   108,   168,    -1,    44,   168,
     793      45,   107,   166,   108,   130,    -1,    46,   107,   132,   188,
     794     108,   168,    -1,   167,   133,   130,   167,   130,   167,    -1,
     795     209,   167,   130,   167,    -1,    49,   137,   130,    -1,    49,
     796     117,   166,   130,    -1,    48,   130,    -1,    48,   137,   130,
     797      -1,    47,   130,    -1,    47,   137,   130,    -1,    50,   167,
     798     130,    -1,    59,   162,   130,    -1,    60,   162,   130,    -1,
     799      60,   162,    61,   161,   130,    -1,    55,   170,   191,    -1,
     800      55,   170,   193,    -1,    55,   170,   191,   193,    -1,   192,
     801      -1,    56,   107,    94,   108,   170,    -1,   192,    56,   107,
     802      94,   108,   170,    -1,    57,   107,    94,   108,   170,    -1,
     803     192,    57,   107,    94,   108,   170,    -1,    56,   107,   132,
     804     132,   194,   133,   108,   170,   133,    -1,   192,    56,   107,
     805     132,   132,   194,   133,   108,   170,   133,    -1,    57,   107,
     806     132,   132,   194,   133,   108,   170,   133,    -1,   192,    57,
     807     107,   132,   132,   194,   133,   108,   170,   133,    -1,    58,
     808     170,    -1,   222,    -1,   222,   304,    -1,   222,   352,    -1,
     809     361,   137,    -1,   361,    -1,    62,   196,   107,   139,   108,
     810     130,    -1,    62,   196,   107,   139,   115,   197,   108,   130,
     811      -1,    62,   196,   107,   139,   115,   197,   115,   197,   108,
     812     130,    -1,    62,   196,   107,   139,   115,   197,   115,   197,
     813     115,   200,   108,   130,    -1,    62,   196,    49,   107,   139,
     814     115,   115,   197,   115,   200,   115,   201,   108,   130,    -1,
     815      -1,    11,    -1,    -1,   198,    -1,   199,    -1,   198,   114,
     816     199,    -1,   139,   107,   160,   108,    -1,   109,   160,   110,
     817     139,   107,   160,   108,    -1,    -1,   139,    -1,   200,   114,
     818     139,    -1,   137,    -1,   201,   114,   137,    -1,   133,    -1,
     819     203,    -1,   209,    -1,   203,   132,   209,    -1,   133,    -1,
     820     205,    -1,   219,    -1,   205,   132,   219,    -1,    -1,   207,
     821      -1,    28,   208,   130,    -1,   207,    28,   208,   130,    -1,
     822     269,    -1,   208,   114,   269,    -1,   210,    -1,   219,    -1,
     823     211,   133,   130,    -1,   216,   133,   130,    -1,   213,   133,
     824     130,    -1,   288,   133,   130,    -1,   291,   133,   130,    -1,
     825     212,   272,    -1,   228,   212,   272,    -1,   211,   133,   114,
     826     132,   267,   272,    -1,   362,   267,   306,    -1,   365,   267,
     827     306,    -1,   224,   365,   267,   306,    -1,   214,    -1,   224,
     828     214,    -1,   228,   214,    -1,   228,   224,   214,    -1,   213,
     829     133,   114,   132,   267,    -1,   109,   110,   267,   107,   132,
     830     255,   133,   108,    -1,   365,   267,   107,   132,   255,   133,
     831     108,    -1,   215,   267,   107,   132,   255,   133,   108,    -1,
     832     109,   132,   257,   133,   110,    -1,   109,   132,   257,   133,
     833     114,   132,   258,   133,   110,    -1,     3,   212,    -1,     3,
     834     214,    -1,   216,   133,   114,   132,   137,    -1,     3,   222,
     835     304,    -1,   217,   133,   114,   132,   304,    -1,   224,     3,
     836     222,   304,    -1,   222,     3,   304,    -1,   222,     3,   224,
     837     304,    -1,     3,   137,   129,   161,    -1,   218,   133,   114,
     838     132,   137,   129,   161,    -1,   220,   133,   130,    -1,   217,
     839     133,   130,    -1,   218,   133,   130,    -1,   237,   133,   130,
     840      -1,   221,   304,   306,   272,    -1,   220,   114,   307,   304,
     841     306,   272,    -1,   233,    -1,   237,    -1,   239,    -1,   278,
     842      -1,   234,    -1,   238,    -1,   240,    -1,   279,    -1,    -1,
     843     224,    -1,   225,    -1,   224,   225,    -1,   226,    -1,   309,
     844      -1,    10,    -1,    12,    -1,    11,    -1,    14,    -1,    65,
     845      -1,    -1,    13,   107,   227,   281,   108,    -1,   229,    -1,
     846     224,   229,    -1,   228,   224,   229,    -1,   230,    -1,   229,
     847     230,    -1,   231,    -1,     5,    -1,     7,    -1,     4,    -1,
     848       6,    -1,     8,    -1,     9,    -1,    67,    -1,    69,    -1,
     849      16,    -1,    21,    -1,    20,    -1,    18,    -1,    19,    -1,
     850      17,    -1,    22,    -1,    23,    -1,    15,    -1,    24,    -1,
     851      25,    -1,    26,    -1,   234,    -1,   228,   234,    -1,   233,
     852     230,    -1,   233,   230,   224,    -1,   233,   230,   234,    -1,
     853     235,    -1,   223,   236,   223,    -1,   232,    -1,   224,   232,
     854      -1,   235,   225,    -1,   235,   232,    -1,    27,   107,   271,
     855     108,    -1,    27,   107,   166,   108,    -1,    76,   107,   271,
     856     108,    -1,    76,   107,   166,   108,    -1,   238,    -1,   228,
     857     238,    -1,   237,   230,    -1,   237,   230,   224,    -1,   241,
     858      -1,   224,   241,    -1,   238,   225,    -1,   240,    -1,   228,
     859     240,    -1,   239,   230,    -1,   239,   230,   224,    -1,    72,
     860      -1,   224,    72,    -1,   240,   225,    -1,   242,    -1,   252,
     861      -1,   243,   112,   244,   113,    -1,   243,   269,    -1,   243,
     862     269,   112,   244,   113,    -1,   243,   107,   287,   108,   112,
     863     244,   113,    -1,   243,   280,    -1,    30,   307,    -1,    31,
     864     307,    -1,   245,    -1,   244,   245,    -1,   246,   130,    -1,
     865      38,   246,   130,    -1,   247,   130,    -1,    38,   247,   130,
     866      -1,   361,    -1,   361,   269,    -1,   246,   114,   269,    -1,
     867     246,   114,    -1,   222,   248,    -1,   247,   114,   307,   248,
     868      -1,    -1,   250,    -1,   313,   249,    -1,   326,   249,    -1,
     869     352,    -1,    -1,   250,    -1,   115,   160,    -1,    29,   307,
     870      -1,   251,   112,   253,   367,   113,    -1,   251,   269,   112,
     871     253,   367,   113,    -1,   251,   269,    -1,   269,   254,    -1,
     872     253,   114,   269,   254,    -1,    -1,   129,   160,    -1,    -1,
     873     256,    -1,   258,    -1,   257,    -1,   257,   133,   114,   132,
     874     258,    -1,   258,   133,   114,   132,    94,    -1,   257,   133,
     875     114,   132,    94,    -1,   262,    -1,   258,   133,   114,   132,
     876     262,    -1,   257,   133,   114,   132,   262,    -1,   257,   133,
     877     114,   132,   258,   133,   114,   132,   262,    -1,   263,    -1,
     878     258,   133,   114,   132,   263,    -1,    -1,   260,    -1,   261,
     879      -1,   261,   133,   114,   132,    94,    -1,   265,    -1,   264,
     880      -1,   261,   133,   114,   132,   265,    -1,   261,   133,   114,
     881     132,   264,    -1,   264,    -1,   357,   267,   368,    -1,   365,
     882     267,   368,    -1,   224,   365,   267,   368,    -1,   214,    -1,
     883     265,    -1,   357,    -1,   365,    -1,   224,   365,    -1,   366,
     884      -1,   221,   331,   368,    -1,   221,   335,   368,    -1,   221,
     885      -1,   221,   346,    -1,   137,    -1,   266,   114,   137,    -1,
     886     135,    -1,    72,    -1,    73,    -1,   136,    -1,    72,    -1,
     887      73,    -1,   137,    -1,    72,    -1,    73,    -1,   361,    -1,
     888     222,    -1,   222,   352,    -1,   361,    -1,   366,    -1,   222,
     889      -1,   222,   340,    -1,    -1,   129,   273,    -1,   105,   273,
     890      -1,   161,    -1,   112,   274,   367,   113,    -1,    -1,   273,
     891      -1,   275,   273,    -1,   274,   114,   273,    -1,   274,   114,
     892     275,   273,    -1,   276,   115,    -1,   269,   115,    -1,   277,
     893      -1,   276,   277,    -1,    78,    -1,   111,   269,    -1,   109,
     894     132,   161,   133,   110,    -1,   109,   132,   305,   133,   110,
     895      -1,   109,   132,   160,    94,   160,   133,   110,    -1,   111,
     896     109,   132,   144,   133,   110,    -1,   279,    -1,   228,   279,
     897      -1,   278,   230,    -1,   278,   230,   224,    -1,   280,    -1,
     898     224,   280,    -1,   279,   225,    -1,    73,   107,   287,   108,
     899      -1,   282,   368,    -1,   281,   114,   282,   368,    -1,    -1,
     900     284,   269,   283,   285,    -1,   222,   331,    -1,    32,    -1,
     901      34,    -1,    33,    -1,    -1,   285,   286,    -1,   127,   269,
     902     107,   287,   108,    -1,   127,   112,   132,   293,   113,    -1,
     903     127,   107,   132,   281,   133,   108,   112,   132,   293,   113,
     904     107,   287,   108,    -1,   271,    -1,   161,    -1,   287,   114,
     905     271,    -1,   287,   114,   161,    -1,    32,   289,    -1,   229,
     906      32,   289,    -1,   288,   114,   289,    -1,   290,   285,    -1,
     907     290,   285,   129,   271,    -1,   269,    -1,   268,   107,   132,
     908     281,   133,   108,    -1,    35,   269,   107,   132,   281,   133,
     909     108,   112,   113,    -1,    -1,    35,   269,   107,   132,   281,
     910     133,   108,   112,   292,   293,   113,    -1,   294,    -1,   293,
     911     132,   294,    -1,   295,   133,   130,    -1,   296,   133,   130,
     912      -1,   212,    -1,   214,    -1,   295,   133,   114,   132,   267,
     913      -1,   222,   304,    -1,   296,   133,   114,   132,   304,    -1,
     914      -1,   298,    -1,   300,    -1,   298,   132,   300,    -1,    -1,
     915     298,    -1,   209,    -1,   302,    -1,   195,    -1,    -1,     5,
     916      80,   301,   112,   299,   113,    -1,    38,   300,    -1,   303,
     917      -1,   318,   170,    -1,   322,   132,   204,   170,    -1,   213,
     918     170,    -1,   221,   318,   170,    -1,   224,   318,   170,    -1,
     919     228,   318,   170,    -1,   228,   224,   318,   170,    -1,   221,
     920     322,   132,   204,   170,    -1,   224,   322,   132,   204,   170,
     921      -1,   228,   322,   132,   204,   170,    -1,   228,   224,   322,
     922     132,   204,   170,    -1,   313,    -1,   318,    -1,   326,    -1,
     923     160,   121,   160,    -1,    -1,    62,   107,   139,   108,   307,
     924      -1,    -1,   308,    -1,   309,    -1,   308,   309,    -1,    37,
     925     107,   107,   310,   108,   108,    -1,   311,    -1,   310,   114,
     926     311,    -1,    -1,   312,    -1,   312,   107,   167,   108,    -1,
     927     267,    -1,   231,    -1,   232,    -1,   225,    -1,   314,   307,
     928      -1,   315,    -1,   316,   307,    -1,   317,   307,    -1,   135,
     929      -1,   107,   314,   108,    -1,   117,   313,    -1,   117,   224,
     930     313,    -1,   107,   315,   108,    -1,   314,   344,    -1,   107,
     931     315,   108,   344,    -1,   107,   316,   108,   345,    -1,   107,
     932     316,   108,    -1,   107,   315,   108,   107,   132,   259,   133,
     933     108,    -1,   107,   317,   108,    -1,   319,   307,    -1,   320,
     934      -1,   321,   307,    -1,   314,   107,   132,   259,   133,   108,
     935      -1,   107,   320,   108,   107,   132,   259,   133,   108,    -1,
     936     107,   319,   108,    -1,   117,   318,    -1,   117,   224,   318,
     937      -1,   107,   320,   108,    -1,   107,   320,   108,   344,    -1,
     938     107,   321,   108,   345,    -1,   107,   321,   108,    -1,   323,
     939      -1,   324,    -1,   325,    -1,   314,   107,   266,   108,    -1,
     940     107,   324,   108,   107,   266,   108,    -1,   107,   323,   108,
     941      -1,   117,   322,    -1,   117,   224,   322,    -1,   107,   324,
     942     108,    -1,   107,   324,   108,   344,    -1,   107,   325,   108,
     943     345,    -1,   107,   325,   108,    -1,   327,   307,    -1,   328,
     944      -1,   329,   307,    -1,   330,   307,    -1,   336,    -1,   107,
     945     327,   108,    -1,   117,   326,    -1,   117,   224,   326,    -1,
     946     107,   328,   108,    -1,   327,   344,    -1,   107,   328,   108,
     947     344,    -1,   107,   329,   108,   345,    -1,   107,   329,   108,
     948      -1,   327,   107,   132,   259,   133,   108,    -1,   107,   328,
     949     108,   107,   132,   259,   133,   108,    -1,   107,   330,   108,
     950      -1,   314,   307,    -1,   332,    -1,   333,   307,    -1,   334,
     951     307,    -1,   117,   331,    -1,   117,   224,   331,    -1,   107,
     952     332,   108,    -1,   314,   350,    -1,   107,   332,   108,   344,
     953      -1,   107,   333,   108,   345,    -1,   107,   333,   108,    -1,
     954     314,   107,   132,   259,   133,   108,    -1,   107,   332,   108,
     955     107,   132,   259,   133,   108,    -1,   107,   334,   108,    -1,
     956     336,   307,    -1,   337,    -1,   338,   307,    -1,   339,   307,
     957      -1,    72,    -1,    73,    -1,   117,   335,    -1,   117,   224,
     958     335,    -1,   107,   337,   108,    -1,   336,   350,    -1,   107,
     959     337,   108,   350,    -1,   336,   107,   132,   259,   133,   108,
     960      -1,   107,   337,   108,   107,   132,   259,   133,   108,    -1,
     961     341,    -1,   342,   307,    -1,   343,   307,    -1,   117,    -1,
     962     117,   224,    -1,   117,   340,    -1,   117,   224,   340,    -1,
     963     107,   341,   108,    -1,   344,    -1,   107,   341,   108,   344,
     964      -1,   107,   342,   108,   345,    -1,   107,   342,   108,    -1,
     965     107,   132,   259,   133,   108,    -1,   107,   341,   108,   107,
     966     132,   259,   133,   108,    -1,   107,   343,   108,    -1,   109,
     967     110,    -1,   109,   110,   345,    -1,   345,    -1,   109,   132,
     968     161,   133,   110,    -1,   109,   132,   117,   133,   110,    -1,
     969     345,   109,   132,   161,   133,   110,    -1,   345,   109,   132,
     970     117,   133,   110,    -1,   347,    -1,   348,   307,    -1,   349,
     971     307,    -1,   117,    -1,   117,   224,    -1,   117,   346,    -1,
     972     117,   224,   346,    -1,   107,   347,   108,    -1,   350,    -1,
     973     107,   347,   108,   350,    -1,   107,   348,   108,   345,    -1,
     974     107,   348,   108,    -1,   107,   132,   259,   133,   108,    -1,
     975     107,   347,   108,   107,   132,   259,   133,   108,    -1,   107,
     976     349,   108,    -1,   351,    -1,   351,   345,    -1,   345,    -1,
     977     109,   110,    -1,   109,   132,   224,   117,   133,   110,    -1,
     978     109,   132,   224,   133,   110,    -1,   109,   132,   224,   161,
     979     133,   110,    -1,   109,   132,     7,   223,   161,   133,   110,
     980      -1,   109,   132,   224,     7,   161,   133,   110,    -1,   353,
     981      -1,   354,   307,    -1,   355,   307,    -1,   117,    -1,   117,
     982     224,    -1,   117,   352,    -1,   117,   224,   352,    -1,   107,
     983     353,   108,    -1,   344,    -1,   107,   353,   108,   344,    -1,
     984     107,   354,   108,   345,    -1,   107,   354,   108,    -1,   107,
     985     353,   108,   107,   132,   259,   133,   108,    -1,   107,   355,
     986     108,    -1,   357,    -1,   365,    -1,   224,   365,    -1,   358,
     987      -1,   359,    -1,   117,   222,    -1,   224,   117,   222,    -1,
     988     117,   366,    -1,   224,   117,   366,    -1,   117,   356,    -1,
     989     224,   117,   356,    -1,   109,   110,   222,    -1,   360,   222,
     990      -1,   109,   110,   345,   222,    -1,   360,   345,   222,    -1,
     991     345,   222,    -1,   109,   110,   358,    -1,   360,   358,    -1,
     992     109,   110,   345,   358,    -1,   360,   345,   358,    -1,   345,
     993     358,    -1,   109,   132,   224,   117,   133,   110,    -1,   109,
     994     132,   224,   161,   133,   110,    -1,   109,   132,   228,   161,
     995     133,   110,    -1,   109,   132,   228,   224,   161,   133,   110,
     996      -1,   365,    -1,   224,   365,    -1,   362,    -1,   363,    -1,
     997     364,    -1,   117,   222,    -1,   224,   117,   222,    -1,   117,
     998     366,    -1,   224,   117,   366,    -1,   117,   361,    -1,   224,
     999     117,   361,    -1,   109,   110,   222,    -1,   109,   110,   345,
     1000     222,    -1,   345,   222,    -1,   109,   110,   363,    -1,   109,
     1001     110,   345,   363,    -1,   345,   363,    -1,   109,   132,   258,
     1002     133,   110,    -1,   109,   110,   107,   255,   108,    -1,   365,
     1003     107,   132,   255,   133,   108,    -1,   215,   107,   132,   255,
     1004     133,   108,    -1,    -1,   114,    -1,    -1,   129,   161,    -1
    9871005};
    9881006
     
    9901008static const yytype_uint16 yyrline[] =
    9911009{
    992        0,   288,   288,   294,   303,   304,   305,   309,   310,   311,
    993      315,   316,   320,   324,   325,   329,   330,   336,   338,   340,
    994      342,   347,   348,   354,   356,   358,   359,   361,   362,   364,
    995      367,   372,   373,   379,   380,   381,   386,   388,   393,   394,
    996      398,   400,   402,   404,   406,   411,   414,   416,   418,   420,
    997      422,   424,   426,   428,   434,   436,   438,   440,   442,   444,
    998      446,   448,   453,   454,   455,   456,   460,   461,   463,   468,
    999      469,   471,   473,   478,   479,   481,   486,   487,   489,   494,
    1000      495,   497,   499,   501,   506,   507,   509,   514,   515,   520,
    1001      521,   526,   527,   532,   533,   538,   539,   544,   545,   547,
    1002      549,   554,   559,   560,   562,   564,   570,   571,   577,   579,
    1003      581,   583,   588,   589,   594,   595,   596,   597,   598,   599,
    1004      600,   601,   602,   603,   607,   608,   614,   615,   621,   622,
    1005      623,   624,   625,   626,   627,   628,   632,   639,   641,   651,
    1006      652,   657,   659,   661,   663,   667,   668,   673,   678,   681,
    1007      683,   685,   690,   692,   700,   701,   703,   707,   708,   713,
    1008      714,   719,   720,   724,   729,   730,   734,   736,   742,   743,
    1009      747,   749,   751,   753,   759,   760,   764,   765,   769,   771,
    1010      773,   778,   780,   785,   787,   791,   794,   798,   801,   805,
    1011      807,   809,   814,   816,   818,   827,   829,   831,   836,   838,
    1012      843,   856,   857,   862,   864,   869,   873,   875,   877,   879,
    1013      881,   887,   888,   894,   895,   899,   900,   905,   907,   913,
    1014      914,   916,   921,   923,   930,   932,   936,   937,   942,   944,
    1015      948,   949,   953,   955,   959,   960,   964,   965,   969,   970,
    1016      985,   986,   987,   988,   989,   993,   998,  1005,  1015,  1020,
    1017     1025,  1033,  1038,  1043,  1048,  1053,  1061,  1083,  1088,  1095,
    1018     1097,  1104,  1109,  1114,  1125,  1130,  1135,  1140,  1145,  1154,
    1019     1159,  1167,  1168,  1169,  1170,  1176,  1181,  1189,  1190,  1191,
    1020     1192,  1196,  1197,  1198,  1199,  1204,  1205,  1214,  1215,  1220,
    1021     1221,  1226,  1228,  1230,  1232,  1234,  1237,  1236,  1248,  1249,
    1022     1251,  1261,  1262,  1267,  1271,  1273,  1275,  1277,  1279,  1281,
    1023     1283,  1285,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1304,
    1024     1306,  1308,  1310,  1312,  1318,  1319,  1321,  1323,  1325,  1330,
    1025     1331,  1337,  1338,  1340,  1342,  1347,  1349,  1351,  1353,  1358,
    1026     1359,  1361,  1363,  1368,  1369,  1371,  1376,  1377,  1379,  1381,
    1027     1386,  1388,  1390,  1395,  1396,  1400,  1402,  1404,  1406,  1408,
    1028     1413,  1415,  1420,  1422,  1427,  1428,  1430,  1431,  1436,  1437,
    1029     1439,  1441,  1446,  1448,  1454,  1455,  1457,  1460,  1463,  1468,
    1030     1469,  1474,  1479,  1483,  1485,  1487,  1492,  1494,  1500,  1501,
    1031     1509,  1510,  1514,  1515,  1516,  1518,  1520,  1527,  1528,  1530,
    1032     1532,  1537,  1538,  1544,  1545,  1549,  1550,  1555,  1556,  1557,
    1033     1559,  1567,  1568,  1570,  1573,  1575,  1579,  1580,  1581,  1583,
    1034     1585,  1589,  1594,  1602,  1603,  1612,  1614,  1619,  1620,  1621,
    1035     1625,  1626,  1627,  1631,  1632,  1633,  1637,  1638,  1639,  1644,
    1036     1645,  1646,  1647,  1653,  1654,  1659,  1660,  1664,  1665,  1666,
    1037     1667,  1682,  1683,  1688,  1689,  1696,  1698,  1700,  1703,  1705,
    1038     1707,  1730,  1731,  1733,  1735,  1740,  1741,  1743,  1748,  1753,
    1039     1754,  1760,  1759,  1763,  1767,  1769,  1771,  1777,  1778,  1783,
    1040     1788,  1790,  1795,  1797,  1798,  1800,  1805,  1807,  1809,  1814,
    1041     1816,  1821,  1826,  1834,  1840,  1839,  1853,  1854,  1859,  1860,
    1042     1864,  1869,  1874,  1882,  1887,  1898,  1899,  1910,  1911,  1917,
    1043     1918,  1922,  1923,  1924,  1927,  1926,  1937,  1942,  1947,  1953,
    1044     1962,  1968,  1974,  1980,  1986,  1994,  2000,  2008,  2014,  2023,
    1045     2024,  2025,  2029,  2033,  2035,  2040,  2041,  2045,  2046,  2051,
    1046     2057,  2058,  2061,  2063,  2064,  2068,  2069,  2070,  2071,  2105,
    1047     2107,  2108,  2110,  2115,  2120,  2125,  2127,  2129,  2134,  2136,
    1048     2138,  2140,  2145,  2147,  2157,  2159,  2160,  2165,  2167,  2169,
    1049     2174,  2176,  2178,  2183,  2185,  2187,  2196,  2197,  2198,  2202,
    1050     2204,  2206,  2211,  2213,  2215,  2220,  2222,  2224,  2239,  2241,
    1051     2242,  2244,  2249,  2250,  2255,  2257,  2259,  2264,  2266,  2268,
    1052     2270,  2275,  2277,  2279,  2289,  2291,  2292,  2294,  2299,  2301,
    1053     2303,  2308,  2310,  2312,  2314,  2319,  2321,  2323,  2354,  2356,
    1054     2357,  2359,  2364,  2369,  2377,  2379,  2381,  2386,  2388,  2393,
    1055     2395,  2409,  2410,  2412,  2417,  2419,  2421,  2423,  2425,  2430,
    1056     2431,  2433,  2435,  2440,  2442,  2444,  2450,  2452,  2454,  2458,
    1057     2460,  2462,  2464,  2478,  2479,  2481,  2486,  2488,  2490,  2492,
    1058     2494,  2499,  2500,  2502,  2504,  2509,  2511,  2513,  2519,  2520,
    1059     2522,  2531,  2534,  2536,  2539,  2541,  2543,  2556,  2557,  2559,
    1060     2564,  2566,  2568,  2570,  2572,  2577,  2578,  2580,  2582,  2587,
    1061     2589,  2597,  2598,  2599,  2604,  2605,  2609,  2611,  2613,  2615,
    1062     2617,  2619,  2626,  2628,  2630,  2632,  2634,  2636,  2638,  2640,
    1063     2642,  2644,  2649,  2651,  2653,  2658,  2684,  2685,  2687,  2691,
    1064     2692,  2696,  2698,  2700,  2702,  2704,  2706,  2713,  2715,  2717,
    1065     2719,  2721,  2723,  2728,  2733,  2735,  2737,  2755,  2757,  2762,
    1066     2763
     1010       0,   290,   290,   296,   305,   306,   307,   311,   312,   313,
     1011     317,   318,   323,   327,   328,   332,   333,   339,   341,   343,
     1012     345,   350,   351,   357,   359,   361,   362,   364,   365,   367,
     1013     369,   371,   379,   380,   386,   387,   388,   393,   395,   400,
     1014     401,   405,   407,   409,   411,   413,   418,   421,   423,   425,
     1015     427,   429,   431,   433,   435,   441,   443,   445,   447,   449,
     1016     451,   453,   455,   460,   461,   462,   463,   467,   468,   470,
     1017     475,   476,   478,   480,   485,   486,   488,   493,   494,   496,
     1018     501,   502,   504,   506,   508,   513,   514,   516,   521,   522,
     1019     527,   528,   533,   534,   539,   540,   545,   546,   551,   552,
     1020     554,   556,   561,   566,   567,   569,   571,   577,   578,   584,
     1021     586,   588,   590,   595,   596,   601,   602,   603,   604,   605,
     1022     606,   607,   608,   609,   610,   614,   615,   621,   622,   628,
     1023     629,   630,   631,   632,   633,   634,   635,   636,   645,   652,
     1024     654,   664,   665,   670,   672,   674,   676,   680,   681,   686,
     1025     691,   694,   696,   698,   703,   705,   713,   714,   716,   720,
     1026     721,   726,   727,   732,   733,   737,   742,   743,   747,   749,
     1027     755,   756,   760,   762,   764,   766,   772,   773,   777,   778,
     1028     782,   784,   786,   791,   793,   798,   800,   804,   807,   811,
     1029     814,   818,   820,   824,   826,   833,   835,   837,   846,   848,
     1030     850,   852,   854,   859,   861,   863,   865,   870,   883,   884,
     1031     889,   891,   896,   900,   902,   904,   906,   908,   914,   915,
     1032     921,   922,   926,   927,   932,   934,   940,   941,   943,   948,
     1033     950,   957,   959,   963,   964,   969,   971,   975,   976,   980,
     1034     982,   986,   987,   991,   992,   996,   997,  1012,  1013,  1014,
     1035    1015,  1016,  1020,  1025,  1032,  1042,  1047,  1052,  1060,  1065,
     1036    1070,  1075,  1080,  1088,  1110,  1115,  1122,  1124,  1131,  1136,
     1037    1141,  1152,  1157,  1162,  1167,  1172,  1181,  1186,  1194,  1195,
     1038    1196,  1197,  1203,  1208,  1216,  1217,  1218,  1219,  1223,  1224,
     1039    1225,  1226,  1231,  1232,  1241,  1242,  1247,  1248,  1253,  1255,
     1040    1257,  1259,  1261,  1264,  1263,  1275,  1276,  1278,  1288,  1289,
     1041    1294,  1298,  1300,  1302,  1304,  1306,  1308,  1310,  1312,  1317,
     1042    1319,  1321,  1323,  1325,  1327,  1329,  1331,  1333,  1335,  1337,
     1043    1339,  1345,  1346,  1348,  1350,  1352,  1357,  1358,  1364,  1365,
     1044    1367,  1369,  1374,  1376,  1378,  1380,  1385,  1386,  1388,  1390,
     1045    1395,  1396,  1398,  1403,  1404,  1406,  1408,  1413,  1415,  1417,
     1046    1422,  1423,  1427,  1429,  1431,  1433,  1435,  1440,  1442,  1447,
     1047    1449,  1454,  1455,  1457,  1458,  1463,  1464,  1466,  1468,  1473,
     1048    1475,  1481,  1482,  1484,  1487,  1490,  1495,  1496,  1501,  1506,
     1049    1510,  1512,  1514,  1519,  1521,  1527,  1528,  1536,  1537,  1541,
     1050    1542,  1543,  1545,  1547,  1554,  1555,  1557,  1559,  1564,  1565,
     1051    1571,  1572,  1576,  1577,  1582,  1583,  1584,  1586,  1594,  1595,
     1052    1597,  1600,  1602,  1606,  1607,  1608,  1610,  1612,  1616,  1621,
     1053    1629,  1630,  1639,  1641,  1646,  1647,  1648,  1652,  1653,  1654,
     1054    1658,  1659,  1660,  1664,  1665,  1666,  1671,  1672,  1673,  1674,
     1055    1680,  1681,  1683,  1688,  1689,  1694,  1695,  1696,  1697,  1698,
     1056    1713,  1714,  1719,  1720,  1728,  1730,  1732,  1735,  1737,  1739,
     1057    1762,  1763,  1765,  1767,  1772,  1773,  1775,  1780,  1785,  1786,
     1058    1792,  1791,  1795,  1799,  1801,  1803,  1809,  1810,  1815,  1820,
     1059    1822,  1827,  1829,  1830,  1832,  1837,  1839,  1841,  1846,  1848,
     1060    1853,  1858,  1866,  1872,  1871,  1885,  1886,  1891,  1892,  1896,
     1061    1901,  1906,  1914,  1919,  1930,  1931,  1942,  1943,  1949,  1950,
     1062    1954,  1955,  1956,  1959,  1958,  1969,  1974,  1979,  1985,  1994,
     1063    2000,  2006,  2012,  2018,  2026,  2032,  2040,  2046,  2055,  2056,
     1064    2057,  2061,  2065,  2067,  2072,  2073,  2077,  2078,  2083,  2089,
     1065    2090,  2093,  2095,  2096,  2100,  2101,  2102,  2103,  2137,  2139,
     1066    2140,  2142,  2147,  2152,  2157,  2159,  2161,  2166,  2168,  2170,
     1067    2172,  2177,  2179,  2189,  2191,  2192,  2197,  2199,  2201,  2206,
     1068    2208,  2210,  2215,  2217,  2219,  2228,  2229,  2230,  2234,  2236,
     1069    2238,  2243,  2245,  2247,  2252,  2254,  2256,  2271,  2273,  2274,
     1070    2276,  2281,  2282,  2287,  2289,  2291,  2296,  2298,  2300,  2302,
     1071    2307,  2309,  2311,  2321,  2323,  2324,  2326,  2331,  2333,  2335,
     1072    2340,  2342,  2344,  2346,  2351,  2353,  2355,  2386,  2388,  2389,
     1073    2391,  2396,  2401,  2409,  2411,  2413,  2418,  2420,  2425,  2427,
     1074    2441,  2442,  2444,  2449,  2451,  2453,  2455,  2457,  2462,  2463,
     1075    2465,  2467,  2472,  2474,  2476,  2482,  2484,  2486,  2490,  2492,
     1076    2494,  2496,  2510,  2511,  2513,  2518,  2520,  2522,  2524,  2526,
     1077    2531,  2532,  2534,  2536,  2541,  2543,  2545,  2551,  2552,  2554,
     1078    2563,  2566,  2568,  2571,  2573,  2575,  2588,  2589,  2591,  2596,
     1079    2598,  2600,  2602,  2604,  2609,  2610,  2612,  2614,  2619,  2621,
     1080    2629,  2630,  2631,  2636,  2637,  2641,  2643,  2645,  2647,  2649,
     1081    2651,  2658,  2660,  2662,  2664,  2666,  2668,  2670,  2672,  2674,
     1082    2676,  2681,  2683,  2685,  2690,  2716,  2717,  2719,  2723,  2724,
     1083    2728,  2730,  2732,  2734,  2736,  2738,  2745,  2747,  2749,  2751,
     1084    2753,  2755,  2760,  2765,  2767,  2769,  2787,  2789,  2794,  2795
    10671085};
    10681086#endif
     
    10801098  "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH", "CASE", "DEFAULT",
    10811099  "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO", "RETURN", "CHOOSE",
    1082   "FALLTHRU", "TRY", "CATCH", "FINALLY", "THROW", "ASM", "ALIGNAS",
    1083   "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
    1084   "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
    1085   "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
     1100  "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH", "CATCHRESUME",
     1101  "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS", "ALIGNOF",
     1102  "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT", "THREADLOCAL",
     1103  "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname", "TYPEGENname",
     1104  "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
    10861105  "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant",
    10871106  "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE",
    10881107  "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
    10891108  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
    1090   "RSassign", "ANDassign", "ERassign", "ORassign", "THEN", "'('", "')'",
    1091   "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'", "'*'", "'&'",
    1092   "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'", "'?'",
    1093   "'='", "';'", "$accept", "push", "pop", "constant", "identifier",
    1094   "no_01_identifier", "no_attr_identifier", "zero_one",
     1109  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
     1110  "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "':'", "'!'",
     1111  "'*'", "'&'", "'+'", "'-'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'",
     1112  "'|'", "'?'", "'='", "';'", "$accept", "push", "pop", "constant",
     1113  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
    10951114  "string_literal_list", "primary_expression", "postfix_expression",
    10961115  "argument_expression_list", "argument_expression", "field_list", "field",
     
    11951214     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
    11961215     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
    1197      355,    40,    41,    91,    93,    46,   123,   125,    44,    58,
    1198       33,    42,    38,    43,    45,   126,    47,    37,    60,    62,
    1199       94,   124,    63,    61,    59
     1216     355,   356,   357,   358,   359,   360,   361,    40,    41,    91,
     1217      93,    46,   123,   125,    44,    58,    33,    42,    38,    43,
     1218      45,   126,    47,    37,    60,    62,    94,   124,    63,    61,
     1219      59
    12001220};
    12011221# endif
     
    12041224static const yytype_uint16 yyr1[] =
    12051225{
    1206        0,   125,   126,   127,   128,   128,   128,   129,   129,   129,
    1207      130,   130,   131,   132,   132,   133,   133,   134,   134,   134,
    1208      134,   135,   135,   135,   135,   135,   135,   135,   135,   135,
    1209      135,   136,   136,   137,   137,   137,   137,   137,   138,   138,
    1210      139,   139,   139,   139,   139,   140,   140,   140,   140,   140,
    1211      140,   140,   140,   140,   140,   140,   140,   140,   140,   140,
    1212      140,   140,   141,   141,   141,   141,   142,   142,   142,   143,
    1213      143,   143,   143,   144,   144,   144,   145,   145,   145,   146,
    1214      146,   146,   146,   146,   147,   147,   147,   148,   148,   149,
    1215      149,   150,   150,   151,   151,   152,   152,   153,   153,   153,
    1216      153,   154,   155,   155,   155,   155,   156,   156,   157,   157,
    1217      157,   157,   158,   158,   159,   159,   159,   159,   159,   159,
    1218      159,   159,   159,   159,   160,   160,   161,   161,   162,   162,
    1219      162,   162,   162,   162,   162,   162,   163,   164,   164,   165,
    1220      165,   166,   166,   166,   166,   167,   167,   168,   169,   169,
    1221      169,   169,   169,   169,   170,   170,   170,   171,   171,   172,
    1222      172,   173,   173,   174,   175,   175,   176,   176,   177,   177,
    1223      178,   178,   178,   178,   179,   179,   180,   180,   181,   181,
    1224      181,   182,   182,   183,   183,   183,   183,   183,   183,   183,
    1225      183,   183,   184,   184,   184,   185,   185,   185,   186,   186,
    1226      187,   188,   188,   188,   188,   188,   189,   189,   189,   189,
    1227      189,   190,   190,   191,   191,   192,   192,   193,   193,   194,
    1228      194,   194,   195,   195,   196,   196,   197,   197,   198,   198,
    1229      199,   199,   200,   200,   201,   201,   202,   202,   203,   203,
    1230      204,   204,   204,   204,   204,   205,   205,   205,   206,   206,
    1231      206,   207,   207,   207,   207,   207,   208,   208,   208,   209,
    1232      209,   210,   210,   210,   211,   211,   211,   211,   211,   212,
    1233      212,   213,   213,   213,   213,   214,   214,   215,   215,   215,
    1234      215,   216,   216,   216,   216,   217,   217,   218,   218,   219,
    1235      219,   220,   220,   220,   220,   220,   221,   220,   222,   222,
    1236      222,   223,   223,   224,   225,   225,   225,   225,   225,   225,
    1237      225,   225,   226,   226,   226,   226,   226,   226,   226,   226,
    1238      226,   226,   226,   226,   227,   227,   227,   227,   227,   228,
    1239      228,   229,   229,   229,   229,   230,   230,   230,   230,   231,
    1240      231,   231,   231,   232,   232,   232,   233,   233,   233,   233,
    1241      234,   234,   234,   235,   235,   236,   236,   236,   236,   236,
    1242      237,   237,   238,   238,   239,   239,   239,   239,   240,   240,
    1243      240,   240,   241,   241,   242,   242,   242,   242,   242,   243,
    1244      243,   244,   245,   246,   246,   246,   247,   247,   248,   248,
    1245      249,   249,   250,   250,   250,   250,   250,   251,   251,   251,
    1246      251,   252,   252,   253,   253,   254,   254,   255,   255,   255,
    1247      255,   256,   256,   256,   256,   256,   257,   257,   257,   257,
    1248      257,   258,   258,   259,   259,   260,   260,   261,   261,   261,
    1249      262,   262,   262,   263,   263,   263,   264,   264,   264,   265,
    1250      265,   265,   265,   266,   266,   267,   267,   268,   268,   268,
    1251      268,   269,   269,   270,   270,   271,   271,   271,   271,   271,
    1252      271,   272,   272,   272,   272,   273,   273,   273,   274,   275,
    1253      275,   277,   276,   276,   278,   278,   278,   279,   279,   280,
    1254      280,   280,   281,   281,   281,   281,   282,   282,   282,   283,
    1255      283,   284,   284,   285,   286,   285,   287,   287,   288,   288,
    1256      289,   289,   289,   290,   290,   291,   291,   292,   292,   293,
    1257      293,   294,   294,   294,   295,   294,   294,   296,   296,   296,
    1258      297,   297,   297,   297,   297,   297,   297,   297,   297,   298,
    1259      298,   298,   299,   300,   300,   301,   301,   302,   302,   303,
    1260      304,   304,   305,   305,   305,   306,   306,   306,   306,   307,
    1261      307,   307,   307,   308,   308,   309,   309,   309,   310,   310,
    1262      310,   310,   311,   311,   312,   312,   312,   313,   313,   313,
    1263      314,   314,   314,   315,   315,   315,   316,   316,   316,   317,
    1264      317,   317,   318,   318,   318,   319,   319,   319,   320,   320,
    1265      320,   320,   321,   321,   322,   322,   322,   323,   323,   323,
    1266      323,   324,   324,   324,   325,   325,   325,   325,   326,   326,
    1267      326,   327,   327,   327,   327,   328,   328,   328,   329,   329,
    1268      329,   329,   330,   330,   331,   331,   331,   332,   332,   333,
    1269      333,   334,   334,   334,   335,   335,   335,   335,   335,   336,
    1270      336,   336,   336,   337,   337,   337,   338,   338,   338,   339,
    1271      339,   339,   339,   340,   340,   340,   341,   341,   341,   341,
    1272      341,   342,   342,   342,   342,   343,   343,   343,   344,   344,
    1273      344,   345,   345,   345,   345,   345,   345,   346,   346,   346,
    1274      347,   347,   347,   347,   347,   348,   348,   348,   348,   349,
    1275      349,   350,   350,   350,   351,   351,   352,   352,   352,   352,
    1276      352,   352,   353,   353,   353,   353,   353,   353,   353,   353,
    1277      353,   353,   354,   354,   354,   354,   355,   355,   355,   356,
    1278      356,   357,   357,   357,   357,   357,   357,   358,   358,   358,
    1279      358,   358,   358,   359,   360,   360,   360,   361,   361,   362,
    1280      362
     1226       0,   131,   132,   133,   134,   134,   134,   135,   135,   135,
     1227     136,   136,   137,   138,   138,   139,   139,   140,   140,   140,
     1228     140,   141,   141,   141,   141,   141,   141,   141,   141,   141,
     1229     141,   141,   142,   142,   143,   143,   143,   143,   143,   144,
     1230     144,   145,   145,   145,   145,   145,   146,   146,   146,   146,
     1231     146,   146,   146,   146,   146,   146,   146,   146,   146,   146,
     1232     146,   146,   146,   147,   147,   147,   147,   148,   148,   148,
     1233     149,   149,   149,   149,   150,   150,   150,   151,   151,   151,
     1234     152,   152,   152,   152,   152,   153,   153,   153,   154,   154,
     1235     155,   155,   156,   156,   157,   157,   158,   158,   159,   159,
     1236     159,   159,   160,   161,   161,   161,   161,   162,   162,   163,
     1237     163,   163,   163,   164,   164,   165,   165,   165,   165,   165,
     1238     165,   165,   165,   165,   165,   166,   166,   167,   167,   168,
     1239     168,   168,   168,   168,   168,   168,   168,   168,   169,   170,
     1240     170,   171,   171,   172,   172,   172,   172,   173,   173,   174,
     1241     175,   175,   175,   175,   175,   175,   176,   176,   176,   177,
     1242     177,   178,   178,   179,   179,   180,   181,   181,   182,   182,
     1243     183,   183,   184,   184,   184,   184,   185,   185,   186,   186,
     1244     187,   187,   187,   188,   188,   189,   189,   189,   189,   189,
     1245     189,   189,   189,   189,   189,   190,   190,   190,   191,   191,
     1246     191,   191,   191,   192,   192,   192,   192,   193,   194,   194,
     1247     194,   194,   194,   195,   195,   195,   195,   195,   196,   196,
     1248     197,   197,   198,   198,   199,   199,   200,   200,   200,   201,
     1249     201,   202,   202,   203,   203,   204,   204,   205,   205,   206,
     1250     206,   207,   207,   208,   208,   209,   209,   210,   210,   210,
     1251     210,   210,   211,   211,   211,   212,   212,   212,   213,   213,
     1252     213,   213,   213,   214,   214,   214,   215,   215,   216,   216,
     1253     216,   217,   217,   217,   217,   217,   218,   218,   219,   219,
     1254     219,   219,   220,   220,   221,   221,   221,   221,   222,   222,
     1255     222,   222,   223,   223,   224,   224,   225,   225,   226,   226,
     1256     226,   226,   226,   227,   226,   228,   228,   228,   229,   229,
     1257     230,   231,   231,   231,   231,   231,   231,   231,   231,   232,
     1258     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
     1259     232,   233,   233,   233,   233,   233,   234,   234,   235,   235,
     1260     235,   235,   236,   236,   236,   236,   237,   237,   237,   237,
     1261     238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
     1262     241,   241,   242,   242,   242,   242,   242,   243,   243,   244,
     1263     244,   245,   245,   245,   245,   246,   246,   246,   246,   247,
     1264     247,   248,   248,   248,   248,   248,   249,   249,   250,   251,
     1265     252,   252,   252,   253,   253,   254,   254,   255,   255,   256,
     1266     256,   256,   256,   256,   257,   257,   257,   257,   258,   258,
     1267     259,   259,   260,   260,   261,   261,   261,   261,   262,   262,
     1268     262,   262,   262,   263,   263,   263,   263,   263,   264,   264,
     1269     265,   265,   266,   266,   267,   267,   267,   268,   268,   268,
     1270     269,   269,   269,   270,   270,   270,   271,   271,   271,   271,
     1271     272,   272,   272,   273,   273,   274,   274,   274,   274,   274,
     1272     275,   275,   276,   276,   277,   277,   277,   277,   277,   277,
     1273     278,   278,   278,   278,   279,   279,   279,   280,   281,   281,
     1274     283,   282,   282,   284,   284,   284,   285,   285,   286,   286,
     1275     286,   287,   287,   287,   287,   288,   288,   288,   289,   289,
     1276     290,   290,   291,   292,   291,   293,   293,   294,   294,   295,
     1277     295,   295,   296,   296,   297,   297,   298,   298,   299,   299,
     1278     300,   300,   300,   301,   300,   300,   302,   302,   302,   303,
     1279     303,   303,   303,   303,   303,   303,   303,   303,   304,   304,
     1280     304,   305,   306,   306,   307,   307,   308,   308,   309,   310,
     1281     310,   311,   311,   311,   312,   312,   312,   312,   313,   313,
     1282     313,   313,   314,   314,   315,   315,   315,   316,   316,   316,
     1283     316,   317,   317,   318,   318,   318,   319,   319,   319,   320,
     1284     320,   320,   321,   321,   321,   322,   322,   322,   323,   323,
     1285     323,   324,   324,   324,   325,   325,   325,   326,   326,   326,
     1286     326,   327,   327,   328,   328,   328,   329,   329,   329,   329,
     1287     330,   330,   330,   331,   331,   331,   331,   332,   332,   332,
     1288     333,   333,   333,   333,   334,   334,   334,   335,   335,   335,
     1289     335,   336,   336,   337,   337,   337,   338,   338,   339,   339,
     1290     340,   340,   340,   341,   341,   341,   341,   341,   342,   342,
     1291     342,   342,   343,   343,   343,   344,   344,   344,   345,   345,
     1292     345,   345,   346,   346,   346,   347,   347,   347,   347,   347,
     1293     348,   348,   348,   348,   349,   349,   349,   350,   350,   350,
     1294     351,   351,   351,   351,   351,   351,   352,   352,   352,   353,
     1295     353,   353,   353,   353,   354,   354,   354,   354,   355,   355,
     1296     356,   356,   356,   357,   357,   358,   358,   358,   358,   358,
     1297     358,   359,   359,   359,   359,   359,   359,   359,   359,   359,
     1298     359,   360,   360,   360,   360,   361,   361,   361,   362,   362,
     1299     363,   363,   363,   363,   363,   363,   364,   364,   364,   364,
     1300     364,   364,   365,   366,   366,   366,   367,   367,   368,   368
    12811301};
    12821302
     
    12871307       1,     1,     1,     1,     1,     1,     2,     1,     1,     3,
    12881308       3,     1,     6,     4,     3,     7,     3,     7,     2,     2,
    1289        7,     1,     3,     0,     1,     3,     7,     9,     1,     3,
    1290        1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
    1291        2,     2,     2,     2,     2,     4,     1,     4,     4,     2,
    1292        4,     2,     1,     1,     1,     1,     1,     4,     4,     1,
    1293        3,     3,     3,     1,     3,     3,     1,     3,     3,     1,
    1294        3,     3,     3,     3,     1,     3,     3,     1,     3,     1,
    1295        3,     1,     3,     1,     3,     1,     3,     1,     5,     4,
    1296        5,     1,     1,     3,     3,     2,     0,     1,     2,     5,
    1297        6,     7,     1,     3,     1,     1,     1,     1,     1,     1,
    1298        1,     1,     1,     1,     1,     3,     0,     1,     1,     1,
    1299        1,     1,     1,     1,     1,     1,     4,     2,     7,     1,
    1300        3,     1,     2,     1,     2,     1,     2,     2,     5,     7,
    1301        5,     9,     5,     9,     1,     3,     1,     1,     3,     3,
    1302        2,     1,     2,     2,     0,     1,     2,     3,     0,     1,
    1303        2,     3,     3,     4,     0,     1,     1,     2,     5,     7,
    1304        6,     6,     4,     3,     4,     2,     3,     2,     3,     3,
    1305        3,     2,     3,     3,     4,     1,     5,     6,     9,    10,
    1306        2,     1,     2,     2,     2,     1,     6,     8,    10,    12,
    1307       14,     0,     1,     0,     1,     1,     3,     4,     7,     0,
    1308        1,     3,     1,     3,     1,     1,     1,     3,     1,     1,
    1309        1,     3,     0,     1,     3,     4,     1,     3,     1,     1,
    1310        3,     3,     3,     3,     3,     2,     3,     6,     3,     3,
    1311        4,     1,     2,     2,     3,     5,     8,     7,     7,     5,
    1312        9,     2,     2,     5,     3,     5,     4,     3,     4,     4,
    1313        7,     3,     3,     3,     3,     4,     6,     1,     1,     1,
    1314        1,     1,     1,     1,     1,     0,     1,     1,     2,     1,
    1315        1,     1,     1,     1,     1,     1,     0,     5,     1,     2,
    1316        3,     1,     2,     1,     1,     1,     1,     1,     1,     1,
     1309       7,     4,     1,     3,     0,     1,     3,     7,     9,     1,
     1310       3,     1,     3,     7,     3,     7,     1,     1,     1,     2,
     1311       2,     2,     2,     2,     2,     2,     4,     1,     4,     4,
     1312       2,     4,     2,     1,     1,     1,     1,     1,     4,     4,
     1313       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
     1314       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
     1315       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
     1316       4,     5,     1,     1,     3,     3,     2,     0,     1,     2,
     1317       5,     6,     7,     1,     3,     1,     1,     1,     1,     1,
     1318       1,     1,     1,     1,     1,     1,     3,     0,     1,     1,
     1319       1,     1,     1,     1,     1,     1,     1,     6,     4,     2,
     1320       7,     1,     3,     1,     2,     1,     2,     1,     2,     2,
     1321       5,     7,     5,     9,     5,     9,     1,     3,     1,     1,
     1322       3,     3,     2,     1,     2,     2,     0,     1,     2,     3,
     1323       0,     1,     2,     3,     3,     4,     0,     1,     1,     2,
     1324       5,     7,     6,     6,     4,     3,     4,     2,     3,     2,
     1325       3,     3,     3,     3,     5,     3,     3,     4,     1,     5,
     1326       6,     5,     6,     9,    10,     9,    10,     2,     1,     2,
     1327       2,     2,     1,     6,     8,    10,    12,    14,     0,     1,
     1328       0,     1,     1,     3,     4,     7,     0,     1,     3,     1,
     1329       3,     1,     1,     1,     3,     1,     1,     1,     3,     0,
     1330       1,     3,     4,     1,     3,     1,     1,     3,     3,     3,
     1331       3,     3,     2,     3,     6,     3,     3,     4,     1,     2,
     1332       2,     3,     5,     8,     7,     7,     5,     9,     2,     2,
     1333       5,     3,     5,     4,     3,     4,     4,     7,     3,     3,
     1334       3,     3,     4,     6,     1,     1,     1,     1,     1,     1,
     1335       1,     1,     0,     1,     1,     2,     1,     1,     1,     1,
     1336       1,     1,     1,     0,     5,     1,     2,     3,     1,     2,
    13171337       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
    1318        1,     1,     1,     1,     1,     2,     2,     3,     3,     1,
    1319        3,     1,     2,     2,     2,     4,     4,     4,     4,     1,
    1320        2,     2,     3,     1,     2,     2,     1,     2,     2,     3,
    1321        1,     2,     2,     1,     1,     4,     2,     5,     7,     2,
    1322        2,     2,     1,     2,     2,     3,     2,     3,     1,     2,
    1323        3,     2,     2,     4,     0,     1,     2,     2,     1,     0,
    1324        1,     2,     2,     5,     6,     2,     2,     4,     0,     2,
    1325        0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
    1326        9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
    1327        5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
    1328        1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
    1329        1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
    1330        1,     1,     2,     0,     2,     1,     4,     1,     2,     3,
    1331        4,     2,     2,     1,     2,     1,     2,     5,     5,     7,
    1332        6,     1,     2,     2,     3,     1,     2,     2,     4,     2,
    1333        4,     0,     4,     2,     1,     1,     1,     0,     2,     5,
    1334        5,    13,     1,     1,     3,     3,     2,     3,     3,     2,
    1335        4,     1,     6,     9,     0,    11,     1,     3,     3,     3,
    1336        1,     1,     5,     2,     5,     0,     1,     1,     3,     0,
    1337        1,     1,     1,     1,     0,     6,     2,     1,     2,     4,
    1338        2,     3,     3,     3,     4,     5,     5,     5,     6,     1,
    1339        1,     1,     3,     0,     5,     0,     1,     1,     2,     6,
    1340        1,     3,     0,     1,     4,     1,     1,     1,     1,     2,
    1341        1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
    1342        4,     3,     8,     3,     2,     1,     2,     6,     8,     3,
    1343        2,     3,     3,     4,     4,     3,     1,     1,     1,     4,
    1344        6,     3,     2,     3,     3,     4,     4,     3,     2,     1,
     1338       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
     1339       1,     1,     2,     2,     3,     3,     1,     3,     1,     2,
     1340       2,     2,     4,     4,     4,     4,     1,     2,     2,     3,
     1341       1,     2,     2,     1,     2,     2,     3,     1,     2,     2,
     1342       1,     1,     4,     2,     5,     7,     2,     2,     2,     1,
     1343       2,     2,     3,     2,     3,     1,     2,     3,     2,     2,
     1344       4,     0,     1,     2,     2,     1,     0,     1,     2,     2,
     1345       5,     6,     2,     2,     4,     0,     2,     0,     1,     1,
     1346       1,     5,     5,     5,     1,     5,     5,     9,     1,     5,
     1347       0,     1,     1,     5,     1,     1,     5,     5,     1,     3,
     1348       3,     4,     1,     1,     1,     1,     2,     1,     3,     3,
     1349       1,     2,     1,     3,     1,     1,     1,     1,     1,     1,
     1350       1,     1,     1,     1,     1,     2,     1,     1,     1,     2,
     1351       0,     2,     2,     1,     4,     0,     1,     2,     3,     4,
     1352       2,     2,     1,     2,     1,     2,     5,     5,     7,     6,
     1353       1,     2,     2,     3,     1,     2,     2,     4,     2,     4,
     1354       0,     4,     2,     1,     1,     1,     0,     2,     5,     5,
     1355      13,     1,     1,     3,     3,     2,     3,     3,     2,     4,
     1356       1,     6,     9,     0,    11,     1,     3,     3,     3,     1,
     1357       1,     5,     2,     5,     0,     1,     1,     3,     0,     1,
     1358       1,     1,     1,     0,     6,     2,     1,     2,     4,     2,
     1359       3,     3,     3,     4,     5,     5,     5,     6,     1,     1,
     1360       1,     3,     0,     5,     0,     1,     1,     2,     6,     1,
     1361       3,     0,     1,     4,     1,     1,     1,     1,     2,     1,
    13451362       2,     2,     1,     3,     2,     3,     3,     2,     4,     4,
    1346        3,     6,     8,     3,     2,     1,     2,     2,     2,     3,
    1347        3,     2,     4,     4,     3,     6,     8,     3,     2,     1,
    1348        2,     2,     1,     1,     2,     3,     3,     2,     4,     6,
    1349        8,     1,     2,     2,     1,     2,     2,     3,     3,     1,
    1350        4,     4,     3,     5,     8,     3,     2,     3,     1,     5,
    1351        5,     6,     6,     1,     2,     2,     1,     2,     2,     3,
    1352        3,     1,     4,     4,     3,     5,     8,     3,     1,     2,
    1353        1,     2,     6,     5,     6,     7,     7,     1,     2,     2,
    1354        1,     2,     2,     3,     3,     1,     4,     4,     3,     8,
    1355        3,     1,     1,     2,     1,     1,     2,     3,     2,     3,
    1356        2,     3,     3,     2,     4,     3,     2,     3,     2,     4,
    1357        3,     2,     6,     6,     6,     7,     1,     2,     1,     1,
    1358        1,     2,     3,     2,     3,     2,     3,     3,     4,     2,
    1359        3,     4,     2,     5,     5,     6,     6,     0,     1,     0,
    1360        2
     1363       3,     8,     3,     2,     1,     2,     6,     8,     3,     2,
     1364       3,     3,     4,     4,     3,     1,     1,     1,     4,     6,
     1365       3,     2,     3,     3,     4,     4,     3,     2,     1,     2,
     1366       2,     1,     3,     2,     3,     3,     2,     4,     4,     3,
     1367       6,     8,     3,     2,     1,     2,     2,     2,     3,     3,
     1368       2,     4,     4,     3,     6,     8,     3,     2,     1,     2,
     1369       2,     1,     1,     2,     3,     3,     2,     4,     6,     8,
     1370       1,     2,     2,     1,     2,     2,     3,     3,     1,     4,
     1371       4,     3,     5,     8,     3,     2,     3,     1,     5,     5,
     1372       6,     6,     1,     2,     2,     1,     2,     2,     3,     3,
     1373       1,     4,     4,     3,     5,     8,     3,     1,     2,     1,
     1374       2,     6,     5,     6,     7,     7,     1,     2,     2,     1,
     1375       2,     2,     3,     3,     1,     4,     4,     3,     8,     3,
     1376       1,     1,     2,     1,     1,     2,     3,     2,     3,     2,
     1377       3,     3,     2,     4,     3,     2,     3,     2,     4,     3,
     1378       2,     6,     6,     6,     7,     1,     2,     1,     1,     1,
     1379       2,     3,     2,     3,     2,     3,     3,     4,     2,     3,
     1380       4,     2,     5,     5,     6,     6,     0,     1,     0,     2
    13611381};
    13621382
     
    13661386static const yytype_uint16 yydefact[] =
    13671387{
    1368      285,   285,   306,   304,   307,   305,   308,   309,   291,   293,
    1369      292,     0,   294,   320,   312,   317,   315,   316,   314,   313,
    1370      318,   319,   321,   322,   323,   535,   535,   535,     0,     0,
    1371        0,   285,   211,   295,   310,   311,     7,   350,     0,     8,
    1372       13,    14,     0,     2,   285,   553,     9,   513,   511,   238,
    1373        3,   443,     3,   251,     0,     3,     3,     3,   239,     3,
    1374        0,     0,     0,   286,   287,   289,   285,   298,   301,   303,
    1375      331,   277,   324,   329,   278,   339,   279,   346,   343,   353,
    1376        0,     0,   354,   280,   461,   465,     3,     3,     0,     2,
    1377      507,   512,   517,   290,     0,     0,   535,   565,   535,     2,
    1378      576,   577,   578,   285,     0,   719,   720,     0,    12,   285,
    1379        0,   261,   262,     0,   286,   281,   282,   283,   284,   514,
    1380      296,   382,   536,   537,   360,   361,    12,   434,   435,    11,
    1381      430,   433,     0,   491,   486,   477,   434,   435,     0,     0,
    1382      516,   212,     0,   285,     0,     0,     0,     0,     0,     0,
    1383        0,     0,   285,   285,     2,     0,   721,   286,   570,   582,
    1384      725,   718,   716,   723,     0,     0,   245,     2,     0,   520,
    1385      428,   429,   427,     0,     0,     0,     0,   535,     0,   622,
    1386      623,     0,     0,   533,   529,   535,   550,   535,   535,   530,
    1387        2,   531,   535,   589,   535,   535,   592,     0,     0,     0,
    1388      285,   285,   304,   351,     2,   285,   252,   288,   299,   332,
    1389      344,   466,     0,     2,     0,   443,   253,   286,   325,   340,
    1390      347,   462,     0,     2,     0,   302,   326,   333,   334,     0,
    1391      341,   345,   348,   352,   435,   285,   285,   356,   359,     0,
    1392      385,   463,   467,     0,     0,     0,     1,   285,     2,   518,
    1393      564,   566,   285,     2,   729,   286,   732,   533,   533,   286,
    1394        0,     0,     0,   264,   535,   530,     2,   285,     0,     0,
    1395      285,   538,     2,   489,     2,   542,     0,     0,     0,     0,
    1396        0,    17,    56,     4,     5,     6,    15,     0,     0,     0,
    1397      285,     2,     0,   285,    62,    63,    64,    65,    46,    18,
    1398       47,    21,    45,    66,     0,    69,    73,    76,    79,    84,
    1399       87,    89,    91,    93,    95,    97,   102,   483,   739,   441,
    1400      482,     0,   439,   440,     0,   554,   569,   572,   575,   581,
    1401      584,   587,   350,     0,     2,   727,     0,   285,   730,     2,
    1402      285,     3,   415,     0,   423,   286,   285,   298,   324,   278,
    1403      339,   346,     3,     3,   397,   401,   411,   416,   461,   285,
    1404      417,   694,   695,   285,   418,   420,   285,     2,   571,   583,
    1405      717,     2,     2,   240,     2,     0,     0,   445,   444,   137,
    1406        2,     2,   242,     2,     2,   241,     2,   272,     2,   273,
    1407        0,   271,     0,     0,     0,     0,     0,     0,     0,     0,
    1408        0,   555,   594,     0,   443,     2,   549,   558,   648,   551,
    1409      552,   521,   285,     2,   588,   597,   590,   591,     0,   267,
    1410      285,   285,   330,   286,     0,   286,     0,   285,   722,   726,
    1411      724,   522,   285,   533,   246,   254,   300,     0,     2,   523,
    1412      285,   487,   327,   328,   274,   342,   349,     0,   285,     2,
    1413      374,   285,   362,     0,     0,   368,   716,   285,   737,   388,
    1414        0,   464,   488,   243,   244,   508,   285,   425,     0,   285,
    1415      228,     0,     2,   230,     0,   286,     0,   248,     2,   249,
    1416      269,     0,     0,     2,   285,   533,   285,   474,   476,   475,
    1417        0,     0,   739,     0,   285,     0,   285,   478,   285,   548,
    1418      546,   547,   545,     0,   540,   543,     0,     0,   285,    54,
    1419       66,    50,   285,    59,   285,   285,    48,    49,    61,     2,
    1420      124,     0,     0,   437,     0,   436,   108,   285,    52,    53,
    1421       16,     0,    28,    29,    33,     2,     0,   114,   115,   116,
    1422      117,   118,   119,   120,   121,   122,   123,     0,     0,    51,
     1388     292,   292,   313,   311,   314,   312,   315,   316,   298,   300,
     1389     299,     0,   301,   327,   319,   324,   322,   323,   321,   320,
     1390     325,   326,   328,   329,   330,   544,   544,   544,     0,     0,
     1391       0,   292,   218,   302,   317,   318,     7,   357,     0,     8,
     1392      13,    14,     0,     2,   292,   562,     9,   522,   520,   245,
     1393       3,   450,     3,   258,     0,     3,     3,     3,   246,     3,
     1394       0,     0,     0,   293,   294,   296,   292,   305,   308,   310,
     1395     338,   284,   331,   336,   285,   346,   286,   353,   350,   360,
     1396       0,     0,   361,   287,   470,   474,     3,     3,     0,     2,
     1397     516,   521,   526,   297,     0,     0,   544,   574,   544,     2,
     1398     585,   586,   587,   292,     0,   728,   729,     0,    12,   292,
     1399       0,   268,   269,     0,   293,   288,   289,   290,   291,   523,
     1400     303,   389,   545,   546,   367,   368,    12,   441,   442,    11,
     1401     437,   440,     0,   500,   495,   486,   441,   442,     0,     0,
     1402     525,   219,     0,   292,     0,     0,     0,     0,     0,     0,
     1403       0,     0,   292,   292,     2,     0,   730,   293,   579,   591,
     1404     734,   727,   725,   732,     0,     0,     0,   252,     2,     0,
     1405     529,   435,   436,   434,     0,     0,     0,     0,   544,     0,
     1406     631,   632,     0,     0,   542,   538,   544,   559,   544,   544,
     1407     539,     2,   540,   544,   598,   544,   544,   601,     0,     0,
     1408       0,   292,   292,   311,   358,     2,   292,   259,   295,   306,
     1409     339,   351,   475,     0,     2,     0,   450,   260,   293,   332,
     1410     347,   354,   471,     0,     2,     0,   309,   333,   340,   341,
     1411       0,   348,   352,   355,   359,   442,   292,   292,   363,   366,
     1412       0,   392,   472,   476,     0,     0,     0,     1,   292,     2,
     1413     527,   573,   575,   292,     2,   738,   293,   741,   542,   542,
     1414     293,     0,     0,     0,   271,   544,   539,     2,   292,     0,
     1415       0,   292,   547,     2,   498,     2,   551,     0,     0,     0,
     1416       0,     0,    17,    57,     4,     5,     6,    15,     0,     0,
     1417       0,   292,     2,     0,   292,    63,    64,    65,    66,    47,
     1418      18,    48,    21,    46,    67,     0,    70,    74,    77,    80,
     1419      85,    88,    90,    92,    94,    96,    98,   103,   492,   748,
     1420     448,   491,     0,   446,   447,     0,   563,   578,   581,   584,
     1421     590,   593,   596,   357,     0,     2,   736,     0,   292,   739,
     1422       2,   292,     3,   422,     0,   430,   293,   292,   305,   331,
     1423     285,   346,   353,     3,     3,   404,   408,   418,   423,   470,
     1424     292,   424,   703,   704,   292,   425,   427,   292,     2,   580,
     1425     592,   726,     2,     2,   247,     2,   455,     0,   453,   452,
     1426     451,   139,     2,     2,   249,     2,     2,   248,     2,   279,
     1427       2,   280,     0,   278,     0,     0,     0,     0,     0,     0,
     1428       0,     0,     0,   564,   603,     0,   450,     2,   558,   567,
     1429     657,   560,   561,   530,   292,     2,   597,   606,   599,   600,
     1430       0,   274,   292,   292,   337,   293,     0,   293,     0,   292,
     1431     731,   735,   733,   531,   292,   542,   253,   261,   307,     0,
     1432       2,   532,   292,   496,   334,   335,   281,   349,   356,     0,
     1433     292,     2,   381,   292,   369,     0,     0,   375,   725,   292,
     1434     746,   395,     0,   473,   497,   250,   251,   517,   292,   432,
     1435       0,   292,   235,     0,     2,   237,     0,   293,     0,   255,
     1436       2,   256,   276,     0,     0,     2,   292,   542,   292,   483,
     1437     485,   484,     0,     0,   748,     0,   292,     0,   292,   487,
     1438     292,   557,   555,   556,   554,     0,   549,   552,     0,     0,
     1439     292,    55,    67,    51,   292,    60,   292,   292,    49,    50,
     1440      62,     2,   125,     0,     0,   444,     0,   443,   109,   292,
     1441      53,    54,    16,     0,    28,    29,    34,     2,     0,    34,
     1442     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
     1443       0,     0,    52,     0,     0,     0,     0,     0,     0,     0,
    14231444       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1424        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    1425      105,     2,   634,   442,   631,   535,   535,   639,   468,   285,
    1426        2,   573,   574,     0,   585,   586,     0,     2,   728,   731,
    1427      108,   285,     2,   285,     0,   696,   286,   700,   691,   692,
    1428      698,     0,     2,     2,   656,   535,   739,   605,   535,   535,
    1429      739,   535,   619,   535,   535,   670,   424,   653,   535,   535,
    1430      661,   668,   285,   419,   286,     0,     0,   285,   706,   286,
    1431      711,   739,   703,   285,   708,   739,   285,   285,   285,     0,
    1432      108,     0,    17,     5,     2,     0,     0,   447,   737,     0,
    1433        0,   453,   232,     0,   285,     0,     0,     0,   533,   557,
    1434      561,   563,   593,   596,   600,   603,   556,   595,     0,   275,
    1435      646,     0,   285,   268,     0,     0,     0,     0,   266,     2,
    1436        0,   250,   524,   285,     0,     0,     0,     0,   285,   285,
    1437        0,     0,   680,   372,   375,   379,   535,   379,   685,   378,
    1438      677,   535,   535,   355,   363,   371,   364,   535,   366,   369,
    1439      285,   738,     0,     0,   386,   737,   286,     3,   404,     3,
    1440      408,   407,   579,     0,   519,   285,     3,     3,   285,   423,
    1441      286,     3,   417,   418,     2,     0,     0,     0,   473,   297,
    1442      285,   469,   471,     3,     2,     2,     0,   490,     3,     0,
    1443      542,   126,     0,     0,   213,     0,     0,     2,     0,     0,
    1444       34,     0,     0,   108,   285,    19,     0,    20,     0,   680,
    1445      438,     0,   106,     3,     2,    26,     2,     0,    31,     0,
    1446        2,    24,   103,   104,    70,    71,    72,    74,    75,    77,
    1447       78,    82,    83,    80,    81,    85,    86,    88,    90,    92,
    1448       94,    96,     0,     0,   740,   285,     0,     0,     0,   635,
    1449      636,   632,   633,   485,   484,   285,     0,     3,   285,   702,
    1450      285,   707,   286,   285,   285,   285,   650,   693,   649,     2,
    1451      285,     0,     0,     0,     0,     0,     0,     0,     0,   671,
    1452        0,   657,   608,   624,   658,     2,   604,   611,   421,   606,
    1453      607,   422,     2,   618,   627,   620,   621,   654,   655,   669,
    1454      697,   701,   699,   739,   259,     2,   733,     2,   412,   705,
    1455      710,   413,     0,   391,     3,     3,     3,     3,   443,     3,
    1456        0,     2,   456,   452,   738,     0,   448,   455,     2,   451,
    1457      454,     0,   285,   233,   255,     3,   263,   265,     0,   443,
    1458        2,   559,   560,     2,   598,   599,     0,   647,   525,     3,
    1459      336,   335,   338,   337,   285,   526,     0,   527,   285,   365,
    1460      367,     2,     0,     0,     0,     0,   101,   381,   681,   682,
    1461      376,   380,   377,   678,   679,   370,   374,   357,   388,   383,
    1462      389,     0,     0,     0,   426,   231,     0,     0,     3,     2,
    1463      656,   419,     0,   515,     0,   739,   477,     0,   285,   285,
    1464      285,     0,   539,   541,   127,     0,     0,   206,     0,     0,
    1465        0,   214,   215,    55,    60,   285,     0,    58,    57,     0,
    1466      125,   681,     0,    67,    68,   107,   112,     3,   106,     0,
    1467        0,     0,    23,    33,     3,     0,    99,     0,     3,   638,
    1468      642,   645,   637,     3,   580,     3,   704,   709,     2,   285,
    1469        3,     3,   286,     0,     3,   610,   614,   617,   626,   660,
    1470      664,   667,   285,     3,   609,   625,   659,   285,   285,   414,
    1471      285,   285,   734,     0,     0,     0,     0,   247,     0,   101,
    1472        0,     3,     3,     0,   449,     0,   446,     0,     0,   236,
    1473      285,     0,     0,   126,     0,     0,     0,     0,     0,   126,
    1474        0,     0,     0,     2,     0,     0,     3,   128,   129,     2,
    1475      139,   130,   131,   132,   133,   134,   135,   141,   143,     0,
    1476        0,     0,   276,   285,   285,   535,     0,   528,   285,   108,
    1477      684,   688,   690,   683,   373,   387,   384,   567,     2,   652,
    1478      651,     0,   657,     2,   470,   472,   492,     3,   500,   501,
    1479        0,     2,   496,     3,     3,     0,     0,   544,   213,     0,
    1480        0,     0,   213,     0,     3,    35,   737,   106,     0,     3,
    1481      649,    40,     3,    38,     3,    32,     0,     3,    98,   100,
    1482        0,     2,   640,   641,     0,     0,   285,     0,     0,     0,
    1483        3,   626,     0,     2,   612,   613,     2,   628,     2,   662,
    1484      663,     0,     0,     3,     0,     3,     3,     3,     3,   399,
    1485      398,   402,     2,     2,   736,   735,   109,     0,     0,     0,
    1486        0,     3,   450,     3,     0,   234,   142,     3,   286,   285,
    1487        0,     0,     0,     0,     2,   187,     0,   185,     0,     0,
    1488        0,     0,     0,     0,   191,     0,   108,   535,   147,   144,
    1489      285,     0,     0,   258,   270,     3,     3,   534,   601,   358,
    1490        2,   686,   687,   285,   257,   285,     0,   503,   480,   285,
    1491        0,     0,   479,   494,     0,     0,     0,   207,     0,   216,
    1492      106,     0,     0,   113,   110,     0,     0,     0,     0,     0,
    1493        0,    22,     0,   643,   285,   568,   256,   712,   713,   714,
    1494        0,   665,   285,   285,   285,     3,     3,     0,   673,     0,
    1495        0,     0,     0,   285,   285,     3,   532,   457,   458,     0,
    1496        0,   237,   286,     0,     0,     0,     0,   285,   188,   186,
    1497        0,   183,   189,     0,     0,     0,   192,   195,   193,   190,
    1498      126,   140,   138,   235,     0,     0,   285,   406,   410,   409,
    1499        0,   497,     2,   498,     2,   499,   493,   285,   219,     0,
    1500      217,     0,   219,     3,   649,    30,   111,     2,    43,     2,
    1501       41,    39,    27,   109,    25,     3,   715,     3,     3,     3,
    1502        0,     0,   672,   674,   615,   629,   260,     2,   396,     3,
    1503      395,     0,   460,   457,   126,     0,     0,   126,     3,     0,
    1504      126,   184,     0,     2,   200,   194,     0,   136,   562,   602,
    1505        3,     2,     0,     0,     2,   220,     0,     0,   208,     0,
    1506        0,     0,     0,     0,     0,     0,     0,     0,   675,   676,
    1507      285,     0,   459,   148,     0,     0,     2,   161,   126,   150,
    1508        0,   178,     0,   126,     0,     2,   152,     0,     2,     2,
    1509        0,   285,   502,   504,   495,     0,     0,     0,     0,   111,
    1510       36,     3,     3,   644,   616,   630,   666,   400,   126,   154,
    1511      157,     0,   156,   160,     3,   163,   162,     0,   126,   180,
    1512      126,     3,     0,   285,     0,     2,   689,     2,   221,   222,
    1513        0,   218,   209,     0,     0,     0,   149,     0,     0,   159,
    1514      224,   164,     2,   226,   179,     0,   182,   168,   196,     3,
    1515      201,   205,     0,   285,     0,     0,     0,    37,    44,    42,
    1516      155,   158,   126,     0,   165,   285,   126,   126,     0,   169,
    1517        0,     0,   680,   202,   203,   204,   197,     3,   285,   210,
    1518      223,   145,   166,   151,   126,   227,   181,   176,   174,   170,
    1519      153,   126,     0,   681,     0,     0,   146,   167,   177,   171,
    1520      175,   174,   172,     3,     0,   481,   173,   198,     3,   199
     1445       0,     0,     0,   106,     2,   643,   449,   640,   544,   544,
     1446     648,   477,   292,     2,   582,   583,     0,   594,   595,     0,
     1447       2,   737,   740,   109,   292,     2,   292,     0,   705,   293,
     1448     709,   700,   701,   707,     0,     2,     2,   665,   544,   748,
     1449     614,   544,   544,   748,   544,   628,   544,   544,   679,   431,
     1450     662,   544,   544,   670,   677,   292,   426,   293,     0,     0,
     1451     292,   715,   293,   720,   748,   712,   292,   717,   748,   292,
     1452     292,   292,     0,   109,     0,    17,     5,     2,     0,     0,
     1453     456,   746,     0,     0,   462,   239,     0,   292,     0,     0,
     1454       0,   542,   566,   570,   572,   602,   605,   609,   612,   565,
     1455     604,     0,   282,   655,     0,   292,   275,     0,     0,     0,
     1456       0,   273,     2,     0,   257,   533,   292,     0,     0,     0,
     1457       0,   292,   292,     0,     0,   689,   379,   382,   386,   544,
     1458     386,   694,   385,   686,   544,   544,   362,   370,   378,   371,
     1459     544,   373,   376,   292,   747,     0,     0,   393,   746,   293,
     1460       3,   411,     3,   415,   414,   588,     0,   528,   292,     3,
     1461       3,   292,   430,   293,     3,   424,   425,     2,     0,     0,
     1462       0,   482,   304,   292,   478,   480,     3,     2,     2,     0,
     1463     499,     3,     0,   551,   127,     0,     0,   220,     0,     0,
     1464       2,     0,     0,    35,     0,     0,   109,   292,    19,     0,
     1465      20,     0,   689,   445,     0,   107,     3,     2,    26,     2,
     1466       0,    32,     0,     2,    24,     0,   104,   105,    71,    72,
     1467      73,    75,    76,    78,    79,    83,    84,    81,    82,    86,
     1468      87,    89,    91,    93,    95,    97,     0,     0,   749,   292,
     1469       0,     0,     0,   644,   645,   641,   642,   494,   493,   292,
     1470       0,     3,   292,   711,   292,   716,   293,   292,   292,   292,
     1471     659,   702,   658,     2,   292,     0,     0,     0,     0,     0,
     1472       0,     0,     0,   680,     0,   666,   617,   633,   667,     2,
     1473     613,   620,   428,   615,   616,   429,     2,   627,   636,   629,
     1474     630,   663,   664,   678,   706,   710,   708,   748,   266,     2,
     1475     742,     2,   419,   714,   719,   420,     0,   398,     3,     3,
     1476       3,     3,   450,     3,     0,     2,   465,   461,   747,     0,
     1477     457,   464,     2,   460,   463,     0,   292,   240,   262,     3,
     1478     270,   272,     0,   450,     2,   568,   569,     2,   607,   608,
     1479       0,   656,   534,     3,   343,   342,   345,   344,   292,   535,
     1480       0,   536,   292,   372,   374,     2,     0,     0,     0,     0,
     1481     102,   388,   690,   691,   383,   387,   384,   687,   688,   377,
     1482     381,   364,   395,   390,   396,     0,     0,     0,   433,   238,
     1483       0,     0,     3,     2,   665,   426,     0,   524,     0,   748,
     1484     486,     0,   292,   292,   292,     0,   548,   550,   128,     0,
     1485       0,   213,     0,     0,     0,   221,   222,    56,    61,   292,
     1486       0,    59,    58,     0,   126,   690,   455,    68,    69,   108,
     1487     113,     3,   107,     0,     0,     0,    23,    34,     3,     0,
     1488      31,   100,     0,     3,   647,   651,   654,   646,     3,   589,
     1489       3,   713,   718,     2,   292,     3,     3,   293,     0,     3,
     1490     619,   623,   626,   635,   669,   673,   676,   292,     3,   618,
     1491     634,   668,   292,   292,   421,   292,   292,   743,     0,     0,
     1492       0,     0,   254,     0,   102,     0,     3,     3,     0,   458,
     1493       0,   454,     0,     0,   243,   292,     0,     0,   127,     0,
     1494       0,     0,     0,     0,   127,     0,     0,   107,   107,     2,
     1495       0,     0,     0,     3,   129,   130,     2,   141,   131,   132,
     1496     133,   134,   135,   136,   143,   145,     0,     0,     0,   283,
     1497     292,   292,   544,     0,   537,   292,   109,   693,   697,   699,
     1498     692,   380,   394,   391,   576,     2,   661,   660,     0,   666,
     1499       2,   479,   481,   501,     3,   509,   510,     0,     2,   505,
     1500       3,     3,     0,     0,   553,   220,     0,     0,     0,   220,
     1501       0,     3,    36,   746,   107,     0,     3,   658,    41,     3,
     1502      39,     3,    33,     0,     3,    99,   101,     0,     2,   649,
     1503     650,     0,     0,   292,     0,     0,     0,     3,   635,     0,
     1504       2,   621,   622,     2,   637,     2,   671,   672,     0,     0,
     1505       3,     0,     3,     3,     3,     3,   406,   405,   409,     2,
     1506       2,   745,   744,   110,     0,     0,     0,     0,     3,   459,
     1507       3,     0,   241,   144,     3,   293,   292,     0,     0,     0,
     1508       0,     2,   189,     0,   187,     0,     0,     0,     0,     0,
     1509       0,     0,     0,   109,     0,   544,   149,   146,   292,     0,
     1510       0,   265,   277,     3,     3,   543,   610,   365,     2,   695,
     1511     696,   292,   264,   292,     0,   512,   489,   292,     0,     0,
     1512     488,   503,     0,     0,     0,   214,     0,   223,   107,     0,
     1513       0,   114,   111,     0,     0,     0,     0,     0,     0,    22,
     1514       0,   652,   292,   577,   263,   721,   722,   723,     0,   674,
     1515     292,   292,   292,     3,     3,     0,   682,     0,     0,     0,
     1516       0,   292,   292,     3,   541,   466,   467,     0,     0,   244,
     1517     293,     0,     0,     0,     0,   292,   190,   188,     0,   185,
     1518     191,     0,     0,     0,     0,   195,   198,   196,   192,     0,
     1519     193,    34,   127,   142,   140,   242,     0,     0,   292,   413,
     1520     417,   416,     0,   506,     2,   507,     2,   508,   502,   292,
     1521     226,     0,   224,     0,   226,     3,   658,    30,   112,     2,
     1522      44,     2,    42,    40,    27,   110,    25,     3,   724,     3,
     1523       3,     3,     0,     0,   681,   683,   624,   638,   267,     2,
     1524     403,     3,   402,     0,   469,   466,   127,     0,     0,   127,
     1525       3,     0,   127,   186,     0,     2,     2,   207,   197,     0,
     1526       0,     0,     0,   138,   571,   611,     3,     2,     0,     0,
     1527       2,   227,     0,     0,   215,     0,     0,     0,     0,     0,
     1528       0,     0,     0,     0,   684,   685,   292,     0,   468,   150,
     1529       0,     0,     2,   163,   127,   152,     0,   180,     0,   127,
     1530       0,     2,   154,     0,     2,     0,     2,     2,     2,   194,
     1531      31,     0,   292,   511,   513,   504,     0,     0,     0,     0,
     1532     112,    37,     3,     3,   653,   625,   639,   675,   407,   127,
     1533     156,   159,     0,   158,   162,     3,   165,   164,     0,   127,
     1534     182,   127,     3,     0,   292,     0,   292,     0,     2,     0,
     1535       2,   137,   698,     2,   228,   229,     0,   225,   216,     0,
     1536       0,     0,   151,     0,     0,   161,   231,   166,     2,   233,
     1537     181,     0,   184,   170,   199,     3,   208,   212,   201,     3,
     1538       0,   292,     0,   292,     0,     0,     0,    38,    45,    43,
     1539     157,   160,   127,     0,   167,   292,   127,   127,     0,   171,
     1540       0,     0,   689,   209,   210,   211,     0,   200,     3,   202,
     1541       3,   292,   217,   230,   147,   168,   153,   127,   234,   183,
     1542     178,   176,   172,   155,   127,     0,   690,     0,     0,     0,
     1543       0,   148,   169,   179,   173,   177,   176,   174,     3,     3,
     1544       0,     0,   490,   175,   203,   205,     3,     3,   204,   206
    15211545};
    15221546
     
    15241548static const yytype_int16 yydefgoto[] =
    15251549{
    1526       -1,   830,   470,   298,    45,   130,   131,   299,   300,   301,
    1527      302,   777,   759,  1132,  1133,   303,   304,   305,   306,   307,
    1528      308,   309,   310,   311,   312,   313,   314,   315,   316,  1040,
    1529      520,   986,   318,   987,   548,   964,  1065,  1501,  1067,  1068,
    1530     1069,  1070,  1502,  1071,  1072,  1430,  1431,  1397,  1398,  1399,
    1531     1483,  1484,  1488,  1489,  1519,  1520,  1073,  1359,  1074,  1075,
    1532     1296,  1297,  1298,  1469,  1076,   142,   970,   971,   972,  1376,
    1533     1450,  1461,  1462,   471,   472,   892,   893,  1048,    48,    49,
    1534       50,    51,    52,   342,   155,    55,    56,    57,    58,    59,
    1535      344,    61,    62,   259,    64,    65,   270,   346,   347,    68,
    1536       69,    70,    71,   115,    73,   200,   349,   116,    76,   117,
    1537       78,    79,    80,   451,   452,   453,   454,   693,   930,   694,
    1538       81,    82,   458,   714,   872,   873,   352,   353,   717,   718,
    1539      719,   354,   355,   356,   357,   468,   336,   132,   133,   524,
    1540      320,   166,   647,   648,   649,   650,   651,    83,   118,    85,
    1541      491,   492,   956,   493,   273,   497,   321,    86,   134,   135,
    1542       87,  1317,  1111,  1112,  1113,  1114,    88,    89,   735,    90,
    1543      269,    91,    92,   183,  1042,   681,   406,   122,    93,   503,
    1544      504,   505,   184,   264,   186,   187,   188,   265,    96,    97,
    1545       98,    99,   100,   101,   102,   191,   192,   193,   194,   195,
    1546      842,   607,   608,   609,   610,   196,   612,   613,   614,   573,
    1547      574,   575,   576,   698,   103,   616,   617,   618,   619,   620,
    1548      621,   929,   700,   701,   702,   597,   360,   361,   362,   363,
    1549      322,   161,   105,   106,   107,   365,   712,   570
     1550      -1,   834,   472,   299,    45,   130,   131,   300,   301,   302,
     1551     303,   780,   781,  1139,  1140,   304,   305,   306,   307,   308,
     1552     309,   310,   311,   312,   313,   314,   315,   316,   317,  1045,
     1553     522,   990,   319,   991,   551,   968,  1072,  1534,  1074,  1075,
     1554    1076,  1077,  1535,  1078,  1079,  1451,  1452,  1413,  1414,  1415,
     1555    1513,  1514,  1518,  1519,  1554,  1555,  1080,  1371,  1081,  1082,
     1556    1305,  1306,  1307,  1495,  1083,   142,   974,   975,   976,  1392,
     1557    1476,  1487,  1488,   473,   474,   896,   897,  1053,    48,    49,
     1558      50,    51,    52,   343,   155,    55,    56,    57,    58,    59,
     1559     345,    61,    62,   260,    64,    65,   271,   347,   348,    68,
     1560      69,    70,    71,   115,    73,   201,   350,   116,    76,   117,
     1561      78,    79,    80,   453,   454,   455,   456,   696,   934,   697,
     1562      81,    82,   460,   717,   876,   877,   353,   354,   720,   721,
     1563     722,   355,   356,   357,   358,   470,   337,   132,   133,   526,
     1564     321,   167,   650,   651,   652,   653,   654,    83,   118,    85,
     1565     493,   494,   960,   495,   274,   499,   322,    86,   134,   135,
     1566      87,  1329,  1118,  1119,  1120,  1121,    88,    89,   738,    90,
     1567     270,    91,    92,   184,  1047,   684,   408,   122,    93,   505,
     1568     506,   507,   185,   265,   187,   188,   189,   266,    96,    97,
     1569      98,    99,   100,   101,   102,   192,   193,   194,   195,   196,
     1570     846,   610,   611,   612,   613,   197,   615,   616,   617,   576,
     1571     577,   578,   579,   701,   103,   619,   620,   621,   622,   623,
     1572     624,   933,   703,   704,   705,   600,   361,   362,   363,   364,
     1573     323,   161,   105,   106,   107,   366,   715,   573
    15501574};
    15511575
    15521576/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    15531577   STATE-NUM.  */
    1554 #define YYPACT_NINF -1318
     1578#define YYPACT_NINF -1362
    15551579static const yytype_int16 yypact[] =
    15561580{
    1557     4413,  9104, -1318,    42, -1318, -1318, -1318, -1318, -1318, -1318,
    1558    -1318,   -27, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1559    -1318, -1318, -1318, -1318, -1318,    95,    95,    95,   954,   850,
    1560       71,  5300,   201, -1318, -1318, -1318, -1318, -1318,   123, -1318,
    1561    -1318, -1318,   776,   164,  8401, -1318, -1318, -1318, -1318, -1318,
    1562    -1318,   226,   169, -1318,  1184, -1318, -1318, -1318, -1318,   272,
    1563     1531,   387,    89,  3759, -1318, -1318,  8469,  1998, -1318, -1318,
    1564    -1318,   935,   392,  5420,   741,  1183,   935,  1282, -1318, -1318,
    1565      356,   326, -1318,   935,  1429, -1318,   340, -1318,   453,   463,
    1566    -1318, -1318, -1318, -1318,   370,   169,    95, -1318,    95, -1318,
    1567    -1318, -1318, -1318,  9340,  1184, -1318, -1318,  1184, -1318,  9399,
    1568      389, -1318, -1318,  1617,  9458, -1318,  1087,  1087,  1087, -1318,
    1569    -1318, -1318,    95, -1318, -1318, -1318,   386,   435,   438, -1318,
    1570    -1318, -1318,   498, -1318, -1318, -1318, -1318, -1318,   510,   531,
    1571    -1318, -1318,    34,  7909,  1795,    48,   452,   575,   578,   583,
    1572      588,   593,  8673,  6319,   543,   605, -1318,  8537, -1318, -1318,
    1573    -1318, -1318,   652, -1318,   172,  5550, -1318,   473,   232, -1318,
    1574    -1318, -1318, -1318,   661,   301,   325,   403,    95,   646, -1318,
    1575    -1318,  1531,  2279,   739, -1318,    21, -1318,    95,    95,   169,
    1576    -1318, -1318,    35, -1318,    95,    95, -1318,  2781,   700,   710,
    1577     1087, 10200, -1318, -1318,   717,  8401, -1318, -1318,   935, -1318,
    1578    -1318, -1318,   169, -1318,  1184,   226, -1318,  7011, -1318,  1087,
    1579     1087,  1087,   169, -1318,   954, -1318,  3330, -1318, -1318,   704,
    1580     1087, -1318,  1087, -1318,   123,  7909,  9163,   736, -1318,   850,
    1581      769,  1087, -1318,   954,   737,   747, -1318,  5300,   814, -1318,
    1582    -1318, -1318,  2451, -1318, -1318,  3603, -1318,   739,    61,  9458,
    1583    10457,  1617,  2781, -1318,    68, -1318, -1318,  9399,  1184,   778,
    1584    11233, -1318, -1318,   428, -1318, 10968,   787,   870, 10685, 10742,
    1585    10799, -1318,   824, -1318, -1318, -1318, -1318, 10856, 10856,   814,
    1586     7591,   827, 10742,  8015, -1318, -1318, -1318, -1318, -1318, -1318,
    1587      874, -1318,   901,  2137, 10742, -1318,   237,   407,   632,   476,
    1588      638,   859,   855,   869,   890,   101, -1318, -1318,   877,   616,
    1589    -1318,   336, -1318, -1318,  1795, -1318, -1318,   518,   907, -1318,
    1590      633,   907,   892,   123, -1318, -1318,   914,  9340, -1318,   916,
    1591     7697, -1318, -1318,  1197,   771,  5233, 10200,   935, -1318,   935,
    1592     1087,  1087, -1318, -1318, -1318, -1318, -1318, -1318,  1087,  9517,
    1593     1184, -1318, -1318,  9576,  1658, -1318,  9222, -1318, -1318, -1318,
    1594    -1318, -1318, -1318, -1318,   924,  4543, 10742, -1318, -1318, -1318,
    1595    -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1596     1617, -1318,   676,   942,   945,   946,   690,   947,   948,   958,
    1597     2279, -1318, -1318,   952,   226,   957, -1318, -1318,   959, -1318,
    1598    -1318, -1318,  2451, -1318, -1318, -1318, -1318, -1318,  2781, -1318,
    1599     7909,  7909, -1318,  1087,  1617, 11261,  1184,  7402, -1318, -1318,
    1600    -1318, -1318,  2451,    61, -1318, -1318,   935,   169, -1318, -1318,
    1601     2451, -1318,  5128, -1318, -1318,  1087,  1087,   364,  9635,   960,
    1602     2086,  8865, -1318,   432,   454,   850, -1318,  9163,   955,   944,
    1603      850,  1087, -1318, -1318, -1318, -1318,  9936, -1318,   383,  7322,
    1604    -1318,   169,   962, -1318,  1617, 11043, 10514, -1318, -1318, -1318,
    1605    -1318,   755,  2781, -1318,  7467,   739,  6768, -1318, -1318, -1318,
    1606      885,   414,   877,   850, 11233,   619,  9399, -1318, 11233, -1318,
    1607    -1318, -1318, -1318,   479, -1318,   964,   870,   125,  7591, -1318,
    1608    -1318, -1318,  7591, -1318,  7803,  7591, -1318, -1318, -1318,   969,
    1609    -1318,   544,   972,   640,   974, -1318,  8741,  5983, -1318, -1318,
    1610    -1318,   103, -1318, -1318, 10571, -1318,   112, -1318, -1318, -1318,
    1611    -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10457, 10457, -1318,
    1612    10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742,
    1613    10742, 10742, 10742, 10742, 10742, 10742, 10742, 10742, 10343, 10457,
    1614    -1318,   616,   900, -1318, -1318,    95,    95, -1318, -1318,  7909,
    1615    -1318, -1318,   959,   814, -1318,   959, 10628, -1318, -1318, -1318,
    1616     8333,  5983,   973,  8121,   976, -1318,  9694, -1318, -1318,   652,
    1617    -1318,   978,   378,   980,  1782,   139,   877, -1318,    95,    95,
    1618      877,   166, -1318,    95,    95,   959, -1318, -1318,    95,    95,
    1619    -1318,   907,  9753,  1184, 11174,   137,   273,  9753, -1318,  4101,
    1620    -1318,   877, -1318,  9517, -1318,   278,  7119,  7119,  7119,  1184,
    1621    -1318,  3868,   982,   220,   924,   302,   984, -1318,   977,  5550,
    1622      238, -1318,  1061,  1184,  7119,   814,  1617,   814,   739,   705,
    1623      907, -1318, -1318,   765,   907, -1318, -1318, -1318,   870, -1318,
    1624      907,   169,  9936, -1318,   570,  1000,   655,  1005, -1318,  1004,
    1625      169, -1318, -1318,  2451,   169,  1003,   464,   465,  9812,  6431,
    1626     1947, 10742,  2536, -1318, -1318,  1001,    20,  1001, -1318, -1318,
    1627    -1318,    95,    95, -1318, -1318,   850, -1318,    95, -1318, -1318,
    1628     8924,   850,  1006, 10742, -1318,   955, 11174, -1318, -1318,  1017,
    1629    -1318, -1318, -1318,   814, -1318, 11109, 10742, -1318,  7119,   671,
    1630     5233, -1318, -1318,   652,  1013,  1014,   885,  2927, -1318, -1318,
    1631    11233, -1318, -1318,  1015, -1318, -1318,  1021, -1318,  1015,  1023,
    1632    10968, 10457,   243,  1002,    53,  1025,  1026,   827,  1027,  1028,
    1633    -1318,  1030,  1032,  8983,  6095, -1318, 10457, -1318,   640,  1104,
    1634    -1318, 10400, 10457,  1034, -1318, -1318,   924,   678, -1318, 10457,
    1635    -1318, -1318, -1318, -1318, -1318, -1318, -1318,   237,   237,   407,
    1636      407,   632,   632,   632,   632,   476,   476,   638,   859,   855,
    1637      869,   890, 10742,   716, -1318,  9936,  1038,  1041,  1042,   900,
    1638    -1318, -1318, -1318, -1318, -1318,  9936,   679, 10742,  7119, -1318,
    1639     9517, -1318,  6543,  8227,  9281,  6319, -1318, -1318, -1318,   378,
    1640     9936,   820,  1047,  1051,  1052,  1057,  1058,  1059,  1060, -1318,
    1641     3170,  1782, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1642    -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   959,
    1643    -1318, -1318, -1318,   877, -1318, -1318, -1318, -1318, -1318, -1318,
    1644    -1318, -1318,  1063, -1318,  1064,  1065, -1318, -1318,   226,  1034,
    1645     3868, -1318, -1318, -1318,  4543,  1066, -1318, -1318, -1318, -1318,
    1646    -1318,   850,  5481,  1140, -1318, -1318, -1318, -1318,  1049,   226,
    1647    -1318, -1318,   959, -1318, -1318,   959,   127,   959, -1318, -1318,
    1648    -1318, -1318, -1318, -1318,  8605, -1318,   169, -1318,  9163, -1318,
    1649    -1318,  1070,   856,  1073,  1076,  1077, -1318, -1318,  2536, -1318,
    1650    -1318, -1318, -1318, -1318, -1318, -1318,  2086, -1318,   944, -1318,
    1651    -1318,  1075,  1078,  1082, -1318, -1318,  1080,  1096, -1318,   671,
    1652     1985, -1318,   514, -1318,  2927,   877, -1318,  1100, 11233,  9871,
    1653     7909,  1102, -1318, -1318,  1098,  1110,  1107, -1318, 10742,    12,
    1654      400,  1114, -1318,  1112,  1112,  5983, 10457, -1318, -1318,  1112,
    1655    -1318,  1104,  4543, -1318, -1318, -1318, -1318,  1115, 10457,  1120,
    1656      814,  3868, -1318, 10571, -1318,   814, -1318, 10457, -1318,   825,
    1657      907, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   924,  7697,
    1658    -1318, -1318,  6655,  1125, -1318,   833,   907, -1318,   845,   852,
    1659      907, -1318,  1087,  4145, -1318, -1318, -1318,  9936,  9936, -1318,
    1660     7402,  7402, -1318,  1123,  1124,  1126,  1133, -1318,  1134,   553,
    1661       38,  1034, -1318,   814, -1318,  5550, -1318, 10457,   466, -1318,
    1662     5871,  1136,  1141,  5631,  1149,  1155,    13,    17,    14, 10457,
    1663     1156,   169,  3019,  1137,  1150,  1143, -1318, -1318, -1318,  1161,
    1664    -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,   850,
    1665     1167, 10457, -1318,  9936,  9936,    95,  1169, -1318,  9045,  8803,
    1666      867,   907, -1318, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1667    -1318,  1174,  1985, -1318, -1318,  1158, -1318,  1015, -1318, -1318,
    1668     1617,  1173, -1318, -1318, -1318,   686,  1175, -1318,    53,  1178,
    1669    10742,  1159,    53,    53,  1176, -1318,   977, 10457,  1185,  1115,
    1670      607,   130,  1192, -1318,  1176, -1318,  1198,  1192, -1318, -1318,
    1671     1199, -1318, -1318,   959,  1201,  1203,  6207,  1202,  1205,  1207,
    1672    -1318, -1318,  1210, -1318, -1318,   959, -1318, -1318, -1318, -1318,
    1673      959, 10457, 10457, 10742,  1209, -1318, -1318, -1318, -1318, -1318,
    1674    -1318, -1318, -1318, -1318, -1318, -1318, -1318, 10742, 10742,  1212,
    1675     1219,  1192, -1318, -1318,   850, -1318, -1318, -1318,  4876,  9871,
    1676    10457, 10457,  1262, 10457, -1318, -1318,  1213, -1318,  1214, 10457,
    1677     1216,  1220, 10457,   929, -1318,  1223,  5017,    95, -1318, -1318,
    1678     5481,  1224,   469, -1318, -1318, -1318, -1318, -1318, -1318, -1318,
    1679    -1318, -1318,   959, 10172, -1318,  7467,  1232, -1318, -1318,  9871,
    1680      478,   509, -1318,  1236,  1239,   870,  1248, -1318,   541, -1318,
    1681    10457,  1250,  1245, -1318, -1318,  1251,   128,   133,   814,  1253,
    1682     1254, -1318,  1256, -1318,  9936, -1318, -1318, -1318, -1318, -1318,
    1683     1258, -1318,  9936,  9936,  9936, -1318, -1318,  1260, -1318,  1263,
    1684     1269,  1270,   589,  7186,  7294, -1318, -1318,   351, -1318,  1273,
    1685     1275, -1318,  7532,   721,   742,  1272,   752,  5749, -1318, -1318,
    1686      545, -1318, -1318,   768,  1279,   169,  1330,  1332, -1318, -1318,
    1687     5631, -1318, -1318, -1318,  1285,  1286,  9936, -1318, -1318, -1318,
    1688     1283, -1318, -1318, -1318, -1318, -1318, -1318,  9871,   870,   206,
    1689    -1318,  1268,   870,  1115,   327, -1318, -1318, -1318, -1318, -1318,
    1690    -1318, -1318, -1318,  1284, -1318, -1318, -1318, -1318, -1318, -1318,
    1691     1291,  1294, -1318, -1318, -1318, -1318, -1318, -1318, -1318,  1297,
    1692    -1318,  1296, -1318, -1318,  5631,   124, 10457,  5631, -1318,  1299,
    1693    10457, -1318,   270,  1314, -1318, -1318,  1306, -1318, -1318, -1318,
    1694    -1318, -1318,  1184,  1617,  1301,   874,   879, 10742, -1318,   790,
    1695     1307, 10457,   814,   814,  1308,  1310,  1316,  1317, -1318, -1318,
    1696     7402,  1320, -1318,  1376, 10742,  1313, -1318, -1318, 10286, -1318,
    1697      791, -1318,  1300,  5631,  1305, -1318, -1318,  1323, -1318,  1341,
    1698     1329,  9871, -1318, -1318, -1318,   870,   814,  1334,  1327,  1325,
    1699    -1318,  1192,  1192, -1318, -1318, -1318, -1318, -1318,  5631,   246,
    1700    -1318,   917, -1318, -1318,  6877, -1318, -1318,  1335, 10457, -1318,
    1701    10457,  6877,   169,  9635,  1342, -1318, -1318,  1351,   874, -1318,
    1702      793, -1318, -1318, 10457,  1357,  1359, -1318, 10742, 10742, -1318,
    1703    -1318,   989,    88, -1318, -1318,  1340, -1318,   989, -1318, -1318,
    1704     2035,   814,   169,  9635,  1364,  1345,   814, -1318, -1318, -1318,
    1705    -1318, -1318, 10286,  1369,   989,  6946, 10457, 10206,  1373,   989,
    1706     1380,  2035,  2697, -1318, -1318, -1318, -1318, -1318,  7909, -1318,
    1707    -1318, -1318, 10051, -1318, 10286, -1318, -1318,  1347,  9970, -1318,
    1708    -1318, 10206,   169,  2697,  1383,   794, -1318, 10051, -1318, -1318,
    1709    -1318,  9970, -1318, -1318,   169, -1318, -1318, -1318, -1318, -1318
     1581    5182,  8315, -1362,    65, -1362, -1362, -1362, -1362, -1362, -1362,
     1582   -1362,    58, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
     1583   -1362, -1362, -1362, -1362, -1362,    82,    82,    82,   907,   818,
     1584     118,  6817,   261, -1362, -1362, -1362, -1362, -1362,   194, -1362,
     1585   -1362, -1362,   762,   245,  3620, -1362, -1362, -1362, -1362, -1362,
     1586   -1362,   110,   286, -1362,   690, -1362, -1362, -1362, -1362,   307,
     1587    1768,   457,   101,  6932, -1362, -1362,  4184,   407, -1362, -1362,
     1588   -1362,  1616,   474,  5211,   816,  1213,  1616,  2188, -1362, -1362,
     1589     386,   368, -1362,  1616,  2312, -1362,   370, -1362,   505,   519,
     1590   -1362, -1362, -1362, -1362,   390,   286,    82, -1362,    82, -1362,
     1591   -1362, -1362, -1362,  8539,   690, -1362, -1362,   690, -1362,  9099,
     1592     393, -1362, -1362,  2123,  9180, -1362,   951,   951,   951, -1362,
     1593   -1362, -1362,    82, -1362, -1362, -1362,   455,   470,   487, -1362,
     1594   -1362, -1362,   492, -1362, -1362, -1362, -1362, -1362,   517,   553,
     1595   -1362, -1362,    76,  8285,  1659,   753,   483,   539,   586,   596,
     1596     599,   606,  7594,  6229,   641,   646, -1362,  8650, -1362, -1362,
     1597   -1362, -1362,   673, -1362,   126,  3695,  3695, -1362,   682,   235,
     1598   -1362, -1362, -1362, -1362,   693,   419,   442,   449,    82,   685,
     1599   -1362, -1362,  1768,  2932,   768, -1362,    90, -1362,    82,    82,
     1600     286, -1362, -1362,   121, -1362,    82,    82, -1362,  3090,   696,
     1601     779,   951,  6612, -1362, -1362,   728,  3620, -1362, -1362,  1616,
     1602   -1362, -1362, -1362,   286, -1362,   690,   110, -1362,  7263, -1362,
     1603     951,   951,   951,   286, -1362,   907, -1362,  5761, -1362, -1362,
     1604     745,   951, -1362,   951, -1362,   194,  8285,  8427,   777, -1362,
     1605     818,   866,   951, -1362,   907,   775,   789, -1362,  6817,   874,
     1606   -1362, -1362, -1362,  5519, -1362, -1362,  6022, -1362,   768,   173,
     1607    9180, 10174,  2123,  3090, -1362,   265, -1362, -1362,  9099,   690,
     1608     879,  6376, -1362, -1362,   507, -1362, 10523,   887,   920,  3349,
     1609   10328, 10347, -1362,   895, -1362, -1362, -1362, -1362, 10405, 10405,
     1610     874,  7949,   897, 10328,  8397, -1362, -1362, -1362, -1362, -1362,
     1611   -1362,   930, -1362,   797,  2723, 10328, -1362,   688,   806,   843,
     1612     301,   862,   899,   893,   906,   932,    20, -1362, -1362,   934,
     1613     593, -1362,   402, -1362, -1362,  1659, -1362, -1362,   610,   919,
     1614   -1362,   621,   919,   946,   194, -1362, -1362,   962,  8539, -1362,
     1615     961,  8061, -1362, -1362,  1747,  1347,  7675,  6612,  1616, -1362,
     1616    1616,   951,   951, -1362, -1362, -1362, -1362, -1362, -1362,   951,
     1617    9209,   690, -1362, -1362,  9247,  1940, -1362,  9032, -1362, -1362,
     1618   -1362, -1362, -1362, -1362, -1362,   966,  4295, 10328, -1362, -1362,
     1619   -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
     1620   -1362, -1362,  2123, -1362,   446,   964,   972,   978,   719,   979,
     1621     987,   990,  2932, -1362, -1362,   994,   110,   992, -1362, -1362,
     1622     995, -1362, -1362, -1362,  5519, -1362, -1362, -1362, -1362, -1362,
     1623    3090, -1362,  8285,  8285, -1362,   951,  2123,  6731,   690,  7745,
     1624   -1362, -1362, -1362, -1362,  5519,   173, -1362, -1362,  1616,   286,
     1625   -1362, -1362,  5519, -1362,  6258, -1362, -1362,   951,   951,   484,
     1626    9317,   998,  1130,  4716, -1362,   459,   467,   818, -1362,  8427,
     1627     991,   980,   818,   951, -1362, -1362, -1362, -1362,  9608, -1362,
     1628     567,  6494, -1362,   286,   999, -1362,  2123, 10603, 10193, -1362,
     1629   -1362, -1362, -1362,   793,  3090, -1362,  7815,   768,  6702, -1362,
     1630   -1362, -1362,   842,   625,   934,   818,  6376,   494,  9099, -1362,
     1631    6376, -1362, -1362, -1362, -1362,   636, -1362,  1005,   920,   328,
     1632    7949, -1362, -1362, -1362,  7949, -1362,  8173,  7949, -1362, -1362,
     1633   -1362,  1004, -1362,   644,  1013,   617,  1014, -1362,  8787,  5845,
     1634   -1362, -1362, -1362,    93, -1362, -1362, 10251, -1362,   164, 10251,
     1635   -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
     1636   10174, 10174, -1362, 10328, 10328, 10328, 10328, 10328, 10328, 10328,
     1637   10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328, 10328,
     1638   10328,  4995, 10174, -1362,   593,  1220, -1362, -1362,    82,    82,
     1639   -1362, -1362,  8285, -1362, -1362,   995,   874, -1362,   995, 10270,
     1640   -1362, -1362, -1362,  5874,  5845,  1015,  8509,  1017, -1362,  9355,
     1641   -1362, -1362,   673, -1362,  1019,   506,  1020,  2624,   288,   934,
     1642   -1362,    82,    82,   934,   294, -1362,    82,    82,   995, -1362,
     1643   -1362,    82,    82, -1362,   919,  9384,   690, 10744,   254,   525,
     1644    9384, -1362,  6140, -1362,   934, -1362,  9209, -1362,   255,  7377,
     1645    7377,  7377,   690, -1362, 10097,  1009,   565,   966,   409,  1022,
     1646   -1362,  1018,  3695,   612, -1362,  1103,   690,  7377,   874,  2123,
     1647     874,   768,   628,   919, -1362, -1362,   744,   919, -1362, -1362,
     1648   -1362,   920, -1362,   919,   286,  9608, -1362,   659,  1026,   668,
     1649    1031, -1362,  1032,   286, -1362, -1362,  5519,   286,  1029,   497,
     1650     511,  9465,  6347,  1465, 10328,  2769, -1362, -1362,  1039,    94,
     1651    1039, -1362, -1362, -1362,    82,    82, -1362, -1362,   818, -1362,
     1652      82, -1362, -1362,  8924,   818,  1033, 10328, -1362,   991, 10744,
     1653   -1362, -1362,  1048, -1362, -1362, -1362,   874, -1362, 10674, 10328,
     1654   -1362,  7377,   639,  7675, -1362, -1362,   673,  1034,  1044,   842,
     1655    1987, -1362, -1362,  6376, -1362, -1362,  1045, -1362, -1362,  1051,
     1656   -1362,  1045,  1054, 10523, 10174,   142,  1040,    53,  1055,  1056,
     1657     897,  1057,  1061, -1362,  1063,  1066,  8203,  5993, -1362, 10174,
     1658   -1362,   617,  1650, -1362, 10116, 10174,  1062, -1362, -1362,   966,
     1659     676, -1362, 10174, -1362, -1362,   901, -1362, -1362, -1362, -1362,
     1660   -1362,   688,   688,   806,   806,   843,   843,   843,   843,   301,
     1661     301,   862,   899,   893,   906,   932, 10328,   912, -1362,  9608,
     1662    1069,  1070,  1075,  1220, -1362, -1362, -1362, -1362, -1362,  9608,
     1663     680, 10328,  7377, -1362,  9209, -1362,  6465,  8621,  9070,  6229,
     1664   -1362, -1362, -1362,   506,  9608,   832,  1076,  1078,  1079,  1080,
     1665    1082,  1083,  1088, -1362,  3884,  2624, -1362, -1362, -1362, -1362,
     1666   -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
     1667   -1362, -1362, -1362,   995, -1362, -1362, -1362,   934, -1362, -1362,
     1668   -1362, -1362, -1362, -1362, -1362, -1362,  1089, -1362,  1099,  1101,
     1669   -1362, -1362,   110,  1062, 10097, -1362, -1362, -1362,  4295,  1100,
     1670   -1362, -1362, -1362, -1362, -1362,   818,  5597,  1173, -1362, -1362,
     1671   -1362, -1362,  1085,   110, -1362, -1362,   995, -1362, -1362,   995,
     1672      28,   995, -1362, -1362, -1362, -1362, -1362, -1362,  8758, -1362,
     1673     286, -1362,  8427, -1362, -1362,  1108,   913,  1111,  1112,  1120,
     1674   -1362, -1362,  2769, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
     1675    1130, -1362,   980, -1362, -1362,  1116,  1128,  1124, -1362, -1362,
     1676    1132,  1133, -1362,   639,  1695, -1362,   589, -1362,  1987,   934,
     1677   -1362,  1138,  6376,  9494,  8285,  1140, -1362, -1362,  1137,  1144,
     1678    1147, -1362, 10328,   146,   128,  1150, -1362,  1153,  1153,  5845,
     1679   10174, -1362, -1362,  1153, -1362,  1650,  4295, -1362, -1362, -1362,
     1680   -1362,  1152, 10174,  1158,   874, 10097, -1362, 10251, -1362,   874,
     1681   -1362, -1362, 10174, -1362,   826,   919, -1362, -1362, -1362, -1362,
     1682   -1362, -1362, -1362,   966,  8061, -1362, -1362,  6583,  1161, -1362,
     1683     841,   919, -1362,   865,   883,   919, -1362,   951,  4042, -1362,
     1684   -1362, -1362,  9608,  9608, -1362,  7745,  7745, -1362,  1156,  1157,
     1685    1168,  1169, -1362,  1174,   677,   212,  1062, -1362,   874, -1362,
     1686    3695, -1362, 10174,   515, -1362,  5727,  1176,  1179,  9970,  1180,
     1687    1184,    11,    62,    64, 10174,  1185,   286, 10174, 10174,  1183,
     1688     535,  1182,  1164, -1362, -1362, -1362,  1187, -1362, -1362, -1362,
     1689   -1362, -1362, -1362, -1362, -1362, -1362,   818,  1190, 10174, -1362,
     1690    9608,  9608,    82,  1194, -1362,  8962,  8895,   888,   919, -1362,
     1691   -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,  1195,  1695,
     1692   -1362, -1362,  1186, -1362,  1045, -1362, -1362,  2123,  1196, -1362,
     1693   -1362, -1362,   684,  1203, -1362,    53,  1197, 10328,  1188,    53,
     1694      53,  1205, -1362,  1018, 10174,  1207,  1152,   337,   130,  1206,
     1695   -1362,  1205, -1362,  1214,  1206, -1362, -1362,  1217, -1362, -1362,
     1696     995,  1218,  1222,  6111,  1221,  1223,  1225, -1362, -1362,  1224,
     1697   -1362, -1362,   995, -1362, -1362, -1362, -1362,   995, 10174, 10174,
     1698   10328,  1226, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
     1699   -1362, -1362, -1362, -1362, 10328, 10328,  1232,  1234,  1206, -1362,
     1700   -1362,   818, -1362, -1362, -1362,  7193,  9494, 10174, 10174,  1283,
     1701   10174, -1362, -1362,  1215, -1362,  1219, 10174,  1233,  1242, 10174,
     1702     900,  1243,    37,  8091,  1006,    82, -1362, -1362,  5597,  1239,
     1703     523, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362,
     1704     995, 10093, -1362,  7815,  1256, -1362, -1362,  9494,   540,   555,
     1705   -1362,  1263,  1262,   920,  1270, -1362,   354, -1362, 10174,  1271,
     1706    1269, -1362, -1362,  1273,   206,   262,   874,  1274,  1275, -1362,
     1707    1276, -1362,  9608, -1362, -1362, -1362, -1362, -1362,  1277, -1362,
     1708    9608,  9608,  9608, -1362, -1362,  1279, -1362,  1282,  1286,  1287,
     1709     702,  7447,  7561, -1362, -1362,   388, -1362,  1291,  1292, -1362,
     1710    7885,   700,   705,  1296,   731,  5363, -1362, -1362,   575, -1362,
     1711   -1362,   741,  1297,  1299,   286,  1349,   974, -1362, -1362, 10174,
     1712   -1362, 10251,  9970, -1362, -1362, -1362,  1303,  1304,  9608, -1362,
     1713   -1362, -1362,  1312, -1362, -1362, -1362, -1362, -1362, -1362,  9494,
     1714     920,   263, -1362,  1293,   920,  1152,   273, -1362, -1362, -1362,
     1715   -1362, -1362, -1362, -1362, -1362,  1301, -1362, -1362, -1362, -1362,
     1716   -1362, -1362,  1316,  1317, -1362, -1362, -1362, -1362, -1362, -1362,
     1717   -1362,  1322, -1362,  1329, -1362, -1362,  9970,   107, 10174,  9970,
     1718   -1362,  1332, 10174, -1362,   151,  1351,  1355, -1362, -1362,  1334,
     1719    1335,  1320,   924, -1362, -1362, -1362, -1362, -1362,   690,  2123,
     1720    1338,   930,   937, 10328, -1362,   742,  1343, 10174,   874,   874,
     1721    1352,  1353,  1354,  1357, -1362, -1362,  7745,  1341, -1362,  1417,
     1722   10328,  1344, -1362, -1362,  9884, -1362,   785, -1362,  1333,  9970,
     1723    1340, -1362, -1362,  1363, -1362,  1364, -1362,  1379,  1382, -1362,
     1724    1350,  1371,  9494, -1362, -1362, -1362,   920,   874,  1374,  1365,
     1725    1370, -1362,  1206,  1206, -1362, -1362, -1362, -1362, -1362,  9970,
     1726     258, -1362,   941, -1362, -1362,  7047, -1362, -1362,  1367, 10174,
     1727   -1362, 10174,  7047,   286,  9317,   286,  9317,  1392, -1362,  1396,
     1728   -1362, -1362, -1362,  1393,   930, -1362,   803, -1362, -1362, 10174,
     1729    1397,  1398, -1362, 10328, 10328, -1362, -1362,  1016,    97, -1362,
     1730   -1362,  1383, -1362,  1016, -1362, -1362,  2377,   874, -1362, -1362,
     1731     286,  9317,   286,  9317,  1405,  1384,   874, -1362, -1362, -1362,
     1732   -1362, -1362,  9884,  1402,  1016,  7122, 10174,  9798,  1406,  1016,
     1733    1412,  2377,  2919, -1362, -1362, -1362,  1413, -1362, -1362, -1362,
     1734   -1362,  8285, -1362, -1362, -1362,  9705, -1362,  9884, -1362, -1362,
     1735    1400,  9612, -1362, -1362,  9798,   286,  2919,   286,  1414,  1419,
     1736     807, -1362,  9705, -1362, -1362, -1362,  9612, -1362, -1362, -1362,
     1737     286,   286, -1362, -1362, -1362, -1362, -1362, -1362, -1362, -1362
    17101738};
    17111739
     
    17131741static const yytype_int16 yypgoto[] =
    17141742{
    1715    -1318,  3762,  2543, -1318,  1454, -1318,    -1,     2,   -89, -1318,
    1716    -1318, -1318,  -483,  -942,  -282,  4006, -1318,  1670,   483,   485,
    1717      347,   484,   927,   931,   926,   932,   937, -1318,   792,  -594,
    1718     4587,   375,  -691,  -946, -1318,  -112,  -722,  -695, -1318,   412,
    1719    -1318,   304, -1184, -1318, -1318,    54, -1318, -1317,  -763,   149,
    1720    -1318, -1318, -1318, -1318,    -3, -1151, -1318, -1318, -1318, -1318,
    1721    -1318, -1318,   223,    51,    55, -1318,  -364, -1318,   402,   204,
    1722    -1318,    86, -1318,  -320, -1318, -1318, -1318,   450,  -745, -1318,
    1723    -1318,    10,  -865,   258,   180, -1318, -1318, -1318,  -222, -1318,
    1724      126,    49,  -187,   951,  3574, -1318, -1318,   213,   151,   363,
    1725     -251,  2053, -1318,  1304, -1318, -1318,   344,  1615, -1318,  1898,
    1726     1496, -1318, -1318,  -417,  -439,  1083,  1084,   597,   837,   279,
    1727    -1318, -1318,  1086,   598,   -23, -1318,    37,  -463,   807, -1318,
    1728    -1318,  -923,  -977,   142,   669,   965,   280, -1318,   175,   -35,
    1729     -257,  -199,  -156,   555,   651, -1318,   888, -1318,  1925,  1031,
    1730     -460,   803, -1318, -1318,   594, -1318,  -228, -1318,   140, -1318,
    1731    -1318, -1318, -1268,   320, -1318, -1318, -1318,  1067, -1318,     6,
    1732    -1318, -1318,  -851,   -86, -1303,  -124,  2887, -1318,  2837, -1318,
    1733      812, -1318,  -168,   585,  -176,  -173,  -171,     4,   -41,   -39,
    1734      -36,   834,    47,    56,    79,  -167,  -162,  -161,  -159,  -158,
    1735     -273,  -557,  -498,  -458,  -543,  -318,  -539, -1318, -1318,  -499,
    1736      986,   992,   993,  1485,  4182,  -565,  -577,  -550,  -542,  -536,
    1737    -1318,  -384,  -672,  -658,  -654,  -591,  -211,  -316, -1318, -1318,
    1738      152,   299,   -75, -1318,  2880,   592,  -631,  -200
     1743   -1362,  3493,  1093, -1362,  1502, -1362,    -1,     2,   435, -1362,
     1744     458,  -522,  -509,  -926,  -270,  4585, -1362,  1298,   508,   516,
     1745     480,   518,   965,   977,   985,   963,   975, -1362,   450,  -552,
     1746    3932,  -889,  -691,  -949, -1362,   269,  -657,  -346, -1362,  1391,
     1747   -1362,   339, -1080, -1362, -1362,    75, -1362, -1321,  -831,   188,
     1748   -1362, -1362, -1362, -1362,     7, -1083, -1362, -1362, -1362, -1362,
     1749   -1362, -1362,   268, -1220,    39, -1362,  -255, -1362,   439,   242,
     1750   -1362,   117, -1362,  -360, -1362, -1362, -1362,   498,  -843, -1362,
     1751   -1362,    12, -1020,    26,  1825, -1362, -1362, -1362,  -118, -1362,
     1752     513,    86,  -185,   665,  2995, -1362, -1362,    55,   143,   302,
     1753    -254,  1799, -1362,  1348, -1362, -1362,   259,  1704, -1362,  2086,
     1754    1311, -1362, -1362,  -430,  -428,  1135,  1143,   640,   890,   313,
     1755   -1362, -1362,  1126,   652,  -484, -1362,  -469,  -299,   976, -1362,
     1756   -1362,  -931,  -975,  -226,  1098,  1011,    22, -1362,   189,   264,
     1757     -13,  -195,  -156,   609,   711, -1362,   947, -1362,  2242,   541,
     1758    -458,   859, -1362, -1362,   647, -1362,  -235, -1362,    24, -1362,
     1759   -1362, -1362, -1279,   371, -1362, -1362, -1362,  1122, -1362,    46,
     1760   -1362, -1362,  -859,  -108, -1361,   -83,  2954, -1362,  2772, -1362,
     1761     858, -1362,  -175,   138,  -168,  -167,  -163,     3,   -38,   -31,
     1762     -30,   910,    25,    70,    79,  -147,  -162,  -159,  -152,  -151,
     1763    -287,  -573,  -525,  -485,  -559,  -293,  -488, -1362, -1362,  -496,
     1764    1038,  1041,  1042,  2149,  4025,  -548,  -554,  -520,  -498,  -453,
     1765   -1362,  -411,  -687,  -675,  -653,  -597,  -296,  -300, -1362, -1362,
     1766     829,    71,   -28, -1362,  3030,   124,  -627,  -190
    17391767};
    17401768
     
    17421770   positive, shift that token.  If negative, reduce the rule which
    17431771   number is the opposite.  If YYTABLE_NINF, syntax error.  */
    1744 #define YYTABLE_NINF -511
     1772#define YYTABLE_NINF -520
    17451773static const yytype_int16 yytable[] =
    17461774{
    1747      110,   146,    46,   147,    95,   393,   148,   447,   394,   378,
    1748      395,   111,   704,   422,   401,   402,   434,   885,   923,   396,
    1749      397,   731,   398,   399,   500,   836,   611,   263,   256,   965,
    1750      473,   861,   924,    46,   743,    95,   925,   140,   748,   844,
    1751      710,  1078,  1129,   630,    46,   832,    46,   634,   158,  1374,
    1752      113,   778,   837,  1137,  1171,    47,    46,    30,    30,   404,
    1753      838,   843,    46,   835,   189,    46,   699,   212,    46,   847,
    1754      222,   606,    30,   810,   120,   854,   215,   338,   108,   108,
    1755      984,  1436,   108,   276,   941,   393,    47,   530,   394,   149,
    1756      395,  1432,   671,   156,   401,   402,   923,   927,   150,   396,
    1757      397,  1181,   398,   399,   833,    30,    46,  1169,  1170,    46,
    1758      924,   419,   680,  1120,   925,    46,   198,   119,   403,   940,
    1759      684,   151,   248,   405,   405,  1199,    60,  1177,   286,   598,
    1760     -225,  -225,    30,   477,   479,   277,   413,  1195,   405,   770,
    1761      146,  1197,   147,  1447,   834,   148,    46,  1077,   158,   248,
    1762      325,    67,   254,  1178,    46,  1432,   968,    60,   156,    46,
    1763      199,   368,   478,   675,   677,  1436,  1394,  1395,   108,   483,
    1764     1436,   405,   139,   875,   875,   875,    30,   108,   521,   832,
    1765       54,    54,    67,    46,    46,  1187,   158,  1436,   507,   567,
    1766      473,   875,   319,   108,  1436,  -225,   160,  1066,   108,    46,
    1767      530,   335,   530,    30,   138,   669,   774,    46,  1246,   158,
    1768      473,    54,   141,    66,   208,   780,    46,   738,   473,    46,
    1769      146,   437,   147,   568,   143,   148,   731,   753,   149,  1085,
    1770     1396,  1327,   666,   667,   754,  1247,  1329,   150,   833,   747,
    1771      845,   864,   603,    54,    66,   865,    54,   467,  1171,    46,
    1772      424,    95,   836,   465,   428,   237,   240,   761,    53,   112,
    1773      151,   160,   589,    46,    46,   875,   158,   852,   152,   603,
    1774       46,   704,   832,   732,   821,   167,  1026,    46,   834,   837,
    1775      372,   530,   695,   697,   319,   450,   611,   838,   518,    53,
    1776     1013,   338,   741,  -455,  1323,   847,   373,  1171,  1025,   104,
    1777      104,   731,    47,  1508,   658,  1186,  1139,  1377,   674,   676,
    1778     1002,   887,  1394,  1395,   666,   667,   428,   870,   530,   490,
    1779     1517,   206,   814,  -455,   216,  -455,    46,  1521,   368,  -455,
    1780      104,   833,   673,   343,   173,  1457,  1509,  1201,   678,   523,
    1781      381,   888,   156,   645,    74,    46,    46,   889,   550,   165,
    1782     1169,  1170,   966,   551,   552,   875,   382,   429,  1192,  1078,
    1783     1522,  1178,    46,   916,   441,   104,    46,   108,   436,   136,
    1784      137,   834,   836,    60,  1119,    74,  1405,   866,   474,   478,
    1785      177,   867,   598,   462,   257,   844,   588,   258,   455,   595,
    1786      197,   108,    46,   136,   137,  -281,   521,    54,    67,   837,
    1787      521,   569,    46,   521,   368,   881,   848,   838,   628,   384,
    1788      851,   598,   632,  1171,   459,   335,   598,   752,   861,   429,
    1789       46,   108,  1187,   136,   234,   385,    46,    54,    46,  -109,
    1790      225,   868,   239,   386,   226,   871,  1381,   230,   578,   232,
    1791     1421,  1422,   525,    36,   579,   160,   241,    39,   243,   387,
    1792     -109,   338,    46,   246,    40,    41,   803,   235,  -109,  -109,
    1793       66,   473,   236,  -506,   169,  1077,   685,  1427,   110,   319,
    1794      319,   248,   579,   755,  -109,   435,    46,   756,   732,   829,
    1795      762,   603,  1157,  1159,    46,   722,   368,   -10,    46,   604,
    1796       95,   723,    46,   886,   433,  1242,   208,   450,  1107,   500,
    1797      450,  1088,  1121,   945,  1007,    53,   450,   249,   821,  1122,
    1798     1135,   388,   260,   758,   393,  1066,   739,   394,   113,   395,
    1799      553,   554,   740,   611,   401,   402,  1236,   389,   396,   397,
    1800      775,   398,   399,   758,   899,   781,  -431,  1026,   474,  -432,
    1801      705,    47,  1360,   490,  1093,   319,   104,   490,   485,   495,
    1802      646,   496,   699,   732,   326,   502,   706,   523,   474,   557,
    1803      558,   523,   707,   319,   523,  1358,   474,  1168,  1024,  1187,
    1804      897,   225,   705,   707,  1184,   335,  1187,  1184,   708,   906,
    1805      379,   749,   467,  1275,  1276,    94,  1312,   750,   919,   920,
    1806     1185,    74,    46,  1303,   559,   560,    74,  1093,   821,   272,
    1807      455,   411,  1313,   455,    46,  1367,    46,   343,   720,   455,
    1808      729,   274,    60,   338,   876,   877,    94,  1314,   866,   580,
    1809     1187,   405,  1103,   173,   431,    46,   208,   145,   319,    94,
    1810      709,   895,   275,  1315,   439,   459,   163,    67,  1404,   819,
    1811      631,    46,   595,  1321,   635,   185,   765,   366,    94,   704,
    1812     1322,    94,   766,   766,   896,    46,   898,  -102,    46,  1393,
    1813      525,  -102,  1401,  1029,   525,   969,    54,   525,   742,  1361,
    1814      746,   860,   910,   874,   874,   874,   595,   327,   766,  1037,
    1815      328,  1024,   869,   731,   108,   329,   136,   137,   338,  1463,
    1816      330,   874,    46,  1346,    46,   331,  1463,  1347,  1482,    66,
    1817     1082,   163,   522,  1435,  1487,   948,   367,   343,  1439,  -109,
    1818      225,  -109,   230,   555,   556,  -109,  1465,   571,  1466,   405,
    1819      744,  1504,   944,   561,   562,   745,  1511,   572,  1044,    94,
    1820     -109,  -109,  1115,  1456,   583,   323,   405,   335,    46,    46,
    1821     1505,   768,    94,   405,    53,     2,   202,     4,     5,     6,
    1822        7,   769,    46,   371,  1234,  1104,    74,   912,  1238,   450,
    1823      666,   667,   383,   766,  1506,   874,   392,   185,   695,   697,
    1824      391,   343,   949,   821,   603,   436,    74,   248,   325,   405,
    1825      992,  1004,   950,  1417,    74,   104,   993,   723,  1232,   490,
    1826       94,   413,   662,   405,   579,  1005,   403,   430,   598,   225,
    1827     1429,   420,    94,    34,   823,    35,   900,  1516,   405,   474,
    1828     1349,   421,   335,  1516,   720,   729,   343,   343,   343,   923,
    1829      882,   426,  1516,  1354,   766,   997,  1516,   323,   444,   766,
    1830       74,    46,    94,   924,   343,  1161,    36,   925,   179,   180,
    1831       39,    36,   457,    46,  1355,    39,   481,    40,    41,   682,
    1832      766,   474,    40,    41,  1357,   874,   483,   325,   405,   430,
    1833      766,   463,   455,  1480,  1429,    -3,   903,   208,   405,  1006,
    1834     1362,   464,   602,   819,   603,   460,   766,    42,   159,   108,
    1835      935,   208,   604,   724,   486,   163,   938,   144,   506,  1182,
    1836      729,  1064,  1418,  1437,   190,  1475,  1525,   213,  1415,   766,
    1837      223,  1476,   579,   863,   791,   792,   793,   794,   343,    94,
    1838        8,     9,    10,    11,    12,   108,    46,   136,   137,   878,
    1839      522,   845,   325,   603,   522,   514,  1141,   522,   405,   605,
    1840       46,   526,   600,   894,  1153,   732,   405,    30,    46,     2,
    1841      202,     4,     5,     6,     7,   286,  1156,   720,   603,   530,
    1842       36,    63,   114,  1158,    39,   603,    46,   720,   325,   405,
    1843       33,    40,    41,   819,  1328,  1330,  1331,   450,  1220,  1108,
    1844      405,   563,   720,   208,   931,   564,   931,   566,   159,   531,
    1845      532,   533,    63,  1294,  1295,   185,   736,  1415,  1416,  1131,
    1846      565,   369,   758,  -428,  1131,   157,   737,    34,   343,    35,
    1847      569,   571,   534,   405,   535,   343,   536,   490,  1110,   319,
    1848      334,   572,   323,   323,   732,   587,   159,   217,    60,   126,
    1849      590,   127,   128,   129,  1227,  1458,  1459,    74,   640,   969,
    1850      502,  1394,  1395,   969,   969,   696,   787,   788,   823,   159,
    1851      789,   790,  1131,    67,   659,   795,   796,   660,   661,   663,
    1852      664,   438,  1064,   668,   255,  1196,  1198,  1200,   860,   646,
    1853      665,   670,   253,   711,   688,   751,  1049,   713,  -229,    74,
    1854      455,    94,    54,   763,   767,   605,   771,   824,  1283,  1284,
    1855      826,  1286,   828,   908,   839,   884,  1494,  1290,   323,   891,
    1856     1293,   -12,   915,   883,   211,   324,   917,     8,     9,    10,
    1857       11,    12,   911,   255,   345,    66,   323,   913,   914,   918,
    1858      691,   238,    46,   939,     8,     9,    10,    11,    12,  -405,
    1859     -510,   953,   960,   740,    30,   962,   967,   973,   974,  1093,
    1860      977,   338,   978,   400,   979,   721,   976,   450,   819,    54,
    1861      999,    30,   988,  1000,  1001,   211,  1319,    33,   418,  1015,
    1862       53,   423,   425,  1016,  1017,   343,   157,   646,   369,  1018,
    1863     1019,  1020,  1021,   436,    33,  1032,  -393,  -392,  1079,   720,
    1864      720,   323,  1081,  1046,  1089,  1090,   474,   442,  1091,  1092,
    1865     1097,   445,  1096,   446,  1099,   600,  -282,   831,   211,   605,
    1866     1098,   104,   461,     8,     9,    10,    11,    12,    63,   215,
    1867     1100,    67,  1106,   475,  1116,   768,   766,   405,    46,  1064,
    1868      343,   343,  1117,   482,   862,   769,  1118,  1109,   982,   600,
    1869       30,   425,  1123,  1127,  1130,   720,   720,  1151,  1174,  1375,
    1870       54,  1172,  1173,  1375,   369,  1175,    74,  1190,  1176,  1108,
    1871      455,  1206,  1191,    33,  1400,  1131,  1131,  1131,   211,    36,
    1872     1193,   170,   171,    39,  1049,   335,  1194,  1202,   104,  1207,
    1873       40,    41,    36,  1189,   170,   171,    39,  1208,    -3,  1213,
    1874     1515,  1218,   729,    40,    41,   922,  1224,   696,  1110,   495,
    1875     1228,  1233,  1235,  1237,  1240,  -283,   211,  1413,   255,  1244,
    1876      211,   596,     8,     9,    10,    11,    12,   624,   367,  1064,
    1877     1248,  1253,  1251,  1255,    72,  1256,  1257,  1285,    53,  1258,
    1878      629,  1259,  1261,  1268,   629,   393,  1277,   255,   394,    30,
    1879      395,   831,   605,  1278,   401,   402,  1448,  1108,  1087,   396,
    1880      397,  1302,   398,   399,  1310,    72,    60,  1288,  1289,   208,
    1881     1291,   721,    33,  1316,  1292,   666,   667,  1299,  1318,   104,
    1882     1320,   729,  1325,  1064,  1324,  1326,  1064,  1332,  1333,  1281,
    1883     1334,    67,  1336,   475,  1342,  1308,  1110,  1343,    54,    54,
    1884      218,  1344,  1345,  1356,    46,    46,   211,  1352,   345,  1353,
    1885     1363,  1131,  1131,   475,  1493,  1295,  1366,  1368,  1369,  1371,
    1886       54,   475,  1378,  1381,    74,  1388,   720,  1064,  1389,  -394,
    1887     1392,  1403,  1064,  1407,   720,   720,   720,  1409,  1414,    54,
    1888     1423,  1419,  1424,   474,   831,  1449,  1428,   716,  1425,  1426,
    1889      425,  1108,  1433,    66,  1438,  1442,   605,  1064,  1347,  1440,
    1890     1444,  1446,  -284,   436,  1453,   730,  1451,    63,    67,     8,
    1891        9,    10,    11,    12,  1472,   425,   206,   216,   720,   425,
    1892      146,  1452,   147,   343,   343,   148,   211,   348,  1474,  1464,
    1893     1110,  1478,    54,  1479,  1486,  1498,    30,    54,    53,  1499,
    1894     1495,  1518,    46,  1203,   721,  1500,  1503,   255,   345,   909,
    1895     1510,  1064,  1512,   926,   721,  1524,  1064,  1109,   104,    33,
    1896      797,   799,  1470,    46,    46,   798,   158,    54,   800,   721,
    1897     1189,  1064,  1243,  1064,   801,   926,   211,  1064,   172,   104,
    1898     1064,  1406,  1481,   696,  1301,    46,  1064,   368,  1526,  1365,
    1899     1064,   696,  1470,   809,  1497,  1239,  1379,  1467,   104,  1212,
    1900      443,   686,   687,  1094,   932,  1045,  1095,  1126,   890,   605,
    1901      435,   629,   822,   955,   596,    53,   715,   319,   816,  1311,
    1902     1105,    72,   323,   734,    74,   841,    72,   806,   172,   210,
    1903      474,   172,   963,   807,   808,     0,     0,   474,     0,     0,
    1904      343,     0,     0,   596,     0,  1109,     0,     0,   596,     0,
    1905        0,     0,     0,     0,   629,    67,   104,   345,   345,   345,
    1906        0,    54,    67,     0,   996,  1471,    36,     0,   179,   180,
    1907       39,   862,     0,     0,     0,   345,   172,    40,    41,     0,
    1908      210,   474,   998,     0,    54,    75,   104,     0,     0,     0,
    1909        0,    54,  1003,   716,     0,  1471,     0,   211,     0,     0,
    1910        0,    74,   181,     0,   475,     0,    67,  1014,     0,   255,
    1911      730,     0,   182,   928,     0,     0,    75,  1189,     0,     0,
    1912      218,     0,  1412,   210,  1189,   211,     0,     0,     0,     0,
    1913      211,     0,     0,     0,     0,    54,     0,     0,   172,  1109,
    1914      407,     0,  1039,     0,     0,     0,   475,   415,     0,   345,
    1915        0,   219,    36,     0,   179,   180,    39,     0,   954,     0,
    1916        0,   425,    53,    40,    41,     0,   721,   721,  1189,    53,
    1917        0,     0,     0,     0,     0,     0,     0,  1364,     0,     0,
    1918      104,     0,     0,   210,   255,   730,    72,     0,   261,     0,
    1919      981,     0,   172,    36,     0,   170,   171,    39,   262,   172,
    1920        0,   348,     0,   104,    40,    41,    72,     0,     0,     0,
    1921      104,     0,     0,    53,    72,     0,     0,   211,     0,   407,
    1922        0,   210,   721,   721,     0,   210,   716,     0,     0,   371,
    1923      926,   211,     0,     0,     0,     0,   716,     0,   350,   345,
    1924      348,   629,     0,     0,  1012,   629,   822,     0,    74,     0,
    1925        0,   716,     0,     0,   104,    74,     0,     0,   348,  1138,
    1926       72,  1023,     8,     9,    10,    11,    12,   172,     0,     0,
    1927        0,     0,     0,     0,   577,     8,     9,    10,    11,    12,
    1928        0,     0,   581,     0,   172,   584,     0,     0,   172,    30,
    1929        0,     0,     0,     0,     0,     0,     0,     0,     0,    74,
    1930        0,   348,    30,     0,  1166,  1167,     0,     0,     0,  1039,
    1931        0,   210,    33,    63,     0,     0,     0,    36,     0,   179,
    1932      180,    39,     0,   211,  1468,    33,     0,     0,    40,    41,
    1933       36,     0,    75,     0,    39,   629,     0,    75,     0,     0,
    1934        0,    40,    41,     0,     0,     0,     0,   407,     0,     0,
    1935      172,   415,     0,   602,  1496,   603,     0,     0,     0,     0,
    1936     1215,  1216,  1309,   604,     0,   348,    42,     0,    77,     0,
    1937        0,  1102,     0,     0,     0,     0,   144,     0,     0,   425,
    1938      114,     0,   926,     0,     0,     0,     0,     0,     0,     0,
    1939        0,   210,     0,   721,  1523,    84,   345,     0,     0,    77,
    1940        0,   721,   721,   721,     0,     0,  1528,     0,     0,     0,
    1941      348,   348,   348,     0,     0,     0,     0,     0,     0,   511,
    1942        0,     0,     0,     0,     0,     0,    84,     0,   348,     0,
    1943      596,   219,   528,   529,   220,     0,   407,     0,     0,   926,
    1944      926,   210,     0,   423,   549,   721,   348,     0,   716,   716,
    1945        0,   345,   345,     0,     0,     0,     0,    72,     0,     0,
    1946        0,   221,     0,   348,     0,     8,     9,    10,    11,    12,
    1947        0,  1188,     2,   202,     4,     5,     6,     7,     0,     0,
    1948      529,     0,    36,     0,   179,   180,    39,     0,     0,     0,
    1949        0,     0,    30,    40,    41,     0,     0,    75,     0,    72,
    1950      224,     0,   348,     0,   716,   716,     0,     0,     0,     0,
    1951      629,     0,   350,   211,   172,    33,   529,    75,   690,     0,
    1952      405,   351,     0,     0,     0,    75,   577,   577,   692,     0,
    1953       34,  1335,    35,     0,     0,     0,     0,     0,   348,  1337,
    1954     1338,  1339,     0,     0,     0,     0,   481,   172,   358,     0,
    1955        0,   350,     0,     0,     0,     0,   949,     0,   603,     0,
    1956      323,     0,   210,   172,     0,     0,   950,   730,     0,   350,
    1957       36,    75,   179,   180,    39,     0,     0,   172,     0,   348,
    1958        0,    40,    41,  1370,     0,     0,   209,     0,     0,   348,
    1959      210,     0,   348,     0,     0,   210,   228,   218,     0,   348,
    1960        0,     0,     0,     0,   348,     0,  1491,     0,   405,     0,
    1961     1282,     0,   350,     0,   901,    77,  1492,     0,   904,     0,
    1962       77,    36,     0,   179,   180,    39,     0,   255,     0,     0,
    1963        0,    63,    40,    41,     0,     0,     0,   209,     0,   926,
    1964        0,     0,    84,     0,   716,     0,   730,    84,     0,     0,
    1965      114,   407,     0,     0,     0,     0,   926,   690,     0,   405,
    1966        0,     0,     0,     0,     0,   691,    72,   692,     0,     0,
    1967        0,     0,     0,     0,   172,   716,   350,     0,     0,     0,
    1968      209,     0,   210,   716,   716,   716,     0,     0,     0,   211,
    1969      784,   785,   786,     0,   345,   345,   210,   537,   538,   539,
    1970      540,   541,   542,   543,   544,   545,   546,     0,  1188,     0,
    1971        0,     0,     0,     0,   220,     0,     0,     0,     0,   926,
    1972      926,   350,   350,   350,     0,     0,     0,   716,     0,     0,
    1973      547,     0,     0,   529,     0,     0,     0,     0,   114,   350,
    1974      209,   221,     0,     0,     0,     0,     0,     0,     0,   348,
    1975        0,     0,     0,     0,     0,     0,     0,   350,     0,     8,
    1976        9,    10,    11,    12,   577,     0,     0,     0,    75,     0,
    1977        0,     0,     0,     0,   350,     0,     0,     0,   209,     0,
    1978       77,     0,   209,   211,     0,     0,    30,     0,   210,     0,
    1979        0,     0,     0,     0,     0,   351,     0,     0,   501,     0,
    1980       77,   348,   348,     0,   348,   348,     0,    84,    77,    33,
    1981       75,   345,     0,   350,    36,     0,   179,   180,    39,     0,
    1982        0,     0,   358,     0,    72,    40,    41,    84,     0,     0,
    1983        0,     0,   114,     0,   351,    84,     0,     0,   172,     0,
    1984        0,     0,     0,     0,     0,     0,     0,     0,     0,   350,
    1985      181,     0,   351,     0,    77,  1188,     0,   348,   348,     0,
    1986      182,   358,  1188,     0,     0,     0,   529,     0,   209,     0,
    1987        0,     0,     0,     0,     0,     0,     0,   407,     0,   358,
    1988        0,    84,     0,     0,     0,     0,     0,     0,     0,     0,
    1989      350,     0,     0,     0,     0,   351,     0,     0,     0,     0,
    1990      350,     0,     0,   350,     0,     0,  1188,     0,   219,     0,
    1991      350,   983,     0,  1513,     0,   350,     0,     0,     0,     0,
    1992      348,     0,   358,     0,   469,     2,   202,     4,     5,     6,
    1993        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    1994       17,    18,    19,    20,    21,    22,    23,    24,   209,     0,
    1995       25,    26,    27,     0,  1142,     0,     0,   529,    30,   351,
    1996        0,     0,     0,   218,     0,   209,     0,     0,     0,     0,
    1997     1154,     0,     0,     0,     0,     0,     0,    75,   210,     0,
    1998        0,    33,     0,    34,    72,    35,   358,     0,    37,    38,
    1999        0,     0,     0,     0,     0,     0,     0,   348,   209,   348,
    2000        0,     0,     0,     0,   351,   351,   351,     0,     0,     0,
    2001        0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
    2002       12,     0,   351,     0,     0,     0,     0,    -3,   348,     0,
    2003        0,   358,   358,   358,     0,     0,   348,   348,   348,     0,
    2004      351,     0,     0,    30,     0,  1221,     0,   348,   348,   358,
    2005        0,    77,     0,     0,     0,     0,     0,   351,     0,     0,
    2006      350,    72,     0,   164,     0,   168,    33,   358,   174,   175,
    2007      176,    36,   178,   179,   180,    39,     0,     0,    84,     0,
    2008      348,     0,    40,    41,   358,     0,     0,   229,     0,     0,
    2009        0,     0,     0,    77,     0,     0,   351,     0,     0,   244,
    2010      245,     0,     0,     0,     0,     0,     0,   690,     0,   405,
    2011        0,     0,   350,   350,     0,   350,   350,   692,     0,   209,
    2012       84,     0,     0,   358,     0,     0,     0,     0,     0,     0,
    2013      172,     0,   351,     0,     0,    75,     0,     0,     0,     0,
    2014        0,     0,     0,     0,     0,     0,     0,   209,     0,   529,
    2015        0,     0,   209,     0,   210,     0,     0,     0,     0,   358,
    2016        0,     0,     0,     0,   348,     0,     0,     0,   350,   350,
    2017        0,     0,     0,   351,     0,     0,     0,     8,     9,    10,
    2018       11,    12,     0,   351,     0,     0,   351,     0,     0,     0,
    2019      511,   220,     0,   351,     0,     0,     0,     0,   351,     0,
    2020      358,     0,     0,     0,    30,     0,     0,     0,    72,     0,
    2021      358,     0,     0,   358,     0,    72,     0,     0,   221,     0,
    2022      358,     0,     0,     0,     0,   358,     0,    33,     0,     0,
    2023        0,   350,    36,     0,   179,   180,    39,     0,     0,   209,
    2024        0,     0,     0,    40,    41,     0,     0,     0,   210,     0,
    2025        0,     0,     0,   209,     0,     0,     0,     0,     0,    72,
    2026       77,     8,     9,    10,    11,    12,     0,     0,  1491,     0,
    2027      405,     0,     0,   501,   219,     0,     0,     0,  1492,     0,
    2028        0,     0,     0,     0,     0,     0,     0,    84,    30,     0,
    2029        0,     0,     0,     0,     0,    75,   172,     0,     0,     0,
    2030        0,     0,     0,   529,     0,     0,     0,     0,   350,     0,
    2031      350,    33,     0,     0,     0,     0,    36,     0,   179,   180,
    2032       39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    2033        0,     0,   123,   123,   123,     0,     0,     0,     0,   350,
    2034        0,     0,     0,   351,     0,   209,     0,   350,   350,   350,
    2035        0,     0,   261,   594,   601,     0,     0,     0,   350,   350,
    2036        0,     0,   262,     0,     0,   625,   626,     0,     0,     0,
    2037      358,     0,    75,     0,     0,     0,     0,     0,     0,     0,
    2038        0,     0,   121,   124,   125,     0,     0,     0,     0,     0,
    2039        0,   350,     0,     0,   162,   351,   351,     0,   351,   351,
    2040        0,     0,     0,   123,     0,   123,     0,     8,     9,    10,
    2041       11,    12,     0,   214,     0,     0,     0,     0,    77,     0,
    2042        0,     0,   358,   358,     0,   358,   358,     0,     0,   271,
    2043        0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2044        0,     0,     0,     0,     0,    84,     0,     0,     0,     0,
    2045        0,   351,   351,   250,     0,   251,     0,    33,     0,   162,
    2046        0,     0,    36,     0,   268,     0,    39,     0,     0,     0,
    2047        0,     0,     0,    40,    41,   350,     0,     0,   358,   358,
    2048        0,     0,     0,     0,   123,     0,     0,     0,     0,     0,
    2049        0,     0,   123,   162,   123,   123,     0,     0,   736,   123,
    2050        0,   123,   123,   364,     0,     0,     0,   370,   737,     0,
    2051        0,     0,     0,     0,   351,     0,     0,     0,     0,    75,
    2052        0,     0,     0,     0,     0,   278,    75,   279,     0,     0,
    2053        0,     0,     0,     0,   390,   209,     0,     0,     0,     0,
    2054        0,   358,     0,     0,   409,   410,     0,     0,   280,   414,
    2055        0,   416,   417,     0,   281,   162,     0,   220,   282,     0,
    2056        0,   283,   284,   285,   286,    40,    41,   214,   287,   288,
    2057       75,   123,     0,     0,     0,     0,   289,     0,    77,     0,
    2058        0,     0,     0,     0,   221,   162,   456,     0,     0,     0,
    2059      290,   351,   374,   351,     0,     0,     0,     0,     0,   292,
    2060      376,   294,   295,   296,   297,    84,     0,     0,     0,   370,
    2061        0,     0,     0,  1204,     0,     0,     0,   162,   358,     0,
    2062      358,     0,   351,     0,     0,     0,     0,     0,     0,     0,
    2063      351,   351,   351,     0,     0,     0,     0,     0,     0,     0,
    2064      456,   351,   351,   162,     0,     0,     0,  1022,     0,   358,
    2065        8,     9,    10,    11,    12,    77,     0,   358,   358,   358,
    2066        0,     0,     0,     0,     0,     0,     0,     0,   358,   358,
    2067        0,     0,     0,     0,   351,     0,   278,    30,   279,     0,
    2068        0,     0,    84,     0,     0,     0,     0,     0,     0,     0,
    2069      599,     0,     0,     0,     0,   623,     0,     0,     0,   280,
    2070       33,   358,     0,     0,     0,   281,     0,     0,     0,   282,
    2071        0,   209,   283,   284,   285,   286,    40,    41,     0,   287,
    2072      288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
    2073      942,     0,   943,     0,     0,     0,     0,     0,     0,   946,
    2074      947,   290,     0,   374,   952,     0,     0,     0,     0,     0,
    2075      292,   817,   294,   295,   296,   297,   957,     0,   351,     0,
    2076        0,   961,     0,     0,     0,     0,     0,     0,     0,     0,
    2077      162,   162,     0,     0,     0,     0,     0,   364,     0,     0,
    2078        0,     0,     0,     0,     0,   358,   989,     0,     0,     0,
    2079        0,     0,     0,     0,     0,     0,     0,     0,   456,     0,
    2080        0,   456,    77,     0,     0,   209,     0,   456,     0,    77,
     1775     110,   449,    46,    95,   146,   264,   927,   762,   403,   379,
     1776     380,   147,   148,   111,   395,   396,   424,   785,   928,   397,
     1777     398,   436,   502,   399,   889,   707,    53,   112,   865,   713,
     1778     400,   401,   836,    46,    95,  1194,   404,  1085,   746,    47,
     1779     929,   702,   751,  1136,    46,   601,    46,   158,   847,  1453,
     1780    1390,   840,   614,  1084,   674,    66,    46,    53,   609,   848,
     1781     633,  1178,    46,   190,   637,    46,   213,   149,    46,   223,
     1782      47,   104,   104,  1144,   683,   257,   174,   140,   216,   814,
     1783     837,   108,   687,   988,   927,   841,    66,   113,   403,   207,
     1784     421,   945,   217,  1457,   395,   396,   928,   969,  1309,   397,
     1785     398,   406,   104,   399,  1176,  1177,    46,   842,   532,    46,
     1786     400,   401,   150,   570,   773,    46,   404,   839,   929,    30,
     1787     838,   151,  1188,  1453,   339,   277,   258,    30,   199,   259,
     1788     156,    30,   108,   287,   108,   475,  1092,   104,    94,  -232,
     1789    -232,  1202,   931,    67,   146,   119,    46,   158,   571,  1410,
     1790    1411,   147,   148,  1473,    46,   851,   880,   881,    30,    46,
     1791     369,   858,   972,   108,   944,   120,   836,  1310,   163,    94,
     1792     878,   878,   878,   899,    67,   479,   481,   200,  1211,  1212,
     1793     145,  1206,    94,   278,    46,    46,   158,   734,   878,   255,
     1794     735,  1457,  1204,  1410,  1411,   156,  1457,   249,   186,   407,
     1795      46,    94,   777,   407,    94,   741,   209,   149,    46,   158,
     1796    -232,   672,  1193,  1254,   837,   165,  1457,    46,   138,  1412,
     1797      46,   439,   532,  1457,   146,   139,   532,   669,   415,   320,
     1798     407,   147,   148,   163,   108,   405,  1128,   435,   336,   166,
     1799     373,  1255,   723,  1129,   437,  1251,  1499,   952,   469,   443,
     1800      46,    95,   150,  1127,   838,   670,   374,   970,  1178,    74,
     1801     836,   151,   878,  1421,    46,    46,   158,   324,   464,   238,
     1802     241,    46,   141,   783,    53,  1194,   108,   698,    46,   840,
     1803     480,  1528,    94,  1530,   661,   707,  1030,    47,   426,   520,
     1804      74,   487,   430,   825,   467,    94,   475,  1031,   504,  1335,
     1805     601,   143,    30,    66,   744,   700,  1184,  1178,   837,   669,
     1806     592,  1146,   676,   841,   614,  1339,   475,  1007,   681,   104,
     1807     394,   186,   320,   452,   475,    30,   920,    46,   369,   601,
     1808     432,    30,   108,  1185,   601,   842,   874,   670,  1010,   339,
     1809     879,   879,   879,   532,    94,  1018,    46,    46,   838,   383,
     1810    1176,  1177,  1483,   878,   430,   152,    94,   492,   879,  1085,
     1811     324,   438,   480,    46,   868,   384,   174,    46,   869,   226,
     1812    1393,  1341,   485,   227,   407,  1084,   231,   525,   233,  1185,
     1813     156,  -110,   851,   634,   572,   242,    94,   638,  1397,   560,
     1814     561,    67,   432,   734,    46,   849,   735,   606,   168,   840,
     1815     483,   856,  -110,   606,    46,   369,   848,  1208,   532,   678,
     1816     680,     2,   203,     4,     5,     6,     7,   865,   163,   852,
     1817    1126,   178,    46,   855,   591,   562,   563,   598,    46,   461,
     1818      46,  1178,   879,   841,  1542,  1194,   756,  1541,   108,   225,
     1819     136,   137,  1194,   757,   872,  -110,   631,  -110,   875,   723,
     1820     635,  -110,  1372,   336,    46,   842,   108,  1552,   136,   235,
     1821     198,  1557,  1333,    94,  1556,   603,  -110,  -110,   734,  1334,
     1822     110,   735,  1442,  1443,    34,  1448,    35,  -288,    46,   108,
     1823     240,   136,   137,   608,   244,   750,    46,   369,  1142,   209,
     1824      46,    95,  1095,   236,    46,  1194,   890,   249,   237,   502,
     1825     339,  -110,  -110,   764,  1114,   247,  1250,    74,   320,   320,
     1826     581,   226,    74,    60,    53,   761,   582,  -110,   885,  -515,
     1827     403,  1100,   261,   879,  1012,   395,   396,    47,   825,   702,
     1828     397,   398,   778,   386,   399,   761,   452,   784,   761,   452,
     1829     186,   400,   401,    66,    60,   452,   324,   324,   404,   387,
     1830    1073,   901,   614,   249,   326,   407,   388,   113,  1029,   104,
     1831     523,  1031,   -10,   390,   108,   649,   136,   137,   475,   818,
     1832    1164,  1166,   389,   708,  1100,  1244,    36,  -438,   903,   391,
     1833      39,   710,   492,   723,   320,   469,   492,    40,    41,   709,
     1834     699,   327,   688,   723,  -439,    46,   525,   711,   582,   273,
     1835     525,   747,   320,   525,   212,   282,   748,    46,   723,    46,
     1836     949,   708,  1489,   833,   336,   606,    40,    41,   825,  1489,
     1837     209,   239,   324,   607,   275,   710,    94,   923,    46,  1191,
     1838     608,    67,  1283,  1284,   497,   870,   498,  1191,  1370,   871,
     1839     324,   924,   517,  -464,    46,  1192,   712,   328,   867,   827,
     1840     226,   461,   231,  1315,  1324,   212,  1512,   900,    46,   902,
     1841     276,    46,  1517,   339,   882,    63,   114,   707,   320,  1326,
     1842    1325,  1029,  1538,    74,  -464,   725,  -464,  1034,   898,   823,
     1843    -464,   726,   598,  1537,   745,  1327,   749,  1042,  1544,   769,
     1844     891,   677,   679,    74,   329,    46,    63,    46,   212,   870,
     1845     574,    74,   407,  1110,   330,  1373,   324,   331,  1089,   157,
     1846     575,   864,  1199,   509,   332,  1420,   598,   583,   601,   407,
     1847     603,   892,   873,   648,   771,   948,   407,   893,   586,  1122,
     1848     407,   218,  1049,   742,   772,   904,  1175,   407,   339,   743,
     1849     226,    46,    46,   835,   752,   608,   953,    74,   606,   866,
     1850     753,   367,   768,   368,   603,    46,   954,   669,   769,   212,
     1851      36,    60,   171,   172,    39,   698,   476,   914,   256,  1111,
     1852     438,    40,    41,   769,   758,   504,   916,   336,   759,   523,
     1853     372,   765,   769,   523,   996,   670,   523,  -103,  1009,  1382,
     1854     997,  -103,  1240,   700,   726,   381,   825,   212,   582,   452,
     1855     385,   212,  1491,   422,  1492,   553,   723,   723,  1366,   325,
     1856     554,   555,  1358,  1367,   769,   393,  1359,   256,   346,   769,
     1857       2,   203,     4,     5,     6,     7,   415,   665,   407,   492,
     1858     405,   926,    36,   699,   927,    46,    39,   886,   428,  1369,
     1859     807,  1438,  1168,    40,    41,   769,   928,    46,   402,  1374,
     1860    1439,   907,   336,   407,   734,   769,  1436,   735,  1450,  1539,
     1861     249,   326,   209,   420,   723,   723,   425,   427,   929,    42,
     1862    1242,   157,  1073,   160,  1246,   446,   209,   835,   608,   144,
     1863     533,   534,   535,    34,   827,    35,   423,   212,   108,   459,
     1864     136,   137,   444,  1458,  1189,  1071,   447,   939,   448,   769,
     1865     485,   326,   407,   942,   536,   465,   537,   463,   538,   539,
     1866    1011,  1505,    36,    63,   823,  1562,    39,  1506,   477,   466,
     1867      46,   582,    53,    40,    41,   556,   557,   476,   484,   558,
     1868     559,  1510,  1450,  1148,    46,   407,   427,   735,   160,   849,
     1869     326,   606,    46,   755,   108,    74,    -3,   476,  1160,   739,
     1870     407,    66,   564,   565,   159,   476,  1302,  1303,  1304,   740,
     1871      46,     8,     9,    10,    11,    12,  1383,   104,   212,   209,
     1872     191,   835,  1163,   214,   606,  1115,   224,   126,   462,   127,
     1873     128,   129,  1361,   608,  1340,  1342,  1343,    74,    30,  1116,
     1874    1165,   488,   606,  1138,   508,  1228,   761,   407,  1138,   732,
     1875     287,    60,   516,   256,   823,  1320,   599,   528,   452,  1235,
     1876     532,   935,   627,   935,  1000,   997,    33,   566,   212,   567,
     1877    1409,   326,   407,  1417,   569,   632,   769,  1002,   335,   632,
     1878    1379,  1380,   256,   568,   104,   431,   723,  1430,   997,    67,
     1879     795,   796,   797,   798,   723,   723,   723,  1138,   492,  1117,
     1880     320,  1436,  1437,  -435,   159,  1484,  1485,  1071,  1410,  1411,
     1881    1203,  1205,  1207,   572,   791,   792,   457,   370,  1456,   590,
     1882     699,   593,   662,  1460,   793,   794,   643,   649,   699,   477,
     1883     663,    53,   799,   800,  1054,  1524,   664,   666,   324,   533,
     1884     534,   535,   723,   159,   346,   667,   608,   431,   668,   477,
     1885     864,   671,   673,  1482,   254,   714,   910,   477,   691,   716,
     1886    1196,  -236,   754,   536,   766,   537,   159,   538,  1311,    46,
     1887     527,   770,   774,   160,   -12,   828,   104,   830,   440,   832,
     1888     843,   895,   888,   719,   915,  1100,   427,   887,   866,   917,
     1889     212,   922,   918,   164,   930,   169,   943,  -519,   175,   176,
     1890     177,   733,   179,    63,   694,    74,  -412,   957,   964,   743,
     1891     438,   427,   966,   977,   978,   427,   930,   230,   212,   981,
     1892     971,   982,   980,   212,   983,   649,   992,  1004,  1005,   245,
     1893     246,   452,   823,  1006,  1020,   339,  1021,  1022,  1023,  1551,
     1894    1024,  1025,   973,   256,   346,  1551,  1026,  1037,    67,   476,
     1895      36,  1086,   180,   181,    39,   732,  1551,  -400,   216,  -399,
     1896    1551,    40,    41,  1051,  1088,    46,  -289,  1071,  1096,  1097,
     1897    1098,   207,   217,     8,     9,    10,    11,    12,  1099,  1103,
     1898       8,     9,    10,    11,    12,   370,  1104,   693,  1105,   407,
     1899     813,   476,  1106,  1107,    53,   694,  1113,   695,  1123,  1115,
     1900      30,   769,  1124,  1138,  1138,  1138,  1001,    30,   632,   826,
     1901     212,   599,  1125,  1116,  1130,   986,  1134,   104,  1137,  1158,
     1902    1179,  1180,   845,    66,   212,  1054,  1181,  1182,    33,   457,
     1903     732,  1434,   457,  1197,  1183,    33,  1198,  1200,   457,   104,
     1904     599,  1201,  1209,  1213,  1216,   599,  1550,  1215,  1221,   336,
     1905      -3,   632,  1226,  1232,   346,   346,   346,  1243,   104,  1236,
     1906     761,  1071,   370,   497,    74,  1241,   437,  1252,  1245,  1248,
     1907    1256,    53,   346,  1117,  1259,  1261,  1263,   574,  1293,   407,
     1908    1264,  1265,  1269,  1266,  1044,  1267,  1276,   575,   209,   527,
     1909     719,  1115,  1285,   527,  1286,  1296,   527,   403,    72,  1297,
     1910    1196,   477,  1314,   395,   396,  1116,   256,   733,   397,   398,
     1911     932,    67,   399,  1299,  1322,  1071,   104,   212,  1071,   400,
     1912     401,   669,  1300,  1308,   211,   404,  1328,  1330,  1332,    72,
     1913    1289,  1336,  1337,  1338,  1344,  1345,  1346,  1348,  1523,  1354,
     1914      46,    46,  1355,   477,  1356,  1357,   346,  1138,  1138,   670,
     1915     104,  1364,  1365,  1368,  1375,   958,  1376,  1304,   427,    60,
     1916    1433,  1384,  1385,  1071,   219,  1117,  1397,    36,  1071,   180,
     1917     181,    39,   930,  1394,  1387,   211,  1404,  1405,    40,    41,
     1918    -401,   256,   733,   438,   597,   604,  1475,   985,    67,  1408,
     1919    1419,  1427,  1428,   170,  1115,  1423,   628,   629,  1071,  1425,
     1920    1429,  1435,  1145,  1440,   605,  1359,   606,  1449,  1116,  1454,
     1921    1444,  1445,  1446,  1459,   607,  1447,  1291,  1292,   211,  1294,
     1922    1461,  1463,  1465,  1467,   719,  1298,  1469,    74,  1301,  1472,
     1923    1471,    53,  1477,   146,   719,  1479,   250,   346,    53,   632,
     1924     147,   148,  1017,   632,   826,  1478,  1525,  1490,    46,   719,
     1925    1500,   349,  1044,   104,  1502,  1533,  1504,  1508,  1509,  1028,
     1926    1196,  1071,  1531,  1516,  1532,  1536,  1071,  1196,  1117,  1543,
     1927    1545,  1547,  1560,    46,    46,   158,   104,  1561,  1214,   211,
     1928    1553,   801,   804,   104,  1071,    36,  1071,   180,   181,    39,
     1929    1071,    53,   457,  1071,   802,   805,    40,    41,    46,   369,
     1930    1496,  1071,  1496,   803,    74,  1071,   173,  1313,   212,  1511,
     1931     973,    63,  1422,  1563,   973,   973,   724,   211,   476,  1247,
     1932    1196,   211,   693,  1378,   407,   445,  1395,   930,   513,  1493,
     1933    1101,   413,   695,   632,  1220,   689,   104,  1496,   718,  1496,
     1934     936,   530,   531,   690,  1102,  1133,    72,   820,    67,  1050,
     1935     894,    72,   959,   552,   433,    67,   173,  1112,  1323,   173,
     1936     737,   967,   810,     0,   441,   811,   812,   320,     0,  1109,
     1937       2,   203,     4,     5,     6,     7,     0,   427,   114,     0,
     1938       0,     0,     0,     0,   930,   930,     0,  1416,     0,   531,
     1939       0,     0,     0,     0,   346,     0,     0,     0,     0,     0,
     1940       0,   913,     0,     0,   173,   324,     0,   211,    67,   483,
     1941       8,     9,    10,    11,    12,     0,   732,     0,     0,     8,
     1942       9,    10,    11,    12,     0,   531,     0,     0,  1331,   599,
     1943       0,     0,   524,    34,     0,    35,     0,    30,     0,     0,
     1944       0,     0,   425,     0,     0,   219,    30,   719,   719,     0,
     1945     346,   346,     0,     0,    75,     8,     9,    10,    11,    12,
     1946       0,     0,     0,     0,    74,    33,     0,   173,     0,     0,
     1947    1195,    74,     0,     0,    33,     0,     0,     0,     0,    36,
     1948       0,    60,    30,    39,     0,    75,   212,     0,   211,     0,
     1949      40,    41,     0,     0,     0,     0,   732,     0,     0,     0,
     1950       0,   457,     0,     0,     0,   719,   719,   771,     0,   407,
     1951      33,   632,    72,     0,     0,  1391,    42,   772,     0,  1391,
     1952     220,   173,     0,   724,    74,     0,   144,   349,   173,     0,
     1953       0,     0,    72,     0,     0,  1003,     0,     0,   211,     0,
     1954      72,     0,     0,     0,     0,  1008,     0,     0,     0,     0,
     1955       0,     0,   953,     0,   606,     0,     0,     0,   476,     0,
     1956    1019,     0,   954,   946,     0,   947,   349,    36,   733,   171,
     1957     172,    39,   950,   951,     0,    54,    54,   956,    40,    41,
     1958     685,   212,     0,     0,   349,     0,    72,     0,    36,   961,
     1959     180,   181,    39,   930,   965,     0,   173,     0,     0,    40,
     1960      41,   788,   789,   790,   368,     0,    54,   351,     0,     0,
     1961     930,  1290,   210,   173,   727,     0,     0,   173,     0,   993,
     1962       0,  1474,   229,     0,     0,   182,     0,   349,   256,     0,
     1963       0,     0,     0,    63,     0,   183,     0,     0,    54,     0,
     1964       0,    54,     0,     0,   531,     0,   719,     0,   733,     0,
     1965       0,   524,   114,     0,     0,   524,     0,   724,   524,     0,
     1966     211,     0,     0,   210,   597,     0,     0,   724,     0,     0,
     1967       0,     0,     0,     0,   457,     0,     0,   719,     0,     0,
     1968     173,     0,   724,   930,   930,   719,   719,   719,   211,     0,
     1969       0,     0,   349,   211,     0,     0,   346,   346,     0,     0,
     1970       0,     0,    75,     0,     0,     0,   210,    75,     0,     0,
     1971    1195,     0,     0,     0,     0,     0,     0,     0,   476,     0,
     1972       0,  1038,  1039,  1040,  1041,   476,  1043,     0,   344,     0,
     1973       0,     0,     0,   719,     0,     0,     0,   349,   349,   349,
     1974       0,     0,  1087,     0,   114,     0,     0,     8,     9,    10,
     1975      11,    12,     0,     0,     0,   349,  1093,     0,  1173,  1174,
     1976      36,     0,   171,   172,    39,     0,     0,   210,     0,     0,
     1977       0,    40,    41,   349,    30,     0,     0,   531,   476,     0,
     1978     211,     0,     0,     0,    72,     0,     0,     0,     0,     0,
     1979     349,     0,     0,    54,   211,  1108,     0,   372,     0,     0,
     1980       0,   220,    33,     0,     0,   210,     0,    36,     0,   210,
     1981       0,    39,     0,     0,     0,   912,  1223,  1224,    40,    41,
     1982       0,   346,   987,    54,   919,   503,    72,     0,   921,   349,
     1983       0,     0,     0,     0,  1135,     0,    77,     0,     0,     0,
     1984       0,  1143,     0,     0,   739,   173,  1147,   114,     0,     0,
     1985       0,  1151,     0,  1152,   740,     0,     0,  1154,  1155,  1156,
     1986       0,     0,  1159,     0,     0,   349,     0,    77,    75,   531,
     1987    1195,  1171,     0,     0,     0,     0,     0,  1195,   173,     0,
     1988     724,   724,     0,   351,     0,     0,     0,   211,    75,  1186,
     1989    1187,     0,     0,     0,   173,   210,    75,     0,     0,     0,
     1990       0,     0,   221,     0,     0,     0,     0,   349,   173,     0,
     1991       0,     0,     0,     0,     0,     0,  1217,   349,     0,  1219,
     1992     349,     0,   351,     0,     0,   219,     0,   349,     0,     0,
     1993    1195,     0,   349,     0,     0,     0,     0,  1546,   724,   724,
     1994     351,  -290,    75,    36,     0,   180,   181,    39,     8,     9,
     1995      10,    11,    12,     0,    40,    41,     0,  1234,     0,     0,
     1996       0,     0,     0,  1238,  1239,     0,     0,     0,     0,     0,
     1997       0,     0,     0,     0,  1249,    30,   210,     0,     0,  1253,
     1998     262,     0,  1257,   351,  1258,     0,     0,  1260,  1347,   352,
     1999     263,     0,    84,   210,    72,     0,  1349,  1350,  1351,     0,
     2000    1268,     0,     0,    33,   344,   173,     0,     0,     0,     0,
     2001       0,     0,     0,  1275,     0,  1277,  1278,  1279,  1280,     0,
     2002       0,     0,     0,    84,     0,     0,   210,     0,     0,     0,
     2003       0,  1287,     0,  1288,     0,     0,     0,   169,     0,     0,
     2004       0,     0,     0,  1497,  1386,  1497,     0,     0,   351,     0,
     2005       0,     0,     0,     0,     0,     0,     0,     0,   222,     0,
     2006       0,  1094,   531,    54,     0,  -291,  1316,  1317,     0,     0,
     2007       0,     0,     8,     9,    10,    11,    12,   349,   211,  1321,
     2008    1497,     0,  1497,     0,    77,   409,     0,     0,     0,    77,
     2009       0,     0,   417,   351,   351,   351,     0,     0,     0,    30,
     2010       0,     0,     0,   513,   344,     0,     0,     0,     0,     0,
     2011     724,   351,     0,     0,     0,     0,  1352,  1353,   724,   724,
     2012     724,     0,     0,     0,     0,     0,  1363,    33,     0,   351,
     2013     349,   349,     0,   349,   349,     0,     0,     0,     0,     0,
     2014      75,     0,     0,     0,     0,   359,   351,     0,   210,     0,
     2015       0,     0,     0,    72,     0,     0,     0,     0,     0,     0,
     2016       0,     0,     0,     0,   409,     0,   724,     0,     0,   344,
     2017     173,     0,     0,     0,     0,     0,   210,     0,  1396,     0,
     2018       0,   210,    75,   221,     0,   351,     0,     0,   349,   349,
     2019    1400,     0,  1401,  1402,  1403,     0,     0,    36,     0,   180,
     2020     181,    39,     0,     0,  1407,     0,     0,  1210,    40,    41,
     2021       0,     0,     0,  1418,   344,   344,   344,     0,   531,   580,
     2022       0,   351,     0,     0,     0,     0,     0,   584,     0,  1431,
     2023     587,     0,   344,     0,  1521,     0,   407,     0,     0,     0,
     2024      84,     0,     0,     0,  1522,    84,     0,     0,     0,     0,
     2025      77,   349,     0,     0,     0,     0,   211,     0,     0,     0,
     2026       0,     0,     0,   351,     0,   352,     0,     0,   210,     0,
     2027      77,     0,     0,   351,     0,     0,   351,     0,    77,     0,
     2028       0,   220,   210,   351,     0,  1480,  1481,     0,   351,     0,
     2029       0,     0,     0,   409,   219,     0,     0,   417,  1486,     0,
     2030       0,     0,   503,     0,   352,  1486,   344,     0,     0,     0,
     2031       0,     0,     0,     0,     0,     0,    72,     0,     0,     0,
     2032       0,     0,   352,     0,    77,     0,     0,     0,     0,   349,
     2033       0,   349,     0,     0,     0,     0,     0,     0,  1520,   222,
     2034       0,     0,  1526,     0,     0,     0,     0,     0,     0,     0,
     2035      75,   211,     0,     0,     0,     0,     0,     0,     0,     0,
     2036     349,     0,     0,     0,     0,   352,     0,     0,   349,   349,
     2037     349,  1548,     0,  1549,     0,   210,     0,     0,     0,   349,
     2038     349,     0,   409,     0,     8,     9,    10,    11,    12,     0,
     2039       0,     0,     0,    72,     0,     0,     0,   344,     0,     0,
     2040       0,  1564,  1565,     0,   344,     0,    84,     0,     0,  1568,
     2041    1569,    30,     0,     0,     0,     0,   349,     0,     0,     0,
     2042       0,   359,     0,     0,     0,     0,    84,     0,     0,     0,
     2043     352,     0,     0,   351,    84,     0,     0,     0,     0,    33,
     2044       0,     0,     0,     0,    36,  1377,   180,   181,    39,     0,
     2045       0,     0,     0,     0,     0,    40,    41,     0,     0,     0,
     2046     359,     0,     0,     0,     0,   173,     0,     0,     0,     0,
     2047       0,    54,     0,   580,   580,   352,   352,   352,   359,     0,
     2048      84,   605,     0,   606,     0,     0,   351,   351,     0,   351,
     2049     351,   607,     0,   352,     0,     0,     0,     0,     0,     0,
     2050       0,     0,     0,     0,   349,     0,     0,     0,     0,    75,
     2051       0,   352,     0,     0,     0,     0,     0,     0,     0,     0,
     2052       0,   359,    77,     0,     0,     0,     0,     0,   352,     8,
     2053       9,    10,    11,    12,     0,     0,     0,     0,    54,     0,
     2054       0,     0,     0,     0,   351,   351,     0,   123,   123,   123,
     2055       0,     0,     0,    72,   344,     0,    30,     0,     0,     0,
     2056      72,   905,     0,     0,    77,   908,   210,   352,   540,   541,
     2057     542,   543,   544,   545,   546,   547,   548,   549,     0,     0,
     2058       0,     0,     0,     0,    33,     0,   359,     0,     0,    36,
     2059       0,   180,   181,    39,     0,     0,     0,     0,   409,     0,
     2060      40,    41,   550,   352,  1494,     0,  1498,   351,     0,     0,
     2061     344,   344,     0,    72,     0,     0,     0,     0,   123,     0,
     2062     123,     0,     0,     0,     0,     0,   693,     0,   407,     0,
     2063      54,   359,   359,   359,     0,     0,   695,     0,     0,     0,
     2064     173,  1527,     0,  1529,   272,   352,     0,     0,     0,   359,
     2065     220,     0,     0,     0,     0,   352,     0,     0,   352,     0,
     2066       0,     0,     0,   221,     0,   352,     0,   359,     0,     0,
     2067     352,     0,    75,     0,     0,     0,     0,     0,    84,     8,
     2068       9,    10,    11,    12,   359,   351,  1558,   351,  1559,     0,
     2069       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2070     123,  1566,  1567,     0,     0,     0,    30,     0,   123,     0,
     2071     123,   123,   580,     0,     0,   123,   351,   123,   123,    30,
     2072      84,     0,     0,   359,   351,   351,   351,     0,     0,   121,
     2073     124,   125,    77,     0,    33,   351,   351,     0,     0,    36,
     2074       0,   180,   181,    39,   210,     0,     0,    33,     0,    75,
     2075      40,    41,    36,     0,   180,   181,    39,     0,     0,   359,
     2076       0,     0,     0,    40,    41,     0,     0,     0,     0,     0,
     2077      54,    54,   351,     0,     0,     0,  1521,     0,   407,     0,
     2078       0,     0,     0,     0,     0,     0,  1522,   123,     0,   182,
     2079       0,     0,     0,    54,     0,     0,     0,     0,     0,   183,
     2080     251,   359,   252,     0,     0,     0,     0,     0,   208,     0,
     2081       0,   359,    54,     0,   359,   352,     0,     0,   228,   222,
     2082     232,   359,   234,     0,   162,   409,   359,     0,     0,   243,
     2083       0,     0,     0,     0,     0,     0,     0,     0,     0,   210,
     2084       0,     0,     0,   215,     0,     0,     0,     0,     0,     0,
     2085       8,     9,    10,    11,    12,     0,   344,   344,     0,   208,
     2086     351,   232,   234,   243,     0,    54,     0,     0,   352,   352,
     2087      54,   352,   352,     0,     0,     0,     0,    30,     0,     0,
     2088       0,     0,   392,     0,     0,     0,     0,     0,    84,   162,
     2089       0,    77,   411,   412,   269,     0,     0,   416,     0,   418,
     2090     419,     0,   208,  1149,    54,    33,     0,     0,     0,    75,
     2091      36,     0,   180,   181,    39,     0,    75,     0,     0,  1161,
     2092       0,    40,    41,   162,     0,     0,   352,   352,     0,     0,
     2093       0,     0,     0,   365,     0,     0,     0,   371,     0,     0,
     2094       0,     0,     0,     0,     0,     0,     0,   262,     0,     0,
     2095       0,     0,     0,     0,     0,     0,     0,   263,     0,     0,
     2096       0,     0,     0,   208,     0,   232,   234,   243,     0,    75,
     2097       0,   359,     0,     0,     0,     0,     0,     0,     0,     0,
     2098       0,   344,     0,     0,     0,     0,   162,     0,     0,   352,
     2099       0,     0,     0,     0,     0,     0,  1229,     0,   215,     0,
     2100       0,   208,     0,     0,     0,   208,     0,    54,     0,     0,
     2101       0,     0,     0,     0,     0,     0,   162,   458,     0,     0,
     2102       0,   501,     0,     0,   359,   359,     0,   359,   359,     0,
     2103      54,     0,   221,     0,     0,     0,     0,    54,     0,     0,
     2104     371,     0,     0,     0,     0,     0,     0,    84,   162,     0,
     2105       0,     0,     0,     0,    77,     0,     0,     0,     0,     0,
     2106       0,     0,     0,     0,     0,     0,     0,   352,     0,   352,
     2107     208,   458,     0,     0,   162,     0,     0,     0,     0,     0,
     2108       0,     0,   359,   359,     0,     0,     0,     0,     0,     0,
     2109      54,   208,     0,     0,     0,     0,   232,   234,   352,     0,
     2110     123,   123,     0,     0,   243,     0,   352,   352,   352,     0,
     2111       0,     0,     0,     0,     0,     0,     0,   352,   352,     0,
     2112       0,   602,     0,     0,     0,     0,   626,     0,     0,     0,
     2113     123,    77,     0,   123,   123,   279,   123,   280,   123,   123,
     2114       0,     0,     0,   123,   123,   359,     0,   208,     0,     0,
     2115       0,     0,     0,     0,   352,     0,     0,     0,     0,     0,
     2116       0,     0,     0,   281,     0,   208,     0,     0,     0,   282,
     2117     208,     0,   208,   283,     0,     0,   284,   285,   286,   287,
     2118      40,    41,     0,   288,   289,     0,     0,     0,   222,   208,
     2119       0,   290,   208,   208,     0,     0,     0,     0,     0,     0,
     2120       0,     0,   162,   162,     0,     0,   510,     0,   208,   365,
     2121      84,     0,     0,     0,     0,   293,   377,   295,   296,   297,
     2122     298,   123,   208,   359,     0,   359,   123,   123,     0,   208,
     2123     458,     0,   123,   458,     0,     0,     0,     0,     0,   458,
     2124       0,     0,   352,     0,     0,     0,     0,     0,     0,     0,
     2125       0,     0,     0,     0,   359,     0,     0,     0,     0,     0,
     2126       0,     0,   359,   359,   359,     0,   736,     0,     0,     0,
     2127       0,     0,     0,   359,   359,     0,     0,     0,   162,     0,
     2128       0,     0,   815,   816,     0,     0,   153,    84,     0,     0,
     2129     458,    77,     0,     0,   458,     0,   162,   458,    77,     0,
     2130       0,     0,     0,     0,     0,     0,     0,     0,     0,   365,
     2131     359,     0,   850,     0,     0,   853,   854,     0,   857,     0,
     2132     859,   860,     0,     0,     0,   861,   862,     0,     0,     0,
     2133       0,     0,   248,     0,     0,     0,     0,     0,     0,     0,
     2134       0,     0,   253,     0,   208,     0,     0,     0,     0,     0,
     2135       0,    77,     0,     0,     0,     0,     0,     0,     0,     0,
     2136       0,     0,   162,     0,     0,     0,     0,     0,     0,     0,
     2137       0,     0,   208,     0,   365,     0,   602,   208,     0,   831,
    20812138       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2082       18,    19,    20,    21,    22,    23,    24,  -285,     0,    84,
    2083      594,     0,     0,     0,   733,     0,    84,    30,     0,     0,
    2084        0,     0,     0,     0,     0,     0,   162,     0,     0,     0,
    2085        0,     0,     0,    77,     0,     0,     0,     0,   456,     0,
    2086       33,     0,   456,     0,   162,   456,     0,     0,     0,     0,
    2087        0,  -285,     0,     0,     0,     0,     0,   364,     0,     0,
    2088       84,     0,   123,   123,     0,     0,     0,  1033,  1034,  1035,
    2089     1036,     0,  1038,     0,     0,     0,     0,     0,     0,     0,
    2090        0,     0,     0,     0,     0,     0,     0,     0,  1080,     0,
    2091        0,     0,   123,     0,     0,   123,   123,     0,   123,     0,
    2092      123,   123,  1086,     0,     0,   123,   123,     0,     0,   162,
    2093        0,     0,   811,   812,     0,     0,     0,     0,     0,     0,
    2094        0,   364,     0,   599,     0,     0,   827,     0,     0,     0,
     2139      18,    19,    20,    21,    22,    23,    24,   153,   359,    25,
     2140      26,    27,     0,     0,     0,   602,     0,    30,   937,   938,
     2141     602,   382,     0,     0,   940,     0,     0,     0,     0,   365,
     2142     365,   365,     0,     0,     0,     0,     0,     0,     0,     0,
     2143       0,     0,     0,     0,   414,    33,     0,   365,     0,     0,
     2144      36,     0,    37,    38,    39,     0,     0,    84,   429,     0,
     2145       0,    40,    41,     0,    84,     0,     0,   434,     0,     0,
     2146       0,     0,     0,     0,   208,     0,     0,   442,     0,     0,
     2147       0,     0,   736,     0,     0,     0,     0,    42,   208,   154,
     2148       0,   279,     0,   280,     0,     0,     0,    44,     0,     0,
     2149       0,     0,   468,   458,     0,     0,     0,   478,   501,     0,
     2150       0,     0,     0,     0,     0,     0,     0,    84,     0,   281,
     2151     486,   365,     0,   955,     0,   282,   496,     0,   500,   283,
     2152       0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
     2153     289,     0,     0,     0,     0,   529,     0,   290,     0,     0,
     2154       0,     0,     0,     0,     0,     0,     0,   736,     0,     0,
     2155       0,     0,   291,     0,   375,     0,     0,   376,   208,     0,
     2156       0,   293,   377,   295,   296,   297,   298,     0,     0,     0,
     2157       0,   208,     0,     0,     0,     0,     0,     0,   589,     0,
     2158       0,     0,     0,   594,     0,     0,     0,     0,     0,     0,
     2159     208,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2160       0,     0,   365,     0,     0,     0,   626,     0,     0,   365,
     2161       0,   640,     0,     0,   123,   641,   642,     0,   644,     0,
     2162       0,     0,     0,     0,     0,   655,   656,     0,   657,   658,
     2163       0,   659,     0,   660,     0,     0,     0,     0,     0,     0,
     2164       0,  1027,     0,     0,     8,     9,    10,    11,    12,     0,
     2165     589,     0,     0,     0,     0,     0,     0,     0,   675,     0,
    20952166       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2096        0,  1101,   846,     0,     0,   849,   850,     0,   853,     0,
    2097      855,   856,   599,     0,     0,   857,   858,   599,     0,     0,
    2098        0,     0,     0,     0,     0,     0,   364,   364,   364,     0,
     2167     279,    30,   280,     0,     0,     0,     0,   208,     0,     0,
     2168       0,     0,     0,   686,     0,     0,     0,     0,     0,     0,
     2169       0,     0,     0,     0,   692,     0,     0,     0,   281,    33,
     2170       0,     0,   458,   208,   282,     0,     0,     0,   283,     0,
     2171       0,   284,   285,   286,   287,    40,    41,   728,   288,   289,
     2172       0,     0,     0,   731,     0,     0,   290,     0,   468,     0,
     2173     208,     0,     0,     0,     0,     0,     0,   123,     0,     0,
     2174       0,   291,     0,   375,   162,     0,     0,     0,     0,     0,
     2175     293,   821,   295,   296,   297,   298,     0,     0,     0,   365,
     2176       0,     0,   208,     0,   767,     0,     0,     0,     0,     0,
     2177       0,     0,     0,   208,     0,     0,     0,     0,     0,     0,
     2178     782,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2179       0,     0,     0,     0,   602,     0,  1225,     0,     0,  1169,
     2180       0,     0,     8,     9,    10,    11,    12,     0,     0,     0,
     2181       0,     0,     0,     0,     0,   365,   365,   809,     0,     0,
     2182       0,     0,     0,     0,     0,   318,   819,     0,   279,    30,
     2183     280,     0,     0,   822,     0,   342,     0,     0,   829,     0,
     2184       0,     0,     0,     0,     0,     0,     0,   378,   378,   844,
     2185       0,     0,     0,     0,   208,     0,   281,    33,     0,     0,
     2186       0,     0,   282,     0,     0,     0,   283,     0,     0,   284,
     2187     285,   286,   287,    40,    41,   458,   288,   289,     0,     0,
     2188       0,     0,     0,     0,   290,     0,     0,     0,     0,     0,
     2189     884,     0,     0,     0,     0,     0,     0,     0,     0,   291,
     2190       0,   375,     0,     0,     0,     0,     0,     0,   293,  1170,
     2191     295,   296,   297,   298,     0,     0,     0,     0,   318,  1312,
     2192       0,     0,     0,     0,     0,   829,     0,   338,   360,     0,
     2193       0,     0,     0,   736,     0,     0,     0,     0,     0,     0,
     2194     208,     0,     0,   482,     8,     9,    10,    11,    12,    13,
     2195      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2196      24,   410,     0,    25,    26,    27,     0,     0,   410,     0,
     2197       0,    30,     0,     0,     0,   215,     0,     0,     0,     0,
     2198     248,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2199     962,   963,     0,     0,     0,     0,     0,     0,     0,    33,
     2200       0,     0,     0,   979,    36,     0,    37,    38,    39,     0,
     2201       0,     0,     0,   736,     0,    40,    41,     0,     0,     0,
     2202     994,     0,   995,     0,     0,     0,   999,     0,     0,     0,
     2203       0,     0,     0,     0,     0,   208,     0,     0,     0,     0,
     2204     410,    42,     0,    43,     0,     0,     0,     0,     0,     0,
     2205       0,    44,     0,     0,     0,     0,     0,     0,   378,     0,
     2206       0,   365,   365,     0,     0,     0,     0,     0,     0,     0,
     2207     215,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2208       0,   279,     0,   280,     0,     0,     0,     0,     0,     0,
     2209       0,     0,  1032,     0,     0,   410,     0,     0,     0,  1033,
     2210       0,     0,     0,   410,   585,     0,   410,   588,     0,   281,
     2211       0,     0,  1035,     0,  1036,   645,   360,   136,   137,   283,
     2212     618,     0,   284,   646,   286,   287,    40,    41,  1048,   288,
     2213     289,     0,     0,     0,     0,  1052,     0,   290,     0,   636,
     2214       0,     0,   338,     0,     0,     0,     0,  1090,     0,     0,
     2215    1091,     0,   291,     0,   647,     0,   648,   376,     0,     0,
     2216     730,   293,   377,   295,   296,   297,   298,     0,   594,   410,
     2217       0,     0,     0,   410,     0,     0,     0,     0,     0,     0,
     2218       0,     0,     0,     0,     0,     0,   365,     0,     0,     0,
     2219       0,     0,     0,     0,     0,     0,     0,     0,   763,     0,
     2220       0,     0,     0,     0,   360,     0,     0,     0,     0,     0,
     2221       0,   776,     0,     0,     0,     0,     0,     0,   763,     0,
     2222       0,   763,     0,     0,     0,     0,     0,   410,     0,     0,
     2223       0,     0,   786,   787,     0,     0,     0,     0,     0,     0,
     2224       0,     0,     0,     0,   458,     0,   458,     0,     0,     0,
     2225       0,     0,     0,     0,   808,     0,  1153,     0,   410,     0,
     2226       0,   360,     0,     0,   817,     0,     0,     0,     0,     0,
     2227       0,   342,     0,     0,     0,     0,   776,     0,     0,     0,
     2228       0,   458,     0,   458,     0,     0,     0,     0,     0,     0,
     2229       0,   208,     0,     0,     0,     0,     0,     0,     0,     0,
     2230     410,     0,     0,   338,   360,     0,     0,     0,     0,     0,
     2231       0,   162,   529,     0,     0,     0,     0,     0,     0,  1218,
     2232       0,     0,     0,     0,     0,     0,   883,     0,     0,     0,
     2233       0,     0,     0,     0,   378,     0,     0,     0,     0,     0,
     2234       0,     0,     0,     0,     0,     0,     0,     0,  1231,   410,
     2235     410,     0,     0,  1233,     0,     0,     0,     0,     0,     0,
     2236       0,  1237,     0,     0,     0,     0,     0,     0,   824,   360,
     2237       0,   360,     0,     0,   342,     0,     0,     0,     0,     0,
     2238     618,     0,   618,   618,     0,     0,     0,     0,     0,   618,
     2239       0,  1262,     0,     0,     0,     0,     0,     0,     0,   863,
     2240     360,     0,     0,  1270,     0,   360,  1271,     0,  1272,     0,
     2241       0,     0,     0,     0,   360,   360,   360,     0,     0,     0,
     2242       0,     0,  1281,  1282,     0,     0,     0,     0,     0,     0,
     2243       0,     0,   360,     0,     0,     0,     0,   410,   906,     0,
     2244       0,   410,   909,     0,  1295,     0,     0,     0,   911,   776,
     2245       0,   984,     0,     0,     0,     0,     0,   989,     0,     0,
     2246       0,     0,     0,     0,   998,     0,   338,   360,   410,     0,
     2247     410,  1318,     0,     0,   410,     0,     8,     9,    10,    11,
     2248      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2249      22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
     2250       0,     0,     0,    30,   450,     0,   360,   618,  1015,  1016,
     2251       0,   342,     0,     0,     0,     0,     0,     0,     0,     0,
     2252       0,     0,     0,     0,     0,     0,   342,     0,     0,     0,
     2253       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2254       0,   338,   360,     0,     0,     0,   410,   410,     0,     0,
    20992255       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2100     1128,     0,     0,   123,   364,     0,     0,  1136,   123,   123,
    2101        0,  1140,     0,     0,   123,     0,  1144,     0,  1145,     0,
    2102        0,     0,  1147,  1148,  1149,     0,     0,  1152,     0,     0,
    2103        0,     0,     0,     0,     0,     0,  1164,     0,     0,   733,
     2256       0,     0,     0,     0,     0,     0,  1046,  1388,     0,  1389,
     2257     378,     0,     0,     0,     0,   451,     0,     0,     0,   706,
     2258       0,     0,  1398,   109,  1399,     0,     0,     0,   410,     0,
     2259       0,     0,     0,     0,     0,     0,     0,   360,     0,     0,
     2260       0,     0,  1406,   824,   360,     0,     0,     0,   618,     0,
     2261     618,     0,     0,     0,   511,   512,   515,     0,  1424,  1426,
     2262     618,     0,     0,   518,   519,     0,     0,     0,   512,   512,
     2263    1432,     0,     0,  1237,     0,     0,     0,     0,     0,     0,
     2264     512,     0,     0,     0,     0,     0,   318,     0,     0,     0,
     2265       0,     0,     0,     0,     0,  1455,     0,     0,     0,     0,
     2266       0,  1131,  1132,     0,  1462,     0,     0,  1464,   378,  1466,
     2267    1468,  1470,     0,     0,   989,     0,   512,  1141,     0,   763,
    21042268       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2105        0,     0,     0,     0,  1179,  1180,     0,     0,   933,   934,
    2106      456,     0,     0,     0,   936,     0,     0,     0,     0,     0,
    2107        0,     0,     0,     0,     0,     0,     0,     0,   364,  1209,
    2108      951,     0,  1211,     8,     9,    10,    11,    12,    13,    14,
    2109       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2110        0,     0,    25,    26,    27,     0,     0,   207,     0,     0,
    2111       30,     0,     0,     0,   733,     0,     0,   227,     0,   231,
    2112     1226,   233,     0,     0,     0,     0,  1230,  1231,   242,     0,
    2113        0,     0,     0,    33,     0,     0,     0,  1241,     0,     0,
    2114      203,    38,  1245,     0,     0,  1249,     0,  1250,     0,     0,
    2115     1252,     0,     0,     0,     0,     0,     0,     0,   207,     0,
    2116      231,   233,   242,  1260,     0,     0,     0,     0,   364,     0,
    2117        0,     0,   623,     0,     0,   364,  1267,     0,  1269,  1270,
    2118     1271,  1272,     0,     0,   267,     0,     0,     0,     0,     0,
    2119        0,     0,     0,     0,  1279,     0,  1280,     0,     0,     0,
    2120      168,   207,     0,     0,     0,     0,     0,     0,     0,     0,
     2269       0,     0,     0,   824,     0,     0,     0,     0,     0,  1157,
     2270       0,   410,     0,     0,     0,     0,     0,   410,     0,     0,
     2271    1172,  1501,   512,  1503,     0,   410,  1237,     0,     0,     0,
     2272       0,     0,     0,     0,     0,     0,     0,     0,   618,   618,
     2273       0,  1515,   378,     0,  1190,     0,     0,     0,     0,     0,
     2274       0,     0,     0,     0,     0,     0,     0,     0,     0,   989,
     2275     989,     0,     0,     0,   360,     0,     0,     0,     0,     0,
     2276     410,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2277    1222,     0,     0,     0,     0,     0,     0,     0,     0,   410,
     2278    1150,   279,     0,   280,     0,     0,     0,     0,     0,   360,
     2279       0,     0,     0,     0,     0,   410,  1162,     0,   618,   618,
     2280    1167,     0,     0,     0,     0,     0,     0,     0,     0,   281,
     2281     360,   360,     0,     0,     0,   282,   989,     0,     0,   283,
     2282       0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
     2283     289,     0,     0,     0,     0,   883,     0,   290,     0,     0,
    21212284       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2122        0,     0,     0,     0,     0,     0,     0,     0,  1304,  1305,
    2123        0,     0,   201,     2,   202,     4,     5,     6,     7,     8,
    2124        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2125       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2126       27,   207,     0,   231,   233,   242,    30,     0,   456,     0,
    2127        0,     0,     0,     0,     0,   153,     0,     0,  1340,  1341,
    2128        0,     0,     0,     0,     0,     0,     0,     0,  1351,    33,
    2129        0,    34,     0,    35,    36,     0,   203,    38,    39,   207,
    2130        0,     0,     0,   207,     0,    40,    41,     0,     0,     0,
    2131      162,     0,     0,     0,     0,     0,     0,     0,     0,   499,
    2132        0,   247,     0,     0,     0,   364,     0,     0,     0,     0,
    2133       42,   252,   204,     0,     0,     0,  1380,     0,     0,     0,
    2134      205,     0,     0,     0,     0,     0,     0,     0,  1384,     0,
    2135     1385,  1386,  1387,     0,     0,     0,     0,     0,     0,   599,
    2136        0,     0,  1391,     0,     0,     0,     0,     0,   207,     0,
    2137        0,  1402,     0,     0,   278,     0,   279,     0,     0,     0,
    2138      364,   364,     0,  1410,     0,     0,   153,     0,     0,   207,
    2139        0,     0,   123,     0,   231,   233,     0,   280,     0,   380,
    2140        0,     0,   242,   281,     0,     0,     0,   282,     0,     0,
    2141      283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
    2142        0,     0,   412,     0,     0,   289,     0,     0,     0,     0,
    2143        0,     0,     0,     0,  1454,  1455,   427,     0,   456,   290,
    2144        0,   374,  1217,     0,   207,   432,   772,  1460,   292,   376,
    2145      294,   295,   296,   297,  1460,   440,     0,     0,     0,     0,
    2146        0,     0,   207,     0,     0,     0,     0,   207,     0,   207,
     2285    1273,  1274,   291,     0,   375,     0,     0,     0,     0,     0,
     2286     806,   293,   377,   295,   296,   297,   298,     0,     0,     0,
     2287       0,   824,   410,  1230,     0,     0,     0,     0,     0,     0,
     2288       0,     0,     0,     0,   618,     0,     0,     0,   512,   512,
     2289     512,   512,   512,   512,   512,   512,   512,   512,   512,   512,
     2290     512,   512,   512,   512,   512,   512,     0,     0,     0,     0,
    21472291       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2148      466,     0,  1490,     0,     0,   476,   207,     0,     0,   207,
    2149      207,     0,     0,     0,     0,     0,   733,     0,   484,     0,
    2150        0,     0,     0,     0,   494,   207,   498,     0,     0,     0,
    2151     1514,     0,     0,     0,   123,     0,     0,     0,     0,   207,
    2152        0,     0,     0,   527,     0,     0,   207,     0,     0,     0,
    2153        0,     0,     0,     0,     0,     0,  1527,     0,   214,     0,
    2154        0,  1529,     0,     0,     0,     0,     0,     0,     0,     0,
     2292       0,     0,     0,     0,     0,     0,     0,     0,   360,     0,
     2293     989,   512,  -514,     0,     0,     1,     2,     3,     4,     5,
     2294       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2295      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2296       0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
     2297      31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2298      17,    18,    19,    20,    21,    22,    23,    24,   338,     0,
     2299       0,  1381,     0,   763,    32,     0,     0,    33,    30,    34,
     2300       0,    35,    36,     0,    37,    38,    39,     0,   360,     0,
     2301       0,     0,     0,    40,    41,     0,     0,     0,     0,     0,
     2302       0,     0,     0,     0,     0,     0,    33,     0,     0,   512,
     2303       0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
     2304       0,    43,     0,     0,     0,     0,     0,     0,     0,    44,
     2305       0,   512,     0,     0,     0,     0,   360,   360,     0,     0,
     2306       0,     0,     0,     0,   512,     0,     0,     0,     0,     0,
     2307       0,     0,     0,     0,     0,     0,     0,     0,     0,  1441,
    21552308       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2156        0,     0,     0,     0,  1300,     0,   586,     0,     0,     0,
    2157        0,   591,     0,     0,     0,   733,     0,     0,     0,     0,
    2158        0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2159       17,    18,    19,    20,    21,    22,    23,    24,     0,   637,
    2160       25,    26,    27,   638,   639,     0,   641,     0,    30,     0,
    2161        0,     0,   652,   653,     0,   654,   655,     0,   656,     0,
    2162      657,     0,  1162,   364,   364,     8,     9,    10,    11,    12,
    2163        0,    33,   214,     0,     0,     0,     0,   586,   203,    38,
    2164      207,     0,     0,     0,     0,   672,     0,     0,     0,     0,
    2165        0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
    2166        0,     0,     0,     0,     0,     0,     0,     0,   207,     0,
    2167      683,     0,     0,   207,   280,    33,     0,     0,     0,     0,
    2168      281,   689,   622,     0,   282,     0,     0,   283,   284,   285,
    2169      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2170        0,     0,   289,     0,   725,     0,     0,     0,     0,     0,
    2171      728,     0,     0,     0,     0,   466,   290,     0,   374,     0,
    2172        0,     0,     0,     0,     0,   292,  1163,   294,   295,   296,
    2173      297,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2174      364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2175        0,   764,     0,     0,   509,   510,   513,     0,     0,     0,
    2176      207,     0,     0,   516,   517,     0,     0,   779,   510,   510,
    2177        0,     0,     0,     0,   207,     0,     0,     0,     0,     0,
    2178      510,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2179        0,     0,     0,   456,   499,     0,     0,     0,     0,     0,
    2180        0,     0,     0,   805,   337,   359,     0,     0,     0,     0,
    2181        0,     0,   815,     0,     0,     0,   510,     0,     0,   818,
    2182        0,     0,     0,   456,   825,     0,     0,     0,     0,     0,
    2183        0,     0,     0,     0,     0,   840,     0,   408,     0,     0,
    2184        0,     0,     0,     0,   408,     0,     0,     0,   162,     0,
    2185        0,     0,   510,   207,     0,     0,     0,     0,     0,     0,
    2186        0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
    2187        0,     0,     0,     0,     0,     0,   880,     0,     0,     0,
    2188        0,     0,     0,  -505,     0,   207,     1,     2,     3,     4,
     2309       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2310       0,     0,     0,     0,     0,     0,     0,     0,     0,   512,
     2311       0,     0,     0,     0,     0,     0,     1,     2,   203,     4,
    21892312       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    21902313      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2191        0,   825,    25,    26,    27,    28,   408,     0,    29,     0,
    2192       30,    31,     0,     0,     0,     0,     0,     0,     0,     0,
     2314       0,   512,    25,    26,    27,    28,     0,     0,    29,   279,
     2315      30,   280,     0,     0,     0,     0,   512,     0,     0,     0,
     2316       0,  1507,     0,     0,     0,     0,     0,     0,     0,     0,
     2317       0,     0,     0,     0,     0,     0,     0,   281,    33,     0,
     2318      34,   360,    35,   282,     0,    37,    38,   283,     0,     0,
     2319     284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
     2320       0,     0,     0,     0,     0,   290,     0,     0,     0,     0,
     2321       0,     0,     0,   318,     0,     0,     0,     0,     0,     0,
     2322     291,     0,  1069,     0,     0,     0,     0,     0,     0,   293,
     2323     294,   295,   296,   297,   298,     0,     0,     0,     0,     0,
     2324       0,     0,     0,  -127,     0,     0,     0,     0,     0,     0,
    21932325       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2194       32,     0,     0,    33,     0,    34,     0,    35,    36,     0,
    2195       37,    38,    39,     0,     0,     0,     0,     0,     0,    40,
    2196       41,     0,     0,     0,     0,     0,   247,     0,     0,     0,
    2197        0,   408,   207,     0,     0,     0,   958,   959,     0,   408,
    2198      582,     0,   408,   585,    42,     0,    43,     0,     0,   975,
    2199        0,     0,   359,     0,    44,     0,   615,     0,   207,     0,
    2200        0,     0,     0,     0,     0,     0,   990,     0,   991,     0,
    2201        0,     0,   995,     0,     0,   633,     0,     0,   337,     0,
    2202        0,     0,     0,     0,     0,   207,   510,   510,   510,   510,
    2203      510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
    2204      510,   510,   510,   510,   408,     0,     0,     0,   408,   278,
    2205        0,   279,     0,     0,     0,     0,   207,     0,     0,     0,
    2206        0,     0,     0,     0,     0,     0,     0,   207,     0,   510,
    2207        0,     0,   280,     0,     0,     0,     0,  1027,   642,   359,
    2208      136,   137,   282,     0,  1028,   283,   643,   285,   286,    40,
    2209       41,     0,   287,   288,     0,     0,     0,  1030,     0,  1031,
    2210      289,     0,   408,     0,     0,     0,     0,     0,     0,     0,
    2211        0,     0,     0,  1043,   290,     0,   644,     0,   645,   375,
    2212     1047,     0,     0,   292,   376,   294,   295,   296,   297,     0,
    2213        0,     0,  1083,   408,     0,  1084,   359,     0,     0,     0,
    2214        0,     0,     0,     0,     0,     0,   207,     0,     0,     0,
    2215        0,     0,     0,   591,     0,     0,     0,     0,     0,     0,
    2216        0,     0,     0,     0,     0,     0,     0,   510,     0,     0,
    2217        0,     0,     0,     0,     0,   408,     0,     0,   337,   359,
    2218        0,     0,     0,     0,     0,     0,     0,     0,     0,   510,
    22192326       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2220      317,     0,   510,     0,     0,     0,     0,     0,     0,     0,
    2221      341,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2222        0,     0,   377,   408,   408,     0,     0,     0,     0,     0,
    2223        0,     0,   207,     0,     0,     0,     0,     0,     0,     0,
    2224     1146,     0,   820,   359,     0,   359,     0,   510,     0,     0,
    2225        0,     0,     0,     0,   615,     0,   615,   615,     0,     0,
    2226        0,     0,     0,   615,     0,     0,     0,     0,     0,     0,
    2227        0,     0,     0,   859,   359,     0,     0,     0,   510,   359,
    2228        0,     0,     0,     0,     0,     0,     0,     0,   359,   359,
    2229      359,     0,   317,   510,     0,   527,     0,     0,     0,     0,
    2230        0,  1210,     0,     0,     0,     0,   359,     0,     0,     0,
    2231        0,   408,   902,     0,     0,   408,   905,   480,     0,     0,
    2232        0,     0,   907,     0,     0,     0,   207,     0,     0,     0,
    2233     1223,     0,     0,     0,     0,  1225,     0,     0,     0,     0,
    2234      337,   359,   408,  1229,   408,     0,     0,     0,   408,   201,
    2235        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2236       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2237       22,    23,    24,  1254,     0,    25,    26,    27,     0,     0,
    2238      359,   615,     0,    30,     0,  1262,     0,     0,  1263,     0,
    2239     1264,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2240        0,     0,     0,     0,  1273,  1274,    33,     0,    34,     0,
    2241       35,     0,     0,   203,    38,   337,   359,     0,     0,     0,
    2242      408,   408,     0,     0,     0,     0,  1287,     0,     0,     0,
    2243        0,     0,   377,     0,     0,     0,     0,     0,     0,     0,
    2244        0,     0,     0,     0,   510,     0,     0,     0,     0,   204,
    2245        0,     0,  1306,     0,     0,     0,     0,   267,     0,     0,
    2246        0,   408,     0,     0,     0,     0,     0,     0,     0,     0,
    2247      359,     0,     0,   510,     0,     0,   820,   359,     0,     0,
    2248        0,   615,     0,   615,     0,   510,     0,     0,     0,     0,
    2249        0,     0,     0,   615,     0,     0,     0,     8,     9,    10,
     2327       0,   410,   471,     2,   203,     4,     5,     6,     7,     8,
     2328       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2329      19,    20,    21,    22,    23,    24,   410,   410,    25,    26,
     2330      27,     0,     0,     0,     0,     0,    30,   512,     0,     0,
     2331       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2332       0,   410,     0,     0,     0,     0,     0,     0,     0,     0,
     2333       0,     0,     0,     0,    33,     0,    34,   512,    35,     0,
     2334       0,    37,    38,     0,     0,     0,     0,     0,     0,   512,
     2335       1,     2,   203,     4,     5,     6,     7,     8,     9,    10,
    22502336      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2251       21,    22,    23,    24,  -285,     0,    25,    26,    27,     0,
    2252        0,     0,     0,     0,    30,     0,   510,     0,     0,     0,
    2253        0,     0,     0,   727,     0,     0,     0,     0,     0,     0,
    2254        0,     0,     0,     0,  1372,     0,  1373,    33,     0,     0,
    2255        0,     0,    36,     0,   332,   333,    39,   207,  -285,  1382,
    2256        0,  1383,     0,    40,    41,     0,   820,     0,     0,     0,
    2257        0,   760,     0,     0,   408,     0,     0,     0,     0,  1390,
    2258      408,     0,     0,     0,   773,     0,     0,     0,   408,     0,
    2259      334,   760,     0,     0,     0,  1408,   510,     0,   109,     0,
    2260        0,   615,   615,  1411,   782,   783,  1229,     0,     8,     9,
    2261       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2262       20,    21,    22,    23,    24,  -286,   804,   359,  1434,     0,
    2263        0,     0,     0,   408,     0,    30,   813,  1441,     0,   510,
    2264     1443,  1445,     0,   341,     0,     0,     0,     0,   773,     0,
    2265        0,   408,  1143,   510,   510,     0,     0,     0,    33,     0,
    2266        0,   359,     0,     0,     0,     0,     0,   408,  1155,  -286,
    2267      615,   615,  1160,     0,     0,     0,     0,  1473,     0,  1229,
    2268        0,     0,   359,   359,     0,     0,     0,     0,     0,     0,
    2269        0,     0,     0,     0,  1485,     0,     0,     0,   879,     0,
    2270        0,     0,     0,     0,     0,     0,   377,     2,   202,     4,
     2337      21,    22,    23,    24,     0,     0,    25,    26,    27,    28,
     2338       0,    -3,    29,   279,    30,  1055,  1056,     0,  1057,     0,
     2339     512,  1058,  1059,  1060,  1061,  1062,  1063,  1064,  1065,     0,
     2340       0,     0,  1066,     0,     0,     0,  1067,  1068,     0,    32,
     2341       0,   281,    33,     0,    34,     0,    35,   645,     0,    37,
     2342      38,   283,     0,     0,   284,   285,   286,   287,    40,    41,
     2343       0,   288,   289,     0,     0,     0,     0,     0,     0,   290,
     2344       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2345       0,     0,     0,     0,   291,     0,  1069,     0,     0,   168,
     2346       0,     0,   512,   293,   294,   295,   296,   297,   298,     0,
     2347       0,     0,     0,  1070,     0,     0,     0,  -127,     0,     0,
     2348       1,     2,   203,     4,     5,     6,     7,     8,     9,    10,
     2349      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2350      21,    22,    23,    24,     0,   512,    25,    26,    27,    28,
     2351       0,     0,    29,   279,    30,   280,     0,     0,     0,   512,
     2352     512,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2353      17,    18,    19,    20,    21,    22,    23,    24,  -292,     0,
     2354       0,   281,    33,     0,    34,     0,    35,   282,    30,    37,
     2355      38,   283,     0,     0,   284,   285,   286,   287,    40,    41,
     2356       0,   288,   289,     0,     0,     0,     0,     0,     0,   290,
     2357       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2358       0,     0,     0,     0,   291,     0,    43,  -292,     0,     0,
     2359       0,     0,     0,   293,   294,   295,   296,   297,   298,     2,
     2360     203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2361      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2362      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2363       0,   279,    30,   280,     8,     9,    10,    11,    12,    13,
     2364      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2365      24,  -292,     0,    25,    26,    27,     0,     0,     0,   281,
     2366      33,    30,    34,     0,    35,   282,     0,    37,    38,   283,
     2367       0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
     2368     289,     0,     0,     0,     0,     0,     0,   290,     0,    33,
     2369       0,     0,     0,     0,    36,     0,   333,   334,    39,     0,
     2370    -292,     0,   291,     0,   340,    40,    41,     0,     0,   775,
     2371       0,   293,   341,   295,   296,   297,   298,     0,     0,     0,
     2372       0,     0,     0,     0,     0,     0,     0,     0,   512,     0,
     2373       0,   639,     0,   335,     0,     0,     0,     0,     0,     0,
     2374       0,   630,     0,     0,     0,   512,     0,     2,   203,     4,
    22712375       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    22722376      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2273        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2274       30,   820,   408,  1222,     0,     0,   341,     0,     0,     0,
    2275        0,     0,     0,     0,   615,     0,     0,     0,     0,     0,
    2276        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2277      203,    38,     0,     1,     2,     3,     4,     5,     6,     7,
     2377       0,     0,    25,    26,    27,     0,     0,     0,     0,   279,
     2378      30,   280,     8,     9,    10,    11,    12,    13,    14,    15,
     2379      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2380       0,    25,    26,    27,     0,     0,     0,   281,    33,    30,
     2381      34,     0,    35,   282,     0,    37,    38,   283,   512,   512,
     2382     284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
     2383       0,     0,     0,     0,     0,   290,     0,    33,     0,     0,
     2384       0,     0,     0,     0,   204,    38,     0,     0,     0,     0,
     2385     291,     0,   925,     0,     0,     0,     0,   775,     0,   293,
     2386     341,   295,   296,   297,   298,     2,   203,     4,     5,     6,
     2387       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2388      17,    18,    19,    20,    21,    22,    23,    24,     0,   268,
     2389      25,    26,    27,     0,     0,     0,     0,   279,    30,   280,
    22782390       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2279       18,    19,    20,    21,    22,    23,    24,     0,   359,    25,
    2280       26,    27,    28,     0,     0,    29,   266,    30,    31,     0,
    2281        0,     0,     0,     0,   622,     0,     0,     0,     0,     0,
    2282        0,   773,     0,   980,     0,     0,     0,    32,     0,   985,
    2283       33,     0,    34,     0,    35,    36,   994,    37,    38,    39,
    2284        0,     0,     0,     0,     0,     0,    40,    41,     0,     0,
    2285        0,     0,     0,   510,     0,     0,     0,     0,   337,     0,
     2391      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2392      26,    27,     0,     0,     0,   281,    33,    30,    34,     0,
     2393      35,   282,     0,    37,    38,   283,     0,     0,   284,   285,
     2394     286,   287,    40,    41,     0,   288,   289,     0,     0,     0,
     2395       0,     0,     0,   290,     0,    33,     0,     0,     0,     0,
     2396       0,     0,   204,    38,     0,     0,     0,     0,   291,     0,
     2397     925,     0,     0,     0,     0,   775,     0,   293,   596,   295,
     2398     296,   297,   298,     2,   203,     4,     5,     6,     7,     8,
     2399       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2400      19,    20,    21,    22,    23,    24,     0,   625,    25,    26,
     2401      27,     0,     0,     0,     0,   279,    30,   280,     8,     9,
     2402      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2403      20,    21,    22,    23,    24,  -293,     0,     0,     0,     0,
     2404       0,     0,     0,   281,    33,    30,    34,     0,    35,   282,
     2405       0,    37,    38,   283,     0,     0,   284,   285,   286,   287,
     2406      40,    41,     0,   288,   289,     0,     0,     0,     0,     0,
     2407       0,   290,     0,    33,     0,     0,     0,     0,     0,     0,
     2408       0,     0,     0,     0,  -293,     0,   291,     0,   340,     0,
     2409       0,     0,     0,     0,     0,   293,   341,   295,   296,   297,
     2410     298,     2,   203,     4,     5,     6,     7,     8,     9,    10,
     2411      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2412      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2413       0,     0,     0,   279,    30,   280,     8,     9,    10,    11,
     2414      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     2415      22,    23,    24,     0,     0,    25,    26,    27,   489,   490,
     2416     491,   281,    33,    30,    34,     0,    35,   282,     0,    37,
     2417      38,   283,     0,     0,   284,   285,   286,   287,    40,    41,
     2418       0,   288,   289,     0,     0,     0,     0,     0,     0,   290,
     2419       0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
     2420       0,     0,     0,     0,   291,     0,   925,     0,     0,     0,
     2421       0,     0,     0,   293,   341,   295,   296,   297,   298,     2,
     2422     203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2423      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2424      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2425       0,   279,    30,   280,     8,     9,    10,    11,    12,    13,
     2426      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2427      24,     0,     0,    25,    26,    27,     0,     0,     0,   281,
     2428      33,    30,    34,     0,    35,   282,     0,   204,    38,   283,
     2429       0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
     2430     289,     0,     0,     0,     0,     0,     0,   290,     0,    33,
     2431       0,     0,     0,     0,   108,     0,    37,    38,     0,     0,
     2432       0,     0,   291,     0,  1013,     0,     0,     0,     0,     0,
     2433       0,   293,  1014,   295,   296,   297,   298,     2,   203,     4,
     2434       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2435      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2436       0,     0,    25,    26,    27,     0,     0,     0,     0,   279,
     2437      30,   280,     8,     9,    10,    11,    12,    13,    14,    15,
     2438      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2439       0,    25,    26,    27,     0,     0,     0,   281,    33,    30,
     2440      34,     0,    35,   282,     0,   204,    38,   283,     0,     0,
     2441     284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
     2442       0,     0,     0,     0,     0,   290,     0,    33,     0,     0,
     2443       0,     0,     0,     0,    37,    38,     0,     0,     0,     0,
     2444     291,     0,   375,     0,     0,     0,     0,     0,     0,   293,
     2445     377,   295,   296,   297,   298,     1,     2,     3,     4,     5,
     2446       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     2447      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2448       0,    25,    26,    27,    28,     0,     0,    29,     0,    30,
     2449      31,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2450      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2451      25,    26,    27,     0,    32,     0,     0,    33,    30,    34,
     2452       0,    35,    36,     0,    37,    38,    39,     0,     0,     0,
     2453       0,     0,     0,    40,    41,     0,     0,     0,     0,     0,
     2454       0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
     2455       0,     0,     0,   204,    38,     0,     0,     0,     0,    42,
     2456       0,    43,     0,     0,     0,  -518,     0,     0,     0,    44,
     2457       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
     2458      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2459      21,    22,    23,    24,     0,     0,    25,    26,    27,    28,
     2460       0,     0,    29,     0,    30,    31,     0,     0,     0,     0,
    22862461       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2287      510,    42,     0,    43,     0,     0,     0,   359,     0,  1010,
    2288     1011,    44,   341,     0,     0,     0,     0,     0,     0,     0,
    2289        0,     0,     0,     0,     0,     0,     0,   341,     0,     0,
    2290        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2291       18,    19,    20,    21,    22,    23,    24,     0,     0,     0,
    2292        0,     0,     0,     0,     0,   359,   359,    30,     0,     0,
    2293        0,     0,     0,   510,   510,     0,     0,  1041,     0,     0,
    2294        0,   377,     0,     0,     0,     0,     0,     0,     0,     0,
    2295       33,     0,     0,     0,     1,     2,   202,     4,     5,     6,
    2296        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2297       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2298       25,    26,    27,    28,     0,     0,    29,   278,    30,  1050,
    2299     1051,     0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,
    2300     1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
    2301      280,    33,     0,    34,     0,    35,   642,   317,    37,    38,
    2302      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2303      287,   288,  1124,  1125,     0,     0,     0,     0,   289,   377,
    2304        0,     0,   359,     0,     0,   985,     0,     0,  1134,     0,
    2305      760,     0,   290,     0,  1063,     0,   278,   167,   279,     0,
    2306        0,   292,   293,   294,   295,   296,   297,     0,     0,  1150,
    2307        0,     0,     0,     0,     0,  -126,     0,     0,     0,   280,
    2308     1165,     0,     0,     0,     0,   281,     0,     0,     0,   282,
    2309        0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
    2310      288,     0,   377,     0,  1183,     0,     0,   289,     0,     0,
    2311        0,     0,     0,     0,     0,     0,     0,     0,     0,  1205,
    2312        0,   290,   408,   374,     0,     0,   375,     0,     0,     0,
    2313      292,   376,   294,   295,   296,   297,     0,   278,  1214,   279,
    2314     1051,     0,  1052,   408,   408,  1053,  1054,  1055,  1056,  1057,
    2315     1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
    2316      280,     0,     0,     0,     0,   408,   642,     0,     0,     0,
    2317      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2318      287,   288,     0,     0,   985,     0,     0,     0,   289,     0,
    2319        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2320        0,     0,   290,   879,   374,     0,     0,   167,     0,     0,
    2321        0,   292,   376,   294,   295,   296,   297,     0,  1265,  1266,
    2322        0,     0,     1,     2,   202,     4,     5,     6,     7,     8,
    2323        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2324       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2325       27,    28,     0,     0,    29,   278,    30,   279,     0,     0,
    2326        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2327        0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
    2328        0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
    2329        0,   283,   284,   285,   286,    40,    41,   985,   287,   288,
    2330        0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
    2331        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2332      290,     0,  1063,     0,     0,     0,     0,     0,     0,   292,
    2333      293,   294,   295,   296,   297,     0,     0,     0,     0,     0,
    2334        0,     0,     0,  -126,     1,     2,   202,     4,     5,     6,
    2335        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2336       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2337       25,    26,    27,    28,     0,     0,    29,   278,    30,   279,
     2462       0,     0,     0,     0,     0,     0,     0,     0,     0,    32,
     2463       0,     0,    33,     0,    34,     0,    35,    36,     0,    37,
     2464      38,    39,     0,     0,     0,     0,     0,     0,    40,    41,
    23382465       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    23392466       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2340      280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
    2341      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2342      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2343        0,     0,     0,     0,     0,     0,     0,     0,  1420,     0,
    2344        0,     0,   290,     0,    43,     0,     0,     0,     0,     0,
    2345        0,   292,   293,   294,   295,   296,   297,     2,   202,     4,
    2346        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2347       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2348        0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
    2349       30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
    2350        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2351     1477,     0,   280,    33,     0,    34,     0,    35,   281,     0,
    2352       37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
    2353       41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
    2354      289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2355        0,     0,     0,     0,   290,   317,   339,     0,     0,     0,
    2356        0,   772,     0,   292,   340,   294,   295,   296,   297,     2,
    2357      202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2358       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2359       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2360        0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
    2361        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2362        0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
    2363      281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
    2364      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2365        0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
    2366        0,     0,     0,     0,     0,     0,   290,     0,   921,     0,
    2367        0,     0,     0,   772,     0,   292,   340,   294,   295,   296,
    2368      297,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    2369       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2370       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2371        0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
    2372        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2373        0,     0,     0,     0,     0,     0,   280,    33,     0,    34,
    2374        0,    35,   281,     0,    37,    38,   282,     0,     0,   283,
    2375      284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
    2376        0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
    2377        0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
    2378      921,     0,     0,     0,     0,   772,     0,   292,   593,   294,
    2379      295,   296,   297,     2,   202,     4,     5,     6,     7,     8,
    2380        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2381       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2382       27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
    2383        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2384        0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
    2385        0,    34,     0,    35,   281,     0,    37,    38,   282,     0,
    2386        0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
    2387        0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
    2388        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2389      290,     0,   339,     0,     0,     0,     0,     0,     0,   292,
    2390      340,   294,   295,   296,   297,     2,   202,     4,     5,     6,
    2391        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2392       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2393       25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
    2394        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2395        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2396      280,    33,     0,    34,     0,    35,   281,     0,    37,    38,
    2397      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2398      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2399        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2400        0,     0,   290,     0,   921,     0,     0,     0,     0,     0,
    2401        0,   292,   340,   294,   295,   296,   297,     2,   202,     4,
    2402        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    2403       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2404        0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
    2405       30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
    2406        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2407        0,     0,   280,    33,     0,    34,     0,    35,   281,     0,
    2408      203,    38,   282,     0,     0,   283,   284,   285,   286,    40,
    2409       41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
    2410      289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2411        0,     0,     0,     0,   290,     0,  1008,     0,     0,     0,
    2412        0,     0,     0,   292,  1009,   294,   295,   296,   297,     2,
    2413      202,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    2414       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2415       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2416        0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
    2417        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2418        0,     0,     0,     0,   280,    33,     0,    34,     0,    35,
    2419      281,     0,   203,    38,   282,     0,     0,   283,   284,   285,
    2420      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2421        0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
    2422        0,     0,     0,     0,     0,     0,   290,     0,   374,     0,
    2423        0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
    2424      297,     1,     2,     3,     4,     5,     6,     7,     8,     9,
    2425       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2426       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2427       28,     0,     0,    29,     0,    30,    31,     0,     0,     0,
    2428        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2429        0,     0,     0,     0,     0,    32,     0,     0,    33,     0,
    2430       34,     0,    35,    36,     0,    37,    38,    39,     0,     0,
    2431        0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
    2432        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2433        0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
    2434        0,    43,     0,     0,     0,  -509,     0,     0,     0,    44,
    2435        1,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    2436       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2437       21,    22,    23,    24,  -285,     0,    25,    26,    27,    28,
    2438        0,     0,    29,     0,    30,     0,     0,     0,     0,     0,
    2439        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2440        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2441        0,    35,     0,     0,    37,    38,     0,     0,  -285,     1,
    2442        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2443       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2444       22,    23,    24,     0,     0,    25,    26,    27,    28,     0,
    2445       43,    29,     0,    30,     0,     0,     0,     0,   109,     0,
    2446        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2447        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2448       35,     0,     0,    37,    38,     2,   202,     4,     5,     6,
    2449        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2450       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2451       25,    26,    27,     0,     0,     0,     0,     0,    30,    43,
    2452        0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
    2453        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2454        0,    33,     0,    34,     0,    35,    36,     0,   203,    38,
    2455       39,     0,     0,     0,     0,     0,     0,    40,    41,     0,
    2456        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2457        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2458        0,     0,    42,     0,   204,     0,     0,     0,     0,     0,
    2459        0,     0,   205,     2,   202,     4,     5,     6,     7,     8,
    2460        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2461       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2462       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2463        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2464        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2465        0,    34,     0,    35,     0,     0,    37,    38,     0,     0,
    2466        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2467       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2468       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2469        0,  -390,   679,    30,     0,     0,     0,     0,     0,     0,
    2470      627,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2471        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2472       35,     0,     0,    37,    38,     0,     0,     0,     0,     0,
    2473        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2474        0,     0,     0,     0,     0,  1348,     0,     0,     0,     0,
    2475        0,     0,     0,     0,     0,     0,     0,     0,     0,   679,
    2476        0,     0,     0,     0,     0,     0,     0,   627,     2,   202,
    2477        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    2478       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2479       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2480        0,    30,     8,     9,    10,    11,    12,    13,    14,    15,
    2481       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2482        0,    25,    26,    27,    33,     0,    34,     0,    35,    30,
    2483        0,    37,    38,     0,     0,     0,     0,     0,     0,     0,
    2484        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2485        0,     0,    33,  1350,     0,     0,     0,   108,     0,    37,
    2486       38,     0,     0,     0,     0,     0,     0,   679,     0,     0,
    2487        0,     0,     0,     0,     0,   627,     2,   202,     4,     5,
     2467       0,     0,     0,     0,    42,     0,    43,     0,     0,     0,
     2468       0,     0,     0,     0,    44,   202,     2,   203,     4,     5,
    24882469       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    24892470      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     
    24912472       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24922473       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2474       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2475       0,    35,    36,     0,   204,    38,    39,     0,     0,     0,
     2476       0,     0,     0,    40,    41,     0,     0,     0,     0,     0,
     2477       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2478       0,     0,     0,     0,     0,     0,     0,     0,     0,    42,
     2479       0,   205,     0,     0,     0,     0,     0,     0,     0,   206,
     2480       1,     2,   203,     4,     5,     6,     7,     8,     9,    10,
     2481      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2482      21,    22,    23,    24,  -292,     0,    25,    26,    27,    28,
     2483       0,     0,    29,     0,    30,     0,     0,     0,     0,     0,
     2484       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2485       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    24932486       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
    2494       38,     2,   202,     4,     5,     6,     7,     8,     9,    10,
    2495       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2496       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2497        0,     0,     0,     0,    30,   679,     0,     0,     0,     0,
    2498        0,     0,     0,   627,     0,     0,     0,     0,     0,     0,
    2499        0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
    2500        0,    35,     0,     0,    37,    38,     2,   202,     4,     5,
     2487      38,     0,     0,  -292,     0,     1,     2,   203,     4,     5,
    25012488       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    25022489      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2503        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2504      592,     0,     0,     0,     0,     0,     0,     0,   627,     0,
     2490       0,    25,    26,    27,    28,     0,    43,    29,     0,    30,
     2491       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    25052492       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2506        0,     0,    33,     0,    34,     0,    35,     0,     0,   203,
    2507       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2508       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2509       25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
    2510        0,     0,     0,     0,     0,   204,     0,     0,     0,     0,
    2511        0,     0,     0,   267,     0,     0,     0,     0,     0,     0,
    2512      280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
    2513      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2514      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2493       0,     0,     0,     0,     0,     0,     0,    33,     0,    34,
     2494       0,    35,     0,     0,    37,    38,   202,     2,   203,     4,
     2495       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2496      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2497       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2498      30,    43,     0,     0,     0,     0,     0,     0,     0,   109,
    25152499       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2516        0,     0,   290,     0,   519,     0,     0,   167,     0,     0,
    2517        0,   292,   293,   294,   295,   296,   297,     8,     9,    10,
    2518       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2519       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2520        0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
    2521        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2522        0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
    2523        0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
    2524      284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
    2525        0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
    2526        0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
    2527      592,    -3,     0,     0,     0,     0,     0,   292,   593,   294,
    2528      295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
     2500       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2501      34,     0,    35,     0,     0,   204,    38,     2,   203,     4,
     2502       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    25292503      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2530        0,     0,    25,    26,    27,     0,     0,     0,     0,   278,
    2531       30,   279,     0,     0,     0,     0,     0,     0,     0,     0,
    2532        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2533        0,     0,   280,    33,     0,     0,     0,     0,   642,     0,
    2534       37,    38,   282,     0,     0,   283,   284,   285,   286,    40,
    2535       41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
    2536      289,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2537        0,     0,     0,     0,   290,   -33,   757,     0,     0,     0,
    2538        0,     0,     0,   292,   293,   294,   295,   296,   297,     8,
    2539        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2540       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2541       27,     0,     0,     0,     0,   278,    30,   279,     0,     0,
    2542        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2543        0,     0,     0,     0,     0,     0,     0,     0,   280,    33,
    2544        0,     0,     0,     0,   281,     0,    37,    38,   282,     0,
    2545        0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
    2546        0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
    2547        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2548      290,     0,   291,     0,     0,     0,     0,     0,     0,   292,
    2549      293,   294,   295,   296,   297,     8,     9,    10,    11,    12,
    2550       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2551       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2552        0,   278,    30,   279,     0,     0,     0,     0,     0,     0,
    2553        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2554        0,     0,     0,     0,   280,    33,     0,     0,     0,     0,
    2555      281,     0,    37,    38,   282,     0,     0,   283,   284,   285,
    2556      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2557        0,     0,   289,     0,     0,     0,     0,     0,     0,     0,
    2558        0,     0,     0,     0,     0,     0,   290,     0,   154,     0,
    2559        0,     0,     0,     0,     0,   292,   293,   294,   295,   296,
    2560      297,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2561       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2562       25,    26,    27,     0,     0,     0,     0,   278,    30,   279,
     2504       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
     2505      30,     0,   205,     0,     0,     0,     0,     0,     0,     0,
     2506     268,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2507       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2508      34,     0,    35,    36,     0,   204,    38,    39,     0,     0,
     2509       0,     0,     0,     0,    40,    41,     0,     0,     0,     0,
    25632510       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    25642511       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2565      280,    33,     0,     0,     0,     0,   281,     0,    37,    38,
    2566      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2567      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2568        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2569        0,     0,   290,     0,   592,     0,     0,     0,     0,     0,
    2570        0,   292,   593,   294,   295,   296,   297,     8,     9,    10,
    2571       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2572       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2573        0,     0,     0,   278,    30,   279,     0,     0,     0,     0,
    2574        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2575        0,     0,     0,     0,     0,     0,   280,    33,     0,     0,
    2576        0,     0,   281,     0,    37,    38,   282,     0,     0,   283,
    2577      284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
    2578        0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
    2579        0,     0,     0,     0,     0,     0,     0,     0,   290,     0,
    2580      374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
    2581      295,   296,   297,     8,     9,    10,    11,    12,    13,    14,
    2582       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2583     -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2584       30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2585        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2586        0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
    2587      332,   333,    39,     0,  -285,     0,     0,     0,     0,    40,
    2588       41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2589       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2590       25,    26,    27,     0,   636,     0,   334,     0,    30,     0,
    2591        0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
    2592        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2593        0,    33,     0,     0,     0,     0,    36,     0,    37,    38,
    2594       39,     0,     0,     0,     0,     0,     0,    40,    41,     8,
    2595        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2596       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2597       27,     0,    42,     0,   154,     0,    30,     0,     0,     0,
    2598        0,     0,    44,     0,     0,     0,     0,     0,     0,     0,
    2599        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2600        0,     0,     0,     0,    36,     0,    37,    38,    39,     0,
    2601        0,     0,     0,     0,     0,    40,    41,     8,     9,    10,
    2602       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    2603       21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    2604       42,     0,    43,     0,    30,     0,     0,     0,     0,     0,
    2605       44,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2606        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2607        0,     0,    36,     0,   203,    38,    39,     0,     0,     0,
    2608        0,     0,     0,    40,    41,     8,     9,    10,    11,    12,
    2609       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2610       23,    24,     0,     0,    25,    26,    27,     0,    42,     0,
    2611      266,     0,    30,     0,     0,     0,     0,     0,   205,     0,
    2612        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2613        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2614       36,     0,   332,   333,    39,     0,     0,     0,     0,     0,
    2615        0,    40,    41,     8,     9,    10,    11,    12,    13,    14,
    2616       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2617        0,     0,    25,    26,    27,     0,   636,     0,   334,     0,
    2618       30,     0,     0,     0,     0,     0,   627,     0,     0,     0,
    2619        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2620        0,     0,     0,    33,     0,     0,     0,     0,    36,     0,
    2621      332,   333,    39,     0,     0,     0,     0,     0,     0,    40,
    2622       41,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2623       17,    18,    19,    20,    21,    22,    23,    24,  -285,     0,
    2624       25,    26,    27,     0,     0,     0,   334,     0,    30,     0,
    2625        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2626        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2627        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2628        0,     0,  -285,     8,     9,    10,    11,    12,    13,    14,
    2629       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2630     -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2631       30,     0,   636,     0,   334,     0,     0,     0,     0,     0,
    2632        0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
    2633        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2634       37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
    2635       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2636       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2637        0,     0,    30,   448,   636,     0,   334,     0,     0,     0,
    2638        0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
    2639        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2640        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2641       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2642       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2643        0,    30,   448,     0,     0,     0,     0,     0,   449,     0,
    2644        0,     0,   703,     0,     0,     0,   109,     0,     0,     0,
    2645        0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2646        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2647       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2648     -285,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2649       30,     0,     0,     0,     0,     0,     0,   449,     0,     0,
    2650        0,   937,     0,     0,     0,   109,     0,     0,     0,     0,
    2651        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2652       37,    38,     0,     0,  -285,     8,     9,    10,    11,    12,
    2653       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    2654       23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2655        0,     0,    30,   448,     0,     0,   334,     0,     0,     0,
    2656        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2657        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2658        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
    2659       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    2660       24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2661        0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
    2662        0,     0,  1219,     0,     0,     0,   109,     0,     0,     0,
    2663        0,     0,     0,     0,    33,     0,     0,     0,     0,   108,
    2664        0,    37,    38,     8,     9,    10,    11,    12,    13,    14,
    2665       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2666        0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2667       30,   448,     0,     0,     0,     0,     0,    43,     0,     0,
    2668        0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
    2669        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2670       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2671       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2672        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2673        0,     0,     0,     0,     0,     0,   449,     0,     0,     0,
    2674        0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
    2675        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2676       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2677       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2678       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2679        0,     0,     0,   636,     0,   334,     0,     0,     0,     0,
    2680        0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
    2681        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2682        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2683       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2684       26,    27,     0,     0,     0,     0,     0,    30,     0,     0,
    2685        0,     0,   636,     0,   334,     0,     0,     0,     0,     0,
    2686        0,     0,   627,     0,     0,     0,     0,     0,     0,     0,
    2687       33,     0,     0,     0,     0,     0,     0,    37,    38,     8,
    2688        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2689       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2690       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2691        0,     0,     0,   253,     0,     0,     0,     0,     0,     0,
    2692        0,   109,     0,     0,     0,     0,     0,     0,     0,    33,
    2693        0,     0,     0,     0,     0,     0,    37,    38,     8,     9,
    2694       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2695       20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
    2696        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
    2697        0,     0,   154,     0,     0,     0,     0,     0,     0,     0,
    2698      109,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2699        0,     0,     0,     0,     0,   203,    38,     8,     9,    10,
     2512      42,     0,   205,     0,     0,     0,     0,     0,     0,     0,
     2513     206,     2,   203,     4,     5,     6,     7,     8,     9,    10,
    27002514      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    27012515      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
    27022516       0,     0,     0,     0,    30,     0,     0,     0,     0,     0,
    2703        0,   266,     0,     0,     0,     0,     0,     0,     0,   267,
    2704        0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
    2705        0,     0,     0,     0,    37,    38,     8,     9,    10,    11,
    2706       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2707       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2708        0,     0,     0,    30,     0,     0,     0,     0,     0,     0,
    2709      253,     0,     0,     0,     0,     0,     0,     0,   627,     0,
    2710        0,     0,     0,     0,     0,     0,    33,     0,     0,     0,
    2711        0,     0,     0,    37,    38,     8,     9,    10,    11,    12,
     2517       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2518       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2519       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2520      38,     2,   203,     4,     5,     6,     7,     8,     9,    10,
     2521      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2522      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2523       0,     0,     0,     0,    30,  -397,   682,     0,     0,     0,
     2524       0,     0,     0,     0,   630,     0,     0,     0,     0,     0,
     2525       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2526       0,     0,    33,     0,    34,     0,    35,     0,     0,    37,
     2527      38,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2528       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2529       0,  1360,     0,     0,     0,     0,     0,     0,     0,     0,
     2530       0,     0,     0,     0,     0,     0,   682,     0,     0,     0,
     2531       0,     0,     0,     0,   630,     2,   203,     4,     5,     6,
     2532       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2533      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2534      25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
     2535       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
     2536      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2537      24,     0,     0,    25,    26,    27,    33,     0,    34,     0,
     2538      35,    30,     0,    37,    38,     0,     0,     0,     0,     0,
     2539       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2540       0,     0,     0,     0,     0,  1362,     0,     0,     0,    33,
     2541       0,     0,     0,     0,    36,     0,   333,   334,    39,     0,
     2542     682,     0,     0,     0,     0,    40,    41,     0,   630,     2,
     2543     203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2544      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2545      23,    24,     0,   335,    25,    26,    27,     0,     0,     0,
     2546       0,   109,    30,     0,     0,     0,     0,     0,     0,     0,
     2547       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2548       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2549      33,     0,    34,     0,    35,     0,     0,   204,    38,     2,
     2550     203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    27122551      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    27132552      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
    2714        0,     0,    30,     0,     0,     0,     0,     0,     0,   334,
    2715        0,     0,     0,     0,     0,     0,     0,   627,     0,     0,
    2716        0,     0,     0,     0,     0,    33,     0,     0,     0,     0,
    2717        0,     0,    37,    38,     8,     9,    10,    11,    12,    13,
     2553       0,     0,    30,     0,   267,     0,     0,     0,     0,     0,
     2554       0,     0,   625,     0,     0,     0,     0,     0,     0,     0,
     2555       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2556      33,     0,    34,     0,    35,     0,     0,    37,    38,     2,
     2557     203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2558      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2559      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2560       0,     0,    30,     0,   682,     0,     0,     0,     0,     0,
     2561       0,     0,   630,     0,     0,     0,     0,     0,     0,     0,
     2562       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2563      33,     0,    34,     0,    35,     0,     0,    37,    38,     2,
     2564     203,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     2565      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2566      23,    24,     0,     0,    25,    26,    27,     0,     0,     0,
     2567       0,     0,    30,     0,   595,     0,     0,     0,     0,     0,
     2568       0,     0,   630,     0,     0,     0,     0,     0,     0,     0,
     2569       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2570      33,     0,    34,     0,    35,     0,     0,   204,    38,     8,
     2571       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2572      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2573      27,     0,     0,     0,     0,   279,    30,   280,     0,     0,
     2574       0,     0,     0,     0,   205,     0,     0,     0,     0,     0,
     2575       0,     0,   268,     0,     0,     0,     0,     0,     0,     0,
     2576       0,     0,     0,   281,    33,     0,     0,     0,     0,   282,
     2577       0,    37,    38,   283,     0,     0,   284,   285,   286,   287,
     2578      40,    41,     0,   288,   289,     0,     0,     0,     0,     0,
     2579       0,   290,     0,     0,     0,     0,     0,     0,     0,     0,
     2580       0,     0,     0,     0,     0,     0,   291,     0,   521,     0,
     2581       0,   168,     0,     0,     0,   293,   294,   295,   296,   297,
     2582     298,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2583      17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
     2584      25,    26,    27,     0,     0,     0,     0,   279,    30,   280,
     2585       0,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2586      17,    18,    19,    20,    21,    22,    23,    24,  -292,     0,
     2587      25,    26,    27,     0,     0,   281,    33,     0,    30,     0,
     2588       0,   282,     0,    37,    38,   283,     0,     0,   284,   285,
     2589     286,   287,    40,    41,     0,   288,   289,     0,     0,     0,
     2590       0,     0,     0,   290,     0,     0,    33,     0,     0,     0,
     2591       0,    36,     0,   333,   334,    39,     0,  -292,   291,     0,
     2592     595,    -3,    40,    41,     0,     0,     0,   293,   596,   295,
     2593     296,   297,   298,     8,     9,    10,    11,    12,    13,    14,
     2594      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2595     335,     0,    25,    26,    27,     0,     0,     0,   109,   279,
     2596      30,   280,     0,     8,     9,    10,    11,    12,    13,    14,
     2597      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2598    -292,     0,    25,    26,    27,     0,     0,   281,    33,     0,
     2599      30,     0,     0,   645,     0,    37,    38,   283,     0,     0,
     2600     284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
     2601       0,     0,     0,     0,     0,   290,     0,     0,    33,     0,
     2602       0,     0,     0,     0,     0,    37,    38,     0,     0,  -292,
     2603     291,   -34,   760,     0,     0,     0,     0,     0,     0,   293,
     2604     294,   295,   296,   297,   298,     8,     9,    10,    11,    12,
     2605      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2606      23,    24,   335,     0,    25,    26,    27,     0,     0,     0,
     2607     109,   279,    30,   280,     0,     8,     9,    10,    11,    12,
     2608      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2609      23,    24,     0,     0,    25,    26,    27,     0,     0,   281,
     2610      33,     0,    30,     0,     0,   282,     0,    37,    38,   283,
     2611       0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
     2612     289,     0,     0,     0,     0,     0,     0,   290,     0,     0,
     2613      33,     0,     0,     0,     0,   108,     0,    37,    38,     0,
     2614       0,     0,   291,     0,   292,     0,     0,     0,     0,     0,
     2615       0,   293,   294,   295,   296,   297,   298,     8,     9,    10,
     2616      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2617      21,    22,    23,    24,    43,     0,    25,    26,    27,     0,
     2618       0,     0,   109,   279,    30,   280,     0,     8,     9,    10,
     2619      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2620      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2621       0,   281,    33,     0,    30,   450,     0,   282,     0,    37,
     2622      38,   283,     0,     0,   284,   285,   286,   287,    40,    41,
     2623       0,   288,   289,     0,     0,     0,     0,     0,     0,   290,
     2624       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2625      38,     0,     0,     0,   291,     0,   154,     0,     0,     0,
     2626       0,     0,     0,   293,   294,   295,   296,   297,   298,     8,
     2627       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2628      19,    20,    21,    22,    23,    24,   451,     0,    25,    26,
     2629      27,     0,     0,     0,   109,   279,    30,   280,     0,     8,
     2630       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2631      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2632      27,     0,     0,   281,    33,     0,    30,     0,     0,   282,
     2633       0,    37,    38,   283,     0,     0,   284,   285,   286,   287,
     2634      40,    41,     0,   288,   289,     0,     0,     0,     0,     0,
     2635       0,   290,     0,     0,    33,     0,     0,     0,     0,     0,
     2636       0,    37,    38,     0,     0,     0,   291,     0,   595,     0,
     2637       0,     0,     0,     0,     0,   293,   596,   295,   296,   297,
     2638     298,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     2639      17,    18,    19,    20,    21,    22,    23,    24,   254,     0,
     2640      25,    26,    27,     0,     0,     0,   109,   279,    30,   280,
     2641       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2642      18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
     2643      26,    27,     0,     0,     0,   281,    33,    30,     0,     0,
     2644       0,   282,     0,    37,    38,   283,     0,     0,   284,   285,
     2645     286,   287,    40,    41,     0,   288,   289,     0,     0,     0,
     2646       0,     0,     0,   290,     0,    33,     0,     0,     0,     0,
     2647      36,     0,   204,    38,    39,     0,     0,     0,   291,     0,
     2648     375,    40,    41,     0,     0,     0,     0,   293,   377,   295,
     2649     296,   297,   298,     0,     0,     0,     0,     0,     0,     0,
     2650       0,     0,     0,     0,     0,     0,     0,    42,     0,   267,
     2651       0,     0,     0,     0,     0,     0,     0,   206,     8,     9,
     2652      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2653      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2654       0,     0,     0,     0,     0,    30,     0,     8,     9,    10,
     2655      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2656      21,    22,    23,    24,  -292,     0,    25,    26,    27,     0,
     2657       0,     0,     0,    33,    30,     0,     0,     0,    36,     0,
     2658     333,   334,    39,     0,     0,     0,     0,     0,     0,    40,
     2659      41,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2660       0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
     2661      38,     0,     0,  -292,     0,   639,     0,   335,     0,     0,
     2662       0,     0,     0,     0,     0,   630,     0,     0,     0,     0,
     2663       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2664       0,     0,     0,     0,   639,     0,   335,     0,     0,     0,
     2665       0,     0,     0,     0,   109,     8,     9,    10,    11,    12,
     2666      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2667      23,    24,  -292,     0,    25,    26,    27,     0,     0,     0,
     2668       0,     0,    30,     0,     8,     9,    10,    11,    12,    13,
    27182669      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    27192670      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
    2720        0,    30,     0,     0,     0,     0,     0,     0,   449,     0,
    2721        0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
     2671      33,    30,   450,     0,     0,     0,     0,    37,    38,     0,
     2672       0,  -292,     8,     9,    10,    11,    12,    13,    14,    15,
     2673      16,    17,    18,    19,    20,    21,    22,    23,    24,    33,
     2674       0,    25,    26,    27,     0,     0,    37,    38,     0,    30,
     2675     450,     0,   639,     0,   335,     0,     0,     0,     0,     0,
     2676       0,     0,   630,     0,     0,     0,     0,     0,     0,     0,
     2677       0,     0,     0,     0,     0,     0,     0,    33,     0,     0,
     2678       0,     0,     0,   451,    37,    38,     0,   941,     0,     0,
     2679       0,   109,     8,     9,    10,    11,    12,    13,    14,    15,
     2680      16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
     2681       0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
     2682       0,   451,     0,     0,     0,  1227,     0,     0,     0,   109,
     2683       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2684      18,    19,    20,    21,    22,    23,    24,    33,     0,    25,
     2685      26,    27,     0,     0,    37,    38,     0,    30,     0,     8,
     2686       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2687      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2688      27,     0,     0,     0,     0,    33,    30,     0,     0,   639,
     2689       0,   335,    37,    38,     0,     0,     0,     0,     0,   109,
     2690       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    27222691       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
    2723        0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
     2692       0,    37,    38,     0,     0,     0,     0,   639,     0,   335,
     2693       0,     0,     0,     0,     0,     0,     0,   630,     0,     0,
     2694       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     2695      18,    19,    20,    21,    22,    23,    24,     0,   154,    25,
     2696      26,    27,     0,     0,     0,     0,   109,    30,     0,     8,
     2697       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     2698      19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
     2699      27,     0,     0,     0,     0,    33,    30,     0,     0,     0,
     2700       0,     0,   204,    38,     0,     0,     0,     8,     9,    10,
     2701      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2702      21,    22,    23,    24,    33,     0,    25,    26,    27,     0,
     2703       0,    37,    38,     0,    30,     0,     0,     0,     0,   267,
     2704       0,     0,     0,     0,     0,     0,     0,   268,     0,     0,
     2705       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2706       0,     0,    33,     0,     0,     0,     0,     0,   254,    37,
     2707      38,     0,     0,     0,     0,     0,   630,     8,     9,    10,
     2708      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     2709      21,    22,    23,    24,     0,     0,    25,    26,    27,     0,
     2710       0,     0,     0,     0,    30,     0,   335,     0,     0,     0,
     2711       0,     0,     0,     0,   630,     8,     9,    10,    11,    12,
     2712      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2713      23,    24,    33,     0,    25,    26,    27,     0,     0,    37,
     2714      38,     0,    30,     0,     8,     9,    10,    11,    12,    13,
     2715      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2716      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2717      33,    30,     0,     0,     0,     0,   451,   204,    38,     0,
     2718       0,     0,     0,     0,   109,     0,     0,     0,     0,     0,
     2719       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2720       0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
     2721       0,     0,     0,     0,   267,     0,     0,     0,     0,     0,
     2722       0,     0,   625,     0,     0,     8,     9,    10,    11,    12,
     2723      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     2724      23,    24,     0,   595,    25,    26,    27,     0,     0,     0,
     2725       0,   630,    30,     0,     8,     9,    10,    11,    12,    13,
     2726      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2727      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2728      33,    30,     0,     0,     0,     0,     0,    37,    38,     0,
     2729       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2730       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2731       0,     0,     0,     0,     0,     0,    37,    38,     0,     0,
     2732       0,     0,     0,     0,   335,     0,     0,     0,     0,     0,
     2733       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
     2734       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2735       0,     0,     0,    43,     0,     0,     0,     0,     0,     0,
     2736       0,   109,     2,   203,     4,     5,     6,     7,     8,     9,
     2737      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     2738      20,    21,    22,    23,    24,     0,     0,    25,    26,    27,
     2739       0,     0,     0,     0,     0,    30,     0,     0,   279,     0,
     2740     280,  1056,     0,  1057,     0,     0,  1058,  1059,  1060,  1061,
     2741    1062,  1063,  1064,  1065,     0,     0,  1540,  1066,     0,     0,
     2742       0,  1067,  1068,    33,    32,    34,   281,    35,     0,     0,
     2743      37,    38,   645,     0,     0,     0,   283,     0,     0,   284,
     2744     285,   286,   287,    40,    41,     0,   288,   289,     0,     0,
     2745       0,     0,     0,     0,   290,     0,     0,     0,     0,     0,
     2746       0,     0,     0,     0,     0,     0,  -410,     0,     0,   291,
     2747       0,   375,     0,     0,   168,     0,     0,     0,   293,   377,
     2748     295,   296,   297,   298,     0,     0,     0,     0,  1070,     0,
     2749       0,   279,  -127,   280,  1056,     0,  1057,     0,     0,  1058,
     2750    1059,  1060,  1061,  1062,  1063,  1064,  1065,     0,     0,     0,
     2751    1066,     0,     0,     0,  1067,  1068,     0,    32,     0,   281,
     2752       0,     0,     0,     0,     0,   645,     0,     0,     0,   283,
     2753       0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
     2754     289,     0,     0,     0,     0,     0,     0,   290,     0,     0,
     2755       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2756       0,     0,   291,     0,   375,     0,     0,   168,     0,     0,
     2757       0,   293,   377,   295,   296,   297,   298,     0,     0,     0,
     2758       0,  1070,     0,     0,   279,  -127,   280,  1056,     0,  1057,
     2759    1410,  1411,  1058,  1059,  1060,  1061,  1062,  1063,  1064,  1065,
     2760       0,     0,  1540,  1066,     0,     0,     0,  1067,  1068,     0,
     2761      32,     0,   281,     0,     0,     0,     0,     0,   645,     0,
     2762       0,     0,   283,     0,     0,   284,   285,   286,   287,    40,
     2763      41,     0,   288,   289,     0,     0,     0,     0,     0,     0,
     2764     290,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2765       0,     0,     0,     0,     0,   291,     0,   375,     0,     0,
     2766     168,     0,     0,     0,   293,   377,   295,   296,   297,   298,
     2767     279,     0,   280,  1056,  1070,  1057,  1410,  1411,  1058,  1059,
     2768    1060,  1061,  1062,  1063,  1064,  1065,     0,     0,     0,  1066,
     2769       0,     0,     0,  1067,  1068,     0,    32,     0,   281,     0,
     2770       0,     0,     0,     0,   645,     0,     0,     0,   283,     0,
     2771       0,   284,   285,   286,   287,    40,    41,     0,   288,   289,
     2772       0,     0,     0,     0,     0,     0,   290,     0,     0,     0,
     2773       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2774       0,   291,     0,   375,     0,     0,   168,     0,     0,     0,
     2775     293,   377,   295,   296,   297,   298,   279,     0,   280,  1056,
     2776    1070,  1057,     0,     0,  1058,  1059,  1060,  1061,  1062,  1063,
     2777    1064,  1065,     0,     0,     0,  1066,     0,     0,     0,  1067,
     2778    1068,     0,    32,     0,   281,     0,     0,     0,     0,     0,
     2779     645,     0,     0,     0,   283,     0,     0,   284,   285,   286,
     2780     287,    40,    41,     0,   288,   289,     0,     0,     0,     0,
     2781       0,     0,   290,     0,     0,     0,     0,     0,     0,     0,
     2782       0,     0,     0,     0,     0,     0,     0,   291,     0,   375,
     2783       0,     0,   168,     0,     0,     0,   293,   377,   295,   296,
     2784     297,   298,     0,     0,     0,     0,  1070,     2,   203,     4,
     2785       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    27242786      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    27252787       0,     0,    25,    26,    27,     0,     0,     0,     0,     0,
    2726       30,     0,     0,     0,     0,     0,     0,   266,     0,     0,
    2727        0,     0,     0,     0,     0,   622,     0,     0,     0,     0,
    2728        0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
    2729       37,    38,     8,     9,    10,    11,    12,    13,    14,    15,
    2730       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2731        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2732        0,     0,     0,     0,     0,     0,   592,     0,     0,     0,
    2733        0,     0,     0,     0,   627,     0,     0,     0,     0,     0,
    2734        0,     0,    33,     0,     0,     0,     0,     0,     0,    37,
    2735       38,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2736       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2737       25,    26,    27,     0,     0,     0,     0,     0,    30,     0,
    2738        0,     0,     0,     0,     0,   334,     0,     0,     0,     0,
    2739        0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
    2740        0,    33,     0,     0,     0,     0,     0,     0,    37,    38,
    2741        2,   202,     4,     5,     6,     7,     8,     9,    10,    11,
    2742       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    2743       22,    23,    24,     0,     0,    25,    26,    27,     0,     0,
    2744        0,     0,     0,    30,    43,     0,     0,     0,     0,     0,
    2745        0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
    2746        0,     0,     0,     0,     0,     0,    33,     0,    34,     0,
    2747       35,     0,     0,    37,    38,     0,   278,     0,   279,  1051,
    2748        0,  1052,     0,     0,  1053,  1054,  1055,  1056,  1057,  1058,
    2749     1059,  1060,  1507,  1061,     0,     0,  1062,    32,     0,   280,
    2750        0,     0,     0,     0,     0,   642,     0,     0,  -403,   282,
    2751        0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
    2752      288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
     2788      30,     0,     0,   279,     0,   280,     0,     0,     0,     0,
    27532789       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2754        0,   290,     0,   374,     0,     0,   167,     0,     0,     0,
    2755      292,   376,   294,   295,   296,   297,     0,   278,     0,   279,
    2756     1051,     0,  1052,     0,  -126,  1053,  1054,  1055,  1056,  1057,
    2757     1058,  1059,  1060,     0,  1061,     0,     0,  1062,    32,     0,
    2758      280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
    2759      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2760      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
     2790       0,     0,   279,     0,   280,     0,     0,     0,    33,     0,
     2791      34,   281,    35,     0,     0,    37,    38,   282,     0,     0,
     2792       0,   283,     0,     0,   284,   285,   286,   287,    40,    41,
     2793     281,   288,   289,     0,     0,     0,   282,  1319,     0,   290,
     2794     283,     0,     0,   284,   285,   286,   287,    40,    41,     0,
     2795     288,   289,     0,     0,   291,     0,   375,     0,   290,     0,
     2796     279,   775,   280,   293,   377,   295,   296,   297,   298,     0,
     2797       0,     0,     0,   291,     0,   375,     0,     0,   986,   279,
     2798       0,   280,   293,   377,   295,   296,   297,   298,   281,     0,
     2799       0,     0,     0,     0,   282,     0,     0,     0,   283,     0,
     2800       0,   284,   285,   286,   287,    40,    41,   281,   288,   289,
     2801       0,     0,     0,   282,     0,     0,   290,   283,     0,     0,
     2802     284,   285,   286,   287,    40,    41,     0,   288,   289,     0,
     2803       0,   291,     0,   375,     0,   290,     0,   279,     0,   280,
     2804     293,   377,   295,   296,   297,   298,     0,     0,     0,     0,
     2805     291,     0,   375,     0,     0,     0,   279,     0,   280,   293,
     2806     729,   295,   296,   297,   298,   281,     0,     0,     0,     0,
     2807       0,   645,     0,     0,     0,   283,     0,     0,   284,   285,
     2808     286,   287,    40,    41,   281,   288,   289,     0,     0,     0,
     2809     282,     0,     0,   290,   283,     0,     0,   284,   285,   286,
     2810     287,    40,    41,     0,   288,   289,     0,     0,   291,     0,
     2811     779,     0,   290,     0,   279,     0,   280,   293,   377,   295,
     2812     296,   297,   298,     0,     0,     0,     0,   291,     0,   375,
     2813       0,     0,     0,   279,     0,   280,   293,   821,   295,   296,
     2814     297,   298,   281,     0,     0,     0,     0,     0,   282,     0,
     2815       0,     0,   283,     0,     0,   284,   285,   286,   287,    40,
     2816      41,   281,   288,   289,     0,     0,     0,   282,     0,     0,
     2817     290,   283,     0,     0,   284,   285,   286,   287,    40,    41,
     2818       0,   288,   289,     0,     0,   291,     0,     0,     0,   290,
     2819       0,   279,     0,   280,   293,   377,   295,   296,   297,   298,
     2820       0,     0,     0,     0,   514,     0,     0,     0,     0,     0,
     2821       0,     0,     0,   293,   377,   295,   296,   297,   298,   281,
     2822       0,     0,     0,     0,     0,   282,     0,     0,     0,   283,
     2823       0,     0,   284,   285,   286,   287,    40,    41,     0,   288,
     2824     289,     0,     0,     0,     0,     0,     0,   290,     0,     0,
    27612825       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2762        0,     0,   290,     0,   374,     0,     0,   167,     0,     0,
    2763        0,   292,   376,   294,   295,   296,   297,     0,     0,     0,
    2764        0,     0,     0,     0,     0,  -126,     2,   202,     4,     5,
    2765        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    2766       16,    17,    18,    19,    20,    21,    22,    23,    24,     0,
    2767        0,    25,    26,    27,     0,     0,     0,     0,     0,    30,
    2768        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    2769       18,    19,    20,    21,    22,    23,    24,     0,     0,    25,
    2770       26,    27,    33,     0,    34,     0,    35,    30,     0,    37,
    2771       38,     0,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
    2772     1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,  1507,  1061,
    2773       33,  1307,  1062,    32,     0,   280,     0,    37,    38,     0,
    2774        0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
    2775      285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
    2776        0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
    2777        0,     0,     0,     0,     0,     0,     0,   290,     0,   374,
    2778        0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
    2779      296,   297,   278,     0,   279,  1051,     0,  1052,  1394,  1395,
    2780     1053,  1054,  1055,  1056,  1057,  1058,  1059,  1060,     0,  1061,
    2781        0,     0,  1062,    32,     0,   280,     0,     0,     0,     0,
    2782        0,   642,     0,     0,     0,   282,     0,     0,   283,   284,
    2783      285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
    2784        0,     0,     0,   289,     0,     0,     0,     0,     0,   278,
    2785        0,   279,     0,     0,     0,     0,     0,   290,     0,   374,
    2786        0,     0,   167,     0,     0,     0,   292,   376,   294,   295,
    2787      296,   297,   280,     0,     0,     0,     0,     0,   281,     0,
    2788        0,     0,   282,     0,     0,   283,   284,   285,   286,    40,
    2789       41,     0,   287,   288,     0,     0,     0,     0,     0,     0,
    2790      289,     0,     0,     0,     0,     0,   278,     0,   279,     0,
    2791        0,     0,     0,     0,   290,     0,   374,     0,     0,     0,
    2792        0,     0,   802,   292,   376,   294,   295,   296,   297,   280,
    2793        0,     0,     0,     0,     0,   281,     0,     0,     0,   282,
    2794        0,     0,   283,   284,   285,   286,    40,    41,     0,   287,
    2795      288,     0,     0,     0,     0,     0,     0,   289,     0,     0,
    2796        0,     0,     0,   278,     0,   279,     0,     0,     0,     0,
    2797        0,   290,     0,   374,     0,     0,   982,     0,     0,     0,
    2798      292,   376,   294,   295,   296,   297,   280,     0,     0,     0,
    2799        0,     0,   281,     0,     0,     0,   282,     0,     0,   283,
    2800      284,   285,   286,    40,    41,     0,   287,   288,     0,     0,
    2801        0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
    2802      278,     0,   279,     0,     0,     0,     0,     0,   290,     0,
    2803      374,     0,     0,     0,     0,     0,     0,   292,   376,   294,
    2804      295,   296,   297,   280,     0,     0,     0,     0,     0,   281,
    2805        0,     0,     0,   282,     0,     0,   283,   284,   285,   286,
    2806       40,    41,     0,   287,   288,     0,     0,     0,     0,     0,
    2807        0,   289,     0,     0,     0,     0,     0,   278,     0,   279,
    2808        0,     0,     0,     0,     0,   290,     0,   374,     0,     0,
    2809        0,     0,     0,     0,   292,   726,   294,   295,   296,   297,
    2810      280,     0,     0,     0,     0,     0,   642,     0,     0,     0,
    2811      282,     0,     0,   283,   284,   285,   286,    40,    41,     0,
    2812      287,   288,     0,     0,     0,     0,     0,     0,   289,     0,
    2813        0,     0,     0,     0,   278,     0,   279,     0,     0,     0,
    2814        0,     0,   290,     0,   776,     0,     0,     0,     0,     0,
    2815        0,   292,   376,   294,   295,   296,   297,   280,     0,     0,
    2816        0,     0,     0,   281,     0,     0,     0,   282,     0,     0,
    2817      283,   284,   285,   286,    40,    41,     0,   287,   288,     0,
    2818        0,     0,     0,     0,     0,   289,     0,     0,     0,     0,
    2819        0,   278,     0,   279,     0,     0,     0,     0,     0,   290,
    2820        0,   374,     0,     0,     0,     0,     0,     0,   292,   817,
    2821      294,   295,   296,   297,   280,     0,     0,     0,     0,     0,
    2822      281,     0,     0,     0,   282,     0,     0,   283,   284,   285,
    2823      286,    40,    41,     0,   287,   288,     0,     0,     0,     0,
    2824        0,     0,   289,     0,     0,     0,     0,     0,   278,     0,
    2825      279,     0,     0,     0,     0,     0,   508,     0,     0,     0,
    2826        0,     0,     0,     0,     0,   292,   376,   294,   295,   296,
    2827      297,   280,     0,     0,     0,     0,     0,   281,     0,     0,
    2828        0,   282,     0,     0,   283,   284,   285,   286,    40,    41,
    2829        0,   287,   288,     0,     0,     0,     0,     0,     0,   289,
    2830        0,     0,     0,     0,     0,   278,     0,   279,     0,     0,
    2831        0,     0,     0,   290,     0,     0,     0,     0,     0,     0,
    2832        0,     0,   292,   376,   294,   295,   296,   297,   280,     0,
    2833        0,     0,     0,     0,   281,     0,     0,     0,   282,     0,
    2834        0,   283,   284,   285,   286,    40,    41,     0,   287,   288,
    2835        0,     0,     0,     0,     0,     0,   289,     0,     0,     0,
    2836        0,     0,   278,     0,   279,     0,     0,     0,     0,     0,
    2837      512,     0,     0,     0,     0,     0,     0,     0,     0,   292,
    2838      376,   294,   295,   296,   297,   280,     0,     0,     0,     0,
    2839        0,   281,     0,     0,     0,   282,     0,     0,   283,   284,
    2840      285,   286,    40,    41,     0,   287,   288,     0,     0,     0,
    2841        0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
    2842        0,     0,     0,     0,     0,     0,     0,   515,     0,     0,
    2843        0,     0,     0,     0,     0,     0,   292,   376,   294,   295,
    2844      296,   297,     2,   202,     4,     5,     6,     7,     8,     9,
    2845       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    2846       20,    21,    22,    23,    24,     0,     0,     0,     0,     0,
    2847        0,     0,     0,     0,     0,    30,     0,     0,     0,     0,
     2826       0,     0,   517,     0,     0,     0,     0,     0,     0,     0,
     2827       0,   293,   377,   295,   296,   297,   298,     2,   203,     4,
     2828       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     2829      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     2830       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
     2831      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28482832       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28492833       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
    2850       34,     0,    35,    36,     0,   170,   171,    39,     0,     0,
    2851        0,     0,     0,     0,    40,    41,   201,     2,   202,     4,
     2834      34,     0,    35,    36,     0,   171,   172,    39,     0,     0,
     2835       0,     0,     0,     0,    40,    41,   202,     2,   203,     4,
    28522836       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    28532837      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     
    28552839      30,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    28562840       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2857        0,     0,     0,    33,     0,    34,     0,    35,     0,     0,
    2858      203,    38,   469,     2,   202,     4,     5,     6,     7,     8,
    2859        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    2860       19,    20,    21,    22,    23,    24,     0,     0,    25,    26,
    2861       27,     0,     0,     0,     0,     0,    30,     0,     0,     0,
    2862        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2863        0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
    2864        0,    34,     0,    35,     0,     0,    37,    38,     2,   202,
     2841       0,     0,     0,     0,     0,     0,     0,     0,    33,     0,
     2842      34,     0,    35,     0,     0,   204,    38,   471,     2,   203,
    28652843       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    28662844      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     
    28682846       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    28692847       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2870        0,     0,     0,     0,    33,     0,    34,     0,    35,     0,
    2871        0,   203,    38,     8,     9,    10,    11,    12,    13,    14,
    2872       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    2873        0,     0,    25,    26,    27,   487,   488,   489,     0,     0,
    2874       30,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    2875       17,    18,    19,    20,    21,    22,    23,    24,     0,     0,
    2876       25,    26,    27,    33,     0,     0,     0,     0,    30,     0,
    2877       37,    38,     0,     0,     0,     0,     0,     0,     0,     0,
     2848       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2849       0,    34,     0,    35,     0,     0,    37,    38,     2,   203,
     2850       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
     2851      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     2852      24,     0,     0,    25,    26,    27,     0,     0,     0,     0,
     2853       0,    30,     0,     0,     0,     0,     0,     0,     0,     0,
    28782854       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    2879        0,    33,     0,     0,     0,     0,     0,     0,   203,    38
     2855       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
     2856       0,    34,     0,    35,     0,     0,   204,    38
    28802857};
    28812858
    28822859#define yypact_value_is_default(yystate) \
    2883   ((yystate) == (-1318))
     2860  ((yystate) == (-1362))
    28842861
    28852862#define yytable_value_is_error(yytable_value) \
     
    28882865static const yytype_int16 yycheck[] =
    28892866{
    2890        1,    42,     0,    42,     0,   181,    42,   235,   181,   165,
    2891      181,     1,   451,   200,   182,   182,   215,   648,   690,   181,
    2892      181,   484,   181,   181,   275,   602,   344,   113,   103,   751,
    2893      252,   622,   690,    31,   494,    31,   690,    31,   498,   604,
    2894      457,   892,   988,   359,    42,   602,    44,   363,    44,  1317,
    2895        1,   534,   602,   995,  1031,     0,    54,    37,    37,   183,
    2896      602,   604,    60,   602,    60,    63,   450,    63,    66,   605,
    2897       66,   344,    37,   572,   101,   611,    66,   152,    65,    65,
    2898      771,  1398,    65,    49,   715,   261,    31,    75,   261,    42,
    2899      261,  1394,   412,    44,   262,   262,   768,   691,    42,   261,
    2900      261,  1043,   261,   261,   602,    37,   104,  1030,  1031,   107,
    2901      768,   197,   432,   101,   768,   113,    27,    75,    57,   713,
    2902      440,    42,   101,   103,   103,   111,     0,    89,    75,   340,
    2903       42,    43,    37,   257,   258,   101,   101,   124,   103,   523,
    2904      181,   124,   181,  1411,   602,   181,   144,   892,   144,   101,
    2905      102,     0,   103,   115,   152,  1458,   103,    31,   109,   157,
    2906       71,   157,   101,   420,   421,  1482,    42,    43,    65,   101,
    2907     1487,   103,   101,   636,   637,   638,    37,    65,   290,   736,
    2908        0,     1,    31,   181,   182,  1050,   182,  1504,   277,    88,
    2909      412,   654,   143,    65,  1511,   107,    44,   892,    65,   197,
    2910       75,   152,    75,    37,    29,   404,   103,   205,    78,   205,
    2911      432,    31,    11,     0,    63,   103,   214,   490,   440,   217,
    2912      261,   217,   261,   122,   101,   261,   689,   102,   181,   102,
    2913      106,   103,   400,   400,   109,   105,   103,   181,   736,   496,
    2914      101,   104,   103,    63,    31,   108,    66,   248,  1225,   247,
    2915      201,   247,   829,   247,   205,    80,    81,   514,     0,     1,
    2916      181,   109,   337,   261,   262,   728,   262,   101,   104,   103,
    2917      268,   710,   829,   484,   590,   106,   841,   275,   736,   829,
    2918      108,    75,   450,   450,   235,   236,   604,   829,   289,    31,
    2919      829,   366,   492,    73,  1240,   831,   124,  1274,   841,     0,
    2920        1,   764,   247,  1487,   390,  1050,   997,   101,   420,   421,
    2921      809,    73,    42,    43,   482,   482,   267,   633,    75,   270,
    2922     1504,    63,   579,   103,    66,   105,   324,  1511,   324,   109,
    2923       31,   829,   418,   153,    54,    89,  1487,  1059,   424,   290,
    2924      108,   103,   293,   105,     0,   343,   344,   109,   111,   123,
    2925     1273,  1274,   109,   116,   117,   818,   124,   205,  1053,  1210,
    2926     1511,   115,   360,   683,   224,    66,   364,    65,   217,    67,
    2927       68,   829,   949,   247,   968,    31,   106,   104,   252,   101,
    2928      108,   108,   593,   243,   104,   950,   337,   107,   236,   340,
    2929        3,    65,   390,    67,    68,     3,   508,   217,   247,   949,
    2930      512,   123,   400,   515,   400,   103,   606,   949,   359,   108,
    2931      610,   622,   363,  1390,   239,   366,   627,   506,  1009,   267,
    2932      418,    65,  1287,    67,    68,   124,   424,   247,   426,   102,
    2933       67,   631,   106,   108,    71,   635,   109,    74,   102,    76,
    2934     1382,  1383,   290,    65,   108,   293,    83,    69,   108,   124,
    2935      123,   526,   450,     0,    76,    77,   568,   101,   107,   108,
    2936      247,   683,   106,     0,    52,  1210,   102,  1390,   469,   420,
    2937      421,   101,   108,   508,   123,   217,   474,   512,   689,   101,
    2938      515,   103,  1018,  1019,   482,   102,   482,   101,   486,   111,
    2939      486,   108,   490,   649,   214,  1126,   345,   448,   958,   750,
    2940      451,   918,   102,   725,   820,   247,   457,    95,   824,   109,
    2941      993,   108,   123,   514,   690,  1210,   102,   690,   469,   690,
    2942      113,   114,   108,   841,   692,   692,  1120,   124,   690,   690,
    2943      531,   690,   690,   534,   658,   536,   101,  1102,   412,   101,
    2944      108,   486,  1287,   494,   928,   496,   247,   498,   268,   121,
    2945      375,   123,   936,   764,   102,   275,   124,   508,   432,    83,
    2946       84,   512,   108,   514,   515,  1287,   440,  1030,   841,  1434,
    2947      656,   208,   108,   108,   108,   526,  1441,   108,   124,   668,
    2948      107,   102,   583,  1177,  1178,     0,   108,   108,   124,   124,
    2949      124,   247,   590,   124,   118,   119,   252,   981,   914,   101,
    2950      448,   189,   124,   451,   602,  1300,   604,   427,   466,   457,
    2951      484,   101,   486,   688,   637,   638,    31,   108,   104,   101,
    2952     1485,   103,   108,   343,   212,   623,   475,    42,   579,    44,
    2953      455,   654,   101,   124,   222,   460,    44,   486,  1360,   590,
    2954      360,   639,   593,   102,   364,    60,   102,   104,    63,  1088,
    2955      109,    66,   108,   108,   655,   653,   657,   104,   656,  1354,
    2956      508,   108,  1357,   863,   512,   754,   486,   515,   493,   124,
    2957      495,   622,   102,   636,   637,   638,   627,   102,   108,   878,
    2958      102,   954,   633,  1146,    65,   102,    67,    68,   763,  1434,
    2959      102,   654,   690,   104,   692,   102,  1441,   108,  1461,   486,
    2960      899,   109,   290,  1398,  1467,   728,   101,   527,  1403,   102,
    2961      347,   104,   349,    81,    82,   108,  1438,   101,  1440,   103,
    2962      101,  1484,   723,    85,    86,   106,  1489,   111,   884,   144,
    2963      123,   124,   960,  1428,   101,   143,   103,   688,   736,   737,
    2964     1485,   101,   157,   103,   486,     4,     5,     6,     7,     8,
    2965        9,   111,   750,   101,  1118,   955,   412,   102,  1122,   710,
    2966      928,   928,   101,   108,  1486,   728,   181,   182,   936,   936,
    2967      124,   591,   101,  1089,   103,   624,   432,   101,   102,   103,
    2968      102,   102,   111,  1377,   440,   486,   108,   108,   102,   740,
    2969      205,   101,   102,   103,   108,   818,    57,   205,  1009,   436,
    2970     1394,   101,   217,    62,   591,    64,   101,  1502,   103,   683,
    2971     1273,   101,   763,  1508,   672,   689,   636,   637,   638,  1491,
    2972      645,   104,  1517,   102,   108,   109,  1521,   235,   124,   108,
    2973      486,   829,   247,  1491,   654,  1022,    65,  1491,    67,    68,
    2974       69,    65,   106,   841,   102,    69,   261,    76,    77,   437,
    2975      108,   725,    76,    77,   102,   818,   101,   102,   103,   267,
    2976      108,   124,   710,  1457,  1458,   124,   101,   716,   103,   820,
    2977      102,   124,   101,   824,   103,   106,   108,   101,    44,    65,
    2978      705,   730,   111,   471,   106,   293,   711,   111,   101,  1045,
    2979      764,   892,   102,   102,    60,   102,   102,    63,   108,   108,
    2980       66,   108,   108,   623,   557,   558,   559,   560,   728,   324,
    2981       10,    11,    12,    13,    14,    65,   914,    67,    68,   639,
    2982      508,   101,   102,   103,   512,   101,   101,   515,   103,   344,
    2983      928,   104,   340,   653,   101,  1146,   103,    37,   936,     4,
    2984        5,     6,     7,     8,     9,    75,   101,   805,   103,    75,
    2985       65,     0,     1,   101,    69,   103,   954,   815,   102,   103,
    2986       60,    76,    77,   914,  1246,  1247,  1248,   918,   101,   959,
    2987      103,   112,   830,   822,   695,   120,   697,    87,   144,    78,
    2988       79,    80,    31,    54,    55,   400,   101,   108,   109,   990,
    2989      121,   157,   993,   101,   995,    44,   111,    62,   818,    64,
    2990      123,   101,   101,   103,   103,   825,   105,   958,   959,   960,
    2991      103,   111,   420,   421,  1225,   101,   182,    66,   892,    65,
    2992      104,    67,    68,    69,  1110,   108,   109,   683,   104,  1118,
    2993      750,    42,    43,  1122,  1123,   450,   553,   554,   825,   205,
    2994      555,   556,  1043,   892,   102,   561,   562,   102,   102,   102,
    2995      102,   217,  1053,   101,   103,  1056,  1057,  1058,  1009,   884,
    2996      102,   104,   103,   108,   104,   101,   891,   123,   106,   725,
    2997      918,   486,   892,   104,   102,   490,   102,   104,  1190,  1191,
    2998      104,  1193,   104,   671,   104,   108,  1470,  1199,   496,    28,
    2999     1202,   109,   680,   109,    63,   144,   684,    10,    11,    12,
    3000       13,    14,   102,   152,   153,   892,   514,   102,   104,   106,
    3001      109,    80,  1110,   107,    10,    11,    12,    13,    14,   102,
    3002      107,   107,   101,   108,    37,   102,   124,   102,   102,  1513,
    3003      102,  1206,   102,   182,   102,   466,   109,  1088,  1089,   959,
    3004      102,    37,   108,   102,   102,   114,  1235,    60,   197,   102,
    3005      892,   200,   201,   102,   102,   975,   205,   982,   324,   102,
    3006      102,   102,   102,  1012,    60,   102,   102,   102,    28,  1027,
    3007     1028,   579,   123,   107,   104,   102,  1050,   226,   102,   102,
    3008      102,   230,   107,   232,   104,   593,     3,   602,   157,   604,
    3009      108,   892,   241,    10,    11,    12,    13,    14,   247,  1189,
    3010      104,  1050,   102,   252,   102,   101,   108,   103,  1206,  1210,
    3011     1030,  1031,   102,   262,   622,   111,   109,   959,   106,   627,
    3012       37,   270,   108,   108,   104,  1083,  1084,   102,   102,  1318,
    3013     1050,   108,   108,  1322,   400,   102,   892,   101,   104,  1229,
    3014     1088,   104,   101,    60,  1356,  1246,  1247,  1248,   217,    65,
    3015      101,    67,    68,    69,  1079,  1206,   101,   101,   959,   109,
    3016       76,    77,    65,  1050,    67,    68,    69,   124,   107,   102,
    3017     1498,   102,  1146,    76,    77,   690,   102,   692,  1229,   121,
    3018      107,   106,   104,   124,   108,     3,   255,  1373,   337,   104,
    3019      259,   340,    10,    11,    12,    13,    14,   346,   101,  1300,
    3020      108,   102,   104,   102,     0,   102,   104,    45,  1050,   104,
    3021      359,   104,   102,   104,   363,  1491,   104,   366,  1491,    37,
    3022     1491,   736,   737,   104,  1492,  1492,  1415,  1317,   916,  1491,
    3023     1491,   107,  1491,  1491,   102,    31,  1210,   124,   124,  1188,
    3024      124,   672,    60,   107,   124,  1513,  1513,   124,   109,  1050,
    3025      102,  1225,   107,  1354,   104,   104,  1357,   104,   104,  1184,
    3026      104,  1210,   104,   412,   104,  1223,  1317,   104,  1188,  1189,
    3027       66,   102,   102,   101,  1372,  1373,   345,   104,   427,   104,
    3028      101,  1382,  1383,   432,  1470,    55,    54,   102,   102,   106,
    3029     1210,   440,   124,   109,  1050,   104,  1254,  1398,   104,   102,
    3030      104,   102,  1403,    89,  1262,  1263,  1264,   101,   107,  1229,
    3031      102,   104,   102,  1287,   829,  1416,    40,   466,   102,   102,
    3032      469,  1411,   109,  1210,   124,   102,   841,  1428,   108,   124,
    3033       89,   102,     3,  1282,   109,   484,   102,   486,  1287,    10,
    3034       11,    12,    13,    14,   102,   494,  1188,  1189,  1306,   498,
    3035     1491,   124,  1491,  1273,  1274,  1491,   425,   153,   107,   124,
    3036     1411,   104,  1282,   104,   124,   101,    37,  1287,  1210,   124,
    3037     1471,   124,  1470,  1061,   805,  1476,   107,   526,   527,   672,
    3038      107,  1482,   102,   691,   815,   102,  1487,  1229,  1189,    60,
    3039      563,   565,  1443,  1491,  1492,   564,  1492,  1317,   566,   830,
    3040     1287,  1502,  1127,  1504,   567,   713,   475,  1508,    54,  1210,
    3041     1511,  1362,  1458,   928,  1210,  1513,  1517,  1513,  1521,  1296,
    3042     1521,   936,  1473,   572,  1473,  1123,  1322,  1441,  1229,  1079,
    3043      226,   448,   448,   936,   697,   884,   938,   982,   650,   954,
    3044     1282,   590,   591,   740,   593,  1287,   460,  1498,   583,  1229,
    3045      956,   247,   960,   486,  1210,   604,   252,   571,   104,    63,
    3046     1434,   107,   750,   571,   571,    -1,    -1,  1441,    -1,    -1,
    3047     1390,    -1,    -1,   622,    -1,  1317,    -1,    -1,   627,    -1,
    3048       -1,    -1,    -1,    -1,   633,  1434,  1287,   636,   637,   638,
    3049       -1,  1411,  1441,    -1,   802,  1443,    65,    -1,    67,    68,
    3050       69,  1009,    -1,    -1,    -1,   654,   152,    76,    77,    -1,
    3051      114,  1485,   805,    -1,  1434,     0,  1317,    -1,    -1,    -1,
    3052       -1,  1441,   815,   672,    -1,  1473,    -1,   596,    -1,    -1,
    3053       -1,  1287,   101,    -1,   683,    -1,  1485,   830,    -1,   688,
    3054      689,    -1,   111,   692,    -1,    -1,    31,  1434,    -1,    -1,
    3055      346,    -1,  1372,   157,  1441,   624,    -1,    -1,    -1,    -1,
    3056      629,    -1,    -1,    -1,    -1,  1485,    -1,    -1,   214,  1411,
    3057      185,    -1,   880,    -1,    -1,    -1,   725,   192,    -1,   728,
    3058       -1,    66,    65,    -1,    67,    68,    69,    -1,   737,    -1,
    3059       -1,   740,  1434,    76,    77,    -1,  1027,  1028,  1485,  1441,
    3060       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1295,    -1,    -1,
    3061     1411,    -1,    -1,   217,   763,   764,   412,    -1,   101,    -1,
    3062      769,    -1,   268,    65,    -1,    67,    68,    69,   111,   275,
    3063       -1,   427,    -1,  1434,    76,    77,   432,    -1,    -1,    -1,
    3064     1441,    -1,    -1,  1485,   440,    -1,    -1,   716,    -1,   264,
    3065       -1,   255,  1083,  1084,    -1,   259,   805,    -1,    -1,   101,
    3066      968,   730,    -1,    -1,    -1,    -1,   815,    -1,   153,   818,
    3067      466,   820,    -1,    -1,   823,   824,   825,    -1,  1434,    -1,
    3068       -1,   830,    -1,    -1,  1485,  1441,    -1,    -1,   484,   997,
    3069      486,   840,    10,    11,    12,    13,    14,   343,    -1,    -1,
    3070       -1,    -1,    -1,    -1,   319,    10,    11,    12,    13,    14,
    3071       -1,    -1,   327,    -1,   360,   330,    -1,    -1,   364,    37,
    3072       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1485,
    3073       -1,   527,    37,    -1,  1027,  1028,    -1,    -1,    -1,  1047,
    3074       -1,   345,    60,   892,    -1,    -1,    -1,    65,    -1,    67,
    3075       68,    69,    -1,   822,  1442,    60,    -1,    -1,    76,    77,
    3076       65,    -1,   247,    -1,    69,   914,    -1,   252,    -1,    -1,
    3077       -1,    76,    77,    -1,    -1,    -1,    -1,   392,    -1,    -1,
    3078      426,   396,    -1,   101,  1472,   103,    -1,    -1,    -1,    -1,
    3079     1083,  1084,  1223,   111,    -1,   591,   101,    -1,     0,    -1,
    3080       -1,   950,    -1,    -1,    -1,    -1,   111,    -1,    -1,   958,
    3081      959,    -1,  1120,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3082       -1,   425,    -1,  1254,  1512,     0,   975,    -1,    -1,    31,
    3083       -1,  1262,  1263,  1264,    -1,    -1,  1524,    -1,    -1,    -1,
    3084      636,   637,   638,    -1,    -1,    -1,    -1,    -1,    -1,   279,
    3085       -1,    -1,    -1,    -1,    -1,    -1,    31,    -1,   654,    -1,
    3086     1009,   346,   292,   293,    66,    -1,   481,    -1,    -1,  1177,
    3087     1178,   475,    -1,  1022,   304,  1306,   672,    -1,  1027,  1028,
    3088       -1,  1030,  1031,    -1,    -1,    -1,    -1,   683,    -1,    -1,
    3089       -1,    66,    -1,   689,    -1,    10,    11,    12,    13,    14,
    3090       -1,  1050,     4,     5,     6,     7,     8,     9,    -1,    -1,
    3091      340,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
    3092       -1,    -1,    37,    76,    77,    -1,    -1,   412,    -1,   725,
    3093       32,    -1,   728,    -1,  1083,  1084,    -1,    -1,    -1,    -1,
    3094     1089,    -1,   427,  1012,   590,    60,   376,   432,   101,    -1,
    3095      103,   153,    -1,    -1,    -1,   440,   571,   572,   111,    -1,
    3096       62,  1254,    64,    -1,    -1,    -1,    -1,    -1,   764,  1262,
    3097     1263,  1264,    -1,    -1,    -1,    -1,  1491,   623,   153,    -1,
    3098       -1,   466,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3099     1498,    -1,   596,   639,    -1,    -1,   111,  1146,    -1,   484,
    3100       65,   486,    67,    68,    69,    -1,    -1,   653,    -1,   805,
    3101       -1,    76,    77,  1306,    -1,    -1,    63,    -1,    -1,   815,
    3102      624,    -1,   818,    -1,    -1,   629,    73,   823,    -1,   825,
    3103       -1,    -1,    -1,    -1,   830,    -1,   101,    -1,   103,    -1,
    3104     1189,    -1,   527,    -1,   659,   247,   111,    -1,   663,    -1,
    3105      252,    65,    -1,    67,    68,    69,    -1,  1206,    -1,    -1,
    3106       -1,  1210,    76,    77,    -1,    -1,    -1,   114,    -1,  1377,
    3107       -1,    -1,   247,    -1,  1223,    -1,  1225,   252,    -1,    -1,
    3108     1229,   696,    -1,    -1,    -1,    -1,  1394,   101,    -1,   103,
    3109       -1,    -1,    -1,    -1,    -1,   109,   892,   111,    -1,    -1,
    3110       -1,    -1,    -1,    -1,   750,  1254,   591,    -1,    -1,    -1,
    3111      157,    -1,   716,  1262,  1263,  1264,    -1,    -1,    -1,  1188,
    3112      550,   551,   552,    -1,  1273,  1274,   730,    90,    91,    92,
    3113       93,    94,    95,    96,    97,    98,    99,    -1,  1287,    -1,
    3114       -1,    -1,    -1,    -1,   346,    -1,    -1,    -1,    -1,  1457,
    3115     1458,   636,   637,   638,    -1,    -1,    -1,  1306,    -1,    -1,
    3116      123,    -1,    -1,   593,    -1,    -1,    -1,    -1,  1317,   654,
    3117      217,   346,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   975,
    3118       -1,    -1,    -1,    -1,    -1,    -1,    -1,   672,    -1,    10,
    3119       11,    12,    13,    14,   809,    -1,    -1,    -1,   683,    -1,
    3120       -1,    -1,    -1,    -1,   689,    -1,    -1,    -1,   255,    -1,
    3121      412,    -1,   259,  1282,    -1,    -1,    37,    -1,   822,    -1,
    3122       -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,   275,    -1,
    3123      432,  1027,  1028,    -1,  1030,  1031,    -1,   412,   440,    60,
    3124      725,  1390,    -1,   728,    65,    -1,    67,    68,    69,    -1,
    3125       -1,    -1,   427,    -1,  1050,    76,    77,   432,    -1,    -1,
    3126       -1,    -1,  1411,    -1,   466,   440,    -1,    -1,   914,    -1,
    3127       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   764,
    3128      101,    -1,   484,    -1,   486,  1434,    -1,  1083,  1084,    -1,
    3129      111,   466,  1441,    -1,    -1,    -1,   726,    -1,   345,    -1,
    3130       -1,    -1,    -1,    -1,    -1,    -1,    -1,   922,    -1,   484,
    3131       -1,   486,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3132      805,    -1,    -1,    -1,    -1,   527,    -1,    -1,    -1,    -1,
    3133      815,    -1,    -1,   818,    -1,    -1,  1485,    -1,   823,    -1,
    3134      825,   771,    -1,  1492,    -1,   830,    -1,    -1,    -1,    -1,
    3135     1146,    -1,   527,    -1,     3,     4,     5,     6,     7,     8,
    3136        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3137       19,    20,    21,    22,    23,    24,    25,    26,   425,    -1,
    3138       29,    30,    31,    -1,   999,    -1,    -1,   817,    37,   591,
    3139       -1,    -1,    -1,  1189,    -1,   442,    -1,    -1,    -1,    -1,
    3140     1015,    -1,    -1,    -1,    -1,    -1,    -1,   892,  1012,    -1,
    3141       -1,    60,    -1,    62,  1210,    64,   591,    -1,    67,    68,
    3142       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1223,   475,  1225,
    3143       -1,    -1,    -1,    -1,   636,   637,   638,    -1,    -1,    -1,
    3144       -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
    3145       14,    -1,   654,    -1,    -1,    -1,    -1,   106,  1254,    -1,
    3146       -1,   636,   637,   638,    -1,    -1,  1262,  1263,  1264,    -1,
    3147      672,    -1,    -1,    37,    -1,  1090,    -1,  1273,  1274,   654,
    3148       -1,   683,    -1,    -1,    -1,    -1,    -1,   689,    -1,    -1,
    3149      975,  1287,    -1,    50,    -1,    52,    60,   672,    55,    56,
    3150       57,    65,    59,    67,    68,    69,    -1,    -1,   683,    -1,
    3151     1306,    -1,    76,    77,   689,    -1,    -1,    74,    -1,    -1,
    3152       -1,    -1,    -1,   725,    -1,    -1,   728,    -1,    -1,    86,
    3153       87,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3154       -1,    -1,  1027,  1028,    -1,  1030,  1031,   111,    -1,   596,
    3155      725,    -1,    -1,   728,    -1,    -1,    -1,    -1,    -1,    -1,
    3156     1206,    -1,   764,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
    3157       -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,  1009,
    3158       -1,    -1,   629,    -1,  1188,    -1,    -1,    -1,    -1,   764,
    3159       -1,    -1,    -1,    -1,  1390,    -1,    -1,    -1,  1083,  1084,
    3160       -1,    -1,    -1,   805,    -1,    -1,    -1,    10,    11,    12,
    3161       13,    14,    -1,   815,    -1,    -1,   818,    -1,    -1,    -1,
    3162     1050,   823,    -1,   825,    -1,    -1,    -1,    -1,   830,    -1,
    3163      805,    -1,    -1,    -1,    37,    -1,    -1,    -1,  1434,    -1,
    3164      815,    -1,    -1,   818,    -1,  1441,    -1,    -1,   823,    -1,
    3165      825,    -1,    -1,    -1,    -1,   830,    -1,    60,    -1,    -1,
    3166       -1,  1146,    65,    -1,    67,    68,    69,    -1,    -1,   716,
    3167       -1,    -1,    -1,    76,    77,    -1,    -1,    -1,  1282,    -1,
    3168       -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,  1485,
    3169      892,    10,    11,    12,    13,    14,    -1,    -1,   101,    -1,
    3170      103,    -1,    -1,   750,  1189,    -1,    -1,    -1,   111,    -1,
    3171       -1,    -1,    -1,    -1,    -1,    -1,    -1,   892,    37,    -1,
    3172       -1,    -1,    -1,    -1,    -1,  1210,  1372,    -1,    -1,    -1,
    3173       -1,    -1,    -1,  1163,    -1,    -1,    -1,    -1,  1223,    -1,
    3174     1225,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3175       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
    3176       -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,  1254,
    3177       -1,    -1,    -1,   975,    -1,   822,    -1,  1262,  1263,  1264,
    3178       -1,    -1,   101,   340,   341,    -1,    -1,    -1,  1273,  1274,
    3179       -1,    -1,   111,    -1,    -1,   352,   353,    -1,    -1,    -1,
    3180      975,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3181       -1,    -1,    25,    26,    27,    -1,    -1,    -1,    -1,    -1,
    3182       -1,  1306,    -1,    -1,    44,  1027,  1028,    -1,  1030,  1031,
    3183       -1,    -1,    -1,    96,    -1,    98,    -1,    10,    11,    12,
    3184       13,    14,    -1,    63,    -1,    -1,    -1,    -1,  1050,    -1,
    3185       -1,    -1,  1027,  1028,    -1,  1030,  1031,    -1,    -1,   122,
    3186       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3187       -1,    -1,    -1,    -1,    -1,  1050,    -1,    -1,    -1,    -1,
    3188       -1,  1083,  1084,    96,    -1,    98,    -1,    60,    -1,   109,
    3189       -1,    -1,    65,    -1,   114,    -1,    69,    -1,    -1,    -1,
    3190       -1,    -1,    -1,    76,    77,  1390,    -1,    -1,  1083,  1084,
    3191       -1,    -1,    -1,    -1,   177,    -1,    -1,    -1,    -1,    -1,
    3192       -1,    -1,   185,   143,   187,   188,    -1,    -1,   101,   192,
    3193       -1,   194,   195,   153,    -1,    -1,    -1,   157,   111,    -1,
    3194       -1,    -1,    -1,    -1,  1146,    -1,    -1,    -1,    -1,  1434,
    3195       -1,    -1,    -1,    -1,    -1,    36,  1441,    38,    -1,    -1,
    3196       -1,    -1,    -1,    -1,   177,  1012,    -1,    -1,    -1,    -1,
    3197       -1,  1146,    -1,    -1,   187,   188,    -1,    -1,    59,   192,
    3198       -1,   194,   195,    -1,    65,   205,    -1,  1189,    69,    -1,
    3199       -1,    72,    73,    74,    75,    76,    77,   217,    79,    80,
    3200     1485,   264,    -1,    -1,    -1,    -1,    87,    -1,  1210,    -1,
    3201       -1,    -1,    -1,    -1,  1189,   235,   236,    -1,    -1,    -1,
    3202      101,  1223,   103,  1225,    -1,    -1,    -1,    -1,    -1,   110,
    3203      111,   112,   113,   114,   115,  1210,    -1,    -1,    -1,   259,
    3204       -1,    -1,    -1,   124,    -1,    -1,    -1,   267,  1223,    -1,
    3205     1225,    -1,  1254,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3206     1262,  1263,  1264,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3207      290,  1273,  1274,   293,    -1,    -1,    -1,     7,    -1,  1254,
    3208       10,    11,    12,    13,    14,  1287,    -1,  1262,  1263,  1264,
    3209       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1273,  1274,
    3210       -1,    -1,    -1,    -1,  1306,    -1,    36,    37,    38,    -1,
    3211       -1,    -1,  1287,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3212      340,    -1,    -1,    -1,    -1,   345,    -1,    -1,    -1,    59,
    3213       60,  1306,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
    3214       -1,  1188,    72,    73,    74,    75,    76,    77,    -1,    79,
    3215       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    3216      717,    -1,   719,    -1,    -1,    -1,    -1,    -1,    -1,   726,
    3217      727,   101,    -1,   103,   731,    -1,    -1,    -1,    -1,    -1,
    3218      110,   111,   112,   113,   114,   115,   743,    -1,  1390,    -1,
    3219       -1,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3220      420,   421,    -1,    -1,    -1,    -1,    -1,   427,    -1,    -1,
    3221       -1,    -1,    -1,    -1,    -1,  1390,   773,    -1,    -1,    -1,
    3222       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   448,    -1,
    3223       -1,   451,  1434,    -1,    -1,  1282,    -1,   457,    -1,  1441,
     2867       1,   236,     0,     0,    42,   113,   693,   516,   183,   165,
     2868     166,    42,    42,     1,   182,   182,   201,   539,   693,   182,
     2869     182,   216,   276,   182,   651,   453,     0,     1,   625,   459,
     2870     182,   182,   605,    31,    31,  1055,   183,   896,   496,     0,
     2871     693,   452,   500,   992,    42,   341,    44,    44,   607,  1410,
     2872    1329,   605,   345,   896,   414,     0,    54,    31,   345,   607,
     2873     360,  1036,    60,    60,   364,    63,    63,    42,    66,    66,
     2874      31,     0,     1,   999,   434,   103,    54,    31,    66,   575,
     2875     605,    70,   442,   774,   771,   605,    31,     1,   263,    63,
     2876     198,   718,    66,  1414,   262,   262,   771,   754,    61,   262,
     2877     262,   184,    31,   262,  1035,  1036,   104,   605,    80,   107,
     2878     262,   262,    42,    93,   525,   113,   263,   605,   771,    37,
     2879     605,    42,  1048,  1484,   152,    49,   104,    37,    27,   107,
     2880      44,    37,    70,    80,    70,   253,   108,    66,     0,    42,
     2881      43,   130,   694,     0,   182,    80,   144,   144,   128,    42,
     2882      43,   182,   182,  1432,   152,   608,   640,   641,    37,   157,
     2883     157,   614,   109,    70,   716,   107,   739,   130,    44,    31,
     2884     639,   640,   641,   657,    31,   258,   259,    76,  1067,  1068,
     2885      42,   117,    44,   107,   182,   183,   183,   486,   657,   103,
     2886     486,  1512,   130,    42,    43,   109,  1517,   107,    60,   109,
     2887     198,    63,   109,   109,    66,   492,    63,   182,   206,   206,
     2888     113,   406,  1055,    83,   739,   105,  1537,   215,    29,   112,
     2889     218,   218,    80,  1544,   262,   107,    80,   402,   107,   143,
     2890     109,   262,   262,   109,    70,    62,   108,   215,   152,   129,
     2891     114,   111,   468,   115,   218,  1134,  1466,   731,   249,   225,
     2892     248,   248,   182,   107,   739,   402,   130,   115,  1233,     0,
     2893     833,   182,   731,   112,   262,   263,   263,   143,   244,    80,
     2894      81,   269,    11,   109,   248,  1295,    70,   452,   276,   833,
     2895     107,  1501,   144,  1503,   392,   713,   845,   248,   202,   290,
     2896      31,   269,   206,   593,   248,   157,   414,   845,   276,  1248,
     2897     596,   107,    37,   248,   494,   452,    94,  1282,   833,   484,
     2898     338,  1002,   420,   833,   607,   109,   434,   813,   426,   248,
     2899     182,   183,   236,   237,   442,    37,   686,   325,   325,   625,
     2900     206,    37,    70,   121,   630,   833,   636,   484,   822,   367,
     2901     639,   640,   641,    80,   206,   833,   344,   345,   833,   114,
     2902    1281,  1282,    94,   822,   268,   110,   218,   271,   657,  1218,
     2903     236,   218,   107,   361,   110,   130,   344,   365,   114,    67,
     2904     107,   109,   107,    71,   109,  1218,    74,   291,    76,   121,
     2905     294,   108,   835,   361,   129,    83,   248,   365,   115,    88,
     2906      89,   248,   268,   692,   392,   107,   692,   109,   112,   953,
     2907     262,   107,   129,   109,   402,   402,   954,  1064,    80,   422,
     2908     423,     4,     5,     6,     7,     8,     9,  1014,   294,   609,
     2909     972,   114,   420,   613,   338,   124,   125,   341,   426,   240,
     2910     428,  1406,   731,   953,  1517,  1455,   108,  1517,    70,    32,
     2911      72,    73,  1462,   115,   634,   108,   360,   110,   638,   675,
     2912     364,   114,  1295,   367,   452,   953,    70,  1537,    72,    73,
     2913       3,  1544,   108,   325,  1544,   341,   129,   130,   767,   115,
     2914     471,   767,  1398,  1399,    67,  1406,    69,     3,   476,    70,
     2915     112,    72,    73,   345,   114,   498,   484,   484,   997,   346,
     2916     488,   488,   922,   107,   492,  1515,   652,   107,   112,   753,
     2917     528,   113,   114,   516,   962,     0,  1133,   248,   422,   423,
     2918     108,   209,   253,     0,   488,   516,   114,   129,   109,     0,
     2919     695,   932,   129,   822,   824,   693,   693,   488,   828,   940,
     2920     693,   693,   533,   114,   693,   536,   450,   538,   539,   453,
     2921     402,   693,   693,   488,    31,   459,   422,   423,   695,   130,
     2922     896,   659,   845,   107,   108,   109,   114,   471,   845,   488,
     2923     291,  1109,   107,   114,    70,   376,    72,    73,   686,   582,
     2924    1023,  1024,   130,   114,   985,  1127,    70,   107,   661,   130,
     2925      74,   114,   496,   809,   498,   586,   500,    81,    82,   130,
     2926     452,   108,   108,   819,   107,   593,   510,   130,   114,   107,
     2927     514,   107,   516,   517,    63,    70,   112,   605,   834,   607,
     2928     728,   114,  1455,   107,   528,   109,    81,    82,   918,  1462,
     2929     477,    80,   498,   117,   107,   114,   488,   130,   626,   114,
     2930     492,   488,  1184,  1185,   127,   110,   129,   114,  1295,   114,
     2931     516,   130,   107,    78,   642,   130,   457,   108,   626,   594,
     2932     348,   462,   350,   130,   114,   114,  1487,   658,   656,   660,
     2933     107,   659,  1493,   691,   642,     0,     1,  1095,   582,   114,
     2934     130,   958,  1515,   414,   109,   108,   111,   867,   656,   593,
     2935     115,   114,   596,  1514,   495,   130,   497,   882,  1519,   114,
     2936      78,   422,   423,   434,   108,   693,    31,   695,   157,   110,
     2937     107,   442,   109,   114,   108,   130,   582,   108,   903,    44,
     2938     117,   625,  1058,   278,   108,  1372,   630,   107,  1014,   109,
     2939     596,   109,   636,   111,   107,   726,   109,   115,   107,   964,
     2940     109,    66,   888,   108,   117,   107,  1035,   109,   766,   114,
     2941     438,   739,   740,   605,   108,   607,   107,   488,   109,   625,
     2942     114,   110,   108,   107,   630,   753,   117,   932,   114,   218,
     2943      70,   248,    72,    73,    74,   940,   253,   108,   103,   959,
     2944     627,    81,    82,   114,   510,   753,   108,   691,   514,   510,
     2945     107,   517,   114,   514,   108,   932,   517,   110,   108,  1311,
     2946     114,   114,   108,   940,   114,   113,  1096,   256,   114,   713,
     2947     107,   260,  1459,   107,  1461,   117,  1032,  1033,   108,   144,
     2948     122,   123,   110,   108,   114,   130,   114,   152,   153,   114,
     2949       4,     5,     6,     7,     8,     9,   107,   108,   109,   743,
     2950      62,   693,    70,   695,  1521,   833,    74,   648,   110,   108,
     2951     571,  1393,  1027,    81,    82,   114,  1521,   845,   183,   108,
     2952     108,   107,   766,   109,  1153,   114,   114,  1153,  1410,  1516,
     2953     107,   108,   719,   198,  1090,  1091,   201,   202,  1521,   107,
     2954    1125,   206,  1218,    44,  1129,   130,   733,   739,   740,   117,
     2955      83,    84,    85,    67,   829,    69,   107,   346,    70,   112,
     2956      72,    73,   227,   108,  1050,   896,   231,   708,   233,   114,
     2957     107,   108,   109,   714,   107,   130,   109,   242,   111,   112,
     2958     824,   108,    70,   248,   828,   108,    74,   114,   253,   130,
     2959     918,   114,   896,    81,    82,   119,   120,   414,   263,    86,
     2960      87,  1483,  1484,   107,   932,   109,   271,  1233,   109,   107,
     2961     108,   109,   940,   508,    70,   686,   130,   434,   107,   107,
     2962     109,   896,    90,    91,    44,   442,    56,    57,    58,   117,
     2963     958,    10,    11,    12,    13,    14,  1312,   896,   427,   826,
     2964      60,   833,   107,    63,   109,   963,    66,    70,   112,    72,
     2965      73,    74,  1281,   845,  1254,  1255,  1256,   728,    37,   963,
     2966     107,   112,   109,   994,   107,   107,   997,   109,   999,   486,
     2967      80,   488,   107,   338,   918,  1231,   341,   110,   922,  1117,
     2968      80,   698,   347,   700,   113,   114,    65,   118,   477,   126,
     2969    1366,   108,   109,  1369,    92,   360,   114,   115,   109,   364,
     2970      56,    57,   367,   127,   963,   206,  1262,   113,   114,   896,
     2971     560,   561,   562,   563,  1270,  1271,  1272,  1048,   962,   963,
     2972     964,   114,   115,   107,   144,   114,   115,  1058,    42,    43,
     2973    1061,  1062,  1063,   129,   556,   557,   237,   157,  1414,   107,
     2974     932,   110,   108,  1419,   558,   559,   110,   888,   940,   414,
     2975     108,  1055,   564,   565,   895,  1496,   108,   108,   964,    83,
     2976      84,    85,  1318,   183,   429,   108,   958,   268,   108,   434,
     2977    1014,   107,   110,  1449,   109,   114,   671,   442,   110,   129,
     2978    1055,   112,   107,   107,   110,   109,   206,   111,   112,  1117,
     2979     291,   108,   108,   294,   115,   110,  1055,   110,   218,   110,
     2980     110,    28,   114,   468,   108,  1546,   471,   115,  1014,   108,
     2981     599,   112,   110,    50,   694,    52,   113,   113,    55,    56,
     2982      57,   486,    59,   488,   115,   896,   108,   113,   107,   114,
     2983    1017,   496,   108,   108,   108,   500,   716,    74,   627,   108,
     2984     130,   108,   115,   632,   108,   986,   114,   108,   108,    86,
     2985      87,  1095,  1096,   108,   108,  1213,   108,   108,   108,  1535,
     2986     108,   108,   757,   528,   529,  1541,   108,   108,  1055,   686,
     2987      70,    28,    72,    73,    74,   692,  1552,   108,  1196,   108,
     2988    1556,    81,    82,   113,   129,  1213,     3,  1218,   110,   108,
     2989     108,  1195,  1196,    10,    11,    12,    13,    14,   108,   113,
     2990      10,    11,    12,    13,    14,   325,   108,   107,   114,   109,
     2991     575,   728,   110,   110,  1218,   115,   108,   117,   108,  1237,
     2992      37,   114,   108,  1254,  1255,  1256,   806,    37,   593,   594,
     2993     719,   596,   115,  1237,   114,   112,   114,  1196,   110,   108,
     2994     114,   114,   607,  1218,   733,  1086,   108,   108,    65,   450,
     2995     767,  1389,   453,   107,   110,    65,   107,   107,   459,  1218,
     2996     625,   107,   107,   110,   130,   630,  1531,   115,   108,  1213,
     2997     113,   636,   108,   108,   639,   640,   641,   110,  1237,   113,
     2998    1311,  1312,   402,   127,  1055,   112,  1290,   110,   130,   114,
     2999     114,  1295,   657,  1237,   110,   108,   108,   107,    45,   109,
     3000     108,   110,   108,   110,   884,   110,   110,   117,  1195,   510,
     3001     675,  1329,   110,   514,   110,   130,   517,  1522,     0,   130,
     3002    1295,   686,   113,  1521,  1521,  1329,   691,   692,  1521,  1521,
     3003     695,  1218,  1521,   130,   108,  1366,  1295,   826,  1369,  1521,
     3004    1521,  1546,   130,   130,    63,  1522,   113,   115,   108,    31,
     3005    1191,   110,   113,   110,   110,   110,   110,   110,  1496,   110,
     3006    1388,  1389,   110,   728,   108,   108,   731,  1398,  1399,  1546,
     3007    1329,   110,   110,   107,   107,   740,   107,    58,   743,   896,
     3008    1388,   108,   108,  1414,    66,  1329,   115,    70,  1419,    72,
     3009      73,    74,   972,   130,   112,   114,   110,   110,    81,    82,
     3010     108,   766,   767,  1290,   341,   342,  1437,   772,  1295,   110,
     3011     108,   107,   107,    52,  1432,    94,   353,   354,  1449,    94,
     3012     130,   113,  1002,   110,   107,   114,   109,    40,  1432,   115,
     3013     108,   108,   108,   130,   117,   108,  1197,  1198,   157,  1200,
     3014     130,   108,   108,    94,   809,  1206,    94,  1218,  1209,   108,
     3015     130,  1455,   108,  1521,   819,   115,    95,   822,  1462,   824,
     3016    1521,  1521,   827,   828,   829,   130,  1497,   130,  1496,   834,
     3017     108,   153,  1052,  1432,   108,  1506,   113,   110,   110,   844,
     3018    1455,  1512,   107,   130,   130,   113,  1517,  1462,  1432,   113,
     3019     108,   108,   108,  1521,  1522,  1522,  1455,   108,  1070,   218,
     3020     130,   566,   569,  1462,  1535,    70,  1537,    72,    73,    74,
     3021    1541,  1515,   713,  1544,   567,   570,    81,    82,  1546,  1546,
     3022    1464,  1552,  1466,   568,  1295,  1556,    54,  1218,  1017,  1484,
     3023    1125,   896,  1374,  1556,  1129,  1130,   468,   256,  1055,  1130,
     3024    1515,   260,   107,  1305,   109,   227,  1334,  1127,   280,  1462,
     3025     940,   190,   117,   918,  1086,   450,  1515,  1501,   462,  1503,
     3026     700,   293,   294,   450,   942,   986,   248,   586,  1455,   888,
     3027     653,   253,   743,   305,   213,  1462,   104,   960,  1237,   107,
     3028     488,   753,   574,    -1,   223,   574,   574,  1531,    -1,   954,
     3029       4,     5,     6,     7,     8,     9,    -1,   962,   963,    -1,
     3030      -1,    -1,    -1,    -1,  1184,  1185,    -1,  1368,    -1,   341,
     3031      -1,    -1,    -1,    -1,   979,    -1,    -1,    -1,    -1,    -1,
     3032      -1,   675,    -1,    -1,   152,  1531,    -1,   346,  1515,  1521,
     3033      10,    11,    12,    13,    14,    -1,  1153,    -1,    -1,    10,
     3034      11,    12,    13,    14,    -1,   377,    -1,    -1,  1243,  1014,
     3035      -1,    -1,   291,    67,    -1,    69,    -1,    37,    -1,    -1,
     3036      -1,    -1,  1027,    -1,    -1,   347,    37,  1032,  1033,    -1,
     3037    1035,  1036,    -1,    -1,     0,    10,    11,    12,    13,    14,
     3038      -1,    -1,    -1,    -1,  1455,    65,    -1,   215,    -1,    -1,
     3039    1055,  1462,    -1,    -1,    65,    -1,    -1,    -1,    -1,    70,
     3040      -1,  1218,    37,    74,    -1,    31,  1195,    -1,   427,    -1,
     3041      81,    82,    -1,    -1,    -1,    -1,  1233,    -1,    -1,    -1,
     3042      -1,   922,    -1,    -1,    -1,  1090,  1091,   107,    -1,   109,
     3043      65,  1096,   414,    -1,    -1,  1330,   107,   117,    -1,  1334,
     3044      66,   269,    -1,   675,  1515,    -1,   117,   429,   276,    -1,
     3045      -1,    -1,   434,    -1,    -1,   809,    -1,    -1,   477,    -1,
     3046     442,    -1,    -1,    -1,    -1,   819,    -1,    -1,    -1,    -1,
     3047      -1,    -1,   107,    -1,   109,    -1,    -1,    -1,  1295,    -1,
     3048     834,    -1,   117,   720,    -1,   722,   468,    70,  1153,    72,
     3049      73,    74,   729,   730,    -1,     0,     1,   734,    81,    82,
     3050     439,  1290,    -1,    -1,   486,    -1,   488,    -1,    70,   746,
     3051      72,    73,    74,  1393,   751,    -1,   344,    -1,    -1,    81,
     3052      82,   553,   554,   555,   107,    -1,    31,   153,    -1,    -1,
     3053    1410,  1196,    63,   361,   473,    -1,    -1,   365,    -1,   776,
     3054      -1,  1436,    73,    -1,    -1,   107,    -1,   529,  1213,    -1,
     3055      -1,    -1,    -1,  1218,    -1,   117,    -1,    -1,    63,    -1,
     3056      -1,    66,    -1,    -1,   596,    -1,  1231,    -1,  1233,    -1,
     3057      -1,   510,  1237,    -1,    -1,   514,    -1,   809,   517,    -1,
     3058     599,    -1,    -1,   114,   821,    -1,    -1,   819,    -1,    -1,
     3059      -1,    -1,    -1,    -1,  1095,    -1,    -1,  1262,    -1,    -1,
     3060     428,    -1,   834,  1483,  1484,  1270,  1271,  1272,   627,    -1,
     3061      -1,    -1,   594,   632,    -1,    -1,  1281,  1282,    -1,    -1,
     3062      -1,    -1,   248,    -1,    -1,    -1,   157,   253,    -1,    -1,
     3063    1295,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1455,    -1,
     3064      -1,   878,   879,   880,   881,  1462,   883,    -1,   153,    -1,
     3065      -1,    -1,    -1,  1318,    -1,    -1,    -1,   639,   640,   641,
     3066      -1,    -1,   899,    -1,  1329,    -1,    -1,    10,    11,    12,
     3067      13,    14,    -1,    -1,    -1,   657,   913,    -1,  1032,  1033,
     3068      70,    -1,    72,    73,    74,    -1,    -1,   218,    -1,    -1,
     3069      -1,    81,    82,   675,    37,    -1,    -1,   729,  1515,    -1,
     3070     719,    -1,    -1,    -1,   686,    -1,    -1,    -1,    -1,    -1,
     3071     692,    -1,    -1,   218,   733,   952,    -1,   107,    -1,    -1,
     3072      -1,   347,    65,    -1,    -1,   256,    -1,    70,    -1,   260,
     3073      -1,    74,    -1,    -1,    -1,   674,  1090,  1091,    81,    82,
     3074      -1,  1406,   774,   248,   683,   276,   728,    -1,   687,   731,
     3075      -1,    -1,    -1,    -1,   991,    -1,     0,    -1,    -1,    -1,
     3076      -1,   998,    -1,    -1,   107,   593,  1003,  1432,    -1,    -1,
     3077      -1,  1008,    -1,  1010,   117,    -1,    -1,  1014,  1015,  1016,
     3078      -1,    -1,  1019,    -1,    -1,   767,    -1,    31,   414,   821,
     3079    1455,  1028,    -1,    -1,    -1,    -1,    -1,  1462,   626,    -1,
     3080    1032,  1033,    -1,   429,    -1,    -1,    -1,   826,   434,  1046,
     3081    1047,    -1,    -1,    -1,   642,   346,   442,    -1,    -1,    -1,
     3082      -1,    -1,    66,    -1,    -1,    -1,    -1,   809,   656,    -1,
     3083      -1,    -1,    -1,    -1,    -1,    -1,  1073,   819,    -1,  1076,
     3084     822,    -1,   468,    -1,    -1,   827,    -1,   829,    -1,    -1,
     3085    1515,    -1,   834,    -1,    -1,    -1,    -1,  1522,  1090,  1091,
     3086     486,     3,   488,    70,    -1,    72,    73,    74,    10,    11,
     3087      12,    13,    14,    -1,    81,    82,    -1,  1114,    -1,    -1,
     3088      -1,    -1,    -1,  1120,  1121,    -1,    -1,    -1,    -1,    -1,
     3089      -1,    -1,    -1,    -1,  1131,    37,   427,    -1,    -1,  1136,
     3090     107,    -1,  1139,   529,  1141,    -1,    -1,  1144,  1262,   153,
     3091     117,    -1,     0,   444,   896,    -1,  1270,  1271,  1272,    -1,
     3092    1157,    -1,    -1,    65,   429,   753,    -1,    -1,    -1,    -1,
     3093      -1,    -1,    -1,  1170,    -1,  1172,  1173,  1174,  1175,    -1,
     3094      -1,    -1,    -1,    31,    -1,    -1,   477,    -1,    -1,    -1,
     3095      -1,  1188,    -1,  1190,    -1,    -1,    -1,  1194,    -1,    -1,
     3096      -1,    -1,    -1,  1464,  1318,  1466,    -1,    -1,   594,    -1,
     3097      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    -1,
     3098      -1,   920,  1014,   488,    -1,     3,  1223,  1224,    -1,    -1,
     3099      -1,    -1,    10,    11,    12,    13,    14,   979,  1017,  1231,
     3100    1501,    -1,  1503,    -1,   248,   186,    -1,    -1,    -1,   253,
     3101      -1,    -1,   193,   639,   640,   641,    -1,    -1,    -1,    37,
     3102      -1,    -1,    -1,  1055,   529,    -1,    -1,    -1,    -1,    -1,
     3103    1262,   657,    -1,    -1,    -1,    -1,  1273,  1274,  1270,  1271,
     3104    1272,    -1,    -1,    -1,    -1,    -1,  1283,    65,    -1,   675,
     3105    1032,  1033,    -1,  1035,  1036,    -1,    -1,    -1,    -1,    -1,
     3106     686,    -1,    -1,    -1,    -1,   153,   692,    -1,   599,    -1,
     3107      -1,    -1,    -1,  1055,    -1,    -1,    -1,    -1,    -1,    -1,
     3108      -1,    -1,    -1,    -1,   265,    -1,  1318,    -1,    -1,   594,
     3109     918,    -1,    -1,    -1,    -1,    -1,   627,    -1,  1335,    -1,
     3110      -1,   632,   728,   347,    -1,   731,    -1,    -1,  1090,  1091,
     3111    1347,    -1,  1349,  1350,  1351,    -1,    -1,    70,    -1,    72,
     3112      73,    74,    -1,    -1,  1361,    -1,    -1,  1066,    81,    82,
     3113      -1,    -1,    -1,  1370,   639,   640,   641,    -1,  1170,   320,
     3114      -1,   767,    -1,    -1,    -1,    -1,    -1,   328,    -1,  1386,
     3115     331,    -1,   657,    -1,   107,    -1,   109,    -1,    -1,    -1,
     3116     248,    -1,    -1,    -1,   117,   253,    -1,    -1,    -1,    -1,
     3117     414,  1153,    -1,    -1,    -1,    -1,  1195,    -1,    -1,    -1,
     3118      -1,    -1,    -1,   809,    -1,   429,    -1,    -1,   719,    -1,
     3119     434,    -1,    -1,   819,    -1,    -1,   822,    -1,   442,    -1,
     3120      -1,   827,   733,   829,    -1,  1442,  1443,    -1,   834,    -1,
     3121      -1,    -1,    -1,   394,  1196,    -1,    -1,   398,  1455,    -1,
     3122      -1,    -1,   753,    -1,   468,  1462,   731,    -1,    -1,    -1,
     3123      -1,    -1,    -1,    -1,    -1,    -1,  1218,    -1,    -1,    -1,
     3124      -1,    -1,   486,    -1,   488,    -1,    -1,    -1,    -1,  1231,
     3125      -1,  1233,    -1,    -1,    -1,    -1,    -1,    -1,  1495,   347,
     3126      -1,    -1,  1499,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3127     896,  1290,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3128    1262,    -1,    -1,    -1,    -1,   529,    -1,    -1,  1270,  1271,
     3129    1272,  1528,    -1,  1530,    -1,   826,    -1,    -1,    -1,  1281,
     3130    1282,    -1,   483,    -1,    10,    11,    12,    13,    14,    -1,
     3131      -1,    -1,    -1,  1295,    -1,    -1,    -1,   822,    -1,    -1,
     3132      -1,  1558,  1559,    -1,   829,    -1,   414,    -1,    -1,  1566,
     3133    1567,    37,    -1,    -1,    -1,    -1,  1318,    -1,    -1,    -1,
     3134      -1,   429,    -1,    -1,    -1,    -1,   434,    -1,    -1,    -1,
     3135     594,    -1,    -1,   979,   442,    -1,    -1,    -1,    -1,    65,
     3136      -1,    -1,    -1,    -1,    70,  1304,    72,    73,    74,    -1,
     3137      -1,    -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,
     3138     468,    -1,    -1,    -1,    -1,  1213,    -1,    -1,    -1,    -1,
     3139      -1,   896,    -1,   574,   575,   639,   640,   641,   486,    -1,
     3140     488,   107,    -1,   109,    -1,    -1,  1032,  1033,    -1,  1035,
     3141    1036,   117,    -1,   657,    -1,    -1,    -1,    -1,    -1,    -1,
     3142      -1,    -1,    -1,    -1,  1406,    -1,    -1,    -1,    -1,  1055,
     3143      -1,   675,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3144      -1,   529,   686,    -1,    -1,    -1,    -1,    -1,   692,    10,
     3145      11,    12,    13,    14,    -1,    -1,    -1,    -1,   963,    -1,
     3146      -1,    -1,    -1,    -1,  1090,  1091,    -1,    25,    26,    27,
     3147      -1,    -1,    -1,  1455,   979,    -1,    37,    -1,    -1,    -1,
     3148    1462,   662,    -1,    -1,   728,   666,  1017,   731,    95,    96,
     3149      97,    98,    99,   100,   101,   102,   103,   104,    -1,    -1,
     3150      -1,    -1,    -1,    -1,    65,    -1,   594,    -1,    -1,    70,
     3151      -1,    72,    73,    74,    -1,    -1,    -1,    -1,   699,    -1,
     3152      81,    82,   129,   767,  1463,    -1,  1465,  1153,    -1,    -1,
     3153    1035,  1036,    -1,  1515,    -1,    -1,    -1,    -1,    96,    -1,
     3154      98,    -1,    -1,    -1,    -1,    -1,   107,    -1,   109,    -1,
     3155    1055,   639,   640,   641,    -1,    -1,   117,    -1,    -1,    -1,
     3156    1388,  1500,    -1,  1502,   122,   809,    -1,    -1,    -1,   657,
     3157    1196,    -1,    -1,    -1,    -1,   819,    -1,    -1,   822,    -1,
     3158      -1,    -1,    -1,   827,    -1,   829,    -1,   675,    -1,    -1,
     3159     834,    -1,  1218,    -1,    -1,    -1,    -1,    -1,   686,    10,
     3160      11,    12,    13,    14,   692,  1231,  1545,  1233,  1547,    -1,
     3161      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3162     178,  1560,  1561,    -1,    -1,    -1,    37,    -1,   186,    -1,
     3163     188,   189,   813,    -1,    -1,   193,  1262,   195,   196,    37,
     3164     728,    -1,    -1,   731,  1270,  1271,  1272,    -1,    -1,    25,
     3165      26,    27,   896,    -1,    65,  1281,  1282,    -1,    -1,    70,
     3166      -1,    72,    73,    74,  1195,    -1,    -1,    65,    -1,  1295,
     3167      81,    82,    70,    -1,    72,    73,    74,    -1,    -1,   767,
     3168      -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
     3169    1195,  1196,  1318,    -1,    -1,    -1,   107,    -1,   109,    -1,
     3170      -1,    -1,    -1,    -1,    -1,    -1,   117,   265,    -1,   107,
     3171      -1,    -1,    -1,  1218,    -1,    -1,    -1,    -1,    -1,   117,
     3172      96,   809,    98,    -1,    -1,    -1,    -1,    -1,    63,    -1,
     3173      -1,   819,  1237,    -1,   822,   979,    -1,    -1,    73,   827,
     3174      75,   829,    77,    -1,    44,   926,   834,    -1,    -1,    84,
     3175      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1290,
     3176      -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,    -1,
     3177      10,    11,    12,    13,    14,    -1,  1281,  1282,    -1,   114,
     3178    1406,   116,   117,   118,    -1,  1290,    -1,    -1,  1032,  1033,
     3179    1295,  1035,  1036,    -1,    -1,    -1,    -1,    37,    -1,    -1,
     3180      -1,    -1,   178,    -1,    -1,    -1,    -1,    -1,   896,   109,
     3181      -1,  1055,   188,   189,   114,    -1,    -1,   193,    -1,   195,
     3182     196,    -1,   157,  1004,  1329,    65,    -1,    -1,    -1,  1455,
     3183      70,    -1,    72,    73,    74,    -1,  1462,    -1,    -1,  1020,
     3184      -1,    81,    82,   143,    -1,    -1,  1090,  1091,    -1,    -1,
     3185      -1,    -1,    -1,   153,    -1,    -1,    -1,   157,    -1,    -1,
     3186      -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,    -1,
     3187      -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,
     3188      -1,    -1,    -1,   218,    -1,   220,   221,   222,    -1,  1515,
     3189      -1,   979,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3190      -1,  1406,    -1,    -1,    -1,    -1,   206,    -1,    -1,  1153,
     3191      -1,    -1,    -1,    -1,    -1,    -1,  1097,    -1,   218,    -1,
     3192      -1,   256,    -1,    -1,    -1,   260,    -1,  1432,    -1,    -1,
     3193      -1,    -1,    -1,    -1,    -1,    -1,   236,   237,    -1,    -1,
     3194      -1,   276,    -1,    -1,  1032,  1033,    -1,  1035,  1036,    -1,
     3195    1455,    -1,  1196,    -1,    -1,    -1,    -1,  1462,    -1,    -1,
     3196     260,    -1,    -1,    -1,    -1,    -1,    -1,  1055,   268,    -1,
     3197      -1,    -1,    -1,    -1,  1218,    -1,    -1,    -1,    -1,    -1,
     3198      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1231,    -1,  1233,
     3199     325,   291,    -1,    -1,   294,    -1,    -1,    -1,    -1,    -1,
     3200      -1,    -1,  1090,  1091,    -1,    -1,    -1,    -1,    -1,    -1,
     3201    1515,   346,    -1,    -1,    -1,    -1,   351,   352,  1262,    -1,
     3202     578,   579,    -1,    -1,   359,    -1,  1270,  1271,  1272,    -1,
     3203      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1281,  1282,    -1,
     3204      -1,   341,    -1,    -1,    -1,    -1,   346,    -1,    -1,    -1,
     3205     608,  1295,    -1,   611,   612,    36,   614,    38,   616,   617,
     3206      -1,    -1,    -1,   621,   622,  1153,    -1,   402,    -1,    -1,
     3207      -1,    -1,    -1,    -1,  1318,    -1,    -1,    -1,    -1,    -1,
     3208      -1,    -1,    -1,    64,    -1,   420,    -1,    -1,    -1,    70,
     3209     425,    -1,   427,    74,    -1,    -1,    77,    78,    79,    80,
     3210      81,    82,    -1,    84,    85,    -1,    -1,    -1,  1196,   444,
     3211      -1,    92,   447,   448,    -1,    -1,    -1,    -1,    -1,    -1,
     3212      -1,    -1,   422,   423,    -1,    -1,   107,    -1,   463,   429,
     3213    1218,    -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,
     3214     121,   699,   477,  1231,    -1,  1233,   704,   705,    -1,   484,
     3215     450,    -1,   710,   453,    -1,    -1,    -1,    -1,    -1,   459,
     3216      -1,    -1,  1406,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3217      -1,    -1,    -1,    -1,  1262,    -1,    -1,    -1,    -1,    -1,
     3218      -1,    -1,  1270,  1271,  1272,    -1,   486,    -1,    -1,    -1,
     3219      -1,    -1,    -1,  1281,  1282,    -1,    -1,    -1,   498,    -1,
     3220      -1,    -1,   578,   579,    -1,    -1,    43,  1295,    -1,    -1,
     3221     510,  1455,    -1,    -1,   514,    -1,   516,   517,  1462,    -1,
     3222      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   529,
     3223    1318,    -1,   608,    -1,    -1,   611,   612,    -1,   614,    -1,
     3224     616,   617,    -1,    -1,    -1,   621,   622,    -1,    -1,    -1,
     3225      -1,    -1,    89,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3226      -1,    -1,    99,    -1,   599,    -1,    -1,    -1,    -1,    -1,
     3227      -1,  1515,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3228      -1,    -1,   582,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3229      -1,    -1,   627,    -1,   594,    -1,   596,   632,    -1,   599,
    32243230      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3225       20,    21,    22,    23,    24,    25,    26,    27,    -1,  1434,
    3226      817,    -1,    -1,    -1,   484,    -1,  1441,    37,    -1,    -1,
    3227       -1,    -1,    -1,    -1,    -1,    -1,   496,    -1,    -1,    -1,
    3228       -1,    -1,    -1,  1485,    -1,    -1,    -1,    -1,   508,    -1,
    3229       60,    -1,   512,    -1,   514,   515,    -1,    -1,    -1,    -1,
    3230       -1,    71,    -1,    -1,    -1,    -1,    -1,   527,    -1,    -1,
    3231     1485,    -1,   575,   576,    -1,    -1,    -1,   874,   875,   876,
    3232      877,    -1,   879,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3233       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   895,    -1,
    3234       -1,    -1,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
    3235      613,   614,   909,    -1,    -1,   618,   619,    -1,    -1,   579,
    3236       -1,    -1,   575,   576,    -1,    -1,    -1,    -1,    -1,    -1,
    3237       -1,   591,    -1,   593,    -1,    -1,   596,    -1,    -1,    -1,
     3231      20,    21,    22,    23,    24,    25,    26,   154,  1406,    29,
     3232      30,    31,    -1,    -1,    -1,   625,    -1,    37,   704,   705,
     3233     630,   168,    -1,    -1,   710,    -1,    -1,    -1,    -1,   639,
     3234     640,   641,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3235      -1,    -1,    -1,    -1,   191,    65,    -1,   657,    -1,    -1,
     3236      70,    -1,    72,    73,    74,    -1,    -1,  1455,   205,    -1,
     3237      -1,    81,    82,    -1,  1462,    -1,    -1,   214,    -1,    -1,
     3238      -1,    -1,    -1,    -1,   719,    -1,    -1,   224,    -1,    -1,
     3239      -1,    -1,   692,    -1,    -1,    -1,    -1,   107,   733,   109,
     3240      -1,    36,    -1,    38,    -1,    -1,    -1,   117,    -1,    -1,
     3241      -1,    -1,   249,   713,    -1,    -1,    -1,   254,   753,    -1,
     3242      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1515,    -1,    64,
     3243     267,   731,    -1,   733,    -1,    70,   273,    -1,   275,    74,
     3244      -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
     3245      85,    -1,    -1,    -1,    -1,   292,    -1,    92,    -1,    -1,
     3246      -1,    -1,    -1,    -1,    -1,    -1,    -1,   767,    -1,    -1,
     3247      -1,    -1,   107,    -1,   109,    -1,    -1,   112,   813,    -1,
     3248      -1,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
     3249      -1,   826,    -1,    -1,    -1,    -1,    -1,    -1,   335,    -1,
     3250      -1,    -1,    -1,   340,    -1,    -1,    -1,    -1,    -1,    -1,
     3251     845,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3252      -1,    -1,   822,    -1,    -1,    -1,   826,    -1,    -1,   829,
     3253      -1,   368,    -1,    -1,  1092,   372,   373,    -1,   375,    -1,
     3254      -1,    -1,    -1,    -1,    -1,   382,   383,    -1,   385,   386,
     3255      -1,   388,    -1,   390,    -1,    -1,    -1,    -1,    -1,    -1,
     3256      -1,     7,    -1,    -1,    10,    11,    12,    13,    14,    -1,
     3257     407,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   415,    -1,
    32383258      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3239       -1,   948,   605,    -1,    -1,   608,   609,    -1,   611,    -1,
    3240      613,   614,   622,    -1,    -1,   618,   619,   627,    -1,    -1,
    3241       -1,    -1,    -1,    -1,    -1,    -1,   636,   637,   638,    -1,
     3259      36,    37,    38,    -1,    -1,    -1,    -1,   932,    -1,    -1,
     3260      -1,    -1,    -1,   440,    -1,    -1,    -1,    -1,    -1,    -1,
     3261      -1,    -1,    -1,    -1,   451,    -1,    -1,    -1,    64,    65,
     3262      -1,    -1,   922,   958,    70,    -1,    -1,    -1,    74,    -1,
     3263      -1,    77,    78,    79,    80,    81,    82,   474,    84,    85,
     3264      -1,    -1,    -1,   480,    -1,    -1,    92,    -1,   485,    -1,
     3265     985,    -1,    -1,    -1,    -1,    -1,    -1,  1215,    -1,    -1,
     3266      -1,   107,    -1,   109,   964,    -1,    -1,    -1,    -1,    -1,
     3267     116,   117,   118,   119,   120,   121,    -1,    -1,    -1,   979,
     3268      -1,    -1,  1017,    -1,   521,    -1,    -1,    -1,    -1,    -1,
     3269      -1,    -1,    -1,  1028,    -1,    -1,    -1,    -1,    -1,    -1,
     3270     537,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3271      -1,    -1,    -1,    -1,  1014,    -1,  1092,    -1,    -1,     7,
     3272      -1,    -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,
     3273      -1,    -1,    -1,    -1,    -1,  1035,  1036,   574,    -1,    -1,
     3274      -1,    -1,    -1,    -1,    -1,   143,   583,    -1,    36,    37,
     3275      38,    -1,    -1,   590,    -1,   153,    -1,    -1,   595,    -1,
     3276      -1,    -1,    -1,    -1,    -1,    -1,    -1,   165,   166,   606,
     3277      -1,    -1,    -1,    -1,  1109,    -1,    64,    65,    -1,    -1,
     3278      -1,    -1,    70,    -1,    -1,    -1,    74,    -1,    -1,    77,
     3279      78,    79,    80,    81,    82,  1095,    84,    85,    -1,    -1,
     3280      -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,
     3281     647,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
     3282      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,   116,   117,
     3283     118,   119,   120,   121,    -1,    -1,    -1,    -1,   236,  1215,
     3284      -1,    -1,    -1,    -1,    -1,   682,    -1,   152,   153,    -1,
     3285      -1,    -1,    -1,  1153,    -1,    -1,    -1,    -1,    -1,    -1,
     3286    1195,    -1,    -1,   261,    10,    11,    12,    13,    14,    15,
     3287      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3288      26,   186,    -1,    29,    30,    31,    -1,    -1,   193,    -1,
     3289      -1,    37,    -1,    -1,    -1,  1195,    -1,    -1,    -1,    -1,
     3290     737,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3291     747,   748,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
     3292      -1,    -1,    -1,   760,    70,    -1,    72,    73,    74,    -1,
     3293      -1,    -1,    -1,  1233,    -1,    81,    82,    -1,    -1,    -1,
     3294     777,    -1,   779,    -1,    -1,    -1,   783,    -1,    -1,    -1,
     3295      -1,    -1,    -1,    -1,    -1,  1290,    -1,    -1,    -1,    -1,
     3296     265,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
     3297      -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,   376,    -1,
     3298      -1,  1281,  1282,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3299    1290,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3300      -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3301      -1,    -1,   849,    -1,    -1,   320,    -1,    -1,    -1,   856,
     3302      -1,    -1,    -1,   328,   329,    -1,   331,   332,    -1,    64,
     3303      -1,    -1,   869,    -1,   871,    70,   341,    72,    73,    74,
     3304     345,    -1,    77,    78,    79,    80,    81,    82,   885,    84,
     3305      85,    -1,    -1,    -1,    -1,   892,    -1,    92,    -1,   364,
     3306      -1,    -1,   367,    -1,    -1,    -1,    -1,   904,    -1,    -1,
     3307     907,    -1,   107,    -1,   109,    -1,   111,   112,    -1,    -1,
     3308     478,   116,   117,   118,   119,   120,   121,    -1,   925,   394,
     3309      -1,    -1,    -1,   398,    -1,    -1,    -1,    -1,    -1,    -1,
     3310      -1,    -1,    -1,    -1,    -1,    -1,  1406,    -1,    -1,    -1,
     3311      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   516,    -1,
     3312      -1,    -1,    -1,    -1,   429,    -1,    -1,    -1,    -1,    -1,
     3313      -1,   529,    -1,    -1,    -1,    -1,    -1,    -1,   536,    -1,
     3314      -1,   539,    -1,    -1,    -1,    -1,    -1,   452,    -1,    -1,
     3315      -1,    -1,   550,   551,    -1,    -1,    -1,    -1,    -1,    -1,
     3316      -1,    -1,    -1,    -1,  1464,    -1,  1466,    -1,    -1,    -1,
     3317      -1,    -1,    -1,    -1,   572,    -1,  1013,    -1,   483,    -1,
     3318      -1,   486,    -1,    -1,   582,    -1,    -1,    -1,    -1,    -1,
     3319      -1,   589,    -1,    -1,    -1,    -1,   594,    -1,    -1,    -1,
     3320      -1,  1501,    -1,  1503,    -1,    -1,    -1,    -1,    -1,    -1,
     3321      -1,  1546,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3322     525,    -1,    -1,   528,   529,    -1,    -1,    -1,    -1,    -1,
     3323      -1,  1531,  1069,    -1,    -1,    -1,    -1,    -1,    -1,  1076,
     3324      -1,    -1,    -1,    -1,    -1,    -1,   644,    -1,    -1,    -1,
     3325      -1,    -1,    -1,    -1,   652,    -1,    -1,    -1,    -1,    -1,
     3326      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1105,   574,
     3327     575,    -1,    -1,  1110,    -1,    -1,    -1,    -1,    -1,    -1,
     3328      -1,  1118,    -1,    -1,    -1,    -1,    -1,    -1,   593,   594,
     3329      -1,   596,    -1,    -1,   692,    -1,    -1,    -1,    -1,    -1,
     3330     605,    -1,   607,   608,    -1,    -1,    -1,    -1,    -1,   614,
     3331      -1,  1148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,
     3332     625,    -1,    -1,  1160,    -1,   630,  1163,    -1,  1165,    -1,
     3333      -1,    -1,    -1,    -1,   639,   640,   641,    -1,    -1,    -1,
     3334      -1,    -1,  1179,  1180,    -1,    -1,    -1,    -1,    -1,    -1,
     3335      -1,    -1,   657,    -1,    -1,    -1,    -1,   662,   663,    -1,
     3336      -1,   666,   667,    -1,  1201,    -1,    -1,    -1,   673,   767,
     3337      -1,   769,    -1,    -1,    -1,    -1,    -1,   775,    -1,    -1,
     3338      -1,    -1,    -1,    -1,   782,    -1,   691,   692,   693,    -1,
     3339     695,  1228,    -1,    -1,   699,    -1,    10,    11,    12,    13,
     3340      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3341      24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
     3342      -1,    -1,    -1,    37,    38,    -1,   731,   732,   826,   827,
     3343      -1,   829,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3344      -1,    -1,    -1,    -1,    -1,    -1,   844,    -1,    -1,    -1,
     3345      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
     3346      -1,   766,   767,    -1,    -1,    -1,   771,   772,    -1,    -1,
    32423347      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3243      987,    -1,    -1,   696,   654,    -1,    -1,   994,   701,   702,
    3244       -1,   998,    -1,    -1,   707,    -1,  1003,    -1,  1005,    -1,
    3245       -1,    -1,  1009,  1010,  1011,    -1,    -1,  1014,    -1,    -1,
    3246       -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,    -1,   689,
     3348      -1,    -1,    -1,    -1,    -1,    -1,   884,  1324,    -1,  1326,
     3349     888,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,   113,
     3350      -1,    -1,  1339,   117,  1341,    -1,    -1,    -1,   813,    -1,
     3351      -1,    -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,    -1,
     3352      -1,    -1,  1359,   828,   829,    -1,    -1,    -1,   833,    -1,
     3353     835,    -1,    -1,    -1,   279,   280,   281,    -1,  1375,  1376,
     3354     845,    -1,    -1,   288,   289,    -1,    -1,    -1,   293,   294,
     3355    1387,    -1,    -1,  1390,    -1,    -1,    -1,    -1,    -1,    -1,
     3356     305,    -1,    -1,    -1,    -1,    -1,   964,    -1,    -1,    -1,
     3357      -1,    -1,    -1,    -1,    -1,  1412,    -1,    -1,    -1,    -1,
     3358      -1,   979,   980,    -1,  1421,    -1,    -1,  1424,   986,  1426,
     3359    1427,  1428,    -1,    -1,   992,    -1,   341,   995,    -1,   997,
    32473360      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3248       -1,    -1,    -1,    -1,  1041,  1042,    -1,    -1,   701,   702,
    3249      710,    -1,    -1,    -1,   707,    -1,    -1,    -1,    -1,    -1,
    3250       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   728,  1066,
    3251      730,    -1,  1069,    10,    11,    12,    13,    14,    15,    16,
    3252       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3253       -1,    -1,    29,    30,    31,    -1,    -1,    63,    -1,    -1,
    3254       37,    -1,    -1,    -1,   764,    -1,    -1,    73,    -1,    75,
    3255     1107,    77,    -1,    -1,    -1,    -1,  1113,  1114,    84,    -1,
    3256       -1,    -1,    -1,    60,    -1,    -1,    -1,  1124,    -1,    -1,
    3257       67,    68,  1129,    -1,    -1,  1132,    -1,  1134,    -1,    -1,
    3258     1137,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   114,    -1,
    3259      116,   117,   118,  1150,    -1,    -1,    -1,    -1,   818,    -1,
    3260       -1,    -1,   822,    -1,    -1,   825,  1163,    -1,  1165,  1166,
    3261     1167,  1168,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3262       -1,    -1,    -1,    -1,  1181,    -1,  1183,    -1,    -1,    -1,
    3263     1187,   157,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3361      -1,    -1,    -1,   918,    -1,    -1,    -1,    -1,    -1,  1017,
     3362      -1,   926,    -1,    -1,    -1,    -1,    -1,   932,    -1,    -1,
     3363    1028,  1468,   377,  1470,    -1,   940,  1473,    -1,    -1,    -1,
     3364      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   953,   954,
     3365      -1,  1488,  1050,    -1,  1052,    -1,    -1,    -1,    -1,    -1,
     3366      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1067,
     3367    1068,    -1,    -1,    -1,   979,    -1,    -1,    -1,    -1,    -1,
     3368     985,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3369    1088,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1004,
     3370    1005,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,  1014,
     3371      -1,    -1,    -1,    -1,    -1,  1020,  1021,    -1,  1023,  1024,
     3372    1025,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
     3373    1035,  1036,    -1,    -1,    -1,    70,  1134,    -1,    -1,    74,
     3374      -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
     3375      85,    -1,    -1,    -1,    -1,  1153,    -1,    92,    -1,    -1,
    32643376      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3265       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1215,  1216,
    3266       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3267       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3268       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3269       31,   217,    -1,   219,   220,   221,    37,    -1,   918,    -1,
    3270       -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,  1265,  1266,
    3271       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1275,    60,
    3272       -1,    62,    -1,    64,    65,    -1,    67,    68,    69,   255,
    3273       -1,    -1,    -1,   259,    -1,    76,    77,    -1,    -1,    -1,
    3274      960,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   275,
    3275       -1,    89,    -1,    -1,    -1,   975,    -1,    -1,    -1,    -1,
    3276      101,    99,   103,    -1,    -1,    -1,  1323,    -1,    -1,    -1,
    3277      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1335,    -1,
    3278     1337,  1338,  1339,    -1,    -1,    -1,    -1,    -1,    -1,  1009,
    3279       -1,    -1,  1349,    -1,    -1,    -1,    -1,    -1,   324,    -1,
    3280       -1,  1358,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
    3281     1030,  1031,    -1,  1370,    -1,    -1,   154,    -1,    -1,   345,
    3282       -1,    -1,  1085,    -1,   350,   351,    -1,    59,    -1,   167,
    3283       -1,    -1,   358,    65,    -1,    -1,    -1,    69,    -1,    -1,
    3284       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3285       -1,    -1,   190,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3286       -1,    -1,    -1,    -1,  1421,  1422,   204,    -1,  1088,   101,
    3287       -1,   103,  1085,    -1,   400,   213,   108,  1434,   110,   111,
    3288      112,   113,   114,   115,  1441,   223,    -1,    -1,    -1,    -1,
    3289       -1,    -1,   418,    -1,    -1,    -1,    -1,   423,    -1,   425,
     3377    1168,  1169,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3378     115,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
     3379      -1,  1096,  1097,  1098,    -1,    -1,    -1,    -1,    -1,    -1,
     3380      -1,    -1,    -1,    -1,  1109,    -1,    -1,    -1,   553,   554,
     3381     555,   556,   557,   558,   559,   560,   561,   562,   563,   564,
     3382     565,   566,   567,   568,   569,   570,    -1,    -1,    -1,    -1,
    32903383      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3291      248,    -1,  1469,    -1,    -1,   253,   442,    -1,    -1,   445,
    3292      446,    -1,    -1,    -1,    -1,    -1,  1146,    -1,   266,    -1,
    3293       -1,    -1,    -1,    -1,   272,   461,   274,    -1,    -1,    -1,
    3294     1497,    -1,    -1,    -1,  1207,    -1,    -1,    -1,    -1,   475,
    3295       -1,    -1,    -1,   291,    -1,    -1,   482,    -1,    -1,    -1,
    3296       -1,    -1,    -1,    -1,    -1,    -1,  1523,    -1,  1188,    -1,
    3297       -1,  1528,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3384      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1153,    -1,
     3385    1248,   596,     0,    -1,    -1,     3,     4,     5,     6,     7,
     3386       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3387      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3388      -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
     3389      38,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3390      19,    20,    21,    22,    23,    24,    25,    26,  1213,    -1,
     3391      -1,  1309,    -1,  1311,    62,    -1,    -1,    65,    37,    67,
     3392      -1,    69,    70,    -1,    72,    73,    74,    -1,  1233,    -1,
     3393      -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
     3394      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   694,
     3395      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
     3396      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
     3397      -1,   716,    -1,    -1,    -1,    -1,  1281,  1282,    -1,    -1,
     3398      -1,    -1,    -1,    -1,   729,    -1,    -1,    -1,    -1,    -1,
     3399      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1397,
    32983400      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3299       -1,    -1,    -1,    -1,  1207,    -1,   334,    -1,    -1,    -1,
    3300       -1,   339,    -1,    -1,    -1,  1225,    -1,    -1,    -1,    -1,
    3301       -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3302       19,    20,    21,    22,    23,    24,    25,    26,    -1,   367,
    3303       29,    30,    31,   371,   372,    -1,   374,    -1,    37,    -1,
    3304       -1,    -1,   380,   381,    -1,   383,   384,    -1,   386,    -1,
    3305      388,    -1,     7,  1273,  1274,    10,    11,    12,    13,    14,
    3306       -1,    60,  1282,    -1,    -1,    -1,    -1,   405,    67,    68,
    3307      596,    -1,    -1,    -1,    -1,   413,    -1,    -1,    -1,    -1,
    3308       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3309       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   624,    -1,
    3310      438,    -1,    -1,   629,    59,    60,    -1,    -1,    -1,    -1,
    3311       65,   449,   111,    -1,    69,    -1,    -1,    72,    73,    74,
    3312       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3313       -1,    -1,    87,    -1,   472,    -1,    -1,    -1,    -1,    -1,
    3314      478,    -1,    -1,    -1,    -1,   483,   101,    -1,   103,    -1,
    3315       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3316      115,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3317     1390,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3318       -1,   519,    -1,    -1,   278,   279,   280,    -1,    -1,    -1,
    3319      716,    -1,    -1,   287,   288,    -1,    -1,   535,   292,   293,
    3320       -1,    -1,    -1,    -1,   730,    -1,    -1,    -1,    -1,    -1,
    3321      304,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3322       -1,    -1,    -1,  1443,   750,    -1,    -1,    -1,    -1,    -1,
    3323       -1,    -1,    -1,   571,   152,   153,    -1,    -1,    -1,    -1,
    3324       -1,    -1,   580,    -1,    -1,    -1,   340,    -1,    -1,   587,
    3325       -1,    -1,    -1,  1473,   592,    -1,    -1,    -1,    -1,    -1,
    3326       -1,    -1,    -1,    -1,    -1,   603,    -1,   185,    -1,    -1,
    3327       -1,    -1,    -1,    -1,   192,    -1,    -1,    -1,  1498,    -1,
    3328       -1,    -1,   376,   809,    -1,    -1,    -1,    -1,    -1,    -1,
    3329       -1,    -1,    -1,    -1,    -1,    -1,   822,    -1,    -1,    -1,
    3330       -1,    -1,    -1,    -1,    -1,    -1,   644,    -1,    -1,    -1,
    3331       -1,    -1,    -1,     0,    -1,   841,     3,     4,     5,     6,
     3401      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3402      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   774,
     3403      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
    33323404       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    33333405      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3334       -1,   679,    29,    30,    31,    32,   264,    -1,    35,    -1,
    3335       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3336       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3337       57,    -1,    -1,    60,    -1,    62,    -1,    64,    65,    -1,
    3338       67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    3339       77,    -1,    -1,    -1,    -1,    -1,   734,    -1,    -1,    -1,
    3340       -1,   319,   928,    -1,    -1,    -1,   744,   745,    -1,   327,
    3341      328,    -1,   330,   331,   101,    -1,   103,    -1,    -1,   757,
    3342       -1,    -1,   340,    -1,   111,    -1,   344,    -1,   954,    -1,
    3343       -1,    -1,    -1,    -1,    -1,    -1,   774,    -1,   776,    -1,
    3344       -1,    -1,   780,    -1,    -1,   363,    -1,    -1,   366,    -1,
    3345       -1,    -1,    -1,    -1,    -1,   981,   550,   551,   552,   553,
    3346      554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
    3347      564,   565,   566,   567,   392,    -1,    -1,    -1,   396,    36,
    3348       -1,    38,    -1,    -1,    -1,    -1,  1012,    -1,    -1,    -1,
    3349       -1,    -1,    -1,    -1,    -1,    -1,    -1,  1023,    -1,   593,
    3350       -1,    -1,    59,    -1,    -1,    -1,    -1,   845,    65,   427,
    3351       67,    68,    69,    -1,   852,    72,    73,    74,    75,    76,
    3352       77,    -1,    79,    80,    -1,    -1,    -1,   865,    -1,   867,
    3353       87,    -1,   450,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3354       -1,    -1,    -1,   881,   101,    -1,   103,    -1,   105,   106,
    3355      888,    -1,    -1,   110,   111,   112,   113,   114,   115,    -1,
    3356       -1,    -1,   900,   481,    -1,   903,   484,    -1,    -1,    -1,
    3357       -1,    -1,    -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,
    3358       -1,    -1,    -1,   921,    -1,    -1,    -1,    -1,    -1,    -1,
    3359       -1,    -1,    -1,    -1,    -1,    -1,    -1,   691,    -1,    -1,
    3360       -1,    -1,    -1,    -1,    -1,   523,    -1,    -1,   526,   527,
    3361       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   713,
    3362       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3363      143,    -1,   726,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3364      153,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3365       -1,    -1,   165,   571,   572,    -1,    -1,    -1,    -1,    -1,
    3366       -1,    -1,  1188,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3367     1008,    -1,   590,   591,    -1,   593,    -1,   771,    -1,    -1,
    3368       -1,    -1,    -1,    -1,   602,    -1,   604,   605,    -1,    -1,
    3369       -1,    -1,    -1,   611,    -1,    -1,    -1,    -1,    -1,    -1,
    3370       -1,    -1,    -1,   621,   622,    -1,    -1,    -1,   802,   627,
    3371       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   636,   637,
    3372      638,    -1,   235,   817,    -1,  1063,    -1,    -1,    -1,    -1,
    3373       -1,  1069,    -1,    -1,    -1,    -1,   654,    -1,    -1,    -1,
    3374       -1,   659,   660,    -1,    -1,   663,   664,   260,    -1,    -1,
    3375       -1,    -1,   670,    -1,    -1,    -1,  1282,    -1,    -1,    -1,
    3376     1098,    -1,    -1,    -1,    -1,  1103,    -1,    -1,    -1,    -1,
    3377      688,   689,   690,  1111,   692,    -1,    -1,    -1,   696,     3,
    3378        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3379       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3380       24,    25,    26,  1141,    -1,    29,    30,    31,    -1,    -1,
    3381      728,   729,    -1,    37,    -1,  1153,    -1,    -1,  1156,    -1,
    3382     1158,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3383       -1,    -1,    -1,    -1,  1172,  1173,    60,    -1,    62,    -1,
    3384       64,    -1,    -1,    67,    68,   763,   764,    -1,    -1,    -1,
    3385      768,   769,    -1,    -1,    -1,    -1,  1194,    -1,    -1,    -1,
    3386       -1,    -1,   375,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3387       -1,    -1,    -1,    -1,   968,    -1,    -1,    -1,    -1,   103,
    3388       -1,    -1,  1220,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3389       -1,   809,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3390      818,    -1,    -1,   997,    -1,    -1,   824,   825,    -1,    -1,
    3391       -1,   829,    -1,   831,    -1,  1009,    -1,    -1,    -1,    -1,
    3392       -1,    -1,    -1,   841,    -1,    -1,    -1,    10,    11,    12,
    3393       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3394       23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
    3395       -1,    -1,    -1,    -1,    37,    -1,  1050,    -1,    -1,    -1,
    3396       -1,    -1,    -1,   476,    -1,    -1,    -1,    -1,    -1,    -1,
    3397       -1,    -1,    -1,    -1,  1312,    -1,  1314,    60,    -1,    -1,
    3398       -1,    -1,    65,    -1,    67,    68,    69,  1513,    71,  1327,
    3399       -1,  1329,    -1,    76,    77,    -1,   914,    -1,    -1,    -1,
    3400       -1,   514,    -1,    -1,   922,    -1,    -1,    -1,    -1,  1347,
    3401      928,    -1,    -1,    -1,   527,    -1,    -1,    -1,   936,    -1,
    3402      103,   534,    -1,    -1,    -1,  1363,  1120,    -1,   111,    -1,
    3403       -1,   949,   950,  1371,   547,   548,  1374,    -1,    10,    11,
    3404       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3405       22,    23,    24,    25,    26,    27,   569,   975,  1396,    -1,
    3406       -1,    -1,    -1,   981,    -1,    37,   579,  1405,    -1,  1163,
    3407     1408,  1409,    -1,   586,    -1,    -1,    -1,    -1,   591,    -1,
    3408       -1,   999,  1000,  1177,  1178,    -1,    -1,    -1,    60,    -1,
    3409       -1,  1009,    -1,    -1,    -1,    -1,    -1,  1015,  1016,    71,
    3410     1018,  1019,  1020,    -1,    -1,    -1,    -1,  1445,    -1,  1447,
    3411       -1,    -1,  1030,  1031,    -1,    -1,    -1,    -1,    -1,    -1,
    3412       -1,    -1,    -1,    -1,  1462,    -1,    -1,    -1,   641,    -1,
    3413       -1,    -1,    -1,    -1,    -1,    -1,   649,     4,     5,     6,
    3414        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    3415       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3416       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3417       37,  1089,  1090,  1091,    -1,    -1,   689,    -1,    -1,    -1,
    3418       -1,    -1,    -1,    -1,  1102,    -1,    -1,    -1,    -1,    -1,
    3419       -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
    3420       67,    68,    -1,     3,     4,     5,     6,     7,     8,     9,
    3421       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3422       20,    21,    22,    23,    24,    25,    26,    -1,  1146,    29,
    3423       30,    31,    32,    -1,    -1,    35,   103,    37,    38,    -1,
    3424       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3425       -1,   764,    -1,   766,    -1,    -1,    -1,    57,    -1,   772,
    3426       60,    -1,    62,    -1,    64,    65,   779,    67,    68,    69,
    3427       -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,    -1,
    3428       -1,    -1,    -1,  1377,    -1,    -1,    -1,    -1,  1206,    -1,
    3429       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3430     1394,   101,    -1,   103,    -1,    -1,    -1,  1225,    -1,   822,
    3431      823,   111,   825,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3432       -1,    -1,    -1,    -1,    -1,    -1,    -1,   840,    -1,    -1,
    3433       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3434       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    -1,
    3435       -1,    -1,    -1,    -1,    -1,  1273,  1274,    37,    -1,    -1,
    3436       -1,    -1,    -1,  1457,  1458,    -1,    -1,   880,    -1,    -1,
    3437       -1,   884,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3438       60,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
    3439        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3440       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3441       29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
    3442       39,    -1,    41,    -1,    -1,    44,    45,    46,    47,    48,
    3443       49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
    3444       59,    60,    -1,    62,    -1,    64,    65,   960,    67,    68,
    3445       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3446       79,    80,   975,   976,    -1,    -1,    -1,    -1,    87,   982,
    3447       -1,    -1,  1390,    -1,    -1,   988,    -1,    -1,   991,    -1,
    3448      993,    -1,   101,    -1,   103,    -1,    36,   106,    38,    -1,
    3449       -1,   110,   111,   112,   113,   114,   115,    -1,    -1,  1012,
    3450       -1,    -1,    -1,    -1,    -1,   124,    -1,    -1,    -1,    59,
    3451     1023,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
    3452       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3453       80,    -1,  1045,    -1,  1047,    -1,    -1,    87,    -1,    -1,
    3454       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1062,
    3455       -1,   101,  1470,   103,    -1,    -1,   106,    -1,    -1,    -1,
    3456      110,   111,   112,   113,   114,   115,    -1,    36,  1081,    38,
    3457       39,    -1,    41,  1491,  1492,    44,    45,    46,    47,    48,
    3458       49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
    3459       59,    -1,    -1,    -1,    -1,  1513,    65,    -1,    -1,    -1,
    3460       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3461       79,    80,    -1,    -1,  1127,    -1,    -1,    -1,    87,    -1,
    3462       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3463       -1,    -1,   101,  1146,   103,    -1,    -1,   106,    -1,    -1,
    3464       -1,   110,   111,   112,   113,   114,   115,    -1,  1161,  1162,
    3465       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
    3466       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3467       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3468       31,    32,    -1,    -1,    35,    36,    37,    38,    -1,    -1,
    3469       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3470       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3471       -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
    3472       -1,    72,    73,    74,    75,    76,    77,  1240,    79,    80,
    3473       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3474       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3475      101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3476      111,   112,   113,   114,   115,    -1,    -1,    -1,    -1,    -1,
    3477       -1,    -1,    -1,   124,     3,     4,     5,     6,     7,     8,
    3478        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3479       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3480       29,    30,    31,    32,    -1,    -1,    35,    36,    37,    38,
     3406      -1,   806,    29,    30,    31,    32,    -1,    -1,    35,    36,
     3407      37,    38,    -1,    -1,    -1,    -1,   821,    -1,    -1,    -1,
     3408      -1,  1479,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3409      -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,    65,    -1,
     3410      67,  1406,    69,    70,    -1,    72,    73,    74,    -1,    -1,
     3411      77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
     3412      -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,
     3413      -1,    -1,    -1,  1531,    -1,    -1,    -1,    -1,    -1,    -1,
     3414     107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,   116,
     3415     117,   118,   119,   120,   121,    -1,    -1,    -1,    -1,    -1,
     3416      -1,    -1,    -1,   130,    -1,    -1,    -1,    -1,    -1,    -1,
    34813417      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    34823418      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3483       59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    3484       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3485       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3486       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1381,    -1,
    3487       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3488       -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
     3419      -1,  1496,     3,     4,     5,     6,     7,     8,     9,    10,
     3420      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3421      21,    22,    23,    24,    25,    26,  1521,  1522,    29,    30,
     3422      31,    -1,    -1,    -1,    -1,    -1,    37,   972,    -1,    -1,
     3423      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3424      -1,  1546,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3425      -1,    -1,    -1,    -1,    65,    -1,    67,  1002,    69,    -1,
     3426      -1,    72,    73,    -1,    -1,    -1,    -1,    -1,    -1,  1014,
     3427       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3428      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3429      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
     3430      -1,   112,    35,    36,    37,    38,    39,    -1,    41,    -1,
     3431    1055,    44,    45,    46,    47,    48,    49,    50,    51,    -1,
     3432      -1,    -1,    55,    -1,    -1,    -1,    59,    60,    -1,    62,
     3433      -1,    64,    65,    -1,    67,    -1,    69,    70,    -1,    72,
     3434      73,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
     3435      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    92,
     3436      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3437      -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,   112,
     3438      -1,    -1,  1127,   116,   117,   118,   119,   120,   121,    -1,
     3439      -1,    -1,    -1,   126,    -1,    -1,    -1,   130,    -1,    -1,
     3440       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3441      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3442      23,    24,    25,    26,    -1,  1170,    29,    30,    31,    32,
     3443      -1,    -1,    35,    36,    37,    38,    -1,    -1,    -1,  1184,
     3444    1185,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3445      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3446      -1,    64,    65,    -1,    67,    -1,    69,    70,    37,    72,
     3447      73,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
     3448      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    92,
     3449      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
     3450      -1,    -1,    -1,    -1,   107,    -1,   109,    76,    -1,    -1,
     3451      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,     4,
     3452       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3453      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3454      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3455      -1,    36,    37,    38,    10,    11,    12,    13,    14,    15,
     3456      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3457      26,    27,    -1,    29,    30,    31,    -1,    -1,    -1,    64,
     3458      65,    37,    67,    -1,    69,    70,    -1,    72,    73,    74,
     3459      -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
     3460      85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    65,
     3461      -1,    -1,    -1,    -1,    70,    -1,    72,    73,    74,    -1,
     3462      76,    -1,   107,    -1,   109,    81,    82,    -1,    -1,   114,
     3463      -1,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
     3464      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1393,    -1,
     3465      -1,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
     3466      -1,   117,    -1,    -1,    -1,  1410,    -1,     4,     5,     6,
    34893467       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    34903468      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    34913469      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3492       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3493       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3494     1453,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
    3495       67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3496       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3497       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3498       -1,    -1,    -1,    -1,   101,  1498,   103,    -1,    -1,    -1,
    3499       -1,   108,    -1,   110,   111,   112,   113,   114,   115,     4,
     3470      37,    38,    10,    11,    12,    13,    14,    15,    16,    17,
     3471      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3472      -1,    29,    30,    31,    -1,    -1,    -1,    64,    65,    37,
     3473      67,    -1,    69,    70,    -1,    72,    73,    74,  1483,  1484,
     3474      77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
     3475      -1,    -1,    -1,    -1,    -1,    92,    -1,    65,    -1,    -1,
     3476      -1,    -1,    -1,    -1,    72,    73,    -1,    -1,    -1,    -1,
     3477     107,    -1,   109,    -1,    -1,    -1,    -1,   114,    -1,   116,
     3478     117,   118,   119,   120,   121,     4,     5,     6,     7,     8,
     3479       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3480      19,    20,    21,    22,    23,    24,    25,    26,    -1,   117,
     3481      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
     3482      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3483      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3484      30,    31,    -1,    -1,    -1,    64,    65,    37,    67,    -1,
     3485      69,    70,    -1,    72,    73,    74,    -1,    -1,    77,    78,
     3486      79,    80,    81,    82,    -1,    84,    85,    -1,    -1,    -1,
     3487      -1,    -1,    -1,    92,    -1,    65,    -1,    -1,    -1,    -1,
     3488      -1,    -1,    72,    73,    -1,    -1,    -1,    -1,   107,    -1,
     3489     109,    -1,    -1,    -1,    -1,   114,    -1,   116,   117,   118,
     3490     119,   120,   121,     4,     5,     6,     7,     8,     9,    10,
     3491      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3492      21,    22,    23,    24,    25,    26,    -1,   117,    29,    30,
     3493      31,    -1,    -1,    -1,    -1,    36,    37,    38,    10,    11,
     3494      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3495      22,    23,    24,    25,    26,    27,    -1,    -1,    -1,    -1,
     3496      -1,    -1,    -1,    64,    65,    37,    67,    -1,    69,    70,
     3497      -1,    72,    73,    74,    -1,    -1,    77,    78,    79,    80,
     3498      81,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
     3499      -1,    92,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
     3500      -1,    -1,    -1,    -1,    76,    -1,   107,    -1,   109,    -1,
     3501      -1,    -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,
     3502     121,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3503      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3504      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3505      -1,    -1,    -1,    36,    37,    38,    10,    11,    12,    13,
     3506      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
     3507      24,    25,    26,    -1,    -1,    29,    30,    31,    32,    33,
     3508      34,    64,    65,    37,    67,    -1,    69,    70,    -1,    72,
     3509      73,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
     3510      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    92,
     3511      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,    73,
     3512      -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,    -1,
     3513      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,     4,
    35003514       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    35013515      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    35023516      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3503       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3504       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3505       -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
    3506       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3507       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3508       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3509       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3510       -1,    -1,    -1,   108,    -1,   110,   111,   112,   113,   114,
    3511      115,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3512       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3513       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3514       -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    3515       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3516       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
    3517       -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,    72,
    3518       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3519       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3520       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3521      103,    -1,    -1,    -1,    -1,   108,    -1,   110,   111,   112,
    3522      113,   114,   115,     4,     5,     6,     7,     8,     9,    10,
    3523       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3524       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3525       31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3526       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3527       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3528       -1,    62,    -1,    64,    65,    -1,    67,    68,    69,    -1,
    3529       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3530       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3531       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3532      101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3533      111,   112,   113,   114,   115,     4,     5,     6,     7,     8,
    3534        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3535       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3536       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3537       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3538       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3539       59,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    3540       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3541       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3542       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3543       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3544       -1,   110,   111,   112,   113,   114,   115,     4,     5,     6,
     3517      -1,    36,    37,    38,    10,    11,    12,    13,    14,    15,
     3518      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3519      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    64,
     3520      65,    37,    67,    -1,    69,    70,    -1,    72,    73,    74,
     3521      -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
     3522      85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    65,
     3523      -1,    -1,    -1,    -1,    70,    -1,    72,    73,    -1,    -1,
     3524      -1,    -1,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3525      -1,   116,   117,   118,   119,   120,   121,     4,     5,     6,
    35453526       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    35463527      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    35473528      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3548       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3529      37,    38,    10,    11,    12,    13,    14,    15,    16,    17,
     3530      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3531      -1,    29,    30,    31,    -1,    -1,    -1,    64,    65,    37,
     3532      67,    -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,
     3533      77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
     3534      -1,    -1,    -1,    -1,    -1,    92,    -1,    65,    -1,    -1,
     3535      -1,    -1,    -1,    -1,    72,    73,    -1,    -1,    -1,    -1,
     3536     107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,   116,
     3537     117,   118,   119,   120,   121,     3,     4,     5,     6,     7,
     3538       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3539      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3540      -1,    29,    30,    31,    32,    -1,    -1,    35,    -1,    37,
     3541      38,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3542      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
     3543      29,    30,    31,    -1,    62,    -1,    -1,    65,    37,    67,
     3544      -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,    -1,
     3545      -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
     3546      -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
     3547      -1,    -1,    -1,    72,    73,    -1,    -1,    -1,    -1,   107,
     3548      -1,   109,    -1,    -1,    -1,   113,    -1,    -1,    -1,   117,
     3549       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3550      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3551      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    32,
     3552      -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,    -1,
    35493553      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3550       -1,    -1,    59,    60,    -1,    62,    -1,    64,    65,    -1,
    3551       67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3552       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3553       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3554       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3555       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,     4,
    3556        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
    3557       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3558       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3559       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
     3554      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    62,
     3555      -1,    -1,    65,    -1,    67,    -1,    69,    70,    -1,    72,
     3556      73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    81,    82,
    35603557      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3561       -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
    3562       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3563       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3564       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3565       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3566       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3567      115,     3,     4,     5,     6,     7,     8,     9,    10,    11,
    3568       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3569       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3570       32,    -1,    -1,    35,    -1,    37,    38,    -1,    -1,    -1,
    35713558      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3572       -1,    -1,    -1,    -1,    -1,    57,    -1,    -1,    60,    -1,
    3573       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3574       -1,    -1,    -1,    -1,    76,    77,    -1,    -1,    -1,    -1,
     3559      -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,    -1,
     3560      -1,    -1,    -1,    -1,   117,     3,     4,     5,     6,     7,
     3561       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3562      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3563      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    35753564      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3576       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
    3577       -1,   103,    -1,    -1,    -1,   107,    -1,    -1,    -1,   111,
     3565      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3566      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    67,
     3567      -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,    -1,
     3568      -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,    -1,
     3569      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3570      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,
     3571      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
    35783572       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    35793573      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     
    35813575      -1,    -1,    35,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    35823576      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3583       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3584       -1,    64,    -1,    -1,    67,    68,    -1,    -1,    71,     3,
    3585        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3586       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3587       24,    25,    26,    -1,    -1,    29,    30,    31,    32,    -1,
    3588      103,    35,    -1,    37,    -1,    -1,    -1,    -1,   111,    -1,
    35893577      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3590       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    3591       64,    -1,    -1,    67,    68,     4,     5,     6,     7,     8,
     3578      -1,    -1,    65,    -1,    67,    -1,    69,    -1,    -1,    72,
     3579      73,    -1,    -1,    76,    -1,     3,     4,     5,     6,     7,
     3580       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
     3581      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3582      -1,    29,    30,    31,    32,    -1,   109,    35,    -1,    37,
     3583      -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,
     3584      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3585      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    67,
     3586      -1,    69,    -1,    -1,    72,    73,     3,     4,     5,     6,
     3587       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3588      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3589      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3590      37,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
     3591      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3592      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
     3593      67,    -1,    69,    -1,    -1,    72,    73,     4,     5,     6,
     3594       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3595      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3596      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3597      37,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3598     117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3599      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
     3600      67,    -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,
     3601      -1,    -1,    -1,    -1,    81,    82,    -1,    -1,    -1,    -1,
     3602      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3603      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3604     107,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3605     117,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3606      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3607      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3608      -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
     3609      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3610      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3611      -1,    -1,    65,    -1,    67,    -1,    69,    -1,    -1,    72,
     3612      73,     4,     5,     6,     7,     8,     9,    10,    11,    12,
     3613      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3614      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3615      -1,    -1,    -1,    -1,    37,   108,   109,    -1,    -1,    -1,
     3616      -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,
     3617      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3618      -1,    -1,    65,    -1,    67,    -1,    69,    -1,    -1,    72,
     3619      73,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3620      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3621      -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3622      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
     3623      -1,    -1,    -1,    -1,   117,     4,     5,     6,     7,     8,
    35923624       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    35933625      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3594       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,   103,
    3595       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
     3626      29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
     3627      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
     3628      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3629      26,    -1,    -1,    29,    30,    31,    65,    -1,    67,    -1,
     3630      69,    37,    -1,    72,    73,    -1,    -1,    -1,    -1,    -1,
    35963631      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3597       -1,    60,    -1,    62,    -1,    64,    65,    -1,    67,    68,
    3598       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    -1,
     3632      -1,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    65,
     3633      -1,    -1,    -1,    -1,    70,    -1,    72,    73,    74,    -1,
     3634     109,    -1,    -1,    -1,    -1,    81,    82,    -1,   117,     4,
     3635       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3636      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3637      25,    26,    -1,   109,    29,    30,    31,    -1,    -1,    -1,
     3638      -1,   117,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    35993639      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36003640      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3601       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3602       -1,    -1,   111,     4,     5,     6,     7,     8,     9,    10,
    3603       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3604       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3605       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
     3641      65,    -1,    67,    -1,    69,    -1,    -1,    72,    73,     4,
     3642       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3643      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3644      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3645      -1,    -1,    37,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3646      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36063647      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3607       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3608       -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    -1,
    3609        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3610       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3611       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3612       -1,   102,   103,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    3613      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3614       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    3615       64,    -1,    -1,    67,    68,    -1,    -1,    -1,    -1,    -1,
     3648      65,    -1,    67,    -1,    69,    -1,    -1,    72,    73,     4,
     3649       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3650      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3651      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3652      -1,    -1,    37,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3653      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36163654      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3617       -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
    3618       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    3619       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,     4,     5,
    3620        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    3621       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3622       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3623       -1,    37,    10,    11,    12,    13,    14,    15,    16,    17,
    3624       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3625       -1,    29,    30,    31,    60,    -1,    62,    -1,    64,    37,
    3626       -1,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3655      65,    -1,    67,    -1,    69,    -1,    -1,    72,    73,     4,
     3656       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
     3657      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3658      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
     3659      -1,    -1,    37,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3660      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    36273661      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3628       -1,    -1,    60,    89,    -1,    -1,    -1,    65,    -1,    67,
    3629       68,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3630       -1,    -1,    -1,    -1,    -1,   111,     4,     5,     6,     7,
    3631        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3632       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3633       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3634       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3635       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3636       -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
    3637       68,     4,     5,     6,     7,     8,     9,    10,    11,    12,
    3638       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3639       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3640       -1,    -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,
    3641       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3642       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,
    3643       -1,    64,    -1,    -1,    67,    68,     4,     5,     6,     7,
    3644        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3645       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3646       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3647      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3648       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3649       -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
    3650       68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3651       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3652       29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3653       -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
    3654       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3655       59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3656       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3657       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3658       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3659       -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
    3660       -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
    3661       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3662       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3663       -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
    3664       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3665       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
    3666       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
    3667       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3668       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3669       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3670      103,   104,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3671      113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
    3672       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3673       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
    3674       37,    38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3675       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3676       -1,    -1,    59,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3677       67,    68,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3678       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3679       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3680       -1,    -1,    -1,    -1,   101,   102,   103,    -1,    -1,    -1,
    3681       -1,    -1,    -1,   110,   111,   112,   113,   114,   115,    10,
     3662      65,    -1,    67,    -1,    69,    -1,    -1,    72,    73,    10,
    36823663      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    36833664      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    36843665      31,    -1,    -1,    -1,    -1,    36,    37,    38,    -1,    -1,
    3685       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3686       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
    3687       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
    3688       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3689       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3690       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3691      101,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3692      111,   112,   113,   114,   115,    10,    11,    12,    13,    14,
    3693       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3694       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3695       -1,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    -1,
    3696       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3697       -1,    -1,    -1,    -1,    59,    60,    -1,    -1,    -1,    -1,
    3698       65,    -1,    67,    68,    69,    -1,    -1,    72,    73,    74,
    3699       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3700       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3701       -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,
    3702       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3703      115,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3666      -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3667      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3668      -1,    -1,    -1,    64,    65,    -1,    -1,    -1,    -1,    70,
     3669      -1,    72,    73,    74,    -1,    -1,    77,    78,    79,    80,
     3670      81,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
     3671      -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3672      -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,   109,    -1,
     3673      -1,   112,    -1,    -1,    -1,   116,   117,   118,   119,   120,
     3674     121,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    37043675      19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    37053676      29,    30,    31,    -1,    -1,    -1,    -1,    36,    37,    38,
    3706       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3707       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3708       59,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3709       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3710       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3711       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3712       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3713       -1,   110,   111,   112,   113,   114,   115,    10,    11,    12,
     3677      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3678      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
     3679      29,    30,    31,    -1,    -1,    64,    65,    -1,    37,    -1,
     3680      -1,    70,    -1,    72,    73,    74,    -1,    -1,    77,    78,
     3681      79,    80,    81,    82,    -1,    84,    85,    -1,    -1,    -1,
     3682      -1,    -1,    -1,    92,    -1,    -1,    65,    -1,    -1,    -1,
     3683      -1,    70,    -1,    72,    73,    74,    -1,    76,   107,    -1,
     3684     109,   110,    81,    82,    -1,    -1,    -1,   116,   117,   118,
     3685     119,   120,   121,    10,    11,    12,    13,    14,    15,    16,
     3686      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3687     109,    -1,    29,    30,    31,    -1,    -1,    -1,   117,    36,
     3688      37,    38,    -1,    10,    11,    12,    13,    14,    15,    16,
     3689      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3690      27,    -1,    29,    30,    31,    -1,    -1,    64,    65,    -1,
     3691      37,    -1,    -1,    70,    -1,    72,    73,    74,    -1,    -1,
     3692      77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
     3693      -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,    65,    -1,
     3694      -1,    -1,    -1,    -1,    -1,    72,    73,    -1,    -1,    76,
     3695     107,   108,   109,    -1,    -1,    -1,    -1,    -1,    -1,   116,
     3696     117,   118,   119,   120,   121,    10,    11,    12,    13,    14,
     3697      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3698      25,    26,   109,    -1,    29,    30,    31,    -1,    -1,    -1,
     3699     117,    36,    37,    38,    -1,    10,    11,    12,    13,    14,
     3700      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3701      25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    64,
     3702      65,    -1,    37,    -1,    -1,    70,    -1,    72,    73,    74,
     3703      -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
     3704      85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,
     3705      65,    -1,    -1,    -1,    -1,    70,    -1,    72,    73,    -1,
     3706      -1,    -1,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3707      -1,   116,   117,   118,   119,   120,   121,    10,    11,    12,
     3708      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3709      23,    24,    25,    26,   109,    -1,    29,    30,    31,    -1,
     3710      -1,    -1,   117,    36,    37,    38,    -1,    10,    11,    12,
    37143711      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    37153712      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3716       -1,    -1,    -1,    36,    37,    38,    -1,    -1,    -1,    -1,
     3713      -1,    64,    65,    -1,    37,    38,    -1,    70,    -1,    72,
     3714      73,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
     3715      -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,    92,
     3716      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
     3717      73,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,    -1,
     3718      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,    10,
     3719      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3720      21,    22,    23,    24,    25,    26,   109,    -1,    29,    30,
     3721      31,    -1,    -1,    -1,   117,    36,    37,    38,    -1,    10,
     3722      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3723      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3724      31,    -1,    -1,    64,    65,    -1,    37,    -1,    -1,    70,
     3725      -1,    72,    73,    74,    -1,    -1,    77,    78,    79,    80,
     3726      81,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,
     3727      -1,    92,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
     3728      -1,    72,    73,    -1,    -1,    -1,   107,    -1,   109,    -1,
     3729      -1,    -1,    -1,    -1,    -1,   116,   117,   118,   119,   120,
     3730     121,    10,    11,    12,    13,    14,    15,    16,    17,    18,
     3731      19,    20,    21,    22,    23,    24,    25,    26,   109,    -1,
     3732      29,    30,    31,    -1,    -1,    -1,   117,    36,    37,    38,
     3733      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3734      20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
     3735      30,    31,    -1,    -1,    -1,    64,    65,    37,    -1,    -1,
     3736      -1,    70,    -1,    72,    73,    74,    -1,    -1,    77,    78,
     3737      79,    80,    81,    82,    -1,    84,    85,    -1,    -1,    -1,
     3738      -1,    -1,    -1,    92,    -1,    65,    -1,    -1,    -1,    -1,
     3739      70,    -1,    72,    73,    74,    -1,    -1,    -1,   107,    -1,
     3740     109,    81,    82,    -1,    -1,    -1,    -1,   116,   117,   118,
     3741     119,   120,   121,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3742      -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,   109,
     3743      -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    10,    11,
     3744      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3745      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3746      -1,    -1,    -1,    -1,    -1,    37,    -1,    10,    11,    12,
     3747      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3748      23,    24,    25,    26,    27,    -1,    29,    30,    31,    -1,
     3749      -1,    -1,    -1,    65,    37,    -1,    -1,    -1,    70,    -1,
     3750      72,    73,    74,    -1,    -1,    -1,    -1,    -1,    -1,    81,
     3751      82,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3752      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    72,
     3753      73,    -1,    -1,    76,    -1,   107,    -1,   109,    -1,    -1,
     3754      -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,
    37173755      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3718       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    -1,
    3719       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    72,
    3720       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3721       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3722       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3723      103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3724      113,   114,   115,    10,    11,    12,    13,    14,    15,    16,
     3756      -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,    -1,
     3757      -1,    -1,    -1,    -1,   117,    10,    11,    12,    13,    14,
     3758      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3759      25,    26,    27,    -1,    29,    30,    31,    -1,    -1,    -1,
     3760      -1,    -1,    37,    -1,    10,    11,    12,    13,    14,    15,
     3761      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3762      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3763      65,    37,    38,    -1,    -1,    -1,    -1,    72,    73,    -1,
     3764      -1,    76,    10,    11,    12,    13,    14,    15,    16,    17,
     3765      18,    19,    20,    21,    22,    23,    24,    25,    26,    65,
     3766      -1,    29,    30,    31,    -1,    -1,    72,    73,    -1,    37,
     3767      38,    -1,   107,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3768      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3769      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
     3770      -1,    -1,    -1,   109,    72,    73,    -1,   113,    -1,    -1,
     3771      -1,   117,    10,    11,    12,    13,    14,    15,    16,    17,
     3772      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
     3773      -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
     3774      -1,   109,    -1,    -1,    -1,   113,    -1,    -1,    -1,   117,
     3775      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3776      20,    21,    22,    23,    24,    25,    26,    65,    -1,    29,
     3777      30,    31,    -1,    -1,    72,    73,    -1,    37,    -1,    10,
     3778      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3779      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3780      31,    -1,    -1,    -1,    -1,    65,    37,    -1,    -1,   107,
     3781      -1,   109,    72,    73,    -1,    -1,    -1,    -1,    -1,   117,
     3782      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3783      -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
     3784      -1,    72,    73,    -1,    -1,    -1,    -1,   107,    -1,   109,
     3785      -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,
     3786      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
     3787      20,    21,    22,    23,    24,    25,    26,    -1,   109,    29,
     3788      30,    31,    -1,    -1,    -1,    -1,   117,    37,    -1,    10,
     3789      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
     3790      21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
     3791      31,    -1,    -1,    -1,    -1,    65,    37,    -1,    -1,    -1,
     3792      -1,    -1,    72,    73,    -1,    -1,    -1,    10,    11,    12,
     3793      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3794      23,    24,    25,    26,    65,    -1,    29,    30,    31,    -1,
     3795      -1,    72,    73,    -1,    37,    -1,    -1,    -1,    -1,   109,
     3796      -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,    -1,
     3797      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3798      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,   109,    72,
     3799      73,    -1,    -1,    -1,    -1,    -1,   117,    10,    11,    12,
     3800      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
     3801      23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
     3802      -1,    -1,    -1,    -1,    37,    -1,   109,    -1,    -1,    -1,
     3803      -1,    -1,    -1,    -1,   117,    10,    11,    12,    13,    14,
     3804      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3805      25,    26,    65,    -1,    29,    30,    31,    -1,    -1,    72,
     3806      73,    -1,    37,    -1,    10,    11,    12,    13,    14,    15,
     3807      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3808      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3809      65,    37,    -1,    -1,    -1,    -1,   109,    72,    73,    -1,
     3810      -1,    -1,    -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,
     3811      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
     3812      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    -1,    -1,
     3813      -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3814      -1,    -1,   117,    -1,    -1,    10,    11,    12,    13,    14,
     3815      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
     3816      25,    26,    -1,   109,    29,    30,    31,    -1,    -1,    -1,
     3817      -1,   117,    37,    -1,    10,    11,    12,    13,    14,    15,
     3818      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3819      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3820      65,    37,    -1,    -1,    -1,    -1,    -1,    72,    73,    -1,
     3821      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3822      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
     3823      -1,    -1,    -1,    -1,    -1,    -1,    72,    73,    -1,    -1,
     3824      -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
     3825      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3826      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3827      -1,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
     3828      -1,   117,     4,     5,     6,     7,     8,     9,    10,    11,
     3829      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
     3830      22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
     3831      -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    36,    -1,
     3832      38,    39,    -1,    41,    -1,    -1,    44,    45,    46,    47,
     3833      48,    49,    50,    51,    -1,    -1,    54,    55,    -1,    -1,
     3834      -1,    59,    60,    65,    62,    67,    64,    69,    -1,    -1,
     3835      72,    73,    70,    -1,    -1,    -1,    74,    -1,    -1,    77,
     3836      78,    79,    80,    81,    82,    -1,    84,    85,    -1,    -1,
     3837      -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,
     3838      -1,    -1,    -1,    -1,    -1,    -1,   108,    -1,    -1,   107,
     3839      -1,   109,    -1,    -1,   112,    -1,    -1,    -1,   116,   117,
     3840     118,   119,   120,   121,    -1,    -1,    -1,    -1,   126,    -1,
     3841      -1,    36,   130,    38,    39,    -1,    41,    -1,    -1,    44,
     3842      45,    46,    47,    48,    49,    50,    51,    -1,    -1,    -1,
     3843      55,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
     3844      -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,
     3845      -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
     3846      85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,
     3847      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3848      -1,    -1,   107,    -1,   109,    -1,    -1,   112,    -1,    -1,
     3849      -1,   116,   117,   118,   119,   120,   121,    -1,    -1,    -1,
     3850      -1,   126,    -1,    -1,    36,   130,    38,    39,    -1,    41,
     3851      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
     3852      -1,    -1,    54,    55,    -1,    -1,    -1,    59,    60,    -1,
     3853      62,    -1,    64,    -1,    -1,    -1,    -1,    -1,    70,    -1,
     3854      -1,    -1,    74,    -1,    -1,    77,    78,    79,    80,    81,
     3855      82,    -1,    84,    85,    -1,    -1,    -1,    -1,    -1,    -1,
     3856      92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3857      -1,    -1,    -1,    -1,    -1,   107,    -1,   109,    -1,    -1,
     3858     112,    -1,    -1,    -1,   116,   117,   118,   119,   120,   121,
     3859      36,    -1,    38,    39,   126,    41,    42,    43,    44,    45,
     3860      46,    47,    48,    49,    50,    51,    -1,    -1,    -1,    55,
     3861      -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,    -1,
     3862      -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,    -1,
     3863      -1,    77,    78,    79,    80,    81,    82,    -1,    84,    85,
     3864      -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,    -1,
     3865      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3866      -1,   107,    -1,   109,    -1,    -1,   112,    -1,    -1,    -1,
     3867     116,   117,   118,   119,   120,   121,    36,    -1,    38,    39,
     3868     126,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
     3869      50,    51,    -1,    -1,    -1,    55,    -1,    -1,    -1,    59,
     3870      60,    -1,    62,    -1,    64,    -1,    -1,    -1,    -1,    -1,
     3871      70,    -1,    -1,    -1,    74,    -1,    -1,    77,    78,    79,
     3872      80,    81,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,
     3873      -1,    -1,    92,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3874      -1,    -1,    -1,    -1,    -1,    -1,    -1,   107,    -1,   109,
     3875      -1,    -1,   112,    -1,    -1,    -1,   116,   117,   118,   119,
     3876     120,   121,    -1,    -1,    -1,    -1,   126,     4,     5,     6,
     3877       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    37253878      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3726       27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3879      -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
     3880      37,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
     3881      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3882      -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    65,    -1,
     3883      67,    64,    69,    -1,    -1,    72,    73,    70,    -1,    -1,
     3884      -1,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
     3885      64,    84,    85,    -1,    -1,    -1,    70,    94,    -1,    92,
     3886      74,    -1,    -1,    77,    78,    79,    80,    81,    82,    -1,
     3887      84,    85,    -1,    -1,   107,    -1,   109,    -1,    92,    -1,
     3888      36,   114,    38,   116,   117,   118,   119,   120,   121,    -1,
     3889      -1,    -1,    -1,   107,    -1,   109,    -1,    -1,   112,    36,
     3890      -1,    38,   116,   117,   118,   119,   120,   121,    64,    -1,
     3891      -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,    -1,
     3892      -1,    77,    78,    79,    80,    81,    82,    64,    84,    85,
     3893      -1,    -1,    -1,    70,    -1,    -1,    92,    74,    -1,    -1,
     3894      77,    78,    79,    80,    81,    82,    -1,    84,    85,    -1,
     3895      -1,   107,    -1,   109,    -1,    92,    -1,    36,    -1,    38,
     3896     116,   117,   118,   119,   120,   121,    -1,    -1,    -1,    -1,
     3897     107,    -1,   109,    -1,    -1,    -1,    36,    -1,    38,   116,
     3898     117,   118,   119,   120,   121,    64,    -1,    -1,    -1,    -1,
     3899      -1,    70,    -1,    -1,    -1,    74,    -1,    -1,    77,    78,
     3900      79,    80,    81,    82,    64,    84,    85,    -1,    -1,    -1,
     3901      70,    -1,    -1,    92,    74,    -1,    -1,    77,    78,    79,
     3902      80,    81,    82,    -1,    84,    85,    -1,    -1,   107,    -1,
     3903     109,    -1,    92,    -1,    36,    -1,    38,   116,   117,   118,
     3904     119,   120,   121,    -1,    -1,    -1,    -1,   107,    -1,   109,
     3905      -1,    -1,    -1,    36,    -1,    38,   116,   117,   118,   119,
     3906     120,   121,    64,    -1,    -1,    -1,    -1,    -1,    70,    -1,
     3907      -1,    -1,    74,    -1,    -1,    77,    78,    79,    80,    81,
     3908      82,    64,    84,    85,    -1,    -1,    -1,    70,    -1,    -1,
     3909      92,    74,    -1,    -1,    77,    78,    79,    80,    81,    82,
     3910      -1,    84,    85,    -1,    -1,   107,    -1,    -1,    -1,    92,
     3911      -1,    36,    -1,    38,   116,   117,   118,   119,   120,   121,
     3912      -1,    -1,    -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,
     3913      -1,    -1,    -1,   116,   117,   118,   119,   120,   121,    64,
     3914      -1,    -1,    -1,    -1,    -1,    70,    -1,    -1,    -1,    74,
     3915      -1,    -1,    77,    78,    79,    80,    81,    82,    -1,    84,
     3916      85,    -1,    -1,    -1,    -1,    -1,    -1,    92,    -1,    -1,
     3917      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3918      -1,    -1,   107,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3919      -1,   116,   117,   118,   119,   120,   121,     4,     5,     6,
     3920       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
     3921      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     3922      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37273923      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    37283924      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3729       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3730       67,    68,    69,    -1,    71,    -1,    -1,    -1,    -1,    76,
    3731       77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3732       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3733       29,    30,    31,    -1,   101,    -1,   103,    -1,    37,    -1,
    3734       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3736       -1,    60,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
    3737       69,    -1,    -1,    -1,    -1,    -1,    -1,    76,    77,    10,
    3738       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3739       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3740       31,    -1,   101,    -1,   103,    -1,    37,    -1,    -1,    -1,
    3741       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3742       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3743       -1,    -1,    -1,    -1,    65,    -1,    67,    68,    69,    -1,
    3744       -1,    -1,    -1,    -1,    -1,    76,    77,    10,    11,    12,
    3745       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3746       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3747      101,    -1,   103,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3748      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3749       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    3750       -1,    -1,    65,    -1,    67,    68,    69,    -1,    -1,    -1,
    3751       -1,    -1,    -1,    76,    77,    10,    11,    12,    13,    14,
    3752       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3753       25,    26,    -1,    -1,    29,    30,    31,    -1,   101,    -1,
    3754      103,    -1,    37,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3755       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3756       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3757       65,    -1,    67,    68,    69,    -1,    -1,    -1,    -1,    -1,
    3758       -1,    76,    77,    10,    11,    12,    13,    14,    15,    16,
    3759       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3760       -1,    -1,    29,    30,    31,    -1,   101,    -1,   103,    -1,
    3761       37,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3762       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3763       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,    -1,
    3764       67,    68,    69,    -1,    -1,    -1,    -1,    -1,    -1,    76,
    3765       77,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3766       19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
    3767       29,    30,    31,    -1,    -1,    -1,   103,    -1,    37,    -1,
    3768       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3769       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3770       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    3771       -1,    -1,    71,    10,    11,    12,    13,    14,    15,    16,
    3772       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3773       27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3774       37,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3775       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3776       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3777       67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
    3778       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3779       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3780       -1,    -1,    37,    38,   101,    -1,   103,    -1,    -1,    -1,
    3781       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3782       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3783       -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
    3784       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3785       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3786       -1,    37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    3787       -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3788       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    3789       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    3790       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3791       27,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3792       37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3793       -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3794       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3795       67,    68,    -1,    -1,    71,    10,    11,    12,    13,    14,
    3796       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3797       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3798       -1,    -1,    37,    38,    -1,    -1,   103,    -1,    -1,    -1,
    3799       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3800       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3801       -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
    3802       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3803       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3804       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    3805       -1,    -1,   107,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3806       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    65,
    3807       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    3808       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3809       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3810       37,    38,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3811       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3812       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3813       67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
    3814       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3815       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3816       -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
    3817       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3818       -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3819       68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3820       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3821       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3822       -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,
    3823       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3824       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    3825       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3826       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3827       30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
    3828       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3829       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3830       60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,
    3831       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    3832       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    3833       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    3834       -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,
    3835       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    3836       -1,    -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,
    3837       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3838       22,    23,    24,    25,    26,    -1,    -1,    29,    30,    31,
    3839       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    3840       -1,    -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3841      111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3842       -1,    -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,
    3843       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
    3844       23,    24,    25,    26,    -1,    -1,    29,    30,    31,    -1,
    3845       -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,
    3846       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
    3847       -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
    3848       -1,    -1,    -1,    -1,    67,    68,    10,    11,    12,    13,
    3849       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3850       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3851       -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
    3852      103,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
    3853       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,
    3854       -1,    -1,    -1,    67,    68,    10,    11,    12,    13,    14,
    3855       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
    3856       25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,
    3857       -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,
    3858       -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
    3859       -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,
    3860       -1,    -1,    67,    68,    10,    11,    12,    13,    14,    15,
    3861       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
    3862       26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
    3863       -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,
    3864       -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
    3865       -1,    -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,
    3866       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    3867       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    3868       -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
    3869       37,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
    3870       -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,
    3871       -1,    -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,
    3872       67,    68,    10,    11,    12,    13,    14,    15,    16,    17,
    3873       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3874       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3875       -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,
    3876       -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,
    3877       -1,    -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,
    3878       68,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    3879       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    3880       29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
    3881       -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,    -1,    -1,
    3882       -1,    -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,
    3883       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68,
    3884        4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
    3885       14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
    3886       24,    25,    26,    -1,    -1,    29,    30,    31,    -1,    -1,
    3887       -1,    -1,    -1,    37,   103,    -1,    -1,    -1,    -1,    -1,
    3888       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3889       -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    62,    -1,
    3890       64,    -1,    -1,    67,    68,    -1,    36,    -1,    38,    39,
    3891       -1,    41,    -1,    -1,    44,    45,    46,    47,    48,    49,
    3892       50,    51,    52,    53,    -1,    -1,    56,    57,    -1,    59,
    3893       -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,   102,    69,
    3894       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3895       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    3896       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3897       -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
    3898      110,   111,   112,   113,   114,   115,    -1,    36,    -1,    38,
    3899       39,    -1,    41,    -1,   124,    44,    45,    46,    47,    48,
    3900       49,    50,    51,    -1,    53,    -1,    -1,    56,    57,    -1,
    3901       59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    3902       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3903       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3904       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3905       -1,    -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,
    3906       -1,   110,   111,   112,   113,   114,   115,    -1,    -1,    -1,
    3907       -1,    -1,    -1,    -1,    -1,   124,     4,     5,     6,     7,
    3908        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
    3909       18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
    3910       -1,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,    37,
    3911       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
    3912       20,    21,    22,    23,    24,    25,    26,    -1,    -1,    29,
    3913       30,    31,    60,    -1,    62,    -1,    64,    37,    -1,    67,
    3914       68,    -1,    36,    -1,    38,    39,    -1,    41,    42,    43,
    3915       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
    3916       60,    89,    56,    57,    -1,    59,    -1,    67,    68,    -1,
    3917       -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
    3918       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3919       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3920       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3921       -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
    3922      114,   115,    36,    -1,    38,    39,    -1,    41,    42,    43,
    3923       44,    45,    46,    47,    48,    49,    50,    51,    -1,    53,
    3924       -1,    -1,    56,    57,    -1,    59,    -1,    -1,    -1,    -1,
    3925       -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
    3926       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3927       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,
    3928       -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,   103,
    3929       -1,    -1,   106,    -1,    -1,    -1,   110,   111,   112,   113,
    3930      114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,
    3931       -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,    76,
    3932       77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,
    3933       87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,
    3934       -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,    -1,
    3935       -1,    -1,   109,   110,   111,   112,   113,   114,   115,    59,
    3936       -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,
    3937       -1,    -1,    72,    73,    74,    75,    76,    77,    -1,    79,
    3938       80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,
    3939       -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,
    3940       -1,   101,    -1,   103,    -1,    -1,   106,    -1,    -1,    -1,
    3941      110,   111,   112,   113,   114,   115,    59,    -1,    -1,    -1,
    3942       -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,
    3943       73,    74,    75,    76,    77,    -1,    79,    80,    -1,    -1,
    3944       -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,
    3945       36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,    -1,
    3946      103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,
    3947      113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,    65,
    3948       -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,    75,
    3949       76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,    -1,
    3950       -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
    3951       -1,    -1,    -1,    -1,    -1,   101,    -1,   103,    -1,    -1,
    3952       -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,   115,
    3953       59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,
    3954       69,    -1,    -1,    72,    73,    74,    75,    76,    77,    -1,
    3955       79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
    3956       -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,    -1,
    3957       -1,    -1,   101,    -1,   103,    -1,    -1,    -1,    -1,    -1,
    3958       -1,   110,   111,   112,   113,   114,   115,    59,    -1,    -1,
    3959       -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,    -1,
    3960       72,    73,    74,    75,    76,    77,    -1,    79,    80,    -1,
    3961       -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,
    3962       -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,   101,
    3963       -1,   103,    -1,    -1,    -1,    -1,    -1,    -1,   110,   111,
    3964      112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,    -1,
    3965       65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,    74,
    3966       75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,    -1,
    3967       -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    36,    -1,
    3968       38,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
    3969       -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,   114,
    3970      115,    59,    -1,    -1,    -1,    -1,    -1,    65,    -1,    -1,
    3971       -1,    69,    -1,    -1,    72,    73,    74,    75,    76,    77,
    3972       -1,    79,    80,    -1,    -1,    -1,    -1,    -1,    -1,    87,
    3973       -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    -1,    -1,
    3974       -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
    3975       -1,    -1,   110,   111,   112,   113,   114,   115,    59,    -1,
    3976       -1,    -1,    -1,    -1,    65,    -1,    -1,    -1,    69,    -1,
    3977       -1,    72,    73,    74,    75,    76,    77,    -1,    79,    80,
    3978       -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,    -1,    -1,
    3979       -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    -1,
    3980      101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
    3981      111,   112,   113,   114,   115,    59,    -1,    -1,    -1,    -1,
    3982       -1,    65,    -1,    -1,    -1,    69,    -1,    -1,    72,    73,
    3983       74,    75,    76,    77,    -1,    79,    80,    -1,    -1,    -1,
    3984       -1,    -1,    -1,    87,    -1,    -1,    -1,    -1,    -1,    -1,
    3985       -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
    3986       -1,    -1,    -1,    -1,    -1,    -1,   110,   111,   112,   113,
    3987      114,   115,     4,     5,     6,     7,     8,     9,    10,    11,
    3988       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    3989       22,    23,    24,    25,    26,    -1,    -1,    -1,    -1,    -1,
    3990       -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,
    3991       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    3992       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
    3993       62,    -1,    64,    65,    -1,    67,    68,    69,    -1,    -1,
    3994       -1,    -1,    -1,    -1,    76,    77,     3,     4,     5,     6,
     3925      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
     3926      67,    -1,    69,    70,    -1,    72,    73,    74,    -1,    -1,
     3927      -1,    -1,    -1,    -1,    81,    82,     3,     4,     5,     6,
    39953928       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
    39963929      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
     
    39983931      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    39993932      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4000       -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,    -1,
    4001       67,    68,     3,     4,     5,     6,     7,     8,     9,    10,
    4002       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
    4003       21,    22,    23,    24,    25,    26,    -1,    -1,    29,    30,
    4004       31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
    4005       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4006       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
    4007       -1,    62,    -1,    64,    -1,    -1,    67,    68,     4,     5,
     3933      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    -1,
     3934      67,    -1,    69,    -1,    -1,    72,    73,     3,     4,     5,
    40083935       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
    40093936      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     
    40113938      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40123939      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4013       -1,    -1,    -1,    -1,    60,    -1,    62,    -1,    64,    -1,
    4014       -1,    67,    68,    10,    11,    12,    13,    14,    15,    16,
    4015       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
    4016       -1,    -1,    29,    30,    31,    32,    33,    34,    -1,    -1,
    4017       37,    10,    11,    12,    13,    14,    15,    16,    17,    18,
    4018       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
    4019       29,    30,    31,    60,    -1,    -1,    -1,    -1,    37,    -1,
    4020       67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     3940      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
     3941      -1,    67,    -1,    69,    -1,    -1,    72,    73,     4,     5,
     3942       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
     3943      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
     3944      26,    -1,    -1,    29,    30,    31,    -1,    -1,    -1,    -1,
     3945      -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    40213946      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
    4022       -1,    60,    -1,    -1,    -1,    -1,    -1,    -1,    67,    68
     3947      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,
     3948      -1,    67,    -1,    69,    -1,    -1,    72,    73
    40233949};
    40243950
     
    40303956      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
    40313957      22,    23,    24,    25,    26,    29,    30,    31,    32,    35,
    4032       37,    38,    57,    60,    62,    64,    65,    67,    68,    69,
    4033       76,    77,   101,   103,   111,   129,   132,   189,   203,   204,
    4034      205,   206,   207,   208,   209,   210,   211,   212,   213,   214,
    4035      215,   216,   217,   218,   219,   220,   222,   223,   224,   225,
    4036      226,   227,   228,   229,   231,   232,   233,   234,   235,   236,
    4037      237,   245,   246,   272,   273,   274,   282,   285,   291,   292,
    4038      294,   296,   297,   303,   308,   312,   313,   314,   315,   316,
    4039      317,   318,   319,   339,   356,   357,   358,   359,    65,   111,
    4040      131,   206,   208,   216,   218,   228,   232,   234,   273,    75,
    4041      101,   301,   302,   303,   301,   301,    65,    67,    68,    69,
    4042      130,   131,   262,   263,   283,   284,    67,    68,   263,   101,
    4043      294,    11,   190,   101,   111,   308,   313,   314,   315,   317,
    4044      318,   319,   104,   126,   103,   209,   216,   218,   312,   316,
    4045      355,   356,   359,   360,   127,   123,   266,   106,   127,   164,
    4046       67,    68,   129,   261,   127,   127,   127,   108,   127,    67,
    4047       68,   101,   111,   298,   307,   308,   309,   310,   311,   312,
    4048      316,   320,   321,   322,   323,   324,   330,     3,    27,    71,
    4049      230,     3,     5,    67,   103,   111,   208,   219,   223,   226,
    4050      235,   274,   312,   316,   359,   206,   208,   218,   228,   232,
    4051      234,   273,   312,   316,    32,   224,   224,   219,   226,   127,
    4052      224,   219,   224,   219,    68,   101,   106,   263,   274,   106,
    4053      263,   224,   219,   108,   127,   127,     0,   126,   101,   164,
    4054      301,   301,   126,   103,   216,   218,   357,   261,   261,   218,
    4055      123,   101,   111,   298,   308,   312,   103,   111,   359,   295,
    4056      221,   303,   101,   279,   101,   101,    49,   101,    36,    38,
    4057       59,    65,    69,    72,    73,    74,    75,    79,    80,    87,
    4058      101,   103,   110,   111,   112,   113,   114,   115,   128,   132,
    4059      133,   134,   135,   140,   141,   142,   143,   144,   145,   146,
    4060      147,   148,   149,   150,   151,   152,   153,   155,   157,   216,
    4061      265,   281,   355,   360,   218,   102,   102,   102,   102,   102,
    4062      102,   102,    67,    68,   103,   216,   261,   339,   357,   103,
    4063      111,   155,   208,   209,   215,   218,   222,   223,   228,   231,
    4064      232,   234,   251,   252,   256,   257,   258,   259,   273,   339,
    4065      351,   352,   353,   354,   359,   360,   104,   101,   312,   316,
    4066      359,   101,   108,   124,   103,   106,   111,   155,   267,   107,
    4067      126,   108,   124,   101,   108,   124,   108,   124,   108,   124,
    4068      301,   124,   308,   309,   310,   311,   321,   322,   323,   324,
    4069      218,   307,   320,    57,   300,   103,   301,   338,   339,   301,
    4070      301,   164,   126,   101,   301,   338,   301,   301,   218,   298,
    4071      101,   101,   217,   218,   216,   218,   104,   126,   216,   355,
    4072      360,   164,   126,   261,   266,   208,   223,   312,   316,   164,
    4073      126,   283,   218,   228,   124,   218,   218,   281,    38,   103,
    4074      216,   238,   239,   240,   241,   355,   359,   106,   247,   263,
    4075      106,   218,   283,   124,   124,   294,   126,   131,   260,     3,
    4076      127,   198,   199,   213,   215,   218,   126,   300,   101,   300,
    4077      155,   308,   218,   101,   126,   261,   106,    32,    33,    34,
    4078      216,   275,   276,   278,   126,   121,   123,   280,   126,   219,
    4079      225,   226,   261,   304,   305,   306,   101,   133,   101,   140,
    4080      140,   142,   101,   140,   101,   101,   140,   140,   131,   103,
    4081      155,   160,   164,   216,   264,   355,   104,   126,   142,   142,
    4082       75,    78,    79,    80,   101,   103,   105,    90,    91,    92,
    4083       93,    94,    95,    96,    97,    98,    99,   123,   159,   142,
    4084      111,   116,   117,   113,   114,    81,    82,    83,    84,   118,
    4085      119,    85,    86,   112,   120,   121,    87,    88,   122,   123,
    4086      362,   101,   111,   334,   335,   336,   337,   338,   102,   108,
    4087      101,   338,   339,   101,   338,   339,   126,   101,   216,   357,
    4088      104,   126,   103,   111,   127,   216,   218,   350,   351,   359,
    4089      360,   127,   101,   103,   111,   308,   325,   326,   327,   328,
    4090      329,   330,   331,   332,   333,   339,   340,   341,   342,   343,
    4091      344,   345,   111,   359,   218,   127,   127,   111,   216,   218,
    4092      352,   261,   216,   339,   352,   261,   101,   126,   126,   126,
    4093      104,   126,    65,    73,   103,   105,   263,   267,   268,   269,
    4094      270,   271,   126,   126,   126,   126,   126,   126,   298,   102,
    4095      102,   102,   102,   102,   102,   102,   307,   320,   101,   266,
    4096      104,   198,   126,   298,   160,   265,   160,   265,   298,   103,
    4097      198,   300,   164,   126,   198,   102,   240,   241,   104,   126,
    4098      101,   109,   111,   242,   244,   307,   308,   320,   338,   346,
    4099      347,   348,   349,   107,   239,   108,   124,   108,   124,   263,
    4100      238,   108,   361,   123,   248,   247,   218,   253,   254,   255,
    4101      258,   259,   102,   108,   164,   126,   111,   155,   126,   215,
    4102      218,   252,   351,   359,   292,   293,   101,   111,   325,   102,
    4103      108,   362,   263,   275,   101,   106,   263,   265,   275,   102,
    4104      108,   101,   133,   102,   109,   264,   264,   103,   131,   137,
    4105      155,   265,   264,   104,   126,   102,   108,   102,   101,   111,
    4106      346,   102,   108,   155,   103,   131,   103,   136,   137,   126,
    4107      103,   131,   155,   155,   142,   142,   142,   143,   143,   144,
    4108      144,   145,   145,   145,   145,   146,   146,   147,   148,   149,
    4109      150,   151,   109,   160,   155,   126,   335,   336,   337,   218,
    4110      334,   301,   301,   155,   265,   126,   260,   111,   126,   216,
    4111      339,   352,   218,   222,   104,   126,   104,   359,   104,   101,
    4112      126,   308,   326,   327,   328,   331,   341,   342,   343,   104,
    4113      126,   218,   325,   329,   340,   101,   301,   344,   362,   301,
    4114      301,   362,   101,   301,   344,   301,   301,   301,   301,   339,
    4115      216,   350,   360,   261,   104,   108,   104,   108,   362,   216,
    4116      352,   362,   249,   250,   251,   252,   249,   249,   261,   155,
    4117      126,   103,   263,   109,   108,   361,   267,    73,   103,   109,
    4118      271,    28,   200,   201,   261,   249,   131,   298,   131,   300,
    4119      101,   338,   339,   101,   338,   339,   133,   339,   164,   253,
    4120      102,   102,   102,   102,   104,   164,   198,   164,   106,   124,
    4121      124,   103,   308,   347,   348,   349,   153,   154,   218,   346,
    4122      243,   244,   243,   301,   301,   263,   301,   107,   263,   107,
    4123      154,   361,   127,   127,   131,   213,   127,   127,   249,   101,
    4124      111,   359,   127,   107,   218,   276,   277,   127,   126,   126,
    4125      101,   127,   102,   305,   160,   161,   109,   124,   103,   133,
    4126      191,   192,   193,   102,   102,   126,   109,   102,   102,   102,
    4127      155,   218,   106,   142,   157,   155,   156,   158,   108,   127,
    4128      126,   126,   102,   108,   155,   126,   153,   109,   253,   102,
    4129      102,   102,   334,   253,   102,   249,   216,   352,   103,   111,
    4130      155,   155,   218,   331,   253,   102,   102,   102,   102,   102,
    4131      102,   102,     7,   218,   325,   329,   340,   126,   126,   362,
    4132      126,   126,   102,   127,   127,   127,   127,   266,   127,   153,
    4133      154,   155,   299,   126,   267,   269,   107,   126,   202,   263,
    4134       38,    39,    41,    44,    45,    46,    47,    48,    49,    50,
    4135       51,    53,    56,   103,   131,   161,   162,   163,   164,   165,
    4136      166,   168,   169,   181,   183,   184,   189,   203,   297,    28,
    4137      127,   123,   266,   126,   126,   102,   127,   164,   238,   104,
    4138      102,   102,   102,   346,   242,   248,   107,   102,   108,   104,
    4139      104,   127,   218,   108,   362,   279,   102,   275,   206,   208,
    4140      216,   287,   288,   289,   290,   281,   102,   102,   109,   154,
    4141      101,   102,   109,   108,   155,   155,   268,   108,   127,   158,
    4142      104,   131,   138,   139,   155,   137,   127,   138,   153,   157,
    4143      127,   101,   338,   339,   127,   127,   126,   127,   127,   127,
    4144      155,   102,   127,   101,   338,   339,   101,   344,   101,   344,
    4145      339,   217,     7,   111,   127,   155,   253,   253,   252,   256,
    4146      256,   257,   108,   108,   102,   102,   104,    89,   115,   127,
    4147      127,   138,   267,   155,   108,   124,   203,   207,   218,   222,
    4148      101,   101,   162,   101,   101,   124,   131,   124,   131,   111,
    4149      131,   161,   101,   164,   124,   155,   104,   109,   124,   127,
    4150      126,   127,   202,   102,   155,   253,   253,   301,   102,   107,
    4151      101,   338,   339,   126,   102,   126,   127,   298,   107,   126,
    4152      127,   127,   102,   106,   191,   104,   154,   124,   191,   193,
    4153      108,   127,   361,   156,   104,   127,    78,   105,   108,   127,
    4154      127,   104,   127,   102,   126,   102,   102,   104,   104,   104,
    4155      127,   102,   126,   126,   126,   155,   155,   127,   104,   127,
    4156      127,   127,   127,   126,   126,   154,   154,   104,   104,   127,
    4157      127,   263,   218,   160,   160,    45,   160,   126,   124,   124,
    4158      160,   124,   124,   160,    54,    55,   185,   186,   187,   124,
    4159      301,   166,   107,   124,   127,   127,   126,    89,   258,   259,
    4160      102,   288,   108,   124,   108,   124,   107,   286,   109,   133,
    4161      102,   102,   109,   158,   104,   107,   104,   103,   139,   103,
    4162      139,   139,   104,   104,   104,   253,   104,   253,   253,   253,
    4163      127,   127,   104,   104,   102,   102,   104,   108,    89,   252,
    4164       89,   127,   104,   104,   102,   102,   101,   102,   161,   182,
    4165      203,   124,   102,   101,   164,   187,    54,   162,   102,   102,
    4166      253,   106,   126,   126,   287,   133,   194,   101,   124,   194,
    4167      127,   109,   126,   126,   127,   127,   127,   127,   104,   104,
    4168      126,   127,   104,   162,    42,    43,   106,   172,   173,   174,
    4169      160,   162,   127,   102,   161,   106,   174,    89,   126,   101,
    4170      127,   126,   261,   298,   107,   108,   109,   154,   102,   104,
    4171      155,   138,   138,   102,   102,   102,   102,   256,    40,   154,
    4172      170,   171,   299,   109,   126,   162,   172,   102,   124,   162,
    4173      124,   126,   102,   126,    89,   126,   102,   287,   133,   131,
    4174      195,   102,   124,   109,   127,   127,   162,    89,   108,   109,
    4175      127,   196,   197,   203,   124,   161,   161,   196,   164,   188,
    4176      216,   355,   102,   126,   107,   102,   108,   155,   104,   104,
    4177      154,   170,   173,   175,   176,   126,   124,   173,   177,   178,
    4178      127,   101,   111,   298,   346,   131,   164,   188,   101,   124,
    4179      131,   162,   167,   107,   173,   203,   161,    52,   167,   180,
    4180      107,   173,   102,   218,   127,   281,   162,   167,   124,   179,
    4181      180,   167,   180,   164,   102,   102,   179,   127,   164,   127
     3958      37,    38,    62,    65,    67,    69,    70,    72,    73,    74,
     3959      81,    82,   107,   109,   117,   135,   138,   195,   209,   210,
     3960     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
     3961     221,   222,   223,   224,   225,   226,   228,   229,   230,   231,
     3962     232,   233,   234,   235,   237,   238,   239,   240,   241,   242,
     3963     243,   251,   252,   278,   279,   280,   288,   291,   297,   298,
     3964     300,   302,   303,   309,   314,   318,   319,   320,   321,   322,
     3965     323,   324,   325,   345,   362,   363,   364,   365,    70,   117,
     3966     137,   212,   214,   222,   224,   234,   238,   240,   279,    80,
     3967     107,   307,   308,   309,   307,   307,    70,    72,    73,    74,
     3968     136,   137,   268,   269,   289,   290,    72,    73,   269,   107,
     3969     300,    11,   196,   107,   117,   314,   319,   320,   321,   323,
     3970     324,   325,   110,   132,   109,   215,   222,   224,   318,   322,
     3971     361,   362,   365,   366,   133,   105,   129,   272,   112,   133,
     3972     170,    72,    73,   135,   267,   133,   133,   133,   114,   133,
     3973      72,    73,   107,   117,   304,   313,   314,   315,   316,   317,
     3974     318,   322,   326,   327,   328,   329,   330,   336,     3,    27,
     3975      76,   236,     3,     5,    72,   109,   117,   214,   225,   229,
     3976     232,   241,   280,   318,   322,   365,   212,   214,   224,   234,
     3977     238,   240,   279,   318,   322,    32,   230,   230,   225,   232,
     3978     133,   230,   225,   230,   225,    73,   107,   112,   269,   280,
     3979     112,   269,   230,   225,   114,   133,   133,     0,   132,   107,
     3980     170,   307,   307,   132,   109,   222,   224,   363,   267,   267,
     3981     224,   129,   107,   117,   304,   314,   318,   109,   117,   365,
     3982     301,   227,   309,   107,   285,   107,   107,    49,   107,    36,
     3983      38,    64,    70,    74,    77,    78,    79,    80,    84,    85,
     3984      92,   107,   109,   116,   117,   118,   119,   120,   121,   134,
     3985     138,   139,   140,   141,   146,   147,   148,   149,   150,   151,
     3986     152,   153,   154,   155,   156,   157,   158,   159,   161,   163,
     3987     222,   271,   287,   361,   366,   224,   108,   108,   108,   108,
     3988     108,   108,   108,    72,    73,   109,   222,   267,   345,   363,
     3989     109,   117,   161,   214,   215,   221,   224,   228,   229,   234,
     3990     237,   238,   240,   257,   258,   262,   263,   264,   265,   279,
     3991     345,   357,   358,   359,   360,   365,   366,   110,   107,   318,
     3992     322,   365,   107,   114,   130,   109,   112,   117,   161,   273,
     3993     273,   113,   132,   114,   130,   107,   114,   130,   114,   130,
     3994     114,   130,   307,   130,   314,   315,   316,   317,   327,   328,
     3995     329,   330,   224,   313,   326,    62,   306,   109,   307,   344,
     3996     345,   307,   307,   170,   132,   107,   307,   344,   307,   307,
     3997     224,   304,   107,   107,   223,   224,   222,   224,   110,   132,
     3998     222,   361,   366,   170,   132,   267,   272,   214,   229,   318,
     3999     322,   170,   132,   289,   224,   234,   130,   224,   224,   287,
     4000      38,   109,   222,   244,   245,   246,   247,   361,   365,   112,
     4001     253,   269,   112,   224,   289,   130,   130,   300,   132,   137,
     4002     266,     3,   133,   204,   205,   219,   221,   224,   132,   306,
     4003     107,   306,   161,   314,   224,   107,   132,   267,   112,    32,
     4004      33,    34,   222,   281,   282,   284,   132,   127,   129,   286,
     4005     132,   225,   231,   232,   267,   310,   311,   312,   107,   139,
     4006     107,   146,   146,   148,   107,   146,   107,   107,   146,   146,
     4007     137,   109,   161,   166,   170,   222,   270,   361,   110,   132,
     4008     148,   148,    80,    83,    84,    85,   107,   109,   111,   112,
     4009      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
     4010     129,   165,   148,   117,   122,   123,   119,   120,    86,    87,
     4011      88,    89,   124,   125,    90,    91,   118,   126,   127,    92,
     4012      93,   128,   129,   368,   107,   117,   340,   341,   342,   343,
     4013     344,   108,   114,   107,   344,   345,   107,   344,   345,   132,
     4014     107,   222,   363,   110,   132,   109,   117,   133,   222,   224,
     4015     356,   357,   365,   366,   133,   107,   109,   117,   314,   331,
     4016     332,   333,   334,   335,   336,   337,   338,   339,   345,   346,
     4017     347,   348,   349,   350,   351,   117,   365,   224,   133,   133,
     4018     117,   222,   224,   358,   267,   222,   345,   358,   267,   107,
     4019     132,   132,   132,   110,   132,    70,    78,   109,   111,   269,
     4020     273,   274,   275,   276,   277,   132,   132,   132,   132,   132,
     4021     132,   304,   108,   108,   108,   108,   108,   108,   108,   313,
     4022     326,   107,   272,   110,   204,   132,   304,   166,   271,   166,
     4023     271,   304,   109,   204,   306,   170,   132,   204,   108,   246,
     4024     247,   110,   132,   107,   115,   117,   248,   250,   313,   314,
     4025     326,   344,   352,   353,   354,   355,   113,   245,   114,   130,
     4026     114,   130,   269,   244,   114,   367,   129,   254,   253,   224,
     4027     259,   260,   261,   264,   265,   108,   114,   170,   132,   117,
     4028     161,   132,   221,   224,   258,   357,   365,   298,   299,   107,
     4029     117,   331,   108,   114,   368,   269,   281,   107,   112,   269,
     4030     271,   281,   108,   114,   107,   139,   108,   115,   270,   270,
     4031     109,   137,   143,   161,   271,   270,   110,   132,   108,   114,
     4032     108,   107,   117,   352,   108,   114,   161,   109,   137,   109,
     4033     142,   143,   132,   109,   137,   142,   161,   161,   148,   148,
     4034     148,   149,   149,   150,   150,   151,   151,   151,   151,   152,
     4035     152,   153,   154,   155,   156,   157,   115,   166,   161,   132,
     4036     341,   342,   343,   224,   340,   307,   307,   161,   271,   132,
     4037     266,   117,   132,   222,   345,   358,   224,   228,   110,   132,
     4038     110,   365,   110,   107,   132,   314,   332,   333,   334,   337,
     4039     347,   348,   349,   110,   132,   224,   331,   335,   346,   107,
     4040     307,   350,   368,   307,   307,   368,   107,   307,   350,   307,
     4041     307,   307,   307,   345,   222,   356,   366,   267,   110,   114,
     4042     110,   114,   368,   222,   358,   368,   255,   256,   257,   258,
     4043     255,   255,   267,   161,   132,   109,   269,   115,   114,   367,
     4044     273,    78,   109,   115,   277,    28,   206,   207,   267,   255,
     4045     137,   304,   137,   306,   107,   344,   345,   107,   344,   345,
     4046     139,   345,   170,   259,   108,   108,   108,   108,   110,   170,
     4047     204,   170,   112,   130,   130,   109,   314,   353,   354,   355,
     4048     159,   160,   224,   352,   249,   250,   249,   307,   307,   269,
     4049     307,   113,   269,   113,   160,   367,   133,   133,   137,   219,
     4050     133,   133,   255,   107,   117,   365,   133,   113,   224,   282,
     4051     283,   133,   132,   132,   107,   133,   108,   311,   166,   167,
     4052     115,   130,   109,   139,   197,   198,   199,   108,   108,   132,
     4053     115,   108,   108,   108,   161,   224,   112,   148,   163,   161,
     4054     162,   164,   114,   133,   132,   132,   108,   114,   161,   132,
     4055     113,   159,   115,   259,   108,   108,   108,   340,   259,   108,
     4056     255,   222,   358,   109,   117,   161,   161,   224,   337,   259,
     4057     108,   108,   108,   108,   108,   108,   108,     7,   224,   331,
     4058     335,   346,   132,   132,   368,   132,   132,   108,   133,   133,
     4059     133,   133,   272,   133,   159,   160,   161,   305,   132,   273,
     4060     275,   113,   132,   208,   269,    38,    39,    41,    44,    45,
     4061      46,    47,    48,    49,    50,    51,    55,    59,    60,   109,
     4062     126,   137,   167,   168,   169,   170,   171,   172,   174,   175,
     4063     187,   189,   190,   195,   209,   303,    28,   133,   129,   272,
     4064     132,   132,   108,   133,   170,   244,   110,   108,   108,   108,
     4065     352,   248,   254,   113,   108,   114,   110,   110,   133,   224,
     4066     114,   368,   285,   108,   281,   212,   214,   222,   293,   294,
     4067     295,   296,   287,   108,   108,   115,   160,   107,   108,   115,
     4068     114,   161,   161,   274,   114,   133,   164,   110,   137,   144,
     4069     145,   161,   143,   133,   144,   159,   163,   133,   107,   344,
     4070     345,   133,   133,   132,   133,   133,   133,   161,   108,   133,
     4071     107,   344,   345,   107,   350,   107,   350,   345,   223,     7,
     4072     117,   133,   161,   259,   259,   258,   262,   262,   263,   114,
     4073     114,   108,   108,   110,    94,   121,   133,   133,   144,   273,
     4074     161,   114,   130,   209,   213,   224,   228,   107,   107,   168,
     4075     107,   107,   130,   137,   130,   137,   117,   137,   167,   107,
     4076     170,   162,   162,   110,   141,   115,   130,   133,   132,   133,
     4077     208,   108,   161,   259,   259,   307,   108,   113,   107,   344,
     4078     345,   132,   108,   132,   133,   304,   113,   132,   133,   133,
     4079     108,   112,   197,   110,   160,   130,   197,   199,   114,   133,
     4080     367,   162,   110,   133,    83,   111,   114,   133,   133,   110,
     4081     133,   108,   132,   108,   108,   110,   110,   110,   133,   108,
     4082     132,   132,   132,   161,   161,   133,   110,   133,   133,   133,
     4083     133,   132,   132,   160,   160,   110,   110,   133,   133,   269,
     4084     224,   166,   166,    45,   166,   132,   130,   130,   166,   130,
     4085     130,   166,    56,    57,    58,   191,   192,   193,   130,    61,
     4086     130,   112,   307,   172,   113,   130,   133,   133,   132,    94,
     4087     264,   265,   108,   294,   114,   130,   114,   130,   113,   292,
     4088     115,   139,   108,   108,   115,   164,   110,   113,   110,   109,
     4089     145,   109,   145,   145,   110,   110,   110,   259,   110,   259,
     4090     259,   259,   133,   133,   110,   110,   108,   108,   110,   114,
     4091      94,   258,    94,   133,   110,   110,   108,   108,   107,   108,
     4092     167,   188,   209,   130,   108,   107,   107,   170,   193,    56,
     4093      57,   161,   142,   168,   108,   108,   259,   112,   132,   132,
     4094     293,   139,   200,   107,   130,   200,   133,   115,   132,   132,
     4095     133,   133,   133,   133,   110,   110,   132,   133,   110,   168,
     4096      42,    43,   112,   178,   179,   180,   166,   168,   133,   108,
     4097     167,   112,   180,    94,   132,    94,   132,   107,   107,   130,
     4098     113,   133,   132,   267,   304,   113,   114,   115,   160,   108,
     4099     110,   161,   144,   144,   108,   108,   108,   108,   262,    40,
     4100     160,   176,   177,   305,   115,   132,   168,   178,   108,   130,
     4101     168,   130,   132,   108,   132,   108,   132,    94,   132,    94,
     4102     132,   130,   108,   293,   139,   137,   201,   108,   130,   115,
     4103     133,   133,   168,    94,   114,   115,   133,   202,   203,   209,
     4104     130,   167,   167,   202,   170,   194,   222,   361,   170,   194,
     4105     108,   132,   108,   132,   113,   108,   114,   161,   110,   110,
     4106     160,   176,   179,   181,   182,   132,   130,   179,   183,   184,
     4107     133,   107,   117,   304,   352,   137,   133,   170,   194,   170,
     4108     194,   107,   130,   137,   168,   173,   113,   179,   209,   167,
     4109      54,   173,   186,   113,   179,   108,   224,   108,   133,   133,
     4110     287,   168,   173,   130,   185,   186,   173,   186,   170,   170,
     4111     108,   108,   108,   185,   133,   133,   170,   170,   133,   133
    41824112};
    41834113
     
    50164946
    50174947/* Line 1806 of yacc.c  */
    5018 #line 288 "parser.yy"
     4948#line 290 "parser.yy"
    50194949    {
    50204950                        typedefTable.enterScope();
     
    50254955
    50264956/* Line 1806 of yacc.c  */
    5027 #line 294 "parser.yy"
     4957#line 296 "parser.yy"
    50284958    {
    50294959                        typedefTable.leaveScope();
     
    50344964
    50354965/* Line 1806 of yacc.c  */
    5036 #line 303 "parser.yy"
     4966#line 305 "parser.yy"
    50374967    { (yyval.constant) = new ConstantNode( ConstantNode::Integer, (yyvsp[(1) - (1)].tok) ); }
    50384968    break;
     
    50414971
    50424972/* Line 1806 of yacc.c  */
    5043 #line 304 "parser.yy"
     4973#line 306 "parser.yy"
    50444974    { (yyval.constant) = new ConstantNode( ConstantNode::Float, (yyvsp[(1) - (1)].tok) ); }
    50454975    break;
     
    50484978
    50494979/* Line 1806 of yacc.c  */
    5050 #line 305 "parser.yy"
     4980#line 307 "parser.yy"
    50514981    { (yyval.constant) = new ConstantNode( ConstantNode::Character, (yyvsp[(1) - (1)].tok) ); }
    50524982    break;
     
    50554985
    50564986/* Line 1806 of yacc.c  */
    5057 #line 329 "parser.yy"
     4987#line 332 "parser.yy"
    50584988    { (yyval.constant) = new ConstantNode( ConstantNode::String, (yyvsp[(1) - (1)].tok) ); }
    50594989    break;
     
    50624992
    50634993/* Line 1806 of yacc.c  */
    5064 #line 330 "parser.yy"
     4994#line 333 "parser.yy"
    50654995    { (yyval.constant) = (yyvsp[(1) - (2)].constant)->appendstr( (yyvsp[(2) - (2)].tok) ); }
    50664996    break;
     
    50694999
    50705000/* Line 1806 of yacc.c  */
    5071 #line 337 "parser.yy"
     5001#line 340 "parser.yy"
    50725002    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50735003    break;
     
    50765006
    50775007/* Line 1806 of yacc.c  */
    5078 #line 339 "parser.yy"
     5008#line 342 "parser.yy"
    50795009    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    50805010    break;
     
    50835013
    50845014/* Line 1806 of yacc.c  */
    5085 #line 341 "parser.yy"
     5015#line 344 "parser.yy"
    50865016    { (yyval.en) = (yyvsp[(2) - (3)].en); }
    50875017    break;
     
    50905020
    50915021/* Line 1806 of yacc.c  */
    5092 #line 343 "parser.yy"
     5022#line 346 "parser.yy"
    50935023    { (yyval.en) = new ValofExprNode( (yyvsp[(2) - (3)].sn) ); }
    50945024    break;
     
    50975027
    50985028/* Line 1806 of yacc.c  */
    5099 #line 353 "parser.yy"
     5029#line 356 "parser.yy"
    51005030    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Index ), (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ); }
    51015031    break;
     
    51045034
    51055035/* Line 1806 of yacc.c  */
    5106 #line 355 "parser.yy"
     5036#line 358 "parser.yy"
    51075037    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ); }
    51085038    break;
     
    51115041
    51125042/* Line 1806 of yacc.c  */
    5113 #line 357 "parser.yy"
     5043#line 360 "parser.yy"
    51145044    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51155045    break;
     
    51185048
    51195049/* Line 1806 of yacc.c  */
    5120 #line 360 "parser.yy"
     5050#line 363 "parser.yy"
    51215051    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), (yyvsp[(1) - (3)].en), new VarRefNode( (yyvsp[(3) - (3)].tok) )); }
    51225052    break;
     
    51255055
    51265056/* Line 1806 of yacc.c  */
    5127 #line 363 "parser.yy"
     5057#line 366 "parser.yy"
    51285058    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::IncrPost ), (yyvsp[(1) - (2)].en) ); }
    51295059    break;
     
    51325062
    51335063/* Line 1806 of yacc.c  */
    5134 #line 365 "parser.yy"
     5064#line 368 "parser.yy"
    51355065    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), (yyvsp[(1) - (2)].en) ); }
    51365066    break;
     
    51395069
    51405070/* Line 1806 of yacc.c  */
    5141 #line 368 "parser.yy"
     5071#line 370 "parser.yy"
    51425072    { (yyval.en) = 0; }
    51435073    break;
    51445074
    5145   case 32:
    5146 
    5147 /* Line 1806 of yacc.c  */
    5148 #line 374 "parser.yy"
     5075  case 31:
     5076
     5077/* Line 1806 of yacc.c  */
     5078#line 372 "parser.yy"
     5079    {
     5080                        Token fn; fn.str = new std::string( "?{}" ); // location undefined
     5081                        (yyval.en) = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_link( (yyvsp[(3) - (4)].en) ) );
     5082                }
     5083    break;
     5084
     5085  case 33:
     5086
     5087/* Line 1806 of yacc.c  */
     5088#line 381 "parser.yy"
    51495089    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    51505090    break;
    51515091
    5152   case 33:
    5153 
    5154 /* Line 1806 of yacc.c  */
    5155 #line 379 "parser.yy"
     5092  case 34:
     5093
     5094/* Line 1806 of yacc.c  */
     5095#line 386 "parser.yy"
    51565096    { (yyval.en) = 0; }
    51575097    break;
    51585098
    5159   case 35:
    5160 
    5161 /* Line 1806 of yacc.c  */
    5162 #line 382 "parser.yy"
     5099  case 36:
     5100
     5101/* Line 1806 of yacc.c  */
     5102#line 389 "parser.yy"
    51635103    { (yyval.en) = (yyvsp[(3) - (3)].en)->set_argName( (yyvsp[(1) - (3)].tok) ); }
    51645104    break;
    51655105
    5166   case 36:
    5167 
    5168 /* Line 1806 of yacc.c  */
    5169 #line 387 "parser.yy"
     5106  case 37:
     5107
     5108/* Line 1806 of yacc.c  */
     5109#line 394 "parser.yy"
    51705110    { (yyval.en) = (yyvsp[(7) - (7)].en)->set_argName( (yyvsp[(3) - (7)].en) ); }
    51715111    break;
    51725112
    5173   case 37:
    5174 
    5175 /* Line 1806 of yacc.c  */
    5176 #line 389 "parser.yy"
     5113  case 38:
     5114
     5115/* Line 1806 of yacc.c  */
     5116#line 396 "parser.yy"
    51775117    { (yyval.en) = (yyvsp[(9) - (9)].en)->set_argName( new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (9)].en)->set_link( flattenCommas( (yyvsp[(5) - (9)].en) )))); }
    51785118    break;
    51795119
    5180   case 39:
    5181 
    5182 /* Line 1806 of yacc.c  */
    5183 #line 394 "parser.yy"
     5120  case 40:
     5121
     5122/* Line 1806 of yacc.c  */
     5123#line 401 "parser.yy"
    51845124    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    51855125    break;
    51865126
    5187   case 40:
    5188 
    5189 /* Line 1806 of yacc.c  */
    5190 #line 399 "parser.yy"
     5127  case 41:
     5128
     5129/* Line 1806 of yacc.c  */
     5130#line 406 "parser.yy"
    51915131    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (1)].tok) ); }
    51925132    break;
    51935133
    5194   case 41:
    5195 
    5196 /* Line 1806 of yacc.c  */
    5197 #line 401 "parser.yy"
     5134  case 42:
     5135
     5136/* Line 1806 of yacc.c  */
     5137#line 408 "parser.yy"
    51985138    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    51995139    break;
    52005140
    5201   case 42:
    5202 
    5203 /* Line 1806 of yacc.c  */
    5204 #line 403 "parser.yy"
     5141  case 43:
     5142
     5143/* Line 1806 of yacc.c  */
     5144#line 410 "parser.yy"
    52055145    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    52065146    break;
    52075147
    5208   case 43:
    5209 
    5210 /* Line 1806 of yacc.c  */
    5211 #line 405 "parser.yy"
     5148  case 44:
     5149
     5150/* Line 1806 of yacc.c  */
     5151#line 412 "parser.yy"
    52125152    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (3)].tok) ), (yyvsp[(3) - (3)].en) ); }
    52135153    break;
    52145154
    5215   case 44:
    5216 
    5217 /* Line 1806 of yacc.c  */
    5218 #line 407 "parser.yy"
     5155  case 45:
     5156
     5157/* Line 1806 of yacc.c  */
     5158#line 414 "parser.yy"
    52195159    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PFieldSel ), new VarRefNode( (yyvsp[(1) - (7)].tok) ), (yyvsp[(5) - (7)].en) ); }
    52205160    break;
    52215161
    5222   case 46:
    5223 
    5224 /* Line 1806 of yacc.c  */
    5225 #line 415 "parser.yy"
     5162  case 47:
     5163
     5164/* Line 1806 of yacc.c  */
     5165#line 422 "parser.yy"
    52265166    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    52275167    break;
    52285168
    5229   case 47:
    5230 
    5231 /* Line 1806 of yacc.c  */
    5232 #line 417 "parser.yy"
     5169  case 48:
     5170
     5171/* Line 1806 of yacc.c  */
     5172#line 424 "parser.yy"
    52335173    { (yyval.en) = (yyvsp[(1) - (1)].constant); }
    52345174    break;
    52355175
    5236   case 48:
    5237 
    5238 /* Line 1806 of yacc.c  */
    5239 #line 419 "parser.yy"
     5176  case 49:
     5177
     5178/* Line 1806 of yacc.c  */
     5179#line 426 "parser.yy"
    52405180    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Incr ), (yyvsp[(2) - (2)].en) ); }
    52415181    break;
    52425182
    5243   case 49:
    5244 
    5245 /* Line 1806 of yacc.c  */
    5246 #line 421 "parser.yy"
     5183  case 50:
     5184
     5185/* Line 1806 of yacc.c  */
     5186#line 428 "parser.yy"
    52475187    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Decr ), (yyvsp[(2) - (2)].en) ); }
    52485188    break;
    52495189
    5250   case 50:
    5251 
    5252 /* Line 1806 of yacc.c  */
    5253 #line 423 "parser.yy"
     5190  case 51:
     5191
     5192/* Line 1806 of yacc.c  */
     5193#line 430 "parser.yy"
    52545194    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    52555195    break;
    52565196
    5257   case 51:
    5258 
    5259 /* Line 1806 of yacc.c  */
    5260 #line 425 "parser.yy"
     5197  case 52:
     5198
     5199/* Line 1806 of yacc.c  */
     5200#line 432 "parser.yy"
    52615201    { (yyval.en) = new CompositeExprNode( (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    52625202    break;
    52635203
    5264   case 52:
    5265 
    5266 /* Line 1806 of yacc.c  */
    5267 #line 427 "parser.yy"
     5204  case 53:
     5205
     5206/* Line 1806 of yacc.c  */
     5207#line 434 "parser.yy"
    52685208    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neg ), (yyvsp[(2) - (2)].en) ); }
    52695209    break;
    52705210
    5271   case 53:
    5272 
    5273 /* Line 1806 of yacc.c  */
    5274 #line 429 "parser.yy"
     5211  case 54:
     5212
     5213/* Line 1806 of yacc.c  */
     5214#line 436 "parser.yy"
    52755215    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::PointTo ), (yyvsp[(2) - (2)].en) ); }
    52765216    break;
    52775217
    5278   case 54:
    5279 
    5280 /* Line 1806 of yacc.c  */
    5281 #line 435 "parser.yy"
     5218  case 55:
     5219
     5220/* Line 1806 of yacc.c  */
     5221#line 442 "parser.yy"
    52825222    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), (yyvsp[(2) - (2)].en) ); }
    52835223    break;
    52845224
    5285   case 55:
    5286 
    5287 /* Line 1806 of yacc.c  */
    5288 #line 437 "parser.yy"
     5225  case 56:
     5226
     5227/* Line 1806 of yacc.c  */
     5228#line 444 "parser.yy"
    52895229    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    52905230    break;
    52915231
    5292   case 56:
    5293 
    5294 /* Line 1806 of yacc.c  */
    5295 #line 439 "parser.yy"
     5232  case 57:
     5233
     5234/* Line 1806 of yacc.c  */
     5235#line 446 "parser.yy"
    52965236    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (1)].tok) )); }
    52975237    break;
    52985238
    5299   case 57:
    5300 
    5301 /* Line 1806 of yacc.c  */
    5302 #line 441 "parser.yy"
     5239  case 58:
     5240
     5241/* Line 1806 of yacc.c  */
     5242#line 448 "parser.yy"
    53035243    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    53045244    break;
    53055245
    5306   case 58:
    5307 
    5308 /* Line 1806 of yacc.c  */
    5309 #line 443 "parser.yy"
     5246  case 59:
     5247
     5248/* Line 1806 of yacc.c  */
     5249#line 450 "parser.yy"
    53105250    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ); }
    53115251    break;
    53125252
    5313   case 59:
    5314 
    5315 /* Line 1806 of yacc.c  */
    5316 #line 445 "parser.yy"
     5253  case 60:
     5254
     5255/* Line 1806 of yacc.c  */
     5256#line 452 "parser.yy"
    53175257    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), (yyvsp[(2) - (2)].en) ); }
    53185258    break;
    53195259
    5320   case 60:
    5321 
    5322 /* Line 1806 of yacc.c  */
    5323 #line 447 "parser.yy"
    5324     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) )); }
    5325     break;
    5326 
    53275260  case 61:
    53285261
    53295262/* Line 1806 of yacc.c  */
    5330 #line 449 "parser.yy"
    5331     { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true )); }
     5263#line 454 "parser.yy"
     5264    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( (yyvsp[(3) - (4)].decl) ) ); }
    53325265    break;
    53335266
     
    53355268
    53365269/* Line 1806 of yacc.c  */
    5337 #line 453 "parser.yy"
     5270#line 456 "parser.yy"
     5271    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( (yyvsp[(2) - (2)].tok), true ) ); }
     5272    break;
     5273
     5274  case 63:
     5275
     5276/* Line 1806 of yacc.c  */
     5277#line 460 "parser.yy"
    53385278    { (yyval.en) = new OperatorNode( OperatorNode::AddressOf ); }
    53395279    break;
    53405280
    5341   case 63:
    5342 
    5343 /* Line 1806 of yacc.c  */
    5344 #line 454 "parser.yy"
     5281  case 64:
     5282
     5283/* Line 1806 of yacc.c  */
     5284#line 461 "parser.yy"
    53455285    { (yyval.en) = new OperatorNode( OperatorNode::UnPlus ); }
    53465286    break;
    53475287
    5348   case 64:
    5349 
    5350 /* Line 1806 of yacc.c  */
    5351 #line 455 "parser.yy"
     5288  case 65:
     5289
     5290/* Line 1806 of yacc.c  */
     5291#line 462 "parser.yy"
    53525292    { (yyval.en) = new OperatorNode( OperatorNode::UnMinus ); }
    53535293    break;
    53545294
    5355   case 65:
    5356 
    5357 /* Line 1806 of yacc.c  */
    5358 #line 456 "parser.yy"
     5295  case 66:
     5296
     5297/* Line 1806 of yacc.c  */
     5298#line 463 "parser.yy"
    53595299    { (yyval.en) = new OperatorNode( OperatorNode::BitNeg ); }
    53605300    break;
    53615301
    5362   case 67:
    5363 
    5364 /* Line 1806 of yacc.c  */
    5365 #line 462 "parser.yy"
     5302  case 68:
     5303
     5304/* Line 1806 of yacc.c  */
     5305#line 469 "parser.yy"
    53665306    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    53675307    break;
    53685308
    5369   case 68:
    5370 
    5371 /* Line 1806 of yacc.c  */
    5372 #line 464 "parser.yy"
     5309  case 69:
     5310
     5311/* Line 1806 of yacc.c  */
     5312#line 471 "parser.yy"
    53735313    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cast ), new TypeValueNode( (yyvsp[(2) - (4)].decl) ), (yyvsp[(4) - (4)].en) ); }
    53745314    break;
    53755315
    5376   case 70:
    5377 
    5378 /* Line 1806 of yacc.c  */
    5379 #line 470 "parser.yy"
     5316  case 71:
     5317
     5318/* Line 1806 of yacc.c  */
     5319#line 477 "parser.yy"
    53805320    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mul ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53815321    break;
    53825322
    5383   case 71:
    5384 
    5385 /* Line 1806 of yacc.c  */
    5386 #line 472 "parser.yy"
     5323  case 72:
     5324
     5325/* Line 1806 of yacc.c  */
     5326#line 479 "parser.yy"
    53875327    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Div ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53885328    break;
    53895329
    5390   case 72:
    5391 
    5392 /* Line 1806 of yacc.c  */
    5393 #line 474 "parser.yy"
     5330  case 73:
     5331
     5332/* Line 1806 of yacc.c  */
     5333#line 481 "parser.yy"
    53945334    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Mod ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    53955335    break;
    53965336
    5397   case 74:
    5398 
    5399 /* Line 1806 of yacc.c  */
    5400 #line 480 "parser.yy"
     5337  case 75:
     5338
     5339/* Line 1806 of yacc.c  */
     5340#line 487 "parser.yy"
    54015341    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Plus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54025342    break;
    54035343
    5404   case 75:
    5405 
    5406 /* Line 1806 of yacc.c  */
    5407 #line 482 "parser.yy"
     5344  case 76:
     5345
     5346/* Line 1806 of yacc.c  */
     5347#line 489 "parser.yy"
    54085348    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Minus ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54095349    break;
    54105350
    5411   case 77:
    5412 
    5413 /* Line 1806 of yacc.c  */
    5414 #line 488 "parser.yy"
     5351  case 78:
     5352
     5353/* Line 1806 of yacc.c  */
     5354#line 495 "parser.yy"
    54155355    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54165356    break;
    54175357
    5418   case 78:
    5419 
    5420 /* Line 1806 of yacc.c  */
    5421 #line 490 "parser.yy"
     5358  case 79:
     5359
     5360/* Line 1806 of yacc.c  */
     5361#line 497 "parser.yy"
    54225362    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::RShift ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54235363    break;
    54245364
    5425   case 80:
    5426 
    5427 /* Line 1806 of yacc.c  */
    5428 #line 496 "parser.yy"
     5365  case 81:
     5366
     5367/* Line 1806 of yacc.c  */
     5368#line 503 "parser.yy"
    54295369    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54305370    break;
    54315371
    5432   case 81:
    5433 
    5434 /* Line 1806 of yacc.c  */
    5435 #line 498 "parser.yy"
     5372  case 82:
     5373
     5374/* Line 1806 of yacc.c  */
     5375#line 505 "parser.yy"
    54365376    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54375377    break;
    54385378
    5439   case 82:
    5440 
    5441 /* Line 1806 of yacc.c  */
    5442 #line 500 "parser.yy"
     5379  case 83:
     5380
     5381/* Line 1806 of yacc.c  */
     5382#line 507 "parser.yy"
    54435383    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::LEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54445384    break;
    54455385
    5446   case 83:
    5447 
    5448 /* Line 1806 of yacc.c  */
    5449 #line 502 "parser.yy"
     5386  case 84:
     5387
     5388/* Line 1806 of yacc.c  */
     5389#line 509 "parser.yy"
    54505390    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::GEThan ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54515391    break;
    54525392
    5453   case 85:
    5454 
    5455 /* Line 1806 of yacc.c  */
    5456 #line 508 "parser.yy"
     5393  case 86:
     5394
     5395/* Line 1806 of yacc.c  */
     5396#line 515 "parser.yy"
    54575397    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Eq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54585398    break;
    54595399
    5460   case 86:
    5461 
    5462 /* Line 1806 of yacc.c  */
    5463 #line 510 "parser.yy"
     5400  case 87:
     5401
     5402/* Line 1806 of yacc.c  */
     5403#line 517 "parser.yy"
    54645404    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Neq ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54655405    break;
    54665406
    5467   case 88:
    5468 
    5469 /* Line 1806 of yacc.c  */
    5470 #line 516 "parser.yy"
     5407  case 89:
     5408
     5409/* Line 1806 of yacc.c  */
     5410#line 523 "parser.yy"
    54715411    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::BitAnd ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54725412    break;
    54735413
    5474   case 90:
    5475 
    5476 /* Line 1806 of yacc.c  */
    5477 #line 522 "parser.yy"
     5414  case 91:
     5415
     5416/* Line 1806 of yacc.c  */
     5417#line 529 "parser.yy"
    54785418    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Xor ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54795419    break;
    54805420
    5481   case 92:
    5482 
    5483 /* Line 1806 of yacc.c  */
    5484 #line 528 "parser.yy"
     5421  case 93:
     5422
     5423/* Line 1806 of yacc.c  */
     5424#line 535 "parser.yy"
    54855425    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::BitOr ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54865426    break;
    54875427
    5488   case 94:
    5489 
    5490 /* Line 1806 of yacc.c  */
    5491 #line 534 "parser.yy"
     5428  case 95:
     5429
     5430/* Line 1806 of yacc.c  */
     5431#line 541 "parser.yy"
    54925432    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::And ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    54935433    break;
    54945434
    5495   case 96:
    5496 
    5497 /* Line 1806 of yacc.c  */
    5498 #line 540 "parser.yy"
     5435  case 97:
     5436
     5437/* Line 1806 of yacc.c  */
     5438#line 547 "parser.yy"
    54995439    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Or ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55005440    break;
    55015441
    5502   case 98:
    5503 
    5504 /* Line 1806 of yacc.c  */
    5505 #line 546 "parser.yy"
     5442  case 99:
     5443
     5444/* Line 1806 of yacc.c  */
     5445#line 553 "parser.yy"
    55065446    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    55075447    break;
    55085448
    5509   case 99:
    5510 
    5511 /* Line 1806 of yacc.c  */
    5512 #line 548 "parser.yy"
     5449  case 100:
     5450
     5451/* Line 1806 of yacc.c  */
     5452#line 555 "parser.yy"
    55135453    { (yyval.en)=new CompositeExprNode( new OperatorNode( OperatorNode::NCond ), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    55145454    break;
    55155455
    5516   case 100:
    5517 
    5518 /* Line 1806 of yacc.c  */
    5519 #line 550 "parser.yy"
     5456  case 101:
     5457
     5458/* Line 1806 of yacc.c  */
     5459#line 557 "parser.yy"
    55205460    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Cond ), (ExpressionNode *)mkList( (*(yyvsp[(1) - (5)].en), *(yyvsp[(3) - (5)].en), *(yyvsp[(5) - (5)].en) ) ) ); }
    55215461    break;
    55225462
    5523   case 103:
    5524 
    5525 /* Line 1806 of yacc.c  */
    5526 #line 561 "parser.yy"
     5463  case 104:
     5464
     5465/* Line 1806 of yacc.c  */
     5466#line 568 "parser.yy"
    55275467    { (yyval.en) =new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55285468    break;
    55295469
    5530   case 104:
    5531 
    5532 /* Line 1806 of yacc.c  */
    5533 #line 563 "parser.yy"
     5470  case 105:
     5471
     5472/* Line 1806 of yacc.c  */
     5473#line 570 "parser.yy"
    55345474    { (yyval.en) =new CompositeExprNode( (yyvsp[(2) - (3)].en), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    55355475    break;
    55365476
    5537   case 105:
    5538 
    5539 /* Line 1806 of yacc.c  */
    5540 #line 565 "parser.yy"
     5477  case 106:
     5478
     5479/* Line 1806 of yacc.c  */
     5480#line 572 "parser.yy"
    55415481    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new CompositeExprNode( new OperatorNode( OperatorNode::Assign ), (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ); }
    55425482    break;
    55435483
    5544   case 106:
    5545 
    5546 /* Line 1806 of yacc.c  */
    5547 #line 570 "parser.yy"
     5484  case 107:
     5485
     5486/* Line 1806 of yacc.c  */
     5487#line 577 "parser.yy"
    55485488    { (yyval.en) = new NullExprNode; }
    55495489    break;
    55505490
    5551   case 108:
    5552 
    5553 /* Line 1806 of yacc.c  */
    5554 #line 578 "parser.yy"
     5491  case 109:
     5492
     5493/* Line 1806 of yacc.c  */
     5494#line 585 "parser.yy"
    55555495    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ) ); }
    55565496    break;
    55575497
    5558   case 109:
    5559 
    5560 /* Line 1806 of yacc.c  */
    5561 #line 580 "parser.yy"
     5498  case 110:
     5499
     5500/* Line 1806 of yacc.c  */
     5501#line 587 "parser.yy"
    55625502    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (yyvsp[(3) - (5)].en) ); }
    55635503    break;
    55645504
    5565   case 110:
    5566 
    5567 /* Line 1806 of yacc.c  */
    5568 #line 582 "parser.yy"
     5505  case 111:
     5506
     5507/* Line 1806 of yacc.c  */
     5508#line 589 "parser.yy"
    55695509    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(new NullExprNode)->set_link( (yyvsp[(4) - (6)].en) ) ); }
    55705510    break;
    55715511
    5572   case 111:
    5573 
    5574 /* Line 1806 of yacc.c  */
    5575 #line 584 "parser.yy"
     5512  case 112:
     5513
     5514/* Line 1806 of yacc.c  */
     5515#line 591 "parser.yy"
    55765516    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_link( flattenCommas( (yyvsp[(5) - (7)].en) ) ) ); }
    55775517    break;
    55785518
    5579   case 113:
    5580 
    5581 /* Line 1806 of yacc.c  */
    5582 #line 590 "parser.yy"
     5519  case 114:
     5520
     5521/* Line 1806 of yacc.c  */
     5522#line 597 "parser.yy"
    55835523    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    55845524    break;
    55855525
    5586   case 114:
    5587 
    5588 /* Line 1806 of yacc.c  */
    5589 #line 594 "parser.yy"
     5526  case 115:
     5527
     5528/* Line 1806 of yacc.c  */
     5529#line 601 "parser.yy"
    55905530    { (yyval.en) = new OperatorNode( OperatorNode::MulAssn ); }
    55915531    break;
    55925532
    5593   case 115:
    5594 
    5595 /* Line 1806 of yacc.c  */
    5596 #line 595 "parser.yy"
     5533  case 116:
     5534
     5535/* Line 1806 of yacc.c  */
     5536#line 602 "parser.yy"
    55975537    { (yyval.en) = new OperatorNode( OperatorNode::DivAssn ); }
    55985538    break;
    55995539
    5600   case 116:
    5601 
    5602 /* Line 1806 of yacc.c  */
    5603 #line 596 "parser.yy"
     5540  case 117:
     5541
     5542/* Line 1806 of yacc.c  */
     5543#line 603 "parser.yy"
    56045544    { (yyval.en) = new OperatorNode( OperatorNode::ModAssn ); }
    56055545    break;
    56065546
    5607   case 117:
    5608 
    5609 /* Line 1806 of yacc.c  */
    5610 #line 597 "parser.yy"
     5547  case 118:
     5548
     5549/* Line 1806 of yacc.c  */
     5550#line 604 "parser.yy"
    56115551    { (yyval.en) = new OperatorNode( OperatorNode::PlusAssn ); }
    56125552    break;
    56135553
    5614   case 118:
    5615 
    5616 /* Line 1806 of yacc.c  */
    5617 #line 598 "parser.yy"
     5554  case 119:
     5555
     5556/* Line 1806 of yacc.c  */
     5557#line 605 "parser.yy"
    56185558    { (yyval.en) = new OperatorNode( OperatorNode::MinusAssn ); }
    56195559    break;
    56205560
    5621   case 119:
    5622 
    5623 /* Line 1806 of yacc.c  */
    5624 #line 599 "parser.yy"
     5561  case 120:
     5562
     5563/* Line 1806 of yacc.c  */
     5564#line 606 "parser.yy"
    56255565    { (yyval.en) = new OperatorNode( OperatorNode::LSAssn ); }
    56265566    break;
    56275567
    5628   case 120:
    5629 
    5630 /* Line 1806 of yacc.c  */
    5631 #line 600 "parser.yy"
     5568  case 121:
     5569
     5570/* Line 1806 of yacc.c  */
     5571#line 607 "parser.yy"
    56325572    { (yyval.en) = new OperatorNode( OperatorNode::RSAssn ); }
    56335573    break;
    56345574
    5635   case 121:
    5636 
    5637 /* Line 1806 of yacc.c  */
    5638 #line 601 "parser.yy"
     5575  case 122:
     5576
     5577/* Line 1806 of yacc.c  */
     5578#line 608 "parser.yy"
    56395579    { (yyval.en) = new OperatorNode( OperatorNode::AndAssn ); }
    56405580    break;
    56415581
    5642   case 122:
    5643 
    5644 /* Line 1806 of yacc.c  */
    5645 #line 602 "parser.yy"
     5582  case 123:
     5583
     5584/* Line 1806 of yacc.c  */
     5585#line 609 "parser.yy"
    56465586    { (yyval.en) = new OperatorNode( OperatorNode::ERAssn ); }
    56475587    break;
    56485588
    5649   case 123:
    5650 
    5651 /* Line 1806 of yacc.c  */
    5652 #line 603 "parser.yy"
     5589  case 124:
     5590
     5591/* Line 1806 of yacc.c  */
     5592#line 610 "parser.yy"
    56535593    { (yyval.en) = new OperatorNode( OperatorNode::OrAssn ); }
    56545594    break;
    56555595
    5656   case 125:
    5657 
    5658 /* Line 1806 of yacc.c  */
    5659 #line 609 "parser.yy"
     5596  case 126:
     5597
     5598/* Line 1806 of yacc.c  */
     5599#line 616 "parser.yy"
    56605600    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Comma ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    56615601    break;
    56625602
    5663   case 126:
    5664 
    5665 /* Line 1806 of yacc.c  */
    5666 #line 614 "parser.yy"
     5603  case 127:
     5604
     5605/* Line 1806 of yacc.c  */
     5606#line 621 "parser.yy"
    56675607    { (yyval.en) = 0; }
    56685608    break;
    56695609
    5670   case 130:
    5671 
    5672 /* Line 1806 of yacc.c  */
    5673 #line 623 "parser.yy"
     5610  case 131:
     5611
     5612/* Line 1806 of yacc.c  */
     5613#line 630 "parser.yy"
    56745614    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
    56755615    break;
    56765616
    5677   case 136:
    5678 
    5679 /* Line 1806 of yacc.c  */
    5680 #line 633 "parser.yy"
     5617  case 137:
     5618
     5619/* Line 1806 of yacc.c  */
     5620#line 637 "parser.yy"
     5621    {
     5622                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
     5623                        (yyval.sn) = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
     5624                                (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), (yyvsp[(2) - (6)].en) ))->set_link( (yyvsp[(4) - (6)].en) ) ), 0 );
     5625                }
     5626    break;
     5627
     5628  case 138:
     5629
     5630/* Line 1806 of yacc.c  */
     5631#line 646 "parser.yy"
    56815632    {
    56825633                        (yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
     
    56845635    break;
    56855636
    5686   case 137:
    5687 
    5688 /* Line 1806 of yacc.c  */
    5689 #line 640 "parser.yy"
     5637  case 139:
     5638
     5639/* Line 1806 of yacc.c  */
     5640#line 653 "parser.yy"
    56905641    { (yyval.sn) = new CompoundStmtNode( (StatementNode *)0 ); }
    56915642    break;
    56925643
    5693   case 138:
    5694 
    5695 /* Line 1806 of yacc.c  */
    5696 #line 647 "parser.yy"
     5644  case 140:
     5645
     5646/* Line 1806 of yacc.c  */
     5647#line 660 "parser.yy"
    56975648    { (yyval.sn) = new CompoundStmtNode( (yyvsp[(5) - (7)].sn) ); }
    56985649    break;
    56995650
    5700   case 140:
    5701 
    5702 /* Line 1806 of yacc.c  */
    5703 #line 653 "parser.yy"
     5651  case 142:
     5652
     5653/* Line 1806 of yacc.c  */
     5654#line 666 "parser.yy"
    57045655    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
    57055656    break;
    57065657
    5707   case 141:
    5708 
    5709 /* Line 1806 of yacc.c  */
    5710 #line 658 "parser.yy"
     5658  case 143:
     5659
     5660/* Line 1806 of yacc.c  */
     5661#line 671 "parser.yy"
    57115662    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57125663    break;
    57135664
    5714   case 142:
    5715 
    5716 /* Line 1806 of yacc.c  */
    5717 #line 660 "parser.yy"
     5665  case 144:
     5666
     5667/* Line 1806 of yacc.c  */
     5668#line 673 "parser.yy"
    57185669    { (yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) ); }
    57195670    break;
    57205671
    5721   case 143:
    5722 
    5723 /* Line 1806 of yacc.c  */
    5724 #line 662 "parser.yy"
     5672  case 145:
     5673
     5674/* Line 1806 of yacc.c  */
     5675#line 675 "parser.yy"
    57255676    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
    57265677    break;
    57275678
    5728   case 146:
    5729 
    5730 /* Line 1806 of yacc.c  */
    5731 #line 669 "parser.yy"
     5679  case 148:
     5680
     5681/* Line 1806 of yacc.c  */
     5682#line 682 "parser.yy"
    57325683    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
    57335684    break;
    57345685
    5735   case 147:
    5736 
    5737 /* Line 1806 of yacc.c  */
    5738 #line 674 "parser.yy"
     5686  case 149:
     5687
     5688/* Line 1806 of yacc.c  */
     5689#line 687 "parser.yy"
    57395690    { (yyval.sn) = new StatementNode( StatementNode::Exp, (yyvsp[(1) - (2)].en), 0 ); }
    57405691    break;
    57415692
    5742   case 148:
    5743 
    5744 /* Line 1806 of yacc.c  */
    5745 #line 680 "parser.yy"
     5693  case 150:
     5694
     5695/* Line 1806 of yacc.c  */
     5696#line 693 "parser.yy"
    57465697    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57475698    break;
    57485699
    5749   case 149:
    5750 
    5751 /* Line 1806 of yacc.c  */
    5752 #line 682 "parser.yy"
     5700  case 151:
     5701
     5702/* Line 1806 of yacc.c  */
     5703#line 695 "parser.yy"
    57535704    { (yyval.sn) = new StatementNode( StatementNode::If, (yyvsp[(3) - (7)].en), (StatementNode *)mkList((*(yyvsp[(5) - (7)].sn), *(yyvsp[(7) - (7)].sn) )) ); }
    57545705    break;
    57555706
    5756   case 150:
    5757 
    5758 /* Line 1806 of yacc.c  */
    5759 #line 684 "parser.yy"
     5707  case 152:
     5708
     5709/* Line 1806 of yacc.c  */
     5710#line 697 "parser.yy"
    57605711    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57615712    break;
    57625713
    5763   case 151:
    5764 
    5765 /* Line 1806 of yacc.c  */
    5766 #line 686 "parser.yy"
     5714  case 153:
     5715
     5716/* Line 1806 of yacc.c  */
     5717#line 699 "parser.yy"
    57675718    { (yyval.sn) = new StatementNode( StatementNode::Switch, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); /* xxx */ }
    57685719    break;
    57695720
    5770   case 152:
    5771 
    5772 /* Line 1806 of yacc.c  */
    5773 #line 691 "parser.yy"
     5721  case 154:
     5722
     5723/* Line 1806 of yacc.c  */
     5724#line 704 "parser.yy"
    57745725    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    57755726    break;
    57765727
    5777   case 153:
    5778 
    5779 /* Line 1806 of yacc.c  */
    5780 #line 693 "parser.yy"
     5728  case 155:
     5729
     5730/* Line 1806 of yacc.c  */
     5731#line 706 "parser.yy"
    57815732    { (yyval.sn) = new StatementNode( StatementNode::Choose, (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ); }
    57825733    break;
    57835734
    5784   case 154:
    5785 
    5786 /* Line 1806 of yacc.c  */
    5787 #line 700 "parser.yy"
     5735  case 156:
     5736
     5737/* Line 1806 of yacc.c  */
     5738#line 713 "parser.yy"
    57885739    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    57895740    break;
    57905741
    5791   case 155:
    5792 
    5793 /* Line 1806 of yacc.c  */
    5794 #line 702 "parser.yy"
     5742  case 157:
     5743
     5744/* Line 1806 of yacc.c  */
     5745#line 715 "parser.yy"
    57955746    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    57965747    break;
    57975748
    5798   case 158:
    5799 
    5800 /* Line 1806 of yacc.c  */
    5801 #line 709 "parser.yy"
     5749  case 160:
     5750
     5751/* Line 1806 of yacc.c  */
     5752#line 722 "parser.yy"
    58025753    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::TupleC ), (ExpressionNode *)(tupleContents( (yyvsp[(1) - (3)].en) ))->set_link( (yyvsp[(3) - (3)].en) ) ); }
    58035754    break;
    58045755
    5805   case 159:
    5806 
    5807 /* Line 1806 of yacc.c  */
    5808 #line 713 "parser.yy"
     5756  case 161:
     5757
     5758/* Line 1806 of yacc.c  */
     5759#line 726 "parser.yy"
    58095760    { (yyval.sn) = new StatementNode( StatementNode::Case, (yyvsp[(2) - (3)].en), 0 ); }
    58105761    break;
    58115762
    5812   case 160:
    5813 
    5814 /* Line 1806 of yacc.c  */
    5815 #line 714 "parser.yy"
     5763  case 162:
     5764
     5765/* Line 1806 of yacc.c  */
     5766#line 727 "parser.yy"
    58165767    { (yyval.sn) = new StatementNode( StatementNode::Default ); }
    58175768    break;
    58185769
    5819   case 162:
    5820 
    5821 /* Line 1806 of yacc.c  */
    5822 #line 720 "parser.yy"
     5770  case 164:
     5771
     5772/* Line 1806 of yacc.c  */
     5773#line 733 "parser.yy"
    58235774    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_link( (yyvsp[(2) - (2)].sn) )); }
    58245775    break;
    58255776
    5826   case 163:
    5827 
    5828 /* Line 1806 of yacc.c  */
    5829 #line 724 "parser.yy"
     5777  case 165:
     5778
     5779/* Line 1806 of yacc.c  */
     5780#line 737 "parser.yy"
    58305781    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    58315782    break;
    58325783
    5833   case 164:
    5834 
    5835 /* Line 1806 of yacc.c  */
    5836 #line 729 "parser.yy"
    5837     { (yyval.sn) = 0; }
    5838     break;
    5839 
    58405784  case 166:
    5841 
    5842 /* Line 1806 of yacc.c  */
    5843 #line 735 "parser.yy"
    5844     { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
    5845     break;
    5846 
    5847   case 167:
    5848 
    5849 /* Line 1806 of yacc.c  */
    5850 #line 737 "parser.yy"
    5851     { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    5852     break;
    5853 
    5854   case 168:
    58555785
    58565786/* Line 1806 of yacc.c  */
     
    58595789    break;
    58605790
    5861   case 170:
     5791  case 168:
    58625792
    58635793/* Line 1806 of yacc.c  */
     
    58665796    break;
    58675797
    5868   case 171:
     5798  case 169:
    58695799
    58705800/* Line 1806 of yacc.c  */
    58715801#line 750 "parser.yy"
     5802    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
     5803    break;
     5804
     5805  case 170:
     5806
     5807/* Line 1806 of yacc.c  */
     5808#line 755 "parser.yy"
     5809    { (yyval.sn) = 0; }
     5810    break;
     5811
     5812  case 172:
     5813
     5814/* Line 1806 of yacc.c  */
     5815#line 761 "parser.yy"
     5816    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
     5817    break;
     5818
     5819  case 173:
     5820
     5821/* Line 1806 of yacc.c  */
     5822#line 763 "parser.yy"
    58725823    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].sn) ))); }
    58735824    break;
    58745825
    5875   case 172:
    5876 
    5877 /* Line 1806 of yacc.c  */
    5878 #line 752 "parser.yy"
     5826  case 174:
     5827
     5828/* Line 1806 of yacc.c  */
     5829#line 765 "parser.yy"
    58795830    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_link( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
    58805831    break;
    58815832
    5882   case 173:
    5883 
    5884 /* Line 1806 of yacc.c  */
    5885 #line 754 "parser.yy"
     5833  case 175:
     5834
     5835/* Line 1806 of yacc.c  */
     5836#line 767 "parser.yy"
    58865837    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_link( (yyvsp[(2) - (4)].sn)->append_last_case((StatementNode *)mkList((*(yyvsp[(3) - (4)].sn),*(yyvsp[(4) - (4)].sn) ))))); }
    58875838    break;
    58885839
    5889   case 174:
    5890 
    5891 /* Line 1806 of yacc.c  */
    5892 #line 759 "parser.yy"
     5840  case 176:
     5841
     5842/* Line 1806 of yacc.c  */
     5843#line 772 "parser.yy"
    58935844    { (yyval.sn) = 0; }
    58945845    break;
    58955846
    5896   case 176:
    5897 
    5898 /* Line 1806 of yacc.c  */
    5899 #line 764 "parser.yy"
     5847  case 178:
     5848
     5849/* Line 1806 of yacc.c  */
     5850#line 777 "parser.yy"
    59005851    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    59015852    break;
    59025853
    5903   case 177:
    5904 
    5905 /* Line 1806 of yacc.c  */
    5906 #line 765 "parser.yy"
     5854  case 179:
     5855
     5856/* Line 1806 of yacc.c  */
     5857#line 778 "parser.yy"
    59075858    { (yyval.sn) = new StatementNode( StatementNode::Fallthru ); }
    59085859    break;
    59095860
    5910   case 178:
    5911 
    5912 /* Line 1806 of yacc.c  */
    5913 #line 770 "parser.yy"
     5861  case 180:
     5862
     5863/* Line 1806 of yacc.c  */
     5864#line 783 "parser.yy"
    59145865    { (yyval.sn) = new StatementNode( StatementNode::While, (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ); }
    59155866    break;
    59165867
    5917   case 179:
    5918 
    5919 /* Line 1806 of yacc.c  */
    5920 #line 772 "parser.yy"
     5868  case 181:
     5869
     5870/* Line 1806 of yacc.c  */
     5871#line 785 "parser.yy"
    59215872    { (yyval.sn) = new StatementNode( StatementNode::Do, (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn) ); }
    59225873    break;
    59235874
    5924   case 180:
    5925 
    5926 /* Line 1806 of yacc.c  */
    5927 #line 774 "parser.yy"
     5875  case 182:
     5876
     5877/* Line 1806 of yacc.c  */
     5878#line 787 "parser.yy"
    59285879    { (yyval.sn) = new StatementNode( StatementNode::For, (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].sn) ); }
    59295880    break;
    59305881
    5931   case 181:
    5932 
    5933 /* Line 1806 of yacc.c  */
    5934 #line 779 "parser.yy"
     5882  case 183:
     5883
     5884/* Line 1806 of yacc.c  */
     5885#line 792 "parser.yy"
    59355886    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
    59365887    break;
    59375888
    5938   case 182:
    5939 
    5940 /* Line 1806 of yacc.c  */
    5941 #line 781 "parser.yy"
     5889  case 184:
     5890
     5891/* Line 1806 of yacc.c  */
     5892#line 794 "parser.yy"
    59425893    { (yyval.en) = new ForCtlExprNode( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
    59435894    break;
    59445895
    5945   case 183:
    5946 
    5947 /* Line 1806 of yacc.c  */
    5948 #line 786 "parser.yy"
     5896  case 185:
     5897
     5898/* Line 1806 of yacc.c  */
     5899#line 799 "parser.yy"
    59495900    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(2) - (3)].tok) ); }
    59505901    break;
    59515902
    5952   case 184:
    5953 
    5954 /* Line 1806 of yacc.c  */
    5955 #line 790 "parser.yy"
     5903  case 186:
     5904
     5905/* Line 1806 of yacc.c  */
     5906#line 803 "parser.yy"
    59565907    { (yyval.sn) = new StatementNode( StatementNode::Goto, (yyvsp[(3) - (4)].en) ); }
    59575908    break;
    59585909
    5959   case 185:
    5960 
    5961 /* Line 1806 of yacc.c  */
    5962 #line 793 "parser.yy"
     5910  case 187:
     5911
     5912/* Line 1806 of yacc.c  */
     5913#line 806 "parser.yy"
    59635914    { (yyval.sn) = new StatementNode( StatementNode::Continue ); }
    59645915    break;
    59655916
    5966   case 186:
    5967 
    5968 /* Line 1806 of yacc.c  */
    5969 #line 797 "parser.yy"
     5917  case 188:
     5918
     5919/* Line 1806 of yacc.c  */
     5920#line 810 "parser.yy"
    59705921    { (yyval.sn) = new StatementNode( StatementNode::Continue, (yyvsp[(2) - (3)].tok) ); }
    59715922    break;
    59725923
    5973   case 187:
    5974 
    5975 /* Line 1806 of yacc.c  */
    5976 #line 800 "parser.yy"
     5924  case 189:
     5925
     5926/* Line 1806 of yacc.c  */
     5927#line 813 "parser.yy"
    59775928    { (yyval.sn) = new StatementNode( StatementNode::Break ); }
    59785929    break;
    59795930
    5980   case 188:
    5981 
    5982 /* Line 1806 of yacc.c  */
    5983 #line 804 "parser.yy"
     5931  case 190:
     5932
     5933/* Line 1806 of yacc.c  */
     5934#line 817 "parser.yy"
    59845935    { (yyval.sn) = new StatementNode( StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
    59855936    break;
    59865937
    5987   case 189:
    5988 
    5989 /* Line 1806 of yacc.c  */
    5990 #line 806 "parser.yy"
     5938  case 191:
     5939
     5940/* Line 1806 of yacc.c  */
     5941#line 819 "parser.yy"
    59915942    { (yyval.sn) = new StatementNode( StatementNode::Return, (yyvsp[(2) - (3)].en), 0 ); }
    59925943    break;
    59935944
    5994   case 190:
    5995 
    5996 /* Line 1806 of yacc.c  */
    5997 #line 808 "parser.yy"
     5945  case 192:
     5946
     5947/* Line 1806 of yacc.c  */
     5948#line 821 "parser.yy"
    59985949    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
    59995950    break;
    60005951
    6001   case 191:
    6002 
    6003 /* Line 1806 of yacc.c  */
    6004 #line 810 "parser.yy"
    6005     { (yyval.sn) = new StatementNode( StatementNode::Throw ); }
    6006     break;
    6007 
    6008   case 192:
    6009 
    6010 /* Line 1806 of yacc.c  */
    6011 #line 815 "parser.yy"
     5952  case 193:
     5953
     5954/* Line 1806 of yacc.c  */
     5955#line 825 "parser.yy"
     5956    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (3)].en), 0 ); }
     5957    break;
     5958
     5959  case 194:
     5960
     5961/* Line 1806 of yacc.c  */
     5962#line 827 "parser.yy"
     5963    { (yyval.sn) = new StatementNode( StatementNode::Throw, (yyvsp[(2) - (5)].en), 0 ); }
     5964    break;
     5965
     5966  case 195:
     5967
     5968/* Line 1806 of yacc.c  */
     5969#line 834 "parser.yy"
    60125970    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60135971    break;
    60145972
    6015   case 193:
    6016 
    6017 /* Line 1806 of yacc.c  */
    6018 #line 817 "parser.yy"
     5973  case 196:
     5974
     5975/* Line 1806 of yacc.c  */
     5976#line 836 "parser.yy"
    60195977    { (yyval.sn) = new StatementNode( StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn) )))); }
    60205978    break;
    60215979
    6022   case 194:
    6023 
    6024 /* Line 1806 of yacc.c  */
    6025 #line 819 "parser.yy"
     5980  case 197:
     5981
     5982/* Line 1806 of yacc.c  */
     5983#line 838 "parser.yy"
    60265984    {
    60275985                        (yyvsp[(3) - (4)].pn)->set_link( (yyvsp[(4) - (4)].pn) );
     
    60305988    break;
    60315989
    6032   case 196:
    6033 
    6034 /* Line 1806 of yacc.c  */
    6035 #line 830 "parser.yy"
     5990  case 199:
     5991
     5992/* Line 1806 of yacc.c  */
     5993#line 849 "parser.yy"
    60365994    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
    60375995    break;
    60385996
    6039   case 197:
    6040 
    6041 /* Line 1806 of yacc.c  */
    6042 #line 832 "parser.yy"
     5997  case 200:
     5998
     5999/* Line 1806 of yacc.c  */
     6000#line 851 "parser.yy"
    60436001    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
    60446002    break;
    60456003
    6046   case 198:
    6047 
    6048 /* Line 1806 of yacc.c  */
    6049 #line 837 "parser.yy"
     6004  case 201:
     6005
     6006/* Line 1806 of yacc.c  */
     6007#line 853 "parser.yy"
     6008    { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     6009    break;
     6010
     6011  case 202:
     6012
     6013/* Line 1806 of yacc.c  */
     6014#line 855 "parser.yy"
     6015    { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     6016    break;
     6017
     6018  case 203:
     6019
     6020/* Line 1806 of yacc.c  */
     6021#line 860 "parser.yy"
    60506022    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
    60516023    break;
    60526024
    6053   case 199:
    6054 
    6055 /* Line 1806 of yacc.c  */
    6056 #line 839 "parser.yy"
     6025  case 204:
     6026
     6027/* Line 1806 of yacc.c  */
     6028#line 862 "parser.yy"
    60576029    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
    60586030    break;
    60596031
    6060   case 200:
    6061 
    6062 /* Line 1806 of yacc.c  */
    6063 #line 844 "parser.yy"
     6032  case 205:
     6033
     6034/* Line 1806 of yacc.c  */
     6035#line 864 "parser.yy"
     6036    { (yyval.pn) = StatementNode::newCatchStmt( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ); }
     6037    break;
     6038
     6039  case 206:
     6040
     6041/* Line 1806 of yacc.c  */
     6042#line 866 "parser.yy"
     6043    { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ); }
     6044    break;
     6045
     6046  case 207:
     6047
     6048/* Line 1806 of yacc.c  */
     6049#line 871 "parser.yy"
    60646050    {
    60656051                        (yyval.pn) = new StatementNode( StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn) );
     
    60686054    break;
    60696055
    6070   case 202:
    6071 
    6072 /* Line 1806 of yacc.c  */
    6073 #line 858 "parser.yy"
     6056  case 209:
     6057
     6058/* Line 1806 of yacc.c  */
     6059#line 885 "parser.yy"
    60746060    {
    60756061                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60786064    break;
    60796065
    6080   case 203:
    6081 
    6082 /* Line 1806 of yacc.c  */
    6083 #line 863 "parser.yy"
     6066  case 210:
     6067
     6068/* Line 1806 of yacc.c  */
     6069#line 890 "parser.yy"
    60846070    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    60856071    break;
    60866072
    6087   case 204:
    6088 
    6089 /* Line 1806 of yacc.c  */
    6090 #line 865 "parser.yy"
     6073  case 211:
     6074
     6075/* Line 1806 of yacc.c  */
     6076#line 892 "parser.yy"
    60916077    {
    60926078                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    60956081    break;
    60966082
    6097   case 206:
    6098 
    6099 /* Line 1806 of yacc.c  */
    6100 #line 874 "parser.yy"
     6083  case 213:
     6084
     6085/* Line 1806 of yacc.c  */
     6086#line 901 "parser.yy"
    61016087    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ); }
    61026088    break;
    61036089
    6104   case 207:
    6105 
    6106 /* Line 1806 of yacc.c  */
    6107 #line 876 "parser.yy"
     6090  case 214:
     6091
     6092/* Line 1806 of yacc.c  */
     6093#line 903 "parser.yy"
    61086094    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ); }
    61096095    break;
    61106096
    6111   case 208:
    6112 
    6113 /* Line 1806 of yacc.c  */
    6114 #line 878 "parser.yy"
     6097  case 215:
     6098
     6099/* Line 1806 of yacc.c  */
     6100#line 905 "parser.yy"
    61156101    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ); }
    61166102    break;
    61176103
    6118   case 209:
    6119 
    6120 /* Line 1806 of yacc.c  */
    6121 #line 880 "parser.yy"
     6104  case 216:
     6105
     6106/* Line 1806 of yacc.c  */
     6107#line 907 "parser.yy"
    61226108    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].constant) ); }
    61236109    break;
    61246110
    6125   case 210:
    6126 
    6127 /* Line 1806 of yacc.c  */
    6128 #line 882 "parser.yy"
     6111  case 217:
     6112
     6113/* Line 1806 of yacc.c  */
     6114#line 909 "parser.yy"
    61296115    { (yyval.sn) = new AsmStmtNode( StatementNode::Asm, (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].constant), (yyvsp[(12) - (14)].label) ); }
    61306116    break;
    61316117
    6132   case 211:
    6133 
    6134 /* Line 1806 of yacc.c  */
    6135 #line 887 "parser.yy"
     6118  case 218:
     6119
     6120/* Line 1806 of yacc.c  */
     6121#line 914 "parser.yy"
    61366122    { (yyval.flag) = false; }
    61376123    break;
    61386124
    6139   case 212:
    6140 
    6141 /* Line 1806 of yacc.c  */
    6142 #line 889 "parser.yy"
     6125  case 219:
     6126
     6127/* Line 1806 of yacc.c  */
     6128#line 916 "parser.yy"
    61436129    { (yyval.flag) = true; }
    61446130    break;
    61456131
    6146   case 213:
    6147 
    6148 /* Line 1806 of yacc.c  */
    6149 #line 894 "parser.yy"
     6132  case 220:
     6133
     6134/* Line 1806 of yacc.c  */
     6135#line 921 "parser.yy"
    61506136    { (yyval.en) = 0; }
    61516137    break;
    61526138
    6153   case 216:
    6154 
    6155 /* Line 1806 of yacc.c  */
    6156 #line 901 "parser.yy"
     6139  case 223:
     6140
     6141/* Line 1806 of yacc.c  */
     6142#line 928 "parser.yy"
    61576143    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) ); }
    61586144    break;
    61596145
    6160   case 217:
    6161 
    6162 /* Line 1806 of yacc.c  */
    6163 #line 906 "parser.yy"
     6146  case 224:
     6147
     6148/* Line 1806 of yacc.c  */
     6149#line 933 "parser.yy"
    61646150    { (yyval.en) = new AsmExprNode( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ); }
    61656151    break;
    61666152
    6167   case 218:
    6168 
    6169 /* Line 1806 of yacc.c  */
    6170 #line 908 "parser.yy"
     6153  case 225:
     6154
     6155/* Line 1806 of yacc.c  */
     6156#line 935 "parser.yy"
    61716157    { (yyval.en) = new AsmExprNode( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ); }
    61726158    break;
    61736159
    6174   case 219:
    6175 
    6176 /* Line 1806 of yacc.c  */
    6177 #line 913 "parser.yy"
     6160  case 226:
     6161
     6162/* Line 1806 of yacc.c  */
     6163#line 940 "parser.yy"
    61786164    { (yyval.constant) = 0; }
    61796165    break;
    61806166
    6181   case 220:
    6182 
    6183 /* Line 1806 of yacc.c  */
    6184 #line 915 "parser.yy"
     6167  case 227:
     6168
     6169/* Line 1806 of yacc.c  */
     6170#line 942 "parser.yy"
    61856171    { (yyval.constant) = (yyvsp[(1) - (1)].constant); }
    61866172    break;
    61876173
    6188   case 221:
    6189 
    6190 /* Line 1806 of yacc.c  */
    6191 #line 917 "parser.yy"
     6174  case 228:
     6175
     6176/* Line 1806 of yacc.c  */
     6177#line 944 "parser.yy"
    61926178    { (yyval.constant) = (ConstantNode *)(yyvsp[(1) - (3)].constant)->set_link( (yyvsp[(3) - (3)].constant) ); }
    61936179    break;
    61946180
    6195   case 222:
    6196 
    6197 /* Line 1806 of yacc.c  */
    6198 #line 922 "parser.yy"
     6181  case 229:
     6182
     6183/* Line 1806 of yacc.c  */
     6184#line 949 "parser.yy"
    61996185    { (yyval.label) = new LabelNode(); (yyval.label)->append_label( (yyvsp[(1) - (1)].tok) ); }
    62006186    break;
    62016187
    6202   case 223:
    6203 
    6204 /* Line 1806 of yacc.c  */
    6205 #line 924 "parser.yy"
     6188  case 230:
     6189
     6190/* Line 1806 of yacc.c  */
     6191#line 951 "parser.yy"
    62066192    { (yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->append_label( (yyvsp[(3) - (3)].tok) ); }
    62076193    break;
    62086194
    6209   case 224:
    6210 
    6211 /* Line 1806 of yacc.c  */
    6212 #line 931 "parser.yy"
     6195  case 231:
     6196
     6197/* Line 1806 of yacc.c  */
     6198#line 958 "parser.yy"
    62136199    { (yyval.decl) = 0; }
    62146200    break;
    62156201
    6216   case 227:
    6217 
    6218 /* Line 1806 of yacc.c  */
    6219 #line 938 "parser.yy"
     6202  case 234:
     6203
     6204/* Line 1806 of yacc.c  */
     6205#line 965 "parser.yy"
    62206206    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62216207    break;
    62226208
    6223   case 228:
    6224 
    6225 /* Line 1806 of yacc.c  */
    6226 #line 943 "parser.yy"
     6209  case 235:
     6210
     6211/* Line 1806 of yacc.c  */
     6212#line 970 "parser.yy"
    62276213    { (yyval.decl) = 0; }
    62286214    break;
    62296215
    6230   case 231:
    6231 
    6232 /* Line 1806 of yacc.c  */
    6233 #line 950 "parser.yy"
     6216  case 238:
     6217
     6218/* Line 1806 of yacc.c  */
     6219#line 977 "parser.yy"
    62346220    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    62356221    break;
    62366222
    6237   case 236:
    6238 
    6239 /* Line 1806 of yacc.c  */
    6240 #line 964 "parser.yy"
     6223  case 243:
     6224
     6225/* Line 1806 of yacc.c  */
     6226#line 991 "parser.yy"
    62416227    {}
    62426228    break;
    62436229
    6244   case 237:
    6245 
    6246 /* Line 1806 of yacc.c  */
    6247 #line 965 "parser.yy"
     6230  case 244:
     6231
     6232/* Line 1806 of yacc.c  */
     6233#line 992 "parser.yy"
    62486234    {}
    62496235    break;
    62506236
    6251   case 245:
    6252 
    6253 /* Line 1806 of yacc.c  */
    6254 #line 994 "parser.yy"
     6237  case 252:
     6238
     6239/* Line 1806 of yacc.c  */
     6240#line 1021 "parser.yy"
    62556241    {
    62566242                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62596245    break;
    62606246
    6261   case 246:
    6262 
    6263 /* Line 1806 of yacc.c  */
    6264 #line 1001 "parser.yy"
     6247  case 253:
     6248
     6249/* Line 1806 of yacc.c  */
     6250#line 1028 "parser.yy"
    62656251    {
    62666252                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    62696255    break;
    62706256
    6271   case 247:
    6272 
    6273 /* Line 1806 of yacc.c  */
    6274 #line 1006 "parser.yy"
     6257  case 254:
     6258
     6259/* Line 1806 of yacc.c  */
     6260#line 1033 "parser.yy"
    62756261    {
    62766262                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
     
    62796265    break;
    62806266
    6281   case 248:
    6282 
    6283 /* Line 1806 of yacc.c  */
    6284 #line 1016 "parser.yy"
     6267  case 255:
     6268
     6269/* Line 1806 of yacc.c  */
     6270#line 1043 "parser.yy"
    62856271    {
    62866272                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62896275    break;
    62906276
    6291   case 249:
    6292 
    6293 /* Line 1806 of yacc.c  */
    6294 #line 1021 "parser.yy"
     6277  case 256:
     6278
     6279/* Line 1806 of yacc.c  */
     6280#line 1048 "parser.yy"
    62956281    {
    62966282                        typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
     
    62996285    break;
    63006286
    6301   case 250:
    6302 
    6303 /* Line 1806 of yacc.c  */
    6304 #line 1026 "parser.yy"
     6287  case 257:
     6288
     6289/* Line 1806 of yacc.c  */
     6290#line 1053 "parser.yy"
    63056291    {
    63066292                        typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
     
    63096295    break;
    63106296
    6311   case 251:
    6312 
    6313 /* Line 1806 of yacc.c  */
    6314 #line 1034 "parser.yy"
     6297  case 258:
     6298
     6299/* Line 1806 of yacc.c  */
     6300#line 1061 "parser.yy"
    63156301    {
    63166302                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63196305    break;
    63206306
    6321   case 252:
    6322 
    6323 /* Line 1806 of yacc.c  */
    6324 #line 1039 "parser.yy"
     6307  case 259:
     6308
     6309/* Line 1806 of yacc.c  */
     6310#line 1066 "parser.yy"
    63256311    {
    63266312                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63296315    break;
    63306316
    6331   case 253:
    6332 
    6333 /* Line 1806 of yacc.c  */
    6334 #line 1044 "parser.yy"
     6317  case 260:
     6318
     6319/* Line 1806 of yacc.c  */
     6320#line 1071 "parser.yy"
    63356321    {
    63366322                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63396325    break;
    63406326
    6341   case 254:
    6342 
    6343 /* Line 1806 of yacc.c  */
    6344 #line 1049 "parser.yy"
     6327  case 261:
     6328
     6329/* Line 1806 of yacc.c  */
     6330#line 1076 "parser.yy"
    63456331    {
    63466332                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    63496335    break;
    63506336
    6351   case 255:
    6352 
    6353 /* Line 1806 of yacc.c  */
    6354 #line 1054 "parser.yy"
     6337  case 262:
     6338
     6339/* Line 1806 of yacc.c  */
     6340#line 1081 "parser.yy"
    63556341    {
    63566342                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    63596345    break;
    63606346
    6361   case 256:
    6362 
    6363 /* Line 1806 of yacc.c  */
    6364 #line 1062 "parser.yy"
     6347  case 263:
     6348
     6349/* Line 1806 of yacc.c  */
     6350#line 1089 "parser.yy"
    63656351    {
    63666352                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
     
    63686354    break;
    63696355
    6370   case 257:
    6371 
    6372 /* Line 1806 of yacc.c  */
    6373 #line 1085 "parser.yy"
     6356  case 264:
     6357
     6358/* Line 1806 of yacc.c  */
     6359#line 1112 "parser.yy"
    63746360    {
    63756361                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63776363    break;
    63786364
    6379   case 258:
    6380 
    6381 /* Line 1806 of yacc.c  */
    6382 #line 1089 "parser.yy"
     6365  case 265:
     6366
     6367/* Line 1806 of yacc.c  */
     6368#line 1116 "parser.yy"
    63836369    {
    63846370                        (yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
     
    63866372    break;
    63876373
    6388   case 259:
    6389 
    6390 /* Line 1806 of yacc.c  */
    6391 #line 1096 "parser.yy"
     6374  case 266:
     6375
     6376/* Line 1806 of yacc.c  */
     6377#line 1123 "parser.yy"
    63926378    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    63936379    break;
    63946380
    6395   case 260:
    6396 
    6397 /* Line 1806 of yacc.c  */
    6398 #line 1100 "parser.yy"
     6381  case 267:
     6382
     6383/* Line 1806 of yacc.c  */
     6384#line 1127 "parser.yy"
    63996385    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
    64006386    break;
    64016387
    6402   case 261:
    6403 
    6404 /* Line 1806 of yacc.c  */
    6405 #line 1105 "parser.yy"
     6388  case 268:
     6389
     6390/* Line 1806 of yacc.c  */
     6391#line 1132 "parser.yy"
    64066392    {
    64076393                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64106396    break;
    64116397
    6412   case 262:
    6413 
    6414 /* Line 1806 of yacc.c  */
    6415 #line 1110 "parser.yy"
     6398  case 269:
     6399
     6400/* Line 1806 of yacc.c  */
     6401#line 1137 "parser.yy"
    64166402    {
    64176403                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64206406    break;
    64216407
    6422   case 263:
    6423 
    6424 /* Line 1806 of yacc.c  */
    6425 #line 1115 "parser.yy"
     6408  case 270:
     6409
     6410/* Line 1806 of yacc.c  */
     6411#line 1142 "parser.yy"
    64266412    {
    64276413                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
     
    64306416    break;
    64316417
    6432   case 264:
    6433 
    6434 /* Line 1806 of yacc.c  */
    6435 #line 1126 "parser.yy"
     6418  case 271:
     6419
     6420/* Line 1806 of yacc.c  */
     6421#line 1153 "parser.yy"
    64366422    {
    64376423                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64406426    break;
    64416427
    6442   case 265:
    6443 
    6444 /* Line 1806 of yacc.c  */
    6445 #line 1131 "parser.yy"
     6428  case 272:
     6429
     6430/* Line 1806 of yacc.c  */
     6431#line 1158 "parser.yy"
    64466432    {
    64476433                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64506436    break;
    64516437
    6452   case 266:
    6453 
    6454 /* Line 1806 of yacc.c  */
    6455 #line 1136 "parser.yy"
     6438  case 273:
     6439
     6440/* Line 1806 of yacc.c  */
     6441#line 1163 "parser.yy"
    64566442    {
    64576443                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64606446    break;
    64616447
    6462   case 267:
    6463 
    6464 /* Line 1806 of yacc.c  */
    6465 #line 1141 "parser.yy"
     6448  case 274:
     6449
     6450/* Line 1806 of yacc.c  */
     6451#line 1168 "parser.yy"
    64666452    {
    64676453                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64706456    break;
    64716457
    6472   case 268:
    6473 
    6474 /* Line 1806 of yacc.c  */
    6475 #line 1146 "parser.yy"
     6458  case 275:
     6459
     6460/* Line 1806 of yacc.c  */
     6461#line 1173 "parser.yy"
    64766462    {
    64776463                        typedefTable.addToEnclosingScope( TypedefTable::TD );
     
    64806466    break;
    64816467
    6482   case 269:
    6483 
    6484 /* Line 1806 of yacc.c  */
    6485 #line 1155 "parser.yy"
     6468  case 276:
     6469
     6470/* Line 1806 of yacc.c  */
     6471#line 1182 "parser.yy"
    64866472    {
    64876473                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
     
    64906476    break;
    64916477
    6492   case 270:
    6493 
    6494 /* Line 1806 of yacc.c  */
    6495 #line 1160 "parser.yy"
     6478  case 277:
     6479
     6480/* Line 1806 of yacc.c  */
     6481#line 1187 "parser.yy"
    64966482    {
    64976483                        typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
     
    65006486    break;
    65016487
    6502   case 275:
    6503 
    6504 /* Line 1806 of yacc.c  */
    6505 #line 1177 "parser.yy"
     6488  case 282:
     6489
     6490/* Line 1806 of yacc.c  */
     6491#line 1204 "parser.yy"
    65066492    {
    65076493                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65106496    break;
    65116497
    6512   case 276:
    6513 
    6514 /* Line 1806 of yacc.c  */
    6515 #line 1182 "parser.yy"
     6498  case 283:
     6499
     6500/* Line 1806 of yacc.c  */
     6501#line 1209 "parser.yy"
    65166502    {
    65176503                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    65206506    break;
    65216507
    6522   case 285:
    6523 
    6524 /* Line 1806 of yacc.c  */
    6525 #line 1204 "parser.yy"
     6508  case 292:
     6509
     6510/* Line 1806 of yacc.c  */
     6511#line 1231 "parser.yy"
    65266512    { (yyval.decl) = 0; }
    65276513    break;
    65286514
    6529   case 288:
    6530 
    6531 /* Line 1806 of yacc.c  */
    6532 #line 1216 "parser.yy"
     6515  case 295:
     6516
     6517/* Line 1806 of yacc.c  */
     6518#line 1243 "parser.yy"
    65336519    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65346520    break;
    65356521
    6536   case 291:
    6537 
    6538 /* Line 1806 of yacc.c  */
    6539 #line 1227 "parser.yy"
     6522  case 298:
     6523
     6524/* Line 1806 of yacc.c  */
     6525#line 1254 "parser.yy"
    65406526    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
    65416527    break;
    65426528
    6543   case 292:
    6544 
    6545 /* Line 1806 of yacc.c  */
    6546 #line 1229 "parser.yy"
     6529  case 299:
     6530
     6531/* Line 1806 of yacc.c  */
     6532#line 1256 "parser.yy"
    65476533    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
    65486534    break;
    65496535
    6550   case 293:
    6551 
    6552 /* Line 1806 of yacc.c  */
    6553 #line 1231 "parser.yy"
     6536  case 300:
     6537
     6538/* Line 1806 of yacc.c  */
     6539#line 1258 "parser.yy"
    65546540    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
    65556541    break;
    65566542
    6557   case 294:
    6558 
    6559 /* Line 1806 of yacc.c  */
    6560 #line 1233 "parser.yy"
     6543  case 301:
     6544
     6545/* Line 1806 of yacc.c  */
     6546#line 1260 "parser.yy"
    65616547    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
    65626548    break;
    65636549
    6564   case 295:
    6565 
    6566 /* Line 1806 of yacc.c  */
    6567 #line 1235 "parser.yy"
     6550  case 302:
     6551
     6552/* Line 1806 of yacc.c  */
     6553#line 1262 "parser.yy"
    65686554    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
    65696555    break;
    65706556
    6571   case 296:
    6572 
    6573 /* Line 1806 of yacc.c  */
    6574 #line 1237 "parser.yy"
     6557  case 303:
     6558
     6559/* Line 1806 of yacc.c  */
     6560#line 1264 "parser.yy"
    65756561    {
    65766562                        typedefTable.enterScope();
     
    65786564    break;
    65796565
    6580   case 297:
    6581 
    6582 /* Line 1806 of yacc.c  */
    6583 #line 1241 "parser.yy"
     6566  case 304:
     6567
     6568/* Line 1806 of yacc.c  */
     6569#line 1268 "parser.yy"
    65846570    {
    65856571                        typedefTable.leaveScope();
     
    65886574    break;
    65896575
    6590   case 299:
    6591 
    6592 /* Line 1806 of yacc.c  */
    6593 #line 1250 "parser.yy"
     6576  case 306:
     6577
     6578/* Line 1806 of yacc.c  */
     6579#line 1277 "parser.yy"
    65946580    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    65956581    break;
    65966582
    6597   case 300:
    6598 
    6599 /* Line 1806 of yacc.c  */
    6600 #line 1252 "parser.yy"
     6583  case 307:
     6584
     6585/* Line 1806 of yacc.c  */
     6586#line 1279 "parser.yy"
    66016587    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    66026588    break;
    66036589
    6604   case 302:
    6605 
    6606 /* Line 1806 of yacc.c  */
    6607 #line 1263 "parser.yy"
     6590  case 309:
     6591
     6592/* Line 1806 of yacc.c  */
     6593#line 1290 "parser.yy"
    66086594    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    66096595    break;
    66106596
    6611   case 304:
    6612 
    6613 /* Line 1806 of yacc.c  */
    6614 #line 1272 "parser.yy"
     6597  case 311:
     6598
     6599/* Line 1806 of yacc.c  */
     6600#line 1299 "parser.yy"
    66156601    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
    66166602    break;
    66176603
    6618   case 305:
    6619 
    6620 /* Line 1806 of yacc.c  */
    6621 #line 1274 "parser.yy"
     6604  case 312:
     6605
     6606/* Line 1806 of yacc.c  */
     6607#line 1301 "parser.yy"
    66226608    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
    66236609    break;
    66246610
    6625   case 306:
    6626 
    6627 /* Line 1806 of yacc.c  */
    6628 #line 1276 "parser.yy"
     6611  case 313:
     6612
     6613/* Line 1806 of yacc.c  */
     6614#line 1303 "parser.yy"
    66296615    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
    66306616    break;
    66316617
    6632   case 307:
    6633 
    6634 /* Line 1806 of yacc.c  */
    6635 #line 1278 "parser.yy"
     6618  case 314:
     6619
     6620/* Line 1806 of yacc.c  */
     6621#line 1305 "parser.yy"
    66366622    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
    66376623    break;
    66386624
    6639   case 308:
    6640 
    6641 /* Line 1806 of yacc.c  */
    6642 #line 1280 "parser.yy"
     6625  case 315:
     6626
     6627/* Line 1806 of yacc.c  */
     6628#line 1307 "parser.yy"
    66436629    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
    66446630    break;
    66456631
    6646   case 309:
    6647 
    6648 /* Line 1806 of yacc.c  */
    6649 #line 1282 "parser.yy"
     6632  case 316:
     6633
     6634/* Line 1806 of yacc.c  */
     6635#line 1309 "parser.yy"
    66506636    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
    66516637    break;
    66526638
    6653   case 310:
    6654 
    6655 /* Line 1806 of yacc.c  */
    6656 #line 1284 "parser.yy"
     6639  case 317:
     6640
     6641/* Line 1806 of yacc.c  */
     6642#line 1311 "parser.yy"
    66576643    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Noreturn ); }
    66586644    break;
    66596645
    6660   case 311:
    6661 
    6662 /* Line 1806 of yacc.c  */
    6663 #line 1286 "parser.yy"
     6646  case 318:
     6647
     6648/* Line 1806 of yacc.c  */
     6649#line 1313 "parser.yy"
    66646650    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
    66656651    break;
    66666652
    6667   case 312:
    6668 
    6669 /* Line 1806 of yacc.c  */
    6670 #line 1291 "parser.yy"
     6653  case 319:
     6654
     6655/* Line 1806 of yacc.c  */
     6656#line 1318 "parser.yy"
    66716657    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
    66726658    break;
    66736659
    6674   case 313:
    6675 
    6676 /* Line 1806 of yacc.c  */
    6677 #line 1293 "parser.yy"
     6660  case 320:
     6661
     6662/* Line 1806 of yacc.c  */
     6663#line 1320 "parser.yy"
    66786664    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
    66796665    break;
    66806666
    6681   case 314:
    6682 
    6683 /* Line 1806 of yacc.c  */
    6684 #line 1295 "parser.yy"
     6667  case 321:
     6668
     6669/* Line 1806 of yacc.c  */
     6670#line 1322 "parser.yy"
    66856671    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
    66866672    break;
    66876673
    6688   case 315:
    6689 
    6690 /* Line 1806 of yacc.c  */
    6691 #line 1297 "parser.yy"
     6674  case 322:
     6675
     6676/* Line 1806 of yacc.c  */
     6677#line 1324 "parser.yy"
    66926678    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
    66936679    break;
    66946680
    6695   case 316:
    6696 
    6697 /* Line 1806 of yacc.c  */
    6698 #line 1299 "parser.yy"
     6681  case 323:
     6682
     6683/* Line 1806 of yacc.c  */
     6684#line 1326 "parser.yy"
    66996685    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
    67006686    break;
    67016687
    6702   case 317:
    6703 
    6704 /* Line 1806 of yacc.c  */
    6705 #line 1301 "parser.yy"
     6688  case 324:
     6689
     6690/* Line 1806 of yacc.c  */
     6691#line 1328 "parser.yy"
    67066692    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
    67076693    break;
    67086694
    6709   case 318:
    6710 
    6711 /* Line 1806 of yacc.c  */
    6712 #line 1303 "parser.yy"
     6695  case 325:
     6696
     6697/* Line 1806 of yacc.c  */
     6698#line 1330 "parser.yy"
    67136699    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
    67146700    break;
    67156701
    6716   case 319:
    6717 
    6718 /* Line 1806 of yacc.c  */
    6719 #line 1305 "parser.yy"
     6702  case 326:
     6703
     6704/* Line 1806 of yacc.c  */
     6705#line 1332 "parser.yy"
    67206706    { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
    67216707    break;
    67226708
    6723   case 320:
    6724 
    6725 /* Line 1806 of yacc.c  */
    6726 #line 1307 "parser.yy"
     6709  case 327:
     6710
     6711/* Line 1806 of yacc.c  */
     6712#line 1334 "parser.yy"
    67276713    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
    67286714    break;
    67296715
    6730   case 321:
    6731 
    6732 /* Line 1806 of yacc.c  */
    6733 #line 1309 "parser.yy"
     6716  case 328:
     6717
     6718/* Line 1806 of yacc.c  */
     6719#line 1336 "parser.yy"
    67346720    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
    67356721    break;
    67366722
    6737   case 322:
    6738 
    6739 /* Line 1806 of yacc.c  */
    6740 #line 1311 "parser.yy"
     6723  case 329:
     6724
     6725/* Line 1806 of yacc.c  */
     6726#line 1338 "parser.yy"
    67416727    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
    67426728    break;
    67436729
    6744   case 323:
    6745 
    6746 /* Line 1806 of yacc.c  */
    6747 #line 1313 "parser.yy"
     6730  case 330:
     6731
     6732/* Line 1806 of yacc.c  */
     6733#line 1340 "parser.yy"
    67486734    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
    67496735    break;
    67506736
    6751   case 325:
    6752 
    6753 /* Line 1806 of yacc.c  */
    6754 #line 1320 "parser.yy"
     6737  case 332:
     6738
     6739/* Line 1806 of yacc.c  */
     6740#line 1347 "parser.yy"
    67556741    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67566742    break;
    67576743
    6758   case 326:
    6759 
    6760 /* Line 1806 of yacc.c  */
    6761 #line 1322 "parser.yy"
     6744  case 333:
     6745
     6746/* Line 1806 of yacc.c  */
     6747#line 1349 "parser.yy"
    67626748    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67636749    break;
    67646750
    6765   case 327:
    6766 
    6767 /* Line 1806 of yacc.c  */
    6768 #line 1324 "parser.yy"
     6751  case 334:
     6752
     6753/* Line 1806 of yacc.c  */
     6754#line 1351 "parser.yy"
    67696755    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67706756    break;
    67716757
    6772   case 328:
    6773 
    6774 /* Line 1806 of yacc.c  */
    6775 #line 1326 "parser.yy"
     6758  case 335:
     6759
     6760/* Line 1806 of yacc.c  */
     6761#line 1353 "parser.yy"
    67766762    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
    67776763    break;
    67786764
    6779   case 330:
    6780 
    6781 /* Line 1806 of yacc.c  */
    6782 #line 1332 "parser.yy"
     6765  case 337:
     6766
     6767/* Line 1806 of yacc.c  */
     6768#line 1359 "parser.yy"
    67836769    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    67846770    break;
    67856771
    6786   case 332:
    6787 
    6788 /* Line 1806 of yacc.c  */
    6789 #line 1339 "parser.yy"
     6772  case 339:
     6773
     6774/* Line 1806 of yacc.c  */
     6775#line 1366 "parser.yy"
    67906776    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    67916777    break;
    67926778
    6793   case 333:
    6794 
    6795 /* Line 1806 of yacc.c  */
    6796 #line 1341 "parser.yy"
     6779  case 340:
     6780
     6781/* Line 1806 of yacc.c  */
     6782#line 1368 "parser.yy"
    67976783    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    67986784    break;
    67996785
    6800   case 334:
    6801 
    6802 /* Line 1806 of yacc.c  */
    6803 #line 1343 "parser.yy"
     6786  case 341:
     6787
     6788/* Line 1806 of yacc.c  */
     6789#line 1370 "parser.yy"
    68046790    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
    68056791    break;
    68066792
    6807   case 335:
    6808 
    6809 /* Line 1806 of yacc.c  */
    6810 #line 1348 "parser.yy"
     6793  case 342:
     6794
     6795/* Line 1806 of yacc.c  */
     6796#line 1375 "parser.yy"
    68116797    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
    68126798    break;
    68136799
    6814   case 336:
    6815 
    6816 /* Line 1806 of yacc.c  */
    6817 #line 1350 "parser.yy"
     6800  case 343:
     6801
     6802/* Line 1806 of yacc.c  */
     6803#line 1377 "parser.yy"
    68186804    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
    68196805    break;
    68206806
    6821   case 337:
    6822 
    6823 /* Line 1806 of yacc.c  */
    6824 #line 1352 "parser.yy"
     6807  case 344:
     6808
     6809/* Line 1806 of yacc.c  */
     6810#line 1379 "parser.yy"
    68256811    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
    68266812    break;
    68276813
    6828   case 338:
    6829 
    6830 /* Line 1806 of yacc.c  */
    6831 #line 1354 "parser.yy"
     6814  case 345:
     6815
     6816/* Line 1806 of yacc.c  */
     6817#line 1381 "parser.yy"
    68326818    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    68336819    break;
    68346820
    6835   case 340:
    6836 
    6837 /* Line 1806 of yacc.c  */
    6838 #line 1360 "parser.yy"
     6821  case 347:
     6822
     6823/* Line 1806 of yacc.c  */
     6824#line 1387 "parser.yy"
    68396825    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68406826    break;
    68416827
    6842   case 341:
    6843 
    6844 /* Line 1806 of yacc.c  */
    6845 #line 1362 "parser.yy"
     6828  case 348:
     6829
     6830/* Line 1806 of yacc.c  */
     6831#line 1389 "parser.yy"
    68466832    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68476833    break;
    68486834
    6849   case 342:
    6850 
    6851 /* Line 1806 of yacc.c  */
    6852 #line 1364 "parser.yy"
     6835  case 349:
     6836
     6837/* Line 1806 of yacc.c  */
     6838#line 1391 "parser.yy"
    68536839    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68546840    break;
    68556841
    6856   case 344:
    6857 
    6858 /* Line 1806 of yacc.c  */
    6859 #line 1370 "parser.yy"
     6842  case 351:
     6843
     6844/* Line 1806 of yacc.c  */
     6845#line 1397 "parser.yy"
    68606846    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68616847    break;
    68626848
    6863   case 345:
    6864 
    6865 /* Line 1806 of yacc.c  */
    6866 #line 1372 "parser.yy"
     6849  case 352:
     6850
     6851/* Line 1806 of yacc.c  */
     6852#line 1399 "parser.yy"
    68676853    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68686854    break;
    68696855
    6870   case 347:
    6871 
    6872 /* Line 1806 of yacc.c  */
    6873 #line 1378 "parser.yy"
     6856  case 354:
     6857
     6858/* Line 1806 of yacc.c  */
     6859#line 1405 "parser.yy"
    68746860    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    68756861    break;
    68766862
    6877   case 348:
    6878 
    6879 /* Line 1806 of yacc.c  */
    6880 #line 1380 "parser.yy"
     6863  case 355:
     6864
     6865/* Line 1806 of yacc.c  */
     6866#line 1407 "parser.yy"
    68816867    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    68826868    break;
    68836869
    6884   case 349:
    6885 
    6886 /* Line 1806 of yacc.c  */
    6887 #line 1382 "parser.yy"
     6870  case 356:
     6871
     6872/* Line 1806 of yacc.c  */
     6873#line 1409 "parser.yy"
    68886874    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    68896875    break;
    68906876
    6891   case 350:
    6892 
    6893 /* Line 1806 of yacc.c  */
    6894 #line 1387 "parser.yy"
     6877  case 357:
     6878
     6879/* Line 1806 of yacc.c  */
     6880#line 1414 "parser.yy"
    68956881    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
    68966882    break;
    68976883
    6898   case 351:
    6899 
    6900 /* Line 1806 of yacc.c  */
    6901 #line 1389 "parser.yy"
     6884  case 358:
     6885
     6886/* Line 1806 of yacc.c  */
     6887#line 1416 "parser.yy"
    69026888    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    69036889    break;
    69046890
    6905   case 352:
    6906 
    6907 /* Line 1806 of yacc.c  */
    6908 #line 1391 "parser.yy"
     6891  case 359:
     6892
     6893/* Line 1806 of yacc.c  */
     6894#line 1418 "parser.yy"
    69096895    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    69106896    break;
    69116897
    6912   case 355:
    6913 
    6914 /* Line 1806 of yacc.c  */
    6915 #line 1401 "parser.yy"
     6898  case 362:
     6899
     6900/* Line 1806 of yacc.c  */
     6901#line 1428 "parser.yy"
    69166902    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl) ); }
    69176903    break;
    69186904
    6919   case 356:
    6920 
    6921 /* Line 1806 of yacc.c  */
    6922 #line 1403 "parser.yy"
     6905  case 363:
     6906
     6907/* Line 1806 of yacc.c  */
     6908#line 1430 "parser.yy"
    69236909    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0 ); }
    69246910    break;
    69256911
    6926   case 357:
    6927 
    6928 /* Line 1806 of yacc.c  */
    6929 #line 1405 "parser.yy"
     6912  case 364:
     6913
     6914/* Line 1806 of yacc.c  */
     6915#line 1432 "parser.yy"
    69306916    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, (yyvsp[(4) - (5)].decl) ); }
    69316917    break;
    69326918
    6933   case 358:
    6934 
    6935 /* Line 1806 of yacc.c  */
    6936 #line 1407 "parser.yy"
     6919  case 365:
     6920
     6921/* Line 1806 of yacc.c  */
     6922#line 1434 "parser.yy"
    69376923    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl) ); }
    69386924    break;
    69396925
    6940   case 359:
    6941 
    6942 /* Line 1806 of yacc.c  */
    6943 #line 1409 "parser.yy"
     6926  case 366:
     6927
     6928/* Line 1806 of yacc.c  */
     6929#line 1436 "parser.yy"
    69446930    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    69456931    break;
    69466932
    6947   case 360:
    6948 
    6949 /* Line 1806 of yacc.c  */
    6950 #line 1414 "parser.yy"
     6933  case 367:
     6934
     6935/* Line 1806 of yacc.c  */
     6936#line 1441 "parser.yy"
    69516937    { (yyval.aggKey) = DeclarationNode::Struct; }
    69526938    break;
    69536939
    6954   case 361:
    6955 
    6956 /* Line 1806 of yacc.c  */
    6957 #line 1416 "parser.yy"
     6940  case 368:
     6941
     6942/* Line 1806 of yacc.c  */
     6943#line 1443 "parser.yy"
    69586944    { (yyval.aggKey) = DeclarationNode::Union; }
    69596945    break;
    69606946
    6961   case 362:
    6962 
    6963 /* Line 1806 of yacc.c  */
    6964 #line 1421 "parser.yy"
     6947  case 369:
     6948
     6949/* Line 1806 of yacc.c  */
     6950#line 1448 "parser.yy"
    69656951    { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
    69666952    break;
    69676953
    6968   case 363:
    6969 
    6970 /* Line 1806 of yacc.c  */
    6971 #line 1423 "parser.yy"
     6954  case 370:
     6955
     6956/* Line 1806 of yacc.c  */
     6957#line 1450 "parser.yy"
    69726958    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    69736959    break;
    69746960
    6975   case 365:
    6976 
    6977 /* Line 1806 of yacc.c  */
    6978 #line 1429 "parser.yy"
     6961  case 372:
     6962
     6963/* Line 1806 of yacc.c  */
     6964#line 1456 "parser.yy"
    69796965    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69806966    break;
    69816967
    6982   case 367:
    6983 
    6984 /* Line 1806 of yacc.c  */
    6985 #line 1432 "parser.yy"
     6968  case 374:
     6969
     6970/* Line 1806 of yacc.c  */
     6971#line 1459 "parser.yy"
    69866972    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    69876973    break;
    69886974
    6989   case 369:
    6990 
    6991 /* Line 1806 of yacc.c  */
    6992 #line 1438 "parser.yy"
     6975  case 376:
     6976
     6977/* Line 1806 of yacc.c  */
     6978#line 1465 "parser.yy"
    69936979    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
    69946980    break;
    69956981
    6996   case 370:
    6997 
    6998 /* Line 1806 of yacc.c  */
    6999 #line 1440 "parser.yy"
     6982  case 377:
     6983
     6984/* Line 1806 of yacc.c  */
     6985#line 1467 "parser.yy"
    70006986    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
    70016987    break;
    70026988
    7003   case 371:
    7004 
    7005 /* Line 1806 of yacc.c  */
    7006 #line 1442 "parser.yy"
     6989  case 378:
     6990
     6991/* Line 1806 of yacc.c  */
     6992#line 1469 "parser.yy"
    70076993    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
    70086994    break;
    70096995
    7010   case 372:
    7011 
    7012 /* Line 1806 of yacc.c  */
    7013 #line 1447 "parser.yy"
     6996  case 379:
     6997
     6998/* Line 1806 of yacc.c  */
     6999#line 1474 "parser.yy"
    70147000    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    70157001    break;
    70167002
    7017   case 373:
    7018 
    7019 /* Line 1806 of yacc.c  */
    7020 #line 1449 "parser.yy"
     7003  case 380:
     7004
     7005/* Line 1806 of yacc.c  */
     7006#line 1476 "parser.yy"
    70217007    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
    70227008    break;
    70237009
    7024   case 374:
    7025 
    7026 /* Line 1806 of yacc.c  */
    7027 #line 1454 "parser.yy"
     7010  case 381:
     7011
     7012/* Line 1806 of yacc.c  */
     7013#line 1481 "parser.yy"
    70287014    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
    70297015    break;
    70307016
    7031   case 375:
    7032 
    7033 /* Line 1806 of yacc.c  */
    7034 #line 1456 "parser.yy"
     7017  case 382:
     7018
     7019/* Line 1806 of yacc.c  */
     7020#line 1483 "parser.yy"
    70357021    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
    70367022    break;
    70377023
    7038   case 376:
    7039 
    7040 /* Line 1806 of yacc.c  */
    7041 #line 1459 "parser.yy"
     7024  case 383:
     7025
     7026/* Line 1806 of yacc.c  */
     7027#line 1486 "parser.yy"
    70427028    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70437029    break;
    70447030
    7045   case 377:
    7046 
    7047 /* Line 1806 of yacc.c  */
    7048 #line 1462 "parser.yy"
     7031  case 384:
     7032
     7033/* Line 1806 of yacc.c  */
     7034#line 1489 "parser.yy"
    70497035    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
    70507036    break;
    70517037
    7052   case 379:
    7053 
    7054 /* Line 1806 of yacc.c  */
    7055 #line 1468 "parser.yy"
     7038  case 386:
     7039
     7040/* Line 1806 of yacc.c  */
     7041#line 1495 "parser.yy"
    70567042    { (yyval.en) = 0; }
    70577043    break;
    70587044
    7059   case 380:
    7060 
    7061 /* Line 1806 of yacc.c  */
    7062 #line 1470 "parser.yy"
     7045  case 387:
     7046
     7047/* Line 1806 of yacc.c  */
     7048#line 1497 "parser.yy"
    70637049    { (yyval.en) = (yyvsp[(1) - (1)].en); }
    70647050    break;
    70657051
    7066   case 381:
    7067 
    7068 /* Line 1806 of yacc.c  */
    7069 #line 1475 "parser.yy"
    7070     { (yyval.en) = (yyvsp[(2) - (2)].en); }
    7071     break;
    7072 
    7073   case 383:
    7074 
    7075 /* Line 1806 of yacc.c  */
    7076 #line 1484 "parser.yy"
    7077     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
    7078     break;
    7079 
    7080   case 384:
    7081 
    7082 /* Line 1806 of yacc.c  */
    7083 #line 1486 "parser.yy"
    7084     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
    7085     break;
    7086 
    7087   case 385:
    7088 
    7089 /* Line 1806 of yacc.c  */
    7090 #line 1488 "parser.yy"
    7091     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
    7092     break;
    7093 
    7094   case 386:
    7095 
    7096 /* Line 1806 of yacc.c  */
    7097 #line 1493 "parser.yy"
    7098     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
    7099     break;
    7100 
    7101   case 387:
    7102 
    7103 /* Line 1806 of yacc.c  */
    7104 #line 1495 "parser.yy"
    7105     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
    7106     break;
    7107 
    71087052  case 388:
    7109 
    7110 /* Line 1806 of yacc.c  */
    7111 #line 1500 "parser.yy"
    7112     { (yyval.en) = 0; }
    7113     break;
    7114 
    7115   case 389:
    71167053
    71177054/* Line 1806 of yacc.c  */
     
    71237060
    71247061/* Line 1806 of yacc.c  */
    7125 #line 1509 "parser.yy"
     7062#line 1511 "parser.yy"
     7063    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     7064    break;
     7065
     7066  case 391:
     7067
     7068/* Line 1806 of yacc.c  */
     7069#line 1513 "parser.yy"
     7070    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
     7071    break;
     7072
     7073  case 392:
     7074
     7075/* Line 1806 of yacc.c  */
     7076#line 1515 "parser.yy"
     7077    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
     7078    break;
     7079
     7080  case 393:
     7081
     7082/* Line 1806 of yacc.c  */
     7083#line 1520 "parser.yy"
     7084    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     7085    break;
     7086
     7087  case 394:
     7088
     7089/* Line 1806 of yacc.c  */
     7090#line 1522 "parser.yy"
     7091    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     7092    break;
     7093
     7094  case 395:
     7095
     7096/* Line 1806 of yacc.c  */
     7097#line 1527 "parser.yy"
     7098    { (yyval.en) = 0; }
     7099    break;
     7100
     7101  case 396:
     7102
     7103/* Line 1806 of yacc.c  */
     7104#line 1529 "parser.yy"
     7105    { (yyval.en) = (yyvsp[(2) - (2)].en); }
     7106    break;
     7107
     7108  case 397:
     7109
     7110/* Line 1806 of yacc.c  */
     7111#line 1536 "parser.yy"
    71267112    { (yyval.decl) = 0; }
    71277113    break;
    71287114
    7129   case 394:
    7130 
    7131 /* Line 1806 of yacc.c  */
    7132 #line 1517 "parser.yy"
     7115  case 401:
     7116
     7117/* Line 1806 of yacc.c  */
     7118#line 1544 "parser.yy"
    71337119    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71347120    break;
    71357121
    7136   case 395:
    7137 
    7138 /* Line 1806 of yacc.c  */
    7139 #line 1519 "parser.yy"
     7122  case 402:
     7123
     7124/* Line 1806 of yacc.c  */
     7125#line 1546 "parser.yy"
    71407126    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71417127    break;
    71427128
    7143   case 396:
    7144 
    7145 /* Line 1806 of yacc.c  */
    7146 #line 1521 "parser.yy"
     7129  case 403:
     7130
     7131/* Line 1806 of yacc.c  */
     7132#line 1548 "parser.yy"
    71477133    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    71487134    break;
    71497135
    7150   case 398:
    7151 
    7152 /* Line 1806 of yacc.c  */
    7153 #line 1529 "parser.yy"
     7136  case 405:
     7137
     7138/* Line 1806 of yacc.c  */
     7139#line 1556 "parser.yy"
    71547140    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    71557141    break;
    71567142
    7157   case 399:
    7158 
    7159 /* Line 1806 of yacc.c  */
    7160 #line 1531 "parser.yy"
    7161     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7162     break;
    7163 
    7164   case 400:
    7165 
    7166 /* Line 1806 of yacc.c  */
    7167 #line 1533 "parser.yy"
    7168     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
    7169     break;
    7170 
    7171   case 402:
    7172 
    7173 /* Line 1806 of yacc.c  */
    7174 #line 1539 "parser.yy"
    7175     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    7176     break;
    7177 
    7178   case 403:
    7179 
    7180 /* Line 1806 of yacc.c  */
    7181 #line 1544 "parser.yy"
    7182     { (yyval.decl) = 0; }
    7183     break;
    7184 
    71857143  case 406:
    7186 
    7187 /* Line 1806 of yacc.c  */
    7188 #line 1551 "parser.yy"
    7189     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
    7190     break;
    7191 
    7192   case 409:
    71937144
    71947145/* Line 1806 of yacc.c  */
     
    71977148    break;
    71987149
     7150  case 407:
     7151
     7152/* Line 1806 of yacc.c  */
     7153#line 1560 "parser.yy"
     7154    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     7155    break;
     7156
     7157  case 409:
     7158
     7159/* Line 1806 of yacc.c  */
     7160#line 1566 "parser.yy"
     7161    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7162    break;
     7163
    71997164  case 410:
    72007165
    72017166/* Line 1806 of yacc.c  */
    7202 #line 1560 "parser.yy"
     7167#line 1571 "parser.yy"
     7168    { (yyval.decl) = 0; }
     7169    break;
     7170
     7171  case 413:
     7172
     7173/* Line 1806 of yacc.c  */
     7174#line 1578 "parser.yy"
     7175    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     7176    break;
     7177
     7178  case 416:
     7179
     7180/* Line 1806 of yacc.c  */
     7181#line 1585 "parser.yy"
    72037182    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
    72047183    break;
    72057184
    7206   case 412:
    7207 
    7208 /* Line 1806 of yacc.c  */
    7209 #line 1569 "parser.yy"
     7185  case 417:
     7186
     7187/* Line 1806 of yacc.c  */
     7188#line 1587 "parser.yy"
     7189    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     7190    break;
     7191
     7192  case 419:
     7193
     7194/* Line 1806 of yacc.c  */
     7195#line 1596 "parser.yy"
    72107196    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72117197    break;
    72127198
    7213   case 413:
    7214 
    7215 /* Line 1806 of yacc.c  */
    7216 #line 1572 "parser.yy"
     7199  case 420:
     7200
     7201/* Line 1806 of yacc.c  */
     7202#line 1599 "parser.yy"
    72177203    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
    72187204    break;
    72197205
    7220   case 414:
    7221 
    7222 /* Line 1806 of yacc.c  */
    7223 #line 1574 "parser.yy"
     7206  case 421:
     7207
     7208/* Line 1806 of yacc.c  */
     7209#line 1601 "parser.yy"
    72247210    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
    72257211    break;
    72267212
    7227   case 419:
    7228 
    7229 /* Line 1806 of yacc.c  */
    7230 #line 1584 "parser.yy"
     7213  case 426:
     7214
     7215/* Line 1806 of yacc.c  */
     7216#line 1611 "parser.yy"
    72317217    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    72327218    break;
    72337219
    7234   case 421:
    7235 
    7236 /* Line 1806 of yacc.c  */
    7237 #line 1590 "parser.yy"
     7220  case 428:
     7221
     7222/* Line 1806 of yacc.c  */
     7223#line 1617 "parser.yy"
    72387224    {
    72397225                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72427228    break;
    72437229
    7244   case 422:
    7245 
    7246 /* Line 1806 of yacc.c  */
    7247 #line 1595 "parser.yy"
     7230  case 429:
     7231
     7232/* Line 1806 of yacc.c  */
     7233#line 1622 "parser.yy"
    72487234    {
    72497235                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    72527238    break;
    72537239
    7254   case 424:
    7255 
    7256 /* Line 1806 of yacc.c  */
    7257 #line 1604 "parser.yy"
     7240  case 431:
     7241
     7242/* Line 1806 of yacc.c  */
     7243#line 1631 "parser.yy"
    72587244    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72597245    break;
    72607246
    7261   case 425:
    7262 
    7263 /* Line 1806 of yacc.c  */
    7264 #line 1613 "parser.yy"
     7247  case 432:
     7248
     7249/* Line 1806 of yacc.c  */
     7250#line 1640 "parser.yy"
    72657251    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
    72667252    break;
    72677253
    7268   case 426:
    7269 
    7270 /* Line 1806 of yacc.c  */
    7271 #line 1615 "parser.yy"
     7254  case 433:
     7255
     7256/* Line 1806 of yacc.c  */
     7257#line 1642 "parser.yy"
    72727258    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
    72737259    break;
    72747260
    7275   case 438:
    7276 
    7277 /* Line 1806 of yacc.c  */
    7278 #line 1640 "parser.yy"
     7261  case 445:
     7262
     7263/* Line 1806 of yacc.c  */
     7264#line 1667 "parser.yy"
    72797265    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72807266    break;
    72817267
    7282   case 442:
    7283 
    7284 /* Line 1806 of yacc.c  */
    7285 #line 1648 "parser.yy"
     7268  case 449:
     7269
     7270/* Line 1806 of yacc.c  */
     7271#line 1675 "parser.yy"
    72867272    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
    72877273    break;
    72887274
    7289   case 443:
    7290 
    7291 /* Line 1806 of yacc.c  */
    7292 #line 1653 "parser.yy"
     7275  case 450:
     7276
     7277/* Line 1806 of yacc.c  */
     7278#line 1680 "parser.yy"
    72937279    { (yyval.in) = 0; }
    72947280    break;
    72957281
    7296   case 444:
    7297 
    7298 /* Line 1806 of yacc.c  */
    7299 #line 1655 "parser.yy"
     7282  case 451:
     7283
     7284/* Line 1806 of yacc.c  */
     7285#line 1682 "parser.yy"
    73007286    { (yyval.in) = (yyvsp[(2) - (2)].in); }
    73017287    break;
    73027288
    7303   case 445:
    7304 
    7305 /* Line 1806 of yacc.c  */
    7306 #line 1659 "parser.yy"
     7289  case 452:
     7290
     7291/* Line 1806 of yacc.c  */
     7292#line 1684 "parser.yy"
     7293    { (yyval.in) = (yyvsp[(2) - (2)].in); }
     7294    break;
     7295
     7296  case 453:
     7297
     7298/* Line 1806 of yacc.c  */
     7299#line 1688 "parser.yy"
    73077300    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
    73087301    break;
    73097302
    7310   case 446:
    7311 
    7312 /* Line 1806 of yacc.c  */
    7313 #line 1660 "parser.yy"
     7303  case 454:
     7304
     7305/* Line 1806 of yacc.c  */
     7306#line 1689 "parser.yy"
    73147307    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
    73157308    break;
    73167309
    7317   case 448:
    7318 
    7319 /* Line 1806 of yacc.c  */
    7320 #line 1665 "parser.yy"
     7310  case 455:
     7311
     7312/* Line 1806 of yacc.c  */
     7313#line 1694 "parser.yy"
     7314    { (yyval.in) = 0; }
     7315    break;
     7316
     7317  case 457:
     7318
     7319/* Line 1806 of yacc.c  */
     7320#line 1696 "parser.yy"
    73217321    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
    73227322    break;
    73237323
    7324   case 449:
    7325 
    7326 /* Line 1806 of yacc.c  */
    7327 #line 1666 "parser.yy"
     7324  case 458:
     7325
     7326/* Line 1806 of yacc.c  */
     7327#line 1697 "parser.yy"
    73287328    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link( (yyvsp[(3) - (3)].in) ) ); }
    73297329    break;
    73307330
    7331   case 450:
    7332 
    7333 /* Line 1806 of yacc.c  */
    7334 #line 1668 "parser.yy"
     7331  case 459:
     7332
     7333/* Line 1806 of yacc.c  */
     7334#line 1699 "parser.yy"
    73357335    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
    73367336    break;
    73377337
    7338   case 452:
    7339 
    7340 /* Line 1806 of yacc.c  */
    7341 #line 1684 "parser.yy"
     7338  case 461:
     7339
     7340/* Line 1806 of yacc.c  */
     7341#line 1715 "parser.yy"
    73427342    { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
    73437343    break;
    73447344
    7345   case 454:
    7346 
    7347 /* Line 1806 of yacc.c  */
    7348 #line 1690 "parser.yy"
     7345  case 463:
     7346
     7347/* Line 1806 of yacc.c  */
     7348#line 1721 "parser.yy"
    73497349    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
    73507350    break;
    73517351
    7352   case 455:
    7353 
    7354 /* Line 1806 of yacc.c  */
    7355 #line 1697 "parser.yy"
     7352  case 464:
     7353
     7354/* Line 1806 of yacc.c  */
     7355#line 1729 "parser.yy"
    73567356    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(1) - (1)].tok) ) ); }
    73577357    break;
    73587358
    7359   case 456:
    7360 
    7361 /* Line 1806 of yacc.c  */
    7362 #line 1699 "parser.yy"
     7359  case 465:
     7360
     7361/* Line 1806 of yacc.c  */
     7362#line 1731 "parser.yy"
    73637363    { (yyval.en) = new DesignatorNode( new VarRefNode( (yyvsp[(2) - (2)].tok) ) ); }
    73647364    break;
    73657365
    7366   case 457:
    7367 
    7368 /* Line 1806 of yacc.c  */
    7369 #line 1702 "parser.yy"
     7366  case 466:
     7367
     7368/* Line 1806 of yacc.c  */
     7369#line 1734 "parser.yy"
    73707370    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    73717371    break;
    73727372
    7373   case 458:
    7374 
    7375 /* Line 1806 of yacc.c  */
    7376 #line 1704 "parser.yy"
     7373  case 467:
     7374
     7375/* Line 1806 of yacc.c  */
     7376#line 1736 "parser.yy"
    73777377    { (yyval.en) = new DesignatorNode( (yyvsp[(3) - (5)].en), true ); }
    73787378    break;
    73797379
    7380   case 459:
    7381 
    7382 /* Line 1806 of yacc.c  */
    7383 #line 1706 "parser.yy"
     7380  case 468:
     7381
     7382/* Line 1806 of yacc.c  */
     7383#line 1738 "parser.yy"
    73847384    { (yyval.en) = new DesignatorNode( new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ), true ); }
    73857385    break;
    73867386
    7387   case 460:
    7388 
    7389 /* Line 1806 of yacc.c  */
    7390 #line 1708 "parser.yy"
     7387  case 469:
     7388
     7389/* Line 1806 of yacc.c  */
     7390#line 1740 "parser.yy"
    73917391    { (yyval.en) = new DesignatorNode( (yyvsp[(4) - (6)].en) ); }
    73927392    break;
    73937393
    7394   case 462:
    7395 
    7396 /* Line 1806 of yacc.c  */
    7397 #line 1732 "parser.yy"
     7394  case 471:
     7395
     7396/* Line 1806 of yacc.c  */
     7397#line 1764 "parser.yy"
    73987398    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    73997399    break;
    74007400
    7401   case 463:
    7402 
    7403 /* Line 1806 of yacc.c  */
    7404 #line 1734 "parser.yy"
     7401  case 472:
     7402
     7403/* Line 1806 of yacc.c  */
     7404#line 1766 "parser.yy"
    74057405    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74067406    break;
    74077407
    7408   case 464:
    7409 
    7410 /* Line 1806 of yacc.c  */
    7411 #line 1736 "parser.yy"
     7408  case 473:
     7409
     7410/* Line 1806 of yacc.c  */
     7411#line 1768 "parser.yy"
    74127412    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
    74137413    break;
    74147414
    7415   case 466:
    7416 
    7417 /* Line 1806 of yacc.c  */
    7418 #line 1742 "parser.yy"
     7415  case 475:
     7416
     7417/* Line 1806 of yacc.c  */
     7418#line 1774 "parser.yy"
    74197419    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    74207420    break;
    74217421
    7422   case 467:
    7423 
    7424 /* Line 1806 of yacc.c  */
    7425 #line 1744 "parser.yy"
     7422  case 476:
     7423
     7424/* Line 1806 of yacc.c  */
     7425#line 1776 "parser.yy"
    74267426    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    74277427    break;
    74287428
    7429   case 468:
    7430 
    7431 /* Line 1806 of yacc.c  */
    7432 #line 1749 "parser.yy"
     7429  case 477:
     7430
     7431/* Line 1806 of yacc.c  */
     7432#line 1781 "parser.yy"
    74337433    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
    74347434    break;
    74357435
    7436   case 470:
    7437 
    7438 /* Line 1806 of yacc.c  */
    7439 #line 1755 "parser.yy"
     7436  case 479:
     7437
     7438/* Line 1806 of yacc.c  */
     7439#line 1787 "parser.yy"
    74407440    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
    74417441    break;
    74427442
    7443   case 471:
    7444 
    7445 /* Line 1806 of yacc.c  */
    7446 #line 1760 "parser.yy"
     7443  case 480:
     7444
     7445/* Line 1806 of yacc.c  */
     7446#line 1792 "parser.yy"
    74477447    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
    74487448    break;
    74497449
    7450   case 472:
    7451 
    7452 /* Line 1806 of yacc.c  */
    7453 #line 1762 "parser.yy"
     7450  case 481:
     7451
     7452/* Line 1806 of yacc.c  */
     7453#line 1794 "parser.yy"
    74547454    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
    74557455    break;
    74567456
    7457   case 474:
    7458 
    7459 /* Line 1806 of yacc.c  */
    7460 #line 1768 "parser.yy"
     7457  case 483:
     7458
     7459/* Line 1806 of yacc.c  */
     7460#line 1800 "parser.yy"
    74617461    { (yyval.tclass) = DeclarationNode::Type; }
    74627462    break;
    74637463
    7464   case 475:
    7465 
    7466 /* Line 1806 of yacc.c  */
    7467 #line 1770 "parser.yy"
     7464  case 484:
     7465
     7466/* Line 1806 of yacc.c  */
     7467#line 1802 "parser.yy"
    74687468    { (yyval.tclass) = DeclarationNode::Ftype; }
    74697469    break;
    74707470
    7471   case 476:
    7472 
    7473 /* Line 1806 of yacc.c  */
    7474 #line 1772 "parser.yy"
     7471  case 485:
     7472
     7473/* Line 1806 of yacc.c  */
     7474#line 1804 "parser.yy"
    74757475    { (yyval.tclass) = DeclarationNode::Dtype; }
    74767476    break;
    74777477
    7478   case 477:
    7479 
    7480 /* Line 1806 of yacc.c  */
    7481 #line 1777 "parser.yy"
     7478  case 486:
     7479
     7480/* Line 1806 of yacc.c  */
     7481#line 1809 "parser.yy"
    74827482    { (yyval.decl) = 0; }
    74837483    break;
    74847484
    7485   case 478:
    7486 
    7487 /* Line 1806 of yacc.c  */
    7488 #line 1779 "parser.yy"
     7485  case 487:
     7486
     7487/* Line 1806 of yacc.c  */
     7488#line 1811 "parser.yy"
    74897489    { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
    74907490    break;
    74917491
    7492   case 479:
    7493 
    7494 /* Line 1806 of yacc.c  */
    7495 #line 1784 "parser.yy"
     7492  case 488:
     7493
     7494/* Line 1806 of yacc.c  */
     7495#line 1816 "parser.yy"
    74967496    {
    74977497                        typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
     
    75007500    break;
    75017501
    7502   case 480:
    7503 
    7504 /* Line 1806 of yacc.c  */
    7505 #line 1789 "parser.yy"
     7502  case 489:
     7503
     7504/* Line 1806 of yacc.c  */
     7505#line 1821 "parser.yy"
    75067506    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
    75077507    break;
    75087508
    7509   case 481:
    7510 
    7511 /* Line 1806 of yacc.c  */
    7512 #line 1791 "parser.yy"
     7509  case 490:
     7510
     7511/* Line 1806 of yacc.c  */
     7512#line 1823 "parser.yy"
    75137513    { (yyval.decl) = 0; }
    75147514    break;
    75157515
    7516   case 482:
    7517 
    7518 /* Line 1806 of yacc.c  */
    7519 #line 1796 "parser.yy"
     7516  case 491:
     7517
     7518/* Line 1806 of yacc.c  */
     7519#line 1828 "parser.yy"
    75207520    { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
    75217521    break;
    75227522
    7523   case 484:
    7524 
    7525 /* Line 1806 of yacc.c  */
    7526 #line 1799 "parser.yy"
     7523  case 493:
     7524
     7525/* Line 1806 of yacc.c  */
     7526#line 1831 "parser.yy"
    75277527    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
    75287528    break;
    75297529
    7530   case 485:
    7531 
    7532 /* Line 1806 of yacc.c  */
    7533 #line 1801 "parser.yy"
     7530  case 494:
     7531
     7532/* Line 1806 of yacc.c  */
     7533#line 1833 "parser.yy"
    75347534    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_link( (yyvsp[(3) - (3)].en) )); }
    75357535    break;
    75367536
    7537   case 486:
    7538 
    7539 /* Line 1806 of yacc.c  */
    7540 #line 1806 "parser.yy"
     7537  case 495:
     7538
     7539/* Line 1806 of yacc.c  */
     7540#line 1838 "parser.yy"
    75417541    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    75427542    break;
    75437543
    7544   case 487:
    7545 
    7546 /* Line 1806 of yacc.c  */
    7547 #line 1808 "parser.yy"
     7544  case 496:
     7545
     7546/* Line 1806 of yacc.c  */
     7547#line 1840 "parser.yy"
    75487548    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
    75497549    break;
    75507550
    7551   case 488:
    7552 
    7553 /* Line 1806 of yacc.c  */
    7554 #line 1810 "parser.yy"
     7551  case 497:
     7552
     7553/* Line 1806 of yacc.c  */
     7554#line 1842 "parser.yy"
    75557555    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
    75567556    break;
    75577557
    7558   case 489:
    7559 
    7560 /* Line 1806 of yacc.c  */
    7561 #line 1815 "parser.yy"
     7558  case 498:
     7559
     7560/* Line 1806 of yacc.c  */
     7561#line 1847 "parser.yy"
    75627562    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
    75637563    break;
    75647564
    7565   case 490:
    7566 
    7567 /* Line 1806 of yacc.c  */
    7568 #line 1817 "parser.yy"
     7565  case 499:
     7566
     7567/* Line 1806 of yacc.c  */
     7568#line 1849 "parser.yy"
    75697569    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
    75707570    break;
    75717571
    7572   case 491:
    7573 
    7574 /* Line 1806 of yacc.c  */
    7575 #line 1822 "parser.yy"
     7572  case 500:
     7573
     7574/* Line 1806 of yacc.c  */
     7575#line 1854 "parser.yy"
    75767576    {
    75777577                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
     
    75807580    break;
    75817581
    7582   case 492:
    7583 
    7584 /* Line 1806 of yacc.c  */
    7585 #line 1827 "parser.yy"
     7582  case 501:
     7583
     7584/* Line 1806 of yacc.c  */
     7585#line 1859 "parser.yy"
    75867586    {
    75877587                        typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
     
    75907590    break;
    75917591
    7592   case 493:
    7593 
    7594 /* Line 1806 of yacc.c  */
    7595 #line 1835 "parser.yy"
     7592  case 502:
     7593
     7594/* Line 1806 of yacc.c  */
     7595#line 1867 "parser.yy"
    75967596    {
    75977597                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
     
    76007600    break;
    76017601
    7602   case 494:
    7603 
    7604 /* Line 1806 of yacc.c  */
    7605 #line 1840 "parser.yy"
     7602  case 503:
     7603
     7604/* Line 1806 of yacc.c  */
     7605#line 1872 "parser.yy"
    76067606    {
    76077607                        typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     
    76107610    break;
    76117611
    7612   case 495:
    7613 
    7614 /* Line 1806 of yacc.c  */
    7615 #line 1845 "parser.yy"
     7612  case 504:
     7613
     7614/* Line 1806 of yacc.c  */
     7615#line 1877 "parser.yy"
    76167616    {
    76177617                        typedefTable.leaveContext();
     
    76217621    break;
    76227622
    7623   case 497:
    7624 
    7625 /* Line 1806 of yacc.c  */
    7626 #line 1855 "parser.yy"
     7623  case 506:
     7624
     7625/* Line 1806 of yacc.c  */
     7626#line 1887 "parser.yy"
    76277627    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
    76287628    break;
    76297629
    7630   case 500:
    7631 
    7632 /* Line 1806 of yacc.c  */
    7633 #line 1865 "parser.yy"
     7630  case 509:
     7631
     7632/* Line 1806 of yacc.c  */
     7633#line 1897 "parser.yy"
    76347634    {
    76357635                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76387638    break;
    76397639
    7640   case 501:
    7641 
    7642 /* Line 1806 of yacc.c  */
    7643 #line 1870 "parser.yy"
     7640  case 510:
     7641
     7642/* Line 1806 of yacc.c  */
     7643#line 1902 "parser.yy"
    76447644    {
    76457645                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76487648    break;
    76497649
    7650   case 502:
    7651 
    7652 /* Line 1806 of yacc.c  */
    7653 #line 1875 "parser.yy"
     7650  case 511:
     7651
     7652/* Line 1806 of yacc.c  */
     7653#line 1907 "parser.yy"
    76547654    {
    76557655                        typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
     
    76587658    break;
    76597659
    7660   case 503:
    7661 
    7662 /* Line 1806 of yacc.c  */
    7663 #line 1883 "parser.yy"
     7660  case 512:
     7661
     7662/* Line 1806 of yacc.c  */
     7663#line 1915 "parser.yy"
    76647664    {
    76657665                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76687668    break;
    76697669
    7670   case 504:
    7671 
    7672 /* Line 1806 of yacc.c  */
    7673 #line 1888 "parser.yy"
     7670  case 513:
     7671
     7672/* Line 1806 of yacc.c  */
     7673#line 1920 "parser.yy"
    76747674    {
    76757675                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
     
    76787678    break;
    76797679
    7680   case 505:
    7681 
    7682 /* Line 1806 of yacc.c  */
    7683 #line 1898 "parser.yy"
     7680  case 514:
     7681
     7682/* Line 1806 of yacc.c  */
     7683#line 1930 "parser.yy"
    76847684    {}
    76857685    break;
    76867686
    7687   case 506:
    7688 
    7689 /* Line 1806 of yacc.c  */
    7690 #line 1900 "parser.yy"
     7687  case 515:
     7688
     7689/* Line 1806 of yacc.c  */
     7690#line 1932 "parser.yy"
    76917691    {
    76927692                        if ( theTree ) {
     
    76987698    break;
    76997699
    7700   case 508:
    7701 
    7702 /* Line 1806 of yacc.c  */
    7703 #line 1912 "parser.yy"
     7700  case 517:
     7701
     7702/* Line 1806 of yacc.c  */
     7703#line 1944 "parser.yy"
    77047704    { (yyval.decl) = ( (yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
    77057705    break;
    77067706
    7707   case 509:
    7708 
    7709 /* Line 1806 of yacc.c  */
    7710 #line 1917 "parser.yy"
     7707  case 518:
     7708
     7709/* Line 1806 of yacc.c  */
     7710#line 1949 "parser.yy"
    77117711    { (yyval.decl) = 0; }
    77127712    break;
    77137713
    7714   case 513:
    7715 
    7716 /* Line 1806 of yacc.c  */
    7717 #line 1925 "parser.yy"
     7714  case 522:
     7715
     7716/* Line 1806 of yacc.c  */
     7717#line 1957 "parser.yy"
    77187718    {}
    77197719    break;
    77207720
    7721   case 514:
    7722 
    7723 /* Line 1806 of yacc.c  */
    7724 #line 1927 "parser.yy"
     7721  case 523:
     7722
     7723/* Line 1806 of yacc.c  */
     7724#line 1959 "parser.yy"
    77257725    {
    77267726                        linkageStack.push( linkage );
     
    77297729    break;
    77307730
    7731   case 515:
    7732 
    7733 /* Line 1806 of yacc.c  */
    7734 #line 1932 "parser.yy"
     7731  case 524:
     7732
     7733/* Line 1806 of yacc.c  */
     7734#line 1964 "parser.yy"
    77357735    {
    77367736                        linkage = linkageStack.top();
     
    77407740    break;
    77417741
    7742   case 516:
    7743 
    7744 /* Line 1806 of yacc.c  */
    7745 #line 1938 "parser.yy"
     7742  case 525:
     7743
     7744/* Line 1806 of yacc.c  */
     7745#line 1970 "parser.yy"
    77467746    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
    77477747    break;
    77487748
    7749   case 518:
    7750 
    7751 /* Line 1806 of yacc.c  */
    7752 #line 1948 "parser.yy"
     7749  case 527:
     7750
     7751/* Line 1806 of yacc.c  */
     7752#line 1980 "parser.yy"
    77537753    {
    77547754                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77587758    break;
    77597759
    7760   case 519:
    7761 
    7762 /* Line 1806 of yacc.c  */
    7763 #line 1954 "parser.yy"
     7760  case 528:
     7761
     7762/* Line 1806 of yacc.c  */
     7763#line 1986 "parser.yy"
    77647764    {
    77657765                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77697769    break;
    77707770
    7771   case 520:
    7772 
    7773 /* Line 1806 of yacc.c  */
    7774 #line 1963 "parser.yy"
     7771  case 529:
     7772
     7773/* Line 1806 of yacc.c  */
     7774#line 1995 "parser.yy"
    77757775    {
    77767776                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77807780    break;
    77817781
    7782   case 521:
    7783 
    7784 /* Line 1806 of yacc.c  */
    7785 #line 1969 "parser.yy"
     7782  case 530:
     7783
     7784/* Line 1806 of yacc.c  */
     7785#line 2001 "parser.yy"
    77867786    {
    77877787                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    77917791    break;
    77927792
    7793   case 522:
    7794 
    7795 /* Line 1806 of yacc.c  */
    7796 #line 1975 "parser.yy"
     7793  case 531:
     7794
     7795/* Line 1806 of yacc.c  */
     7796#line 2007 "parser.yy"
    77977797    {
    77987798                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78027802    break;
    78037803
    7804   case 523:
    7805 
    7806 /* Line 1806 of yacc.c  */
    7807 #line 1981 "parser.yy"
     7804  case 532:
     7805
     7806/* Line 1806 of yacc.c  */
     7807#line 2013 "parser.yy"
    78087808    {
    78097809                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78137813    break;
    78147814
    7815   case 524:
    7816 
    7817 /* Line 1806 of yacc.c  */
    7818 #line 1987 "parser.yy"
     7815  case 533:
     7816
     7817/* Line 1806 of yacc.c  */
     7818#line 2019 "parser.yy"
    78197819    {
    78207820                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78247824    break;
    78257825
    7826   case 525:
    7827 
    7828 /* Line 1806 of yacc.c  */
    7829 #line 1995 "parser.yy"
     7826  case 534:
     7827
     7828/* Line 1806 of yacc.c  */
     7829#line 2027 "parser.yy"
    78307830    {
    78317831                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78357835    break;
    78367836
    7837   case 526:
    7838 
    7839 /* Line 1806 of yacc.c  */
    7840 #line 2001 "parser.yy"
     7837  case 535:
     7838
     7839/* Line 1806 of yacc.c  */
     7840#line 2033 "parser.yy"
    78417841    {
    78427842                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78467846    break;
    78477847
    7848   case 527:
    7849 
    7850 /* Line 1806 of yacc.c  */
    7851 #line 2009 "parser.yy"
     7848  case 536:
     7849
     7850/* Line 1806 of yacc.c  */
     7851#line 2041 "parser.yy"
    78527852    {
    78537853                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78577857    break;
    78587858
    7859   case 528:
    7860 
    7861 /* Line 1806 of yacc.c  */
    7862 #line 2015 "parser.yy"
     7859  case 537:
     7860
     7861/* Line 1806 of yacc.c  */
     7862#line 2047 "parser.yy"
    78637863    {
    78647864                        typedefTable.addToEnclosingScope( TypedefTable::ID );
     
    78687868    break;
    78697869
    7870   case 532:
    7871 
    7872 /* Line 1806 of yacc.c  */
    7873 #line 2030 "parser.yy"
     7870  case 541:
     7871
     7872/* Line 1806 of yacc.c  */
     7873#line 2062 "parser.yy"
    78747874    { (yyval.en) = new CompositeExprNode( new OperatorNode( OperatorNode::Range ), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ); }
    78757875    break;
    78767876
    7877   case 535:
    7878 
    7879 /* Line 1806 of yacc.c  */
    7880 #line 2040 "parser.yy"
     7877  case 544:
     7878
     7879/* Line 1806 of yacc.c  */
     7880#line 2072 "parser.yy"
    78817881    { (yyval.decl) = 0; }
    78827882    break;
    78837883
    7884   case 538:
    7885 
    7886 /* Line 1806 of yacc.c  */
    7887 #line 2047 "parser.yy"
     7884  case 547:
     7885
     7886/* Line 1806 of yacc.c  */
     7887#line 2079 "parser.yy"
    78887888    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    78897889    break;
    78907890
    7891   case 539:
    7892 
    7893 /* Line 1806 of yacc.c  */
    7894 #line 2053 "parser.yy"
     7891  case 548:
     7892
     7893/* Line 1806 of yacc.c  */
     7894#line 2085 "parser.yy"
    78957895    { (yyval.decl) = 0; }
    78967896    break;
    78977897
    7898   case 545:
    7899 
    7900 /* Line 1806 of yacc.c  */
    7901 #line 2068 "parser.yy"
     7898  case 554:
     7899
     7900/* Line 1806 of yacc.c  */
     7901#line 2100 "parser.yy"
    79027902    {}
    79037903    break;
    79047904
    7905   case 546:
    7906 
    7907 /* Line 1806 of yacc.c  */
    7908 #line 2069 "parser.yy"
     7905  case 555:
     7906
     7907/* Line 1806 of yacc.c  */
     7908#line 2101 "parser.yy"
    79097909    {}
    79107910    break;
    79117911
    7912   case 547:
    7913 
    7914 /* Line 1806 of yacc.c  */
    7915 #line 2070 "parser.yy"
     7912  case 556:
     7913
     7914/* Line 1806 of yacc.c  */
     7915#line 2102 "parser.yy"
    79167916    {}
    79177917    break;
    79187918
    7919   case 548:
    7920 
    7921 /* Line 1806 of yacc.c  */
    7922 #line 2071 "parser.yy"
     7919  case 557:
     7920
     7921/* Line 1806 of yacc.c  */
     7922#line 2103 "parser.yy"
    79237923    {}
    79247924    break;
    79257925
    7926   case 549:
    7927 
    7928 /* Line 1806 of yacc.c  */
    7929 #line 2106 "parser.yy"
     7926  case 558:
     7927
     7928/* Line 1806 of yacc.c  */
     7929#line 2138 "parser.yy"
    79307930    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79317931    break;
    79327932
    7933   case 551:
    7934 
    7935 /* Line 1806 of yacc.c  */
    7936 #line 2109 "parser.yy"
     7933  case 560:
     7934
     7935/* Line 1806 of yacc.c  */
     7936#line 2141 "parser.yy"
    79377937    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79387938    break;
    79397939
    7940   case 552:
    7941 
    7942 /* Line 1806 of yacc.c  */
    7943 #line 2111 "parser.yy"
     7940  case 561:
     7941
     7942/* Line 1806 of yacc.c  */
     7943#line 2143 "parser.yy"
    79447944    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    79457945    break;
    79467946
    7947   case 553:
    7948 
    7949 /* Line 1806 of yacc.c  */
    7950 #line 2116 "parser.yy"
     7947  case 562:
     7948
     7949/* Line 1806 of yacc.c  */
     7950#line 2148 "parser.yy"
    79517951    {
    79527952                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    79557955    break;
    79567956
    7957   case 554:
    7958 
    7959 /* Line 1806 of yacc.c  */
    7960 #line 2121 "parser.yy"
     7957  case 563:
     7958
     7959/* Line 1806 of yacc.c  */
     7960#line 2153 "parser.yy"
    79617961    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79627962    break;
    79637963
    7964   case 555:
    7965 
    7966 /* Line 1806 of yacc.c  */
    7967 #line 2126 "parser.yy"
     7964  case 564:
     7965
     7966/* Line 1806 of yacc.c  */
     7967#line 2158 "parser.yy"
    79687968    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    79697969    break;
    79707970
    7971   case 556:
    7972 
    7973 /* Line 1806 of yacc.c  */
    7974 #line 2128 "parser.yy"
     7971  case 565:
     7972
     7973/* Line 1806 of yacc.c  */
     7974#line 2160 "parser.yy"
    79757975    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    79767976    break;
    79777977
    7978   case 557:
    7979 
    7980 /* Line 1806 of yacc.c  */
    7981 #line 2130 "parser.yy"
     7978  case 566:
     7979
     7980/* Line 1806 of yacc.c  */
     7981#line 2162 "parser.yy"
    79827982    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    79837983    break;
    79847984
    7985   case 558:
    7986 
    7987 /* Line 1806 of yacc.c  */
    7988 #line 2135 "parser.yy"
     7985  case 567:
     7986
     7987/* Line 1806 of yacc.c  */
     7988#line 2167 "parser.yy"
    79897989    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    79907990    break;
    79917991
    7992   case 559:
    7993 
    7994 /* Line 1806 of yacc.c  */
    7995 #line 2137 "parser.yy"
     7992  case 568:
     7993
     7994/* Line 1806 of yacc.c  */
     7995#line 2169 "parser.yy"
    79967996    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    79977997    break;
    79987998
    7999   case 560:
    8000 
    8001 /* Line 1806 of yacc.c  */
    8002 #line 2139 "parser.yy"
     7999  case 569:
     8000
     8001/* Line 1806 of yacc.c  */
     8002#line 2171 "parser.yy"
    80038003    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80048004    break;
    80058005
    8006   case 561:
    8007 
    8008 /* Line 1806 of yacc.c  */
    8009 #line 2141 "parser.yy"
     8006  case 570:
     8007
     8008/* Line 1806 of yacc.c  */
     8009#line 2173 "parser.yy"
    80108010    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80118011    break;
    80128012
    8013   case 562:
    8014 
    8015 /* Line 1806 of yacc.c  */
    8016 #line 2146 "parser.yy"
     8013  case 571:
     8014
     8015/* Line 1806 of yacc.c  */
     8016#line 2178 "parser.yy"
    80178017    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80188018    break;
    80198019
    8020   case 563:
    8021 
    8022 /* Line 1806 of yacc.c  */
    8023 #line 2148 "parser.yy"
     8020  case 572:
     8021
     8022/* Line 1806 of yacc.c  */
     8023#line 2180 "parser.yy"
    80248024    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80258025    break;
    80268026
    8027   case 564:
    8028 
    8029 /* Line 1806 of yacc.c  */
    8030 #line 2158 "parser.yy"
     8027  case 573:
     8028
     8029/* Line 1806 of yacc.c  */
     8030#line 2190 "parser.yy"
    80318031    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80328032    break;
    80338033
    8034   case 566:
    8035 
    8036 /* Line 1806 of yacc.c  */
    8037 #line 2161 "parser.yy"
     8034  case 575:
     8035
     8036/* Line 1806 of yacc.c  */
     8037#line 2193 "parser.yy"
    80388038    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    80398039    break;
    80408040
    8041   case 567:
    8042 
    8043 /* Line 1806 of yacc.c  */
    8044 #line 2166 "parser.yy"
     8041  case 576:
     8042
     8043/* Line 1806 of yacc.c  */
     8044#line 2198 "parser.yy"
    80458045    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    80468046    break;
    80478047
    8048   case 568:
    8049 
    8050 /* Line 1806 of yacc.c  */
    8051 #line 2168 "parser.yy"
     8048  case 577:
     8049
     8050/* Line 1806 of yacc.c  */
     8051#line 2200 "parser.yy"
    80528052    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    80538053    break;
    80548054
    8055   case 569:
    8056 
    8057 /* Line 1806 of yacc.c  */
    8058 #line 2170 "parser.yy"
     8055  case 578:
     8056
     8057/* Line 1806 of yacc.c  */
     8058#line 2202 "parser.yy"
    80598059    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80608060    break;
    80618061
    8062   case 570:
    8063 
    8064 /* Line 1806 of yacc.c  */
    8065 #line 2175 "parser.yy"
     8062  case 579:
     8063
     8064/* Line 1806 of yacc.c  */
     8065#line 2207 "parser.yy"
    80668066    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    80678067    break;
    80688068
    8069   case 571:
    8070 
    8071 /* Line 1806 of yacc.c  */
    8072 #line 2177 "parser.yy"
     8069  case 580:
     8070
     8071/* Line 1806 of yacc.c  */
     8072#line 2209 "parser.yy"
    80738073    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    80748074    break;
    80758075
    8076   case 572:
    8077 
    8078 /* Line 1806 of yacc.c  */
    8079 #line 2179 "parser.yy"
     8076  case 581:
     8077
     8078/* Line 1806 of yacc.c  */
     8079#line 2211 "parser.yy"
    80808080    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    80818081    break;
    80828082
    8083   case 573:
    8084 
    8085 /* Line 1806 of yacc.c  */
    8086 #line 2184 "parser.yy"
     8083  case 582:
     8084
     8085/* Line 1806 of yacc.c  */
     8086#line 2216 "parser.yy"
    80878087    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80888088    break;
    80898089
    8090   case 574:
    8091 
    8092 /* Line 1806 of yacc.c  */
    8093 #line 2186 "parser.yy"
     8090  case 583:
     8091
     8092/* Line 1806 of yacc.c  */
     8093#line 2218 "parser.yy"
    80948094    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    80958095    break;
    80968096
    8097   case 575:
    8098 
    8099 /* Line 1806 of yacc.c  */
    8100 #line 2188 "parser.yy"
     8097  case 584:
     8098
     8099/* Line 1806 of yacc.c  */
     8100#line 2220 "parser.yy"
    81018101    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81028102    break;
    81038103
    8104   case 579:
    8105 
    8106 /* Line 1806 of yacc.c  */
    8107 #line 2203 "parser.yy"
     8104  case 588:
     8105
     8106/* Line 1806 of yacc.c  */
     8107#line 2235 "parser.yy"
    81088108    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
    81098109    break;
    81108110
    8111   case 580:
    8112 
    8113 /* Line 1806 of yacc.c  */
    8114 #line 2205 "parser.yy"
     8111  case 589:
     8112
     8113/* Line 1806 of yacc.c  */
     8114#line 2237 "parser.yy"
    81158115    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
    81168116    break;
    81178117
    8118   case 581:
    8119 
    8120 /* Line 1806 of yacc.c  */
    8121 #line 2207 "parser.yy"
     8118  case 590:
     8119
     8120/* Line 1806 of yacc.c  */
     8121#line 2239 "parser.yy"
    81228122    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81238123    break;
    81248124
    8125   case 582:
    8126 
    8127 /* Line 1806 of yacc.c  */
    8128 #line 2212 "parser.yy"
     8125  case 591:
     8126
     8127/* Line 1806 of yacc.c  */
     8128#line 2244 "parser.yy"
    81298129    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    81308130    break;
    81318131
    8132   case 583:
    8133 
    8134 /* Line 1806 of yacc.c  */
    8135 #line 2214 "parser.yy"
     8132  case 592:
     8133
     8134/* Line 1806 of yacc.c  */
     8135#line 2246 "parser.yy"
    81368136    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    81378137    break;
    81388138
    8139   case 584:
    8140 
    8141 /* Line 1806 of yacc.c  */
    8142 #line 2216 "parser.yy"
     8139  case 593:
     8140
     8141/* Line 1806 of yacc.c  */
     8142#line 2248 "parser.yy"
    81438143    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81448144    break;
    81458145
    8146   case 585:
    8147 
    8148 /* Line 1806 of yacc.c  */
    8149 #line 2221 "parser.yy"
     8146  case 594:
     8147
     8148/* Line 1806 of yacc.c  */
     8149#line 2253 "parser.yy"
    81508150    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81518151    break;
    81528152
    8153   case 586:
    8154 
    8155 /* Line 1806 of yacc.c  */
    8156 #line 2223 "parser.yy"
     8153  case 595:
     8154
     8155/* Line 1806 of yacc.c  */
     8156#line 2255 "parser.yy"
    81578157    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    81588158    break;
    81598159
    8160   case 587:
    8161 
    8162 /* Line 1806 of yacc.c  */
    8163 #line 2225 "parser.yy"
     8160  case 596:
     8161
     8162/* Line 1806 of yacc.c  */
     8163#line 2257 "parser.yy"
    81648164    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81658165    break;
    81668166
    8167   case 588:
    8168 
    8169 /* Line 1806 of yacc.c  */
    8170 #line 2240 "parser.yy"
     8167  case 597:
     8168
     8169/* Line 1806 of yacc.c  */
     8170#line 2272 "parser.yy"
    81718171    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81728172    break;
    81738173
    8174   case 590:
    8175 
    8176 /* Line 1806 of yacc.c  */
    8177 #line 2243 "parser.yy"
     8174  case 599:
     8175
     8176/* Line 1806 of yacc.c  */
     8177#line 2275 "parser.yy"
    81788178    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81798179    break;
    81808180
    8181   case 591:
    8182 
    8183 /* Line 1806 of yacc.c  */
    8184 #line 2245 "parser.yy"
     8181  case 600:
     8182
     8183/* Line 1806 of yacc.c  */
     8184#line 2277 "parser.yy"
    81858185    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    81868186    break;
    81878187
    8188   case 593:
    8189 
    8190 /* Line 1806 of yacc.c  */
    8191 #line 2251 "parser.yy"
     8188  case 602:
     8189
     8190/* Line 1806 of yacc.c  */
     8191#line 2283 "parser.yy"
    81928192    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    81938193    break;
    81948194
    8195   case 594:
    8196 
    8197 /* Line 1806 of yacc.c  */
    8198 #line 2256 "parser.yy"
     8195  case 603:
     8196
     8197/* Line 1806 of yacc.c  */
     8198#line 2288 "parser.yy"
    81998199    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82008200    break;
    82018201
    8202   case 595:
    8203 
    8204 /* Line 1806 of yacc.c  */
    8205 #line 2258 "parser.yy"
     8202  case 604:
     8203
     8204/* Line 1806 of yacc.c  */
     8205#line 2290 "parser.yy"
    82068206    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82078207    break;
    82088208
    8209   case 596:
    8210 
    8211 /* Line 1806 of yacc.c  */
    8212 #line 2260 "parser.yy"
     8209  case 605:
     8210
     8211/* Line 1806 of yacc.c  */
     8212#line 2292 "parser.yy"
    82138213    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82148214    break;
    82158215
    8216   case 597:
    8217 
    8218 /* Line 1806 of yacc.c  */
    8219 #line 2265 "parser.yy"
     8216  case 606:
     8217
     8218/* Line 1806 of yacc.c  */
     8219#line 2297 "parser.yy"
    82208220    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    82218221    break;
    82228222
    8223   case 598:
    8224 
    8225 /* Line 1806 of yacc.c  */
    8226 #line 2267 "parser.yy"
     8223  case 607:
     8224
     8225/* Line 1806 of yacc.c  */
     8226#line 2299 "parser.yy"
    82278227    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82288228    break;
    82298229
    8230   case 599:
    8231 
    8232 /* Line 1806 of yacc.c  */
    8233 #line 2269 "parser.yy"
     8230  case 608:
     8231
     8232/* Line 1806 of yacc.c  */
     8233#line 2301 "parser.yy"
    82348234    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    82358235    break;
    82368236
    8237   case 600:
    8238 
    8239 /* Line 1806 of yacc.c  */
    8240 #line 2271 "parser.yy"
     8237  case 609:
     8238
     8239/* Line 1806 of yacc.c  */
     8240#line 2303 "parser.yy"
    82418241    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82428242    break;
    82438243
    8244   case 601:
    8245 
    8246 /* Line 1806 of yacc.c  */
    8247 #line 2276 "parser.yy"
     8244  case 610:
     8245
     8246/* Line 1806 of yacc.c  */
     8247#line 2308 "parser.yy"
    82488248    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    82498249    break;
    82508250
    8251   case 602:
    8252 
    8253 /* Line 1806 of yacc.c  */
    8254 #line 2278 "parser.yy"
     8251  case 611:
     8252
     8253/* Line 1806 of yacc.c  */
     8254#line 2310 "parser.yy"
    82558255    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    82568256    break;
    82578257
    8258   case 603:
    8259 
    8260 /* Line 1806 of yacc.c  */
    8261 #line 2280 "parser.yy"
     8258  case 612:
     8259
     8260/* Line 1806 of yacc.c  */
     8261#line 2312 "parser.yy"
    82628262    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    82638263    break;
    82648264
    8265   case 604:
    8266 
    8267 /* Line 1806 of yacc.c  */
    8268 #line 2290 "parser.yy"
     8265  case 613:
     8266
     8267/* Line 1806 of yacc.c  */
     8268#line 2322 "parser.yy"
    82698269    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82708270    break;
    82718271
    8272   case 606:
    8273 
    8274 /* Line 1806 of yacc.c  */
    8275 #line 2293 "parser.yy"
     8272  case 615:
     8273
     8274/* Line 1806 of yacc.c  */
     8275#line 2325 "parser.yy"
    82768276    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82778277    break;
    82788278
    8279   case 607:
    8280 
    8281 /* Line 1806 of yacc.c  */
    8282 #line 2295 "parser.yy"
     8279  case 616:
     8280
     8281/* Line 1806 of yacc.c  */
     8282#line 2327 "parser.yy"
    82838283    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    82848284    break;
    82858285
    8286   case 608:
    8287 
    8288 /* Line 1806 of yacc.c  */
    8289 #line 2300 "parser.yy"
     8286  case 617:
     8287
     8288/* Line 1806 of yacc.c  */
     8289#line 2332 "parser.yy"
    82908290    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    82918291    break;
    82928292
    8293   case 609:
    8294 
    8295 /* Line 1806 of yacc.c  */
    8296 #line 2302 "parser.yy"
     8293  case 618:
     8294
     8295/* Line 1806 of yacc.c  */
     8296#line 2334 "parser.yy"
    82978297    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    82988298    break;
    82998299
    8300   case 610:
    8301 
    8302 /* Line 1806 of yacc.c  */
    8303 #line 2304 "parser.yy"
     8300  case 619:
     8301
     8302/* Line 1806 of yacc.c  */
     8303#line 2336 "parser.yy"
    83048304    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83058305    break;
    83068306
    8307   case 611:
    8308 
    8309 /* Line 1806 of yacc.c  */
    8310 #line 2309 "parser.yy"
     8307  case 620:
     8308
     8309/* Line 1806 of yacc.c  */
     8310#line 2341 "parser.yy"
    83118311    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    83128312    break;
    83138313
    8314   case 612:
    8315 
    8316 /* Line 1806 of yacc.c  */
    8317 #line 2311 "parser.yy"
     8314  case 621:
     8315
     8316/* Line 1806 of yacc.c  */
     8317#line 2343 "parser.yy"
    83188318    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83198319    break;
    83208320
    8321   case 613:
    8322 
    8323 /* Line 1806 of yacc.c  */
    8324 #line 2313 "parser.yy"
     8321  case 622:
     8322
     8323/* Line 1806 of yacc.c  */
     8324#line 2345 "parser.yy"
    83258325    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    83268326    break;
    83278327
    8328   case 614:
    8329 
    8330 /* Line 1806 of yacc.c  */
    8331 #line 2315 "parser.yy"
     8328  case 623:
     8329
     8330/* Line 1806 of yacc.c  */
     8331#line 2347 "parser.yy"
    83328332    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83338333    break;
    83348334
    8335   case 615:
    8336 
    8337 /* Line 1806 of yacc.c  */
    8338 #line 2320 "parser.yy"
     8335  case 624:
     8336
     8337/* Line 1806 of yacc.c  */
     8338#line 2352 "parser.yy"
    83398339    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    83408340    break;
    83418341
    8342   case 616:
    8343 
    8344 /* Line 1806 of yacc.c  */
    8345 #line 2322 "parser.yy"
     8342  case 625:
     8343
     8344/* Line 1806 of yacc.c  */
     8345#line 2354 "parser.yy"
    83468346    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    83478347    break;
    83488348
    8349   case 617:
    8350 
    8351 /* Line 1806 of yacc.c  */
    8352 #line 2324 "parser.yy"
     8349  case 626:
     8350
     8351/* Line 1806 of yacc.c  */
     8352#line 2356 "parser.yy"
    83538353    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    83548354    break;
    83558355
    8356   case 618:
    8357 
    8358 /* Line 1806 of yacc.c  */
    8359 #line 2355 "parser.yy"
     8356  case 627:
     8357
     8358/* Line 1806 of yacc.c  */
     8359#line 2387 "parser.yy"
    83608360    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83618361    break;
    83628362
    8363   case 620:
    8364 
    8365 /* Line 1806 of yacc.c  */
    8366 #line 2358 "parser.yy"
     8363  case 629:
     8364
     8365/* Line 1806 of yacc.c  */
     8366#line 2390 "parser.yy"
    83678367    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83688368    break;
    83698369
    8370   case 621:
    8371 
    8372 /* Line 1806 of yacc.c  */
    8373 #line 2360 "parser.yy"
     8370  case 630:
     8371
     8372/* Line 1806 of yacc.c  */
     8373#line 2392 "parser.yy"
    83748374    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    83758375    break;
    83768376
    8377   case 622:
    8378 
    8379 /* Line 1806 of yacc.c  */
    8380 #line 2365 "parser.yy"
     8377  case 631:
     8378
     8379/* Line 1806 of yacc.c  */
     8380#line 2397 "parser.yy"
    83818381    {
    83828382                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83858385    break;
    83868386
    8387   case 623:
    8388 
    8389 /* Line 1806 of yacc.c  */
    8390 #line 2370 "parser.yy"
     8387  case 632:
     8388
     8389/* Line 1806 of yacc.c  */
     8390#line 2402 "parser.yy"
    83918391    {
    83928392                        typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
     
    83958395    break;
    83968396
    8397   case 624:
    8398 
    8399 /* Line 1806 of yacc.c  */
    8400 #line 2378 "parser.yy"
     8397  case 633:
     8398
     8399/* Line 1806 of yacc.c  */
     8400#line 2410 "parser.yy"
    84018401    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84028402    break;
    84038403
    8404   case 625:
    8405 
    8406 /* Line 1806 of yacc.c  */
    8407 #line 2380 "parser.yy"
     8404  case 634:
     8405
     8406/* Line 1806 of yacc.c  */
     8407#line 2412 "parser.yy"
    84088408    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84098409    break;
    84108410
    8411   case 626:
    8412 
    8413 /* Line 1806 of yacc.c  */
    8414 #line 2382 "parser.yy"
     8411  case 635:
     8412
     8413/* Line 1806 of yacc.c  */
     8414#line 2414 "parser.yy"
    84158415    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84168416    break;
    84178417
    8418   case 627:
    8419 
    8420 /* Line 1806 of yacc.c  */
    8421 #line 2387 "parser.yy"
     8418  case 636:
     8419
     8420/* Line 1806 of yacc.c  */
     8421#line 2419 "parser.yy"
    84228422    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    84238423    break;
    84248424
    8425   case 628:
    8426 
    8427 /* Line 1806 of yacc.c  */
    8428 #line 2389 "parser.yy"
     8425  case 637:
     8426
     8427/* Line 1806 of yacc.c  */
     8428#line 2421 "parser.yy"
    84298429    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    84308430    break;
    84318431
    8432   case 629:
    8433 
    8434 /* Line 1806 of yacc.c  */
    8435 #line 2394 "parser.yy"
     8432  case 638:
     8433
     8434/* Line 1806 of yacc.c  */
     8435#line 2426 "parser.yy"
    84368436    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
    84378437    break;
    84388438
    8439   case 630:
    8440 
    8441 /* Line 1806 of yacc.c  */
    8442 #line 2396 "parser.yy"
     8439  case 639:
     8440
     8441/* Line 1806 of yacc.c  */
     8442#line 2428 "parser.yy"
    84438443    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    84448444    break;
    84458445
    8446   case 632:
    8447 
    8448 /* Line 1806 of yacc.c  */
    8449 #line 2411 "parser.yy"
     8446  case 641:
     8447
     8448/* Line 1806 of yacc.c  */
     8449#line 2443 "parser.yy"
    84508450    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84518451    break;
    84528452
    8453   case 633:
    8454 
    8455 /* Line 1806 of yacc.c  */
    8456 #line 2413 "parser.yy"
     8453  case 642:
     8454
     8455/* Line 1806 of yacc.c  */
     8456#line 2445 "parser.yy"
    84578457    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    84588458    break;
    84598459
    8460   case 634:
    8461 
    8462 /* Line 1806 of yacc.c  */
    8463 #line 2418 "parser.yy"
     8460  case 643:
     8461
     8462/* Line 1806 of yacc.c  */
     8463#line 2450 "parser.yy"
    84648464    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    84658465    break;
    84668466
    8467   case 635:
    8468 
    8469 /* Line 1806 of yacc.c  */
    8470 #line 2420 "parser.yy"
     8467  case 644:
     8468
     8469/* Line 1806 of yacc.c  */
     8470#line 2452 "parser.yy"
    84718471    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    84728472    break;
    84738473
    8474   case 636:
    8475 
    8476 /* Line 1806 of yacc.c  */
    8477 #line 2422 "parser.yy"
     8474  case 645:
     8475
     8476/* Line 1806 of yacc.c  */
     8477#line 2454 "parser.yy"
    84788478    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    84798479    break;
    84808480
    8481   case 637:
    8482 
    8483 /* Line 1806 of yacc.c  */
    8484 #line 2424 "parser.yy"
     8481  case 646:
     8482
     8483/* Line 1806 of yacc.c  */
     8484#line 2456 "parser.yy"
    84858485    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    84868486    break;
    84878487
    8488   case 638:
    8489 
    8490 /* Line 1806 of yacc.c  */
    8491 #line 2426 "parser.yy"
     8488  case 647:
     8489
     8490/* Line 1806 of yacc.c  */
     8491#line 2458 "parser.yy"
    84928492    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    84938493    break;
    84948494
    8495   case 640:
    8496 
    8497 /* Line 1806 of yacc.c  */
    8498 #line 2432 "parser.yy"
     8495  case 649:
     8496
     8497/* Line 1806 of yacc.c  */
     8498#line 2464 "parser.yy"
    84998499    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85008500    break;
    85018501
    8502   case 641:
    8503 
    8504 /* Line 1806 of yacc.c  */
    8505 #line 2434 "parser.yy"
     8502  case 650:
     8503
     8504/* Line 1806 of yacc.c  */
     8505#line 2466 "parser.yy"
    85068506    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    85078507    break;
    85088508
    8509   case 642:
    8510 
    8511 /* Line 1806 of yacc.c  */
    8512 #line 2436 "parser.yy"
     8509  case 651:
     8510
     8511/* Line 1806 of yacc.c  */
     8512#line 2468 "parser.yy"
    85138513    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85148514    break;
    85158515
    8516   case 643:
    8517 
    8518 /* Line 1806 of yacc.c  */
    8519 #line 2441 "parser.yy"
     8516  case 652:
     8517
     8518/* Line 1806 of yacc.c  */
     8519#line 2473 "parser.yy"
    85208520    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    85218521    break;
    85228522
    8523   case 644:
    8524 
    8525 /* Line 1806 of yacc.c  */
    8526 #line 2443 "parser.yy"
     8523  case 653:
     8524
     8525/* Line 1806 of yacc.c  */
     8526#line 2475 "parser.yy"
    85278527    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    85288528    break;
    85298529
    8530   case 645:
    8531 
    8532 /* Line 1806 of yacc.c  */
    8533 #line 2445 "parser.yy"
     8530  case 654:
     8531
     8532/* Line 1806 of yacc.c  */
     8533#line 2477 "parser.yy"
    85348534    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    85358535    break;
    85368536
    8537   case 646:
    8538 
    8539 /* Line 1806 of yacc.c  */
    8540 #line 2451 "parser.yy"
     8537  case 655:
     8538
     8539/* Line 1806 of yacc.c  */
     8540#line 2483 "parser.yy"
    85418541    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    85428542    break;
    85438543
    8544   case 647:
    8545 
    8546 /* Line 1806 of yacc.c  */
    8547 #line 2453 "parser.yy"
     8544  case 656:
     8545
     8546/* Line 1806 of yacc.c  */
     8547#line 2485 "parser.yy"
    85488548    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
    85498549    break;
    85508550
    8551   case 649:
    8552 
    8553 /* Line 1806 of yacc.c  */
    8554 #line 2459 "parser.yy"
     8551  case 658:
     8552
     8553/* Line 1806 of yacc.c  */
     8554#line 2491 "parser.yy"
    85558555    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
    85568556    break;
    85578557
    8558   case 650:
    8559 
    8560 /* Line 1806 of yacc.c  */
    8561 #line 2461 "parser.yy"
     8558  case 659:
     8559
     8560/* Line 1806 of yacc.c  */
     8561#line 2493 "parser.yy"
    85628562    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
    85638563    break;
    85648564
    8565   case 651:
    8566 
    8567 /* Line 1806 of yacc.c  */
    8568 #line 2463 "parser.yy"
     8565  case 660:
     8566
     8567/* Line 1806 of yacc.c  */
     8568#line 2495 "parser.yy"
    85698569    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
    85708570    break;
    85718571
    8572   case 652:
    8573 
    8574 /* Line 1806 of yacc.c  */
    8575 #line 2465 "parser.yy"
     8572  case 661:
     8573
     8574/* Line 1806 of yacc.c  */
     8575#line 2497 "parser.yy"
    85768576    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
    85778577    break;
    85788578
    8579   case 654:
    8580 
    8581 /* Line 1806 of yacc.c  */
    8582 #line 2480 "parser.yy"
     8579  case 663:
     8580
     8581/* Line 1806 of yacc.c  */
     8582#line 2512 "parser.yy"
    85838583    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85848584    break;
    85858585
    8586   case 655:
    8587 
    8588 /* Line 1806 of yacc.c  */
    8589 #line 2482 "parser.yy"
     8586  case 664:
     8587
     8588/* Line 1806 of yacc.c  */
     8589#line 2514 "parser.yy"
    85908590    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    85918591    break;
    85928592
    8593   case 656:
    8594 
    8595 /* Line 1806 of yacc.c  */
    8596 #line 2487 "parser.yy"
     8593  case 665:
     8594
     8595/* Line 1806 of yacc.c  */
     8596#line 2519 "parser.yy"
    85978597    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    85988598    break;
    85998599
    8600   case 657:
    8601 
    8602 /* Line 1806 of yacc.c  */
    8603 #line 2489 "parser.yy"
     8600  case 666:
     8601
     8602/* Line 1806 of yacc.c  */
     8603#line 2521 "parser.yy"
    86048604    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    86058605    break;
    86068606
    8607   case 658:
    8608 
    8609 /* Line 1806 of yacc.c  */
    8610 #line 2491 "parser.yy"
     8607  case 667:
     8608
     8609/* Line 1806 of yacc.c  */
     8610#line 2523 "parser.yy"
    86118611    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    86128612    break;
    86138613
    8614   case 659:
    8615 
    8616 /* Line 1806 of yacc.c  */
    8617 #line 2493 "parser.yy"
     8614  case 668:
     8615
     8616/* Line 1806 of yacc.c  */
     8617#line 2525 "parser.yy"
    86188618    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    86198619    break;
    86208620
    8621   case 660:
    8622 
    8623 /* Line 1806 of yacc.c  */
    8624 #line 2495 "parser.yy"
     8621  case 669:
     8622
     8623/* Line 1806 of yacc.c  */
     8624#line 2527 "parser.yy"
    86258625    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86268626    break;
    86278627
    8628   case 662:
    8629 
    8630 /* Line 1806 of yacc.c  */
    8631 #line 2501 "parser.yy"
     8628  case 671:
     8629
     8630/* Line 1806 of yacc.c  */
     8631#line 2533 "parser.yy"
    86328632    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86338633    break;
    86348634
    8635   case 663:
    8636 
    8637 /* Line 1806 of yacc.c  */
    8638 #line 2503 "parser.yy"
     8635  case 672:
     8636
     8637/* Line 1806 of yacc.c  */
     8638#line 2535 "parser.yy"
    86398639    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    86408640    break;
    86418641
    8642   case 664:
    8643 
    8644 /* Line 1806 of yacc.c  */
    8645 #line 2505 "parser.yy"
     8642  case 673:
     8643
     8644/* Line 1806 of yacc.c  */
     8645#line 2537 "parser.yy"
    86468646    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86478647    break;
    86488648
    8649   case 665:
    8650 
    8651 /* Line 1806 of yacc.c  */
    8652 #line 2510 "parser.yy"
     8649  case 674:
     8650
     8651/* Line 1806 of yacc.c  */
     8652#line 2542 "parser.yy"
    86538653    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
    86548654    break;
    86558655
    8656   case 666:
    8657 
    8658 /* Line 1806 of yacc.c  */
    8659 #line 2512 "parser.yy"
     8656  case 675:
     8657
     8658/* Line 1806 of yacc.c  */
     8659#line 2544 "parser.yy"
    86608660    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    86618661    break;
    86628662
    8663   case 667:
    8664 
    8665 /* Line 1806 of yacc.c  */
    8666 #line 2514 "parser.yy"
     8663  case 676:
     8664
     8665/* Line 1806 of yacc.c  */
     8666#line 2546 "parser.yy"
    86678667    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    86688668    break;
    86698669
    8670   case 669:
    8671 
    8672 /* Line 1806 of yacc.c  */
    8673 #line 2521 "parser.yy"
     8670  case 678:
     8671
     8672/* Line 1806 of yacc.c  */
     8673#line 2553 "parser.yy"
    86748674    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
    86758675    break;
    86768676
    8677   case 671:
    8678 
    8679 /* Line 1806 of yacc.c  */
    8680 #line 2532 "parser.yy"
     8677  case 680:
     8678
     8679/* Line 1806 of yacc.c  */
     8680#line 2564 "parser.yy"
    86818681    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
    86828682    break;
    86838683
    8684   case 672:
    8685 
    8686 /* Line 1806 of yacc.c  */
    8687 #line 2535 "parser.yy"
     8684  case 681:
     8685
     8686/* Line 1806 of yacc.c  */
     8687#line 2567 "parser.yy"
    86888688    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    86898689    break;
    86908690
    8691   case 673:
    8692 
    8693 /* Line 1806 of yacc.c  */
    8694 #line 2537 "parser.yy"
     8691  case 682:
     8692
     8693/* Line 1806 of yacc.c  */
     8694#line 2569 "parser.yy"
    86958695    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
    86968696    break;
    86978697
    8698   case 674:
    8699 
    8700 /* Line 1806 of yacc.c  */
    8701 #line 2540 "parser.yy"
     8698  case 683:
     8699
     8700/* Line 1806 of yacc.c  */
     8701#line 2572 "parser.yy"
    87028702    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    87038703    break;
    87048704
    8705   case 675:
    8706 
    8707 /* Line 1806 of yacc.c  */
    8708 #line 2542 "parser.yy"
     8705  case 684:
     8706
     8707/* Line 1806 of yacc.c  */
     8708#line 2574 "parser.yy"
    87098709    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
    87108710    break;
    87118711
    8712   case 676:
    8713 
    8714 /* Line 1806 of yacc.c  */
    8715 #line 2544 "parser.yy"
     8712  case 685:
     8713
     8714/* Line 1806 of yacc.c  */
     8715#line 2576 "parser.yy"
    87168716    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
    87178717    break;
    87188718
    8719   case 678:
    8720 
    8721 /* Line 1806 of yacc.c  */
    8722 #line 2558 "parser.yy"
     8719  case 687:
     8720
     8721/* Line 1806 of yacc.c  */
     8722#line 2590 "parser.yy"
    87238723    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87248724    break;
    87258725
    8726   case 679:
    8727 
    8728 /* Line 1806 of yacc.c  */
    8729 #line 2560 "parser.yy"
     8726  case 688:
     8727
     8728/* Line 1806 of yacc.c  */
     8729#line 2592 "parser.yy"
    87308730    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
    87318731    break;
    87328732
    8733   case 680:
    8734 
    8735 /* Line 1806 of yacc.c  */
    8736 #line 2565 "parser.yy"
     8733  case 689:
     8734
     8735/* Line 1806 of yacc.c  */
     8736#line 2597 "parser.yy"
    87378737    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
    87388738    break;
    87398739
    8740   case 681:
    8741 
    8742 /* Line 1806 of yacc.c  */
    8743 #line 2567 "parser.yy"
     8740  case 690:
     8741
     8742/* Line 1806 of yacc.c  */
     8743#line 2599 "parser.yy"
    87448744    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
    87458745    break;
    87468746
    8747   case 682:
    8748 
    8749 /* Line 1806 of yacc.c  */
    8750 #line 2569 "parser.yy"
     8747  case 691:
     8748
     8749/* Line 1806 of yacc.c  */
     8750#line 2601 "parser.yy"
    87518751    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
    87528752    break;
    87538753
    8754   case 683:
    8755 
    8756 /* Line 1806 of yacc.c  */
    8757 #line 2571 "parser.yy"
     8754  case 692:
     8755
     8756/* Line 1806 of yacc.c  */
     8757#line 2603 "parser.yy"
    87588758    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
    87598759    break;
    87608760
    8761   case 684:
    8762 
    8763 /* Line 1806 of yacc.c  */
    8764 #line 2573 "parser.yy"
     8761  case 693:
     8762
     8763/* Line 1806 of yacc.c  */
     8764#line 2605 "parser.yy"
    87658765    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87668766    break;
    87678767
    8768   case 686:
    8769 
    8770 /* Line 1806 of yacc.c  */
    8771 #line 2579 "parser.yy"
     8768  case 695:
     8769
     8770/* Line 1806 of yacc.c  */
     8771#line 2611 "parser.yy"
    87728772    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87738773    break;
    87748774
    8775   case 687:
    8776 
    8777 /* Line 1806 of yacc.c  */
    8778 #line 2581 "parser.yy"
     8775  case 696:
     8776
     8777/* Line 1806 of yacc.c  */
     8778#line 2613 "parser.yy"
    87798779    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
    87808780    break;
    87818781
    8782   case 688:
    8783 
    8784 /* Line 1806 of yacc.c  */
    8785 #line 2583 "parser.yy"
     8782  case 697:
     8783
     8784/* Line 1806 of yacc.c  */
     8785#line 2615 "parser.yy"
    87868786    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    87878787    break;
    87888788
    8789   case 689:
    8790 
    8791 /* Line 1806 of yacc.c  */
    8792 #line 2588 "parser.yy"
     8789  case 698:
     8790
     8791/* Line 1806 of yacc.c  */
     8792#line 2620 "parser.yy"
    87938793    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
    87948794    break;
    87958795
    8796   case 690:
    8797 
    8798 /* Line 1806 of yacc.c  */
    8799 #line 2590 "parser.yy"
     8796  case 699:
     8797
     8798/* Line 1806 of yacc.c  */
     8799#line 2622 "parser.yy"
    88008800    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
    88018801    break;
    88028802
    8803   case 693:
    8804 
    8805 /* Line 1806 of yacc.c  */
    8806 #line 2600 "parser.yy"
     8803  case 702:
     8804
     8805/* Line 1806 of yacc.c  */
     8806#line 2632 "parser.yy"
    88078807    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    88088808    break;
    88098809
    8810   case 696:
    8811 
    8812 /* Line 1806 of yacc.c  */
    8813 #line 2610 "parser.yy"
     8810  case 705:
     8811
     8812/* Line 1806 of yacc.c  */
     8813#line 2642 "parser.yy"
    88148814    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88158815    break;
    88168816
    8817   case 697:
    8818 
    8819 /* Line 1806 of yacc.c  */
    8820 #line 2612 "parser.yy"
     8817  case 706:
     8818
     8819/* Line 1806 of yacc.c  */
     8820#line 2644 "parser.yy"
    88218821    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88228822    break;
    88238823
    8824   case 698:
    8825 
    8826 /* Line 1806 of yacc.c  */
    8827 #line 2614 "parser.yy"
     8824  case 707:
     8825
     8826/* Line 1806 of yacc.c  */
     8827#line 2646 "parser.yy"
    88288828    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88298829    break;
    88308830
    8831   case 699:
    8832 
    8833 /* Line 1806 of yacc.c  */
    8834 #line 2616 "parser.yy"
     8831  case 708:
     8832
     8833/* Line 1806 of yacc.c  */
     8834#line 2648 "parser.yy"
    88358835    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88368836    break;
    88378837
    8838   case 700:
    8839 
    8840 /* Line 1806 of yacc.c  */
    8841 #line 2618 "parser.yy"
     8838  case 709:
     8839
     8840/* Line 1806 of yacc.c  */
     8841#line 2650 "parser.yy"
    88428842    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    88438843    break;
    88448844
    8845   case 701:
    8846 
    8847 /* Line 1806 of yacc.c  */
    8848 #line 2620 "parser.yy"
     8845  case 710:
     8846
     8847/* Line 1806 of yacc.c  */
     8848#line 2652 "parser.yy"
    88498849    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    88508850    break;
    88518851
    8852   case 702:
    8853 
    8854 /* Line 1806 of yacc.c  */
    8855 #line 2627 "parser.yy"
     8852  case 711:
     8853
     8854/* Line 1806 of yacc.c  */
     8855#line 2659 "parser.yy"
    88568856    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88578857    break;
    88588858
    8859   case 703:
    8860 
    8861 /* Line 1806 of yacc.c  */
    8862 #line 2629 "parser.yy"
     8859  case 712:
     8860
     8861/* Line 1806 of yacc.c  */
     8862#line 2661 "parser.yy"
    88638863    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88648864    break;
    88658865
    8866   case 704:
    8867 
    8868 /* Line 1806 of yacc.c  */
    8869 #line 2631 "parser.yy"
     8866  case 713:
     8867
     8868/* Line 1806 of yacc.c  */
     8869#line 2663 "parser.yy"
    88708870    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88718871    break;
    88728872
    8873   case 705:
    8874 
    8875 /* Line 1806 of yacc.c  */
    8876 #line 2633 "parser.yy"
     8873  case 714:
     8874
     8875/* Line 1806 of yacc.c  */
     8876#line 2665 "parser.yy"
    88778877    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    88788878    break;
    88798879
    8880   case 706:
    8881 
    8882 /* Line 1806 of yacc.c  */
    8883 #line 2635 "parser.yy"
     8880  case 715:
     8881
     8882/* Line 1806 of yacc.c  */
     8883#line 2667 "parser.yy"
    88848884    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88858885    break;
    88868886
    8887   case 707:
    8888 
    8889 /* Line 1806 of yacc.c  */
    8890 #line 2637 "parser.yy"
     8887  case 716:
     8888
     8889/* Line 1806 of yacc.c  */
     8890#line 2669 "parser.yy"
    88918891    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    88928892    break;
    88938893
    8894   case 708:
    8895 
    8896 /* Line 1806 of yacc.c  */
    8897 #line 2639 "parser.yy"
     8894  case 717:
     8895
     8896/* Line 1806 of yacc.c  */
     8897#line 2671 "parser.yy"
    88988898    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    88998899    break;
    89008900
    8901   case 709:
    8902 
    8903 /* Line 1806 of yacc.c  */
    8904 #line 2641 "parser.yy"
     8901  case 718:
     8902
     8903/* Line 1806 of yacc.c  */
     8904#line 2673 "parser.yy"
    89058905    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    89068906    break;
    89078907
    8908   case 710:
    8909 
    8910 /* Line 1806 of yacc.c  */
    8911 #line 2643 "parser.yy"
     8908  case 719:
     8909
     8910/* Line 1806 of yacc.c  */
     8911#line 2675 "parser.yy"
    89128912    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
    89138913    break;
    89148914
    8915   case 711:
    8916 
    8917 /* Line 1806 of yacc.c  */
    8918 #line 2645 "parser.yy"
     8915  case 720:
     8916
     8917/* Line 1806 of yacc.c  */
     8918#line 2677 "parser.yy"
    89198919    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    89208920    break;
    89218921
    8922   case 712:
    8923 
    8924 /* Line 1806 of yacc.c  */
    8925 #line 2650 "parser.yy"
     8922  case 721:
     8923
     8924/* Line 1806 of yacc.c  */
     8925#line 2682 "parser.yy"
    89268926    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
    89278927    break;
    89288928
    8929   case 713:
    8930 
    8931 /* Line 1806 of yacc.c  */
    8932 #line 2652 "parser.yy"
     8929  case 722:
     8930
     8931/* Line 1806 of yacc.c  */
     8932#line 2684 "parser.yy"
    89338933    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
    89348934    break;
    89358935
    8936   case 714:
    8937 
    8938 /* Line 1806 of yacc.c  */
    8939 #line 2657 "parser.yy"
     8936  case 723:
     8937
     8938/* Line 1806 of yacc.c  */
     8939#line 2689 "parser.yy"
    89408940    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
    89418941    break;
    89428942
    8943   case 715:
    8944 
    8945 /* Line 1806 of yacc.c  */
    8946 #line 2659 "parser.yy"
     8943  case 724:
     8944
     8945/* Line 1806 of yacc.c  */
     8946#line 2691 "parser.yy"
    89478947    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
    89488948    break;
    89498949
    8950   case 717:
    8951 
    8952 /* Line 1806 of yacc.c  */
    8953 #line 2686 "parser.yy"
     8950  case 726:
     8951
     8952/* Line 1806 of yacc.c  */
     8953#line 2718 "parser.yy"
    89548954    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
    89558955    break;
    89568956
    8957   case 721:
    8958 
    8959 /* Line 1806 of yacc.c  */
    8960 #line 2697 "parser.yy"
     8957  case 730:
     8958
     8959/* Line 1806 of yacc.c  */
     8960#line 2729 "parser.yy"
    89618961    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89628962    break;
    89638963
    8964   case 722:
    8965 
    8966 /* Line 1806 of yacc.c  */
    8967 #line 2699 "parser.yy"
     8964  case 731:
     8965
     8966/* Line 1806 of yacc.c  */
     8967#line 2731 "parser.yy"
    89688968    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89698969    break;
    89708970
    8971   case 723:
    8972 
    8973 /* Line 1806 of yacc.c  */
    8974 #line 2701 "parser.yy"
     8971  case 732:
     8972
     8973/* Line 1806 of yacc.c  */
     8974#line 2733 "parser.yy"
    89758975    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89768976    break;
    89778977
    8978   case 724:
    8979 
    8980 /* Line 1806 of yacc.c  */
    8981 #line 2703 "parser.yy"
     8978  case 733:
     8979
     8980/* Line 1806 of yacc.c  */
     8981#line 2735 "parser.yy"
    89828982    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89838983    break;
    89848984
    8985   case 725:
    8986 
    8987 /* Line 1806 of yacc.c  */
    8988 #line 2705 "parser.yy"
     8985  case 734:
     8986
     8987/* Line 1806 of yacc.c  */
     8988#line 2737 "parser.yy"
    89898989    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
    89908990    break;
    89918991
    8992   case 726:
    8993 
    8994 /* Line 1806 of yacc.c  */
    8995 #line 2707 "parser.yy"
     8992  case 735:
     8993
     8994/* Line 1806 of yacc.c  */
     8995#line 2739 "parser.yy"
    89968996    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
    89978997    break;
    89988998
    8999   case 727:
    9000 
    9001 /* Line 1806 of yacc.c  */
    9002 #line 2714 "parser.yy"
     8999  case 736:
     9000
     9001/* Line 1806 of yacc.c  */
     9002#line 2746 "parser.yy"
    90039003    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90049004    break;
    90059005
    9006   case 728:
    9007 
    9008 /* Line 1806 of yacc.c  */
    9009 #line 2716 "parser.yy"
     9006  case 737:
     9007
     9008/* Line 1806 of yacc.c  */
     9009#line 2748 "parser.yy"
    90109010    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90119011    break;
    90129012
    9013   case 729:
    9014 
    9015 /* Line 1806 of yacc.c  */
    9016 #line 2718 "parser.yy"
     9013  case 738:
     9014
     9015/* Line 1806 of yacc.c  */
     9016#line 2750 "parser.yy"
    90179017    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90189018    break;
    90199019
    9020   case 730:
    9021 
    9022 /* Line 1806 of yacc.c  */
    9023 #line 2720 "parser.yy"
     9020  case 739:
     9021
     9022/* Line 1806 of yacc.c  */
     9023#line 2752 "parser.yy"
    90249024    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90259025    break;
    90269026
    9027   case 731:
    9028 
    9029 /* Line 1806 of yacc.c  */
    9030 #line 2722 "parser.yy"
     9027  case 740:
     9028
     9029/* Line 1806 of yacc.c  */
     9030#line 2754 "parser.yy"
    90319031    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
    90329032    break;
    90339033
    9034   case 732:
    9035 
    9036 /* Line 1806 of yacc.c  */
    9037 #line 2724 "parser.yy"
     9034  case 741:
     9035
     9036/* Line 1806 of yacc.c  */
     9037#line 2756 "parser.yy"
    90389038    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
    90399039    break;
    90409040
    9041   case 733:
    9042 
    9043 /* Line 1806 of yacc.c  */
    9044 #line 2729 "parser.yy"
     9041  case 742:
     9042
     9043/* Line 1806 of yacc.c  */
     9044#line 2761 "parser.yy"
    90459045    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
    90469046    break;
    90479047
    9048   case 734:
    9049 
    9050 /* Line 1806 of yacc.c  */
    9051 #line 2734 "parser.yy"
     9048  case 743:
     9049
     9050/* Line 1806 of yacc.c  */
     9051#line 2766 "parser.yy"
    90529052    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
    90539053    break;
    90549054
    9055   case 735:
    9056 
    9057 /* Line 1806 of yacc.c  */
    9058 #line 2736 "parser.yy"
     9055  case 744:
     9056
     9057/* Line 1806 of yacc.c  */
     9058#line 2768 "parser.yy"
    90599059    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90609060    break;
    90619061
    9062   case 736:
    9063 
    9064 /* Line 1806 of yacc.c  */
    9065 #line 2738 "parser.yy"
     9062  case 745:
     9063
     9064/* Line 1806 of yacc.c  */
     9065#line 2770 "parser.yy"
    90669066    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
    90679067    break;
    90689068
    9069   case 739:
    9070 
    9071 /* Line 1806 of yacc.c  */
    9072 #line 2762 "parser.yy"
     9069  case 748:
     9070
     9071/* Line 1806 of yacc.c  */
     9072#line 2794 "parser.yy"
    90739073    { (yyval.en) = 0; }
    90749074    break;
    90759075
    9076   case 740:
    9077 
    9078 /* Line 1806 of yacc.c  */
    9079 #line 2764 "parser.yy"
     9076  case 749:
     9077
     9078/* Line 1806 of yacc.c  */
     9079#line 2796 "parser.yy"
    90809080    { (yyval.en) = (yyvsp[(2) - (2)].en); }
    90819081    break;
     
    93159315
    93169316/* Line 2067 of yacc.c  */
    9317 #line 2767 "parser.yy"
     9317#line 2799 "parser.yy"
    93189318
    93199319// ----end of grammar----
  • src/Parser/parser.h

    r698664b3 rd2ded3e7  
    8787     RETURN = 305,
    8888     CHOOSE = 306,
    89      FALLTHRU = 307,
    90      TRY = 308,
    91      CATCH = 309,
    92      FINALLY = 310,
    93      THROW = 311,
    94      ASM = 312,
    95      ALIGNAS = 313,
    96      ALIGNOF = 314,
    97      ATOMIC = 315,
    98      GENERIC = 316,
    99      NORETURN = 317,
    100      STATICASSERT = 318,
    101      THREADLOCAL = 319,
    102      IDENTIFIER = 320,
    103      QUOTED_IDENTIFIER = 321,
    104      TYPEDEFname = 322,
    105      TYPEGENname = 323,
    106      ATTR_IDENTIFIER = 324,
    107      ATTR_TYPEDEFname = 325,
    108      ATTR_TYPEGENname = 326,
    109      INTEGERconstant = 327,
    110      FLOATINGconstant = 328,
    111      CHARACTERconstant = 329,
    112      STRINGliteral = 330,
    113      ZERO = 331,
    114      ONE = 332,
    115      ARROW = 333,
    116      ICR = 334,
    117      DECR = 335,
    118      LS = 336,
    119      RS = 337,
    120      LE = 338,
    121      GE = 339,
    122      EQ = 340,
    123      NE = 341,
    124      ANDAND = 342,
    125      OROR = 343,
    126      ELLIPSIS = 344,
    127      MULTassign = 345,
    128      DIVassign = 346,
    129      MODassign = 347,
    130      PLUSassign = 348,
    131      MINUSassign = 349,
    132      LSassign = 350,
    133      RSassign = 351,
    134      ANDassign = 352,
    135      ERassign = 353,
    136      ORassign = 354,
    137      THEN = 355
     89     DISABLE = 307,
     90     ENABLE = 308,
     91     FALLTHRU = 309,
     92     TRY = 310,
     93     CATCH = 311,
     94     CATCHRESUME = 312,
     95     FINALLY = 313,
     96     THROW = 314,
     97     THROWRESUME = 315,
     98     AT = 316,
     99     ASM = 317,
     100     ALIGNAS = 318,
     101     ALIGNOF = 319,
     102     ATOMIC = 320,
     103     GENERIC = 321,
     104     NORETURN = 322,
     105     STATICASSERT = 323,
     106     THREADLOCAL = 324,
     107     IDENTIFIER = 325,
     108     QUOTED_IDENTIFIER = 326,
     109     TYPEDEFname = 327,
     110     TYPEGENname = 328,
     111     ATTR_IDENTIFIER = 329,
     112     ATTR_TYPEDEFname = 330,
     113     ATTR_TYPEGENname = 331,
     114     INTEGERconstant = 332,
     115     FLOATINGconstant = 333,
     116     CHARACTERconstant = 334,
     117     STRINGliteral = 335,
     118     ZERO = 336,
     119     ONE = 337,
     120     ARROW = 338,
     121     ICR = 339,
     122     DECR = 340,
     123     LS = 341,
     124     RS = 342,
     125     LE = 343,
     126     GE = 344,
     127     EQ = 345,
     128     NE = 346,
     129     ANDAND = 347,
     130     OROR = 348,
     131     ELLIPSIS = 349,
     132     MULTassign = 350,
     133     DIVassign = 351,
     134     MODassign = 352,
     135     PLUSassign = 353,
     136     MINUSassign = 354,
     137     LSassign = 355,
     138     RSassign = 356,
     139     ANDassign = 357,
     140     ERassign = 358,
     141     ORassign = 359,
     142     ATassign = 360,
     143     THEN = 361
    138144   };
    139145#endif
     
    188194#define RETURN 305
    189195#define CHOOSE 306
    190 #define FALLTHRU 307
    191 #define TRY 308
    192 #define CATCH 309
    193 #define FINALLY 310
    194 #define THROW 311
    195 #define ASM 312
    196 #define ALIGNAS 313
    197 #define ALIGNOF 314
    198 #define ATOMIC 315
    199 #define GENERIC 316
    200 #define NORETURN 317
    201 #define STATICASSERT 318
    202 #define THREADLOCAL 319
    203 #define IDENTIFIER 320
    204 #define QUOTED_IDENTIFIER 321
    205 #define TYPEDEFname 322
    206 #define TYPEGENname 323
    207 #define ATTR_IDENTIFIER 324
    208 #define ATTR_TYPEDEFname 325
    209 #define ATTR_TYPEGENname 326
    210 #define INTEGERconstant 327
    211 #define FLOATINGconstant 328
    212 #define CHARACTERconstant 329
    213 #define STRINGliteral 330
    214 #define ZERO 331
    215 #define ONE 332
    216 #define ARROW 333
    217 #define ICR 334
    218 #define DECR 335
    219 #define LS 336
    220 #define RS 337
    221 #define LE 338
    222 #define GE 339
    223 #define EQ 340
    224 #define NE 341
    225 #define ANDAND 342
    226 #define OROR 343
    227 #define ELLIPSIS 344
    228 #define MULTassign 345
    229 #define DIVassign 346
    230 #define MODassign 347
    231 #define PLUSassign 348
    232 #define MINUSassign 349
    233 #define LSassign 350
    234 #define RSassign 351
    235 #define ANDassign 352
    236 #define ERassign 353
    237 #define ORassign 354
    238 #define THEN 355
     196#define DISABLE 307
     197#define ENABLE 308
     198#define FALLTHRU 309
     199#define TRY 310
     200#define CATCH 311
     201#define CATCHRESUME 312
     202#define FINALLY 313
     203#define THROW 314
     204#define THROWRESUME 315
     205#define AT 316
     206#define ASM 317
     207#define ALIGNAS 318
     208#define ALIGNOF 319
     209#define ATOMIC 320
     210#define GENERIC 321
     211#define NORETURN 322
     212#define STATICASSERT 323
     213#define THREADLOCAL 324
     214#define IDENTIFIER 325
     215#define QUOTED_IDENTIFIER 326
     216#define TYPEDEFname 327
     217#define TYPEGENname 328
     218#define ATTR_IDENTIFIER 329
     219#define ATTR_TYPEDEFname 330
     220#define ATTR_TYPEGENname 331
     221#define INTEGERconstant 332
     222#define FLOATINGconstant 333
     223#define CHARACTERconstant 334
     224#define STRINGliteral 335
     225#define ZERO 336
     226#define ONE 337
     227#define ARROW 338
     228#define ICR 339
     229#define DECR 340
     230#define LS 341
     231#define RS 342
     232#define LE 343
     233#define GE 344
     234#define EQ 345
     235#define NE 346
     236#define ANDAND 347
     237#define OROR 348
     238#define ELLIPSIS 349
     239#define MULTassign 350
     240#define DIVassign 351
     241#define MODassign 352
     242#define PLUSassign 353
     243#define MINUSassign 354
     244#define LSassign 355
     245#define RSassign 356
     246#define ANDassign 357
     247#define ERassign 358
     248#define ORassign 359
     249#define ATassign 360
     250#define THEN 361
    239251
    240252
     
    246258
    247259/* Line 2068 of yacc.c  */
    248 #line 108 "parser.yy"
     260#line 110 "parser.yy"
    249261
    250262        Token tok;
     
    263275
    264276/* Line 2068 of yacc.c  */
    265 #line 266 "Parser/parser.h"
     277#line 278 "Parser/parser.h"
    266278} YYSTYPE;
    267279# define YYSTYPE_IS_TRIVIAL 1
  • src/Parser/parser.yy

    r698664b3 rd2ded3e7  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Aug 11 16:01:49 2015
    13 // Update Count     : 1350
     12// Last Modified On : Thu Oct  8 17:17:54 2015
     13// Update Count     : 1473
    1414//
    1515
     
    8181%token ATTRIBUTE EXTENSION                                                              // GCC
    8282%token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN
    83 %token CHOOSE FALLTHRU TRY CATCH FINALLY THROW                  // CFA
     83%token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT        // CFA
    8484%token ASM                                                                                              // C99, extension ISO/IEC 9899:1999 Section J.5.10(1)
    8585%token ALIGNAS ALIGNOF ATOMIC GENERIC NORETURN STATICASSERT THREADLOCAL // C11
     
    103103%token LSassign         RSassign                                                        // <<=  >>=
    104104%token ANDassign        ERassign        ORassign                                // &=   ^=      |=
     105
     106%token ATassign                                                                                 // @=
    105107
    106108// Types declaration
     
    120122}
    121123
    122 %type<tok> zero_one  identifier  no_attr_identifier  no_01_identifier
     124%type<tok> identifier  no_01_identifier  no_attr_identifier zero_one
    123125%type<tok> identifier_or_type_name  no_attr_identifier_or_type_name  no_01_identifier_or_type_name
    124126%type<constant> string_literal_list
     
    317319        ;
    318320
     321// no zero_one because ambiguity with 0.0 : double constant or field selection
    319322no_attr_identifier:
    320323        IDENTIFIER
     
    364367        | postfix_expression DECR
    365368                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::DecrPost ), $1 ); }
    366                 // GCC has priority: cast_expression
    367369        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99
    368370                { $$ = 0; }
     371        | postfix_expression '{' argument_expression_list '}' // CFA
     372                {
     373                        Token fn; fn.str = new std::string( "?{}" ); // location undefined
     374                        $$ = new CompositeExprNode( new VarRefNode( fn ), (ExpressionNode *)( $1 )->set_link( $3 ) );
     375                }
    369376        ;
    370377
     
    445452                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), $2 ); }
    446453        | ALIGNOF '(' type_name_no_function ')'                         // GCC, type alignment
    447                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 )); }
     454                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::AlignOf ), new TypeValueNode( $3 ) ); }
    448455        | ANDAND no_attr_identifier                                                     // GCC, address of label
    449                 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true )); }
     456                { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::LabelAddress ), new VarRefNode( $2, true ) ); }
    450457        ;
    451458
     
    627634        | exception_statement
    628635        | asm_statement
     636        | '^' postfix_expression '{' argument_expression_list '}' ';' // CFA
     637                {
     638                        Token fn; fn.str = new std::string( "^?{}" ); // location undefined
     639                        $$ = new StatementNode( StatementNode::Exp, new CompositeExprNode( new VarRefNode( fn ),
     640                                (ExpressionNode *)(new CompositeExprNode( new OperatorNode( OperatorNode::AddressOf ), $2 ))->set_link( $4 ) ), 0 );
     641                }
    629642        ;
    630643
     
    805818        | RETURN comma_expression_opt ';'
    806819                { $$ = new StatementNode( StatementNode::Return, $2, 0 ); }
    807         | THROW assignment_expression ';'
     820        | THROW assignment_expression_opt ';'
    808821                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
    809         | THROW ';'
    810                 { $$ = new StatementNode( StatementNode::Throw ); }
     822//      | THROW ';'
     823//              { $$ = new StatementNode( StatementNode::Throw ); }
     824        | THROWRESUME assignment_expression_opt ';'
     825                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
     826        | THROWRESUME assignment_expression_opt AT assignment_expression ';'
     827                { $$ = new StatementNode( StatementNode::Throw, $2, 0 ); }
     828//      | THROWRESUME ';'
     829//              { $$ = new StatementNode( StatementNode::Throw ); }
    811830        ;
    812831
     
    831850        | handler_clause CATCH '(' ELLIPSIS ')' compound_statement
    832851                { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
     852        | CATCHRESUME '(' ELLIPSIS ')' compound_statement
     853                { $$ = StatementNode::newCatchStmt( 0, $5, true ); }
     854        | handler_clause CATCHRESUME '(' ELLIPSIS ')' compound_statement
     855                { $$ = $1->set_link( StatementNode::newCatchStmt( 0, $6, true ) ); }
    833856        ;
    834857
     
    837860                { $$ = StatementNode::newCatchStmt( $5, $8 ); }
    838861        | handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
     862                { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
     863        | CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
     864                { $$ = StatementNode::newCatchStmt( $5, $8 ); }
     865        | handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
    839866                { $$ = $1->set_link( StatementNode::newCatchStmt( $6, $9 ) ); }
    840867        ;
     
    16541681        | '=' initializer
    16551682                { $$ = $2; }
     1683        | ATassign initializer
     1684                { $$ = $2; }
    16561685        ;
    16571686
     
    16621691
    16631692initializer_list:
    1664         initializer
     1693        // empty
     1694                { $$ = 0; }
     1695        | initializer
    16651696        | designation initializer                                       { $$ = $2->set_designators( $1 ); }
    16661697        | initializer_list ',' initializer                      { $$ = (InitializerNode *)( $1->set_link( $3 ) ); }
     
    16931724
    16941725designator:
     1726        // lexer ambiguity: designator ".0" is floating-point constant or designator for name 0
    16951727        // only ".0" and ".1" allowed => semantic check
    16961728        FLOATINGconstant
  • src/SymTab/Indexer.h

    r698664b3 rd2ded3e7  
    1010// Created On       : Sun May 17 21:38:55 2015
    1111// Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 05 13:51:39 2015
    13 // Update Count     : 4
     12// Last Modified On : Thu Sep 17 16:05:38 2015
     13// Update Count     : 5
    1414//
    1515
     
    1919#include <list>
    2020#include <string>
    21 #include <map>
    2221
    2322#include "SynTree/Visitor.h"
  • src/SymTab/Validate.cc

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Sun May 17 21:50:04 2015
    11 // Last Modified By : Rob Schluntz
    12 // Last Modified On : Wed Aug 05 14:00:24 2015
    13 // Update Count     : 195
     11// Last Modified By : Peter A. Buhr
     12// Last Modified On : Tue Aug 11 16:59:35 2015
     13// Update Count     : 196
    1414//
    1515
     
    894894                DeclarationWithType *ret = Mutator::mutate( objDecl );
    895895                typedefNames = oldNames;
     896                // is the type a function?
    896897                if ( FunctionType *funtype = dynamic_cast<FunctionType *>( ret->get_type() ) ) {
     898                        // replace the current object declaration with a function declaration
    897899                        return new FunctionDecl( ret->get_name(), ret->get_storageClass(), ret->get_linkage(), funtype, 0, ret->get_isInline(), ret->get_isNoreturn() );
    898900                } else if ( objDecl->get_isInline() || objDecl->get_isNoreturn() ) {
  • src/SynTree/ArrayType.cc

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Jun  6 14:11:48 2015
    13 // Update Count     : 9
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:19:07 2015
     13// Update Count     : 11
    1414//
    1515
     
    5050        } // if
    5151        if ( dimension ) {
    52                 os << "with dimension of ";
    53                 dimension->print( os, indent );
     52                os << " with dimension of ";
     53                dimension->print( os, 0 );
    5454        } // if
    5555}
  • src/SynTree/BasicType.cc

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Jun  7 08:44:36 2015
    13 // Update Count     : 5
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:15:45 2015
     13// Update Count     : 6
    1414//
    1515
     
    2828
    2929        Type::print( os, indent );
    30         os << kindNames[ kind ] << ' ';
     30        os << kindNames[ kind ];
    3131}
    3232
  • src/SynTree/Expression.cc

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Jul 28 16:27:17 2015
    13 // Update Count     : 22
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Sep 02 12:07:10 2015
     13// Update Count     : 33
    1414//
    1515
     
    3131Expression::Expression( Expression *_aname ) : env( 0 ), argName( _aname ) {}
    3232
    33 Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ) {
     33Expression::Expression( const Expression &other ) : env( maybeClone( other.env ) ), argName( maybeClone( other.get_argName() ) ) {
    3434        cloneAll( other.results, results );
    35         argName = other.get_argName();
    3635}
    3736
     
    7271
    7372void ConstantExpr::print( std::ostream &os, int indent ) const {
    74         os << "constant expression " ;
     73        os << std::string( indent, ' ' ) << "constant expression " ;
    7574        constant.print( os );
    7675        Expression::print( os, indent );
     76        os << std::endl;
    7777}
    7878
  • src/SynTree/Initializer.cc

    r698664b3 rd2ded3e7  
    99// Author           : Richard C. Bilson
    1010// Created On       : Mon May 18 07:44:20 2015
    11 // Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon May 18 09:02:45 2015
    13 // Update Count     : 2
     11// Last Modified By : Rob Schluntz
     12// Last Modified On : Wed Aug 12 14:05:25 2015
     13// Update Count     : 14
    1414//
    1515
     
    4343
    4444void SingleInit::print( std::ostream &os, int indent ) {
    45         os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: ";
    46         value->print( os, indent+2 );
     45        os << std::endl << std::string(indent, ' ' ) << "Simple Initializer: " << std::endl;
     46        value->print( os, indent+4 );
    4747
    4848        if ( ! designators.empty() ) {
    49                 os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "  ;
    50                 for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ )
     49                os << std::endl << std::string(indent + 2, ' ' ) << "designated by: "   << std::endl;
     50                for ( std::list < Expression * >::iterator i = designators.begin(); i != designators.end(); i++ ) {
    5151                        ( *i )->print(os, indent + 4 );
     52                }
    5253        } // if
    5354}
  • src/driver/cfa.cc

    r698664b3 rd2ded3e7  
    1010// Created On       : Tue Aug 20 13:44:49 2002
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jul 16 17:09:23 2015
    13 // Update Count     : 124
     12// Last Modified On : Mon Aug 17 15:24:30 2015
     13// Update Count     : 126
    1414//
    1515
     
    263263        args[nargs] = ( *new string( string("-D__CFA_PATCHLEVEL__=") + Patch ) ).c_str();
    264264        nargs += 1;
     265        args[nargs] = "-D__CFORALL__=1";
     266        nargs += 1;
    265267
    266268        if ( cpp_flag ) {
  • src/examples/control_structures.c

    r698664b3 rd2ded3e7  
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun  4 14:02:50 2015
    13 // Update Count     : 24
     12// Last Modified On : Fri Sep 18 08:12:17 2015
     13// Update Count     : 28
    1414//
    1515
     
    2626                                                break L3;
    2727                                                break L4;
    28                                                 //continue L1;                                  // labelled continue - should be an error
    29                                                 //continue L2;                                  // should be an error
     28                                                //continue L1;                                  // error: not enclosing loop
     29                                                //continue L2;                                  // error: not enclosing loop
    3030                                                continue L3;
    3131                                                continue L4;
  • src/examples/sum.c

    r698664b3 rd2ded3e7  
    77// sum.c --
    88//
    9 // Author           : Richard C. Bilson
     9// Author           : Peter A. Buhr
    1010// Created On       : Wed May 27 17:56:53 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  1 20:46:35 2015
    13 // Update Count     : 18
     12// Last Modified On : Mon Sep 28 15:09:55 2015
     13// Update Count     : 118
    1414//
    1515
    1616extern "C" {
    17         int printf( const char *, ... );
     17        int printf( char *, ... );
    1818}
     19#include "fstream.h"
    1920
    2021context sumable( type T ) {
    2122        const T 0;
    2223        T ?+?( T, T );
     24        T ?+=?( T *, T );
     25        T ++?( T * );
    2326        T ?++( T * );
    24         T ?+=?( T *, T );
    2527};
    2628
    2729forall( type T | sumable( T ) )
    28 T sum( int n, T a[] ) {
    29         T total;                                                                                        // instantiate T, select 0
    30         total = 0;
    31         for ( int i = 0; i < n; i += 1 )
    32                 total = total + a[i];                                                   // select +
     30T sum( unsigned int n, T a[] ) {
     31        T total = 0;                                                                            // instantiate T, select 0
     32        for ( unsigned int i = 0; i < n; i += 1 )
     33                total += a[i];                                                                  // select +
    3334        return total;
    3435}
     
    3637// Required to satisfy sumable as char does not have addition.
    3738const char 0;
    38 char ?+?( char op1, char op2 ) { return op1 + op2; }
    39 char ?++( char *op ) { return *op + 1; }
    40 
    41 const double 0; // TEMPORARY, incorrect use of int 0
     39char ?+?( char op1, char op2 ) { return (int)op1 + op2; } // cast forces integer addition or recursion
     40char ++?( char *op ) { *op += 1; return *op; }
     41char ?++( char *op ) { char temp = *op; *op += 1; return temp; }
    4242
    4343int main() {
    4444        const int low = 5, High = 15, size = High - low;
    45         int si = 0, ai[size];
     45
     46        ofstream *sout = ofstream_stdout();
     47
     48        char s = 0, a[size];
     49        char v = low;
     50        for ( int i = 0; i < size; i += 1, v += 1 ) {
     51                s += v;
     52                a[i] = v;
     53        }
     54        sout << "sum from " << low << " to " << High << " is "
     55                 << (int)sum( size, a ) << ", check " << (int)s << "\n";
     56
     57        int s = 0, a[size];
    4658        int v = low;
    4759        for ( int i = 0; i < size; i += 1, v += 1 ) {
    48                 si += v;
    49                 ai[i] = v;
     60                s += (int)v;
     61                a[i] = (int)v;
    5062        }
    51         printf( "sum from %d to %d is %d, check %d\n",
    52                         low, High, sum( size, ai ), si );
     63        sout << "sum from " << low << " to " << High << " is "
     64                 << sum( size, (int *)a ) << ", check " << (int)s << "\n";
    5365
    54 //      char ci[size];
    55 //      char c = sum( size, ci );
    56 //      float fi[size];
    57 //      float f = sum( size, fi );
    58 
    59         double sd = 0.0, ad[size];
     66        double s = 0.0, a[size];
    6067        double v = low / 10.0;
    6168        for ( int i = 0; i < size; i += 1, v += 0.1 ) {
    62                 sd += v;
    63                 ad[i] = v;
     69                s += (double)v;
     70                a[i] = (double)v;
    6471        }
    65         printf( "sum from %g to %g is %g, check %g\n",
    66                         low / 10.0, High / 10.0, sum( size, ad ), sd );
     72        printf( "%g\n", sum( size, (double *)a ) );
     73//      sout << "sum from " << low / 10.0 << " to " << High / 10.0 << " is "
     74//               << sum( size, (double *)a ) << ", check " << (double)s << "\n";
     75
     76        float s = 0.0, a[size];
     77        float v = low / 10.0;
     78        for ( int i = 0; i < size; i += 1, v += 0.1f ) {
     79                s += (float)v;
     80                a[i] = (float)v;
     81        }
     82        printf( "%g\n", sum( size, (float *)a ) );
     83//      sout << "sum from " << low / 10.0 << " to " << High / 10.0 << " is "
     84//               << sum( size, (float *)a ) << ", check " << (float)s << "\n";
    6785}
    6886
    6987// Local Variables: //
    7088// tab-width: 4 //
    71 // compile-command: "cfa sum.c" //
     89// compile-command: "cfa sum.c fstream.o iostream.o" //
    7290// End: //
Note: See TracChangeset for help on using the changeset viewer.