texlive[48092] Build/source/texk: opendetex-2.8.3

commits+hironobu at tug.org commits+hironobu at tug.org
Tue Jun 26 04:37:10 CEST 2018


Revision: 48092
          http://tug.org/svn/texlive?view=revision&revision=48092
Author:   hironobu
Date:     2018-06-26 04:37:10 +0200 (Tue, 26 Jun 2018)
Log Message:
-----------
opendetex-2.8.3

Modified Paths:
--------------
    trunk/Build/source/texk/README
    trunk/Build/source/texk/detex/ChangeLog
    trunk/Build/source/texk/detex/TLpatches/ChangeLog
    trunk/Build/source/texk/detex/TLpatches/TL-Changes
    trunk/Build/source/texk/detex/TLpatches/patch-04-kpathsea
    trunk/Build/source/texk/detex/detex-src/COPYRIGHT
    trunk/Build/source/texk/detex/detex-src/Makefile
    trunk/Build/source/texk/detex/detex-src/README
    trunk/Build/source/texk/detex/detex-src/detex.c
    trunk/Build/source/texk/detex/detex-src/detex.h
    trunk/Build/source/texk/detex/detex-src/detex.l
    trunk/Build/source/texk/detex/detex-src/detex.man
    trunk/Build/source/texk/detex/test.lout
    trunk/Build/source/texk/detex/test.tout

Added Paths:
-----------
    trunk/Build/source/texk/detex/TLpatches/patch-13-typo-minipage
    trunk/Build/source/texk/detex/detex-src/ChangeLog
    trunk/Build/source/texk/detex/detex-src/INSTALL

Removed Paths:
-------------
    trunk/Build/source/texk/detex/TLpatches/patch-01-ANSI-C
    trunk/Build/source/texk/detex/TLpatches/patch-03-warnings
    trunk/Build/source/texk/detex/TLpatches/patch-05-kern-and-glue
    trunk/Build/source/texk/detex/TLpatches/patch-06-never-interactive
    trunk/Build/source/texk/detex/TLpatches/patch-07-rename
    trunk/Build/source/texk/detex/TLpatches/patch-08-kpathsea
    trunk/Build/source/texk/detex/TLpatches/patch-09-binary
    trunk/Build/source/texk/detex/TLpatches/patch-10-ANSI-strings
    trunk/Build/source/texk/detex/TLpatches/patch-11-c_auto_h
    trunk/Build/source/texk/detex/TLpatches/patch-12-typo
    trunk/Build/source/texk/detex/detex-src/lexout.c
    trunk/Build/source/texk/detex/detex-src/os2/
    trunk/Build/source/texk/detex/detex-src/states.sed

Modified: trunk/Build/source/texk/README
===================================================================
--- trunk/Build/source/texk/README	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/README	2018-06-26 02:37:10 UTC (rev 48092)
@@ -34,8 +34,9 @@
 cjkutils 4.8.4 - checked 18apr15
   http://cjk.ffii.org/cjk-4.8.4.tar.gz
 
-detex 2.8 - checked 10may12
-  http://www.cs.purdue.edu/homes/trinkle/detex/
+detex 2.8.3 - checked 20jun18
+  https://github.com/pkubowicz/opendetex
+    old info: http://www.cs.purdue.edu/homes/trinkle/detex/
 
 dtl - ?
 

Modified: trunk/Build/source/texk/detex/ChangeLog
===================================================================
--- trunk/Build/source/texk/detex/ChangeLog	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/ChangeLog	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,3 +1,8 @@
+2018-06-20  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* Import opendetex-2.8.3, TLpatches adapted.
+	* test.lout, test.tout: adjusted.
+
 2016-02-23  Akira Kakuto  <kakuto at fuk.kindai.ac.jp>
 
 	* Makefile.am, configure.ac: New convention.

Modified: trunk/Build/source/texk/detex/TLpatches/ChangeLog
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/ChangeLog	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/ChangeLog	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,3 +1,13 @@
+2018-06-20  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	Adapt to opendetex-2.8.3.
+	* patch-04-kpathsea: update.
+	* patch-01-ANSI-C, patch-03-warnings, patch-05-kern-and-glue,
+	patch-06-never-interactive, patch-07-rename, patch-08-kpathsea,
+	patch-09-binary, patch-10-ANSI-strings, patch-11-c_auto_h,
+	patch-12-typo: removed.
+	* patch-13-typo-minipage (new): Fix a typo.
+
 2014-08-20  Peter Breitenlohner  <peb at mppmu.mpg.de>
 
 	* patch-12-typo (new): Fix a typo.

Modified: trunk/Build/source/texk/detex/TLpatches/TL-Changes
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/TL-Changes	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/TL-Changes	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,5 +1,5 @@
-Changes applied to the detex-2.8 tree as obtained from:
-	http://www.cs.purdue.edu/homes/trinkle/detex/
+Changes applied to the opendetex-2.8.3 tree as obtained from:
+	https://github.com/pkubowicz/opendetex/releases
 
 Renamed:
 	detex.1l -> detex.man

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-01-ANSI-C
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-01-ANSI-C	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-01-ANSI-C	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,228 +0,0 @@
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2008-02-01 20:55:51.000000000 +0100
-+++ detex-2.8/detex.l	2010-06-11 23:12:06.648394135 +0200
-@@ -72,12 +72,26 @@
- #define STRIPARGS(x)	cArgs=x; LaBEGIN LaMacro2
- #define	CITE(x)		if (fLatex && !fCite) KILLARGS(x)
- 
--char	*SafeMalloc();
-+void AddInclude(char *sbFile);
-+void ErrorExit(char *sb1);
-+void IncludeFile(char *sbFile);
-+void InputFile(char *sbFile);
-+void SetEnvIgnore(char *sbEnvList);
-+void SetInputPaths(void);
-+void Warning(char *sb1, char *sb2); 
-+int BeginEnv(char *sbEnv);
-+int EndEnv(char *sbEnv);
-+int InList(char *sbFile);
-+int SeparateList(char *sbList, char *rgsbList[] ,char chSep, int csbMax);
-+FILE *TexOpen(char *sbFile);
-+char *SafeMalloc(int cch, char *sbMessage);
-+char *getenv();
- #ifndef NO_MALLOC_DECL
- char	*malloc();
- #endif
- #ifdef OS2
- void	yyless(int);
-+void	OS2UsageExit(void);
- #endif
- 
- char	*rgsbEnvIgnore[MAXENVS];	/* list of environments ignored */
-@@ -368,12 +382,10 @@
- **	If no input files are specified on the command line, process stdin.
- ******/
- 
--main(cArgs,rgsbArgs)
--int	cArgs;
--char	*rgsbArgs[];
-+int
-+main(int cArgs, char *rgsbArgs[])
- {
- 	char	*pch, *sbEnvList = DEFAULTENV, sbBadOpt[2];
--	FILE	*TexOpen();
- 	int	fSawFile = 0, iArgs = 1;
- 	
- 	/* get base name and decide what we are doing, detex or delatex */
-@@ -477,7 +489,8 @@
- **	return the termination signal for lex.
- ******/
- 
--yywrap()
-+int
-+yywrap(void)
- {
- 	(void)fclose(yyin);
- #ifdef FLEX_SCANNER
-@@ -501,8 +514,8 @@
- **	a yyless routine
- ******/
- 
--void yyless(n)
--int n;
-+void
-+yyless(int n)
- {
- 	int 	i = strlen(yytext);
- 
-@@ -516,8 +529,8 @@
- **	sbEnvList.
- ******/
- 
--SetEnvIgnore(sbEnvList)
--char	*sbEnvList;
-+void
-+SetEnvIgnore(char *sbEnvList)
- {
- 	char *sb;
- 
-@@ -533,8 +546,8 @@
- **	is, sbCurrentEnv is set to sbEnv.
- ******/
- 
--BeginEnv(sbEnv)
--char	*sbEnv;
-+int
-+BeginEnv(char *sbEnv)
- {
- 	int	i;
- 
-@@ -551,8 +564,8 @@
- ** EndEnv -- checks to see if sbEnv is the current environment being ignored.
- ******/
- 
--EndEnv(sbEnv)
--char	*sbEnv;
-+int
-+EndEnv(char *sbEnv)
- {
- 	if (!fLatex) return(0);
- 	if (strcmp(sbEnv, sbCurrentEnv) == 0)
-@@ -565,11 +578,9 @@
- **	the sbFile is ignored.
- ******/
- 
--InputFile(sbFile)
--char	*sbFile;
-+void
-+InputFile(char *sbFile)
- {
--	FILE	*TexOpen();
--
- 	if (!fFollow)
- 	    return;
- 	rgfp[cfp++] = yyin;
-@@ -589,11 +600,9 @@
- **	and open sbFile.  If the open fails, the sbFile is ignored.
- ******/
- 
--IncludeFile(sbFile)
--char	*sbFile;
-+void
-+IncludeFile(char *sbFile)
- {
--	FILE	*TexOpen();
--
- 	if (!fFollow)
- 	    return;
- 	if (!InList(sbFile))
-@@ -615,8 +624,8 @@
- **	If the include list is too long, sbFile is ignored.
- ******/
- 
--AddInclude(sbFile)
--char	*sbFile;
-+void
-+AddInclude(char *sbFile)
- {
- 	if (!fFollow)
- 	    return;
-@@ -631,8 +640,8 @@
- **	no list, all files are assumed to be "in the list".
- ******/
- 
--InList(sbFile)
--char	*sbFile;
-+int
-+InList(char *sbFile)
- {
- 	char	*pch, sbBase[MAXPATHLEN];
- 	int	i;
-@@ -658,9 +667,10 @@
- **	routine does not honor the '//' construct (expand subdirs).
- ******/
- 
--SetInputPaths()
-+void
-+SetInputPaths(void)
- {
--	char *sb, *sbPaths, *getenv();
-+	char *sb, *sbPaths;
- 	int cchDefaults, cchPaths;
- 
- 	cchDefaults = strlen(DEFAULTINPUTS);
-@@ -698,9 +708,8 @@
- **	ERROR is returned if there are more than csbMax words.
- ******/
- 
--SeparateList(sbList, rgsbList, chSep, csbMax)
--char	*sbList, *rgsbList[], chSep;
--int	csbMax;
-+int
-+SeparateList(char *sbList, char *rgsbList[], char chSep, int csbMax)
- {
- 	int	csbList = 0;
- 
-@@ -725,8 +734,7 @@
- ******/
- 
- FILE *
--TexOpen(sbFile)
--char	*sbFile;
-+TexOpen(char *sbFile)
- {
- 	char	*pch, *sbNew;
- 	FILE	*fp;
-@@ -784,9 +792,7 @@
- ******/
- 
- char *
--SafeMalloc(cch, sbMessage)
--int cch;
--char *sbMessage;
-+SafeMalloc(int cch, char *sbMessage)
- {
- 	char *sb;
- 
-@@ -799,8 +805,8 @@
- ** Warning -- print a warning message preceded by the program name.
- ******/
- 
--Warning(sb1, sb2)
--char	*sb1, *sb2;
-+void
-+Warning(char *sb1, char *sb2)
- {
- 	(void)fprintf(stderr, "%s: warning: %s %s\n", sbProgName, sb1, sb2);
- }
-@@ -810,8 +816,8 @@
- **	Stdout is flushed and detex exits.
- ******/
- 
--ErrorExit(sb1)
--char	*sb1;
-+void
-+ErrorExit(char *sb1)
- {
- 	(void)fflush(stdout);
- 	(void)fprintf(stderr, "%s: error: %s\n", sbProgName, sb1);
-@@ -823,7 +829,8 @@
- ** OS2UsageExit -- print OS/2 usage message and exit.
- ******/
- 
--OS2UsageExit()
-+void
-+OS2UsageExit(void)
- {
- 	(void)printf("\n%s [ -clnstw ] [ -e environment-list ] [ filename[.tex] ... ]\n",
- 		sbProgName);

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-03-warnings
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-03-warnings	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-03-warnings	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,124 +0,0 @@
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2010-06-11 23:12:06.000000000 +0200
-+++ detex-2.8/detex.l	2010-06-11 23:26:08.554783186 +0200
-@@ -73,18 +73,18 @@
- #define	CITE(x)		if (fLatex && !fCite) KILLARGS(x)
- 
- void AddInclude(char *sbFile);
--void ErrorExit(char *sb1);
-+void ErrorExit(const char *sb1);
- void IncludeFile(char *sbFile);
- void InputFile(char *sbFile);
--void SetEnvIgnore(char *sbEnvList);
-+void SetEnvIgnore(const char *sbEnvList);
- void SetInputPaths(void);
--void Warning(char *sb1, char *sb2); 
--int BeginEnv(char *sbEnv);
--int EndEnv(char *sbEnv);
-+void Warning(const char *sb1, const char *sb2); 
-+int BeginEnv(const char *sbEnv);
-+int EndEnv(const char *sbEnv);
- int InList(char *sbFile);
- int SeparateList(char *sbList, char *rgsbList[] ,char chSep, int csbMax);
- FILE *TexOpen(char *sbFile);
--char *SafeMalloc(int cch, char *sbMessage);
-+char *SafeMalloc(int cch, const char *sbMessage);
- char *getenv();
- #ifndef NO_MALLOC_DECL
- char	*malloc();
-@@ -385,7 +385,8 @@
- int
- main(int cArgs, char *rgsbArgs[])
- {
--	char	*pch, *sbEnvList = DEFAULTENV, sbBadOpt[2];
-+	char	*pch, sbBadOpt[2];
-+	const char *sbEnvList = DEFAULTENV;
- 	int	fSawFile = 0, iArgs = 1;
- 	
- 	/* get base name and decide what we are doing, detex or delatex */
-@@ -530,7 +531,7 @@
- ******/
- 
- void
--SetEnvIgnore(char *sbEnvList)
-+SetEnvIgnore(const char *sbEnvList)
- {
- 	char *sb;
- 
-@@ -547,7 +548,7 @@
- ******/
- 
- int
--BeginEnv(char *sbEnv)
-+BeginEnv(const char *sbEnv)
- {
- 	int	i;
- 
-@@ -565,7 +566,7 @@
- ******/
- 
- int
--EndEnv(char *sbEnv)
-+EndEnv(const char *sbEnv)
- {
- 	if (!fLatex) return(0);
- 	if (strcmp(sbEnv, sbCurrentEnv) == 0)
-@@ -670,7 +671,8 @@
- void
- SetInputPaths(void)
- {
--	char *sb, *sbPaths;
-+	const char *sb;
-+	char *sbPaths;
- 	int cchDefaults, cchPaths;
- 
- 	cchDefaults = strlen(DEFAULTINPUTS);
-@@ -715,7 +717,7 @@
- 
- 	while (sbList && *sbList && csbList < csbMax) {
- 	    rgsbList[csbList++] = sbList;
--	    if (sbList = index(sbList, chSep))
-+	    if ((sbList = index(sbList, chSep)))
- 		*sbList++ = '\0';
- 	}
- 	return(sbList && *sbList ? ERROR : csbList);
-@@ -760,10 +762,12 @@
- 	    /* If sbFile ends in .tex then it must be there */
- 	    if ((pch = rindex(sbFullPath, '.')) != NULL
- 			&& (strcmp(pch, ".tex") == 0))
-+	    {
- 		if ((fp = fopen(sbFullPath, "r")) != NULL)
- 		    return(fp);
- 		else
- 		    continue;
-+	    }
- 
- 	    /* if .<ext> then try to open it.  the '.' represents   */
- 	    /* the beginning of an extension if it is not the first */
-@@ -792,7 +796,7 @@
- ******/
- 
- char *
--SafeMalloc(int cch, char *sbMessage)
-+SafeMalloc(int cch, const char *sbMessage)
- {
- 	char *sb;
- 
-@@ -806,7 +810,7 @@
- ******/
- 
- void
--Warning(char *sb1, char *sb2)
-+Warning(const char *sb1, const char *sb2)
- {
- 	(void)fprintf(stderr, "%s: warning: %s %s\n", sbProgName, sb1, sb2);
- }
-@@ -817,7 +821,7 @@
- ******/
- 
- void
--ErrorExit(char *sb1)
-+ErrorExit(const char *sb1)
- {
- 	(void)fflush(stdout);
- 	(void)fprintf(stderr, "%s: error: %s\n", sbProgName, sb1);

Modified: trunk/Build/source/texk/detex/TLpatches/patch-04-kpathsea
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-04-kpathsea	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-04-kpathsea	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,31 +1,7 @@
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2010-06-11 23:26:08.000000000 +0200
-+++ detex-2.8/detex.l	2010-06-12 00:15:05.785339097 +0200
-@@ -49,6 +49,23 @@
-  */
- 
- #include "detex.h"
-+
-+#ifdef KPATHSEA
-+
-+#include <c-auto.h>
-+#include <kpathsea/c-auto.h>
-+#include <kpathsea/config.h>
-+#include <kpathsea/c-memstr.h>
-+#include <kpathsea/c-pathmx.h>
-+#include <kpathsea/c-std.h>
-+#include <kpathsea/tex-file.h>
-+
-+#ifdef HAVE_SYS_PARAM_H
-+#include <sys/param.h>
-+#endif
-+
-+#else /* KPATHSEA */
-+
- #ifdef HAVE_STRING_H
- #include <string.h>
- #define	index	strchr
-@@ -59,10 +76,15 @@
+diff -ur opendetex-2.8.3.orig/detex.l opendetex-2.8.3/detex.l
+--- opendetex-2.8.3.orig/detex.l	2018-02-11 18:42:05.000000000 +0900
++++ opendetex-2.8.3/detex.l	2018-06-20 23:12:37.000000000 +0900
+@@ -73,6 +73,7 @@
  #ifndef MAXPATHLEN
  #include <sys/param.h>
  #endif
@@ -33,126 +9,3 @@
  #ifdef OS2
  #include <stdlib.h>
  #endif
- 
-+#endif /* KPATHSEA */
-+
-+#undef IGNORE
-+
- #define	LaBEGIN		if (fLatex) BEGIN
- #define	IGNORE		if (fSpace && !fWord) putchar(' ')
- #define	SPACE		if (!fWord) putchar(' ')
-@@ -77,7 +99,9 @@
- void IncludeFile(char *sbFile);
- void InputFile(char *sbFile);
- void SetEnvIgnore(const char *sbEnvList);
-+#ifndef KPATHSEA
- void SetInputPaths(void);
-+#endif
- void Warning(const char *sb1, const char *sb2); 
- int BeginEnv(const char *sbEnv);
- int EndEnv(const char *sbEnv);
-@@ -85,6 +109,7 @@
- int SeparateList(char *sbList, char *rgsbList[] ,char chSep, int csbMax);
- FILE *TexOpen(char *sbFile);
- char *SafeMalloc(int cch, const char *sbMessage);
-+#ifndef KPATHSEA
- char *getenv();
- #ifndef NO_MALLOC_DECL
- char	*malloc();
-@@ -93,12 +118,16 @@
- void	yyless(int);
- void	OS2UsageExit(void);
- #endif
-+#endif /* KPATHSEA */
- 
- char	*rgsbEnvIgnore[MAXENVS];	/* list of environments ignored */
- char	*rgsbIncList[MAXINCLIST];	/* list of includeonly files */
- char	*rgsbInputPaths[MAXINPUTPATHS];	/* list of input paths in order */
- char	sbCurrentEnv[CCHMAXENV];	/* current environment being ignored */
- char	*sbProgName;			/* name we were invoked with */
-+#ifndef NOFILE /* might be defined in <sys/param.h> */
-+#define NOFILE 256
-+#endif
- FILE	*rgfp[NOFILE+1];		/* stack of input/include files */
- int	cfp = 0;			/* count of files in stack */
- int	cOpenBrace = 0;			/* count of `{' in <LaMacro> and <LaMacro2> */
-@@ -400,6 +429,9 @@
- 	_splitpath (rgsbArgs[0], drive, dir, fname, ext);
- 	sbProgName = strlwr(fname);
- #else
-+#ifdef KPATHSEA
-+	kpse_set_program_name (rgsbArgs[0], NULL);
-+#endif
- 	if ((sbProgName = rindex(rgsbArgs[0], '/')) != NULL)
- 	    sbProgName++;
- 	else
-@@ -407,9 +439,11 @@
- #endif
- 	if (strcmp("delatex",sbProgName) == 0)
- 	    fLatex = 1;
--	
-+
-+#ifndef KPATHSEA
- 	/* set rgsbInputPaths for use with TexOpen() */
- 	SetInputPaths();
-+#endif
- 
- 	/* process command line options */
- 	while (iArgs < cArgs && *(pch = rgsbArgs[iArgs]) == CHOPT) {
-@@ -644,7 +678,7 @@
- int
- InList(char *sbFile)
- {
--	char	*pch, sbBase[MAXPATHLEN];
-+	char	*pch, sbBase[PATH_MAX];
- 	int	i;
- 
- 	if (csbIncList == 0)	/* no list */
-@@ -659,6 +693,7 @@
- 	return(0);
- }
- 
-+#ifndef KPATHSEA
- /******
- ** SetInputPaths -- sets rgsbInputPaths to the values indicated by the
- **	TEXINPUTS environment variable if set or else DEFAULTINPUTS.  If
-@@ -702,6 +737,7 @@
- 	    ErrorExit("TEXINPUTS environment variable has too many paths");
- #endif
- }
-+#endif
- 
- /******
- ** SeparateList -- takes a chSep separated list sbList, replaces the
-@@ -738,10 +774,12 @@
- FILE *
- TexOpen(char *sbFile)
- {
--	char	*pch, *sbNew;
-+	char	*sbNew;
-+#ifndef KPATHSEA
-+	char	*pch;
- 	FILE	*fp;
- 	int	iPath;
--	static char	sbFullPath[MAXPATHLEN];
-+	static char	sbFullPath[PATH_MAX];
- 
- 	for (iPath = 0; iPath < csbInputPaths; iPath++) {
- #ifdef OS2
-@@ -788,7 +826,15 @@
- 	    if ((fp = fopen(sbFullPath, "r")) != NULL)
- 		return(fp);
- 	}
--	return((FILE *)NULL);
-+	return NULL;
-+#else
-+	sbNew = kpse_find_file (sbFile, kpse_tex_format, false);
-+
-+	if (sbNew == NULL)
-+	    return NULL;
-+
-+	return fopen (sbNew, "r");
-+#endif
- }
- 
- /******

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-05-kern-and-glue
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-05-kern-and-glue	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-05-kern-and-glue	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,35 +0,0 @@
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2010-06-12 00:15:05.000000000 +0200
-+++ detex-2.8/detex.l	2011-06-07 13:42:05.000000000 +0200
-@@ -157,7 +157,12 @@
- W	[a-zA-Z]+
- N	[+-]?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))
- U	pt|pc|in|bp|cm|mm|dd|cc|sp
--D	{S}(({N}{S}{U})|(\\{W})){S}
-+HU	{U}|em
-+HD	{S}(({N}{S}{HU})|(\\{W})){S}
-+HG	{HD}(plus{HD})?(minus{HD})?
-+VU	{U}|ex
-+VD	{S}(({N}{S}{VU})|(\\{W})){S}
-+VG	{VD}(plus{VD})?(minus{VD})?
- Z	\*?
- 
- %Start Define Display IncludeOnly Input Math Normal Control
-@@ -212,11 +217,12 @@
- <LaEnd>"\n"					NEWLINE;
- <LaEnd>.					;
- 
--<Normal>"\\vskip"{D}				;
--<Normal>"\\vspace"{Z}{S}"{"{D}"}"		;
--<Normal>"\\hskip"{D}				;
--<Normal>"\\hspace"{Z}{S}"{"{D}"}"		;
--<Normal>"\\addvspace"{S}"{"{D}"}"		;
-+<Normal>"\\kern"{HD}				;
-+<Normal>"\\vskip"{VG}				;
-+<Normal>"\\vspace"{Z}{S}"{"{VG}"}"		;
-+<Normal>"\\hskip"{HG}				;
-+<Normal>"\\hspace"{Z}{S}"{"{HG}"}"		;
-+<Normal>"\\addvspace"{S}"{"{VG}"}"		;
- 
- <Normal>"\\newlength"				{ KILLARGS(1); }
- <Normal>"\\setlength"				{ KILLARGS(2); }

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-06-never-interactive
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-06-never-interactive	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-06-never-interactive	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,9 +0,0 @@
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2011-06-07 13:42:05.000000000 +0200
-+++ detex-2.8/detex.l	2012-06-21 11:52:31.000000000 +0200
-@@ -1,3 +1,5 @@
-+%option never-interactive
-+
- %{
- #ifndef lint
- static char	rcsid[] = "$Header: /p/src/local/bin/detex/RCS/detex.l,v 2.22 2007/03/01 20:22:01 trinkle Exp trinkle $";

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-07-rename
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-07-rename	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-07-rename	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,48 +0,0 @@
-diff -ur detex-2.8.orig/detex.h detex-2.8/detex.h
---- detex-2.8.orig/detex.h	2008-02-01 20:55:51.000000000 +0100
-+++ detex-2.8/detex.h	2012-08-02 10:31:17.000000000 +0200
-@@ -78,4 +78,4 @@
- #define	CHTEXOPT	't'
- #define	CHWORDOPT	'w'
- 
--#define	ERROR		-1
-+#define	my_ERROR	-1
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2012-06-21 11:52:31.000000000 +0200
-+++ detex-2.8/detex.l	2012-08-02 10:31:20.000000000 +0200
-@@ -580,7 +580,7 @@
- 	sb = SafeMalloc(strlen(sbEnvList) + 1, "malloc for SetEnvIgnore failed");
- 	(void) strcpy(sb, sbEnvList);
- 	csbEnvIgnore = SeparateList(sb, rgsbEnvIgnore, CHENVSEP, MAXENVS);
--	if (csbEnvIgnore == ERROR)
-+	if (csbEnvIgnore == my_ERROR)
- 	    ErrorExit("The environtment list contains too many environments");
- }
- 
-@@ -738,7 +738,7 @@
- 	    (void)strcat(sbPaths, DEFAULTINPUTS);
- 
- 	csbInputPaths = SeparateList(sbPaths, rgsbInputPaths, CHPATHSEP, MAXINPUTPATHS);
--	if (csbInputPaths == ERROR)
-+	if (csbInputPaths == my_ERROR)
- #ifdef OS2
- 	    ErrorExit("TEXINPUT(S) environment variable has too many paths");
- #else
-@@ -751,7 +751,7 @@
- ** SeparateList -- takes a chSep separated list sbList, replaces the
- **	chSep's with NULLs and sets rgsbList[i] to the beginning of
- **	the ith word in sbList.  The number of words is returned.  A
--**	ERROR is returned if there are more than csbMax words.
-+**	my_ERROR is returned if there are more than csbMax words.
- ******/
- 
- int
-@@ -764,7 +764,7 @@
- 	    if ((sbList = index(sbList, chSep)))
- 		*sbList++ = '\0';
- 	}
--	return(sbList && *sbList ? ERROR : csbList);
-+	return(sbList && *sbList ? my_ERROR : csbList);
- }
- 
- /******

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-08-kpathsea
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-08-kpathsea	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-08-kpathsea	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,52 +0,0 @@
-	Clarify that DEFAULTINPUTS and CHPATHSEP are not used with KPATHSEA
-
-diff -ur detex-2.8.orig/detex.h detex-2.8/detex.h
---- detex-2.8.orig/detex.h	2012-08-02 10:31:17.000000000 +0200
-+++ detex-2.8/detex.h	2012-08-24 10:23:29.000000000 +0200
-@@ -51,6 +51,7 @@
- 
- #define	MAXINCLIST	40
- 
-+#ifndef KPATHSEA
- #ifdef OS2
- #define	DEFAULTINPUTS	".;/emtex/texinput"
- #define	CHPATHSEP	';'
-@@ -58,6 +59,8 @@
- #define	DEFAULTINPUTS	".:/usr/local/tex/inputs"
- #define	CHPATHSEP	':'
- #endif
-+#endif
-+
- #define	MAXINPUTPATHS	10
- 
- #define	DEFAULTENV	"array,eqnarray,equation,figure,mathmatica,picture,table,verbatim"
-
-	With KPATHSEA use kpse_program_name.
-	Fixed a typo.
-
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2012-08-02 10:31:20.000000000 +0200
-+++ detex-2.8/detex.l	2012-08-24 10:37:03.000000000 +0200
-@@ -436,10 +436,10 @@
- #endif
- 	_splitpath (rgsbArgs[0], drive, dir, fname, ext);
- 	sbProgName = strlwr(fname);
--#else
--#ifdef KPATHSEA
-+#elif defined(KPATHSEA)
- 	kpse_set_program_name (rgsbArgs[0], NULL);
--#endif
-+	sbProgName = kpse_program_name;
-+#else
- 	if ((sbProgName = rindex(rgsbArgs[0], '/')) != NULL)
- 	    sbProgName++;
- 	else
-@@ -462,7 +467,7 @@
- 			break;
- 		    case CHENVOPT:
- 			if (++iArgs >= cArgs) {
--				ErrorExit("-e option requires and argument");
-+				ErrorExit("-e option requires an argument");
- 			}
- 			sbEnvList = rgsbArgs[iArgs];
- 			break;

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-09-binary
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-09-binary	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-09-binary	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,28 +0,0 @@
-	In TeX Live we use binary mode for all output files.
-
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2012-08-24 10:37:03.000000000 +0200
-+++ detex-2.8/detex.l	2012-08-24 10:51:12.000000000 +0200
-@@ -83,6 +83,11 @@
- #include <stdlib.h>
- #endif
- 
-+#ifdef WIN32
-+#include <fcntl.h>
-+#include <io.h>
-+#endif
-+
- #endif /* KPATHSEA */
- 
- #undef IGNORE
-@@ -494,6 +499,10 @@
- 	}
- 	SetEnvIgnore(sbEnvList);
- 
-+#ifdef WIN32
-+	_setmode(fileno(stdout), _O_BINARY);
-+#endif
-+
- 	/* process input files */
- 	for (; iArgs < cArgs; iArgs++) {
- 	    fSawFile++;

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-10-ANSI-strings
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-10-ANSI-strings	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-10-ANSI-strings	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,52 +0,0 @@
-diff -ur detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2012-08-24 10:51:12.000000000 +0200
-+++ detex-2.8/detex.l	2013-06-27 18:49:05.000000000 +0200
-@@ -70,10 +70,10 @@
- 
- #ifdef HAVE_STRING_H
- #include <string.h>
--#define	index	strchr
--#define	rindex	strrchr
- #else
- #include <strings.h>
-+#define	strchr  index
-+#define	strrchr rindex
- #endif
- #ifndef MAXPATHLEN
- #include <sys/param.h>
-@@ -445,7 +445,7 @@
- 	kpse_set_program_name (rgsbArgs[0], NULL);
- 	sbProgName = kpse_program_name;
- #else
--	if ((sbProgName = rindex(rgsbArgs[0], '/')) != NULL)
-+	if ((sbProgName = strrchr(rgsbArgs[0], '/')) != NULL)
- 	    sbProgName++;
- 	else
- 	    sbProgName = rgsbArgs[0];
-@@ -701,7 +701,7 @@
- 	if (csbIncList == 0)	/* no list */
- 	    return(1);
- 	(void)strcpy(sbBase, sbFile);
--	if ((pch = rindex(sbBase, '.')) != NULL)
-+	if ((pch = strrchr(sbBase, '.')) != NULL)
- 	    *pch = '\0';
- 	i = 0;
- 	while ((i < csbIncList) && rgsbIncList[i])
-@@ -770,7 +770,7 @@
- 
- 	while (sbList && *sbList && csbList < csbMax) {
- 	    rgsbList[csbList++] = sbList;
--	    if ((sbList = index(sbList, chSep)))
-+	    if ((sbList = strchr(sbList, chSep)))
- 		*sbList++ = '\0';
- 	}
- 	return(sbList && *sbList ? my_ERROR : csbList);
-@@ -815,7 +815,7 @@
- #endif
- 
- 	    /* If sbFile ends in .tex then it must be there */
--	    if ((pch = rindex(sbFullPath, '.')) != NULL
-+	    if ((pch = strrchr(sbFullPath, '.')) != NULL
- 			&& (strcmp(pch, ".tex") == 0))
- 	    {
- 		if ((fp = fopen(sbFullPath, "r")) != NULL)

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-11-c_auto_h
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-11-c_auto_h	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-11-c_auto_h	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,21 +0,0 @@
-diff -ur -x detex.c detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2013-06-27 18:49:05.000000000 +0200
-+++ detex-2.8/detex.l	2013-06-28 14:46:12.000000000 +0200
-@@ -1,6 +1,6 @@
- %option never-interactive
- 
--%{
-+%top{
- #ifndef lint
- static char	rcsid[] = "$Header: /p/src/local/bin/detex/RCS/detex.l,v 2.22 2007/03/01 20:22:01 trinkle Exp trinkle $";
- #endif
-@@ -89,7 +89,9 @@
- #endif
- 
- #endif /* KPATHSEA */
-+}
- 
-+%{
- #undef IGNORE
- 
- #define	LaBEGIN		if (fLatex) BEGIN

Deleted: trunk/Build/source/texk/detex/TLpatches/patch-12-typo
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-12-typo	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/TLpatches/patch-12-typo	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,12 +0,0 @@
-diff -ur -x detex.c detex-2.8.orig/detex.l detex-2.8/detex.l
---- detex-2.8.orig/detex.l	2013-06-28 14:46:12.000000000 +0200
-+++ detex-2.8/detex.l	2014-08-20 09:56:40.115740053 +0200
-@@ -592,7 +592,7 @@
- 	(void) strcpy(sb, sbEnvList);
- 	csbEnvIgnore = SeparateList(sb, rgsbEnvIgnore, CHENVSEP, MAXENVS);
- 	if (csbEnvIgnore == my_ERROR)
--	    ErrorExit("The environtment list contains too many environments");
-+	    ErrorExit("The environment list contains too many environments");
- }
- 
- /******

Added: trunk/Build/source/texk/detex/TLpatches/patch-13-typo-minipage
===================================================================
--- trunk/Build/source/texk/detex/TLpatches/patch-13-typo-minipage	                        (rev 0)
+++ trunk/Build/source/texk/detex/TLpatches/patch-13-typo-minipage	2018-06-26 02:37:10 UTC (rev 48092)
@@ -0,0 +1,12 @@
+diff -ur opendetex-2.8.3.orig/detex.l opendetex-2.8.3/detex.l
+--- opendetex-2.8.3.orig/detex.l	2018-02-11 18:42:05.000000000 +0900
++++ opendetex-2.8.3/detex.l	2018-06-20 23:12:37.000000000 +0900
+@@ -203,7 +204,7 @@
+ <LaVerbatim>.					ECHO;
+ 
+ <LaBegin>{S}"{"{S}"minipage"{S}"}"		{ KILLARGS(1);
+-						  if (BeginEnv("minpage"))
++						  if (BeginEnv("minipage"))
+ 							BEGIN LaEnv;
+ 						  else
+ 							BEGIN LaMacro; /* Normal; */

Modified: trunk/Build/source/texk/detex/detex-src/COPYRIGHT
===================================================================
--- trunk/Build/source/texk/detex/detex-src/COPYRIGHT	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/COPYRIGHT	2018-06-26 02:37:10 UTC (rev 48092)
@@ -33,3 +33,4 @@
 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
+

Added: trunk/Build/source/texk/detex/detex-src/ChangeLog
===================================================================
--- trunk/Build/source/texk/detex/detex-src/ChangeLog	                        (rev 0)
+++ trunk/Build/source/texk/detex/detex-src/ChangeLog	2018-06-26 02:37:10 UTC (rev 48092)
@@ -0,0 +1,178 @@
+April 26, 1986
+
+Modified -- June 4, 1986
+Changed so that it automatically recognizes LaTeX source and ignores several
+environment modes such as array.
+
+
+Modified (Version 2.0) -- June 30, 1984
+Now handles white space in sequences like "\begin { document }".  Detex is not
+as easily confused by such things as display mode ends and begins that don't
+match up.
+
+
+Modified -- September 19, 1986
+Added the "-e <environment-list>" option to ignore specified LaTeX
+environments.
+
+
+Modified -- June 30, 1987
+Added the "-n" no-follow option, to allow detex to ignore \input and \include
+commands.  Also changed the algorithm for locating the input files.  It now
+interprets the "." more reasonably (i.e. it is not always the beginning of an
+extension).
+
+
+Modified -- December 15, 1988
+Added handling of verbatim environment in LaTeX mode and added it to the list
+of modes ignored by default.  Because of limitations with lex, it was
+necessary to shorten the names of some of the existing start states before
+adding a new one (ugh).
+
+
+Modified -- January 3, 1988
+Added ignore of \$ inside $$ (math) pair.
+
+
+Modified (Version 2.2) -- June 25, 1990
+Control sequences are no longer replaced by space, but just removed.  This
+means accents no longer cause output words to be broken.  The "-c" option was
+added to show the arguments of \cite, \ref, and \pageref macros.  This is
+useful when using something like style on the output.
+
+
+Modified (Version 2.3) -- September 7, 1990
+Fixed the handling of Ctl mode a little better and added an exception
+for \index on suggestions from kcb at hss.caltech.edu (KC Border).  Also
+changed the value for DEFAULTINPUTS to coincide with a local change.
+
+
+Modified -- February 10, 1991
+Added -t option to force TeX mode even when seeing the "\begin{document}"
+string in the input.
+
+
+Modified -- February 23, 1991
+Based on suggestions from pinard at iro.umontreal.ca (Francois Pinard), I
+added support for the SysV string routines (-DUSG), added defines for
+the flex lexical scanner (-DFLEX_SCANNER), changed NULL to '\0' when
+using it as a character (his sys defined NULL as (void *)0), changed
+the Makefile to use ${CC} instead of cc, and added comments about the
+new compile time options.
+
+
+Modified (Version 2.4) -- September 2, 1992
+Corrected the way CITEBEGIN worked.  Due to serious braindeath I had
+the condition wrong in the if test.  It should be (fLatex && !fCite).
+This solves the problem a couple people reported with amstex style
+\ref entries.
+
+Added a preprocessing sed(1) command to replace all the long, easy to
+read state names with short two letter state names (SA-S?) so that lex
+won't overflow and I don't have to keep shortening the state names
+every time I add one.  If a state is added, it must also be added to
+states.sed (order is important) along with its unique S? replacement.
+
+Added \pagestyle, \setcounter, and \verb handling from
+K.Sattar at cs.exeter.ac.uk (Khalid Sattar).  Also allows invocation as
+"delatex" to force LaTeX mode.
+
+Applied patches from queinnec at cenatls.cena.dgac.fr (Philippe Queinnec)
+to handle nested {}s in state <LaMacro2> (\bibitem, \cite, \index).
+
+Added special ligature handling (\aa, \ae, \oe, \l, \o, \i, \j, \ss)
+at the suggestion of gwp at dido.caltech.edu (G. W. Pigman II).
+
+Cleaned up the comments on detex.h, added mathmatica to DEFAULTENV.
+
+
+Modified (Version 2.5) -- January 28, 1993
+Leading spaces in macros are no longer stripped.  This means
+"foo\footnote{ bar}" comes out as "foo bar" instead of "foobar".
+
+Fixed special ligature handling so it works in cases line {\ss} instead of
+just when followed by a space.
+
+
+Modified (Version 2.6) -- July 30, 1993
+Added OS/2 port from hankedr at mail.auburn.edu (Darrel R Hankerson).
+
+Added handling of leading and trailing ':' in TEXINPUTS per the latest
+TeX as suggested by jnp at tfl.dk (J|rgen N|rgaard).
+
+Changed the way the input path is constructed in SetInputPaths() so we
+never try to modify a constant string.
+
+Changed the way the the ignore environment list is contructed in
+SetEnvIgnore() so we never try to modify a constant string.
+
+Changed the USG define to HAVE_STRING_H.
+
+Fixed the states.sed script so it only replaces "Input" in the correct
+places.  I would like to use the \< \> word separator patterns but
+they are not supported by all versions of sed.  This as least works.
+
+Changed the detex.c target in the Makefile to use a temporary file
+because I experienced problems (segmentation fault) with lex on
+Solaris 2.1 when input was from stdin.
+
+
+Modified (Version 2.7) -- September 10, 1997
+Removed line breaks in detex.l between a few patterns and actions.  It
+appears that flex is no longer able to handle this.  Thanks to Anthony
+Harris <harris at hebb.neurology.pitt.edu> and Marty Leisner
+<leisner at sdsp.mc.xerox.com> for reporting this.
+
+
+Porting notes -- March 30, 1992
+When using gcc, or compiling on a NeXT, you should compile with
+-fwritable-strings.  With the change to SetInputPaths() in 2.6 this
+should no longer be necessary.
+
+On a NeXT, it has been reported that lex replaces the '\0' with NULL,
+and then the compiler complains about it.  I think this is an old bug
+that is no longer applicable.
+
+July 30, 1993
+The flex scanner generator does not work because it does not handle
+input buffering the same way as lex.  I don't know of any reasonable
+way to rewrite detex to get around this problem.
+
+May 25, 1995
+According to alain at ia1.u-strasbg.fr (Alain Ketterlin), using flex
+allows 8-bit characters to be handled correctly.
+
+Modified (Version 2.8) -- January 1, 2008
+Added NCSA/University of Illinois Open Source License to facilitate
+free redistribution.
+
+(Version 2.8.1) -- October 2, 2008
+First version of OpenDetex.
+Making program compile on modern UNIX systems; many fixes in LaTeX
+code handling (quotes, figure and table environments, headings and
+many more).
+
+(Version 2.8.2) -- February, 2016
+Improved ANSI C compatibility. Used kpse_find_file() and
+kpse_program_name(). Handle `\kern', allow `em/ex'for dimensions,
+handle glue specs. Added the never-interactive option to prevent flex
+from creating a problematic prototype for isatty(). Renamed
+ERROR -> my_ERROR to avoid a conflict with WIN32 headers. Used binary
+mode for output file (Peter Breitenlohner and Werner Lemberg)
+
+Insert a space in place of right curly brace (Eric Miotto).
+
+Provide 'make uninstall'. Install man page when running 'make install'.
+
+(Version 2.8.3) -- February, 2018
+Added -r option that replaces math environments with nouns and verbs in a way that keeps sentences readable. Thanks to Sophie Huiberts.
+
+Changed Makefile to fix a Mac OS X problem where frequently an empty output file was produced.
+
+Removed states.sed that modified detex.l to avoid Lex memory overrun - no longer needed on current machines. Added detex.c to the distributed package to allow compiling OpenDetex without having Flex.
+
+Removed 'mathmatica' from the default list of environments which contents are ignored - 'mathmatica' is not supported by TeX. Added more ignored environments: algorithm, align, smallmatrix and several more.
+
+Fixed compilation on Cygwin.
+
+Removed special files for OS/2 - they required compilers that no longer exist. OpenDetex should be able to be compiled using GCC for OS/2.

Added: trunk/Build/source/texk/detex/detex-src/INSTALL
===================================================================
--- trunk/Build/source/texk/detex/detex-src/INSTALL	                        (rev 0)
+++ trunk/Build/source/texk/detex/detex-src/INSTALL	2018-06-26 02:37:10 UTC (rev 48092)
@@ -0,0 +1,13 @@
+To build the program, you need:
+* 'make' program
+* a C compiler (for example, Clang or GCC)
+* 'lex' implementation (for example, flex)
+
+Debian/Ubuntu users can install those by executing:
+   sudo apt-get install make gcc flex
+
+To compile the program, simply execute
+   make
+
+To install the program, execute
+   sudo make install

Modified: trunk/Build/source/texk/detex/detex-src/Makefile
===================================================================
--- trunk/Build/source/texk/detex/detex-src/Makefile	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/Makefile	2018-06-26 02:37:10 UTC (rev 48092)
@@ -38,6 +38,8 @@
 #
 # Detex is a program to remove TeX and LaTeX constructs from text source.
 
+UNAME_S := $(shell uname -s)
+
 # Installation directory
 #
 DESTDIR	= /usr/local/bin
@@ -69,25 +71,27 @@
 #
 #DEFS	+= ${DEFS} -DNO_MALLOC_DECL
 #
-CFLAGS	= -O ${DEFS}
+CFLAGS	= -O ${DEFS} -Wall
 
 # Use your favorite lexical scanner
 #
-LEX	= lex
-#LEX	= flex
+#LEX	= lex
+LEX	= flex
 
 #LFLAGS	= -8 -C
 
 # scanner library
 #
-LEXLIB	= -ll
-#LEXLIB	= -lfl
+LEXLIB	= -lfl
+ifeq ($(UNAME_S),Darwin)
+	LEXLIB	= -ll
+endif
 
 LPR	= lpr -p
 
 # Program names
 #
-PROGS	= detex
+PROGS	= detex delatex
 
 # Header files
 #
@@ -101,39 +105,56 @@
 #
 D_OBJ	= detex.o
 
+VERSION = 2.8.3
+
 all:	${PROGS}
 
 detex: ${D_OBJ}
 	${CC} ${CFLAGS} -o $@ ${D_OBJ} ${LEXLIB}
 
-detex.c:
-	sed -f states.sed detex.l > xxx.l
-	${LEX} ${LFLAGS} xxx.l
-	rm -f xxx.l
+delatex: detex
+	cp detex delatex
+
+detex.c: detex.l
+	${LEX} ${LFLAGS} detex.l
 	mv lex.yy.c detex.c
 
-lexout.c: detex.c
-	mv detex.c lexout.c
-
 man-page:
 	troff -man detex.1l
 
 # If you want detex available as delatex, uncomment the last two lines of
 # this target
-install: detex
+install: all
 	rm -f ${DESTDIR}/detex
-	install -c -m 775 -o binary -g staff -s detex ${DESTDIR}
+	install -c -m 775 -g staff -s detex ${DESTDIR}
+	install detex.1l /usr/local/share/man/man1
 #	rm -f ${DESTDIR}/delatex
 #	ln ${DESTDIR}/detex ${DESTDIR}/delatex
 
+uninstall:
+	rm -f ${DESTDIR}/detex
+	rm -f ${DESTDIR}/delatex
+	rm -f /usr/local/share/man/man1/detex.*
+
 clean:
 	-rm -f a.out core *.s *.o ERRS errs .,* .emacs_[0-9]*
-	-rm -f ${PROGS} xxx.l lex.yy.c
+	-rm -f ${PROGS} xxx.l lex.yy.c detex.c
+	-rm -f *.tar.bz2
 
 print:	${HDR} ${SRC}
 	${LPR} Makefile ${HDR} ${SRC}
 
+test: all
+	./test.pl
+
+run: delatex
+	./delatex in > out.txt
+
+package: clean detex.c
+	tar cjfv opendetex-${VERSION}.tar.bz2 ChangeLog COPYRIGHT detex.* INSTALL Makefile README
+
 # Dependencies
 #
 detex.c: detex.h
 detex.c: detex.l
+

Modified: trunk/Build/source/texk/detex/detex-src/README
===================================================================
--- trunk/Build/source/texk/detex/detex-src/README	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/README	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,6 +1,6 @@
-Detex - Version 2.8
+OpenDetex - Version 2.8.3
 
-Detex is a program to remove TeX constructs from a text file.  It recognizes
+OpenDetex is a program to remove TeX constructs from a text file.  It recognizes
 the \input command.
 
 This program assumes it is dealing with LaTeX input if it sees the string
@@ -11,185 +11,35 @@
 
 README -	you're looking at it.
 
-COPYRIGHT -	NCSA/University of Illinois Open Source License
+ChangeLog -	detailed history of changes done in different versions of the program
 
-Makefile -	makefile for generating detex on a 4.2BSD Unix system.
+COPYRIGHT -	information about program authors and license
 
+INSTALL   -	how to compile the program
+
+Makefile -	makefile for generating detex
+
 detex.1l -	troff source for the detex manual page.
 		Assuming you have the -man macros, use "make man-page" to
 		generate it.
 
+detex.c -	C code generated from detex.l distributed to allow
+		building from source without having Flex installed
+
 detex.h -	Various global definitions.  These should be modified to suit
 		the local installation.
 
-detex.l -	Lex and C source for the detex program.
+detex.l -	Lex/Flex and C source for the detex program.
 
-lexout.c -	C code generated from detex.l using lex on a Sun (SunOS 4.1.1)
-		This can be useful for DOS, OS/2 or systems that don't have
-		lex.
 
-states.sed -	sed(1) script to munge the state names in detex.l so that
-		reasonable names can be used in the source without causing
-		lex(1) to overflow.
-
-os2 -		subdirectory containing support for compilation on
-		OS/2 and DOS systems
-
-
 This software package is distributed under the NCSA/University of
-Illinois Open Source License.  The latest version is available at
-http://www.cs.purdue.edu/homes/trinkle/detex/ Send comments and fixes
-to me via email.
+Illinois Open Source License.
 
-Daniel Trinkle <trinkle at cs.purdue.edu>
-Department of Computer Sciences
-Purdue University
-West Lafayette, IN 47907-1398
+OpenDetex was created by Piotr Kubowicz from version 2.8 of Detex
+program by Daniel Trinkle, obtained from
+http://www.cs.purdue.edu/homes/trinkle/detex/
 
-April 26, 1986
-
-Modified -- June 4, 1986
-Changed so that it automatically recognizes LaTeX source and ignores several
-environment modes such as array.
-
-
-Modified (Version 2.0) -- June 30, 1984
-Now handles white space in sequences like "\begin { document }".  Detex is not
-as easily confused by such things as display mode ends and begins that don't
-match up.
-
-
-Modified -- September 19, 1986
-Added the "-e <environment-list>" option to ignore specified LaTeX
-environments.
-
-
-Modified -- June 30, 1987
-Added the "-n" no-follow option, to allow detex to ignore \input and \include
-commands.  Also changed the algorithm for locating the input files.  It now
-interprets the "." more reasonably (i.e. it is not always the beginning of an
-extension).
-
-
-Modified -- December 15, 1988
-Added handling of verbatim environment in LaTeX mode and added it to the list
-of modes ignored by default.  Because of limitations with lex, it was
-necessary to shorten the names of some of the existing start states before
-adding a new one (ugh).
-
-
-Modified -- January 3, 1988
-Added ignore of \$ inside $$ (math) pair.
-
-
-Modified (Version 2.2) -- June 25, 1990
-Control sequences are no longer replaced by space, but just removed.  This
-means accents no longer cause output words to be broken.  The "-c" option was
-added to show the arguments of \cite, \ref, and \pageref macros.  This is
-useful when using something like style on the output.
-
-
-Modified (Version 2.3) -- September 7, 1990
-Fixed the handling of Ctl mode a little better and added an exception
-for \index on suggestions from kcb at hss.caltech.edu (KC Border).  Also
-changed the value for DEFAULTINPUTS to coincide with a local change.
-
-
-Modified -- February 10, 1991
-Added -t option to force TeX mode even when seeing the "\begin{document}"
-string in the input.
-
-
-Modified -- February 23, 1991
-Based on suggestions from pinard at iro.umontreal.ca (Francois Pinard), I
-added support for the SysV string routines (-DUSG), added defines for
-the flex lexical scanner (-DFLEX_SCANNER), changed NULL to '\0' when
-using it as a character (his sys defined NULL as (void *)0), changed
-the Makefile to use ${CC} instead of cc, and added comments about the
-new compile time options.
-
-
-Modified (Version 2.4) -- September 2, 1992
-Corrected the way CITEBEGIN worked.  Due to serious braindeath I had
-the condition wrong in the if test.  It should be (fLatex && !fCite).
-This solves the problem a couple people reported with amstex style
-\ref entries.
-
-Added a preprocessing sed(1) command to replace all the long, easy to
-read state names with short two letter state names (SA-S?) so that lex
-won't overflow and I don't have to keep shortening the state names
-every time I add one.  If a state is added, it must also be added to
-states.sed (order is important) along with its unique S? replacement.
-
-Added \pagestyle, \setcounter, and \verb handling from
-K.Sattar at cs.exeter.ac.uk (Khalid Sattar).  Also allows invocation as
-"delatex" to force LaTeX mode.
-
-Applied patches from queinnec at cenatls.cena.dgac.fr (Philippe Queinnec)
-to handle nested {}s in state <LaMacro2> (\bibitem, \cite, \index).
-
-Added special ligature handling (\aa, \ae, \oe, \l, \o, \i, \j, \ss)
-at the suggestion of gwp at dido.caltech.edu (G. W. Pigman II).
-
-Cleaned up the comments on detex.h, added mathmatica to DEFAULTENV.
-
-
-Modified (Version 2.5) -- January 28, 1993
-Leading spaces in macros are no longer stripped.  This means
-"foo\footnote{ bar}" comes out as "foo bar" instead of "foobar".
-
-Fixed special ligature handling so it works in cases line {\ss} instead of
-just when followed by a space.
-
-
-Modified (Version 2.6) -- July 30, 1993
-Added OS/2 port from hankedr at mail.auburn.edu (Darrel R Hankerson).
-
-Added handling of leading and trailing ':' in TEXINPUTS per the latest
-TeX as suggested by jnp at tfl.dk (J|rgen N|rgaard).
-
-Changed the way the input path is constructed in SetInputPaths() so we
-never try to modify a constant string.
-
-Changed the way the the ignore environment list is contructed in
-SetEnvIgnore() so we never try to modify a constant string.
-
-Changed the USG define to HAVE_STRING_H.
-
-Fixed the states.sed script so it only replaces "Input" in the correct
-places.  I would like to use the \< \> word separator patterns but
-they are not supported by all versions of sed.  This as least works.
-
-Changed the detex.c target in the Makefile to use a temporary file
-because I experienced problems (segmentation fault) with lex on
-Solaris 2.1 when input was from stdin.
-
-
-Modified (Version 2.7) -- September 10, 1997
-Removed line breaks in detex.l between a few patterns and actions.  It
-appears that flex is no longer able to handle this.  Thanks to Anthony
-Harris <harris at hebb.neurology.pitt.edu> and Marty Leisner
-<leisner at sdsp.mc.xerox.com> for reporting this.
-
-
-Porting notes -- March 30, 1992
-When using gcc, or compiling on a NeXT, you should compile with
--fwritable-strings.  With the change to SetInputPaths() in 2.6 this
-should no longer be necessary.
-
-On a NeXT, it has been reported that lex replaces the '\0' with NULL,
-and then the compiler complains about it.  I think this is an old bug
-that is no longer applicable.
-
-July 30, 1993
-The flex scanner generator does not work because it does not handle
-input buffering the same way as lex.  I don't know of any reasonable
-way to rewrite detex to get around this problem.
-
-May 25, 1995
-According to alain at ia1.u-strasbg.fr (Alain Ketterlin), using flex
-allows 8-bit characters to be handled correctly.
-
-Modified (Version 2.8) -- January 1, 2008
-Added NCSA/University of Illinois Open Source License to facilitate
-free redistribution.
+Currently home of OpenDetex is GitHub:
+https://github.com/pkubowicz/opendetex
+You can check for latest version, submit bug reports or patches, or
+ask for becoming team member there.

Modified: trunk/Build/source/texk/detex/detex-src/detex.c
===================================================================
--- trunk/Build/source/texk/detex/detex-src/detex.c	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/detex.c	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,8 +1,3 @@
-#line 4 "../../../texk/detex/detex-src/detex.l"
-#ifndef lint
-static char	rcsid[] = "$Header: /p/src/local/bin/detex/RCS/detex.l,v 2.22 2007/03/01 20:22:01 trinkle Exp trinkle $";
-#endif
-
 /*
  * Copyright (c) 1986-2007 Purdue University
  * All rights reserved.
@@ -40,7 +35,6 @@
  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
  */
 
-
 /*
  * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [file[.tex] ]
  *
@@ -70,7 +64,6 @@
 #include <string.h>
 #else
 #include <strings.h>
-#define	strchr  index
 #define	strrchr rindex
 #endif
 #ifndef MAXPATHLEN
@@ -88,10 +81,8 @@
 
 #endif /* KPATHSEA */
 
+#line 84 "lex.yy.c"
 
-
-#line 94 "../../../texk/detex/detex-src/detex.c"
-
 #define  YY_INT_ALIGNED short int
 
 /* A lexical scanner generated by flex */
@@ -99,7 +90,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 6
-#define YY_FLEX_SUBMINOR_VERSION 0
+#define YY_FLEX_SUBMINOR_VERSION 1
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -178,25 +169,13 @@
 
 #endif /* ! FLEXINT_H */
 
-#ifdef __cplusplus
+/* TODO: this is always defined, so inline it */
+#define yyconst const
 
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
-
-#define YY_USE_CONST
-
-#endif	/* defined (__STDC__) */
-#endif	/* ! __cplusplus */
-
-#ifdef YY_USE_CONST
-#define yyconst const
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Returned upon end-of-file. */
@@ -257,7 +236,7 @@
 typedef size_t yy_size_t;
 #endif
 
-extern yy_size_t yyleng;
+extern int yyleng;
 
 extern FILE *yyin, *yyout;
 
@@ -296,12 +275,12 @@
 	/* Size of input buffer in bytes, not including room for EOB
 	 * characters.
 	 */
-	yy_size_t yy_buf_size;
+	int yy_buf_size;
 
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	yy_size_t yy_n_chars;
+	int yy_n_chars;
 
 	/* Whether we "own" the buffer - i.e., we know we created it,
 	 * and can realloc() it to grow it, and should free() it to
@@ -324,7 +303,7 @@
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-    
+
 	/* Whether to try to fill the input buffer when we reach the
 	 * end of it.
 	 */
@@ -352,7 +331,7 @@
 /* Stack of input buffers. */
 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -371,11 +350,11 @@
 
 /* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
-static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
-yy_size_t yyleng;
+static int yy_n_chars;		/* number of characters read into yy_ch_buf */
+int yyleng;
 
 /* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
+static char *yy_c_buf_p = NULL;
 static int yy_init = 0;		/* whether we need to initialize */
 static int yy_start = 0;	/* start state number */
 
@@ -400,7 +379,7 @@
 
 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
 
 void *yyalloc (yy_size_t  );
 void *yyrealloc (void *,yy_size_t  );
@@ -434,7 +413,7 @@
 
 typedef unsigned char YY_CHAR;
 
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
+FILE *yyin = NULL, *yyout = NULL;
 
 typedef int yy_state_type;
 
@@ -451,10 +430,7 @@
 static yy_state_type yy_get_previous_state (void );
 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
 static int yy_get_next_buffer (void );
-#if defined(__GNUC__) && __GNUC__ >= 3
-__attribute__((__noreturn__))
-#endif
-static void yy_fatal_error (yyconst char msg[]  );
+static void yynoreturn yy_fatal_error (yyconst char* msg  );
 
 /* Done after the current pattern has been matched and before the
  * corresponding action - sets up yytext.
@@ -461,13 +437,13 @@
  */
 #define YY_DO_BEFORE_ACTION \
 	(yytext_ptr) = yy_bp; \
-	yyleng = (size_t) (yy_cp - yy_bp); \
+	yyleng = (int) (yy_cp - yy_bp); \
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 	(yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 142
-#define YY_END_OF_BUFFER 143
+#define YY_NUM_RULES 173
+#define YY_END_OF_BUFFER 174
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -475,125 +451,158 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[1067] =
+static yyconst flex_int16_t yy_accept[1362] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  122,  122,    0,    0,    0,    0,
+        0,    0,    0,    0,  144,  144,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      135,  135,    0,    0,    0,    0,    0,    0,  118,  118,
-        0,    0,  143,  142,   80,   79,   78,   92,   91,   92,
-      103,  106,  105,  104,  108,  110,  109,   97,   95,   94,
-       97,  129,  129,   93,    1,  128,  129,  124,  124,  126,
-      123,  122,  121,  120,  123,  123,  122,   11,   11,   10,
-        9,   11,   88,   87,   88,   18,   17,   15,   16,   14,
-       13,   14,   84,   83,   84,   99,  101,  100,  133,  130,
+        0,    0,  166,  166,    0,    0,    0,    0,    0,    0,
+      139,  139,    0,    0,  174,  173,   92,   91,   90,  107,
+      105,  107,  106,  107,  107,  119,  122,  121,  120,  128,
+      130,  129,  113,  110,  109,  112,  113,  113,  158,  158,
+      159,  158,  158,  108,    1,  158,  158,  158,  157,  158,
+      146,  151,  154,  146,  155,  148,  145,  144,  142,  141,
+      145,  145,  143,   12,   12,  173,   11,   12,  102,  100,
 
-      131,  132,  135,  134,  139,  136,  137,  138,  141,  140,
-        6,    6,    7,  118,   43,   42,   44,   90,  103,  108,
-       96,  125,   89,    1,  128,    0,  127,  117,  115,   81,
-      114,  114,  114,  114,   85,  116,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,  114,  122,  122,  120,  120,    0,  119,
-        0,    0,    9,    0,    0,    0,   86,   15,    0,   82,
-       99,  135,    6,    0,   43,  127,  114,  114,  112,  112,
-      116,    0,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+      101,  102,  102,   18,   16,   17,   15,   14,   15,   97,
+       95,   96,   97,   97,  115,  117,  116,  124,  126,  125,
+      164,  161,  162,  163,  166,  165,  170,  167,  168,  169,
+      172,  171,    6,    6,    7,  139,   44,   43,   46,  104,
+        0,    0,    0,    0,    0,    0,    0,  119,  121,  128,
+      129,  111,    0,    0,    0,    0,    0,    0,    0,  160,
+        0,  147,  103,    1,  152,  153,  149,  157,    0,  156,
+      138,  136,   93,  135,  135,  135,  135,   98,  137,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  150,    0,    0,
 
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,    0,    0,    0,    0,  111,  111,    0,  116,  114,
-      114,  114,  114,  114,   77,  114,   65,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,   71,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,    0,    0,
-       12,    0,  114,  114,  114,  114,  114,  114,   61,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-       52,  114,  114,  114,  114,  114,  114,   32,  114,  114,
+        0,  144,  143,  142,  141,  141,    0,  140,    0,    0,
+       11,    0,    0,    0,    0,    0,   99,    0,    0,    0,
+        0,    0,    0,    0,   16,   14,    0,   94,    0,    0,
+        0,    0,    0,    0,    0,  115,  116,  124,  125,  163,
+      166,    6,    0,   44,    0,   45,    0,  106,    0,    0,
+        0,    0,    0,    0,    0,  112,    0,    0,    0,    0,
+        0,    0,    0,  149,  156,  135,  135,  133,  133,  137,
+        0,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
 
-      114,  114,  114,  114,  114,  114,  114,  114,   73,  114,
-      114,    0,    0,    0,    0,  114,  114,    3,  114,  114,
-      114,   46,  114,  114,  114,  114,  114,  114,  114,  114,
-       66,  107,    0,    0,    0,    0,    0,   68,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,   52,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,    0,    0,
-        0,    0,  114,  114,    0,    0,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,    0,    0,    0,    0,    0,
-      114,  114,    0,    0,    0,    0,    0,    0,    0,    0,
+      135,  135,  135,  135,  135,  135,    0,    0,    0,    0,
+        0,    0,    0,    0,  101,    0,    0,    0,    0,    0,
+        0,    0,    0,   96,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      132,  132,    0,  137,  135,  135,  135,  135,  135,  135,
+       89,  135,   71,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,   78,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   13,
 
-        0,    0,    0,   19,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,   36,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,   34,  114,    0,    0,    0,    0,    0,  114,    0,
-        0,    0,  114,  114,    0,    0,   58,  114,  114,  114,
-      114,  114,  114,  114,  114,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   22,    0,    0,    0,
-       98,    0,   19,   19,  114,  114,  114,  114,  114,  114,
-       69,  114,  114,  114,  114,  114,  114,  114,   33,  114,
-       53,  114,  114,  114,  114,  114,  114,  114,  114,  114,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,   67,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,   57,  135,
+      135,  135,  135,  135,  135,   33,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+       85,  135,  135,   25,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   67,  135,  135,  135,
 
-      114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   20,    0,    0,    0,    0,    0,    0,  114,
-      114,    0,  114,   60,   48,  114,  114,  114,   51,   67,
-        0,   22,   22,   22,   22,    0,    0,    0,    0,    0,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-       35,  114,  114,  114,  114,   37,   53,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,    0,   20,   20,
-       20,   20,    0,    0,    0,    0,    0,    0,    0,    0,
-      114,  114,    0,  114,  114,  114,  114,   49,    0,    0,
-       22,   22,    0,    0,    0,    0,    0,    0,    0,    0,
+      135,    3,  135,  135,  135,  135,   48,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,   73,  127,    0,
+        0,    0,    0,    0,   74,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,   57,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  131,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  106,    0,  112,    0,  135,  135,
+      135,  135,  135,    0,    0,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,    0,    0,    0,    0,
 
-        0,    0,    0,    0,  114,  114,  113,  114,  114,   25,
-      114,   50,   70,   56,  114,  114,   38,   40,  114,   26,
-      114,  114,  114,  114,  114,  114,   47,  114,    0,    0,
-       20,   20,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    8,    0,    4,    0,  114,
-        0,    0,    0,  114,  114,  114,  114,    0,    0,   22,
-       22,    0,    0,    0,    0,    0,   23,  114,  114,   74,
-      114,   31,   56,   39,  114,   38,   72,   30,  114,   28,
-       54,  114,  114,   64,    0,    0,   20,   20,    0,    0,
-        0,    0,    0,   21,    0,   27,    0,    0,    0,    0,
+        0,  135,  135,  135,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   19,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,   37,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,   35,  135,
+        0,    0,    0,    0,    0,  135,    0,    0,    0,    0,
+        0,  101,    0,   96,    0,    0,    0,    0,  135,  135,
+      135,  135,  135,    0,    0,   64,  135,  135,   58,  135,
+      135,  135,  135,  135,  135,  135,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   22,    0,    0,
 
-        0,    0,  114,   45,  114,  114,    0,    0,   22,   22,
-        0,    0,    0,    0,  114,  102,  114,  114,   29,   54,
-      114,  114,    0,    0,   20,   20,    0,    0,    0,    0,
+        0,  135,  114,    0,   19,   19,  135,   75,  135,  135,
+      135,  135,  135,  135,   76,  135,  135,  135,  135,  135,
+      135,  135,   34,  135,   59,  135,  135,  135,  135,  135,
+      135,  123,  135,  135,  135,  135,  135,  135,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   20,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   59,  114,  114,    0,    0,   22,
-       22,    0,    0,    0,    0,    0,    0,    0,    0,  114,
-      114,   75,  114,   57,    0,    0,   20,   20,    0,    0,
+        0,    0,  135,  135,  135,  135,  135,    0,  135,   66,
+       58,   50,  135,  135,  135,   53,   83,  135,    0,   22,
+       22,   22,   22,    0,    0,    0,    0,    0,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,  135,
+
+       36,  135,  135,  135,  135,   38,   59,  135,  135,  135,
+      135,  135,  135,  135,  135,  135,  135,  135,  135,    0,
+       20,   20,   20,   20,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  135,  135,  135,  135,  135,
+        0,  135,  135,  135,  135,   51,    0,   84,    0,    0,
+       22,   22,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  135,  135,  135,  134,  135,  135,
+      135,   26,  135,   52,   77,   62,  135,  135,   39,   41,
+      135,   27,  135,  135,  135,  135,  135,  135,  135,   49,
+      135,  135,    0,    0,   20,   20,    0,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   24,    0,   63,   62,    0,    0,   22,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        8,    9,    0,    4,    0,  135,  135,  135,  135,    0,
+        0,    0,  135,  135,  135,  135,    0,    0,    0,   22,
+       22,    0,    0,    0,    0,    0,   23,   72,  135,  135,
+        0,   86,   81,  135,   32,   62,   40,  135,   39,   79,
+       31,  135,   29,  135,  135,   60,  135,  135,   70,    0,
+        0,   20,   20,    0,    0,    0,    0,    0,   21,   10,
+        0,  135,  135,  135,   28,    0,    0,    0,    0,    0,
+        0,  135,   47,  135,  135,    0,    0,    0,   22,   22,
+        0,    0,    0,    0,  135,  118,    0,  135,  135,   30,
 
-        0,    0,    0,    0,   22,    0,    0,    0,    0,  114,
-      114,   55,   57,    0,    0,   20,    0,    0,    0,    0,
+       82,  135,   60,  135,  135,    0,    0,   20,   20,    0,
+        0,    0,    0,    0,  135,  135,   80,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   20,    0,    0,    0,    0,    0,    5,    0,    0,
+       65,  135,  135,    0,    0,   22,   22,    0,    0,    0,
+        0,    0,    0,    0,    0,  135,  134,  135,   87,   63,
+      135,  135,    0,    0,   20,   20,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  135,  135,    0,    0,    0,
+        0,    0,   24,    0,   69,   68,    0,    0,   22,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   22,    0,   22,   22,   22,
-        0,    0,    0,    0,    0,    0,    0,    0,  114,   76,
-       55,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   20,    0,   20,   20,   20,    0,    0,
+        0,    0,    0,    0,   22,    0,    0,    0,    0,  135,
+
+      135,   63,   61,   55,    0,    0,   20,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   20,    0,    0,    0,    0,    0,    5,  135,
+       54,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   22,    0,
+       22,   22,   22,    0,    0,    0,    0,    0,    0,    0,
+        0,  135,   88,   61,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   20,    0,   20,   20,
+       20,    0,    0,    0,    0,    0,    0,    0,    0,   56,
+        0,    0,    0,    0,    0,    2,    0,   22,   22,   22,
 
-        0,    2,    0,   22,   22,   22,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   41,    0,   20,   20,   20,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   42,
+        0,   20,   20,   20,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    2,   22,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   22,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   42,   42,   20,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   41,   41,   20,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   22,
+        0,    0,    0,    0,   22,    0,    0,    0,    0,   20,
 
-        0,    0,    0,    0,   20,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   22,    0,
-       20,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   22,
-        0,   20,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   22,    0,   20,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   22,    0,   20,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -603,15 +612,15 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    4,    5,    1,    1,    6,    7,    1,    8,    9,
        10,   11,   12,   13,   14,   15,    1,   16,   16,   16,
-       16,   16,   17,   17,   17,   17,   17,    1,    1,    1,
-       18,    1,    5,   19,   20,   21,   21,   21,   22,   21,
-       21,   21,   21,   21,   21,   23,   21,   21,   24,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       25,   26,   27,    1,    1,   28,   29,   30,   31,   32,
+       16,   16,   17,   17,   17,   17,   17,    1,    1,   18,
+       19,   20,    5,   21,   22,   23,   23,   23,   24,   23,
+       23,   23,   23,   23,   23,   25,   23,   23,   26,   23,
+       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
+       27,   28,   29,    1,    1,   30,   31,   32,   33,   34,
 
-       33,   34,   35,   36,   37,   23,   38,   39,   40,   41,
-       42,   43,   21,   44,   45,   46,   47,   48,   49,   50,
-       51,   52,   53,   54,   55,   56,    1,    1,    1,    1,
+       35,   36,   37,   38,   39,   25,   40,   41,   42,   43,
+       44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
+       54,   55,   56,   57,   58,   59,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -628,928 +637,1090 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst YY_CHAR yy_meta[57] =
+static yyconst YY_CHAR yy_meta[60] =
     {   0,
         1,    2,    3,    2,    1,    1,    1,    4,    1,    1,
-        1,    1,    5,    6,    1,    6,    6,    6,    7,    8,
-        8,    8,    8,    8,    1,    9,   10,    6,    8,    8,
+        1,    1,    5,    6,    1,    6,    6,    1,    6,    1,
+        7,    8,    8,    8,    8,    8,    1,    9,   10,    6,
         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
         8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
-        8,    8,   11,    1,   12,    1
+        8,    8,    8,    8,    8,   11,    1,   12,    1
     } ;
 
-static yyconst flex_uint16_t yy_base[1116] =
+static yyconst flex_uint16_t yy_base[1416] =
     {   0,
-        0,    0,    0,    1,    2,    3,    8,   11,   14,   23,
-       16,   17,   78,    0,  134,    0,  190,    0,    4,   25,
-      246,    0,   26,   29,   30,   31,  301,  304,  307,  308,
-     2540, 2539,  311,  312,   32,   33,   36,   42, 2549, 2548,
-       17,   18, 2563, 2913, 2913, 2913, 2913, 2913, 2913, 2556,
-        0, 2913, 2913, 2913,    0, 2913, 2913, 2913, 2913, 2913,
-     2555, 2913, 2531, 2552,    0,   21, 2549,  367, 2913, 2913,
-     2913,  317, 2913,    0,  310,    0, 2503, 2913,  422,  425,
-        0,  428, 2913, 2913, 2528, 2913, 2913,    0, 2913, 2913,
-     2913, 2521, 2913, 2913, 2543,    0, 2913, 2913, 2913, 2913,
+        0,    0,    0,    1,    2,    6,   14,   29,   11,   33,
+       40,   45,   93,    0,  152,    0,  211,    0,  268,  271,
+      319,    0,   16,   25,  376,  379,  381,  384,  387,  398,
+       20,  378, 3307, 3306,  390,  403,   26,   37,   46,   49,
+     3318, 3317,   23,   24, 3332, 3337, 3337, 3337, 3337, 3337,
+     3337, 3325, 3337,  236, 3280,    0, 3337, 3326, 3337,    0,
+     3337, 3325, 3337, 3337, 3337, 3337,  266, 3277, 3337, 3324,
+     3337, 3297, 3294, 3317,    0, 3314, 3308, 3306,   22, 3311,
+      461, 3288,  396, 3337, 3337, 3337, 3337,  519, 3314,    0,
+      287,    0, 3260, 3337,  522,  525,    0,  528, 3337, 3337,
 
-     2913, 2913,    0, 2913, 2913, 2913, 2913, 2913, 2913, 2913,
-        0,    0, 2519, 2913,    0, 2913, 2913, 2913,    0,    0,
-     2913, 2913, 2913,    0,   24, 2539, 2537, 2913, 2913, 2913,
-        0,   24,  431,  434, 2913,  298,  284,  289,  283,   16,
-     2503,  298, 2498,  438, 2509,  443, 2508,  448, 2511,  301,
-      424, 2506, 2489,   32,  456, 2480,    0,    0,  327,    0,
-      459,  462,    0,  480, 2495, 2498, 2913,    0, 2489, 2913,
-        0,    0,    0, 2488,    0, 2520,    0,  488,  492, 2913,
-     2502, 2499, 2493, 2489, 2493, 2476, 2482, 2485, 2487, 2485,
-     2474,  302,  304,  442, 2471, 2484, 2472, 2463,  314, 2474,
+     3337,  504, 3265, 3337,    0, 3337, 3337, 3311, 3278, 3337,
+     3337, 3337,  410, 3262,    0, 3337, 3308,    0, 3337, 3307,
+     3337, 3337, 3337, 3306,    0, 3337, 3337, 3337, 3337, 3337,
+     3337, 3337,    0,    0, 3273, 3337,    0, 3337,  278, 3337,
+     3272, 3263, 3270, 3273, 3268,   36, 3270,    0, 3298,    0,
+     3297, 3337, 3264, 3255, 3262, 3265, 3260,  244, 3262, 3291,
+     3259, 3337, 3337,    0, 3337, 3337, 3277,   45, 3281, 3268,
+     3337, 3337, 3337,    0,   68,  532,  535, 3337,  265,  384,
+        6,  274,  258, 3208,  267,  250,  546, 3215,  552,  390,
+      559, 3218,  391,  564,  393, 3186,   36, 3337,  550,  416,
 
-      463, 2464, 2461, 2466, 2478,  281,  418, 2455, 2471, 2459,
-      308, 2461, 2457, 2468, 2467,  497, 2913, 2471, 2913,    2,
-     2456,  468, 2458, 2448, 2452, 2441,    0, 2448, 2447, 2439,
-     2443, 2450, 2439, 2444, 2429, 2434, 2441, 2440,  484, 2439,
-      489, 2426, 2431, 2436, 2431, 2438, 2432, 2414, 2424, 2416,
-      475, 2416, 2417, 2413,  481, 2428, 2420, 2427, 2418, 2424,
-     2913,  523, 2411, 2406, 2409, 2403, 2411, 2401,    0, 2402,
-     2404, 2404, 2397, 2401, 2395, 2392, 2403, 2386, 2382, 2385,
-      575, 2387, 2395, 2382, 2382, 2389, 2392,  500, 2385, 2377,
-     2407, 2384, 2383, 2366, 2362, 2366, 2381,    0, 2377, 2372,
+      556,  572, 3167, 3203,    0,    0,  592,    0,  582,  605,
+        0,  616, 3166, 3157, 3164, 3153, 3337, 3150, 3134, 3141,
+     3142, 3137,  353, 3139,    0, 3157, 3107, 3337, 3114, 3099,
+     3105, 3108, 2897,  405, 2899,    0, 2927,    0, 2926, 3337,
+        0,    0, 2885,    0,  621,  627, 2881, 3337, 2880, 2880,
+     2878, 2881,  265, 2874, 2875, 3337, 2874, 2874, 2872, 2874,
+      384, 2867, 2875, 3337, 2905,    0,  630,  633, 3337, 2885,
+     2882, 2876, 2872, 2876, 2876, 2857, 2864, 2868, 2869, 2867,
+     2856,  514,  369, 2854,  535, 2851, 2865, 2853, 2853, 2842,
+      413, 2854,  603, 2839, 2835, 2841, 2853,  408, 2852, 2847,
 
-     2366, 2374, 2364,  483, 2376, 2369, 2356, 2368,    0, 2353,
-     2364, 2351, 2364,  530,  534, 2353, 2344,  546, 2353, 2343,
-     2333, 2353, 2349, 2348, 2336, 2346, 2336,  600, 2344, 2344,
-        0,    0,  625,  524,   58,  650,    0,    0, 2331, 2333,
-     2324, 2330, 2322, 2327, 2335, 2321, 2322, 2311, 2913, 2329,
-     2327, 2326, 2323, 2322, 2312, 2323, 2306, 2300, 2305,  510,
-     2314, 2314, 2299, 2300, 2291, 2309,  694, 2306, 2309, 2291,
-      552, 2303, 2301, 2304,  558,  561, 2292, 2296, 2291, 2287,
-     2297, 2286, 2292, 2291, 2273,  719,  551,  336,  744,    0,
-      569, 2285,  569,  427,  471, 2274,  557, 2284, 2275, 2273,
+     2849, 2827, 2836, 2839, 2826,  542,  599,  586, 2823, 2834,
+     2827, 2837, 2821, 2821, 3337, 2820, 2820, 2818, 2821,  595,
+     2814, 2827, 2813, 3337, 2812, 2812, 2810, 2813,  610, 2806,
+     2819, 2804, 2803, 2802, 2814, 2800, 2799, 2797, 2809, 2794,
+      646, 3337, 2813, 3337,  624, 2802,  503, 2795, 2804, 2794,
+     2798, 2786,    0, 2790, 2788, 2779, 2778, 2787, 2794, 2789,
+     2782, 2783, 2767, 2773, 2780, 2779, 2778,  628, 2777,  640,
+     2763, 2769, 2774, 2769, 2776, 2771, 2752, 2763, 2753,  629,
+     2753, 2755,  632, 2750, 2750,  621, 2765, 2757, 2764,  665,
+     2736, 2743, 2753, 2750, 2758, 2740, 2739, 2738, 2750, 3337,
 
-     2269,  550, 2265,  603, 2274, 2266, 2268, 2269, 2270, 2263,
-     2267, 2249, 2270,    0, 2256, 2251, 2253, 2264, 2263, 2242,
-     2249, 2249, 2248, 2253, 2250, 2248, 2243, 2233, 2233, 2248,
-     2237,    0, 2237,  788,  593,  541,  813,    0,  621, 2235,
-     2231, 2223, 2224, 2233,  616, 2220,    0, 2217, 2227, 2205,
-     2212, 2207, 2210, 2219, 2217,  618,  553,  558, 2206,  590,
-     2216, 2207, 2205, 2205,  567, 2201,  659,  641,  654,  857,
-      435,  578,  666,  669, 2211, 2210, 2194, 2191, 2206, 2193,
-        0, 2195, 2190, 2182, 2201, 2186, 2183, 2182,    0, 2173,
-     2211, 2175, 2174, 2176, 2177, 2180, 2174, 2177, 2174, 2166,
+     2736, 2735, 2734, 2746,  681, 2731, 2744, 2739, 2723, 2722,
+     2735, 2734, 2719, 2732, 2722, 2717, 2716, 2711, 2715, 2708,
+     2717, 2706, 2705,    0, 2706, 2709, 2709, 2706, 2711, 2700,
+     2704, 2700, 2711, 2696, 2692, 2688, 2691,  736, 2698, 2706,
+     2690, 2692, 2692, 2699, 2702,  646, 2694, 2686, 2718, 2693,
+     2692, 2674, 2670, 2675, 2691,    0, 2687, 2678, 2671, 2679,
+     2669, 2674, 2678, 2671, 2678,  388, 2671, 2658, 2658, 2670,
+        0, 2655, 2666, 3337, 2651, 2652, 2661, 2664, 2645, 2658,
+     2657, 2641, 2640, 2653, 2652, 2637,  693,  696, 2641, 2635,
+     2634, 2647, 2637, 2627, 2625, 2638, 3337, 2629, 2628,  668,
 
-     2178,  660,  630,  633, 2163,  624, 2169, 2149, 2157, 2156,
-      654, 2152,  701,  710,  713,  882, 2160, 2152, 2161, 2151,
-     2152, 2153, 2154,    0,    0, 2143,  647, 2130,    0,    0,
-      643,  722,  753,  769,  795,    0,  712,  672,  907,    0,
-     2135, 2136, 2138, 2134, 2127, 2131, 2122, 2118, 2124, 2119,
-        0, 2112, 2105, 2093, 2090,    0, 2913, 2106, 2102, 2086,
-     2085, 2072, 2064, 2067, 2052, 2051, 2059,  702,  822,  837,
-      864,  886,    0,  722,  726,  951,    0,  765,  776, 2064,
-     2044,  748, 2037, 2039, 2029, 2030, 2022,    0, 2029, 2026,
-      916,  929,  806,  737,  766, 2020,  709, 2020, 2008, 2006,
+     2625,  703, 2634, 2624, 2609, 2627, 2629, 2625, 2624, 2611,
+     2622, 2611, 2611,  763, 2619, 2605, 2618,    0,    0,  790,
+      696,  670,  817,    0,    0, 2604, 2614,  666, 2597, 2604,
+     2595, 2601, 2609, 2594, 2595, 2588, 3337, 2608, 2602, 2600,
+     2597, 2596, 2586, 2597, 2584, 2577, 2579,  680,    0, 2577,
+     2579, 2572, 2585, 2585, 2572, 2584, 2561, 2580,  864, 2577,
+     2576, 2579,  718, 2559, 2563, 2557, 2556, 2569, 2559, 2553,
+     2552, 2565,  721, 2564, 2559, 2546, 2556, 2544, 2540, 2539,
+     2543, 2551, 2550,  725,  739, 2538, 2542, 2537, 2530, 2532,
+     2542, 2531, 2541, 2541, 2536, 2521,  891,  718,  686,  918,
 
-     2005,  655, 1998,  958, 2008, 1997,    0, 2003, 1993,    0,
-     1983,    0,    0, 2021, 1977, 1994, 2011,    0, 1977,    0,
-     1984, 1979, 1977, 1971, 1965, 1978,    0, 1967, 1909, 1905,
-      971,  975,  832,  769,  778, 1900,  779, 1909, 1887, 1895,
-     1891,  787, 1886,  983,  910, 2913, 1000, 2913, 1882, 1891,
-      889, 1054, 1886, 1889, 1880, 1893, 1870, 1879, 1869, 1003,
-     1032,  791, 1038, 1045, 1049,  311, 2913, 1872, 1863,    0,
-     1873,    0, 2913,    0, 1870, 2913,    0,    0, 1864,    0,
-     1898, 1871, 1859,    0, 1857, 1849, 1058, 1080,  820, 1092,
-     1105, 1109,  514, 2913, 1858,    0,    0,  900,  835, 1163,
+        0,  752, 2534, 2532,  729,  714,  741, 2521,  684, 2531,
+     2522, 2520, 2520,  610, 2516,  758, 2525, 2523, 2516, 2510,
+     2512, 2513, 2514, 2507, 2511, 2492, 2514,    0, 2496, 2490,
+     2493, 2504, 2502, 2480, 2487, 2487, 2481, 2486, 2487, 2486,
+     2481, 2468, 2482, 2485, 2466, 2466, 2471, 2474,    0, 2467,
+      965,  753,  766,  992,    0,  784,  795, 2469,  811,  808,
+     2466, 2469, 2457, 2467, 2455, 2452, 2452, 2447, 2457, 2455,
+     2440, 2446, 2455,  820, 2442,    0, 2438, 2442, 2465, 2419,
+     2422, 2416, 2419, 2428, 2427, 2424,  810,  768,  773, 2412,
+      767, 2421, 2408, 2406, 2406,  641, 2402,  840,  827,  834,
 
-        0, 1857, 1837,    0, 1838, 1843, 1830, 1830, 1113, 1207,
-     1837, 1833,  838,  402, 1835,    0, 1835, 1835,    0, 2913,
-     1820, 1821, 1806, 1807, 1159, 1249, 1814, 1808,  841,  795,
-     1805,  919,  838,  847, 1799,  890, 1809, 1778, 1786, 1781,
-      856, 1776, 1134, 1777,    0, 1771, 1775, 1758, 1291, 1316,
-     1188,  993,  889, 1341,    0, 1761, 1747,  904,  858, 1751,
-     1742,    0, 1740, 1769, 1733, 1385, 1410, 1214, 1004,  911,
-     1435,    0, 1736, 1721,  911,  926, 1126,  929, 1233, 1241,
-     1297,  599, 2913, 1721,    0,    0, 1479,    0, 1237, 1012,
-      973, 1504,    0, 1015,  976,  983, 1719,  985, 1729, 1717,
+     1039, 2394,  759,  800,  843,  868, 2411,    0, 2407, 2388,
+     2383, 2380, 2396, 2383,    0, 2384, 2379, 2365, 2385, 2373,
+     2370, 2368,    0, 2358, 2388, 2349, 2343, 2345, 2349, 2353,
+     2335,    0, 2339, 2335, 2338, 2317, 2325, 2325,  858,  841,
+      844, 2309,  806, 2319, 2299, 2304, 2296,  851, 2288,  884,
+      908,  914, 1066,  928,  911, 2289,  921,    0, 2281, 2275,
+     2274, 2278, 2266, 2270, 2261, 2265, 2266, 2266, 2267,    0,
+     3337,    0, 2247,  856, 2234,    0,    0,  565,  847,  894,
+      942,  971,  987,    0,  925,  885, 1093,    0, 2236, 2238,
+     2234, 2226, 2221, 2228, 2215, 2220, 2207, 2147, 2158, 2153,
 
-     1708, 1708,  918, 1703, 1167, 1697, 1694, 1000, 1548, 1706,
-     1690, 1722, 2913, 1584,    0, 1283, 1048, 1057, 1609,    0,
-     1124, 1074, 1086, 1684,  993, 1693, 1674, 1673, 1662,  949,
-     1654, 1180, 1633, 1633, 1022, 1653, 1183, 2913, 1627, 1614,
-     1069, 1007, 1223,    0, 1127, 1102, 1105, 1591, 1093, 1595,
-     1557, 1554, 1553, 1068, 1546, 1210, 1110, 1307, 1310, 1358,
-     1530, 1689, 1714, 1351, 1243, 1134, 1739,    0, 1528,    0,
-     2913,    0, 1252, 1138, 1156, 1518, 1128, 1527, 1490, 1474,
-     1452, 1184, 1436, 1268, 1159, 1363, 1405, 1416, 1429, 1783,
-     1808, 1430, 1353, 1181, 1833,    0, 1428, 1410, 1050, 1197,
+        0, 2146, 2146, 2134, 2132,    0, 3337, 2149, 2140, 2128,
+     2139,   34,  236,  268,  336,  431,  475,  492,  523,  911,
+     1002, 1015, 1019, 1046,    0,  939,  942, 1140,    0, 1071,
+        0, 1082,  559, 1100,  567,  577,  614,  615,  643,  996,
+      665,  674,  692,  730,  725,    0,    0, 3337,  762,  787,
+     1103, 1109,  986,  945,  955,  796,  943,  821,  835,  848,
+      857,  916,  864, 1118,  892,  912,  906,  951,  949,  941,
+      949,    0,  944,    0,    0, 1000,  959,  983, 1004,    0,
+      973,    0,  992,  995,  997, 1001, 1007,  996,  996,    0,
+      997, 1024, 1023, 1022, 1162, 1166, 1084, 1049, 1055, 1031,
 
-     1373, 2913, 1232, 1413, 1427, 1457, 1877,    0, 1444, 1425,
-     1239, 1902,    0, 1447, 1266, 1274, 1406, 1284, 1391, 1381,
-     1369, 1364, 1290, 1353, 1498, 1947, 1281, 1486, 1507, 1514,
-     2002,    0, 1526, 1497, 1322, 2027,    0, 1507, 1332, 1347,
-     1342, 1285, 1327, 1301, 1305, 1301, 1359, 1286, 1554, 1275,
-     1259, 1290, 2071, 1568,    0, 1510, 1363, 1366, 1259, 1404,
-     1247, 1234, 1221, 1206, 1412, 1189, 1529, 1376, 1574, 1588,
-     1634,    0,    0, 1619,    0, 1587, 1438, 1460, 1186, 1508,
-     1173, 1151, 1147, 1117, 1440, 1091, 1603, 1487, 1658, 1679,
-     1683, 1086, 2107, 2132, 1692, 1601, 1526, 2157,    0, 1705,
+     1081, 1043, 1026, 1046, 1048, 1082, 1047, 1187, 1064, 1190,
+     3337, 3337, 1193, 3337, 1067, 1069, 1069, 1084, 1086, 1196,
+     1251, 1087, 1092, 1086, 1103, 1082, 1108, 1096, 1097, 1199,
+     1216, 1133, 1231, 1235, 1267, 1139, 3337,    0, 1107, 1099,
+     1145,    0,    0, 1120,    0, 3337,    0, 1124, 3337,    0,
+        0, 1122,    0, 1130, 1136, 1172, 1145, 1132,    0, 1144,
+     1156, 1279, 1288, 1193, 1292, 1296, 1300, 1173, 3337, 3337,
+     1174, 1174, 1167, 1174,    0,    0, 1207, 1209, 1357,    0,
+     1192, 1174,    0, 1182, 1190, 1180, 1190, 1194, 1353, 1404,
+     1204, 1205, 1217, 1235, 1209,    0, 1221, 1222, 1225,    0,
 
-     1529, 1629, 1708, 1749, 1756, 1551, 1762, 1771, 1789, 2201,
-        0, 1803, 1660, 1563, 2226,    0, 1798, 1566, 1603, 1036,
-     1604, 1044,  989,  976,  957, 1599,  927, 1829, 2270, 1883,
-     2309, 2006,    0, 1823, 1631, 1634,  900, 1632,  868,  831,
-      835,  830, 1642,  814, 1852, 1683, 1857, 2022, 2052, 2348,
-     2036, 2387, 2097, 1705, 2047, 2076, 2110, 2426, 2480, 2123,
-     2101, 2113, 2126, 2534, 1897, 2913, 2589, 2601, 2613, 2625,
-     2637, 2649, 2661, 2673, 2685, 2697, 2709, 2721, 2733, 2745,
-     2757, 2769, 2781, 2791, 2801, 2810, 2818, 2827, 2829,  819,
-      805, 2837, 2847, 2859, 2871, 2878, 2880, 2888,  803,  780,
+        0, 1224, 3337, 1228, 1234, 1228, 1236, 1367, 1448, 1247,
+     1246, 1258, 1266, 1246, 1268, 1261,    0, 1298, 1294, 1301,
+     1274, 1289, 1286, 1270, 1283, 1285, 1295, 1287, 1380, 1292,
+        0, 1292, 1308, 1298, 1492, 1519, 1384, 1332, 1335, 1546,
+        0, 1310, 1312, 1325, 1328, 1324, 3337, 1322,    0, 1355,
+     1325, 1342, 1330, 1593, 1620, 1432, 1364, 1377, 1647,    0,
+     1342, 1347, 1361, 1365, 1439, 1360, 1375, 1407, 1468, 1482,
+     1499, 1389, 3337, 1365,    0,    0, 1694,    0, 1513, 1438,
+     1423, 1721,    0, 1441, 1428, 1431, 1372, 1426, 1393, 1389,
+     1390, 1395, 1433, 1416, 1476, 1417, 1421, 1444, 1768, 1440,
 
-      762,  756,  750,  724,  722,  683,  676,  671,  623,  514,
-      459,   23, 2900,   39,  323
+     1426, 3337, 1470,    0, 1806,    0, 1526, 1472, 1482, 1833,
+        0, 1536, 1495, 1526, 1446, 1472, 1466, 1466, 1482, 1490,
+     1521, 1492, 1562, 1489, 1497, 1521, 1880, 1570, 3337, 1511,
+        0, 1517, 1518, 1543, 1537, 1596,    0, 1586, 1567, 1573,
+     1522, 1573, 1541, 1535, 1549, 1551, 1578, 1567, 1614, 1597,
+     1627, 1636, 1663, 1571, 1918, 1945, 1642, 1626, 1609, 1972,
+        0, 1572,    0, 3337,    0, 1640, 1636, 1642, 1588, 1628,
+     1613, 1607, 1625, 1629, 1639, 1628, 1672, 1674, 1710, 1715,
+     1725, 1629, 2019, 2046, 1731, 1715, 1677, 2073,    0,    0,
+     1640, 1635, 1665, 1668, 1737, 1696, 1704, 1740, 1743, 1784,
+
+     2120,    0, 1788, 1733, 1742, 2147,    0, 1762, 1745, 1758,
+     1656, 1760, 1669, 1684, 1708, 1723, 1748, 1723, 1796, 2195,
+     1787, 1809, 1812, 1837, 2253,    0, 1856, 1827, 1789, 2280,
+        0, 1836, 1808, 1812, 1749, 1814, 1767, 1764, 1776, 1789,
+     1812, 1787, 1860, 1805, 1809, 1837, 2327, 1866, 1886,    0,
+     1888, 1854, 1857, 1832, 1858, 1852, 1845, 1850, 1857, 1874,
+     1861, 1907, 1896, 1913, 1922, 1939,    0,    0, 1935,    0,
+     1935, 1928, 1937, 1882, 1898, 1895, 1903, 1915, 1921, 1933,
+     1922, 1966, 1967, 1988, 1996, 2025, 1924, 2365, 2392, 1999,
+     1978, 1992, 2419,    0, 2049, 1996, 2067, 2082, 2096, 2078,
+
+     1999, 2099, 2107, 2125, 2466,    0, 2258, 2077, 2002, 2493,
+        0, 2126, 2009, 2023, 1934, 2023, 1952, 1943, 1967, 1990,
+     2010, 1992, 2269, 2540, 2276, 2581, 2290,    0, 2129, 2056,
+     2062, 1997, 2054, 2011, 2002, 2023, 2026, 2081, 2050, 2287,
+     2100, 2304, 2333, 2347, 2622, 2355, 2663, 2368, 2136, 2361,
+     2381, 2398, 2704, 2761, 2429, 2818, 2442, 2471, 2875, 2272,
+     3337, 2933, 2945, 2957, 2969, 2981, 2993, 3005, 3017, 3029,
+     3041, 3053, 3065, 3077, 3089, 3101, 3113, 3125, 3137, 3147,
+     3157, 3166, 3174, 3183, 3185, 2096, 2105, 3193, 3203, 3213,
+     3225, 3237, 3244, 3246, 3254, 2111, 2123, 2125, 2139, 2147,
+
+     2148, 2150, 3266, 2151, 2152, 2153, 2158, 2161, 2162, 2163,
+     2164, 2165, 3278, 2166, 2167
     } ;
 
-static yyconst flex_int16_t yy_def[1116] =
+static yyconst flex_int16_t yy_def[1416] =
     {   0,
-     1067, 1067, 1068, 1068, 1069, 1069, 1070, 1070, 1071, 1071,
-     1072, 1072, 1066,   13, 1066,   15, 1066,   17, 1073, 1073,
-     1066,   21, 1074, 1074, 1075, 1075, 1076, 1076, 1077, 1077,
-     1078, 1078, 1079, 1079, 1080, 1080, 1081, 1081, 1067, 1067,
-     1082, 1082, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1083, 1066, 1066, 1066, 1084, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1085, 1066, 1086, 1066, 1066, 1066,
-     1066, 1066, 1066, 1087, 1088, 1089, 1066, 1066, 1066, 1066,
-     1090, 1066, 1066, 1066, 1066, 1066, 1066, 1091, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1092, 1066, 1066, 1066, 1066,
+     1362, 1362, 1363, 1363, 1364, 1364, 1365, 1365, 1366, 1366,
+     1367, 1367, 1361,   13, 1361,   15, 1361,   17, 1368, 1368,
+     1361,   21, 1369, 1369, 1370, 1370, 1371, 1371, 1372, 1372,
+     1373, 1373, 1374, 1374, 1375, 1375, 1376, 1376, 1377, 1377,
+     1362, 1362, 1378, 1378, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1379, 1361, 1361, 1361, 1380,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1381, 1361, 1361, 1361, 1361, 1382,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1383,
+     1384, 1385, 1361, 1361, 1361, 1361, 1386, 1361, 1361, 1361,
 
-     1066, 1066, 1093, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1094, 1094, 1066, 1066, 1095, 1066, 1066, 1066, 1083, 1084,
-     1066, 1066, 1066, 1085, 1066, 1096, 1086, 1066, 1066, 1066,
-     1097, 1097, 1097, 1097, 1066, 1066, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1066, 1066, 1087, 1087, 1088, 1089,
-     1066, 1066, 1090, 1066, 1066, 1066, 1066, 1091, 1066, 1066,
-     1092, 1093, 1094, 1066, 1095, 1096, 1097, 1097, 1066, 1066,
-     1066, 1098, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
+     1361, 1361, 1361, 1361, 1387, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1388, 1361, 1361, 1389, 1361, 1361,
+     1361, 1361, 1361, 1361, 1390, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1391, 1391, 1361, 1361, 1392, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1379, 1361, 1380,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1381, 1361, 1361, 1361, 1361, 1393, 1382,
+     1361, 1361, 1361, 1394, 1394, 1394, 1394, 1361, 1361, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1361, 1361, 1361,
 
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1066, 1066, 1066, 1066, 1066, 1066, 1098, 1066, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1066, 1066,
-     1066, 1066, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
+     1361, 1361, 1361, 1361, 1383, 1383, 1384, 1385, 1361, 1361,
+     1386, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1387, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1388, 1361, 1389, 1361, 1361,
+     1390, 1391, 1361, 1392, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1393, 1394, 1394, 1361, 1361, 1361,
+     1395, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
 
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1066, 1066, 1066, 1066, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1066, 1066, 1066, 1066, 1099, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1066, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1066, 1066,
-     1066, 1066, 1097, 1097, 1066, 1066, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1066, 1066, 1066, 1066, 1100,
-     1097, 1097,  336,  393, 1066, 1066, 1066, 1066, 1066, 1066,
+     1394, 1394, 1394, 1394, 1394, 1394, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1395, 1361, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
 
-     1066, 1066, 1066, 1099, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1066, 1066, 1066, 1066, 1101, 1097, 1066,
-     1066, 1066, 1097, 1097, 1066, 1066, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097,  389,  456, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1100, 1066, 1066, 1066,
-     1097,  393, 1066, 1066, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1394, 1394,
 
-     1097,  437,  502, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1101, 1066, 1066, 1066, 1066, 1066, 1066, 1097,
-     1097, 1066, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-      456, 1066, 1066, 1100, 1100,  470, 1066, 1066, 1066, 1102,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1066, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097,  502, 1066, 1066,
-     1101, 1101,  516, 1066, 1066, 1066, 1103, 1066, 1066, 1066,
-     1097, 1097, 1066, 1097, 1097, 1097, 1097, 1097, 1066, 1066,
-     1100, 1100,  539,  593, 1066, 1066, 1066, 1066, 1066, 1066,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1361,
+     1361, 1361, 1361, 1396, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1361, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1394,
+     1394, 1394, 1394, 1361, 1361, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1361, 1361, 1361, 1361,
 
-     1066, 1066, 1066, 1102, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1097, 1097, 1097, 1097, 1066, 1066,
-     1101, 1101,  576,  633, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1103, 1066, 1066, 1066, 1066, 1066, 1097,
-     1066, 1066, 1066, 1097, 1097, 1097, 1097, 1066, 1066, 1100,
-     1100,  593, 1066, 1066, 1102,  665, 1066, 1097, 1097, 1097,
-     1097, 1097, 1066, 1097, 1097, 1066, 1097, 1097, 1097, 1097,
-     1097, 1097, 1097, 1097, 1066, 1066, 1101, 1101,  633, 1066,
-     1066, 1103,  692, 1066, 1066, 1097,  652, 1066, 1066, 1066,
+     1397, 1394, 1394, 1394,  523,  605, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1396, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1361, 1361, 1361, 1361, 1398, 1394, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1394, 1394,
+     1394, 1394, 1394, 1361, 1361, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394,  600,  687, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1397, 1361, 1361,
 
-     1104, 1066, 1097, 1097, 1097, 1097, 1066, 1066, 1100, 1100,
-     1066, 1066,  665,  665, 1097, 1097, 1097, 1097, 1097, 1066,
-     1097, 1097, 1066, 1066, 1101, 1101, 1066, 1066,  692,  692,
-     1066,  700,  732, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1104, 1066, 1097, 1097, 1097, 1066, 1066,  710,
-      749, 1066, 1066, 1066, 1105, 1066, 1066,  665,  665, 1097,
-     1097, 1097, 1097, 1097, 1066, 1066,  726,  766, 1066, 1066,
-     1066, 1106, 1066, 1066,  692,  692, 1066,  732, 1066, 1066,
-     1104,  781, 1066, 1066, 1097, 1097, 1066,  749,  787, 1066,
-     1066, 1066, 1107,  754,  794, 1066, 1066, 1066, 1066, 1066,
+     1361, 1394, 1394,  605, 1361, 1361, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,  654,  739,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1398,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1399, 1361, 1361,
+     1361, 1361, 1394, 1394, 1394, 1394, 1394, 1361, 1394, 1394,
+     1361, 1394, 1394, 1394, 1394, 1394, 1394, 1394,  687, 1361,
+     1361, 1397, 1397,  701, 1361, 1361, 1361, 1400, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
 
-     1066, 1066, 1066, 1066, 1105, 1066, 1066,  665,  665, 1097,
-     1097, 1097, 1066, 1066,  766,  814, 1066, 1066, 1066, 1108,
-      771,  821, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1106, 1066, 1066,  692,  692, 1066, 1066, 1066, 1066,
-      781,  781, 1066,  787,  792,  845, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1107,  794, 1066, 1066, 1105,
-     1066, 1066,  809,  862, 1066, 1066, 1066, 1109, 1097, 1097,
-     1066,  814,  819,  873, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1108,  821, 1066, 1066, 1106, 1066, 1066,
-      836,  890, 1066, 1066, 1066, 1110, 1066, 1066,  781,  781,
+     1394, 1394, 1394, 1394, 1394, 1394, 1361, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,  739,
+     1361, 1361, 1398, 1398,  753, 1361, 1361, 1361, 1401, 1361,
+     1402, 1361, 1399, 1361, 1361, 1394, 1394, 1394, 1394, 1394,
+     1361, 1394, 1394, 1394, 1394, 1394, 1403, 1361, 1361, 1361,
+     1397, 1397,  787,  853, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1400, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1361, 1361, 1398, 1398,  828,  897, 1361, 1361,
 
-     1066, 1066,  845, 1066, 1066, 1105, 1066,  862,  907, 1066,
-     1066, 1066, 1111,  867,  914, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1109, 1066,  873, 1066, 1066, 1106,
-     1066,  890,  931, 1066, 1066, 1066, 1112,  895,  938, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1110, 1066,
-     1066,  781,  781, 1105,  907,  912,  956, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1111,  914, 1066, 1066,
-     1109, 1113,  926, 1106,  931,  936,  976, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1112,  938, 1066, 1066,
-     1110, 1066, 1066,  953,  993, 1066, 1066, 1066, 1114, 1105,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1401, 1402, 1361,
+     1361, 1361, 1361, 1361, 1361, 1394, 1394, 1394, 1394, 1361,
+     1361, 1361, 1394, 1394, 1394, 1394, 1403, 1361, 1361, 1397,
+     1397,  853, 1361, 1361, 1400,  935, 1361, 1394, 1394, 1394,
+     1361, 1394, 1394, 1394, 1394, 1361, 1394, 1394, 1361, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1361,
+     1361, 1398, 1398,  897, 1361, 1361, 1401,  967, 1361, 1361,
+     1361, 1394, 1394, 1394, 1394,  921, 1361, 1361, 1361, 1404,
+     1361, 1394, 1394, 1394, 1394, 1361, 1361, 1361, 1397, 1397,
+     1361, 1361,  935,  935, 1394, 1394, 1361, 1394, 1394, 1394,
 
-      956, 1066, 1066, 1109, 1106,  976, 1066, 1066, 1110, 1066,
-      993, 1010, 1066, 1066, 1066, 1115,  998, 1017, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1114, 1105, 1109,
-     1106, 1110, 1010, 1015, 1034, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1115, 1017, 1066, 1066, 1114, 1066,
-     1109, 1066, 1110, 1034, 1066, 1066, 1114, 1109, 1110, 1114,
-      907,  931, 1114, 1114, 1012,    0, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
+     1394, 1394, 1361, 1394, 1394, 1361, 1361, 1398, 1398, 1361,
+     1361,  967,  967, 1361, 1394, 1394, 1394,  979, 1018, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1404, 1361,
+     1394, 1394, 1394, 1361, 1361,  990, 1035, 1361, 1361, 1361,
+     1405, 1361, 1361,  935,  935, 1394, 1361, 1394, 1394, 1394,
+     1394, 1394, 1361, 1361, 1009, 1054, 1361, 1361, 1361, 1406,
+     1361, 1361,  967,  967, 1361, 1394, 1394, 1018, 1361, 1361,
+     1404, 1071, 1361, 1361, 1394, 1394, 1361, 1035, 1077, 1361,
+     1361, 1361, 1407, 1040, 1084, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1405, 1361, 1361,  935,  935, 1394,
 
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066
+     1394, 1361, 1394, 1394, 1361, 1054, 1105, 1361, 1361, 1361,
+     1408, 1059, 1112, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1406, 1361, 1361,  967,  967, 1361, 1361, 1394,
+     1394, 1361, 1361, 1071, 1071, 1361, 1077, 1082, 1138, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1407, 1084,
+     1361, 1361, 1405, 1361, 1361, 1099, 1155, 1361, 1361, 1361,
+     1409, 1394, 1394, 1361, 1105, 1110, 1166, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1408, 1112, 1361, 1361,
+     1406, 1361, 1361, 1127, 1183, 1361, 1361, 1361, 1410, 1394,
+     1361, 1361, 1071, 1071, 1361, 1361, 1138, 1361, 1361, 1405,
+
+     1361, 1155, 1201, 1361, 1361, 1361, 1411, 1160, 1208, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1409, 1361,
+     1166, 1361, 1361, 1406, 1361, 1183, 1225, 1361, 1361, 1361,
+     1412, 1188, 1232, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1410, 1361, 1361, 1071, 1071, 1361, 1405, 1201,
+     1206, 1251, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1411, 1208, 1361, 1361, 1409, 1413, 1220, 1406, 1225,
+     1230, 1271, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1412, 1232, 1361, 1361, 1410, 1361, 1361, 1247, 1288,
+     1361, 1361, 1361, 1414, 1405, 1251, 1361, 1361, 1409, 1406,
+
+     1271, 1361, 1361, 1410, 1361, 1288, 1305, 1361, 1361, 1361,
+     1415, 1293, 1312, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1414, 1405, 1409, 1406, 1410, 1305, 1310, 1329,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1415,
+     1312, 1361, 1361, 1414, 1361, 1409, 1361, 1410, 1329, 1361,
+     1361, 1414, 1409, 1410, 1414, 1361, 1225, 1414, 1414, 1307,
+        0, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361
     } ;
 
-static yyconst flex_uint16_t yy_nxt[2970] =
+static yyconst flex_uint16_t yy_nxt[3397] =
     {   0,
-     1066, 1066,   46,   46,   49,   49,   84,   50,   50,   52,
-       53,   52,   52,   53,   52,   56,   57,   56,   59,   59,
-       52,   60,   60,   52,   56,   57,   56,   84,   91,   85,
-      987,   91,   94,   94,   44,   44,  125,  125,  112,  125,
-      125,   61,   61,  178,  112,  178, 1028,  263,  188,  264,
-       85,   92,   47,   47,   92,   95,   95,  189,  110,  110,
-       52,  113,   54,   52,  210,   54,   56,  113,   56,  116,
-      116,  117,  117,  393,  393,   56,  211,   56,   62,   62,
-       62,   62,   63,   64,   65,   62,   62,   62,   62,   62,
-       62,   62,   62,   66,   66,   62,   62,   67,   67,   67,
+     1361, 1361,   48,   48,   51, 1361, 1361,   52,   51, 1361,
+     1361,   52,   61,   62,   61,   57,   58,   57,  108,   53,
+       53,   53,   46,   53,   53,   53,   57,  108,   46,   54,
+       57,   58,   57,   54,   61,   62,   61,  168,  168,   46,
+      273,   57,   64,  109,  274,   65,  122,   64,  134,   55,
+       65,  134,  109,   55,  132,   49,   49,   66,   66,   66,
+      168,  168,   66,   66,   66,  132,   61,   67,   61,   57,
+      305,   59,   67,  135,  252,  123,  135,  124,  138,  138,
+      139,  139,  885,  306,   57,  253,   59,   68,   61,  267,
+       61,  267,   68,   69,   70,   71,   72,   73,   74,   75,
 
-       67,   67,   62,   68,   62,   62,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       69,   69,   69,   70,   71,   72,   73,   72,   71,   71,
-       71,   74,   71,   71,   71,   71,   71,   74,   71,   75,
-       75,   74,   75,   75,   75,   75,   75,   75,   71,   76,
-       71,   74,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   77,   71,   71,   71,
-       78,   79,   80,   79,   78,   78,   78,   78,   78,   78,
+       76,   69,   69,   69,   69,   77,   78,   69,   79,   79,
+       69,   69,   69,   69,   80,   80,   80,   80,   80,   69,
+       81,   69,   82,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,   80,   80,   80,   83,   84,
+       85,   86,   87,   88,   89,   88,   87,   87,   87,   90,
+       87,   87,   87,   87,   87,   90,   87,   91,   91,   87,
+       90,   87,   91,   91,   91,   91,   91,   91,   87,   92,
+       87,   90,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
 
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   81,
-       81,   81,   81,   81,   78,   78,   78,   78,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   82,   78,   78,   78,   86,   86,   87,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   88,   88,   88,   88,   88,
-       86,   86,   86,   86,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   86,   86,
+       91,   91,   91,   91,   91,   91,   91,   93,   87,   87,
+       87,   94,   95,   96,   95,   94,   94,   94,   94,   94,
+       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+       94,   94,   97,   97,   97,   97,   97,   94,   94,   94,
+       94,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       97,   97,   97,   97,   97,   97,   98,   94,   94,   94,
+      100,  152,  141,  100,  142,  270,  143,  144,  145,  245,
+      246,  245,  260,  146,  886,  101,  101,  101,  101,  101,
+      101,  271,  278,  261,  206,  102,  333,  283,  102,  281,
 
-       89,   86,   97,   98,   97,   97,   98,   97,  181,   44,
-       44,  250,  178,   44,   44,  183,  178,  158,  155,  186,
-      155,  184,  182,  158,  187,  185,  251,  158,  191,  200,
-     1045,  100,  100,  201,  158,  106,  106,  158,  229,  192,
-      158,  231,  202,  230,  158,  257,  232,  604,  240,  714,
-      258,  456,  456,   97,  158,   97,   97,  241,   97,  101,
-      101,  102,  102,  107,  107,  108,  108,  128,  128,  156,
-      129,  128,  128,  128,  128,  130,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  131,  132,  131,  131,  133,
-      134,  135,  136,  128,  128,  137,  138,  139,  140,  141,
+      206,  279,  153,  284,  154,  206,  155,  156,  157,  334,
+      282,  275,  276,  158,  887,  103,  206,  277,  103,  104,
+      104,   46,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      105,  105,  105,  105,  105,  104,  104,  104,  104,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  104,  104,  106,  104,  111,  888,
+       46,  111,  116,  117,  116,  116,  117,  116,  119,  120,
+      119,  319,   46,  112,  112,  112,  112,  112,  112,  119,
 
-      142,  131,  143,  144,  145,  146,  131,  147,  148,  149,
-      150,  151,  152,  153,  154,  131,  131,  131,  131,  128,
-      128,  128,  128,  161,  161,  161,  161,  161,  161,  164,
-      164,  164,  179,  180,  179,  179,  180,  179,  604,  179,
-      180,  179, 1066, 1066,  179,  180,  179,  252,  759,  179,
-      180,  179,  203,  204,  205,  178,  206,  155,  253,  155,
-      161,  161,  161,  164,  164,  164,  967,  165,  178,  541,
-      207,  196,  233,  234,  162,  166,  542,  162,  194,  197,
-      178,  164,  164,  164,  235,  180,  472,  472,  180,  216,
-      217,  216,  180,  179,  180,  179,  243,  180,  216,  217,
+      120,  119,  320,  113,  122,   46,  113,  199,  358,  199,
+      200,  201,  201,  359,  267,  337,  128,  272,  267,  228,
+      289,  292,  553,  114,  290,  293,  114,  302,  338,  128,
+      303,  307,  307,  123,  294,  124,  116,  554,  116,  116,
+      379,  116,  119,  328,  119,  129,  229,  130,  230,  369,
+      231,  232,  233,  119,  329,  119,  380,  234,  129,  370,
+      130,  171,  171,  889,  172,  171,  171,  171,  171,  173,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
+      171,  174,  175,  174,  174,  176,  177,  178,  179,  171,
+      171,  180,  181,  182,  183,  184,  185,  174,  186,  187,
 
-      216,  165,  180,  244,  266,  301,  267,  245,  156,  166,
-      307,  162,  268,  302,  284,  361,  285,  289,  290,  165,
-      303,  949,  286,  308,  314,  314,  314,  166,  287,  362,
-      344,  314,  314,  314,  291,  371,  371,  371,  335,  336,
-      336,  425,  217,  345,  346,  426,  180,  375,  375,  375,
-      644,  217,  730,  371,  371,  371,  502,  502,  427,  375,
-      375,  375,  445,  445,  445,  388,  389,  389, 1066, 1066,
-      468,  468,  468,  531,  531,  315,  333,  333,  333,  469,
-      473,  372,  315, 1066,  393,  393,  334,  473,  334,  335,
-      336,  336,  446,  472,  472,  473,  473,  532,  376,  372,
+      188,  189,  174,  190,  191,  192,  174,  193,  194,  195,
+      196,  197,  174,  174,  174,  174,  171,  171,  171,  171,
+      202,  890,  202,  209,  209,  209,  209,  209,  209,  212,
+      212,  212,  217,  268,  269,  268,  268,  269,  268,  891,
+      218,  420,  219,  421,  220,  221,  222,  268,  269,  268,
+      422,  223,  355,  268,  269,  268,  356,  357,  267,  892,
+      268,  269,  268,  213,  200,  201,  201,  361,  362,  214,
+      308,  201,  201,  202,  203,  202,  215,  210,  216,  363,
+      210,  388,  287,  209,  209,  209,  389,  912,  285,  269,
+      288,  847,  269,  267,  295,  296,  297,  915,  298,  206,
 
-      337,  386,  386,  386,  474,  474,  474,  436,  437,  437,
-      376,  387,  532,  387,  388,  389,  389,  445,  445,  445,
-      532,  470,  514,  514,  514,  390,  333,  333,  333,  532,
-      925,  515, 1066,  456,  456,  743,  334,  842,  334,  335,
-      336,  336,  468,  468,  468, 1066, 1066,  446,  568,  568,
-      337,  394,  394,  394,  569,  468,  468,  468,  531,  531,
-      533,  533,  533,  569,  395,  336,  336,  474,  474,  474,
-      474,  474,  474,  516, 1066,  502,  502,  586,  884,  396,
-      397,  398,  399,  856,  569,  663,  400,  593,  593,  401,
-      832,  587,  402,  470,  403,  434,  434,  434,  534,  569,
+      309,  390,  390,  269,  299,  206,  212,  212,  212,  269,
+      206,  267,  300,  301,  307,  307,  269,  212,  212,  212,
+      848,  206,  245,  246,  245,  916,  397,  203,  245,  246,
+      245,  341,  342,  341,  268,  269,  268,  210,  372,  398,
+      213,  402,  705,  309,  917,  373,  214,  341,  342,  341,
+      374,  213,  469,  215,  403,  216,  415,  214,  705,  416,
+      442,  459,  443,  918,  215,  470,  216,  464,  444,  460,
+      447,  448,  417,  780,  418,  445,  465,  461,  532,  466,
+      390,  390,  487,  487,  487,  605,  605,  342,  449,  780,
+      269,  919,  533,  534,  487,  487,  487,  573,  573,  573,
 
-      663,  535,  570,  570,  570,  435,  470,  435,  436,  437,
-      437,  514,  514,  514,  514,  514,  514,  568,  568,  438,
-      386,  386,  386,  533,  533,  533,  538,  539,  539,  805,
-      387,  743,  387,  388,  389,  389,  575,  576,  576,  663,
-      571,  633,  633,  572,  390,  457,  457,  457,  663,  651,
-      651,  651, 1066, 1066,  533,  533,  533,  644,  458,  389,
-      389,  589,  516,  604,  590,  516,  645,  645,  645,  513,
-      533,  533,  533,  459,  460,  461,  462,  647,  647,  647,
-      463,  662,  662,  464, 1066, 1066,  465,  467,  466,  434,
-      434,  434,  589,  689,  689,  590,  533,  533,  533,  435,
+      581,  687,  687,  342,  584,  584,  584,  619,  582,  309,
+      522,  523,  523,  639,  922,  620,  705,  640,  923,  659,
+      659,  659,  573,  573,  573,  705,  584,  584,  584, 1361,
+     1361,  641,  599,  600,  600,  924,  488,  520,  520,  520,
+      674,  674,  674, 1361,  605,  605,  574,  521,  488,  521,
+      522,  523,  523,  699,  699,  699,  704,  704,  585,  706,
+      706,  706,  700,  524,  597,  597,  597,  653,  654,  654,
+      925,  574,  675,  926,  598,  660,  598,  599,  600,  600,
+      585,  739,  739, 1361, 1361,  751,  751,  751,  779,  779,
+      601,  520,  520,  520,  752,  790,  754,  754,  754,  780,
 
-      652,  435,  436,  437,  437,  591,  662,  662,  534,  690,
-      404,  535,  168,  438,  503,  503,  503,  690,  690,  646,
-     1066,  593,  593,  570,  570,  570,  163,  504,  437,  437,
-      648,  644,  690,  592,  534,  689,  689,  535,  570,  570,
-      570,  776,  505,  506,  507,  508, 1066,  633,  633,  509,
-      732,  732,  510, 1066, 1066,  511, 1055,  512,  536,  536,
-      536,  629,  778,  778,  630,  570,  570,  570,  537, 1055,
-      537,  538,  539,  539,  604, 1055,  629,  644,  758,  630,
-     1055,  775,  540,  573,  573,  573,  779,  570,  570,  570,
-      651,  651,  651,  574,  604,  574,  575,  576,  576, 1055,
+      928,  521,  791,  521,  522,  523,  523,  701,  780,  757,
+      757,  757,  659,  659,  659,  704,  704,  524,  606,  606,
+      606,  674,  674,  674, 1361,  687,  687,  929,  699,  699,
+      699,  607,  523,  523,  758,  699,  699,  699,  821,  753,
+      933,  781,  781,  781,  706,  706,  706,  821,  608,  609,
+      610,  611,  755,  675,  933,  612, 1361, 1361,  613,  820,
+      820,  614,  779,  779,  615,  651,  651,  651,  660,  706,
+      706,  706, 1361,  739,  739,  652,  933,  652,  653,  654,
+      654,  782,  701,  821,  783,  822,  822,  822,  844,  701,
+      933,  655,  597,  597,  597,  781,  781,  781,  933,  821,
 
-      631,  779,  809,  571,  794,  794,  572,  577,  594,  594,
-      594,  645,  645,  645,  699,  700,  700,  533,  533,  533,
-      779,  595,  539,  539,  632,  571,  821,  821,  572,  779,
-      533,  533,  533, 1066,  732,  732,  596,  597,  598,  599,
-      604,  652, 1055,  600,  778,  778,  601,  644,  858,  602,
-      808,  603,  634,  634,  634,  534,  660,  835,  535,  664,
-      664,  664,  644,  858,  646,  635,  576,  576,  534, 1047,
-      836,  535,  570,  570,  570,  661,  570,  570,  570,  886,
-      636,  637,  638,  639,  691,  691,  691,  640,  845,  845,
-      641, 1066, 1066,  642,  886,  643, 1047,  665,  857,  857,
+      853,  853,  598,  845,  598,  599,  600,  600,  933,  751,
+      751,  751,  830,  830,  830,  751,  751,  751,  601,  688,
+      688,  688,  757,  757,  757,  823,  820,  820,  824,  754,
+      754,  754,  689,  600,  600,  849,  938,  831,  850,  786,
+      787,  787,  939,  781,  781,  781,  940,  758,  933,  690,
+      691,  692,  693,  827,  828,  828,  694,  897,  897,  695,
+     1361, 1361,  696,  753,  933,  697,  651,  651,  651,  753,
+      932,  932,  781,  781,  781,  933,  652,  941,  652,  653,
+      654,  654,  942,  849,  933,  755,  850,  943,  781,  781,
+      781,  944,  655,  740,  740,  740,  945,  920,  920,  920,
 
-      666,  647,  647,  647,  533,  533,  533,  753,  754,  754,
-      571,  687,  667,  572,  571,  858, 1047,  572,  770,  771,
-      771,  688,  692,  886,  858,  693,  791,  792,  792, 1066,
-      794,  794,  886,  533,  533,  533,  604,  694, 1047,  664,
-      664,  664,  534,  743,  863,  535,  664,  664,  664,  709,
-      664,  664,  664,  900,  648,  697,  697,  697,  644,  570,
-      570,  570,  818,  819,  819,  698,  891,  698,  699,  700,
-      700,  534,  873,  873,  535, 1047,  710,  711, 1047,  701,
-      712,  570,  570,  570,  711,  713,  743,  712,  665, 1066,
-     1066,  666,  667,  691,  691,  691,  952,  571,  904,  667,
+     1361,  853,  853,  822,  822,  822,  741,  654,  654,  851,
+      946,  947,  782,  948,  949,  783,  822,  822,  822,  950,
+      822,  822,  822,  742,  743,  744,  745,  852,  782,  951,
+      746,  783,  952,  747,  953,  954,  748,  955,  956,  749,
+      784,  784,  784,  893,  957,  958,  894,  822,  822,  822,
+      785,  921,  785,  786,  787,  787,  893,  895,  959,  894,
+      823,  960,  961,  824, 1361, 1361,  788,  825,  825,  825,
+      964,  964,  830,  830,  830,  965,  965,  826,  965,  826,
+      827,  828,  828,  910,  910,  910,  896,  823,  965,  965,
+      824,  965,  970,  829,  854,  854,  854,  831, 1361,  897,
 
-      572,  885,  885,  667,  725,  743,  691,  691,  691,  899,
-      691,  691,  691,  904,  533,  533,  533, 1066, 1066,  571,
-      903,  903,  572,  904,  726,  857,  857,  837,  837,  837,
-     1010,  727,  904, 1007,  728,  780,  780,  780, 1066,  821,
-      821, 1066,  845,  845,  727,  729,  694,  728,  692,  914,
-      914,  693,  534, 1066, 1066,  535, 1007,  750,  928,  694,
-      570,  570,  570,  694,  733,  733,  733,  928,  859,  859,
-      859,  927,  927,  781,  885,  885,  782,  734,  700,  700,
-      838,  887,  887,  887,  837,  837,  837, 1007,  783,  751,
-      751,  751,  735,  736,  737,  738,  938,  938,  571,  739,
+      897,  913,  913,  913,  781,  781,  781,  855,  787,  787,
+      781,  781,  781,  965,  965,  971,  972,  973,  974,  934,
+      934,  934,  965,  975,  856,  857,  858,  859,  981,  982,
+      965,  860,  983,  984,  861,  985,  986,  862,  987,  911,
+      863,  898,  898,  898,  782,  930,  988,  783,  932,  932,
+      782,  995,  996,  783,  899,  828,  828,  914,  931,  935,
+      997,  998,  936,  822,  822,  822,  999,  822,  822,  822,
+     1000,  900,  901,  902,  903,  937, 1001,  864,  904,  994,
+     1002,  905, 1003, 1004,  906, 1005, 1006,  907,  966,  966,
+      966,  910,  910,  910,  913,  913,  913,  920,  920,  920,
 
-     1007,  572,  740,  767, 1007,  741,  860,  742,  751,  751,
-      751,  905,  905,  905,  928,  768,  768,  768,  752,  888,
-      752,  753,  754,  754,  901,  901,  901,  589, 1007,  928,
-      590, 1002,  755,  743,  780,  780,  780,  838,  789,  789,
-      789,  953,  780,  780,  780, 1002,  534,  903,  903,  535,
-      768,  768,  768,  629,  956,  956,  630,  866,  867,  867,
-      769, 1002,  769,  770,  771,  771, 1066,  873,  873,  929,
-      929,  929,  839, 1002,  772,  840,  589,  902, 1002,  590,
-      839, 1066, 1066,  840,  816,  816,  816,  783,  571,  968,
-      968,  572,  788,  788,  788,  783,  927,  927,  780,  780,
+      781,  781,  781,  823,  962, 1007,  824,  823,  964,  964,
+      824,  908, 1014, 1013, 1015,  963, 1016,  781,  781,  781,
+     1017,  978,  979,  979, 1018, 1018, 1030, 1031,  967, 1032,
+     1033,  968,  934,  934,  934,  848,  934,  934,  934, 1034,
+      782, 1035, 1042,  783,  969, 1043, 1046,  911,  989, 1047,
+      914,  921,  976,  976,  976,  864, 1048,  782, 1049, 1044,
+      783, 1050,  977,  990,  977,  978,  979,  979,  934,  934,
+      934, 1051,  991,  864, 1052,  992,  991, 1053,  980,  992,
+      822,  822,  822, 1054, 1045, 1061, 1062, 1065,  937,  822,
+      822,  822,  937,  966,  966,  966,  908,  966,  966,  966,
 
-      780, 1002,  752,  993,  752,  753,  754,  754,  859,  859,
-      859,  859,  859,  859,  969,  989,  755,  789,  789,  789,
-      969,  992,  629,  969,  989,  630,  743,  790,  989,  790,
-      791,  792,  792,  841,  994,  969,  781,  976,  976,  782,
-      989,  793,  795,  795,  795,  989,  589, 1066, 1066,  589,
-      989,  783,  864,  864,  864,  796,  754,  754,  989,  859,
-      859,  859,  988,  988,  887,  887,  887,  894,  895,  895,
-      797,  798,  799,  800,  901,  901,  901,  801, 1066, 1066,
-      802, 1001, 1001,  803,  989,  804,  815,  815,  815,  989,
-      711,  968,  968,  712,  906,  969,  769,  860,  769,  770,
+     1063,  966,  966,  966,  908,  993, 1066, 1067,  935, 1361,
+     1361,  936, 1361, 1018, 1018, 1064, 1068, 1068, 1069, 1069,
+      823, 1069, 1069,  824,  937, 1069, 1069, 1069, 1008,  823,
+     1069, 1069,  824, 1010, 1074, 1009, 1011, 1010, 1012, 1075,
+     1011,  967, 1076, 1069,  968, 1077, 1039, 1040, 1040,  969,
+     1084, 1084, 1096,  969,  781,  781,  781,  969, 1019, 1019,
+     1019, 1097, 1100,  864, 1101, 1102,  864, 1103,  822,  822,
+      822, 1020,  979,  979, 1098, 1099, 1104, 1105, 1058, 1059,
+     1059, 1070, 1070, 1070, 1124, 1037, 1037, 1037, 1021, 1022,
+     1023, 1024, 1112, 1112,  782, 1025, 1125,  783, 1026,  908,
 
-      771,  771,  629,  969,  989,  667,  887,  887,  887,  969,
-      772,  816,  816,  816,  905,  905,  905,  887,  887,  887,
-      969,  817,  969,  817,  818,  819,  819,  902,  905,  905,
-      905,  892,  892,  892, 1002,  820,  822,  822,  822,  911,
-      912,  912, 1002, 1002,  629,  909,  909,  909,  969,  823,
-      771,  771,  930, 1066, 1066,  888,  951, 1002,  859,  859,
-      859, 1066,  914,  914,  824,  825,  826,  827,  950,  727,
-     1007,  828,  728,  931,  829, 1006, 1006,  830,  928,  831,
-      844,  844,  844,  711,  694, 1007,  712,  929,  929,  929,
-      790,  928,  790,  791,  792,  792,  860,  954,  667,  970,
+     1036, 1027, 1130,  908, 1028, 1037, 1037, 1037,  823, 1131,
+     1126,  824, 1127, 1136, 1055, 1038, 1151, 1038, 1039, 1040,
+     1040, 1071, 1068, 1068, 1072,  849, 1151, 1029,  850, 1135,
+     1151, 1041, 1151, 1056, 1056, 1056, 1151, 1073, 1138, 1138,
+     1128, 1128, 1128, 1361, 1361,  782, 1150, 1150,  783, 1056,
+     1056, 1056, 1081, 1082, 1082, 1361, 1084, 1084, 1151, 1057,
+     1151, 1057, 1058, 1059, 1059, 1151, 1154, 1151, 1155, 1070,
+     1070, 1070, 1162,  893, 1163, 1060,  894, 1152, 1152, 1152,
+     1164, 1151,  864, 1070, 1070, 1070, 1109, 1110, 1110,  823,
+     1179, 1156,  824, 1078, 1078, 1078, 1129, 1166, 1166, 1179,
 
-      970,  970,  988,  988,  793,  846,  846,  846,  929,  929,
-      929,  935,  936,  936,  928,  887,  887,  887,  847,  792,
-      792, 1066,  938,  938, 1066,  956,  956,  933,  933,  933,
-     1003, 1003, 1003,  848,  849,  850,  851,  971, 1007,  928,
-      852, 1017, 1017,  853, 1001, 1001,  854, 1007,  855,  864,
-      864,  864,  667,  888,  974,  990,  990,  990,  928,  865,
-      928,  865,  866,  867,  867,  727, 1006, 1006,  728,  859,
-      859,  859,  926,  868,  907,  970,  970,  970, 1034, 1034,
-      694, 1066, 1066,  667,  604,  872,  872,  872,  904,  970,
-      970,  970,  904,  991,  904,  817,  904,  817,  818,  819,
+     1070, 1070, 1070, 1038, 1179, 1038, 1039, 1040, 1040, 1132,
+     1361, 1361, 1133, 1179, 1079, 1079, 1079, 1153, 1179, 1041,
+     1079, 1079, 1079, 1132, 1179, 1073, 1133, 1107, 1107, 1107,
+     1080, 1179, 1080, 1081, 1082, 1082, 1179, 1134, 1182, 1073,
+     1071, 1178, 1178, 1072, 1183, 1190, 1083, 1085, 1085, 1085,
+     1361, 1112, 1112, 1179,  849, 1191, 1073,  850, 1192,  908,
+     1086, 1040, 1040, 1180, 1180, 1180, 1198,  893, 1184, 1179,
+      894, 1128, 1128, 1128, 1198, 1029, 1198, 1087, 1088, 1089,
+     1090, 1029, 1361, 1361, 1091, 1193, 1194, 1092, 1197, 1197,
+     1093, 1198, 1198, 1094, 1106, 1106, 1106, 1195, 1195, 1195,
 
-      819, 1066,  976,  976, 1008, 1008, 1008,  860,  694,  820,
-      874,  874,  874,  711, 1000,  997,  998,  998, 1046, 1046,
-      887,  887,  887,  875,  819,  819,  904,  711,  667, 1047,
-     1003, 1003, 1003,  904, 1047,  970,  970,  970,  876,  877,
-      878,  879,  667, 1047, 1047,  880, 1066, 1066,  881, 1054,
-     1054,  882,  898,  883,  892,  892,  892,  694,  888,  990,
-      990,  990, 1055,  897,  893, 1005,  893,  894,  895,  895,
-     1004, 1055, 1055,  971, 1014, 1015, 1015,  890,  896,  889,
-      990,  990,  990,  667,  990,  990,  990, 1055,  667,  644,
-      908,  908,  908,  995,  995,  995,  886,  727, 1046, 1046,
+     1361, 1138, 1138, 1181, 1057, 1198, 1057, 1058, 1059, 1059,
+     1198, 1198, 1150, 1150, 1198, 1199, 1199, 1199, 1201, 1220,
+     1060, 1107, 1107, 1107, 1208, 1208, 1198, 1129, 1152, 1152,
+     1152, 1108, 1222, 1108, 1109, 1110, 1110, 1152, 1152, 1152,
+     1159, 1160, 1160, 1157, 1157, 1157, 1222, 1111, 1113, 1113,
+     1113, 1361, 1361, 1196, 1361, 1166, 1166, 1221, 1221, 1222,
+     1222, 1114, 1059, 1059, 1152, 1152, 1152, 1222,  849, 1222,
+     1222, 1222, 1222, 1223, 1223, 1223, 1225,  849, 1115, 1116,
+     1117, 1118, 1244,  991, 1245, 1119,  992, 1222, 1120, 1178,
+     1178, 1121, 1232, 1232, 1122, 1137, 1137, 1137, 1248,  937,
 
-      865,  886,  865,  866,  867,  867,  859,  859,  859, 1003,
-     1003, 1003,  694,  886,  868,  909,  909,  909,  727, 1009,
-     1054, 1054,  991,  886,  886,  910,  886,  910,  911,  912,
-      912,  839,  871,  694,  840,  870,  869,  694,  862,  913,
-      915,  915,  915,  861,  860,  858,  783,  858,  858, 1029,
-      970,  970,  970,  916,  867,  867,  858,  887,  887,  887,
-      858,  858,  667, 1008, 1008, 1008,  843,  834,  917,  918,
-      919,  920, 1008, 1008, 1008,  921,  833,  814,  922,  813,
-      812,  923,  811,  924,  932,  932,  932,  810,  971, 1030,
-      990,  990,  990,  807,  893,  888,  893,  894,  895,  895,
+     1264, 1200, 1264, 1029, 1153, 1080, 1029, 1080, 1081, 1082,
+     1082, 1180, 1180, 1180, 1246, 1247, 1180, 1180, 1180, 1197,
+     1197, 1083, 1139, 1139, 1139, 1264, 1180, 1180, 1180, 1187,
+     1188, 1188, 1185, 1185, 1185, 1140, 1082, 1082, 1195, 1195,
+     1195, 1199, 1199, 1199, 1199, 1199, 1199, 1205, 1206, 1206,
+     1264,  893, 1141, 1142, 1143, 1144,  893, 1251, 1251, 1145,
+     1361, 1361, 1146, 1224, 1264, 1147, 1181, 1264, 1148, 1157,
+     1157, 1157, 1010, 1263, 1263, 1011, 1361, 1208, 1208, 1158,
+     1264, 1158, 1159, 1160, 1160, 1152, 1152, 1152,  969, 1203,
+     1203, 1203, 1264, 1284, 1196, 1161, 1264, 1265, 1265, 1265,
 
-     1031,  806,  787,  667, 1012, 1012, 1012,  786,  896,  933,
-      933,  933, 1066, 1017, 1017,  785,  694,  784,  779,  934,
-      779,  934,  935,  936,  936,  694,  779,  779,  991, 1032,
-     1048, 1048, 1048,  937,  939,  939,  939, 1066, 1034, 1034,
-      779,  779,  839,  694,  777,  840,  774,  940,  895,  895,
-      773,  766,  765, 1056, 1056, 1056,  764,  783, 1048, 1048,
-     1048,  763,  941,  942,  943,  944,  762,  761, 1049,  945,
-      760,  757,  946,  756,  749,  947,  748,  948,  955,  955,
-      955,  747,  746,  783,  970,  970,  970,  745,  910,  744,
-      910,  911,  912,  912,  731,  724,  839,  723, 1065, 1065,
+     1284, 1264, 1221, 1221, 1271, 1271,  864, 1165, 1165, 1165,
+     1223, 1223, 1223, 1223, 1223, 1223, 1284, 1108, 1284, 1108,
+     1109, 1110, 1110, 1361, 1361, 1153, 1249, 1283, 1283,  991,
+     1284, 1284,  992, 1111, 1167, 1167, 1167, 1266, 1180, 1180,
+     1180, 1229, 1230, 1230, 1284,  937, 1284, 1168, 1110, 1110,
+     1361, 1232, 1232,  937, 1287, 1284, 1288, 1227, 1227, 1227,
+     1284, 1285, 1285, 1285, 1169, 1170, 1171, 1172, 1248, 1361,
+     1361, 1173, 1296, 1296, 1174, 1029, 1297, 1175, 1181, 1269,
+     1176, 1185, 1185, 1185, 1289, 1297, 1297, 1152, 1152, 1152,
+     1297, 1186, 1297, 1186, 1187, 1188, 1188, 1010, 1297, 1297,
 
-     1065,  722,  913,  957,  957,  957,  783,  721,  720,  719,
-      718,  783,  717,  716,  715,  708,  958,  912,  912,  707,
-      706,  705,  971,  704,  703,  702,  696,  695,  690, 1051,
-      690,  959,  960,  961,  962,  690,  690,  667,  963, 1066,
-      690,  964,  690,  686,  965,  685,  966,  972,  972,  972,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-      972,  972,  972,  972,  972,  973,  973,  973,  973,  973,
-      973,  972,  972,  972,  972,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
-      973,  973,  973,  973,  973,  973,  973,  973,  973,  684,
+     1011, 1286, 1361, 1251, 1251, 1297, 1297, 1189, 1298, 1298,
+     1298, 1263, 1263,  969, 1265, 1265, 1265,  969,  908, 1202,
+     1202, 1202, 1297, 1265, 1265, 1265, 1302, 1153, 1302, 1158,
+     1302, 1158, 1159, 1160, 1160, 1295, 1180, 1180, 1180, 1302,
+     1265, 1265, 1265, 1361, 1361, 1161, 1203, 1203, 1203, 1361,
+     1271, 1271, 1301, 1301,  991, 1302, 1204, 1302, 1204, 1205,
+     1206, 1206, 1302,  991,  937, 1302, 1302, 1303, 1303, 1303,
+      937, 1305, 1207, 1209, 1209, 1209, 1181, 1299, 1342,  937,
+     1266, 1302, 1283, 1283, 1300, 1342, 1210, 1160, 1160, 1285,
+     1285, 1285, 1292, 1293, 1293, 1342,  937, 1285, 1285, 1285,
 
-      972,  972,  972,  975,  975,  975,  683,  990,  990,  990,
-      682,  681,  680,  934,  679,  934,  935,  936,  936,  678,
-      677,  676,  675, 1048, 1048, 1048,  674,  937,  977,  977,
-      977,  673,  672,  671,  670,  669,  668,  970,  970,  970,
-      663,  978,  936,  936,  663,  991,  663,  663, 1056, 1056,
-     1056,  663, 1053, 1048, 1048, 1048,  979,  980,  981,  982,
-      694,  839,  663,  983,  659,  658,  984,  657,  656,  985,
-      655,  986,  995,  995,  995,  971,  783, 1056, 1056, 1056,
-     1058,  654,  996,  653,  996,  997,  998,  998, 1057,  650,
-      667, 1049,  649,  628,  627,  626,  999,  625,  990,  990,
+     1290, 1290, 1290, 1211, 1212, 1213, 1214, 1312, 1312, 1342,
+     1215, 1296, 1296, 1216, 1301, 1301, 1217, 1329, 1329, 1218,
+     1226, 1226, 1226,  969, 1361, 1361, 1285, 1285, 1285, 1010,
+     1186, 1342, 1186, 1187, 1188, 1188, 1342, 1010, 1341, 1341,
+     1132, 1350, 1342, 1133, 1350,  969, 1189, 1227, 1227, 1227,
+     1152, 1152, 1152,  969, 1350, 1342, 1073, 1228, 1342, 1228,
+     1229, 1230, 1230, 1304, 1342, 1350, 1286, 1350, 1298, 1298,
+     1298, 1361, 1361, 1231, 1233, 1233, 1233, 1349, 1349, 1180,
+     1180, 1180,  969, 1298, 1298, 1298, 1350, 1234, 1188, 1188,
+     1153, 1309, 1310, 1310, 1350, 1350, 1324, 1265, 1265, 1265,
 
-      990,  783, 1061, 1061, 1061,  624,  783,  743, 1011, 1011,
-     1011, 1048, 1048, 1048, 1062, 1062, 1062,  623,  996,  622,
-      996,  997,  998,  998, 1048, 1048, 1048, 1048, 1048, 1048,
-      783,  621,  999, 1012, 1012, 1012,  991,  620,  619,  618,
-      711, 1059,  617, 1013,  616, 1013, 1014, 1015, 1015, 1049,
-     1060,  694,  727,  615,  614,  667,  613, 1016, 1018, 1018,
-     1018,  612, 1049,  611,  783, 1049,  610,  694,  609, 1063,
-     1064, 1019,  998,  998,  608,  607,  606,  783,  605,  588,
-      783,  585,  584,  583,  582,  581, 1020, 1021, 1022, 1023,
-      580,  579,  578, 1024,  569,  569, 1025,  569,  569, 1026,
+     1303, 1303, 1303,  211, 1235, 1236, 1237, 1238, 1303, 1303,
+     1303, 1239,  225, 1350, 1240, 1341, 1341, 1241,  616, 1181,
+     1242, 1250, 1250, 1250,  937, 1326, 1285, 1285, 1285, 1350,
+      698, 1204,  750, 1204, 1205, 1206, 1206, 1266, 1325,  937,
+     1361, 1312, 1312, 1361, 1329, 1329,  833, 1207, 1252, 1252,
+     1252, 1349, 1349,  937,  864,  908,  969,  909, 1029, 1095,
+     1123, 1253, 1206, 1206,  969, 1149, 1286, 1327, 1177, 1219,
+     1243, 1262, 1282, 1323, 1340,  884,  883,  882, 1254, 1255,
+     1256, 1257,  969,  881,  880, 1258,  879,  878, 1259,  877,
+      876, 1260,  875,  874, 1261, 1267, 1267, 1267, 1267, 1267,
 
-      569, 1027, 1033, 1033, 1033,  569,  567,  566,  565,  564,
-      563,  562, 1013,  561, 1013, 1014, 1015, 1015,  560,  559,
-      558,  557,  556,  555,  554,  553, 1016, 1035, 1035, 1035,
-      552,  551,  550,  549,  548,  547,  546,  545,  544,  543,
-     1036, 1015, 1015,  532,  532,  532,  532,  532,  532,  530,
-      529,  528,  527,  526,  525, 1037, 1038, 1039, 1040,  524,
-      523,  522, 1041,  521,  520, 1042,  519,  518, 1043,  517,
-     1044, 1050, 1050, 1050,  501,  500,  499,  498,  497,  496,
-      495,  790,  494,  790,  791,  792,  792,  493,  492,  491,
-      490,  489,  488,  487,  486,  793,  485,  484,  483,  482,
+     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
+     1267, 1267, 1267, 1267, 1267, 1268, 1268, 1268, 1268, 1268,
+     1268, 1267, 1267, 1267, 1267, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+     1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268, 1268,
+      873, 1267, 1267, 1267, 1270, 1270, 1270,  872,  871, 1307,
+     1307, 1307,  870,  869, 1228,  868, 1228, 1229, 1230, 1230,
+     1343, 1343, 1343, 1360, 1360, 1360,  867, 1265, 1265, 1265,
+     1231, 1272, 1272, 1272,  866,  865,  846,  843, 1351, 1351,
+     1351, 1285, 1285, 1285, 1273, 1230, 1230,  842,  841, 1132,
 
-      481,  480,  479,  478,  477,  476,  475,  473,  473,  860,
-     1052, 1052, 1052,  473,  473,  473,  473,  471,  455,  454,
-      817,  453,  817,  818,  819,  819,  452,  451,  450,  449,
-      448,  447,  444,  443,  820,  442,  441,  440,  439,  433,
-      432,  431,  430,  429,  428,  424,  423,  422,  888, 1050,
-     1050, 1050,  421,  420,  419,  418,  417,  416,  415,  790,
-      414,  790,  791,  792,  792,  413,  412,  411,  410,  409,
-      408,  407,  406,  793,  405,  392,  391,  385,  384,  383,
-      382,  381,  380,  379,  378,  377,  374,  589, 1052, 1052,
-     1052,  373,  370,  369,  368,  367,  366,  365,  817,  364,
+      840,  839, 1133,  838,  837, 1343, 1343, 1343,  836,  835,
+     1344, 1274, 1275, 1276, 1277, 1073, 1361, 1266, 1278,  324,
+      315, 1279,  834,  832, 1280, 1346, 1073, 1281, 1290, 1290,
+     1290, 1286,  821,  937, 1343, 1343, 1343,  821, 1291, 1348,
+     1291, 1292, 1293, 1293, 1073, 1132,  821,  969, 1343, 1343,
+     1343,  821,  821,  821, 1294,  819, 1265, 1265, 1265,  818,
+      817, 1073, 1351, 1351, 1351, 1029, 1306, 1306, 1306, 1285,
+     1285, 1285,  816,  815, 1132,  814, 1291,  813, 1291, 1292,
+     1293, 1293, 1351, 1351, 1351, 1352,  812,  811, 1344,  810,
+     1073,  809, 1294, 1307, 1307, 1307, 1266,  808,  807, 1343,
 
-      817,  818,  819,  819,  363,  360,  359,  358,  357,  356,
-      355,  354,  820,  353,  352,  351,  350,  349,  348,  347,
-      343,  342,  341,  340,  339,  338,  629, 1061, 1061, 1061,
-      332,  331,  330,  329,  328,  327,  326,  910,  325,  910,
-      911,  912,  912,  324,  323,  322,  321,  320,  319,  318,
-      317,  913,  316,  313,  312,  311,  310,  309,  306,  305,
-      304,  300,  299,  298,  297,  971,  296,  295,  294,  293,
-      292,  288,  283,  282,  281,  280,  279,  278,  277,  276,
-      667, 1062, 1062, 1062,  275,  274,  273,  272,  271,  270,
-      269,  934,  265,  934,  935,  936,  936,  219,  262,  261,
+     1343, 1343, 1353, 1308, 1073, 1308, 1309, 1310, 1310, 1286,
+      806,  805,  937,  804,  803, 1354,  802,  801, 1073, 1311,
+     1313, 1313, 1313,  800,  799,  969,  798,  797,  796,  795,
+     1343, 1343, 1343, 1314, 1293, 1293,  794,  793, 1073, 1344,
+     1355,  792,  789, 1357, 1357, 1357,  780,  780,  780,  780,
+     1315, 1316, 1317, 1318,  780, 1073,  780, 1319,  778,  777,
+     1320,  776,  775, 1321,  774,  773, 1322, 1328, 1328, 1328,
+     1344,  772, 1343, 1343, 1343,  771,  770, 1308, 1358, 1308,
+     1309, 1310, 1310, 1010,  769,  768, 1073,  767,  766,  765,
+      764,  763,  256, 1311, 1330, 1330, 1330,  248,  762,  969,
 
-      260,  259,  256,  255,  254,  937,  249,  248,  247,  246,
-      242,  239,  238,  237,  236,  228,  227,  226,  225,  991,
-      224,  223,  222,  221,  220,  219,  182, 1066,  215,  214,
-      213,  212,  156,  209,  694, 1065, 1065, 1065,  208,  199,
-      198,  195,  193,  190,  126, 1013,  126, 1013, 1014, 1015,
-     1015,  174,  170,  169,  167,  156,  126,  123,  122, 1016,
-      121,  118, 1066,  114,  114,  104,  104, 1066, 1066, 1066,
-     1066, 1066, 1066, 1049, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,  783,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
+      324,  761,  315,  760,  759,  756,  738, 1331, 1310, 1310,
+      737,  736, 1344,  735,  734,  733,  732,  731, 1359,  730,
+      729,  728,  727,  726, 1332, 1333, 1334, 1335, 1073,  725,
+      724, 1336,  723,  722, 1337,  721,  720, 1338,  719,  718,
+     1339, 1345, 1345, 1345,  717,  716,  715,  714,  713,  712,
+      711, 1080,  710, 1080, 1081, 1082, 1082,  709,  708,  707,
+      705,  705,  705,  705,  705,  705,  703, 1083,  702,  686,
+      685,  684,  683,  682,  681,  680,  679,  678,  677,  676,
+      673, 1153, 1347, 1347, 1347,  672,  671,  670,  669,  256,
+      668,  248, 1108,  667, 1108, 1109, 1110, 1110,  666,  665,
 
-       44,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   96,   96,   96,
+      324,  664,  324,  663,  315,  662,  315,  661, 1111,  658,
+      657,  656,  650,  649,  648,  647,  646,  645,  644,  643,
+      642,  638, 1181, 1345, 1345, 1345,  637,  636,  635,  634,
+      633,  632,  631, 1080,  630, 1080, 1081, 1082, 1082,  629,
+      628,  627,  626,  625,  624,  623,  622,  621,  618, 1083,
+      617,  604,  603,  602,  596,  595,  594,  593,  592,  591,
+      590,  589,  588,  849, 1347, 1347, 1347,  587,  586,  583,
+      580,  579,  578,  256, 1108,  577, 1108, 1109, 1110, 1110,
+      256,  576,  248,  575,  248,  572,  571,  570,  569,  568,
+     1111,  567,  566,  565,  564,  563,  562,  561,  560,  559,
 
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  119, 1066, 1066,  119, 1066,  119,  119,  119,  119,
-      119,  120, 1066, 1066,  120,  120,  120,  120,  120,  120,
+      558,  557,  556,  555,  893, 1356, 1356, 1356,  552,  551,
+      550,  549,  548,  547,  546, 1204,  545, 1204, 1205, 1206,
+     1206,  544,  543,  542,  541,  540,  539,  538,  537,  536,
+      535, 1207,  531,  530,  529,  528,  527,  526,  525,  519,
+      518,  517,  516,  515,  514, 1266,  513,  512,  511,  510,
+      509,  508,  507,  506,  505,  504,  503,  502,  501,  500,
+      499,  937, 1357, 1357, 1357,  498,  497,  496,  495,  494,
+      493,  492, 1228,  491, 1228, 1229, 1230, 1230,  490,  489,
+      486,  485,  484,  483,  482,  481,  480,  479, 1231,  478,
+      477,  476,  475,  474,  473,  472,  471,  468,  467,  463,
 
-      120,  124,  124, 1066,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  127, 1066, 1066, 1066,  127,  157, 1066,
-     1066,  157,  157,  157,  157,  157,  157,  157, 1066,  157,
-      159, 1066,  159,  159,  159,  160,  160,  171, 1066, 1066,
-      171,  171,  171,  171,  171,  171,  171,  172,  172,  172,
-      172,  172,  172,  172,  172,  172, 1066,  172,  172,  173,
-      173,  173,  173,  173,  173,  173,  173, 1066,  173,  173,
-      173,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  176, 1066, 1066, 1066,  176,  177,  177,  218,  218,
-      218,  218,  218,  218,  218,  218,  218,  218,  218,  218,
+      462,  458, 1286,  457,  456,  455,  454,  453,  452,  451,
+      450,  446,  441,  440,  439,  438,  437,  436,  969, 1356,
+     1356, 1356,  435,  434,  433,  432,  431,  430,  429, 1204,
+      428, 1204, 1205, 1206, 1206,  427,  426,  425,  424,  423,
+      419,  344,  414,  413,  412, 1207,  411,  410,  409,  408,
+      407,  406,  405,  404,  324,  324,  401,  324,  324,  991,
+      400,  399,  315,  315,  396,  315,  315,  395,  394,  393,
+      392,  391,  387,  386,  385,  937, 1360, 1360, 1360,  384,
+      383,  382,  381,  378,  377,  376, 1308,  375, 1308, 1309,
+     1310, 1310,  371,  368,  367,  366,  365,  364,  360,  354,
 
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-     1066,  972,   43, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066
+      353,  352, 1311,  351,  350,  349,  348,  347,  346,  345,
+      344,  271, 1361,  340,  339,  256, 1344,  256,  336,  256,
+      256,  335,  248,  248,  332,  248,  248,  331,  239,  237,
+      330,  327, 1073,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   47,   47,   47,   47,   47,
+       47,   47,   47,   47,   47,   47,   47,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   56,
+       56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
+       56,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   63,   63,   63,   63,   63,   63,   63,
+
+       63,   63,   63,   63,   63,   99,   99,   99,   99,   99,
+       99,   99,   99,   99,   99,   99,   99,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  110,
+      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
+      110,  115,  115,  115,  115,  115,  115,  115,  115,  115,
+      115,  115,  115,  118,  118,  118,  118,  118,  118,  118,
+      118,  118,  118,  118,  118,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  121,  121,  121,  125,  125,  125,
+      125,  125,  125,  125,  125,  125,  125,  125,  125,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+
+      127,  131,  131,  131,  131,  131,  131,  131,  131,  131,
+      131,  131,  131,  133,  133,  133,  133,  133,  133,  133,
+      133,  133,  133,  133,  133,  137,  137,  137,  137,  137,
+      137,  137,  137,  137,  137,  137,  137,  148,  326,  325,
+      148,  324,  148,  148,  148,  148,  148,  150,  323,  322,
+      150,  150,  150,  150,  150,  150,  150,  164,  164,  226,
+      164,  164,  164,  164,  164,  164,  164,  164,  164,  170,
+      321,  318,  317,  170,  205,  316,  315,  205,  205,  205,
+      205,  205,  205,  205,  314,  205,  207,  313,  207,  207,
+      207,  208,  208,  236,  312,  311,  236,  236,  236,  236,
+
+      236,  236,  236,  238,  310,  204,  238,  238,  238,  238,
+      238,  238,  238,  241,  241,  241,  241,  241,  241,  241,
+      241,  241,  203,  241,  241,  242,  242,  242,  242,  242,
+      242,  242,  242,  304,  242,  242,  242,  244,  244,  244,
+      244,  244,  244,  244,  244,  244,  244,  265,  291,  286,
+      280,  265,  266,  266,  343,  343,  343,  343,  343,  343,
+      343,  343,  343,  343,  343,  343,  927,  927,  927,  927,
+      927,  927,  927,  927,  927,  169,  927,  927, 1267, 1267,
+     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,  169, 1267,
+      264,  263,  160,  262,  259,  258,  257,  256,  255,  151,
+
+      149,  254,  251,  250,  249,  248,  247,  243,  240,  239,
+      237,  235,  227,  226,  224,  203,  204,  198,  169,  167,
+      166,  165,  163,  162,  161,  160,  159,  151,  149,  147,
+      140, 1361,  136,  136,  126,  126,   45, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361
+
     } ;
 
-static yyconst flex_int16_t yy_chk[2970] =
+static yyconst flex_int16_t yy_chk[3397] =
     {   0,
-        0,    0,    3,    4,    5,    6,   19,    5,    6,    7,
-        7,    7,    8,    8,    8,    9,    9,    9,   11,   12,
-        7,   11,   12,    8,   10,   10,   10,   20,   23,   19,
-     1112,   24,   25,   26,   35,   36,   66,   66,   37,  125,
-      125,   11,   12,  132,   38,  132, 1114,  220,  140,  220,
-       20,   23,    3,    4,   24,   25,   26,  140,   35,   36,
-        7,   37,    7,    8,  154,    8,    9,   38,    9,   41,
-       42,   41,   42,  335,  335,   10,  154,   10,   13,   13,
+        0,    0,    3,    4,    5,    0,    0,    5,    6,    0,
+        0,    6,    9,    9,    9,    7,    7,    7,   23,    5,
+        5,    5,   31,    6,    6,    6,    7,   24,   37,    5,
+        8,    8,    8,    6,   10,   10,   10,   79,   79,   38,
+      181,    8,   11,   23,  181,   11,   31,   12,   39,    5,
+       12,   40,   24,    6,   37,    3,    4,   11,   11,   11,
+      168,  168,   12,   12,   12,   38,    9,   11,    9,    7,
+      197,    7,   12,   39,  146,   31,   40,   31,   43,   44,
+       43,   44,  812,  197,    8,  146,    8,   11,   10,  175,
+       10,  175,   12,   13,   13,   13,   13,   13,   13,   13,
+
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   15,   15,   15,   15,   15,   15,
+       13,   13,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-       17,   17,   17,   17,   17,   17,   21,   21,   21,   21,
+       19,   67,   54,   20,   54,  179,   54,   54,   54,  139,
+      139,  139,  158,   54,  813,   19,   19,   19,   20,   20,
+       20,  179,  183,  158,   91,   19,  253,  186,   20,  185,
+
+       91,  183,   67,  186,   67,   91,   67,   67,   67,  253,
+      185,  182,  182,   67,  814,   19,   91,  182,   20,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
+       21,   21,   21,   21,   21,   21,   21,   21,   25,  815,
+       32,   26,   27,   27,   27,   28,   28,   28,   29,   29,
+       29,  223,   35,   25,   25,   25,   26,   26,   26,   30,
 
-       21,   21,   27,   27,   27,   28,   28,   28,  136,   29,
-       30,  206,  137,   33,   34,  137,  137,   75,   72,  139,
-       72,  138,  136,   75,  139,  138,  206,   75,  142,  150,
-     1115,   29,   30,  150,  159,   33,   34,   75,  192,  142,
-      159,  193,  150,  192,  159,  211,  193,  666,  199,  666,
-      211,  388,  388,   27,  159,   27,   28,  199,   28,   29,
-       30,   29,   30,   33,   34,   33,   34,   68,   68,   72,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       30,   30,  223,   25,   32,   36,   26,   83,  283,   83,
+       83,   83,   83,  283,  180,  261,   35,  180,  180,  113,
+      190,  193,  466,   25,  190,  193,   26,  195,  261,   36,
+      195,  200,  200,   32,  193,   32,   27,  466,   27,   28,
+      298,   28,   29,  234,   29,   35,  113,   35,  113,  291,
+      113,  113,  113,   30,  234,   30,  298,  113,   36,  291,
+       36,   81,   81,  816,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
 
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   79,   79,   79,   80,   80,   80,   82,
-       82,   82,  133,  133,  133,  134,  134,  134,  714,  144,
-      144,  144,  394,  394,  146,  146,  146,  207,  714,  148,
-      148,  148,  151,  151,  151,  134,  151,  155,  207,  155,
-      161,  161,  161,  162,  162,  162, 1111,   82,  151,  471,
-      151,  146,  194,  194,   79,   82,  471,   80,  144,  146,
-      148,  164,  164,  164,  194,  133,  395,  395,  134,  178,
-      178,  178,  144,  179,  179,  179,  201,  146,  216,  216,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
+       88,  817,   88,   95,   95,   95,   96,   96,   96,   98,
+       98,   98,  102,  176,  176,  176,  177,  177,  177,  818,
+      102,  347,  102,  347,  102,  102,  102,  187,  187,  187,
+      347,  102,  282,  189,  189,  189,  282,  282,  177,  819,
+      191,  191,  191,   98,  199,  199,  199,  285,  285,   98,
+      201,  201,  201,  202,   88,  202,   98,   95,   98,  285,
+       96,  306,  189,  209,  209,  209,  306,  833,  187,  176,
+      189,  778,  177,  191,  194,  194,  194,  835,  194,  207,
 
-      216,  162,  148,  201,  222,  251,  222,  201,  155,  162,
-      255,  161,  222,  251,  239,  304,  239,  241,  241,  164,
-      251, 1110,  239,  255,  262,  262,  262,  164,  239,  304,
-      288,  314,  314,  314,  241,  315,  315,  315,  334,  334,
-      334,  360,  178,  288,  288,  360,  179,  318,  318,  318,
-      693,  216,  693,  371,  371,  371,  436,  436,  360,  375,
-      375,  375,  376,  376,  376,  387,  387,  387,  457,  457,
-      391,  391,  391,  458,  458,  262,  281,  281,  281,  391,
-      402,  315,  314,  393,  393,  393,  281,  397,  281,  281,
-      281,  281,  376,  472,  472,  402,  397,  465,  318,  371,
+      201,  308,  308,  187,  194,  207,  210,  210,  210,  189,
+      207,  194,  194,  194,  307,  307,  191,  212,  212,  212,
+      778,  207,  245,  245,  245,  836,  320,  202,  246,  246,
+      246,  267,  267,  267,  268,  268,  268,  209,  293,  320,
+      210,  329,  614,  307,  837,  293,  210,  341,  341,  341,
+      293,  212,  386,  210,  329,  210,  345,  212,  614,  345,
+      368,  380,  368,  838,  212,  386,  212,  383,  368,  380,
+      370,  370,  345,  696,  345,  368,  383,  380,  446,  383,
+      390,  390,  405,  405,  405,  522,  522,  267,  370,  696,
+      268,  839,  446,  446,  487,  487,  487,  488,  488,  488,
 
-      281,  328,  328,  328,  404,  404,  404,  435,  435,  435,
-      375,  328,  465,  328,  328,  328,  328,  445,  445,  445,
-      460,  391,  439,  439,  439,  328,  333,  333,  333,  460,
-     1109,  439,  456,  456,  456,  782,  333,  782,  333,  333,
-      333,  333,  468,  468,  468,  503,  503,  445,  504,  504,
-      333,  336,  336,  336,  506,  469,  469,  469,  531,  531,
-      467,  467,  467,  506,  336,  336,  336,  473,  473,  473,
-      474,  474,  474,  439,  502,  502,  502,  527, 1108,  336,
-      336,  336,  336, 1107,  511,  602,  336,  538,  538,  336,
-     1106,  527,  336,  468,  336,  367,  367,  367,  467,  511,
+      500,  599,  599,  341,  502,  502,  502,  528,  500,  390,
+      521,  521,  521,  548,  841,  528,  609,  548,  842,  563,
+      563,  563,  573,  573,  573,  609,  584,  584,  584,  606,
+      606,  548,  598,  598,  598,  843,  405,  438,  438,  438,
+      585,  585,  585,  605,  605,  605,  488,  438,  487,  438,
+      438,  438,  438,  602,  602,  602,  607,  607,  502,  616,
+      616,  616,  602,  438,  514,  514,  514,  652,  652,  652,
+      844,  573,  585,  845,  514,  563,  514,  514,  514,  514,
+      584,  653,  653,  688,  688,  656,  656,  656,  689,  689,
+      514,  520,  520,  520,  656,  703,  657,  657,  657,  691,
 
-      602,  467,  513,  513,  513,  367,  469,  367,  367,  367,
-      367,  514,  514,  514,  515,  515,  515,  568,  568,  367,
-      386,  386,  386,  532,  532,  532,  537,  537,  537, 1105,
-      386, 1104,  386,  386,  386,  386,  574,  574,  574,  597,
-      513,  575,  575,  513,  386,  389,  389,  389,  597,  582,
-      582,  582,  594,  594,  533,  533,  533, 1103,  389,  389,
-      389,  532,  514, 1102,  532,  515,  578,  578,  578, 1101,
-      534,  534,  534,  389,  389,  389,  389,  579,  579,  579,
-      389,  595,  595,  389,  634,  634,  389, 1100,  389,  434,
-      434,  434,  533,  635,  635,  533,  535,  535,  535,  434,
+      849,  520,  703,  520,  520,  520,  520,  602,  691,  660,
+      660,  660,  659,  659,  659,  704,  704,  520,  523,  523,
+      523,  674,  674,  674,  687,  687,  687,  850,  699,  699,
+      699,  523,  523,  523,  660,  700,  700,  700,  743,  656,
+      856,  698,  698,  698,  705,  705,  705,  743,  523,  523,
+      523,  523,  657,  674,  858,  523,  740,  740,  523,  741,
+      741,  523,  779,  779,  523,  559,  559,  559,  659,  706,
+      706,  706,  739,  739,  739,  559,  859,  559,  559,  559,
+      559,  698,  699,  748,  698,  750,  750,  750,  774,  700,
+      860,  559,  597,  597,  597,  780,  780,  780,  861,  748,
 
-      582,  434,  434,  434,  434,  534,  662,  662,  534,  637,
-     1099,  534, 1091,  434,  437,  437,  437,  642,  637,  578,
-      593,  593,  593,  569,  569,  569, 1090,  437,  437,  437,
-      579,  730,  642,  535,  535,  689,  689,  535,  570,  570,
-      570,  730,  437,  437,  437,  437,  633,  633,  633,  437,
-      699,  699,  437,  733,  733,  437, 1044,  437,  470,  470,
-      470,  569,  734,  734,  569,  571,  571,  571,  470, 1042,
-      470,  470,  470,  470,  713, 1041,  570,  729,  713,  570,
-     1040,  729,  470,  516,  516,  516,  741,  572,  572,  572,
-      651,  651,  651,  516,  759,  516,  516,  516,  516, 1039,
+      786,  786,  597,  774,  597,  597,  597,  597,  863,  751,
+      751,  751,  755,  755,  755,  752,  752,  752,  597,  600,
+      600,  600,  757,  757,  757,  750,  820,  820,  750,  754,
+      754,  754,  600,  600,  600,  780,  865,  755,  780,  785,
+      785,  785,  866,  781,  781,  781,  867,  757,  862,  600,
+      600,  600,  600,  826,  826,  826,  600,  827,  827,  600,
+      854,  854,  600,  751,  862,  600,  651,  651,  651,  752,
+      855,  855,  782,  782,  782,  857,  651,  868,  651,  651,
+      651,  651,  869,  781,  857,  754,  781,  870,  783,  783,
+      783,  871,  651,  654,  654,  654,  873,  840,  840,  840,
 
-      571,  741,  759,  571,  753,  753,  571,  516,  539,  539,
-      539,  645,  645,  645,  698,  698,  698,  591,  591,  591,
-      736,  539,  539,  539,  572,  572,  770,  770,  572,  736,
-      592,  592,  592,  732,  732,  732,  539,  539,  539,  539,
-      758,  651, 1037,  539,  778,  778,  539,  775,  803,  539,
-      758,  539,  576,  576,  576,  591,  591,  775,  591,  604,
-      604,  604,  776,  803,  645,  576,  576,  576,  592, 1027,
-      776,  592,  631,  631,  631,  592,  632,  632,  632,  830,
-      576,  576,  576,  576,  644,  644,  644,  576,  791,  791,
-      576,  795,  795,  576,  830,  576, 1025,  604,  796,  796,
+      853,  853,  853,  821,  821,  821,  654,  654,  654,  782,
+      876,  877,  782,  878,  879,  782,  822,  822,  822,  881,
+      823,  823,  823,  654,  654,  654,  654,  783,  783,  883,
+      654,  783,  884,  654,  885,  886,  654,  887,  888,  654,
+      701,  701,  701,  821,  889,  891,  821,  824,  824,  824,
+      701,  840,  701,  701,  701,  701,  822,  823,  892,  822,
+      823,  893,  894,  823,  898,  898,  701,  753,  753,  753,
+      899,  899,  830,  830,  830,  900,  902,  753,  903,  753,
+      753,  753,  753,  832,  832,  832,  824,  824,  904,  905,
+      824,  907,  909,  753,  787,  787,  787,  830,  897,  897,
 
-      604,  647,  647,  647,  660,  660,  660,  752,  752,  752,
-      631,  631,  604,  631,  632,  798, 1024,  632,  769,  769,
-      769,  632,  644,  825,  798,  644,  790,  790,  790,  794,
-      794,  794,  825,  661,  661,  661,  808,  644, 1023,  663,
-      663,  663,  660,  842,  808,  660,  664,  664,  664,  660,
-      665,  665,  665,  842,  647,  652,  652,  652,  835,  687,
-      687,  687,  817,  817,  817,  652,  835,  652,  652,  652,
-      652,  661,  818,  818,  661, 1022,  661,  663, 1020,  652,
-      663,  688,  688,  688,  664,  665,  899,  664,  665,  822,
-      822,  665,  663,  690,  690,  690,  899,  687,  854,  664,
+      897,  834,  834,  834,  851,  851,  851,  787,  787,  787,
+      852,  852,  852,  901,  906,  915,  916,  917,  918,  864,
+      864,  864,  901,  919,  787,  787,  787,  787,  922,  923,
+      906,  787,  924,  925,  787,  926,  927,  787,  928,  832,
+      787,  828,  828,  828,  851,  851,  929,  851,  932,  932,
+      852,  939,  940,  852,  828,  828,  828,  834,  852,  864,
+      941,  944,  864,  895,  895,  895,  948,  896,  896,  896,
+      952,  828,  828,  828,  828,  864,  954,  936,  828,  936,
+      955,  828,  956,  957,  828,  958,  960,  828,  908,  908,
+      908,  910,  910,  910,  913,  913,  913,  920,  920,  920,
 
-      687,  823,  823,  665,  687,  841,  691,  691,  691,  841,
-      692,  692,  692,  854,  709,  709,  709,  846,  846,  688,
-      847,  847,  688,  849,  688,  857,  857,  777,  777,  777,
-      992,  690,  849,  986,  690,  743,  743,  743,  821,  821,
-      821,  845,  845,  845,  691,  692,  690,  691,  692,  866,
-      866,  692,  709,  874,  874,  709,  984,  709,  877,  691,
-      725,  725,  725,  692,  700,  700,  700,  877,  805,  805,
-      805,  875,  875,  743,  885,  885,  743,  700,  700,  700,
-      777,  832,  832,  832,  837,  837,  837,  983,  743,  751,
-      751,  751,  700,  700,  700,  700,  894,  894,  725,  700,
+      930,  930,  930,  895,  895,  961,  895,  896,  964,  964,
+      896,  968,  971,  968,  972,  896,  973,  931,  931,  931,
+      974,  977,  977,  977,  978,  978,  981,  982,  908,  984,
+      985,  908,  933,  933,  933,  986,  934,  934,  934,  987,
+      930,  988,  991,  930,  908,  992,  995,  910,  930,  997,
+      913,  920,  921,  921,  921,  993,  998,  931,  999,  993,
+      931, 1002,  921,  931,  921,  921,  921,  921,  935,  935,
+      935, 1004,  933,  994, 1005,  933,  934, 1006,  921,  934,
+      962,  962,  962, 1007,  994, 1010, 1011, 1014,  933,  963,
+      963,  963,  934,  965,  965,  965, 1012,  966,  966,  966,
 
-      982,  725,  700,  725,  981,  700,  805,  700,  710,  710,
-      710,  856,  856,  856,  882,  768,  768,  768,  710,  832,
-      710,  710,  710,  710,  843,  843,  843,  751,  979,  882,
-      751,  966,  710,  900,  779,  779,  779,  837,  789,  789,
-      789,  900,  780,  780,  780,  964,  710,  903,  903,  710,
-      726,  726,  726,  768,  911,  911,  768,  865,  865,  865,
-      726,  963,  726,  726,  726,  726,  873,  873,  873,  884,
-      884,  884,  779,  962,  726,  779,  789,  843,  961,  789,
-      780,  915,  915,  780,  816,  816,  816,  779,  726,  916,
-      916,  726,  749,  749,  749,  780,  927,  927,  781,  781,
+     1012,  967,  967,  967, 1013,  935, 1015, 1016,  935, 1019,
+     1019,  935, 1018, 1018, 1018, 1013, 1020, 1020, 1021, 1023,
+      962, 1022, 1024,  962,  935, 1025, 1026, 1027,  962,  963,
+     1022, 1028,  963,  965, 1030,  963,  965,  966,  967, 1032,
+      966,  967, 1033, 1027,  967, 1034, 1038, 1038, 1038,  965,
+     1039, 1039, 1042,  966,  989,  989,  989,  967,  979,  979,
+      979, 1043, 1046, 1044, 1048, 1050, 1045, 1051, 1008, 1008,
+     1008,  979,  979,  979, 1044, 1045, 1052, 1053, 1057, 1057,
+     1057, 1029, 1029, 1029, 1061, 1037, 1037, 1037,  979,  979,
+      979,  979, 1058, 1058,  989,  979, 1062,  989,  979, 1063,
 
-      781,  959,  749,  951,  749,  749,  749,  749,  858,  858,
-      858,  859,  859,  859,  918,  942,  749,  750,  750,  750,
-      923,  950,  816,  918,  942,  816,  952,  750,  948,  750,
-      750,  750,  750,  781,  952,  923,  781,  935,  935,  781,
-      946,  750,  754,  754,  754,  945,  858,  939,  939,  859,
-      944,  781,  864,  864,  864,  754,  754,  754,  943,  860,
-      860,  860,  940,  940,  886,  886,  886,  893,  893,  893,
-      754,  754,  754,  754,  901,  901,  901,  754,  957,  957,
-      754,  958,  958,  754,  941,  754,  766,  766,  766,  947,
-      864,  968,  968,  864,  860,  924,  766,  860,  766,  766,
+      989,  979, 1066, 1064,  979,  990,  990,  990, 1008, 1067,
+     1063, 1008, 1064, 1074, 1008,  990, 1087,  990,  990,  990,
+      990, 1029, 1068, 1068, 1029, 1037, 1089, 1072, 1037, 1072,
+     1090,  990, 1091, 1056, 1056, 1056, 1092, 1029, 1081, 1081,
+     1065, 1065, 1065, 1085, 1085,  990, 1086, 1086,  990, 1009,
+     1009, 1009, 1080, 1080, 1080, 1084, 1084, 1084, 1088, 1009,
+     1094, 1009, 1009, 1009, 1009, 1093, 1096, 1088, 1097, 1069,
+     1069, 1069, 1100, 1056, 1101, 1009, 1056, 1095, 1095, 1095,
+     1103, 1093, 1098, 1070, 1070, 1070, 1108, 1108, 1108, 1009,
+     1115, 1098, 1009, 1035, 1035, 1035, 1065, 1109, 1109, 1117,
 
-      766,  766,  886,  922,  947,  864,  887,  887,  887,  921,
-      766,  767,  767,  767,  904,  904,  904,  888,  888,  888,
-      920,  767,  919,  767,  767,  767,  767,  901,  905,  905,
-      905,  892,  892,  892,  960,  767,  771,  771,  771,  910,
-      910,  910,  965,  960,  887,  909,  909,  909,  917,  771,
-      771,  771,  888,  977,  977,  888,  898,  965,  906,  906,
-      906,  914,  914,  914,  771,  771,  771,  771,  897,  892,
-      985,  771,  892,  889,  771,  978,  978,  771,  883,  771,
-      787,  787,  787,  909,  892,  985,  909,  928,  928,  928,
-      787,  881,  787,  787,  787,  787,  906,  906,  909,  925,
+     1071, 1071, 1071, 1035, 1116, 1035, 1035, 1035, 1035, 1069,
+     1113, 1113, 1069, 1116, 1079, 1079, 1079, 1095, 1118, 1035,
+     1036, 1036, 1036, 1070, 1119, 1069, 1070, 1107, 1107, 1107,
+     1036, 1120, 1036, 1036, 1036, 1036, 1122, 1071, 1124, 1070,
+     1071, 1114, 1114, 1071, 1125, 1130, 1036, 1040, 1040, 1040,
+     1112, 1112, 1112, 1121, 1079, 1132, 1071, 1079, 1133, 1126,
+     1040, 1040, 1040, 1123, 1123, 1123, 1141, 1107, 1126, 1121,
+     1107, 1128, 1128, 1128, 1143, 1135, 1144, 1040, 1040, 1040,
+     1040, 1134, 1139, 1139, 1040, 1134, 1135, 1040, 1140, 1140,
+     1040, 1145, 1146, 1040, 1054, 1054, 1054, 1136, 1136, 1136,
 
-      925,  925,  988,  988,  787,  792,  792,  792,  929,  929,
-      929,  934,  934,  934,  880,  930,  930,  930,  792,  792,
-      792,  938,  938,  938,  956,  956,  956,  933,  933,  933,
-      967,  967,  967,  792,  792,  792,  792,  925,  980,  879,
-      792,  997,  997,  792, 1001, 1001,  792,  980,  792,  809,
-      809,  809,  925,  930,  930,  949,  949,  949,  878,  809,
-      876,  809,  809,  809,  809,  933, 1006, 1006,  933,  954,
-      954,  954,  869,  809,  861,  969,  969,  969, 1014, 1014,
-      933, 1018, 1018,  967,  809,  814,  814,  814,  855,  970,
-      970,  970,  853,  949,  852,  814,  851,  814,  814,  814,
+     1138, 1138, 1138, 1123, 1054, 1142, 1054, 1054, 1054, 1054,
+     1147, 1148, 1150, 1150, 1142, 1149, 1149, 1149, 1154, 1162,
+     1054, 1055, 1055, 1055, 1159, 1159, 1147, 1128, 1151, 1151,
+     1151, 1055, 1169, 1055, 1055, 1055, 1055, 1152, 1152, 1152,
+     1158, 1158, 1158, 1157, 1157, 1157, 1171, 1055, 1059, 1059,
+     1059, 1167, 1167, 1136, 1166, 1166, 1166, 1168, 1168, 1172,
+     1170, 1059, 1059, 1059, 1153, 1153, 1153, 1173, 1151, 1170,
+     1174, 1175, 1176, 1177, 1177, 1177, 1182, 1152, 1059, 1059,
+     1059, 1059, 1191, 1157, 1192, 1059, 1157, 1175, 1059, 1178,
+     1178, 1059, 1187, 1187, 1059, 1077, 1077, 1077, 1196, 1157,
 
-      814,  976,  976,  976,  987,  987,  987,  954,  949,  814,
-      819,  819,  819,  969,  954,  996,  996,  996, 1019, 1019,
-      974,  974,  974,  819,  819,  819,  850,  970,  969, 1026,
-     1002, 1002, 1002,  848, 1021,  971,  971,  971,  819,  819,
-      819,  819,  970, 1021, 1026,  819, 1035, 1035,  819, 1036,
-     1036,  819,  840,  819,  836,  836,  836,  987,  974,  989,
-      989,  989, 1038,  839,  836,  974,  836,  836,  836,  836,
-      971, 1038, 1043,  971, 1013, 1013, 1013,  834,  836,  833,
-      990,  990,  990, 1002,  991,  991,  991, 1043,  971,  836,
-      862,  862,  862,  995,  995,  995,  831,  989, 1046, 1046,
+     1211, 1153, 1213, 1193, 1153, 1077, 1194, 1077, 1077, 1077,
+     1077, 1179, 1179, 1179, 1193, 1194, 1180, 1180, 1180, 1197,
+     1197, 1077, 1082, 1082, 1082, 1214, 1181, 1181, 1181, 1186,
+     1186, 1186, 1185, 1185, 1185, 1082, 1082, 1082, 1195, 1195,
+     1195, 1198, 1198, 1198, 1199, 1199, 1199, 1204, 1204, 1204,
+     1215, 1179, 1082, 1082, 1082, 1082, 1180, 1205, 1205, 1082,
+     1209, 1209, 1082, 1181, 1216, 1082, 1181, 1218, 1082, 1099,
+     1099, 1099, 1185, 1210, 1210, 1185, 1208, 1208, 1208, 1099,
+     1217, 1099, 1099, 1099, 1099, 1200, 1200, 1200, 1185, 1203,
+     1203, 1203, 1212, 1235, 1195, 1099, 1217, 1219, 1219, 1219,
 
-      862,  829,  862,  862,  862,  862, 1000, 1000, 1000, 1003,
-     1003, 1003,  989,  828,  862,  863,  863,  863,  990,  991,
-     1054, 1054,  991,  827,  826,  863,  824,  863,  863,  863,
-      863,  995,  812,  990,  995,  811,  810,  991,  807,  863,
-      867,  867,  867,  806, 1000,  804,  995,  802,  801, 1000,
-     1004, 1004, 1004,  867,  867,  867,  800, 1005, 1005, 1005,
-      799,  797, 1003, 1007, 1007, 1007,  784,  774,  867,  867,
-      867,  867, 1008, 1008, 1008,  867,  773,  765,  867,  764,
-      763,  867,  761,  867,  890,  890,  890,  760, 1004, 1004,
-     1009, 1009, 1009,  757,  890, 1005,  890,  890,  890,  890,
+     1237, 1212, 1221, 1221, 1229, 1229, 1099, 1105, 1105, 1105,
+     1222, 1222, 1222, 1223, 1223, 1223, 1238, 1105, 1239, 1105,
+     1105, 1105, 1105, 1233, 1233, 1200, 1200, 1234, 1234, 1203,
+     1240, 1242, 1203, 1105, 1110, 1110, 1110, 1219, 1224, 1224,
+     1224, 1228, 1228, 1228, 1241, 1203, 1236, 1110, 1110, 1110,
+     1232, 1232, 1232, 1219, 1244, 1236, 1245, 1227, 1227, 1227,
+     1241, 1243, 1243, 1243, 1110, 1110, 1110, 1110, 1248, 1252,
+     1252, 1110, 1253, 1253, 1110, 1246, 1254, 1110, 1224, 1224,
+     1110, 1127, 1127, 1127, 1246, 1256, 1257, 1249, 1249, 1249,
+     1255, 1127, 1258, 1127, 1127, 1127, 1127, 1227, 1259, 1255,
 
-     1005,  756,  748, 1004, 1012, 1012, 1012,  747,  890,  891,
-      891,  891, 1017, 1017, 1017,  746, 1007,  744,  742,  891,
-      740,  891,  891,  891,  891, 1008,  739,  738, 1009, 1009,
-     1028, 1028, 1028,  891,  895,  895,  895, 1034, 1034, 1034,
-      737,  735, 1012, 1009,  731, 1012,  728,  895,  895,  895,
-      727,  724,  723, 1045, 1045, 1045,  722, 1012, 1047, 1047,
-     1047,  721,  895,  895,  895,  895,  718,  717, 1028,  895,
-      715,  712,  895,  711,  708,  895,  707,  895,  907,  907,
-      907,  706,  705, 1028, 1030, 1030, 1030,  703,  907,  702,
-      907,  907,  907,  907,  695,  686, 1047,  685, 1065, 1065,
+     1227, 1243, 1251, 1251, 1251, 1261, 1260, 1127, 1262, 1262,
+     1262, 1263, 1263, 1227, 1264, 1264, 1264, 1243, 1127, 1155,
+     1155, 1155, 1260, 1265, 1265, 1265, 1274, 1249, 1276, 1155,
+     1275, 1155, 1155, 1155, 1155, 1249, 1269, 1269, 1269, 1275,
+     1266, 1266, 1266, 1272, 1272, 1155, 1156, 1156, 1156, 1271,
+     1271, 1271, 1273, 1273, 1264, 1277, 1156, 1278, 1156, 1156,
+     1156, 1156, 1279, 1265, 1262, 1280, 1281, 1282, 1282, 1282,
+     1264, 1287, 1156, 1160, 1160, 1160, 1269, 1266, 1315, 1265,
+     1266, 1280, 1283, 1283, 1269, 1317, 1160, 1160, 1160, 1284,
+     1284, 1284, 1291, 1291, 1291, 1318, 1266, 1285, 1285, 1285,
 
-     1065,  683,  907,  912,  912,  912, 1045,  682,  681,  679,
-      675, 1047,  671,  669,  668,  659,  912,  912,  912,  658,
-      657,  656, 1030,  655,  654,  653,  650,  649,  643, 1030,
-      641,  912,  912,  912,  912,  640,  639, 1030,  912, 1065,
-      638,  912,  636,  630,  912,  629,  912,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  926,  926,  926,  926,  628,
+     1290, 1290, 1290, 1160, 1160, 1160, 1160, 1292, 1292, 1319,
+     1160, 1296, 1296, 1160, 1301, 1301, 1160, 1309, 1309, 1160,
+     1183, 1183, 1183, 1282, 1313, 1313, 1286, 1286, 1286, 1284,
+     1183, 1320, 1183, 1183, 1183, 1183, 1322, 1285, 1314, 1314,
+     1290, 1332, 1321, 1290, 1334, 1284, 1183, 1184, 1184, 1184,
+     1295, 1295, 1295, 1285, 1335, 1316, 1290, 1184, 1321, 1184,
+     1184, 1184, 1184, 1286, 1316, 1336, 1286, 1337, 1297, 1297,
+     1297, 1330, 1330, 1184, 1188, 1188, 1188, 1331, 1331, 1300,
+     1300, 1300, 1286, 1298, 1298, 1298, 1333, 1188, 1188, 1188,
+     1295, 1308, 1308, 1308, 1339, 1333, 1295, 1299, 1299, 1299,
 
-      926,  926,  926,  931,  931,  931,  626, 1032, 1032, 1032,
-      625,  624,  623,  931,  622,  931,  931,  931,  931,  621,
-      619,  617,  616, 1048, 1048, 1048,  615,  931,  936,  936,
-      936,  614,  611,  609,  608,  606,  605, 1051, 1051, 1051,
-      603,  936,  936,  936,  601, 1032,  600,  599, 1055, 1055,
-     1055,  598, 1032, 1049, 1049, 1049,  936,  936,  936,  936,
-     1032, 1048,  596,  936,  590,  589,  936,  587,  586,  936,
-      585,  936,  953,  953,  953, 1051, 1048, 1056, 1056, 1056,
-     1051,  584,  953,  583,  953,  953,  953,  953, 1049,  581,
-     1051, 1049,  580,  567,  566,  565,  953,  564, 1053, 1053,
+     1302, 1302, 1302, 1386, 1188, 1188, 1188, 1188, 1303, 1303,
+     1303, 1188, 1387, 1338, 1188, 1341, 1341, 1188, 1396, 1300,
+     1188, 1201, 1201, 1201, 1297, 1300, 1304, 1304, 1304, 1338,
+     1397, 1201, 1398, 1201, 1201, 1201, 1201, 1299, 1299, 1298,
+     1312, 1312, 1312, 1329, 1329, 1329, 1399, 1201, 1206, 1206,
+     1206, 1349, 1349, 1299, 1400, 1401, 1302, 1402, 1404, 1405,
+     1406, 1206, 1206, 1206, 1303, 1407, 1304, 1304, 1408, 1409,
+     1410, 1411, 1412, 1414, 1415,  811,  810,  809, 1206, 1206,
+     1206, 1206, 1304,  808,  805, 1206,  804,  803, 1206,  802,
+      800, 1206,  799,  798, 1206, 1220, 1220, 1220, 1220, 1220,
 
-     1053, 1055, 1061, 1061, 1061,  563, 1049,  953,  993,  993,
-      993, 1057, 1057, 1057, 1062, 1062, 1062,  562,  993,  561,
-      993,  993,  993,  993, 1060, 1060, 1060, 1063, 1063, 1063,
-     1056,  560,  993,  994,  994,  994, 1053,  559,  558,  555,
-     1061, 1053,  554,  994,  553,  994,  994,  994,  994, 1057,
-     1057, 1053, 1062,  552,  550, 1061,  549,  994,  998,  998,
-      998,  548, 1060,  547, 1057, 1063,  546, 1062,  545, 1060,
-     1063,  998,  998,  998,  544,  543,  542, 1060,  541,  528,
-     1063,  526,  523,  522,  521,  520,  998,  998,  998,  998,
-      519,  518,  517,  998,  512,  510,  998,  509,  508,  998,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+     1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220, 1220,
+      797, 1220, 1220, 1220, 1225, 1225, 1225,  796,  795, 1307,
+     1307, 1307,  794,  793, 1225,  792, 1225, 1225, 1225, 1225,
+     1323, 1323, 1323, 1360, 1360, 1360,  791, 1325, 1325, 1325,
+     1225, 1230, 1230, 1230,  790,  789,  775,  773, 1340, 1340,
+     1340, 1327, 1327, 1327, 1230, 1230, 1230,  769,  768, 1307,
 
-      507,  998, 1010, 1010, 1010,  505,  501,  500,  499,  498,
-      497,  496, 1010,  495, 1010, 1010, 1010, 1010,  494,  493,
-      492,  491,  490,  488,  487,  486, 1010, 1015, 1015, 1015,
-      485,  484,  483,  482,  480,  479,  478,  477,  476,  475,
-     1015, 1015, 1015,  466,  464,  463,  462,  461,  459,  455,
-      454,  453,  452,  451,  450, 1015, 1015, 1015, 1015,  449,
-      448,  446, 1015,  444,  443, 1015,  442,  441, 1015,  440,
-     1015, 1029, 1029, 1029,  433,  431,  430,  429,  428,  427,
-      426, 1029,  425, 1029, 1029, 1029, 1029,  424,  423,  422,
-      421,  420,  419,  418,  417, 1029,  416,  415,  413,  412,
+      767,  766, 1307,  765,  764, 1342, 1342, 1342,  763,  762,
+     1323, 1230, 1230, 1230, 1230, 1307, 1360, 1325, 1230,  761,
+      760, 1230,  759,  756, 1230, 1325, 1323, 1230, 1247, 1247,
+     1247, 1327,  749, 1325, 1343, 1343, 1343,  747, 1247, 1327,
+     1247, 1247, 1247, 1247, 1340, 1342,  746, 1327, 1344, 1344,
+     1344,  745,  744,  742, 1247,  738, 1346, 1346, 1346,  737,
+      736, 1342, 1350, 1350, 1350, 1247, 1288, 1288, 1288, 1348,
+     1348, 1348,  735,  734, 1343,  733, 1288,  731, 1288, 1288,
+     1288, 1288, 1351, 1351, 1351, 1344,  730,  729, 1344,  728,
+     1343,  727, 1288, 1289, 1289, 1289, 1346,  726,  725, 1352,
 
-      411,  410,  409,  408,  407,  406,  405,  403,  401, 1029,
-     1031, 1031, 1031,  400,  399,  398,  396,  392,  385,  384,
-     1031,  383, 1031, 1031, 1031, 1031,  382,  381,  380,  379,
-      378,  377,  374,  373, 1031,  372,  370,  369,  368,  366,
-      365,  364,  363,  362,  361,  359,  358,  357, 1031, 1050,
-     1050, 1050,  356,  355,  354,  353,  352,  351,  350, 1050,
-      348, 1050, 1050, 1050, 1050,  347,  346,  345,  344,  343,
-      342,  341,  340, 1050,  339,  330,  329,  327,  326,  325,
-      324,  323,  322,  321,  320,  319,  317, 1050, 1052, 1052,
-     1052,  316,  313,  312,  311,  310,  308,  307, 1052,  306,
+     1352, 1352, 1346, 1289, 1344, 1289, 1289, 1289, 1289, 1348,
+      724,  722, 1346,  721,  720, 1348,  719,  718, 1350, 1289,
+     1293, 1293, 1293,  717,  716, 1348,  714,  713,  712,  711,
+     1355, 1355, 1355, 1293, 1293, 1293,  710,  709, 1351, 1352,
+     1352,  707,  702, 1357, 1357, 1357,  697,  695,  694,  693,
+     1293, 1293, 1293, 1293,  692, 1352,  690, 1293,  686,  685,
+     1293,  684,  683, 1293,  682,  681, 1293, 1305, 1305, 1305,
+     1355,  680, 1358, 1358, 1358,  679,  678, 1305, 1355, 1305,
+     1305, 1305, 1305, 1357,  677,  675, 1355,  673,  672,  671,
+      670,  669,  668, 1305, 1310, 1310, 1310,  667,  666, 1357,
 
-     1052, 1052, 1052, 1052,  305,  303,  302,  301,  300,  299,
-      297,  296, 1052,  295,  294,  293,  292,  291,  290,  289,
-      287,  286,  285,  284,  283,  282, 1052, 1058, 1058, 1058,
-      280,  279,  278,  277,  276,  275,  274, 1058,  273, 1058,
-     1058, 1058, 1058,  272,  271,  270,  268,  267,  266,  265,
-      264, 1058,  263,  260,  259,  258,  257,  256,  254,  253,
-      252,  250,  249,  248,  247, 1058,  246,  245,  244,  243,
-      242,  240,  238,  237,  236,  235,  234,  233,  232,  231,
-     1058, 1059, 1059, 1059,  230,  229,  228,  226,  225,  224,
-      223, 1059,  221, 1059, 1059, 1059, 1059,  218,  215,  214,
+      665,  664,  663,  662,  661,  658,  650, 1310, 1310, 1310,
+      648,  647, 1358,  646,  645,  644,  643,  642, 1358,  641,
+      640,  639,  638,  637, 1310, 1310, 1310, 1310, 1358,  636,
+      635, 1310,  634,  633, 1310,  632,  631, 1310,  630,  629,
+     1310, 1324, 1324, 1324,  627,  626,  625,  624,  623,  622,
+      621, 1324,  620, 1324, 1324, 1324, 1324,  619,  618,  617,
+      615,  613,  612,  611,  610,  608,  604, 1324,  603,  596,
+      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
+      583, 1324, 1326, 1326, 1326,  582,  581,  580,  579,  578,
+      577,  576, 1326,  575, 1326, 1326, 1326, 1326,  574,  572,
 
-      213,  212,  210,  209,  208, 1059,  205,  204,  203,  202,
-      200,  198,  197,  196,  195,  191,  190,  189,  188, 1059,
-      187,  186,  185,  184,  183,  182,  181,  176,  174,  169,
-      166,  165,  156,  153, 1059, 1064, 1064, 1064,  152,  149,
-      147,  145,  143,  141,  127, 1064,  126, 1064, 1064, 1064,
-     1064,  113,   95,   92,   85,   77,   67,   64,   63, 1064,
-       61,   50,   43,   40,   39,   32,   31,    0,    0,    0,
-        0,    0,    0, 1064,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0, 1064, 1067,
-     1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067,
+      571,  570,  569,  568,  567,  566,  565,  564, 1326,  562,
+      561,  560,  558,  557,  556,  555,  554,  553,  552,  551,
+      550,  547, 1326, 1345, 1345, 1345,  546,  545,  544,  543,
+      542,  541,  540, 1345,  539, 1345, 1345, 1345, 1345,  538,
+      536,  535,  534,  533,  532,  531,  530,  529,  527, 1345,
+      526,  517,  516,  515,  513,  512,  511,  510,  509,  508,
+      507,  506,  505, 1345, 1347, 1347, 1347,  504,  503,  501,
+      499,  498,  496,  495, 1347,  494, 1347, 1347, 1347, 1347,
+      493,  492,  491,  490,  489,  486,  485,  484,  483,  482,
+     1347,  481,  480,  479,  478,  477,  476,  475,  473,  472,
 
-     1067, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068,
-     1068, 1068, 1068, 1069, 1069, 1069, 1069, 1069, 1069, 1069,
-     1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070, 1070,
-     1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071, 1071,
-     1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1071, 1072,
-     1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072,
-     1072, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073,
-     1073, 1073, 1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074,
-     1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075, 1075,
-     1075, 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076,
+      470,  469,  468,  467, 1347, 1353, 1353, 1353,  465,  464,
+      463,  462,  461,  460,  459, 1353,  458, 1353, 1353, 1353,
+     1353,  457,  455,  454,  453,  452,  451,  450,  449,  448,
+      447, 1353,  445,  444,  443,  442,  441,  440,  439,  437,
+      436,  435,  434,  433,  432, 1353,  431,  430,  429,  428,
+      427,  426,  425,  423,  422,  421,  420,  419,  418,  417,
+      416, 1353, 1354, 1354, 1354,  415,  414,  413,  412,  411,
+      410,  409, 1354,  408, 1354, 1354, 1354, 1354,  407,  406,
+      404,  403,  402,  401,  399,  398,  397,  396, 1354,  395,
+      394,  393,  392,  391,  389,  388,  387,  385,  384,  382,
 
-     1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1077,
-     1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077,
-     1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078,
-     1078, 1078, 1078, 1079, 1079, 1079, 1079, 1079, 1079, 1079,
-     1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080,
-     1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 1081, 1081,
-     1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1082,
-     1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082, 1082,
-     1082, 1083,    0,    0, 1083,    0, 1083, 1083, 1083, 1083,
-     1083, 1084,    0,    0, 1084, 1084, 1084, 1084, 1084, 1084,
+      381,  379, 1354,  378,  377,  376,  375,  374,  373,  372,
+      371,  369,  367,  366,  365,  364,  363,  362, 1354, 1356,
+     1356, 1356,  361,  360,  359,  358,  357,  356,  355, 1356,
+      354, 1356, 1356, 1356, 1356,  352,  351,  350,  349,  348,
+      346,  343,  340,  339,  338, 1356,  337,  336,  335,  334,
+      333,  332,  331,  330,  328,  327,  326,  325,  323, 1356,
+      322,  321,  319,  318,  317,  316,  314,  313,  312,  311,
+      310,  309,  305,  304,  303, 1356, 1359, 1359, 1359,  302,
+      301,  300,  299,  297,  296,  295, 1359,  294, 1359, 1359,
+     1359, 1359,  292,  290,  289,  288,  287,  286,  284,  281,
 
-     1084, 1085, 1085,    0, 1085, 1085, 1085, 1085, 1085, 1085,
-     1085, 1085, 1085, 1086,    0,    0,    0, 1086, 1087,    0,
-        0, 1087, 1087, 1087, 1087, 1087, 1087, 1087,    0, 1087,
-     1088,    0, 1088, 1088, 1088, 1089, 1089, 1092,    0,    0,
-     1092, 1092, 1092, 1092, 1092, 1092, 1092, 1093, 1093, 1093,
-     1093, 1093, 1093, 1093, 1093, 1093,    0, 1093, 1093, 1094,
-     1094, 1094, 1094, 1094, 1094, 1094, 1094,    0, 1094, 1094,
-     1094, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095, 1095,
-     1095, 1096,    0,    0,    0, 1096, 1097, 1097, 1098, 1098,
-     1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098, 1098,
+      280,  279, 1359,  278,  277,  276,  275,  274,  273,  272,
+      271,  270,  265,  263,  262,  260, 1359,  259,  258,  257,
+      255,  254,  252,  251,  250,  249,  247,  243,  239,  237,
+      235,  233, 1359, 1362, 1362, 1362, 1362, 1362, 1362, 1362,
+     1362, 1362, 1362, 1362, 1362, 1363, 1363, 1363, 1363, 1363,
+     1363, 1363, 1363, 1363, 1363, 1363, 1363, 1364, 1364, 1364,
+     1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1365,
+     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
+     1365, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366, 1366,
+     1366, 1366, 1366, 1367, 1367, 1367, 1367, 1367, 1367, 1367,
 
-     1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113, 1113,
-        0, 1113, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066,
-     1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066, 1066
+     1367, 1367, 1367, 1367, 1367, 1368, 1368, 1368, 1368, 1368,
+     1368, 1368, 1368, 1368, 1368, 1368, 1368, 1369, 1369, 1369,
+     1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1370,
+     1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
+     1370, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371,
+     1371, 1371, 1371, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
+     1372, 1372, 1372, 1372, 1372, 1373, 1373, 1373, 1373, 1373,
+     1373, 1373, 1373, 1373, 1373, 1373, 1373, 1374, 1374, 1374,
+     1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1375,
+     1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375,
+
+     1375, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376, 1376,
+     1376, 1376, 1376, 1377, 1377, 1377, 1377, 1377, 1377, 1377,
+     1377, 1377, 1377, 1377, 1377, 1378, 1378, 1378, 1378, 1378,
+     1378, 1378, 1378, 1378, 1378, 1378, 1378, 1379,  232,  231,
+     1379,  230, 1379, 1379, 1379, 1379, 1379, 1380,  229,  227,
+     1380, 1380, 1380, 1380, 1380, 1380, 1380, 1381, 1381,  226,
+     1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1381, 1382,
+      224,  222,  221, 1382, 1383,  220,  219, 1383, 1383, 1383,
+     1383, 1383, 1383, 1383,  218, 1383, 1384,  216, 1384, 1384,
+     1384, 1385, 1385, 1388,  215,  214, 1388, 1388, 1388, 1388,
+
+     1388, 1388, 1388, 1389,  213,  204, 1389, 1389, 1389, 1389,
+     1389, 1389, 1389, 1390, 1390, 1390, 1390, 1390, 1390, 1390,
+     1390, 1390,  203, 1390, 1390, 1391, 1391, 1391, 1391, 1391,
+     1391, 1391, 1391,  196, 1391, 1391, 1391, 1392, 1392, 1392,
+     1392, 1392, 1392, 1392, 1392, 1392, 1392, 1393,  192,  188,
+      184, 1393, 1394, 1394, 1395, 1395, 1395, 1395, 1395, 1395,
+     1395, 1395, 1395, 1395, 1395, 1395, 1403, 1403, 1403, 1403,
+     1403, 1403, 1403, 1403, 1403,  170, 1403, 1403, 1413, 1413,
+     1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,  169, 1413,
+      167,  161,  160,  159,  157,  156,  155,  154,  153,  151,
+
+      149,  147,  145,  144,  143,  142,  141,  135,  124,  120,
+      117,  114,  109,  108,  103,   93,   89,   82,   80,   78,
+       77,   76,   74,   73,   72,   70,   68,   62,   58,   55,
+       52,   45,   42,   41,   34,   33, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361
+
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1566,13 +1737,15 @@
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "../../../texk/detex/detex-src/detex.l"
+#line 1 "detex.l"
 
-#line 95 "../../../texk/detex/detex-src/detex.l"
+#line 89 "detex.l"
 #undef IGNORE
 
 #define	LaBEGIN		if (fLatex) BEGIN
 #define	IGNORE		if (fSpace && !fWord) putchar(' ')
+#define NOUN		if (fSpace && !fWord && !fReplace) putchar(' '); else {if (fReplace) printf("noun");}
+#define VERBNOUN		if (fReplace) printf(" verbs noun"); /* puts a verb and a noun to make grammar checking work */
 #define	SPACE		if (!fWord) putchar(' ')
 #define	NEWLINE		if (!fWord) putchar('\n')
 #define	LATEX		fLatex=!fForcetex
@@ -1580,8 +1753,11 @@
 #define STRIPARGS(x)	cArgs=x; LaBEGIN LaMacro2
 #define	CITE(x)		if (fLatex && !fCite) KILLARGS(x)
 
+#define NO_MALLOC_DECL
+
 void AddInclude(char *sbFile);
 void ErrorExit(const char *sb1);
+void UsageExit(void);
 void IncludeFile(char *sbFile);
 void InputFile(char *sbFile);
 void SetEnvIgnore(const char *sbEnvList);
@@ -1588,7 +1764,7 @@
 #ifndef KPATHSEA
 void SetInputPaths(void);
 #endif
-void Warning(const char *sb1, const char *sb2); 
+void Warning(const char *sb1, const char *sb2);
 int BeginEnv(const char *sbEnv);
 int EndEnv(const char *sbEnv);
 int InList(char *sbFile);
@@ -1609,7 +1785,7 @@
 char	*rgsbEnvIgnore[MAXENVS];	/* list of environments ignored */
 char	*rgsbIncList[MAXINCLIST];	/* list of includeonly files */
 char	*rgsbInputPaths[MAXINPUTPATHS];	/* list of input paths in order */
-char	sbCurrentEnv[CCHMAXENV];	/* current environment being ignored */
+char	sbCurrentIgnoredEnv[CCHMAXENV];	/* current environment being ignored */
 char	*sbProgName;			/* name we were invoked with */
 #ifndef NOFILE /* might be defined in <sys/param.h> */
 #define NOFILE 256
@@ -1627,7 +1803,12 @@
 int	fCite = 0;			/* flag to echo \cite and \ref args */
 int	fSpace = 0;			/* flag to replace \cs with space */
 int	fForcetex = 0;			/* flag to inhibit latex mode */
+int fShowPictures = 0;  /* flag to show picture names */
+int fReplace = 0;  /* flag to replace envirnments with "noun" */
 
+int currBracesLevel = 0;
+int footnoteLevel = -100;
+
 #ifdef FLEX_SCANNER
 /* flex has contexts for buffers that need to be switched when file changes
  * otherwise output contains imported files in reverse order.  Weird, but
@@ -1641,7 +1822,7 @@
 
  
 
-#line 1645 "../../../texk/detex/detex-src/detex.c"
+#line 1825 "lex.yy.c"
 
 #define INITIAL 0
 #define Define 1
@@ -1657,13 +1838,14 @@
 #define LaEnv 11
 #define LaFormula 12
 #define LaInclude 13
-#define LaMacro 14
-#define LaOptArg 15
-#define LaMacro2 16
-#define LaOptArg2 17
-#define LaVerbatim 18
-#define LaBreak 19
-#define LaPicture 20
+#define LaSubfile 14
+#define LaMacro 15
+#define LaOptArg 16
+#define LaMacro2 17
+#define LaOptArg2 18
+#define LaVerbatim 19
+#define LaBreak 20
+#define LaPicture 21
 
 #ifndef YY_NO_UNISTD_H
 /* Special case for "unistd.h", since it is non-ANSI. We include it way
@@ -1700,7 +1882,7 @@
 
 void yyset_out  (FILE * _out_str  );
 
-yy_size_t yyget_leng (void );
+			int yyget_leng (void );
 
 char *yyget_text (void );
 
@@ -1759,7 +1941,7 @@
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -1783,7 +1965,7 @@
 	else \
 		{ \
 		errno=0; \
-		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
+		while ( (result = (int) fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
 			{ \
 			if( errno != EINTR) \
 				{ \
@@ -1879,9 +2061,9 @@
 		}
 
 	{
-#line 182 "../../../texk/detex/detex-src/detex.l"
+#line 187 "detex.l"
 
-#line 1885 "../../../texk/detex/detex-src/detex.c"
+#line 2066 "lex.yy.c"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -1908,13 +2090,13 @@
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 1067 )
+				if ( yy_current_state >= 1362 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+			yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 			++yy_cp;
 			}
-		while ( yy_current_state != 1066 );
+		while ( yy_current_state != 1361 );
 		yy_cp = (yy_last_accepting_cpos);
 		yy_current_state = (yy_last_accepting_state);
 
@@ -1936,25 +2118,25 @@
 
 case 1:
 YY_RULE_SETUP
-#line 183 "../../../texk/detex/detex-src/detex.l"
+#line 188 "detex.l"
 /* ignore comments */	;
 	YY_BREAK
 case 2:
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 185 "../../../texk/detex/detex-src/detex.l"
+#line 190 "detex.l"
 {LATEX; IGNORE;}
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 187 "../../../texk/detex/detex-src/detex.l"
+#line 192 "detex.l"
 /* environment start */	{LaBEGIN LaBegin; IGNORE;}
 	YY_BREAK
 case 4:
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 189 "../../../texk/detex/detex-src/detex.l"
-{   if (BeginEnv("verbatim"))
+#line 194 "detex.l"
+{ if (BeginEnv("verbatim"))
 							BEGIN LaEnv;
 						    else
 							BEGIN LaVerbatim;
@@ -1964,675 +2146,854 @@
 case 5:
 /* rule 5 can match eol */
 YY_RULE_SETUP
-#line 196 "../../../texk/detex/detex-src/detex.l"
+#line 201 "detex.l"
 /* verbatim mode */	{BEGIN Normal; IGNORE;}
 	YY_BREAK
 case 6:
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 197 "../../../texk/detex/detex-src/detex.l"
+#line 202 "detex.l"
 ECHO;
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 198 "../../../texk/detex/detex-src/detex.l"
+#line 203 "detex.l"
 ECHO;
 	YY_BREAK
 case 8:
 /* rule 8 can match eol */
 YY_RULE_SETUP
-#line 200 "../../../texk/detex/detex-src/detex.l"
+#line 205 "detex.l"
 { KILLARGS(1);
-						  if (BeginEnv("minpage"))
+						  if (BeginEnv("minipage"))
 							BEGIN LaEnv;
 						  else
-							BEGIN Normal;
+							BEGIN LaMacro; /* Normal; */
 						  IGNORE;
 						}
 	YY_BREAK
 case 9:
+/* rule 9 can match eol */
 YY_RULE_SETUP
-#line 208 "../../../texk/detex/detex-src/detex.l"
-{   if (BeginEnv(yytext))
+#line 213 "detex.l"
+{
+						  if (BeginEnv("table"))
 							BEGIN LaEnv;
-						    else
+						  else
 							BEGIN Normal;
-						    IGNORE;
+						  IGNORE;
 						}
 	YY_BREAK
 case 10:
 /* rule 10 can match eol */
 YY_RULE_SETUP
-#line 214 "../../../texk/detex/detex-src/detex.l"
-NEWLINE;
+#line 221 "detex.l"
+{
+						  if (BeginEnv("figure"))
+							BEGIN LaEnv;
+						  else
+							BEGIN Normal;
+						  IGNORE;
+						}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 215 "../../../texk/detex/detex-src/detex.l"
-;
+#line 229 "detex.l"
+{ if (BeginEnv(yytext))
+							BEGIN LaEnv;
+						    else
+							BEGIN Normal;
+						    IGNORE;
+						}
 	YY_BREAK
+/*<LaBegin>"\n"					NEWLINE;*/
 case 12:
 YY_RULE_SETUP
-#line 217 "../../../texk/detex/detex-src/detex.l"
-/* absorb some environments */	{LaBEGIN LaEnd; IGNORE;}
+#line 236 "detex.l"
+;
 	YY_BREAK
 case 13:
-/* rule 13 can match eol */
 YY_RULE_SETUP
-#line 218 "../../../texk/detex/detex-src/detex.l"
-NEWLINE;
+#line 238 "detex.l"
+/* absorb some environments */	{LaBEGIN LaEnd; IGNORE;}
 	YY_BREAK
 case 14:
+/* rule 14 can match eol */
 YY_RULE_SETUP
-#line 219 "../../../texk/detex/detex-src/detex.l"
-;
+#line 239 "detex.l"
+;/*NEWLINE;*/
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 221 "../../../texk/detex/detex-src/detex.l"
+#line 240 "detex.l"
+;
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
+#line 242 "detex.l"
 /* end environment */	{   if (EndEnv(yytext))
 							BEGIN Normal;
 						    IGNORE;
 						}
 	YY_BREAK
-case 16:
+case 17:
 YY_RULE_SETUP
-#line 225 "../../../texk/detex/detex-src/detex.l"
+#line 246 "detex.l"
 {BEGIN LaEnv; IGNORE;}
 	YY_BREAK
-case 17:
-/* rule 17 can match eol */
-YY_RULE_SETUP
-#line 226 "../../../texk/detex/detex-src/detex.l"
-NEWLINE;
-	YY_BREAK
+/*<LaEnd>"\n"					NEWLINE;*/
 case 18:
 YY_RULE_SETUP
-#line 227 "../../../texk/detex/detex-src/detex.l"
+#line 248 "detex.l"
 ;
 	YY_BREAK
 case 19:
 /* rule 19 can match eol */
 YY_RULE_SETUP
-#line 229 "../../../texk/detex/detex-src/detex.l"
+#line 250 "detex.l"
 ;
 	YY_BREAK
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 230 "../../../texk/detex/detex-src/detex.l"
+#line 251 "detex.l"
 ;
 	YY_BREAK
 case 21:
 /* rule 21 can match eol */
 YY_RULE_SETUP
-#line 231 "../../../texk/detex/detex-src/detex.l"
+#line 252 "detex.l"
 ;
 	YY_BREAK
 case 22:
 /* rule 22 can match eol */
 YY_RULE_SETUP
-#line 232 "../../../texk/detex/detex-src/detex.l"
+#line 253 "detex.l"
 ;
 	YY_BREAK
 case 23:
 /* rule 23 can match eol */
 YY_RULE_SETUP
-#line 233 "../../../texk/detex/detex-src/detex.l"
+#line 254 "detex.l"
 ;
 	YY_BREAK
 case 24:
 /* rule 24 can match eol */
 YY_RULE_SETUP
-#line 234 "../../../texk/detex/detex-src/detex.l"
+#line 255 "detex.l"
 ;
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 236 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(1); }
+#line 256 "detex.l"
+; /* hack to fix \begin{minipage}{300pt} */
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 237 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(2); }
+#line 258 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 238 "../../../texk/detex/detex-src/detex.l"
+#line 259 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 239 "../../../texk/detex/detex-src/detex.l"
+#line 260 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 240 "../../../texk/detex/detex-src/detex.l"
+#line 261 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 241 "../../../texk/detex/detex-src/detex.l"
+#line 262 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 242 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(1); }
+#line 263 "detex.l"
+{ KILLARGS(2); }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 243 "../../../texk/detex/detex-src/detex.l"
+#line 264 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 244 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(2); }
+#line 265 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 245 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(1); }
+#line 266 "detex.l"
+{ KILLARGS(2); }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 246 "../../../texk/detex/detex-src/detex.l"
-{ STRIPARGS(2); }
+#line 267 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 247 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(1); }
+#line 268 "detex.l"
+{ STRIPARGS(2); }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 248 "../../../texk/detex/detex-src/detex.l"
-{ STRIPARGS(2); }
+#line 269 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 249 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(2); }
+#line 270 "detex.l"
+{ STRIPARGS(2); }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 250 "../../../texk/detex/detex-src/detex.l"
-;
+#line 271 "detex.l"
+{ KILLARGS(2); }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 251 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(1); }
+#line 272 "detex.l"
+;
 	YY_BREAK
 case 41:
-/* rule 41 can match eol */
 YY_RULE_SETUP
-#line 252 "../../../texk/detex/detex-src/detex.l"
-{ LaBEGIN LaPicture; }
+#line 273 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 42:
+/* rule 42 can match eol */
 YY_RULE_SETUP
-#line 254 "../../../texk/detex/detex-src/detex.l"
-;
+#line 274 "detex.l"
+{ LaBEGIN LaPicture; }
 	YY_BREAK
 case 43:
-/* rule 43 can match eol */
 YY_RULE_SETUP
-#line 255 "../../../texk/detex/detex-src/detex.l"
-{ printf("<Picture %s>", yytext); }
+#line 276 "detex.l"
+;
 	YY_BREAK
 case 44:
+/* rule 44 can match eol */
 YY_RULE_SETUP
-#line 256 "../../../texk/detex/detex-src/detex.l"
-BEGIN Normal;
+#line 277 "detex.l"
+{ if(fShowPictures) { printf("<Picture %s>", yytext); } }
 	YY_BREAK
 case 45:
+/* rule 45 can match eol */
 YY_RULE_SETUP
-#line 258 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(3); }
+#line 278 "detex.l"
+BEGIN Normal;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 259 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(1); }
+#line 279 "detex.l"
+BEGIN Normal;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 260 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(2); }
+#line 281 "detex.l"
+{ KILLARGS(3); }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 261 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(2); }
+#line 282 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 262 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(3); }
+#line 283 "detex.l"
+{ KILLARGS(2); }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 263 "../../../texk/detex/detex-src/detex.l"
-{ KILLARGS(1); }
+#line 284 "detex.l"
+{ KILLARGS(2); }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 264 "../../../texk/detex/detex-src/detex.l"
-{ STRIPARGS(1); }
+#line 285 "detex.l"
+{ KILLARGS(3); }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 266 "../../../texk/detex/detex-src/detex.l"
-;
+#line 286 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 267 "../../../texk/detex/detex-src/detex.l"
-;
+#line 287 "detex.l"
+{ STRIPARGS(1); }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 268 "../../../texk/detex/detex-src/detex.l"
-;
+#line 288 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 269 "../../../texk/detex/detex-src/detex.l"
-;
+#line 289 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 270 "../../../texk/detex/detex-src/detex.l"
-;
+#line 290 "detex.l"
+{ KILLARGS(3); }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 271 "../../../texk/detex/detex-src/detex.l"
-;
+#line 292 "detex.l"
+;/*NEWLINE;*/
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 273 "../../../texk/detex/detex-src/detex.l"
-/* ignore args  */	{KILLARGS(1); IGNORE;}
+#line 293 "detex.l"
+;/*NEWLINE;*/
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 274 "../../../texk/detex/detex-src/detex.l"
-/* of these \cs */	{KILLARGS(1); IGNORE;}
+#line 294 "detex.l"
+;/*NEWLINE;*/
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 275 "../../../texk/detex/detex-src/detex.l"
-{KILLARGS(1); IGNORE;}
+#line 295 "detex.l"
+;/*NEWLINE;*/
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 276 "../../../texk/detex/detex-src/detex.l"
-{CITE(1); IGNORE;}
+#line 296 "detex.l"
+;/*NEWLINE;*/
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 277 "../../../texk/detex/detex-src/detex.l"
-{LATEX; KILLARGS(1); IGNORE;}
+#line 297 "detex.l"
+;/*NEWLINE;*/
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 278 "../../../texk/detex/detex-src/detex.l"
-{LATEX; KILLARGS(1); IGNORE;}
+#line 298 "detex.l"
+;/*NEWLINE;*/
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 279 "../../../texk/detex/detex-src/detex.l"
-{KILLARGS(1); IGNORE;}
+#line 300 "detex.l"
+/* ignore args  */	{KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 280 "../../../texk/detex/detex-src/detex.l"
-{KILLARGS(1); IGNORE;}
+#line 301 "detex.l"
+/* of these \cs */	{KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 281 "../../../texk/detex/detex-src/detex.l"
-{KILLARGS(1); SPACE;}
+#line 302 "detex.l"
+{KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 282 "../../../texk/detex/detex-src/detex.l"
-{KILLARGS(1); SPACE;}
+#line 303 "detex.l"
+{KILLARGS(1);} /* kill space before */
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 283 "../../../texk/detex/detex-src/detex.l"
-{KILLARGS(1); IGNORE;}
+#line 304 "detex.l"
+{LATEX; KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 284 "../../../texk/detex/detex-src/detex.l"
-{CITE(1); IGNORE;}
+#line 305 "detex.l"
+{LATEX; KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 285 "../../../texk/detex/detex-src/detex.l"
+#line 306 "detex.l"
 {KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 286 "../../../texk/detex/detex-src/detex.l"
-{CITE(1); IGNORE;}
+#line 307 "detex.l"
+{KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 287 "../../../texk/detex/detex-src/detex.l"
-{KILLARGS(1); IGNORE;}
+#line 308 "detex.l"
+{KILLARGS(1);}
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 288 "../../../texk/detex/detex-src/detex.l"
-/* ignore \verb<ch>...<ch> */	{   if (fLatex) {
-						 	char verbchar, c;
-						 	verbchar = input();
-						 	while ((c = input()) != verbchar)
-							    if (c == '\n')
-								NEWLINE;
-						    }
-						    IGNORE;
-						}
+#line 309 "detex.l"
+{KILLARGS(1);}
 	YY_BREAK
+/*<Normal>"\\footnote"				{KILLARGS(1); SPACE;}*/
 case 74:
 YY_RULE_SETUP
-#line 298 "../../../texk/detex/detex-src/detex.l"
-{ LATEX; KILLARGS(2); }
+#line 311 "detex.l"
+{KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 299 "../../../texk/detex/detex-src/detex.l"
-{ LATEX; KILLARGS(2); }
+#line 312 "detex.l"
+{CITE(1); IGNORE;}
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 300 "../../../texk/detex/detex-src/detex.l"
-{ LATEX; KILLARGS(3); }
+#line 313 "detex.l"
+{CITE(1); IGNORE;}
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 302 "../../../texk/detex/detex-src/detex.l"
-/* ignore def begin */	{BEGIN Define; IGNORE;}
+#line 314 "detex.l"
+{KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 303 "../../../texk/detex/detex-src/detex.l"
-BEGIN Normal;
+#line 315 "detex.l"
+{CITE(1); IGNORE;}
 	YY_BREAK
 case 79:
-/* rule 79 can match eol */
 YY_RULE_SETUP
-#line 304 "../../../texk/detex/detex-src/detex.l"
-NEWLINE;
+#line 316 "detex.l"
+{KILLARGS(2); IGNORE;}
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 305 "../../../texk/detex/detex-src/detex.l"
-;
+#line 317 "detex.l"
+{KILLARGS(2); IGNORE;}
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 307 "../../../texk/detex/detex-src/detex.l"
-/* formula mode */	{LaBEGIN LaFormula; IGNORE;}
+#line 318 "detex.l"
+{ KILLARGS(1); }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 308 "../../../texk/detex/detex-src/detex.l"
-BEGIN Normal;
+#line 319 "detex.l"
+{ KILLARGS(2); }
 	YY_BREAK
 case 83:
-/* rule 83 can match eol */
 YY_RULE_SETUP
-#line 309 "../../../texk/detex/detex-src/detex.l"
-NEWLINE;
+#line 321 "detex.l"
+{KILLARGS(1);}
 	YY_BREAK
 case 84:
+/* rule 84 can match eol */
 YY_RULE_SETUP
-#line 310 "../../../texk/detex/detex-src/detex.l"
-;
+#line 323 "detex.l"
+{
+							putchar('(');
+							footnoteLevel = currBracesLevel;
+							++currBracesLevel;
+							}
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 312 "../../../texk/detex/detex-src/detex.l"
-/* display mode */	{LaBEGIN LaDisplay; IGNORE;}
+#line 328 "detex.l"
+/* ignore \verb<ch>...<ch> */	{   if (fLatex) {
+						 	char verbchar, c;
+						 	verbchar = input();
+						 	while ((c = input()) != verbchar)
+							    /*if (c == '\n')
+								NEWLINE;*/
+								putchar(c);
+						    }
+						    IGNORE;
+						}
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 313 "../../../texk/detex/detex-src/detex.l"
-BEGIN Normal;
+#line 339 "detex.l"
+{ LATEX; KILLARGS(2); }
 	YY_BREAK
 case 87:
-/* rule 87 can match eol */
 YY_RULE_SETUP
-#line 314 "../../../texk/detex/detex-src/detex.l"
-NEWLINE;
+#line 340 "detex.l"
+{ LATEX; KILLARGS(2); }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 315 "../../../texk/detex/detex-src/detex.l"
-;
+#line 341 "detex.l"
+{ LATEX; KILLARGS(3); }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 317 "../../../texk/detex/detex-src/detex.l"
-/* display mode */	{BEGIN Display; IGNORE;}
+#line 343 "detex.l"
+/* ignore def begin */	{BEGIN Define; IGNORE;}
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 318 "../../../texk/detex/detex-src/detex.l"
+#line 344 "detex.l"
 BEGIN Normal;
 	YY_BREAK
 case 91:
 /* rule 91 can match eol */
 YY_RULE_SETUP
-#line 319 "../../../texk/detex/detex-src/detex.l"
+#line 345 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 320 "../../../texk/detex/detex-src/detex.l"
+#line 346 "detex.l"
 ;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 322 "../../../texk/detex/detex-src/detex.l"
-/* math mode */		{BEGIN Math; IGNORE;}
+#line 348 "detex.l"
+/* formula mode */	{LaBEGIN LaFormula; NOUN;}
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 323 "../../../texk/detex/detex-src/detex.l"
+#line 349 "detex.l"
 BEGIN Normal;
 	YY_BREAK
 case 95:
 /* rule 95 can match eol */
 YY_RULE_SETUP
-#line 324 "../../../texk/detex/detex-src/detex.l"
+#line 350 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 325 "../../../texk/detex/detex-src/detex.l"
-;
+#line 351 "detex.l"
+VERBNOUN;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 326 "../../../texk/detex/detex-src/detex.l"
+#line 352 "detex.l"
 ;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 328 "../../../texk/detex/detex-src/detex.l"
-/* process files */	{LaBEGIN LaInclude; IGNORE;}
+#line 354 "detex.l"
+/* display mode */	{LaBEGIN LaDisplay; NOUN;}
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 329 "../../../texk/detex/detex-src/detex.l"
-{   IncludeFile(yytext);
-						    BEGIN Normal;
-						}
+#line 355 "detex.l"
+BEGIN Normal;
 	YY_BREAK
 case 100:
 /* rule 100 can match eol */
 YY_RULE_SETUP
-#line 332 "../../../texk/detex/detex-src/detex.l"
+#line 356 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 333 "../../../texk/detex/detex-src/detex.l"
-;
+#line 357 "detex.l"
+VERBNOUN;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 335 "../../../texk/detex/detex-src/detex.l"
-{BEGIN IncludeOnly; IGNORE;}
+#line 358 "detex.l"
+;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 336 "../../../texk/detex/detex-src/detex.l"
-AddInclude(yytext);
+#line 360 "detex.l"
+/* display mode */	{BEGIN Display; NOUN;}
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 337 "../../../texk/detex/detex-src/detex.l"
-{   if (csbIncList == 0)
-							rgsbIncList[csbIncList++] = '\0';
-						    BEGIN Normal;
-						}
+#line 361 "detex.l"
+BEGIN Normal;
 	YY_BREAK
 case 105:
 /* rule 105 can match eol */
 YY_RULE_SETUP
-#line 341 "../../../texk/detex/detex-src/detex.l"
+#line 362 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 342 "../../../texk/detex/detex-src/detex.l"
-;
+#line 363 "detex.l"
+VERBNOUN;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 344 "../../../texk/detex/detex-src/detex.l"
-{BEGIN Input; IGNORE;}
+#line 364 "detex.l"
+;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 345 "../../../texk/detex/detex-src/detex.l"
-{   InputFile(yytext);
-						    BEGIN Normal;
-						}
+#line 366 "detex.l"
+/* math mode */		{BEGIN Math; NOUN;}
 	YY_BREAK
 case 109:
-/* rule 109 can match eol */
 YY_RULE_SETUP
-#line 348 "../../../texk/detex/detex-src/detex.l"
-NEWLINE;
+#line 367 "detex.l"
+BEGIN Normal;
 	YY_BREAK
 case 110:
+/* rule 110 can match eol */
 YY_RULE_SETUP
-#line 349 "../../../texk/detex/detex-src/detex.l"
-;
+#line 368 "detex.l"
+NEWLINE;
 	YY_BREAK
 case 111:
-/* rule 111 can match eol */
 YY_RULE_SETUP
-#line 351 "../../../texk/detex/detex-src/detex.l"
-/* handle ligatures */	{(void)printf("%.2s", yytext+1);}
+#line 369 "detex.l"
+;
 	YY_BREAK
 case 112:
-/* rule 112 can match eol */
 YY_RULE_SETUP
-#line 352 "../../../texk/detex/detex-src/detex.l"
-{(void)printf("%.1s", yytext+1);}
+#line 370 "detex.l"
+VERBNOUN;
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 353 "../../../texk/detex/detex-src/detex.l"
-BEGIN LaBreak;
+#line 371 "detex.l"
+;
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 355 "../../../texk/detex/detex-src/detex.l"
-/* ignore other \cs */	{BEGIN Control; IGNORE;}
+#line 373 "detex.l"
+/* process files */	{LaBEGIN LaInclude; IGNORE;}
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 356 "../../../texk/detex/detex-src/detex.l"
-SPACE;
+#line 374 "detex.l"
+{   IncludeFile(yytext);
+						    BEGIN Normal;
+						}
 	YY_BREAK
 case 116:
 /* rule 116 can match eol */
 YY_RULE_SETUP
-#line 357 "../../../texk/detex/detex-src/detex.l"
+#line 377 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 358 "../../../texk/detex/detex-src/detex.l"
-IGNORE;
+#line 378 "detex.l"
+;
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 359 "../../../texk/detex/detex-src/detex.l"
+#line 380 "detex.l"
+{BEGIN IncludeOnly; IGNORE;}
+	YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 381 "detex.l"
+AddInclude(yytext);
+	YY_BREAK
+case 120:
+YY_RULE_SETUP
+#line 382 "detex.l"
+{   if (csbIncList == 0)
+							rgsbIncList[csbIncList++] = '\0';
+						    BEGIN Normal;
+						}
+	YY_BREAK
+case 121:
+/* rule 121 can match eol */
+YY_RULE_SETUP
+#line 386 "detex.l"
+NEWLINE;
+	YY_BREAK
+case 122:
+YY_RULE_SETUP
+#line 387 "detex.l"
+;
+	YY_BREAK
+case 123:
+YY_RULE_SETUP
+#line 389 "detex.l"
+/* process files */	{LaBEGIN LaSubfile; IGNORE;}
+	YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 390 "detex.l"
+{   IncludeFile(yytext);
+						    BEGIN Normal;
+						}
+	YY_BREAK
+case 125:
+/* rule 125 can match eol */
+YY_RULE_SETUP
+#line 393 "detex.l"
+NEWLINE;
+	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 394 "detex.l"
+;
+	YY_BREAK
+case 127:
+YY_RULE_SETUP
+#line 396 "detex.l"
+{BEGIN Input; IGNORE;}
+	YY_BREAK
+case 128:
+YY_RULE_SETUP
+#line 397 "detex.l"
+{   InputFile(yytext);
+						    BEGIN Normal;
+						}
+	YY_BREAK
+case 129:
+/* rule 129 can match eol */
+YY_RULE_SETUP
+#line 400 "detex.l"
+NEWLINE;
+	YY_BREAK
+case 130:
+YY_RULE_SETUP
+#line 401 "detex.l"
+;
+	YY_BREAK
+/* escaping commands */
+case 131:
+YY_RULE_SETUP
+#line 404 "detex.l"
+putchar('/');
+	YY_BREAK
+case 132:
+/* rule 132 can match eol */
+YY_RULE_SETUP
+#line 406 "detex.l"
+/* handle ligatures */	{(void)printf("%.2s", yytext+1);}
+	YY_BREAK
+case 133:
+/* rule 133 can match eol */
+YY_RULE_SETUP
+#line 407 "detex.l"
+{(void)printf("%.1s", yytext+1);}
+	YY_BREAK
+case 134:
+YY_RULE_SETUP
+#line 408 "detex.l"
+{NEWLINE;}	/*BEGIN LaBreak;*/
+	YY_BREAK
+case 135:
+YY_RULE_SETUP
+#line 410 "detex.l"
+/* ignore other \cs */	{BEGIN Control; IGNORE;}
+	YY_BREAK
+case 136:
+YY_RULE_SETUP
+#line 411 "detex.l"
+SPACE;
+	YY_BREAK
+case 137:
+/* rule 137 can match eol */
+YY_RULE_SETUP
+#line 412 "detex.l"
+NEWLINE;
+	YY_BREAK
+case 138:
+YY_RULE_SETUP
+#line 413 "detex.l"
+IGNORE;
+	YY_BREAK
+case 139:
+YY_RULE_SETUP
+#line 414 "detex.l"
 {  if (yytext==NULL || strlen(yytext)==0
-							|| atoi(yytext)==4)
+							|| atoi(yytext)>=0)
 							NEWLINE;
 						BEGIN Normal;
 						}
 	YY_BREAK
-case 119:
+case 140:
 YY_RULE_SETUP
-#line 365 "../../../texk/detex/detex-src/detex.l"
+#line 420 "detex.l"
 IGNORE;
 	YY_BREAK
-case 120:
+case 141:
 YY_RULE_SETUP
-#line 366 "../../../texk/detex/detex-src/detex.l"
+#line 421 "detex.l"
 IGNORE;
 	YY_BREAK
-case 121:
-/* rule 121 can match eol */
+case 142:
+/* rule 142 can match eol */
 YY_RULE_SETUP
-#line 367 "../../../texk/detex/detex-src/detex.l"
-{BEGIN Normal; NEWLINE;}
+#line 422 "detex.l"
+{BEGIN Normal; /*NEWLINE;*/}
 	YY_BREAK
-case 122:
+case 143:
 YY_RULE_SETUP
-#line 368 "../../../texk/detex/detex-src/detex.l"
+#line 423 "detex.l"
+{++currBracesLevel;BEGIN Normal; IGNORE;}
+	YY_BREAK
+case 144:
+YY_RULE_SETUP
+#line 424 "detex.l"
 {BEGIN Normal; IGNORE;}
 	YY_BREAK
-case 123:
+case 145:
 YY_RULE_SETUP
-#line 369 "../../../texk/detex/detex-src/detex.l"
+#line 425 "detex.l"
 {yyless(0);BEGIN Normal;}
 	YY_BREAK
-case 124:
+case 146:
 YY_RULE_SETUP
-#line 371 "../../../texk/detex/detex-src/detex.l"
+#line 427 "detex.l"
 /* special characters */	IGNORE;
 	YY_BREAK
-case 125:
+case 147:
 YY_RULE_SETUP
-#line 372 "../../../texk/detex/detex-src/detex.l"
+#line 428 "detex.l"
 IGNORE;
 	YY_BREAK
-case 126:
+case 148:
 YY_RULE_SETUP
-#line 373 "../../../texk/detex/detex-src/detex.l"
+#line 429 "detex.l"
 SPACE;
 	YY_BREAK
-case 127:
+case 149:
 YY_RULE_SETUP
-#line 375 "../../../texk/detex/detex-src/detex.l"
+#line 430 "detex.l"
+putchar('-');
+	YY_BREAK
+case 150:
+YY_RULE_SETUP
+#line 431 "detex.l"
+putchar('"');
+	YY_BREAK
+case 151:
+YY_RULE_SETUP
+#line 432 "detex.l"
+putchar('\'');
+	YY_BREAK
+case 152:
+YY_RULE_SETUP
+#line 433 "detex.l"
+putchar('"');
+	YY_BREAK
+case 153:
+YY_RULE_SETUP
+#line 434 "detex.l"
+putchar('"');
+	YY_BREAK
+/* braces */
+case 154:
+YY_RULE_SETUP
+#line 437 "detex.l"
+{ ++currBracesLevel;
+							}
+	YY_BREAK
+case 155:
+YY_RULE_SETUP
+#line 439 "detex.l"
+{
+							--currBracesLevel;
+							if (currBracesLevel == footnoteLevel) {
+								putchar(')');
+								footnoteLevel = -100;
+							}
+							SPACE;}
+	YY_BREAK
+case 156:
+YY_RULE_SETUP
+#line 446 "detex.l"
 {   if (fWord)
 							(void)printf("%s\n", yytext);
 						    else
@@ -2639,30 +3000,41 @@
 							ECHO;
 						}
 	YY_BREAK
-case 128:
+case 157:
 YY_RULE_SETUP
-#line 380 "../../../texk/detex/detex-src/detex.l"
+#line 451 "detex.l"
 if (!fWord) ECHO;
 	YY_BREAK
-case 129:
-/* rule 129 can match eol */
+case 158:
 YY_RULE_SETUP
-#line 381 "../../../texk/detex/detex-src/detex.l"
+#line 452 "detex.l"
 if (!fWord) ECHO;
 	YY_BREAK
-case 130:
+case 159:
+/* rule 159 can match eol */
 YY_RULE_SETUP
-#line 383 "../../../texk/detex/detex-src/detex.l"
+#line 453 "detex.l"
+if (!fWord) NEWLINE;
+	YY_BREAK
+case 160:
+YY_RULE_SETUP
+#line 454 "detex.l"
+if (!fWord) putchar('\t');
+	YY_BREAK
+case 161:
+YY_RULE_SETUP
+#line 456 "detex.l"
 { BEGIN LaOptArg; }
 	YY_BREAK
-case 131:
+case 162:
 YY_RULE_SETUP
-#line 384 "../../../texk/detex/detex-src/detex.l"
+#line 457 "detex.l"
 { cOpenBrace++; }
 	YY_BREAK
-case 132:
+case 163:
+/* rule 163 can match eol */
 YY_RULE_SETUP
-#line 385 "../../../texk/detex/detex-src/detex.l"
+#line 458 "detex.l"
 {   cOpenBrace--;
 						    if (cOpenBrace == 0)
 						    {
@@ -2671,30 +3043,30 @@
 						    }
 						}
 	YY_BREAK
-case 133:
+case 164:
 YY_RULE_SETUP
-#line 392 "../../../texk/detex/detex-src/detex.l"
+#line 465 "detex.l"
 ;
 	YY_BREAK
-case 134:
+case 165:
 YY_RULE_SETUP
-#line 393 "../../../texk/detex/detex-src/detex.l"
+#line 466 "detex.l"
 BEGIN LaMacro;	
 	YY_BREAK
-case 135:
-/* rule 135 can match eol */
+case 166:
+/* rule 166 can match eol */
 YY_RULE_SETUP
-#line 394 "../../../texk/detex/detex-src/detex.l"
+#line 467 "detex.l"
 ;
 	YY_BREAK
-case 136:
+case 167:
 YY_RULE_SETUP
-#line 396 "../../../texk/detex/detex-src/detex.l"
+#line 469 "detex.l"
 { BEGIN LaOptArg2; }
 	YY_BREAK
-case 137:
+case 168:
 YY_RULE_SETUP
-#line 397 "../../../texk/detex/detex-src/detex.l"
+#line 470 "detex.l"
 { if (cOpenBrace == 0)
 						    {
 							if (--cArgs==0)
@@ -2706,32 +3078,32 @@
 						  cOpenBrace++;
 						}
 	YY_BREAK
-case 138:
+case 169:
 YY_RULE_SETUP
-#line 407 "../../../texk/detex/detex-src/detex.l"
+#line 480 "detex.l"
 {   cOpenBrace--; }
 	YY_BREAK
-case 139:
+case 170:
 YY_RULE_SETUP
-#line 408 "../../../texk/detex/detex-src/detex.l"
+#line 481 "detex.l"
 ;
 	YY_BREAK
-case 140:
+case 171:
 YY_RULE_SETUP
-#line 409 "../../../texk/detex/detex-src/detex.l"
+#line 482 "detex.l"
 BEGIN LaMacro2;	
 	YY_BREAK
-case 141:
+case 172:
 YY_RULE_SETUP
-#line 410 "../../../texk/detex/detex-src/detex.l"
+#line 483 "detex.l"
 ;
 	YY_BREAK
-case 142:
+case 173:
 YY_RULE_SETUP
-#line 411 "../../../texk/detex/detex-src/detex.l"
+#line 484 "detex.l"
 ECHO;
 	YY_BREAK
-#line 2735 "../../../texk/detex/detex-src/detex.c"
+#line 3106 "lex.yy.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(Define):
 case YY_STATE_EOF(Display):
@@ -2746,6 +3118,7 @@
 case YY_STATE_EOF(LaEnv):
 case YY_STATE_EOF(LaFormula):
 case YY_STATE_EOF(LaInclude):
+case YY_STATE_EOF(LaSubfile):
 case YY_STATE_EOF(LaMacro):
 case YY_STATE_EOF(LaOptArg):
 case YY_STATE_EOF(LaMacro2):
@@ -2897,7 +3270,7 @@
 {
     	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
 	char *source = (yytext_ptr);
-	yy_size_t number_to_move, i;
+	int number_to_move, i;
 	int ret_val;
 
 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -2926,7 +3299,7 @@
 	/* Try to read more data. */
 
 	/* First move last chars to start of buffer. */
-	number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
 
 	for ( i = 0; i < number_to_move; ++i )
 		*(dest++) = *(source++);
@@ -2939,7 +3312,7 @@
 
 	else
 		{
-			yy_size_t num_to_read =
+			int num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
@@ -2953,7 +3326,7 @@
 
 			if ( b->yy_is_our_buffer )
 				{
-				yy_size_t new_size = b->yy_buf_size * 2;
+				int new_size = b->yy_buf_size * 2;
 
 				if ( new_size <= 0 )
 					b->yy_buf_size += b->yy_buf_size / 8;
@@ -2966,7 +3339,7 @@
 				}
 			else
 				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
+				b->yy_ch_buf = NULL;
 
 			if ( ! b->yy_ch_buf )
 				YY_FATAL_ERROR(
@@ -3008,9 +3381,9 @@
 	else
 		ret_val = EOB_ACT_CONTINUE_SCAN;
 
-	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+	if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
 		/* Extend the array by 50%, plus the number we really need. */
-		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+		int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
@@ -3045,10 +3418,10 @@
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 1067 )
+			if ( yy_current_state >= 1362 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
-		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+		yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
 		}
 
 	return yy_current_state;
@@ -3073,11 +3446,11 @@
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 1067 )
+		if ( yy_current_state >= 1362 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 1066);
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+	yy_is_jam = (yy_current_state == 1361);
 
 		return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3096,7 +3469,7 @@
 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 		{ /* need to shift things up to make room */
 		/* +2 for EOB chars. */
-		yy_size_t number_to_move = (yy_n_chars) + 2;
+		int number_to_move = (yy_n_chars) + 2;
 		char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
 		char *source =
@@ -3108,7 +3481,7 @@
 		yy_cp += (int) (dest - source);
 		yy_bp += (int) (dest - source);
 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+			(yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
 
 		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
@@ -3147,7 +3520,7 @@
 
 		else
 			{ /* need more input */
-			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
+			int offset = (yy_c_buf_p) - (yytext_ptr);
 			++(yy_c_buf_p);
 
 			switch ( yy_get_next_buffer(  ) )
@@ -3171,7 +3544,7 @@
 				case EOB_ACT_END_OF_FILE:
 					{
 					if ( yywrap( ) )
-						return EOF;
+						return 0;
 
 					if ( ! (yy_did_buffer_switch_on_eof) )
 						YY_NEW_FILE;
@@ -3419,7 +3792,7 @@
  */
 static void yyensure_buffer_stack (void)
 {
-	yy_size_t num_to_alloc;
+	int num_to_alloc;
     
 	if (!(yy_buffer_stack)) {
 
@@ -3427,15 +3800,15 @@
 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
 		 * immediate realloc on the next call.
          */
-		num_to_alloc = 1; // After all that talk, this was set to 1 anyways...
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
 								(num_to_alloc * sizeof(struct yy_buffer_state*)
 								);
 		if ( ! (yy_buffer_stack) )
 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
-								  
+
 		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-				
+
 		(yy_buffer_stack_max) = num_to_alloc;
 		(yy_buffer_stack_top) = 0;
 		return;
@@ -3464,7 +3837,7 @@
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * 
- * @return the newly allocated buffer state object. 
+ * @return the newly allocated buffer state object.
  */
 YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 {
@@ -3474,7 +3847,7 @@
 	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
 	     base[size-1] != YY_END_OF_BUFFER_CHAR )
 		/* They forgot to leave room for the EOB's. */
-		return 0;
+		return NULL;
 
 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
 	if ( ! b )
@@ -3483,7 +3856,7 @@
 	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
 	b->yy_buf_pos = b->yy_ch_buf = base;
 	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
+	b->yy_input_file = NULL;
 	b->yy_n_chars = b->yy_buf_size;
 	b->yy_is_interactive = 0;
 	b->yy_at_bol = 1;
@@ -3506,7 +3879,7 @@
 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
 {
     
-	return yy_scan_bytes(yystr,strlen(yystr) );
+	return yy_scan_bytes(yystr,(int) strlen(yystr) );
 }
 
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
@@ -3516,15 +3889,15 @@
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
 {
 	YY_BUFFER_STATE b;
 	char *buf;
 	yy_size_t n;
-	yy_size_t i;
+	int i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = _yybytes_len + 2;
+	n = (yy_size_t) (_yybytes_len + 2);
 	buf = (char *) yyalloc(n  );
 	if ( ! buf )
 		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
@@ -3550,7 +3923,7 @@
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yy_fatal_error (yyconst char* msg )
+static void yynoreturn yy_fatal_error (yyconst char* msg )
 {
 			(void) fprintf( stderr, "%s\n", msg );
 	exit( YY_EXIT_FAILURE );
@@ -3580,7 +3953,7 @@
  */
 int yyget_lineno  (void)
 {
-        
+    
     return yylineno;
 }
 
@@ -3603,7 +3976,7 @@
 /** Get the length of the current token.
  * 
  */
-yy_size_t yyget_leng  (void)
+int yyget_leng  (void)
 {
         return yyleng;
 }
@@ -3659,10 +4032,10 @@
      * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    (yy_buffer_stack) = 0;
+    (yy_buffer_stack) = NULL;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
+    (yy_c_buf_p) = NULL;
     (yy_init) = 0;
     (yy_start) = 0;
 
@@ -3671,8 +4044,8 @@
     yyin = stdin;
     yyout = stdout;
 #else
-    yyin = (FILE *) 0;
-    yyout = (FILE *) 0;
+    yyin = NULL;
+    yyout = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
@@ -3730,7 +4103,7 @@
 
 void *yyalloc (yy_size_t  size )
 {
-			return (void *) malloc( size );
+			return malloc(size);
 }
 
 void *yyrealloc  (void * ptr, yy_size_t  size )
@@ -3743,7 +4116,7 @@
 	 * any pointer type to void*, and deal with argument conversions
 	 * as though doing an assignment.
 	 */
-	return (void *) realloc( (char *) ptr, size );
+	return realloc(ptr, size);
 }
 
 void yyfree (void * ptr )
@@ -3753,9 +4126,10 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 411 "../../../texk/detex/detex-src/detex.l"
+#line 484 "detex.l"
 
 
+
 /******
 ** main --
 **	Set sbProgName to the base of arg 0.
@@ -3835,14 +4209,14 @@
 		    case CHWORDOPT:
 			fWord = 1;
 			break;
+			case CHREPLACE:
+			fReplace = 1;
+			break;
 		    default:
-#ifdef OS2
-			OS2UsageExit();
-#else
 			sbBadOpt[0] = *pch;
 			sbBadOpt[1] = '\0';
 			Warning("unknown option ignored -", sbBadOpt);
-#endif
+			UsageExit();
 		    }
 		iArgs++;
 	}
@@ -3934,9 +4308,10 @@
 SetEnvIgnore(const char *sbEnvList)
 {
 	char *sb;
-
 	sb = SafeMalloc(strlen(sbEnvList) + 1, "malloc for SetEnvIgnore failed");
 	(void) strcpy(sb, sbEnvList);
+
+	
 	csbEnvIgnore = SeparateList(sb, rgsbEnvIgnore, CHENVSEP, MAXENVS);
 	if (csbEnvIgnore == my_ERROR)
 	    ErrorExit("The environment list contains too many environments");
@@ -3944,7 +4319,7 @@
 
 /******
 ** BeginEnv -- checks to see if sbEnv is in the list rgsbEnvIgnore.  If it
-**	is, sbCurrentEnv is set to sbEnv.
+**	is, sbCurrentIgnoredEnv is set to sbEnv.
 ******/
 
 int
@@ -3953,10 +4328,10 @@
 	int	i;
 
 	if (!fLatex) return(0);
-	for (i = 0; i < csbEnvIgnore; i++)
+	for (i = 0; i < csbEnvIgnore; ++i)
 	    if (strcmp(sbEnv, rgsbEnvIgnore[i]) == 0) {
-		(void)strcpy(sbCurrentEnv, sbEnv);
-		return(1);
+			(void)strcpy(sbCurrentIgnoredEnv, sbEnv);
+			return(1);
 	    }
 	return(0);
 }
@@ -3969,7 +4344,7 @@
 EndEnv(const char *sbEnv)
 {
 	if (!fLatex) return(0);
-	if (strcmp(sbEnv, sbCurrentEnv) == 0)
+	if (strcmp(sbEnv, sbCurrentIgnoredEnv) == 0)
 	    return(1);
 	return(0);
 }
@@ -3982,6 +4357,8 @@
 void
 InputFile(char *sbFile)
 {
+	FILE	*TexOpen();
+
 	if (!fFollow)
 	    return;
 	rgfp[cfp++] = yyin;
@@ -4004,6 +4381,8 @@
 void
 IncludeFile(char *sbFile)
 {
+	FILE	*TexOpen();
+
 	if (!fFollow)
 	    return;
 	if (!InList(sbFile))
@@ -4119,8 +4498,9 @@
 
 	while (sbList && *sbList && csbList < csbMax) {
 	    rgsbList[csbList++] = sbList;
-	    if ((sbList = strchr(sbList, chSep)))
-		*sbList++ = '\0';
+	    if ((sbList = strchr(sbList, chSep))) {
+			*sbList++ = '\0';
+		}
 	}
 	return(sbList && *sbList ? my_ERROR : csbList);
 }
@@ -4178,19 +4558,23 @@
 	    /* character and it does not follow a '.' or a '/'      */
 	    if (pch != NULL && pch > &(sbFullPath[0])
                     && *(pch - 1) != '.' && *(pch - 1) != '/'
-		    && (fp = fopen(sbFullPath, "r")) != NULL)
-		return(fp);
+		    && (fp = fopen(sbFullPath, "r")) != NULL) {
+			return(fp);
+		}
 
 	    /* just base name, add .tex to the name */
 	    sbNew = SafeMalloc(strlen(sbFullPath) + 5, "malloc for TexOpen failed");
 	    (void)strcpy(sbNew, sbFullPath);
 	    (void)strcat(sbNew, ".tex");
-	    if ((fp = fopen(sbNew, "r")) != NULL)
-		return(fp);
+	    if ((fp = fopen(sbNew, "r")) != NULL) {
+			free(sbNew);
+			return(fp);
+		}
+		free(sbNew);
 
 	    /* try sbFile regardless */
 	    if ((fp = fopen(sbFullPath, "r")) != NULL)
-		return(fp);
+			return(fp);
 	}
 	return NULL;
 #else
@@ -4239,25 +4623,24 @@
 	(void)fprintf(stderr, "%s: error: %s\n", sbProgName, sb1);
 	exit(1);
 }
-#ifdef OS2
 
 /******
-** OS2UsageExit -- print OS/2 usage message and exit.
+** UsageExit -- print OS/2 usage message and exit.
 ******/
 
 void
-OS2UsageExit(void)
+UsageExit(void)
 {
-	(void)printf("\n%s [ -clnstw ] [ -e environment-list ] [ filename[.tex] ... ]\n",
+	(void)printf("\n%s [ -clnrstw ] [ -e environment-list ] [ filename[.tex] ... ]\n",
 		sbProgName);
 	puts("  -c  echo LaTeX \\cite, \\ref, and \\pageref values\n  \
 -e  <env-list> list of LaTeX environments to ignore\n  \
 -l  force latex mode\n  \
--n  do not follow \\input and \\include\n  \
+-n  do not follow \\input, \\include and \\subfile\n  \
+-r  replace math with \"noun\" and \"noun verbs noun\" to preserve grammar\n  \
 -s  replace control sequences with space\n  \
 -t  force tex mode\n  \
 -w  word only output");
 	exit(0);
 }
-#endif
 

Modified: trunk/Build/source/texk/detex/detex-src/detex.h
===================================================================
--- trunk/Build/source/texk/detex/detex-src/detex.h	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/detex.h	2018-06-26 02:37:10 UTC (rev 48092)
@@ -63,9 +63,9 @@
 
 #define	MAXINPUTPATHS	10
 
-#define	DEFAULTENV	"array,eqnarray,equation,figure,mathmatica,picture,table,verbatim"
+#define	DEFAULTENV	"algorithm,align,array,bmatrix,displaymath,eqnarray,equation,floatfig,floating,longtable,picture,pmatrix,psfrags,pspicture,smallmatrix,smallpmatrix,tabular,tikzpicture,verbatim,vmatrix,wrapfigure"
 #define	CHENVSEP	','
-#define	MAXENVS		10
+#define	MAXENVS		25
 #define	CCHMAXENV	100
 
 /******
@@ -80,5 +80,6 @@
 #define	CHSPACEOPT	's'
 #define	CHTEXOPT	't'
 #define	CHWORDOPT	'w'
+#define CHREPLACE   'r'
 
 #define	my_ERROR	-1

Modified: trunk/Build/source/texk/detex/detex-src/detex.l
===================================================================
--- trunk/Build/source/texk/detex/detex-src/detex.l	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/detex.l	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,10 +1,6 @@
 %option never-interactive
 
 %top{
-#ifndef lint
-static char	rcsid[] = "$Header: /p/src/local/bin/detex/RCS/detex.l,v 2.22 2007/03/01 20:22:01 trinkle Exp trinkle $";
-#endif
-
 /*
  * Copyright (c) 1986-2007 Purdue University
  * All rights reserved.
@@ -72,7 +68,6 @@
 #include <string.h>
 #else
 #include <strings.h>
-#define	strchr  index
 #define	strrchr rindex
 #endif
 #ifndef MAXPATHLEN
@@ -96,6 +91,8 @@
 
 #define	LaBEGIN		if (fLatex) BEGIN
 #define	IGNORE		if (fSpace && !fWord) putchar(' ')
+#define NOUN		if (fSpace && !fWord && !fReplace) putchar(' '); else {if (fReplace) printf("noun");}
+#define VERBNOUN		if (fReplace) printf(" verbs noun"); /* puts a verb and a noun to make grammar checking work */
 #define	SPACE		if (!fWord) putchar(' ')
 #define	NEWLINE		if (!fWord) putchar('\n')
 #define	LATEX		fLatex=!fForcetex
@@ -103,8 +100,11 @@
 #define STRIPARGS(x)	cArgs=x; LaBEGIN LaMacro2
 #define	CITE(x)		if (fLatex && !fCite) KILLARGS(x)
 
+#define NO_MALLOC_DECL
+
 void AddInclude(char *sbFile);
 void ErrorExit(const char *sb1);
+void UsageExit(void);
 void IncludeFile(char *sbFile);
 void InputFile(char *sbFile);
 void SetEnvIgnore(const char *sbEnvList);
@@ -111,7 +111,7 @@
 #ifndef KPATHSEA
 void SetInputPaths(void);
 #endif
-void Warning(const char *sb1, const char *sb2); 
+void Warning(const char *sb1, const char *sb2);
 int BeginEnv(const char *sbEnv);
 int EndEnv(const char *sbEnv);
 int InList(char *sbFile);
@@ -132,7 +132,7 @@
 char	*rgsbEnvIgnore[MAXENVS];	/* list of environments ignored */
 char	*rgsbIncList[MAXINCLIST];	/* list of includeonly files */
 char	*rgsbInputPaths[MAXINPUTPATHS];	/* list of input paths in order */
-char	sbCurrentEnv[CCHMAXENV];	/* current environment being ignored */
+char	sbCurrentIgnoredEnv[CCHMAXENV];	/* current environment being ignored */
 char	*sbProgName;			/* name we were invoked with */
 #ifndef NOFILE /* might be defined in <sys/param.h> */
 #define NOFILE 256
@@ -150,7 +150,12 @@
 int	fCite = 0;			/* flag to echo \cite and \ref args */
 int	fSpace = 0;			/* flag to replace \cs with space */
 int	fForcetex = 0;			/* flag to inhibit latex mode */
+int fShowPictures = 0;  /* flag to show picture names */
+int fReplace = 0;  /* flag to replace envirnments with "noun" */
 
+int currBracesLevel = 0;
+int footnoteLevel = -100;
+
 #ifdef FLEX_SCANNER
 /* flex has contexts for buffers that need to be switched when file changes
  * otherwise output contains imported files in reverse order.  Weird, but
@@ -173,9 +178,10 @@
 VD	{S}(({N}{S}{VU})|(\\{W})){S}
 VG	{VD}(plus{VD})?(minus{VD})?
 Z	\*?
+VERBSYMBOL	=|\\leq|\\geq|\\in|>|<|\\subseteq|\subseteq|\\subset|\\supset|\\sim|\\neq|\\mapsto
 
 %Start Define Display IncludeOnly Input Math Normal Control
-%Start LaBegin LaDisplay LaEnd LaEnv LaFormula LaInclude
+%Start LaBegin LaDisplay LaEnd LaEnv LaFormula LaInclude LaSubfile
 %Start LaMacro LaOptArg LaMacro2 LaOptArg2 LaVerbatim 
 %start LaBreak LaPicture
 
@@ -182,11 +188,11 @@
 %%
 <Normal>"%".*		/* ignore comments */	;
 
-<Normal>"\\begin"{S}"{"{S}"document"{S}"}"	{LATEX; IGNORE;}
+<Normal>"\\begin"{S}"{"{S}"document"{S}"}""\n"*	{LATEX; IGNORE;}
 
 <Normal>"\\begin"     /* environment start */	{LaBEGIN LaBegin; IGNORE;}
 
-<LaBegin>{S}"{"{S}"verbatim"{S}"}"		{   if (BeginEnv("verbatim"))
+<LaBegin>{S}"{"{S}"verbatim"{S}"}"		{ if (BeginEnv("verbatim"))
 							BEGIN LaEnv;
 						    else
 							BEGIN LaVerbatim;
@@ -198,24 +204,40 @@
 <LaVerbatim>.					ECHO;
 
 <LaBegin>{S}"{"{S}"minipage"{S}"}"		{ KILLARGS(1);
-						  if (BeginEnv("minpage"))
+						  if (BeginEnv("minipage"))
 							BEGIN LaEnv;
 						  else
+							BEGIN LaMacro; /* Normal; */
+						  IGNORE;
+						}
+
+<LaBegin>{S}"{"{S}"table"{S}"}"{S}"["{W}"]"		{
+						  if (BeginEnv("table"))
+							BEGIN LaEnv;
+						  else
 							BEGIN Normal;
 						  IGNORE;
 						}
 
-<LaBegin>{W}					{   if (BeginEnv(yytext))
+<LaBegin>{S}"{"{S}"figure"{S}"}"{S}"["{W}"]"		{
+						  if (BeginEnv("figure"))
 							BEGIN LaEnv;
+						  else
+							BEGIN Normal;
+						  IGNORE;
+						}
+						
+<LaBegin>{W}					{ if (BeginEnv(yytext))
+							BEGIN LaEnv;
 						    else
 							BEGIN Normal;
 						    IGNORE;
 						}
-<LaBegin>"\n"					NEWLINE;
+	/*<LaBegin>"\n"					NEWLINE;*/
 <LaBegin>.					;
 
 <LaEnv>"\\end"  /* absorb some environments */	{LaBEGIN LaEnd; IGNORE;}
-<LaEnv>"\n"					NEWLINE;
+<LaEnv>"\n"+					;/*NEWLINE;*/
 <LaEnv>.					;
 
 <LaEnd>{W}		 /* end environment */	{   if (EndEnv(yytext))
@@ -223,7 +245,7 @@
 						    IGNORE;
 						}
 <LaEnd>"}"					{BEGIN LaEnv; IGNORE;}
-<LaEnd>"\n"					NEWLINE;
+	/*<LaEnd>"\n"					NEWLINE;*/
 <LaEnd>.					;
 
 <Normal>"\\kern"{HD}				;
@@ -232,6 +254,7 @@
 <Normal>"\\hskip"{HG}				;
 <Normal>"\\hspace"{Z}{S}"{"{HG}"}"		;
 <Normal>"\\addvspace"{S}"{"{VG}"}"		;
+<Normal>"{"{N}"pt}"						; /* hack to fix \begin{minipage}{300pt} */
 
 <Normal>"\\newlength"				{ KILLARGS(1); }
 <Normal>"\\setlength"				{ KILLARGS(2); }
@@ -252,7 +275,8 @@
 <Normal>"\\includegraphics"[^{]*		{ LaBEGIN LaPicture; }
 
 <LaPicture>"{"					;
-<LaPicture>[^{}]+				{ printf("<Picture %s>", yytext); }
+<LaPicture>[^{}]+				{ if(fShowPictures) { printf("<Picture %s>", yytext); } }
+<LaPicture>"\}"{S}"\n"+					BEGIN Normal;
 <LaPicture>"\}"					BEGIN Normal;
 
 <Normal>"\\definecolor"				{ KILLARGS(3); }
@@ -262,35 +286,53 @@
 <Normal>"\\fcolorbox"				{ KILLARGS(3); }
 <Normal>"\\pagecolor"				{ KILLARGS(1); }
 <Normal>"\\foilhead"				{ STRIPARGS(1); }
+<Normal>"\\addfontfeature"			{ KILLARGS(1); }
+<Normal>"\\thispagestyle"			{ KILLARGS(1); }
+<Normal>"\\addcontentsline"			{ KILLARGS(3); }
 
-<Normal>"\\part"{Z}				;
-<Normal>"\\section"{Z}				;
-<Normal>"\\subsection"{Z}			;
-<Normal>"\\subsubsection"{Z}			;
-<Normal>"\\paragraph"{Z}			;
-<Normal>"\\sunparagraph"{Z}			;
+<Normal>"\\part"{Z}					;/*NEWLINE;*/
+<Normal>"\\chapter"{Z}				;/*NEWLINE;*/
+<Normal>"\\section"{Z}				;/*NEWLINE;*/
+<Normal>"\\subsection"{Z}			;/*NEWLINE;*/
+<Normal>"\\subsubsection"{Z}		;/*NEWLINE;*/
+<Normal>"\\paragraph"{Z}			;/*NEWLINE;*/
+<Normal>"\\subparagraph"{Z}			;/*NEWLINE;*/
 
 <Normal>"\\bibitem"	    /* ignore args  */	{KILLARGS(1); IGNORE;}
 <Normal>"\\bibliography"    /* of these \cs */	{KILLARGS(1); IGNORE;}
 <Normal>"\\bibstyle"				{KILLARGS(1); IGNORE;}
-<Normal>"\\cite"				{CITE(1); IGNORE;}
+<Normal>" "?"\\cite"				{KILLARGS(1);} /* kill space before */
 <Normal>"\\documentstyle"			{LATEX; KILLARGS(1); IGNORE;}
 <Normal>"\\documentclass"			{LATEX; KILLARGS(1); IGNORE;}
 <Normal>"\\usepackage"				{KILLARGS(1); IGNORE;}
 <Normal>"\\end"					{KILLARGS(1); IGNORE;}
-<Normal>"\\index"				{KILLARGS(1); SPACE;}
-<Normal>"\\footnote"				{KILLARGS(1); SPACE;}
+<Normal>"\\hypersetup"			{KILLARGS(1);}
+<Normal>"\\index"				{KILLARGS(1);}
+	/*<Normal>"\\footnote"				{KILLARGS(1); SPACE;}*/
 <Normal>"\\label"				{KILLARGS(1); IGNORE;}
+<Normal>"\\nameref"					{CITE(1); IGNORE;}
 <Normal>"\\pageref"				{CITE(1); IGNORE;}
 <Normal>"\\pagestyle"				{KILLARGS(1); IGNORE;}
 <Normal>"\\ref"					{CITE(1); IGNORE;}
-<Normal>"\\setcounter"				{KILLARGS(1); IGNORE;}
+<Normal>"\\setcounter"				{KILLARGS(2); IGNORE;}
+<Normal>"\\addtocounter"			{KILLARGS(2); IGNORE;}
+<Normal>"\\newcounter"				{ KILLARGS(1); }
+<Normal>"\\stepcounter"			{ KILLARGS(2); }
+
+<Normal>"\\fontspec"			{KILLARGS(1);}
+
+<Normal>"\\footnote"(\[([^\]])+\])?"{"		{
+							putchar('(');
+							footnoteLevel = currBracesLevel;
+							++currBracesLevel;
+							}
 <Normal>"\\verb" /* ignore \verb<ch>...<ch> */	{   if (fLatex) {
 						 	char verbchar, c;
 						 	verbchar = input();
 						 	while ((c = input()) != verbchar)
-							    if (c == '\n')
-								NEWLINE;
+							    /*if (c == '\n')
+								NEWLINE;*/
+								putchar(c);
 						    }
 						    IGNORE;
 						}
@@ -304,25 +346,29 @@
 <Define>"\n"					NEWLINE;
 <Define>.					;
 
-<Normal>"\\("		/* formula mode */	{LaBEGIN LaFormula; IGNORE;}
+<Normal>"\\("		/* formula mode */	{LaBEGIN LaFormula; NOUN;}
 <LaFormula>"\\)"				BEGIN Normal;
 <LaFormula>"\n"					NEWLINE;
+<LaFormula>{VERBSYMBOL}			VERBNOUN;
 <LaFormula>.					;
 
-<Normal>"\\["		/* display mode */	{LaBEGIN LaDisplay; IGNORE;}
+<Normal>"\\["		/* display mode */	{LaBEGIN LaDisplay; NOUN;}
 <LaDisplay>"\\]"				BEGIN Normal;
 <LaDisplay>"\n"					NEWLINE;
+<LaDisplay>{VERBSYMBOL}			VERBNOUN;
 <LaDisplay>.					;
 
-<Normal>"$$"		/* display mode */	{BEGIN Display; IGNORE;}
+<Normal>"$$"		/* display mode */	{BEGIN Display; NOUN;}
 <Display>"$$"					BEGIN Normal;
 <Display>"\n"					NEWLINE;
+<Display>{VERBSYMBOL}			VERBNOUN;
 <Display>.					;
 
-<Normal>"$"		/* math mode */		{BEGIN Math; IGNORE;}
+<Normal>"$"		/* math mode */		{BEGIN Math; NOUN;}
 <Math>"$"					BEGIN Normal;
 <Math>"\n"					NEWLINE;
 <Math>"\\$"					;
+<Math>{VERBSYMBOL}			VERBNOUN;
 <Math>.						;
 
 <Normal>"\\include"	/* process files */	{LaBEGIN LaInclude; IGNORE;}
@@ -329,7 +375,7 @@
 <LaInclude>[^{ \t\n}]+				{   IncludeFile(yytext);
 						    BEGIN Normal;
 						}
-<LaInclude>"\n"					NEWLINE;
+<LaInclude>"\n"+					NEWLINE;
 <LaInclude>.					;
 
 <Normal>"\\includeonly"				{BEGIN IncludeOnly; IGNORE;}
@@ -338,19 +384,29 @@
 							rgsbIncList[csbIncList++] = '\0';
 						    BEGIN Normal;
 						}
-<IncludeOnly>"\n"				NEWLINE;
+<IncludeOnly>"\n"+				NEWLINE;
 <IncludeOnly>.					;
 
+<Normal>"\\subfile"	/* process files */	{LaBEGIN LaSubfile; IGNORE;}
+<LaSubfile>[^{ \t\n}]+				{   IncludeFile(yytext);
+						    BEGIN Normal;
+						}
+<LaSubfile>"\n"+					NEWLINE;
+<LaSubfile>.					;
+
 <Normal>"\\input"				{BEGIN Input; IGNORE;}
 <Input>[^{ \t\n}]+				{   InputFile(yytext);
 						    BEGIN Normal;
 						}
-<Input>"\n"					NEWLINE;
+<Input>"\n"+					NEWLINE;
 <Input>.					;
 
+	/* escaping commands */
+<Normal>"\\slash"			putchar('/');
+
 <Normal>\\(aa|AA|ae|AE|oe|OE|ss)[ \t]*[ \t\n}] /* handle ligatures */	{(void)printf("%.2s", yytext+1);}
 <Normal>\\[OoijLl][ \t]*[ \t\n}]		{(void)printf("%.1s", yytext+1);}
-<Normal>"\\linebreak"				BEGIN LaBreak;
+<Normal>"\\linebreak"(\[[0-4]\])?			{NEWLINE;}	/*BEGIN LaBreak;*/
 
 <Normal>\\[a-zA-Z@]+	/* ignore other \cs */	{BEGIN Control; IGNORE;}
 <Normal>"\\ "					SPACE;
@@ -357,7 +413,7 @@
 <Normal>"\\\\"{Z}(\[[^\]]*\])?			NEWLINE;
 <Normal>\\.					IGNORE;
 <LaBreak>[0-4]?					{  if (yytext==NULL || strlen(yytext)==0
-							|| atoi(yytext)==4)
+							|| atoi(yytext)>=0)
 							NEWLINE;
 						BEGIN Normal;
 						}
@@ -364,14 +420,30 @@
 
 <Control>\\[a-zA-Z@]+				IGNORE;
 <Control>[a-zA-Z at 0-9]*[-'=`][^ \t\n{]*		IGNORE;
-<Control>"\n"					{BEGIN Normal; NEWLINE;}
-<Control>[ \t]*[{]*				{BEGIN Normal; IGNORE;}
+<Control>"\n"+					{BEGIN Normal; /*NEWLINE;*/}
+<Control>[ \t]*[{]+				{++currBracesLevel;BEGIN Normal; IGNORE;}
+<Control>[ \t]*				{BEGIN Normal; IGNORE;}
 <Control>.					{yyless(0);BEGIN Normal;}
 
-<Normal>[{}\\|]	/* special characters */	IGNORE;
-<Normal>[!?]"`"					IGNORE;
+<Normal>[\\|]	/* special characters */	IGNORE;
+<Normal>[!?]"`"				IGNORE;
 <Normal>~					SPACE;
+<Normal>-{2,3}				putchar('-');
+<Normal>``					putchar('"');
+<Normal>`					putchar('\'');
+<Normal>''					putchar('"');
+<Normal>,,					putchar('"');
 
+	/* braces */
+<Normal>"{"					{ ++currBracesLevel;
+							}
+<Normal>"}"					{
+							--currBracesLevel;
+							if (currBracesLevel == footnoteLevel) {
+								putchar(')');
+								footnoteLevel = -100;
+							}
+							SPACE;}
 <Normal>{W}[']*{W}				{   if (fWord)
 							(void)printf("%s\n", yytext);
 						    else
@@ -378,11 +450,13 @@
 							ECHO;
 						}
 <Normal>[0-9]+					if (!fWord) ECHO;
-<Normal>(.|\n)					if (!fWord) ECHO;
+<Normal>.					if (!fWord) ECHO;
+<Normal>"\n"					if (!fWord) NEWLINE;
+<Normal>("\t")+					if (!fWord) putchar('\t');
 
 <LaMacro>"\["					{ BEGIN LaOptArg; }
 <LaMacro>"{"					{ cOpenBrace++; }
-<LaMacro>"}"					{   cOpenBrace--;
+<LaMacro>"}""\n"{0,1}					{   cOpenBrace--;
 						    if (cOpenBrace == 0)
 						    {
 							if (--cArgs==0)
@@ -409,6 +483,7 @@
 <LaOptArg2>"\]"					BEGIN LaMacro2;	
 <LaOptArg2>.					;
 %%
+
 /******
 ** main --
 **	Set sbProgName to the base of arg 0.
@@ -488,14 +563,14 @@
 		    case CHWORDOPT:
 			fWord = 1;
 			break;
+			case CHREPLACE:
+			fReplace = 1;
+			break;
 		    default:
-#ifdef OS2
-			OS2UsageExit();
-#else
 			sbBadOpt[0] = *pch;
 			sbBadOpt[1] = '\0';
 			Warning("unknown option ignored -", sbBadOpt);
-#endif
+			UsageExit();
 		    }
 		iArgs++;
 	}
@@ -587,9 +662,10 @@
 SetEnvIgnore(const char *sbEnvList)
 {
 	char *sb;
-
 	sb = SafeMalloc(strlen(sbEnvList) + 1, "malloc for SetEnvIgnore failed");
 	(void) strcpy(sb, sbEnvList);
+
+	
 	csbEnvIgnore = SeparateList(sb, rgsbEnvIgnore, CHENVSEP, MAXENVS);
 	if (csbEnvIgnore == my_ERROR)
 	    ErrorExit("The environment list contains too many environments");
@@ -597,7 +673,7 @@
 
 /******
 ** BeginEnv -- checks to see if sbEnv is in the list rgsbEnvIgnore.  If it
-**	is, sbCurrentEnv is set to sbEnv.
+**	is, sbCurrentIgnoredEnv is set to sbEnv.
 ******/
 
 int
@@ -606,10 +682,10 @@
 	int	i;
 
 	if (!fLatex) return(0);
-	for (i = 0; i < csbEnvIgnore; i++)
+	for (i = 0; i < csbEnvIgnore; ++i)
 	    if (strcmp(sbEnv, rgsbEnvIgnore[i]) == 0) {
-		(void)strcpy(sbCurrentEnv, sbEnv);
-		return(1);
+			(void)strcpy(sbCurrentIgnoredEnv, sbEnv);
+			return(1);
 	    }
 	return(0);
 }
@@ -622,7 +698,7 @@
 EndEnv(const char *sbEnv)
 {
 	if (!fLatex) return(0);
-	if (strcmp(sbEnv, sbCurrentEnv) == 0)
+	if (strcmp(sbEnv, sbCurrentIgnoredEnv) == 0)
 	    return(1);
 	return(0);
 }
@@ -635,6 +711,8 @@
 void
 InputFile(char *sbFile)
 {
+	FILE	*TexOpen();
+
 	if (!fFollow)
 	    return;
 	rgfp[cfp++] = yyin;
@@ -657,6 +735,8 @@
 void
 IncludeFile(char *sbFile)
 {
+	FILE	*TexOpen();
+
 	if (!fFollow)
 	    return;
 	if (!InList(sbFile))
@@ -772,8 +852,9 @@
 
 	while (sbList && *sbList && csbList < csbMax) {
 	    rgsbList[csbList++] = sbList;
-	    if ((sbList = strchr(sbList, chSep)))
-		*sbList++ = '\0';
+	    if ((sbList = strchr(sbList, chSep))) {
+			*sbList++ = '\0';
+		}
 	}
 	return(sbList && *sbList ? my_ERROR : csbList);
 }
@@ -831,19 +912,23 @@
 	    /* character and it does not follow a '.' or a '/'      */
 	    if (pch != NULL && pch > &(sbFullPath[0])
                     && *(pch - 1) != '.' && *(pch - 1) != '/'
-		    && (fp = fopen(sbFullPath, "r")) != NULL)
-		return(fp);
+		    && (fp = fopen(sbFullPath, "r")) != NULL) {
+			return(fp);
+		}
 
 	    /* just base name, add .tex to the name */
 	    sbNew = SafeMalloc(strlen(sbFullPath) + 5, "malloc for TexOpen failed");
 	    (void)strcpy(sbNew, sbFullPath);
 	    (void)strcat(sbNew, ".tex");
-	    if ((fp = fopen(sbNew, "r")) != NULL)
-		return(fp);
+	    if ((fp = fopen(sbNew, "r")) != NULL) {
+			free(sbNew);
+			return(fp);
+		}
+		free(sbNew);
 
 	    /* try sbFile regardless */
 	    if ((fp = fopen(sbFullPath, "r")) != NULL)
-		return(fp);
+			return(fp);
 	}
 	return NULL;
 #else
@@ -892,24 +977,23 @@
 	(void)fprintf(stderr, "%s: error: %s\n", sbProgName, sb1);
 	exit(1);
 }
-#ifdef OS2
 
 /******
-** OS2UsageExit -- print OS/2 usage message and exit.
+** UsageExit -- print OS/2 usage message and exit.
 ******/
 
 void
-OS2UsageExit(void)
+UsageExit(void)
 {
-	(void)printf("\n%s [ -clnstw ] [ -e environment-list ] [ filename[.tex] ... ]\n",
+	(void)printf("\n%s [ -clnrstw ] [ -e environment-list ] [ filename[.tex] ... ]\n",
 		sbProgName);
 	puts("  -c  echo LaTeX \\cite, \\ref, and \\pageref values\n  \
 -e  <env-list> list of LaTeX environments to ignore\n  \
 -l  force latex mode\n  \
--n  do not follow \\input and \\include\n  \
+-n  do not follow \\input, \\include and \\subfile\n  \
+-r  replace math with \"noun\" and \"noun verbs noun\" to preserve grammar\n  \
 -s  replace control sequences with space\n  \
 -t  force tex mode\n  \
 -w  word only output");
 	exit(0);
 }
-#endif

Modified: trunk/Build/source/texk/detex/detex-src/detex.man
===================================================================
--- trunk/Build/source/texk/detex/detex-src/detex.man	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/detex.man	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,4 +1,4 @@
-.TH DETEX 1 "12 August 1993" "Purdue University"
+.TH DETEX 1L "12 August 1993" "Purdue University"
 .SH NAME
 detex \- a filter to strip \fITeX\fP commands from a .tex file.
 .SH SYNOPSIS
@@ -6,7 +6,7 @@
 [ \fB\-clnstw\fR ] [ \fB\-e\fI environment-list\fR ] [ \fIfilename\fR[.tex] ... ]
 .SH DESCRIPTION
 .I Detex
-(Version 2.6)
+(Version 2.8.3)
 reads each file in sequence, removes all comments and
 .I TeX
 control sequences
@@ -46,8 +46,8 @@
 .PP
 Text in various environment modes of
 .I LaTeX
-is ignored.  The default modes are array, eqnarray, equation, figure,
-mathmatica, picture, table and verbatim.  The
+is ignored.  The default modes are array, eqnarray, equation, longtable,
+picture, tabular and verbatim.  The
 .B \-e
 option can be used to specify a comma separated
 .I environment-list
@@ -71,6 +71,12 @@
 .I LaTeX
 environments.
 .PP
+The
+.B \-r
+option tries to naively replace $..$, $$..$$, \(..\) and \[..\]
+with nouns and verbs (in particular, "noun" and "verbs")
+in a way that keeps sentences readable.
+.PP
 If the
 .B \-w
 flag is given, the output is a word list, one `word' (string of two or more
@@ -110,7 +116,9 @@
 .I Detex
 ignores unrecognized option characters after printing a warning message.
 .SH AUTHOR
-Daniel Trinkle, Computer Science Department, Purdue University
+Originally written by Daniel Trinkle, Computer Science Department, Purdue University
+.PP
+Maintained by Piotr Kubowicz <https://github.com/pkubowicz/opendetex>.
 .SH BUGS
 .I Detex
 is not a complete

Deleted: trunk/Build/source/texk/detex/detex-src/lexout.c
===================================================================
--- trunk/Build/source/texk/detex/detex-src/lexout.c	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/lexout.c	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,6234 +0,0 @@
-/* A lexical scanner generated by flex */
-
-/* Scanner skeleton version:
- * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
- */
-
-#define FLEX_SCANNER
-#define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-
-#include <stdio.h>
-
-
-/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
-#ifdef c_plusplus
-#ifndef __cplusplus
-#define __cplusplus
-#endif
-#endif
-
-
-#ifdef __cplusplus
-
-#include <stdlib.h>
-#include <unistd.h>
-
-/* Use prototypes in function declarations. */
-#define YY_USE_PROTOS
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else	/* ! __cplusplus */
-
-#if __STDC__
-
-#define YY_USE_PROTOS
-#define YY_USE_CONST
-
-#endif	/* __STDC__ */
-#endif	/* ! __cplusplus */
-
-#ifdef __TURBOC__
- #pragma warn -rch
- #pragma warn -use
-#include <io.h>
-#include <stdlib.h>
-#define YY_USE_CONST
-#define YY_USE_PROTOS
-#endif
-
-#ifdef YY_USE_CONST
-#define yyconst const
-#else
-#define yyconst
-#endif
-
-
-#ifdef YY_USE_PROTOS
-#define YY_PROTO(proto) proto
-#else
-#define YY_PROTO(proto) ()
-#endif
-
-/* Returned upon end-of-file. */
-#define YY_NULL 0
-
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
- */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
-
-/* Enter a start condition.  This macro really ought to take a parameter,
- * but we do it the disgusting crufty way forced on us by the ()-less
- * definition of BEGIN.
- */
-#define BEGIN yy_start = 1 + 2 *
-
-/* Translate the current start state into a value that can be later handed
- * to BEGIN to return to the state.  The YYSTATE alias is for lex
- * compatibility.
- */
-#define YY_START ((yy_start - 1) / 2)
-#define YYSTATE YY_START
-
-/* Action number for EOF rule of a given start state. */
-#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
-/* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE yyrestart( yyin )
-
-#define YY_END_OF_BUFFER_CHAR 0
-
-/* Size of default input buffer. */
-#define YY_BUF_SIZE 16384
-
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-
-extern int yyleng;
-extern FILE *yyin, *yyout;
-
-#define EOB_ACT_CONTINUE_SCAN 0
-#define EOB_ACT_END_OF_FILE 1
-#define EOB_ACT_LAST_MATCH 2
-
-/* The funky do-while in the following #define is used to turn the definition
- * int a single C statement (which needs a semi-colon terminator).  This
- * avoids problems with code like:
- *
- * 	if ( condition_holds )
- *		yyless( 5 );
- *	else
- *		do_something_else();
- *
- * Prior to using the do-while the compiler would get upset at the
- * "else" because it interpreted the "if" statement as being all
- * done when it reached the ';' after the yyless() call.
- */
-
-/* Return all but the first 'n' matched characters back to the input stream. */
-
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up yytext. */ \
-		*yy_cp = yy_hold_char; \
-		YY_RESTORE_YY_MORE_OFFSET \
-		yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
-		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
-		} \
-	while ( 0 )
-
-#define unput(c) yyunput( c, yytext_ptr )
-
-/* The following is because we cannot portably get our hands on size_t
- * (without autoconf's help, which isn't available because we want
- * flex-generated scanners to compile on their own).
- */
-typedef unsigned int yy_size_t;
-
-
-struct yy_buffer_state
-	{
-	FILE *yy_input_file;
-
-	char *yy_ch_buf;		/* input buffer */
-	char *yy_buf_pos;		/* current position in input buffer */
-
-	/* Size of input buffer in bytes, not including room for EOB
-	 * characters.
-	 */
-	yy_size_t yy_buf_size;
-
-	/* Number of characters read into yy_ch_buf, not including EOB
-	 * characters.
-	 */
-	int yy_n_chars;
-
-	/* Whether we "own" the buffer - i.e., we know we created it,
-	 * and can realloc() it to grow it, and should free() it to
-	 * delete it.
-	 */
-	int yy_is_our_buffer;
-
-	/* Whether this is an "interactive" input source; if so, and
-	 * if we're using stdio for input, then we want to use getc()
-	 * instead of fread(), to make sure we stop fetching input after
-	 * each newline.
-	 */
-	int yy_is_interactive;
-
-	/* Whether we're considered to be at the beginning of a line.
-	 * If so, '^' rules will be active on the next match, otherwise
-	 * not.
-	 */
-	int yy_at_bol;
-
-	/* Whether to try to fill the input buffer when we reach the
-	 * end of it.
-	 */
-	int yy_fill_buffer;
-
-	int yy_buffer_status;
-#define YY_BUFFER_NEW 0
-#define YY_BUFFER_NORMAL 1
-	/* When an EOF's been seen but there's still some text to process
-	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
-	 * shouldn't try reading from the input source any more.  We might
-	 * still have a bunch of tokens to match, though, because of
-	 * possible backing-up.
-	 *
-	 * When we actually see the EOF, we change the status to "new"
-	 * (via yyrestart()), so that the user can continue scanning by
-	 * just pointing yyin at a new input file.
-	 */
-#define YY_BUFFER_EOF_PENDING 2
-	};
-
-static YY_BUFFER_STATE yy_current_buffer = 0;
-
-/* We provide macros for accessing buffer states in case in the
- * future we want to put the buffer states in a more general
- * "scanner state".
- */
-#define YY_CURRENT_BUFFER yy_current_buffer
-
-
-/* yy_hold_char holds the character lost when yytext is formed. */
-static char yy_hold_char;
-
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-
-
-int yyleng;
-
-/* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
-static int yy_init = 1;		/* whether we need to initialize */
-static int yy_start = 0;	/* start state number */
-
-/* Flag which is used to allow yywrap()'s to do buffer switches
- * instead of setting up a fresh yyin.  A bit of a hack ...
- */
-static int yy_did_buffer_switch_on_eof;
-
-void yyrestart YY_PROTO(( FILE *input_file ));
-
-void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
-void yy_load_buffer_state YY_PROTO(( void ));
-YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
-void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
-void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
-#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
-YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
-YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
-YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
-static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
-static void yy_flex_free YY_PROTO(( void * ));
-
-#define yy_new_buffer yy_create_buffer
-
-#define yy_set_interactive(is_interactive) \
-	{ \
-	if ( ! yy_current_buffer ) \
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-	yy_current_buffer->yy_is_interactive = is_interactive; \
-	}
-
-#define yy_set_bol(at_bol) \
-	{ \
-	if ( ! yy_current_buffer ) \
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
-	yy_current_buffer->yy_at_bol = at_bol; \
-	}
-
-#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
-
-typedef unsigned char YY_CHAR;
-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
-typedef int yy_state_type;
-extern char *yytext;
-#define yytext_ptr yytext
-
-static yy_state_type yy_get_previous_state YY_PROTO(( void ));
-static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
-static int yy_get_next_buffer YY_PROTO(( void ));
-static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
-
-/* Done after the current pattern has been matched and before the
- * corresponding action - sets up yytext.
- */
-#define YY_DO_BEFORE_ACTION \
-	yytext_ptr = yy_bp; \
-	yyleng = (int) (yy_cp - yy_bp); \
-	yy_hold_char = *yy_cp; \
-	*yy_cp = '\0'; \
-	yy_c_buf_p = yy_cp;
-
-#define YY_NUM_RULES 141
-#define YY_END_OF_BUFFER 142
-static yyconst short int yy_accept[708] =
-    {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  121,  121,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      134,  134,    0,    0,    0,    0,    0,    0,  117,  117,
-        0,    0,  142,  141,   79,   78,   77,   91,   90,   91,
-      102,  105,  104,  103,  107,  109,  108,   96,   94,   93,
-       96,  128,  128,   92,    1,  127,  128,  123,  123,  125,
-      122,  121,  120,  119,  122,  122,  121,   11,   11,   10,
-        9,   11,   87,   86,   87,   18,   17,   15,   16,   14,
-       13,   14,   83,   82,   83,   98,  100,   99,  132,  129,
-
-      130,  131,  134,  133,  138,  135,  136,  137,  140,  139,
-        6,    6,    7,  117,   42,   41,   43,   89,  102,  107,
-       95,  124,   88,    1,  127,    0,  126,  116,  114,   80,
-      113,  113,  113,  113,   84,  115,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-      113,  113,  113,  121,  121,  119,  119,    0,  118,    0,
-        0,    9,    0,    0,    0,   85,   15,    0,   81,   98,
-      134,    6,    0,   42,  126,  113,  113,  111,  111,  115,
-        0,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-
-      113,  113,  113,  113,  113,  113,  113,  113,  113,    0,
-        0,    0,    0,  110,  110,    0,  115,  113,  113,  113,
-      113,  113,   76,  113,   64,  113,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,   70,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,    0,    0,   12,    0,  113,
-      113,  113,  113,  113,  113,   60,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,   51,  113,  113,  113,
-      113,  113,  113,   31,  113,  113,  113,  113,  113,  113,
-
-      113,  113,  113,  113,   72,  113,  113,    0,    0,    0,
-        0,  113,  113,    3,  113,  113,  113,   45,  113,  113,
-      113,  113,  113,  113,  113,  113,   65,  106,   67,  113,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,   51,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,    0,
-        0,    0,    0,  113,  113,    0,    0,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,    0,    0,    0,    0,
-        0,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-      113,  113,   35,  113,  113,  113,  113,  113,  113,  113,
-
-      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-       33,  113,    0,    0,    0,    0,    0,  113,    0,    0,
-        0,  113,  113,    0,    0,   57,  113,  113,  113,  113,
-      113,  113,  113,  113,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   21,    0,    0,    0,   97,  113,
-      113,  113,  113,  113,  113,   68,  113,  113,  113,  113,
-      113,  113,  113,   32,  113,   52,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   19,    0,    0,    0,
-        0,    0,    0,  113,  113,    0,  113,   59,   47,  113,
-
-      113,  113,   50,   66,    0,   21,   21,    0,    0,    0,
-        0,    0,  113,  113,  113,  113,  113,  113,  113,  113,
-      113,  113,   34,  113,  113,  113,  113,   36,   52,  113,
-      113,  113,  113,  113,  113,  113,  113,  113,  113,    0,
-       19,   19,    0,    0,    0,    0,    0,    0,    0,    0,
-      113,  113,    0,  113,  113,  113,  113,   48,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  113,
-      113,  112,  113,  113,   24,  113,   49,   69,   55,  113,
-      113,   37,   39,  113,   25,  113,  113,  113,  113,  113,
-      113,   46,  113,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    8,    0,    4,    0,  113,
-        0,    0,    0,  113,  113,  113,  113,    0,    0,    0,
-       22,  113,  113,   73,  113,   30,   55,   38,  113,   37,
-       71,   29,  113,   27,   53,  113,  113,   63,    0,    0,
-        0,   20,    0,   26,    0,    0,    0,    0,    0,    0,
-      113,   44,  113,  113,  113,  101,  113,  113,   28,   53,
-      113,  113,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   58,  113,  113,  113,  113,
-       74,  113,   56,    0,    0,    0,    0,   23,    0,   62,
-       61,  113,  113,   54,   56,    0,    5,    0,  113,   75,
-
-       54,    0,    2,   40,   40,   40,    0
-    } ;
-
-static yyconst short int yy_base[767] =
-    {   0,
-        0,    0,    0,    1,    2,    3,    5,    8,   11,   14,
-        6,    9,  107,  201,  319,  434,  549,  664,   12,   15,
-      778,  894,   16,   17,   18,   19,   22,   25,   26,   75,
-     1972, 1971,   78,  287,   20,   23,   34,   37,   10,   15,
-        2,   29, 2062,13692,13692,13692,13692,13692,13692, 2025,
-        0,13692,13692,13692,    0,13692,13692,13692,13692,13692,
-     2023,13692, 1962, 2020,    0,   20, 2012,  988,13692,13692,
-    13692,  227,13692,    0,   39,    0, 1927,13692,  230,  233,
-        0,  345,13692,13692, 1951,13692,13692,    0,13692,13692,
-    13692, 1942,13692,13692, 2001,    0,13692,13692,13692,13692,
-
-    13692,13692,    0,13692,13692,13692,13692,13692,13692,13692,
-        0,    0, 1940,13692,    0,13692,13692,13692,    0,    0,
-    13692,13692,13692,    0,  282, 1998, 1997,13692,13692,13692,
-        0,   14,  110,  460,13692,    6,    2,   13,    1,    4,
-     1925,   42, 1919,  350,  578, 1932,  580, 1933,  246,  264,
-     1928, 1912,   31,  439, 1903,    0,    0,  547,    0,  440,
-      567,    0,  569, 1919, 1922,13692,    0, 1911,13692,    0,
-        0,    0, 1910,    0,    0,    0,  436,  442,13692, 1928,
-     1924, 1916, 1912, 1916, 1894, 1901, 1906, 1888, 1886, 1874,
-       60,  134,  148, 1886, 1873, 1863,  238, 1876,  458, 1862,
-
-     1859, 1865, 1878,   22,  349, 1854, 1872, 1857,  233, 1850,
-     1842, 1855, 1854,  446,13692, 1860,13692,  145, 1847,  467,
-     1850, 1836, 1841, 1816,    0, 1824, 1822, 1813, 1822, 1829,
-     1813, 1819, 1799, 1814, 1813,  492, 1802,  360, 1781, 1787,
-     1792, 1787, 1794, 1788, 1767, 1774, 1764,  495, 1764, 1765,
-     1732,  355, 1749, 1741, 1748, 1739, 1745,13692,  574, 1720,
-     1715, 1704, 1696, 1706, 1692,    0, 1692, 1690, 1690, 1687,
-     1692, 1683, 1677, 1688, 1669, 1664, 1665, 1670, 1662, 1648,
-     1648, 1654, 1657,  366, 1650, 1628, 1696, 1636, 1635, 1616,
-     1608, 1611, 1627,    0, 1622, 1616, 1609, 1618, 1607,  360,
-
-     1616, 1613, 1598, 1610,    0, 1593, 1596, 1582, 1596,  670,
-      679, 1584, 1574,  681, 1584, 1572, 1560, 1582, 1578, 1577,
-     1563, 1575, 1564,  780, 1563, 1563,    0,    0,    0, 1546,
-     1527, 1515, 1522, 1512, 1518, 1527, 1509, 1510, 1502,13692,
-     1523, 1520, 1519, 1506, 1505, 1491, 1486, 1471, 1464, 1469,
-      582, 1479, 1479, 1461, 1462, 1452, 1469,  896, 1464, 1467,
-     1447,  683, 1449, 1448, 1439,  685,  807, 1426, 1431, 1425,
-     1421, 1432, 1420, 1431, 1419, 1382, 1102,  670,  860, 1114,
-        0, 1008, 1392, 1391, 1382, 1382, 1379, 1368, 1336, 1313,
-     1293, 1314,    0, 1299, 1292, 1290, 1302, 1301, 1277, 1281,
-
-     1281, 1280, 1286, 1287, 1286, 1278, 1265, 1265, 1280, 1267,
-        0, 1262, 1129,  881,  981, 1186,    0, 1183, 1265, 1259,
-     1249, 1252, 1242, 1013, 1227,    0, 1221, 1233, 1212, 1218,
-     1212, 1214, 1224, 1221, 1218, 1017, 1149, 1208,  465, 1211,
-     1200, 1198,  250, 1188,  782, 1110, 1179, 1294,  493, 1197,
-     1191, 1167, 1164, 1181, 1167,    0, 1155, 1150, 1141, 1151,
-     1139, 1136, 1135,    0, 1125, 1202, 1115, 1108, 1110, 1115,
-     1117, 1111, 1109, 1106, 1080, 1093, 1304, 1267, 1203, 1075,
-      471, 1076, 1063, 1040,  695, 1032,  786, 1198, 1255, 1375,
-     1042, 1032, 1039, 1033, 1034, 1034, 1033,    0,    0, 1020,
-
-      498, 1007,    0,    0, 1385,  789,  810, 1456, 1397, 1407,
-     1471,    0, 1011, 1011, 1011, 1004,  973,  979,  971,  967,
-      950,  944,    0,  935,  935,  923,  922,    0,13692,  940,
-      935,  905,  887,  873,  876,  887,  871,  844,  854, 1505,
-      892,  911, 1542, 1422, 1490, 1591,    0, 1015, 1273,  859,
-      839, 1283,  837,  828,  815,  817,  807,    0, 1617, 1599,
-     1602,  810,  496,  819,  808,  765,  706,  761, 1280,  774,
-      762,    0,  769,  731,    0,  720,    0,    0,  796,  695,
-      716,  767,    0,  692,    0,  699,  698,  696,  650,  643,
-      661,    0,  656, 1692, 1652, 1720,  644,  599,  655,  618,
-
-      605,  708,  600, 1287, 1361,13692, 1364,13692,  594,  603,
-     1299, 1770,  597,  600,  586,  587,  556, 1785, 1486, 1557,
-    13692,  533,  523,    0,  533,    0,13692,    0,  531,13692,
-        0,    0,  524,    0,  567,  497,  486,    0, 1819, 1603,
-     1606,13692,  464,    0, 1856, 1804, 1887, 1913,    0,  465,
-      444,    0,  413,  419,  421,    0,  396,  396,    0,13692,
-      383,  389,  355, 1940, 1948, 1950,  350,  600,  314,  303,
-      239,  711,  234, 1678,  234,    0,  227,  195,  190,  184,
-        0,  182,  203, 1724, 2022, 1753, 1756,13692,  128,    0,
-        0,  103,   52,  125,13692, 1773,13692, 1800,    7,    0,
-
-    13692, 1854,13692, 2074,    0, 2133,13692, 2255, 2510, 2765,
-     3020, 3275, 3530, 3785, 4040, 4295, 4550, 4805, 5060, 5315,
-     5570, 5825, 6080, 6335, 6590, 6845, 7100, 7355, 7610, 7865,
-     8120, 8337, 8459, 8714, 8931, 8990, 9048, 9106, 9228, 9483,
-     9738, 9993,10248,10503,10758,10975,11059,11118,11240,11457,
-    11516,11574,11632,11754,12009,12264,12519,12710,12769,12891,
-    13082,13140,13198,13256,13314,13436
-    } ;
-
-static yyconst short int yy_def[767] =
-    {   0,
-      708,  708,  709,  709,  710,  710,  711,  711,  712,  712,
-      713,  713,  714,  714,  715,  715,  716,  716,  717,  717,
-      718,  718,  719,  719,  720,  720,  721,  721,  722,  722,
-      723,  723,  724,  724,  725,  725,  726,  726,  727,  727,
-      728,  728,  707,  707,  707,  707,  707,  707,  707,  707,
-      729,  707,  707,  707,  730,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  731,  707,  732,  733,  707,  707,
-      707,  707,  707,  734,  735,  736,  707,  707,  707,  707,
-      737,  707,  707,  707,  707,  707,  707,  738,  707,  707,
-      707,  707,  707,  707,  707,  739,  707,  707,  707,  707,
-
-      707,  707,  740,  707,  707,  707,  707,  707,  707,  707,
-      741,  741,  707,  707,  742,  707,  707,  707,  743,  744,
-      707,  707,  707,  745,  707,  746,  747,  707,  707,  707,
-      748,  748,  748,  748,  707,  707,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  707,  707,  749,  749,  750,  751,  707,
-      707,  752,  707,  707,  707,  707,  753,  707,  707,  754,
-      755,  756,  707,  757,  758,  759,  759,  707,  707,  707,
-      760,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  707,
-      707,  707,  707,  707,  707,  760,  707,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  707,  707,  707,  707,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-
-      759,  759,  759,  759,  759,  759,  759,  707,  707,  707,
-      707,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  707,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  707,
-      707,  707,  707,  759,  759,  707,  707,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  707,  707,  707,  707,
-      761,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  707,  707,  707,  707,  762,  759,  707,  707,
-      707,  759,  759,  707,  707,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  761,  707,  707,  707,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  762,  707,  707,  707,
-      707,  707,  707,  759,  759,  707,  759,  759,  759,  759,
-
-      759,  759,  759,  759,  707,  707,  707,  707,  707,  707,
-      707,  763,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  707,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  707,
-      707,  707,  707,  707,  707,  707,  764,  707,  707,  707,
-      759,  759,  707,  759,  759,  759,  759,  759,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  763,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  764,  707,  707,  707,  707,  707,  759,
-      707,  707,  707,  759,  759,  759,  759,  707,  707,  707,
-      707,  759,  759,  759,  759,  759,  707,  759,  759,  707,
-      759,  759,  759,  759,  759,  759,  759,  759,  707,  707,
-      707,  707,  707,  759,  707,  707,  707,  707,  765,  707,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  707,
-      759,  759,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  765,  707,  759,  759,  759,  759,  759,
-      759,  759,  759,  707,  707,  707,  707,  707,  707,  759,
-      759,  759,  759,  759,  707,  707,  707,  707,  759,  759,
-
-      707,  707,  707,  766,  766,  766,    0,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707
-    } ;
-
-static yyconst short int yy_nxt[13949] =
-    {   0,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,   46,
-       46,   49,   49,   52,   53,   59,   52,   53,   59,   56,
-       57,   84,   56,   57,   84,   91,   91,   94,   94,   44,
-       97,   98,   44,   97,   98,   44,   52,   50,   50,   52,
-      707,   60,   56,  112,   60,   56,  112,  180,   52,  707,
-      707,   52,  707,   97,  707,  707,   97,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  114,  125,  125,  125,
-      125,  125,  125,  125,  125,  125,  125,  157,  177,  707,
-      707,  707,  177,  157,   44,  707,  707,   44,  707,  707,
-      707,  707,  707,  707,  707,  707,  181,   61,  177,  157,
-
-       61,  182,  177,   85,  187,  185,   85,   92,   92,   95,
-       95,  186,  110,  183,  188,  110,  100,  184,  178,  179,
-      247,  704,   47,   47,  116,  113,  117,   52,  113,   54,
-       52,  208,   54,   56,  157,   56,   56,  248,   56,   63,
-      190,  178,   64,   65,   97,  209,   97,   97,  101,   97,
-      102,  116,  191,  117,   66,   66,   66,   66,   66,   66,
-       66,   66,   66,   66,  227,  100,  701,  700,  106,   63,
-      228,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,  101,   68,  102,
-
-      107,  699,  108,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   69,
-       69,   69,   70,   63,  179,  154,   64,   65,  160,  160,
-      229,  160,  160,  698,  695,  230,  231,  232,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   66,  154,  233,
-      260,  160,  261,   63,  160,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,  694,   68,  693,  692,  691,   44,   67,   67,   67,
-
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       67,   67,   67,   69,   69,   69,   70,   72,   73,  125,
-      125,  125,  125,  125,  125,  125,  125,  125,  125,  254,
-      237,  690,  198,  689,  255,  686,  199,  686,  506,  155,
-       72,  238,  161,  163,  163,  161,  200,   74,  178,  179,
-      201,  202,  203,   74,  204,  506,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,  163,  106,  177,   74,
-      205,  178,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-
-       75,   75,   75,   75,   75,   75,   75,   75,   75,  107,
-       76,  108,  686,  686,   74,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   77,   72,   73,  214,  215,  249,  154,  160,  160,
-      178,  179,  303,  164,  214,  215,  285,  286,  250,  193,
-      352,  686,  165,  684,  335,   72,  304,  214,  178,  179,
-      154,  160,   74,  178,  179,  287,  353,  214,   74,  336,
-      337,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,  178,  683,  682,   74,  681,  680,   75,   75,   75,
-
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,  679,   76,  678,  677,  177,   74,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   75,   77,   79,   80,  240,
-      215,  155,  161,  506,  676,  675,  179,  241,  663,  541,
-      215,  263,  242,  506,  264,  163,  163,  163,  163,  541,
-       79,  265,  310,  310,  179,  157,  178,  179,  178,  179,
-      280,  157,  281,  297,  619,  513,  556,  662,  163,  282,
-
-      163,  661,  298,  514,  619,  310,  283,  157,  660,  178,
-      299,  178,  557,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,  659,
-      658,  657,  157,  656,  655,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   82,   79,   80,  194,  164,  654,  164,  310,  310,
-      177,  404,  195,  653,  165,  405,  165,  362,  362,  366,
-      366,  362,  362,  366,  366,   79,  311,  640,  686,  652,
-
-      406,  310,  179,  651,  179,  650,  644,  640,  686,  643,
-      362,  640,  366,  640,  362,  379,  366,  380,  380,  380,
-      380,  380,  380,  380,  380,  380,  380,  640,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,  640,  640,  638,  637,  636,  635,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   82,   87,  377,  377,
-      507,  507,  311,  541,  542,  542,  363,  507,  507,  634,
-
-      363,  633,  632,  367,  619,  631,  640,  367,  630,  686,
-      541,  377,  629,  507,  628,  424,  424,  542,  507,  507,
-      507,  619,  378,  640,  378,  379,  686,  380,  380,  380,
-      380,  380,  380,  380,  380,  380,  380,  627,  424,  626,
-      625,  507,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,  624,  623,
-      622,  381,  619,  619,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-
-      542,  542,   89,   87,  413,  413,  425,  435,  435,  435,
-      435,  435,  435,  435,  435,  435,  435,  619,  619,  542,
-      542,  619,  617,  542,  616,  615,  415,  413,  416,  416,
-      416,  416,  416,  416,  416,  416,  416,  416,  414,  614,
-      414,  415,  542,  416,  416,  416,  416,  416,  416,  416,
-      416,  416,  416,  613,  610,  609,  593,  592,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,  591,  590,  589,  417,  588,  587,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,  446,  446,   89,  129,
-      586,  424,  424,  605,  605,  436,  436,  130,  477,  477,
-      477,  477,  477,  477,  477,  477,  477,  477,  585,  446,
-      584,  583,  582,  581,  424,  580,  605,  579,  436,  447,
-      578,  131,  132,  131,  131,  131,  131,  131,  131,  131,
-      131,  131,  131,  133,  131,  131,  134,  131,  131,  131,
-      131,  131,  131,  131,  131,  131,  131,  131,  135,  136,
-      577,  576,  575,  574,  137,  138,  139,  140,  141,  142,
-      131,  143,  144,  133,  131,  145,  131,  146,  147,  148,
-
-      131,  149,  150,  151,  152,  153,  131,  131,  131,  131,
-      377,  377,  425,  573,  438,  439,  440,  572,  446,  446,
-      571,  441,  436,  436,  570,  442,  558,  555,  443,  554,
-      448,  444,  553,  377,  552,  551,  550,  413,  413,  606,
-      549,  446,  548,  541,  378,  436,  378,  379,  541,  380,
-      380,  380,  380,  380,  380,  380,  380,  380,  380,  437,
-      413,  380,  380,  380,  380,  380,  380,  380,  380,  380,
-      380,  414,  541,  414,  415,  541,  416,  416,  416,  416,
-      416,  416,  416,  416,  416,  416,  541,  446,  446,  539,
-      538,  488,  488,  381,  478,  478,  505,  505,  505,  505,
-
-      505,  505,  505,  505,  505,  505,  488,  488,  537,  536,
-      446,  438,  439,  440,  488,  535,  534,  478,  441,  533,
-      417,  532,  442,  531,  489,  443,  436,  436,  444,  488,
-      530,  479,  448,  416,  416,  416,  416,  416,  416,  416,
-      416,  416,  416,  529,  528,  527,  526,  525,  524,  436,
-      540,  540,  540,  540,  540,  540,  540,  540,  540,  540,
-      523,  522,  521,  488,  488,  435,  435,  435,  435,  435,
-      435,  435,  435,  435,  435,  478,  478,  520,  519,  518,
-      517,  607,  607,  480,  481,  482,  488,  516,  620,  620,
-      483,  611,  611,  515,  484,  641,  641,  485,  478,  506,
-
-      486,  448,  508,  508,  607,  490,  506,  611,  611,  506,
-      506,  620,  478,  478,  611,  438,  439,  440,  641,  506,
-      490,  504,  441,  503,  502,  508,  442,  501,  500,  443,
-      611,  499,  444,  498,  497,  478,  509,  496,  509,  510,
-      495,  511,  511,  511,  511,  511,  511,  511,  511,  511,
-      511,  477,  477,  477,  477,  477,  477,  477,  477,  477,
-      477,  494,  493,  492,  480,  481,  482,  491,  476,  605,
-      605,  483,  607,  607,  475,  484,  474,  490,  485,  473,
-      472,  486,  471,  543,  543,  512,  470,  469,  468,  467,
-      466,  465,  605,  436,  436,  607,  464,  608,  463,  462,
-
-      461,  480,  481,  482,  621,  612,  543,  460,  483,  459,
-      458,  642,  484,  457,  456,  485,  436,  544,  486,  544,
-      545,  612,  546,  546,  546,  546,  546,  546,  546,  546,
-      546,  546,  505,  505,  505,  505,  505,  505,  505,  505,
-      505,  505,  510,  455,  511,  511,  511,  511,  511,  511,
-      511,  511,  511,  511,  559,  559,  559,  559,  559,  559,
-      559,  559,  559,  559,  508,  508,  547,  545,  454,  546,
-      546,  546,  546,  546,  546,  546,  546,  546,  546,  560,
-      560,  453,  438,  439,  440,  606,  452,  508,  608,  441,
-      451,  450,  449,  442,  620,  620,  443,  434,  509,  444,
-
-      509,  510,  560,  511,  511,  511,  511,  511,  511,  511,
-      511,  511,  511,  478,  478,  433,  561,  620,  511,  511,
-      511,  511,  511,  511,  511,  511,  511,  511,  432,  431,
-      430,  429,  428,  427,  426,  423,  478,  594,  594,  594,
-      594,  594,  594,  594,  594,  594,  594,  512,  422,  421,
-      543,  543,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  420,  419,  418,  620,  620,  412,  562,  563,
-      564,  411,  410,  543,  409,  565,  408,  407,  403,  566,
-      402,  401,  567,  400,  544,  568,  544,  545,  620,  546,
-      546,  546,  546,  546,  546,  546,  546,  546,  546,  595,
-
-      595,  399,  480,  481,  482,  398,  397,  560,  560,  483,
-      621,  641,  641,  484,  641,  641,  485,  396,  395,  486,
-      394,  393,  595,  392,  391,  560,  560,  390,  389,  388,
-      560,  387,  386,  547,  641,  385,  596,  641,  546,  546,
-      546,  546,  546,  546,  546,  546,  546,  546,  560,  618,
-      618,  618,  618,  618,  618,  618,  618,  618,  618,  384,
-      595,  595,  383,  382,  559,  559,  559,  559,  559,  559,
-      559,  559,  559,  559,  376,  375,  374,  373,  372,  371,
-      370,  621,  369,  595,  368,  365,  687,  687,  597,  598,
-      599,  364,  361,  360,  359,  600,  562,  563,  564,  601,
-
-      595,  595,  602,  565,  358,  603,  357,  566,  356,  687,
-      567,  355,  354,  568,  562,  563,  564,  351,  350,  349,
-      348,  565,  347,  595,  346,  566,  345,  642,  567,  344,
-      642,  568,  696,  696,  343,  342,  341,  340,  339,  594,
-      594,  594,  594,  594,  594,  594,  594,  594,  594,  597,
-      598,  599,  338,  334,  333,  696,  600,  332,  331,  330,
-      601,  687,  687,  602,  687,  687,  603,  639,  639,  639,
-      639,  639,  639,  639,  639,  639,  639,  329,  645,  645,
-      328,  696,  696,  327,  687,  326,  325,  687,  324,  597,
-      598,  599,  323,  560,  560,  322,  600,  321,  320,  319,
-
-      601,  645,  688,  602,  696,  318,  603,  317,  702,  702,
-      316,  315,  646,  314,  646,  647,  560,  648,  648,  648,
-      648,  648,  648,  648,  648,  648,  648,  595,  595,  313,
-      312,  702,  618,  618,  618,  618,  618,  618,  618,  618,
-      618,  618,  309,  308,  307,  306,  305,  302,  697,  647,
-      595,  648,  648,  648,  648,  648,  648,  648,  648,  648,
-      648,  649,  702,  702,  645,  645,  639,  639,  639,  639,
-      639,  639,  639,  639,  639,  639,  301,  688,  300,  296,
-      688,  295,  562,  563,  564,  702,  294,  645,  293,  565,
-      292,  291,  290,  566,  289,  288,  567,  697,  646,  568,
-
-      646,  647,  284,  648,  648,  648,  648,  648,  648,  648,
-      648,  648,  648,  279,  278,  277,  597,  598,  599,  276,
-      275,  665,  665,  600,  703,  274,  273,  601,  272,  271,
-      602,  270,  269,  603,  664,  664,  664,  664,  664,  664,
-      664,  664,  664,  664,  665,  268,  267,  649,  665,  665,
-      266,  262,  217,  259,  258,  257,  665,  665,  666,  256,
-      648,  648,  648,  648,  648,  648,  648,  648,  648,  648,
-      253,  665,  252,  251,  246,  245,  244,  243,  703,  665,
-      239,  236,  235,  234,  226,  225,  224,  664,  664,  664,
-      664,  664,  664,  664,  664,  664,  664,  685,  685,  685,
-
-      685,  685,  685,  685,  685,  685,  685,  223,  222,  221,
-      667,  668,  669,  220,  219,  218,  217,  670,  181,  213,
-      212,  671,  211,  210,  672,  155,  207,  673,  206,  197,
-      665,  665,  196,  192,  189,  126,  126,  667,  668,  669,
-      173,  169,  168,  166,  670,  667,  668,  669,  671,  155,
-      126,  672,  670,  665,  673,  123,  671,  122,  121,  672,
-      118,  707,  673,  104,  104,  707,  707,  707,  707,  685,
-      685,  685,  685,  685,  685,  685,  685,  685,  685,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  667,
-      668,  669,  707,  707,  707,  707,  670,  707,  707,  707,
-      671,  707,  707,  672,  707,  707,  673,  706,  706,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  707,  707,  707,  707,  707,  707,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  707,  707,  707,  707,  707,  707,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
-       51,   51,   51,   51,   51,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   58,   58,   58,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       62,   62,   62,   62,   62,   62,   62,   62,   62,   62,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   71,   71,   71,   71,   78,   78,   78,   78,   78,
-
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
-
-       83,   83,   83,   83,   83,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  103,  103,  103,  103,  103,
-      103,  103,  103,  103,  103,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
-      109,  109,  109,  109,  109,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,   44,   44,   44,   44,   44,
-       44,   44,   44,   44,   44,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-
-      115,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      119,  119,  119,  119,  119,  119,  119,  119,  707,  707,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  707,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  707,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  707,  119,  707,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  120,  120,  120,  120,  120,
-      120,  120,  120,  707,  707,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  707,  120,  120,  120,
-
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  707,  120,  707,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  707,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  127,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  707,  707,  707,
-      707,  707,  707,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  707,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-
-      128,  128,  128,  128,  128,  128,  128,  128,  128,  128,
-      128,  128,  128,  128,  156,  156,  156,  156,  156,  156,
-      156,  156,  707,  707,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  707,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  707,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  158,
-      707,  707,  707,  707,  707,  158,  707,  707,  158,  158,
-      158,  158,  158,  158,  158,  158,  158,  158,  707,  707,
-      707,  158,  707,  707,  158,  158,  158,  158,  158,  158,
-
-      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
-      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
-      158,  707,  707,  707,  707,  707,  158,  158,  158,  158,
-      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
-      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
-      158,  158,  158,  159,  159,  159,  159,  159,  159,  159,
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-      707,  707,  707,  707,  707,  707,  159,  159,  159,  159,
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-      159,  159,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  707,  707,
-      707,  707,  707,  707,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  167,  167,  707,  707,  707,  707,
-
-      707,  707,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  167,  167,  167,  167,  170,  170,
-      170,  170,  170,  170,  170,  170,  707,  707,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  707,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      707,  170,  707,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  707,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  707,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  174,  174,  174,  174,  174,  174,  174,
-
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  707,  174,  707,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  119,  119,
-      119,  119,  119,  119,  119,  119,  707,  707,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  707,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  707,  119,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      707,  119,  707,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
-
-      119,  119,  119,  120,  120,  120,  120,  120,  120,  120,
-      120,  707,  707,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  707,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  707,  120,  707,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  707,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-
-      124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
-      124,  124,  124,  175,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  707,  707,  707,  707,  707,
-      707,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  127,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  707,
-      707,  707,  707,  707,  707,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-      127,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-
-      176,  176,  176,  176,  176,  176,  176,  176,  707,  707,
-      707,  707,  707,  707,  176,  176,  176,  176,  176,  176,
-      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-      156,  156,  156,  156,  156,  156,  156,  156,  707,  707,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  707,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  707,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  156,  156,  156,  156,  156,
-      156,  156,  156,  156,  156,  158,  707,  707,  707,  707,
-
-      707,  158,  707,  707,  158,  158,  158,  158,  158,  158,
-      158,  158,  158,  158,  707,  707,  707,  158,  707,  707,
-      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
-      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
-      158,  158,  158,  158,  158,  158,  158,  707,  707,  707,
-      707,  707,  158,  158,  158,  158,  158,  158,  158,  158,
-      158,  158,  158,  158,  158,  158,  158,  158,  158,  158,
-      158,  158,  158,  158,  158,  158,  158,  158,  158,  159,
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-
-      159,  159,  159,  159,  159,  159,  707,  707,  707,  707,
-      707,  707,  159,  159,  159,  159,  159,  159,  159,  159,
-      159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
-      159,  159,  159,  159,  159,  159,  159,  159,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  707,  707,  707,  707,  707,  707,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
-      162,  162,  162,  162,  162,  162,  167,  167,  167,  167,
-
-      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  707,  707,  707,  707,  707,  707,  167,  167,
-      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  167,  167,  167,  167,  167,  167,
-      167,  167,  167,  167,  170,  170,  170,  170,  170,  170,
-      170,  170,  707,  707,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  707,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  707,  170,  707,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  170,
-
-      170,  170,  170,  170,  170,  170,  170,  170,  170,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-
-      171,  707,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  171,  171,  171,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  707,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
-      172,  172,  172,  172,  172,  172,  172,  172,  172,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  707,  174,  707,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-      174,  174,  174,  174,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-
-      707,  707,  707,  707,  707,  707,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
-      175,  175,  176,  176,  176,  176,  176,  176,  176,  176,
-      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-      176,  176,  176,  176,  176,  176,  176,  176,  176,  707,
-      707,  707,  707,  707,  707,  176,  176,  176,  176,  176,
-      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-      176,  176,  176,  176,  176,  176,  176,  176,  176,  176,
-      176,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-      216,  216,  216,  216,  216,  216,  445,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
-      445,  445,  707,  707,  707,  707,  707,  707,  445,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
-      445,  445,  445,  445,  445,  445,  445,  445,  445,  445,
-
-      445,  445,  445,  445,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      707,  707,  707,  707,  707,  707,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  487,  487,  487,  487,  487,  487,  487,  487,
-      487,  487,  569,  569,  569,  569,  569,  569,  569,  569,
-      569,  569,  569,  569,  569,  569,  569,  569,  569,  569,
-      569,  569,  569,  569,  569,  569,  569,  569,  707,  707,
-      707,  707,  707,  707,  569,  569,  569,  569,  569,  569,
-
-      569,  569,  569,  569,  569,  569,  569,  569,  569,  569,
-      569,  569,  569,  569,  569,  569,  569,  569,  569,  569,
-      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
-      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
-      604,  604,  604,  604,  604,  604,  707,  707,  707,  707,
-      707,  707,  604,  604,  604,  604,  604,  604,  604,  604,
-      604,  604,  604,  604,  604,  604,  604,  604,  604,  604,
-      604,  604,  604,  604,  604,  604,  604,  604,  674,  674,
-      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-
-      674,  674,  674,  674,  707,  707,  707,  707,  707,  707,
-      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-      674,  674,  674,  674,  674,  674,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  707,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,  705,  705,  705,  705,  705,  705,  705,  705,  705,
-      705,   43,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707
-    } ;
-
-static yyconst short int yy_chk[13949] =
-    {   0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    3,
-        4,    5,    6,    7,    7,   11,    8,    8,   12,    9,
-        9,   19,   10,   10,   20,   23,   24,   25,   26,   35,
-       27,   27,   36,   28,   28,   29,    7,    5,    6,    8,
-        0,   11,    9,   37,   12,   10,   38,  136,    7,    0,
-        0,    8,    0,   27,    0,    0,   28,   39,   39,   39,
-       39,   39,   40,   40,   40,   40,   40,   66,   66,   66,
-       66,   66,   66,   66,   66,   66,   66,   75,  132,    0,
-        0,    0,  132,   75,   30,    0,    0,   33,    0,    0,
-        0,    0,    0,    0,    0,    0,  136,   11,  137,   75,
-
-       12,  137,  137,   19,  140,  139,   20,   23,   24,   25,
-       26,  139,   35,  138,  140,   36,   29,  138,  133,  133,
-      204,  699,    3,    4,   41,   37,   41,    7,   38,    7,
-        8,  153,    8,    9,   75,    9,   10,  204,   10,   13,
-      142,  133,   13,   13,   27,  153,   27,   28,   29,   28,
-       29,   42,  142,   42,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,  191,   30,  694,  693,   33,   13,
-      191,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   30,   13,   30,
-
-       33,  692,   33,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   13,   14,  133,   72,   14,   14,   79,   79,
-      192,   80,   80,  689,  683,  192,  193,  193,   14,   14,
-       14,   14,   14,   14,   14,   14,   14,   14,   72,  193,
-      218,   79,  218,   14,   80,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,  682,   14,  680,  679,  678,   34,   14,   14,   14,
-
-       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,   14,   14,   15,   15,  125,
-      125,  125,  125,  125,  125,  125,  125,  125,  125,  209,
-      197,  677,  149,  675,  209,  673,  149,  671,  443,   72,
-       15,  197,   79,   82,   82,   80,  149,   15,  144,  144,
-      150,  150,  150,   15,  150,  443,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   82,   34,  150,   15,
-      150,  144,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   34,
-       15,   34,  670,  669,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   16,   16,  177,  177,  205,  154,  160,  160,
-      178,  178,  252,   82,  214,  214,  238,  238,  205,  144,
-      300,  667,   82,  663,  284,   16,  252,  177,  134,  134,
-      154,  160,   16,  178,  144,  238,  300,  214,   16,  284,
-      284,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,  134,  662,  661,   16,  658,  657,   16,   16,   16,
-
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,  655,   16,  654,  653,  134,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16,   17,   17,  199,
-      177,  154,  160,  439,  651,  650,  178,  199,  643,  481,
-      214,  220,  199,  439,  220,  161,  161,  163,  163,  481,
-       17,  220,  259,  259,  134,  158,  145,  145,  147,  147,
-      236,  158,  236,  248,  563,  449,  501,  637,  161,  236,
-
-      163,  636,  248,  449,  563,  259,  236,  158,  635,  145,
-      248,  147,  501,   17,   17,   17,   17,   17,   17,   17,
-       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-       17,   17,   17,   17,   17,   17,   17,   17,   17,  633,
-      629,  625,  158,  623,  622,   17,   17,   17,   17,   17,
-       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-       17,   17,   18,   18,  145,  161,  617,  163,  310,  310,
-      147,  351,  145,  616,  161,  351,  163,  311,  311,  314,
-      314,  362,  362,  366,  366,   18,  259,  598,  668,  615,
-
-      351,  310,  145,  614,  147,  613,  610,  598,  668,  609,
-      311,  603,  314,  601,  362,  378,  366,  378,  378,  378,
-      378,  378,  378,  378,  378,  378,  378,  600,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,  599,  597,  593,  591,  590,  589,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
-       18,   18,   18,   18,   18,   18,   18,   21,  324,  324,
-      445,  445,  310,  485,  487,  487,  311,  506,  506,  588,
-
-      362,  587,  586,  314,  567,  584,  602,  366,  582,  672,
-      485,  324,  581,  445,  580,  367,  367,  487,  507,  507,
-      506,  567,  324,  602,  324,  324,  672,  324,  324,  324,
-      324,  324,  324,  324,  324,  324,  324,  579,  367,  576,
-      574,  507,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,  573,  571,
-      570,  324,  568,  566,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-
-      541,  541,   21,   22,  358,  358,  367,  379,  379,  379,
-      379,  379,  379,  379,  379,  379,  379,  565,  564,  542,
-      542,  562,  557,  541,  556,  555,  414,  358,  414,  414,
-      414,  414,  414,  414,  414,  414,  414,  414,  358,  554,
-      358,  358,  542,  358,  358,  358,  358,  358,  358,  358,
-      358,  358,  358,  553,  551,  550,  539,  538,   22,   22,
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,  537,  536,  535,  358,  534,  533,
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-
-       22,   22,   22,   22,   22,   22,   22,   22,   22,   22,
-       22,   22,   22,   22,   22,   22,  382,  382,   22,   68,
-      532,  424,  424,  548,  548,  436,  436,   68,  415,  415,
-      415,  415,  415,  415,  415,  415,  415,  415,  531,  382,
-      530,  527,  526,  525,  424,  524,  548,  522,  436,  382,
-      521,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-      520,  519,  518,  517,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-
-       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-      377,  377,  424,  516,  436,  436,  436,  515,  446,  446,
-      514,  436,  380,  380,  513,  436,  502,  500,  436,  497,
-      382,  436,  496,  377,  495,  494,  493,  413,  413,  548,
-      492,  446,  491,  486,  377,  380,  377,  377,  484,  377,
-      377,  377,  377,  377,  377,  377,  377,  377,  377,  380,
-      413,  380,  380,  380,  380,  380,  380,  380,  380,  380,
-      380,  413,  483,  413,  413,  482,  413,  413,  413,  413,
-      413,  413,  413,  413,  413,  413,  480,  447,  447,  476,
-      475,  418,  418,  377,  416,  416,  437,  437,  437,  437,
-
-      437,  437,  437,  437,  437,  437,  488,  488,  474,  473,
-      447,  380,  380,  380,  418,  472,  471,  416,  380,  470,
-      413,  469,  380,  468,  418,  380,  435,  435,  380,  488,
-      467,  416,  446,  416,  416,  416,  416,  416,  416,  416,
-      416,  416,  416,  466,  465,  463,  462,  461,  460,  435,
-      479,  479,  479,  479,  479,  479,  479,  479,  479,  479,
-      459,  458,  457,  489,  489,  435,  435,  435,  435,  435,
-      435,  435,  435,  435,  435,  478,  478,  455,  454,  453,
-      452,  549,  549,  416,  416,  416,  489,  451,  569,  569,
-      416,  552,  552,  450,  416,  604,  604,  416,  478,  444,
-
-      416,  447,  448,  448,  549,  418,  442,  611,  611,  441,
-      440,  569,  477,  477,  552,  435,  435,  435,  604,  438,
-      488,  434,  435,  433,  432,  448,  435,  431,  430,  435,
-      611,  429,  435,  428,  427,  477,  448,  425,  448,  448,
-      423,  448,  448,  448,  448,  448,  448,  448,  448,  448,
-      448,  477,  477,  477,  477,  477,  477,  477,  477,  477,
-      477,  422,  421,  420,  478,  478,  478,  419,  412,  605,
-      605,  478,  607,  607,  410,  478,  409,  489,  478,  408,
-      407,  478,  406,  490,  490,  448,  405,  404,  403,  402,
-      401,  400,  605,  505,  505,  607,  399,  549,  398,  397,
-
-      396,  477,  477,  477,  569,  552,  490,  395,  477,  394,
-      392,  604,  477,  391,  390,  477,  505,  490,  477,  490,
-      490,  611,  490,  490,  490,  490,  490,  490,  490,  490,
-      490,  490,  505,  505,  505,  505,  505,  505,  505,  505,
-      505,  505,  509,  389,  509,  509,  509,  509,  509,  509,
-      509,  509,  509,  509,  510,  510,  510,  510,  510,  510,
-      510,  510,  510,  510,  508,  508,  490,  544,  388,  544,
-      544,  544,  544,  544,  544,  544,  544,  544,  544,  511,
-      511,  387,  505,  505,  505,  605,  386,  508,  607,  505,
-      385,  384,  383,  505,  619,  619,  505,  376,  508,  505,
-
-      508,  508,  511,  508,  508,  508,  508,  508,  508,  508,
-      508,  508,  508,  540,  540,  375,  511,  619,  511,  511,
-      511,  511,  511,  511,  511,  511,  511,  511,  374,  373,
-      372,  371,  370,  369,  368,  365,  540,  545,  545,  545,
-      545,  545,  545,  545,  545,  545,  545,  508,  364,  363,
-      543,  543,  540,  540,  540,  540,  540,  540,  540,  540,
-      540,  540,  361,  360,  359,  620,  620,  357,  511,  511,
-      511,  356,  355,  543,  354,  511,  353,  352,  350,  511,
-      349,  348,  511,  347,  543,  511,  543,  543,  620,  543,
-      543,  543,  543,  543,  543,  543,  543,  543,  543,  546,
-
-      546,  346,  540,  540,  540,  345,  344,  560,  560,  540,
-      619,  640,  640,  540,  641,  641,  540,  343,  342,  540,
-      341,  339,  546,  338,  337,  559,  559,  336,  335,  334,
-      560,  333,  332,  543,  640,  331,  546,  641,  546,  546,
-      546,  546,  546,  546,  546,  546,  546,  546,  559,  561,
-      561,  561,  561,  561,  561,  561,  561,  561,  561,  330,
-      595,  595,  326,  325,  559,  559,  559,  559,  559,  559,
-      559,  559,  559,  559,  323,  322,  321,  320,  319,  318,
-      317,  620,  316,  595,  315,  313,  674,  674,  546,  546,
-      546,  312,  309,  308,  307,  546,  560,  560,  560,  546,
-
-      594,  594,  546,  560,  306,  546,  304,  560,  303,  674,
-      560,  302,  301,  560,  559,  559,  559,  299,  298,  297,
-      296,  559,  295,  594,  293,  559,  292,  640,  559,  291,
-      641,  559,  684,  684,  290,  289,  288,  287,  286,  594,
-      594,  594,  594,  594,  594,  594,  594,  594,  594,  595,
-      595,  595,  285,  283,  282,  684,  595,  281,  280,  279,
-      595,  686,  686,  595,  687,  687,  595,  596,  596,  596,
-      596,  596,  596,  596,  596,  596,  596,  278,  612,  612,
-      277,  696,  696,  276,  686,  275,  274,  687,  273,  594,
-      594,  594,  272,  618,  618,  271,  594,  270,  269,  268,
-
-      594,  612,  674,  594,  696,  267,  594,  265,  698,  698,
-      264,  263,  612,  262,  612,  612,  618,  612,  612,  612,
-      612,  612,  612,  612,  612,  612,  612,  639,  639,  261,
-      260,  698,  618,  618,  618,  618,  618,  618,  618,  618,
-      618,  618,  257,  256,  255,  254,  253,  251,  684,  646,
-      639,  646,  646,  646,  646,  646,  646,  646,  646,  646,
-      646,  612,  702,  702,  645,  645,  639,  639,  639,  639,
-      639,  639,  639,  639,  639,  639,  250,  686,  249,  247,
-      687,  246,  618,  618,  618,  702,  245,  645,  244,  618,
-      243,  242,  241,  618,  240,  239,  618,  696,  645,  618,
-
-      645,  645,  237,  645,  645,  645,  645,  645,  645,  645,
-      645,  645,  645,  235,  234,  233,  639,  639,  639,  232,
-      231,  648,  648,  639,  698,  230,  229,  639,  228,  227,
-      639,  226,  224,  639,  647,  647,  647,  647,  647,  647,
-      647,  647,  647,  647,  648,  223,  222,  645,  664,  664,
-      221,  219,  216,  213,  212,  211,  665,  665,  648,  210,
-      648,  648,  648,  648,  648,  648,  648,  648,  648,  648,
-      208,  664,  207,  206,  203,  202,  201,  200,  702,  665,
-      198,  196,  195,  194,  190,  189,  188,  664,  664,  664,
-      664,  664,  664,  664,  664,  664,  664,  666,  666,  666,
-
-      666,  666,  666,  666,  666,  666,  666,  187,  186,  185,
-      648,  648,  648,  184,  183,  182,  181,  648,  180,  173,
-      168,  648,  165,  164,  648,  155,  152,  648,  151,  148,
-      685,  685,  146,  143,  141,  127,  126,  664,  664,  664,
-      113,   95,   92,   85,  664,  665,  665,  665,  664,   77,
-       67,  664,  665,  685,  664,   64,  665,   63,   61,  665,
-       50,   43,  665,   32,   31,    0,    0,    0,    0,  685,
-      685,  685,  685,  685,  685,  685,  685,  685,  685,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  685,
-      685,  685,    0,    0,    0,    0,  685,    0,    0,    0,
-      685,    0,    0,  685,    0,    0,  685,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,    0,    0,    0,    0,    0,    0,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  704,  704,  704,  704,
-      704,  704,  704,  704,  704,  704,  706,  706,  706,  706,
-
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,    0,    0,    0,    0,    0,    0,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,  706,  706,  706,  706,  706,
-      706,  706,  706,  706,  706,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-
-      708,  708,  708,  708,  708,  708,  708,  708,  708,  708,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  709,  709,  709,  709,  709,
-      709,  709,  709,  709,  709,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      710,  710,  710,  710,  710,  710,  710,  710,  710,  710,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  711,  711,  711,  711,  711,
-      711,  711,  711,  711,  711,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      712,  712,  712,  712,  712,  712,  712,  712,  712,  712,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  713,  713,  713,  713,  713,
-      713,  713,  713,  713,  713,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
-      715,  715,  715,  715,  715,  716,  716,  716,  716,  716,
-
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      716,  716,  716,  716,  716,  716,  716,  716,  716,  716,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-      717,  717,  717,  717,  717,  717,  717,  717,  717,  717,
-
-      717,  717,  717,  717,  717,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      718,  718,  718,  718,  718,  718,  718,  718,  718,  718,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-
-      719,  719,  719,  719,  719,  719,  719,  719,  719,  719,
-      719,  719,  719,  719,  719,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      720,  720,  720,  720,  720,  720,  720,  720,  720,  720,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  721,  721,  721,  721,  721,
-      721,  721,  721,  721,  721,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      722,  722,  722,  722,  722,  722,  722,  722,  722,  722,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
-      723,  723,  723,  723,  723,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  725,  725,  725,  725,  725,
-      725,  725,  725,  725,  725,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-      726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
-
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
-      727,  727,  727,  727,  727,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-
-      728,  728,  728,  728,  728,  728,  728,  728,  728,  728,
-      729,  729,  729,  729,  729,  729,  729,  729,    0,    0,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,    0,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,    0,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,    0,  729,    0,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  729,  729,  729,  729,  729,
-      729,  729,  729,  729,  729,  730,  730,  730,  730,  730,
-      730,  730,  730,    0,    0,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,    0,  730,  730,  730,
-
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,    0,  730,    0,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      730,  730,  730,  730,  730,  730,  730,  730,  730,  730,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,    0,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  731,  731,  731,  731,  731,
-      731,  731,  731,  731,  731,  732,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,  732,  732,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  732,  732,  732,  732,  732,    0,    0,    0,
-        0,    0,    0,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  732,  732,  732,  732,  732,  732,  732,  732,
-      732,  732,  732,  732,  732,  732,  732,  732,  732,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,    0,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-
-      733,  733,  733,  733,  733,  733,  733,  733,  733,  733,
-      733,  733,  733,  733,  734,  734,  734,  734,  734,  734,
-      734,  734,    0,    0,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,    0,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,    0,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  735,
-        0,    0,    0,    0,    0,  735,    0,    0,  735,  735,
-      735,  735,  735,  735,  735,  735,  735,  735,    0,    0,
-        0,  735,    0,    0,  735,  735,  735,  735,  735,  735,
-
-      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
-      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
-      735,    0,    0,    0,    0,    0,  735,  735,  735,  735,
-      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
-      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
-      735,  735,  735,  736,  736,  736,  736,  736,  736,  736,
-      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
-      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
-        0,    0,    0,    0,    0,    0,  736,  736,  736,  736,
-      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
-
-      736,  736,  736,  736,  736,  736,  736,  736,  736,  736,
-      736,  736,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,    0,    0,
-        0,    0,    0,    0,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  737,  737,  737,
-      738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
-      738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
-      738,  738,  738,  738,  738,  738,    0,    0,    0,    0,
-
-        0,    0,  738,  738,  738,  738,  738,  738,  738,  738,
-      738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
-      738,  738,  738,  738,  738,  738,  738,  738,  739,  739,
-      739,  739,  739,  739,  739,  739,    0,    0,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,    0,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-        0,  739,    0,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,    0,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  740,  740,
-      740,  740,  740,  740,  740,  740,  740,  740,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,    0,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  742,  742,  742,  742,  742,  742,  742,
-
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,    0,  742,    0,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  742,  742,  742,  743,  743,
-      743,  743,  743,  743,  743,  743,    0,    0,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,    0,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,    0,  743,  743,  743,  743,  743,  743,  743,  743,
-
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-        0,  743,    0,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  743,  743,
-
-      743,  743,  743,  744,  744,  744,  744,  744,  744,  744,
-      744,    0,    0,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,    0,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,    0,  744,    0,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  744,  744,  744,  744,  744,  744,  744,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,    0,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-
-      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  746,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  746,
-      746,  746,  746,  746,  746,  746,  746,  746,  746,  746,
-      746,  746,  746,  746,  746,  746,  746,  746,  746,  746,
-      746,  746,  746,  746,  746,    0,    0,    0,    0,    0,
-        0,  746,  746,  746,  746,  746,  746,  746,  746,  746,
-      746,  746,  746,  746,  746,  746,  746,  746,  746,  746,
-      746,  746,  746,  746,  746,  746,  746,  747,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  747,  747,  747,  747,  747,  747,  747,
-      747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
-      747,  747,  747,  747,  747,  747,  747,  747,  747,    0,
-        0,    0,    0,    0,    0,  747,  747,  747,  747,  747,
-      747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
-      747,  747,  747,  747,  747,  747,  747,  747,  747,  747,
-      747,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-
-      748,  748,  748,  748,  748,  748,  748,  748,    0,    0,
-        0,    0,    0,    0,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      749,  749,  749,  749,  749,  749,  749,  749,    0,    0,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,    0,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,    0,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  749,  749,  749,  749,  749,
-      749,  749,  749,  749,  749,  750,    0,    0,    0,    0,
-
-        0,  750,    0,    0,  750,  750,  750,  750,  750,  750,
-      750,  750,  750,  750,    0,    0,    0,  750,    0,    0,
-      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
-      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
-      750,  750,  750,  750,  750,  750,  750,    0,    0,    0,
-        0,    0,  750,  750,  750,  750,  750,  750,  750,  750,
-      750,  750,  750,  750,  750,  750,  750,  750,  750,  750,
-      750,  750,  750,  750,  750,  750,  750,  750,  750,  751,
-      751,  751,  751,  751,  751,  751,  751,  751,  751,  751,
-      751,  751,  751,  751,  751,  751,  751,  751,  751,  751,
-
-      751,  751,  751,  751,  751,  751,    0,    0,    0,    0,
-        0,    0,  751,  751,  751,  751,  751,  751,  751,  751,
-      751,  751,  751,  751,  751,  751,  751,  751,  751,  751,
-      751,  751,  751,  751,  751,  751,  751,  751,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,    0,    0,    0,    0,    0,    0,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  752,  752,  752,  752,  752,  753,  753,  753,  753,
-
-      753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
-      753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
-      753,  753,    0,    0,    0,    0,    0,    0,  753,  753,
-      753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
-      753,  753,  753,  753,  753,  753,  753,  753,  753,  753,
-      753,  753,  753,  753,  754,  754,  754,  754,  754,  754,
-      754,  754,    0,    0,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,    0,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,    0,  754,    0,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  754,
-
-      754,  754,  754,  754,  754,  754,  754,  754,  754,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-
-      755,    0,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  755,  755,  755,  755,  755,  755,
-      755,  755,  755,  755,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,    0,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  756,
-      756,  756,  756,  756,  756,  756,  756,  756,  756,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,    0,  757,    0,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  757,  757,  758,  758,  758,  758,  758,  758,
-      758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
-      758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
-
-        0,    0,    0,    0,    0,    0,  758,  758,  758,  758,
-      758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
-      758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
-      758,  758,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,    0,
-        0,    0,    0,    0,    0,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
-      759,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  760,  760,  760,  760,
-      760,  760,  760,  760,  760,  760,  761,  761,  761,  761,
-      761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
-      761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
-      761,  761,    0,    0,    0,    0,    0,    0,  761,  761,
-      761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
-      761,  761,  761,  761,  761,  761,  761,  761,  761,  761,
-
-      761,  761,  761,  761,  762,  762,  762,  762,  762,  762,
-      762,  762,  762,  762,  762,  762,  762,  762,  762,  762,
-      762,  762,  762,  762,  762,  762,  762,  762,  762,  762,
-        0,    0,    0,    0,    0,    0,  762,  762,  762,  762,
-      762,  762,  762,  762,  762,  762,  762,  762,  762,  762,
-      762,  762,  762,  762,  762,  762,  762,  762,  762,  762,
-      762,  762,  763,  763,  763,  763,  763,  763,  763,  763,
-      763,  763,  763,  763,  763,  763,  763,  763,  763,  763,
-      763,  763,  763,  763,  763,  763,  763,  763,    0,    0,
-        0,    0,    0,    0,  763,  763,  763,  763,  763,  763,
-
-      763,  763,  763,  763,  763,  763,  763,  763,  763,  763,
-      763,  763,  763,  763,  763,  763,  763,  763,  763,  763,
-      764,  764,  764,  764,  764,  764,  764,  764,  764,  764,
-      764,  764,  764,  764,  764,  764,  764,  764,  764,  764,
-      764,  764,  764,  764,  764,  764,    0,    0,    0,    0,
-        0,    0,  764,  764,  764,  764,  764,  764,  764,  764,
-      764,  764,  764,  764,  764,  764,  764,  764,  764,  764,
-      764,  764,  764,  764,  764,  764,  764,  764,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-
-      765,  765,  765,  765,    0,    0,    0,    0,    0,    0,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  765,  765,  765,  765,
-      765,  765,  765,  765,  765,  765,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,    0,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
-      766,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707,  707,  707,
-      707,  707,  707,  707,  707,  707,  707,  707
-    } ;
-
-static yy_state_type yy_last_accepting_state;
-static char *yy_last_accepting_cpos;
-
-static yyconst yy_state_type yy_NUL_trans[707] =
-    {   0,
-       44,   44,   45,   45,   48,   48,   51,   51,   55,   55,
-       58,   58,   62,   62,   71,   71,   78,   78,   83,   83,
-       86,   86,   90,   90,   93,   93,   96,   96,   99,   99,
-      103,  103,  105,  105,  109,  109,  111,  111,   44,   44,
-      115,  115,    0,    0,    0,    0,    0,    0,    0,    0,
-      119,    0,    0,    0,  120,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  124,    0,    0,  128,    0,    0,
-        0,    0,    0,  156,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  170,    0,    0,    0,    0,
-
-        0,    0,  171,    0,    0,    0,    0,    0,    0,    0,
-      172,  172,    0,    0,  174,    0,    0,    0,  119,  120,
-        0,    0,    0,  124,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  156,  156,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  170,
-      171,  172,    0,  174,    0,    0,    0,    0,    0,    0,
-      216,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  216,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,  705,  705,  705
-    } ;
-
-/* The intent behind this definition is that it'll catch
- * any uses of REJECT which flex missed.
- */
-#define REJECT reject_used_but_not_detected
-#define yymore() yymore_used_but_not_detected
-#define YY_MORE_ADJ 0
-#define YY_RESTORE_YY_MORE_OFFSET
-char *yytext;
-#line 1 "xxx.l"
-#define INITIAL 0
-#line 2 "xxx.l"
-#ifndef lint
-static char	rcsid[] = "$Header: /p/src/local/bin/detex/RCS/detex.l,v 2.22 2007/03/01 20:22:01 trinkle Exp trinkle $";
-#endif
-
-/*
- * Copyright (c) 1986-2007 Purdue University
- * All rights reserved.
- * 
- * Developed by:  Daniel Trinkle
- *                Department of Computer Science, Purdue University
- *                http://www.cs.purdue.edu/
- * 
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal with the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- * 
- * o Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimers.
- * 
- * o Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimers in the
- *   documentation and/or other materials provided with the distribution.
- * 
- * o Neither the names of Daniel Trinkle, Purdue University, nor the
- *   names of its contributors may be used to endorse or promote products
- *   derived from this Software without specific prior written
- *   permission.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- * IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
- * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
- */
-
-
-/*
- * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [file[.tex] ]
- *
- *	This program is used to remove TeX or LaTeX constructs from a text
- *	file.
- */
-
-#include "detex.h"
-#ifdef HAVE_STRING_H
-#include <string.h>
-#define	index	strchr
-#define	rindex	strrchr
-#else
-#include <strings.h>
-#endif
-#ifndef MAXPATHLEN
-#include <sys/param.h>
-#endif
-#ifdef OS2
-#include <stdlib.h>
-#endif
-
-#define	LaBEGIN		if (fLatex) BEGIN
-#define	IGNORE		if (fSpace && !fWord) putchar(' ')
-#define	SPACE		if (!fWord) putchar(' ')
-#define	NEWLINE		if (!fWord) putchar('\n')
-#define	LATEX		fLatex=!fForcetex
-#define KILLARGS(x)	cArgs=x; LaBEGIN SH
-#define STRIPARGS(x)	cArgs=x; LaBEGIN SG
-#define	CITE(x)		if (fLatex && !fCite) KILLARGS(x)
-
-char	*SafeMalloc();
-#ifndef NO_MALLOC_DECL
-char	*malloc();
-#endif
-#ifdef OS2
-void	yyless(int);
-#endif
-
-char	*rgsbEnvIgnore[MAXENVS];	/* list of environments ignored */
-char	*rgsbIncList[MAXINCLIST];	/* list of includeonly files */
-char	*rgsbInputPaths[MAXINPUTPATHS];	/* list of input paths in order */
-char	sbCurrentEnv[CCHMAXENV];	/* current environment being ignored */
-char	*sbProgName;			/* name we were invoked with */
-FILE	*rgfp[NOFILE+1];		/* stack of input/include files */
-int	cfp = 0;			/* count of files in stack */
-int	cOpenBrace = 0;			/* count of `{' in <SH> and <SG> */
-int	cArgs = 0;			/* argument connt in <LaArgs> */
-int	csbEnvIgnore;			/* count of environments ignored */
-int	csbIncList = 0;			/* count of includeonly files */
-int	csbInputPaths;			/* count of input paths */
-int	fLatex = 0;			/* flag to indicated delatex */
-int	fWord = 0;			/* flag for -w option */
-int	fFollow = 1;			/* flag to follow input/include */
-int	fCite = 0;			/* flag to echo \cite and \ref args */
-int	fSpace = 0;			/* flag to replace \cs with space */
-int	fForcetex = 0;			/* flag to inhibit latex mode */
-
-#ifdef FLEX_SCANNER
-/* flex has contexts for buffers that need to be switched when file changes
- * otherwise output contains imported files in reverse order.  Weird, but
- * true.
- */
-YY_BUFFER_STATE rgsb[NOFILE + 1]; /* flex context stack */
-int             csb = 0;		 /* depth of flex context stack */
-#endif /* FLEX_SCANNER */
-
-#define SJ 1
-#define SK 2
-#define SL 3
-#define SM 4
-#define SN 5
-#define SO 6
-#define SP 7
-
-#define SA 8
-#define SB 9
-#define SC 10
-#define SD 11
-#define SE 12
-#define SF 13
-
-#define SH 14
-#define ST 15
-#define SG 16
-#define SS 17
-#define SI 18
- 
-#define SR 19
-#define SQ 20
-
-#line 3851 "lex.yy.c"
-
-/* Macros after this point can all be overridden by user definitions in
- * section 1.
- */
-
-#ifndef YY_SKIP_YYWRAP
-#ifdef __cplusplus
-extern "C" int yywrap YY_PROTO(( void ));
-#else
-extern int yywrap YY_PROTO(( void ));
-#endif
-#endif
-
-#ifndef YY_NO_UNPUT
-static void yyunput YY_PROTO(( int c, char *buf_ptr ));
-#endif
-
-#ifndef yytext_ptr
-static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
-#endif
-
-#ifdef YY_NEED_STRLEN
-static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-#endif
-
-#ifndef YY_NO_INPUT
-#ifdef __cplusplus
-static int yyinput YY_PROTO(( void ));
-#else
-static int input YY_PROTO(( void ));
-#endif
-#endif
-
-#if YY_STACK_USED
-static int yy_start_stack_ptr = 0;
-static int yy_start_stack_depth = 0;
-static int *yy_start_stack = 0;
-#ifndef YY_NO_PUSH_STATE
-static void yy_push_state YY_PROTO(( int new_state ));
-#endif
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state YY_PROTO(( void ));
-#endif
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state YY_PROTO(( void ));
-#endif
-
-#else
-#define YY_NO_PUSH_STATE 1
-#define YY_NO_POP_STATE 1
-#define YY_NO_TOP_STATE 1
-#endif
-
-#ifdef YY_MALLOC_DECL
-YY_MALLOC_DECL
-#else
-#if __STDC__
-#ifndef __cplusplus
-#include <stdlib.h>
-#endif
-#else
-/* Just try to get by without declaring the routines.  This will fail
- * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
- * or sizeof(void*) != sizeof(int).
- */
-#endif
-#endif
-
-/* Amount of stuff to slurp up with each read. */
-#ifndef YY_READ_BUF_SIZE
-#define YY_READ_BUF_SIZE 8192
-#endif
-
-/* Copy whatever the last rule matched to the standard output. */
-
-#ifndef ECHO
-/* This used to be an fputs(), but since the string might contain NUL's,
- * we now use fwrite().
- */
-#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
-#endif
-
-/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
- * is returned in "result".
- */
-#ifndef YY_INPUT
-#define YY_INPUT(buf,result,max_size) \
-	if ( yy_current_buffer->yy_is_interactive ) \
-		{ \
-		int c = '*', n; \
-		for ( n = 0; n < max_size && \
-			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
-			buf[n] = (char) c; \
-		if ( c == '\n' ) \
-			buf[n++] = (char) c; \
-		if ( c == EOF && ferror( yyin ) ) \
-			YY_FATAL_ERROR( "input in flex scanner failed" ); \
-		result = n; \
-		} \
-	else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
-		  && ferror( yyin ) ) \
-		YY_FATAL_ERROR( "input in flex scanner failed" );
-#endif
-
-/* No semi-colon after return; correct usage is to write "yyterminate();" -
- * we don't want an extra ';' after the "return" because that will cause
- * some compilers to complain about unreachable statements.
- */
-#ifndef yyterminate
-#define yyterminate() return YY_NULL
-#endif
-
-/* Number of entries by which start-condition stack grows. */
-#ifndef YY_START_STACK_INCR
-#define YY_START_STACK_INCR 25
-#endif
-
-/* Report a fatal error. */
-#ifndef YY_FATAL_ERROR
-#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
-#endif
-
-/* Default declaration of generated scanner - a define so the user can
- * easily add parameters.
- */
-#ifndef YY_DECL
-#define YY_DECL int yylex YY_PROTO(( void ))
-#endif
-
-/* Code executed at the beginning of each rule, after yytext and yyleng
- * have been set up.
- */
-#ifndef YY_USER_ACTION
-#define YY_USER_ACTION
-#endif
-
-/* Code executed at the end of each rule. */
-#ifndef YY_BREAK
-#define YY_BREAK break;
-#endif
-
-#define YY_RULE_SETUP \
-	YY_USER_ACTION
-
-YY_DECL
-	{
-	register yy_state_type yy_current_state;
-	register char *yy_cp, *yy_bp;
-	register int yy_act;
-
-#line 125 "xxx.l"
-
-#line 4004 "lex.yy.c"
-
-	if ( yy_init )
-		{
-		yy_init = 0;
-
-#ifdef YY_USER_INIT
-		YY_USER_INIT;
-#endif
-
-		if ( ! yy_start )
-			yy_start = 1;	/* first start state */
-
-		if ( ! yyin )
-			yyin = stdin;
-
-		if ( ! yyout )
-			yyout = stdout;
-
-		if ( ! yy_current_buffer )
-			yy_current_buffer =
-				yy_create_buffer( yyin, YY_BUF_SIZE );
-
-		yy_load_buffer_state();
-		}
-
-	while ( 1 )		/* loops until end-of-file is reached */
-		{
-		yy_cp = yy_c_buf_p;
-
-		/* Support of yytext. */
-		*yy_cp = yy_hold_char;
-
-		/* yy_bp points to the position in yy_ch_buf of the start of
-		 * the current run.
-		 */
-		yy_bp = yy_cp;
-
-		yy_current_state = yy_start;
-yy_match:
-		do
-			{
-			register YY_CHAR yy_c = YY_SC_TO_UI(*yy_cp);
-			if ( yy_accept[yy_current_state] )
-				{
-				yy_last_accepting_state = yy_current_state;
-				yy_last_accepting_cpos = yy_cp;
-				}
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			++yy_cp;
-			}
-		while ( yy_base[yy_current_state] != 13692 );
-
-yy_find_action:
-		yy_act = yy_accept[yy_current_state];
-		if ( yy_act == 0 )
-			{ /* have to back up */
-			yy_cp = yy_last_accepting_cpos;
-			yy_current_state = yy_last_accepting_state;
-			yy_act = yy_accept[yy_current_state];
-			}
-
-		YY_DO_BEFORE_ACTION;
-
-
-do_action:	/* This label is used only to access EOF actions. */
-
-
-		switch ( yy_act )
-	{ /* beginning of action switch */
-			case 0: /* must back up */
-			/* undo the effects of YY_DO_BEFORE_ACTION */
-			*yy_cp = yy_hold_char;
-			yy_cp = yy_last_accepting_cpos;
-			yy_current_state = yy_last_accepting_state;
-			goto yy_find_action;
-
-case 1:
-YY_RULE_SETUP
-#line 126 "xxx.l"
-/* ignore comments */	;
-	YY_BREAK
-case 2:
-YY_RULE_SETUP
-#line 128 "xxx.l"
-{LATEX; IGNORE;}
-	YY_BREAK
-case 3:
-YY_RULE_SETUP
-#line 130 "xxx.l"
-/* environment start */	{LaBEGIN SA; IGNORE;}
-	YY_BREAK
-case 4:
-YY_RULE_SETUP
-#line 132 "xxx.l"
-{   if (BeginEnv("verbatim"))
-							BEGIN SD;
-						    else
-							BEGIN SI;
-						    IGNORE;
-						}
-	YY_BREAK
-case 5:
-YY_RULE_SETUP
-#line 139 "xxx.l"
-/* verbatim mode */	{BEGIN SO; IGNORE;}
-	YY_BREAK
-case 6:
-YY_RULE_SETUP
-#line 140 "xxx.l"
-ECHO;
-	YY_BREAK
-case 7:
-YY_RULE_SETUP
-#line 141 "xxx.l"
-ECHO;
-	YY_BREAK
-case 8:
-YY_RULE_SETUP
-#line 143 "xxx.l"
-{ KILLARGS(1);
-						  if (BeginEnv("minpage"))
-							BEGIN SD;
-						  else
-							BEGIN SO;
-						  IGNORE;
-						}
-	YY_BREAK
-case 9:
-YY_RULE_SETUP
-#line 151 "xxx.l"
-{   if (BeginEnv(yytext))
-							BEGIN SD;
-						    else
-							BEGIN SO;
-						    IGNORE;
-						}
-	YY_BREAK
-case 10:
-YY_RULE_SETUP
-#line 157 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 11:
-YY_RULE_SETUP
-#line 158 "xxx.l"
-;
-	YY_BREAK
-case 12:
-YY_RULE_SETUP
-#line 160 "xxx.l"
-/* absorb some environments */	{LaBEGIN SC; IGNORE;}
-	YY_BREAK
-case 13:
-YY_RULE_SETUP
-#line 161 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 14:
-YY_RULE_SETUP
-#line 162 "xxx.l"
-;
-	YY_BREAK
-case 15:
-YY_RULE_SETUP
-#line 164 "xxx.l"
-/* end environment */	{   if (EndEnv(yytext))
-							BEGIN SO;
-						    IGNORE;
-						}
-	YY_BREAK
-case 16:
-YY_RULE_SETUP
-#line 168 "xxx.l"
-{BEGIN SD; IGNORE;}
-	YY_BREAK
-case 17:
-YY_RULE_SETUP
-#line 169 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 18:
-YY_RULE_SETUP
-#line 170 "xxx.l"
-;
-	YY_BREAK
-case 19:
-YY_RULE_SETUP
-#line 172 "xxx.l"
-;
-	YY_BREAK
-case 20:
-YY_RULE_SETUP
-#line 173 "xxx.l"
-;
-	YY_BREAK
-case 21:
-YY_RULE_SETUP
-#line 174 "xxx.l"
-;
-	YY_BREAK
-case 22:
-YY_RULE_SETUP
-#line 175 "xxx.l"
-;
-	YY_BREAK
-case 23:
-YY_RULE_SETUP
-#line 176 "xxx.l"
-;
-	YY_BREAK
-case 24:
-YY_RULE_SETUP
-#line 178 "xxx.l"
-{ KILLARGS(1); }
-	YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 179 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 26:
-YY_RULE_SETUP
-#line 180 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 27:
-YY_RULE_SETUP
-#line 181 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 28:
-YY_RULE_SETUP
-#line 182 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 29:
-YY_RULE_SETUP
-#line 183 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 30:
-YY_RULE_SETUP
-#line 184 "xxx.l"
-{ KILLARGS(1); }
-	YY_BREAK
-case 31:
-YY_RULE_SETUP
-#line 185 "xxx.l"
-{ KILLARGS(1); }
-	YY_BREAK
-case 32:
-YY_RULE_SETUP
-#line 186 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 187 "xxx.l"
-{ KILLARGS(1); }
-	YY_BREAK
-case 34:
-YY_RULE_SETUP
-#line 188 "xxx.l"
-{ STRIPARGS(2); }
-	YY_BREAK
-case 35:
-YY_RULE_SETUP
-#line 189 "xxx.l"
-{ KILLARGS(1); }
-	YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 190 "xxx.l"
-{ STRIPARGS(2); }
-	YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 191 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 192 "xxx.l"
-;
-	YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 193 "xxx.l"
-{ KILLARGS(1); }
-	YY_BREAK
-case 40:
-YY_RULE_SETUP
-#line 194 "xxx.l"
-{ LaBEGIN SQ; }
-	YY_BREAK
-case 41:
-YY_RULE_SETUP
-#line 196 "xxx.l"
-;
-	YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 197 "xxx.l"
-{ printf("<Picture %s>", yytext); }
-	YY_BREAK
-case 43:
-YY_RULE_SETUP
-#line 198 "xxx.l"
-BEGIN SO;
-	YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 200 "xxx.l"
-{ KILLARGS(3); }
-	YY_BREAK
-case 45:
-YY_RULE_SETUP
-#line 201 "xxx.l"
-{ KILLARGS(1); }
-	YY_BREAK
-case 46:
-YY_RULE_SETUP
-#line 202 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 47:
-YY_RULE_SETUP
-#line 203 "xxx.l"
-{ KILLARGS(2); }
-	YY_BREAK
-case 48:
-YY_RULE_SETUP
-#line 204 "xxx.l"
-{ KILLARGS(3); }
-	YY_BREAK
-case 49:
-YY_RULE_SETUP
-#line 205 "xxx.l"
-{ KILLARGS(1); }
-	YY_BREAK
-case 50:
-YY_RULE_SETUP
-#line 206 "xxx.l"
-{ STRIPARGS(1); }
-	YY_BREAK
-case 51:
-YY_RULE_SETUP
-#line 208 "xxx.l"
-;
-	YY_BREAK
-case 52:
-YY_RULE_SETUP
-#line 209 "xxx.l"
-;
-	YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 210 "xxx.l"
-;
-	YY_BREAK
-case 54:
-YY_RULE_SETUP
-#line 211 "xxx.l"
-;
-	YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 212 "xxx.l"
-;
-	YY_BREAK
-case 56:
-YY_RULE_SETUP
-#line 213 "xxx.l"
-;
-	YY_BREAK
-case 57:
-YY_RULE_SETUP
-#line 215 "xxx.l"
-/* ignore args  */	{KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 58:
-YY_RULE_SETUP
-#line 216 "xxx.l"
-/* of these \cs */	{KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 59:
-YY_RULE_SETUP
-#line 217 "xxx.l"
-{KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 60:
-YY_RULE_SETUP
-#line 218 "xxx.l"
-{CITE(1); IGNORE;}
-	YY_BREAK
-case 61:
-YY_RULE_SETUP
-#line 219 "xxx.l"
-{LATEX; KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 62:
-YY_RULE_SETUP
-#line 220 "xxx.l"
-{LATEX; KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 63:
-YY_RULE_SETUP
-#line 221 "xxx.l"
-{KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 64:
-YY_RULE_SETUP
-#line 222 "xxx.l"
-{KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 65:
-YY_RULE_SETUP
-#line 223 "xxx.l"
-{KILLARGS(1); SPACE;}
-	YY_BREAK
-case 66:
-YY_RULE_SETUP
-#line 224 "xxx.l"
-{KILLARGS(1); SPACE;}
-	YY_BREAK
-case 67:
-YY_RULE_SETUP
-#line 225 "xxx.l"
-{KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 68:
-YY_RULE_SETUP
-#line 226 "xxx.l"
-{CITE(1); IGNORE;}
-	YY_BREAK
-case 69:
-YY_RULE_SETUP
-#line 227 "xxx.l"
-{KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 70:
-YY_RULE_SETUP
-#line 228 "xxx.l"
-{CITE(1); IGNORE;}
-	YY_BREAK
-case 71:
-YY_RULE_SETUP
-#line 229 "xxx.l"
-{KILLARGS(1); IGNORE;}
-	YY_BREAK
-case 72:
-YY_RULE_SETUP
-#line 230 "xxx.l"
-/* ignore \verb<ch>...<ch> */	{   if (fLatex) {
-						 	char verbchar, c;
-						 	verbchar = input();
-						 	while ((c = input()) != verbchar)
-							    if (c == '\n')
-								NEWLINE;
-						    }
-						    IGNORE;
-						}
-	YY_BREAK
-case 73:
-YY_RULE_SETUP
-#line 240 "xxx.l"
-{ LATEX; KILLARGS(2); }
-	YY_BREAK
-case 74:
-YY_RULE_SETUP
-#line 241 "xxx.l"
-{ LATEX; KILLARGS(2); }
-	YY_BREAK
-case 75:
-YY_RULE_SETUP
-#line 242 "xxx.l"
-{ LATEX; KILLARGS(3); }
-	YY_BREAK
-case 76:
-YY_RULE_SETUP
-#line 244 "xxx.l"
-/* ignore def begin */	{BEGIN SJ; IGNORE;}
-	YY_BREAK
-case 77:
-YY_RULE_SETUP
-#line 245 "xxx.l"
-BEGIN SO;
-	YY_BREAK
-case 78:
-YY_RULE_SETUP
-#line 246 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 79:
-YY_RULE_SETUP
-#line 247 "xxx.l"
-;
-	YY_BREAK
-case 80:
-YY_RULE_SETUP
-#line 249 "xxx.l"
-/* formula mode */	{LaBEGIN SE; IGNORE;}
-	YY_BREAK
-case 81:
-YY_RULE_SETUP
-#line 250 "xxx.l"
-BEGIN SO;
-	YY_BREAK
-case 82:
-YY_RULE_SETUP
-#line 251 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 83:
-YY_RULE_SETUP
-#line 252 "xxx.l"
-;
-	YY_BREAK
-case 84:
-YY_RULE_SETUP
-#line 254 "xxx.l"
-/* display mode */	{LaBEGIN SB; IGNORE;}
-	YY_BREAK
-case 85:
-YY_RULE_SETUP
-#line 255 "xxx.l"
-BEGIN SO;
-	YY_BREAK
-case 86:
-YY_RULE_SETUP
-#line 256 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 87:
-YY_RULE_SETUP
-#line 257 "xxx.l"
-;
-	YY_BREAK
-case 88:
-YY_RULE_SETUP
-#line 259 "xxx.l"
-/* display mode */	{BEGIN SK; IGNORE;}
-	YY_BREAK
-case 89:
-YY_RULE_SETUP
-#line 260 "xxx.l"
-BEGIN SO;
-	YY_BREAK
-case 90:
-YY_RULE_SETUP
-#line 261 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 262 "xxx.l"
-;
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 264 "xxx.l"
-/* math mode */		{BEGIN SN; IGNORE;}
-	YY_BREAK
-case 93:
-YY_RULE_SETUP
-#line 265 "xxx.l"
-BEGIN SO;
-	YY_BREAK
-case 94:
-YY_RULE_SETUP
-#line 266 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 95:
-YY_RULE_SETUP
-#line 267 "xxx.l"
-;
-	YY_BREAK
-case 96:
-YY_RULE_SETUP
-#line 268 "xxx.l"
-;
-	YY_BREAK
-case 97:
-YY_RULE_SETUP
-#line 270 "xxx.l"
-/* process files */	{LaBEGIN SF; IGNORE;}
-	YY_BREAK
-case 98:
-YY_RULE_SETUP
-#line 271 "xxx.l"
-{   IncludeFile(yytext);
-						    BEGIN SO;
-						}
-	YY_BREAK
-case 99:
-YY_RULE_SETUP
-#line 274 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 100:
-YY_RULE_SETUP
-#line 275 "xxx.l"
-;
-	YY_BREAK
-case 101:
-YY_RULE_SETUP
-#line 277 "xxx.l"
-{BEGIN SL; IGNORE;}
-	YY_BREAK
-case 102:
-YY_RULE_SETUP
-#line 278 "xxx.l"
-AddInclude(yytext);
-	YY_BREAK
-case 103:
-YY_RULE_SETUP
-#line 279 "xxx.l"
-{   if (csbIncList == 0)
-							rgsbIncList[csbIncList++] = '\0';
-						    BEGIN SO;
-						}
-	YY_BREAK
-case 104:
-YY_RULE_SETUP
-#line 283 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 105:
-YY_RULE_SETUP
-#line 284 "xxx.l"
-;
-	YY_BREAK
-case 106:
-YY_RULE_SETUP
-#line 286 "xxx.l"
-{BEGIN SM; IGNORE;}
-	YY_BREAK
-case 107:
-YY_RULE_SETUP
-#line 287 "xxx.l"
-{   InputFile(yytext);
-						    BEGIN SO;
-						}
-	YY_BREAK
-case 108:
-YY_RULE_SETUP
-#line 290 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 109:
-YY_RULE_SETUP
-#line 291 "xxx.l"
-;
-	YY_BREAK
-case 110:
-YY_RULE_SETUP
-#line 293 "xxx.l"
-/* handle ligatures */	{(void)printf("%.2s", yytext+1);}
-	YY_BREAK
-case 111:
-YY_RULE_SETUP
-#line 294 "xxx.l"
-{(void)printf("%.1s", yytext+1);}
-	YY_BREAK
-case 112:
-YY_RULE_SETUP
-#line 295 "xxx.l"
-BEGIN SR;
-	YY_BREAK
-case 113:
-YY_RULE_SETUP
-#line 297 "xxx.l"
-/* ignore other \cs */	{BEGIN SP; IGNORE;}
-	YY_BREAK
-case 114:
-YY_RULE_SETUP
-#line 298 "xxx.l"
-SPACE;
-	YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 299 "xxx.l"
-NEWLINE;
-	YY_BREAK
-case 116:
-YY_RULE_SETUP
-#line 300 "xxx.l"
-IGNORE;
-	YY_BREAK
-case 117:
-YY_RULE_SETUP
-#line 301 "xxx.l"
-{  if (yytext==NULL || strlen(yytext)==0
-							|| atoi(yytext)==4)
-							NEWLINE;
-						BEGIN SO;
-						}
-	YY_BREAK
-case 118:
-YY_RULE_SETUP
-#line 307 "xxx.l"
-IGNORE;
-	YY_BREAK
-case 119:
-YY_RULE_SETUP
-#line 308 "xxx.l"
-IGNORE;
-	YY_BREAK
-case 120:
-YY_RULE_SETUP
-#line 309 "xxx.l"
-{BEGIN SO; NEWLINE;}
-	YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 310 "xxx.l"
-{BEGIN SO; IGNORE;}
-	YY_BREAK
-case 122:
-YY_RULE_SETUP
-#line 311 "xxx.l"
-{yyless(0);BEGIN SO;}
-	YY_BREAK
-case 123:
-YY_RULE_SETUP
-#line 313 "xxx.l"
-/* special characters */	IGNORE;
-	YY_BREAK
-case 124:
-YY_RULE_SETUP
-#line 314 "xxx.l"
-IGNORE;
-	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 315 "xxx.l"
-SPACE;
-	YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 317 "xxx.l"
-{   if (fWord)
-							(void)printf("%s\n", yytext);
-						    else
-							ECHO;
-						}
-	YY_BREAK
-case 127:
-YY_RULE_SETUP
-#line 322 "xxx.l"
-if (!fWord) ECHO;
-	YY_BREAK
-case 128:
-YY_RULE_SETUP
-#line 323 "xxx.l"
-if (!fWord) ECHO;
-	YY_BREAK
-case 129:
-YY_RULE_SETUP
-#line 325 "xxx.l"
-{ BEGIN ST; }
-	YY_BREAK
-case 130:
-YY_RULE_SETUP
-#line 326 "xxx.l"
-{ cOpenBrace++; }
-	YY_BREAK
-case 131:
-YY_RULE_SETUP
-#line 327 "xxx.l"
-{   cOpenBrace--;
-						    if (cOpenBrace == 0)
-						    {
-							if (--cArgs==0)
-							BEGIN SO;
-						    }
-						}
-	YY_BREAK
-case 132:
-YY_RULE_SETUP
-#line 334 "xxx.l"
-;
-	YY_BREAK
-case 133:
-YY_RULE_SETUP
-#line 335 "xxx.l"
-BEGIN SH;	
-	YY_BREAK
-case 134:
-YY_RULE_SETUP
-#line 336 "xxx.l"
-;
-	YY_BREAK
-case 135:
-YY_RULE_SETUP
-#line 338 "xxx.l"
-{ BEGIN SS; }
-	YY_BREAK
-case 136:
-YY_RULE_SETUP
-#line 339 "xxx.l"
-{ if (cOpenBrace == 0)
-						    {
-							if (--cArgs==0)
-							{
-							    BEGIN SO;
-							    cOpenBrace--;
-							}
-						    }
-						  cOpenBrace++;
-						}
-	YY_BREAK
-case 137:
-YY_RULE_SETUP
-#line 349 "xxx.l"
-{   cOpenBrace--; }
-	YY_BREAK
-case 138:
-YY_RULE_SETUP
-#line 350 "xxx.l"
-;
-	YY_BREAK
-case 139:
-YY_RULE_SETUP
-#line 351 "xxx.l"
-BEGIN SG;	
-	YY_BREAK
-case 140:
-YY_RULE_SETUP
-#line 352 "xxx.l"
-;
-	YY_BREAK
-case 141:
-YY_RULE_SETUP
-#line 353 "xxx.l"
-ECHO;
-	YY_BREAK
-#line 4847 "lex.yy.c"
-case YY_STATE_EOF(INITIAL):
-case YY_STATE_EOF(SJ):
-case YY_STATE_EOF(SK):
-case YY_STATE_EOF(SL):
-case YY_STATE_EOF(SM):
-case YY_STATE_EOF(SN):
-case YY_STATE_EOF(SO):
-case YY_STATE_EOF(SP):
-case YY_STATE_EOF(SA):
-case YY_STATE_EOF(SB):
-case YY_STATE_EOF(SC):
-case YY_STATE_EOF(SD):
-case YY_STATE_EOF(SE):
-case YY_STATE_EOF(SF):
-case YY_STATE_EOF(SH):
-case YY_STATE_EOF(ST):
-case YY_STATE_EOF(SG):
-case YY_STATE_EOF(SS):
-case YY_STATE_EOF(SI):
-case YY_STATE_EOF(SR):
-case YY_STATE_EOF(SQ):
-	yyterminate();
-
-	case YY_END_OF_BUFFER:
-		{
-		/* Amount of text matched not including the EOB char. */
-		int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
-
-		/* Undo the effects of YY_DO_BEFORE_ACTION. */
-		*yy_cp = yy_hold_char;
-		YY_RESTORE_YY_MORE_OFFSET
-
-		if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
-			{
-			/* We're scanning a new file or input source.  It's
-			 * possible that this happened because the user
-			 * just pointed yyin at a new source and called
-			 * yylex().  If so, then we have to assure
-			 * consistency between yy_current_buffer and our
-			 * globals.  Here is the right place to do so, because
-			 * this is the first action (other than possibly a
-			 * back-up) that will match for the new input source.
-			 */
-			yy_n_chars = yy_current_buffer->yy_n_chars;
-			yy_current_buffer->yy_input_file = yyin;
-			yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
-			}
-
-		/* Note that here we test for yy_c_buf_p "<=" to the position
-		 * of the first EOB in the buffer, since yy_c_buf_p will
-		 * already have been incremented past the NUL character
-		 * (since all states make transitions on EOB to the
-		 * end-of-buffer state).  Contrast this with the test
-		 * in input().
-		 */
-		if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-			{ /* This was really a NUL. */
-			yy_state_type yy_next_state;
-
-			yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
-
-			yy_current_state = yy_get_previous_state();
-
-			/* Okay, we're now positioned to make the NUL
-			 * transition.  We couldn't have
-			 * yy_get_previous_state() go ahead and do it
-			 * for us because it doesn't know how to deal
-			 * with the possibility of jamming (and we don't
-			 * want to build jamming into it because then it
-			 * will run more slowly).
-			 */
-
-			yy_next_state = yy_try_NUL_trans( yy_current_state );
-
-			yy_bp = yytext_ptr + YY_MORE_ADJ;
-
-			if ( yy_next_state )
-				{
-				/* Consume the NUL. */
-				yy_cp = ++yy_c_buf_p;
-				yy_current_state = yy_next_state;
-				goto yy_match;
-				}
-
-			else
-				{
-				yy_cp = yy_c_buf_p;
-				goto yy_find_action;
-				}
-			}
-
-		else switch ( yy_get_next_buffer() )
-			{
-			case EOB_ACT_END_OF_FILE:
-				{
-				yy_did_buffer_switch_on_eof = 0;
-
-				if ( yywrap() )
-					{
-					/* Note: because we've taken care in
-					 * yy_get_next_buffer() to have set up
-					 * yytext, we can now set up
-					 * yy_c_buf_p so that if some total
-					 * hoser (like flex itself) wants to
-					 * call the scanner after we return the
-					 * YY_NULL, it'll still work - another
-					 * YY_NULL will get returned.
-					 */
-					yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-
-					yy_act = YY_STATE_EOF(YY_START);
-					goto do_action;
-					}
-
-				else
-					{
-					if ( ! yy_did_buffer_switch_on_eof )
-						YY_NEW_FILE;
-					}
-				break;
-				}
-
-			case EOB_ACT_CONTINUE_SCAN:
-				yy_c_buf_p =
-					yytext_ptr + yy_amount_of_matched_text;
-
-				yy_current_state = yy_get_previous_state();
-
-				yy_cp = yy_c_buf_p;
-				yy_bp = yytext_ptr + YY_MORE_ADJ;
-				goto yy_match;
-
-			case EOB_ACT_LAST_MATCH:
-				yy_c_buf_p =
-				&yy_current_buffer->yy_ch_buf[yy_n_chars];
-
-				yy_current_state = yy_get_previous_state();
-
-				yy_cp = yy_c_buf_p;
-				yy_bp = yytext_ptr + YY_MORE_ADJ;
-				goto yy_find_action;
-			}
-		break;
-		}
-
-	default:
-		YY_FATAL_ERROR(
-			"fatal flex scanner internal error--no action found" );
-	} /* end of action switch */
-		} /* end of scanning one token */
-	} /* end of yylex */
-
-
-/* yy_get_next_buffer - try to read in a new buffer
- *
- * Returns a code representing an action:
- *	EOB_ACT_LAST_MATCH -
- *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
- *	EOB_ACT_END_OF_FILE - end of file
- */
-
-static int yy_get_next_buffer()
-	{
-	register char *dest = yy_current_buffer->yy_ch_buf;
-	register char *source = yytext_ptr;
-	register int number_to_move, i;
-	int ret_val;
-
-	if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
-		YY_FATAL_ERROR(
-		"fatal flex scanner internal error--end of buffer missed" );
-
-	if ( yy_current_buffer->yy_fill_buffer == 0 )
-		{ /* Don't try to fill the buffer, so this is an EOF. */
-		if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
-			{
-			/* We matched a single character, the EOB, so
-			 * treat this as a final EOF.
-			 */
-			return EOB_ACT_END_OF_FILE;
-			}
-
-		else
-			{
-			/* We matched some text prior to the EOB, first
-			 * process it.
-			 */
-			return EOB_ACT_LAST_MATCH;
-			}
-		}
-
-	/* Try to read more data. */
-
-	/* First move last chars to start of buffer. */
-	number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
-
-	for ( i = 0; i < number_to_move; ++i )
-		*(dest++) = *(source++);
-
-	if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
-		/* don't do the read, it's not guaranteed to return an EOF,
-		 * just force an EOF
-		 */
-		yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
-	else
-		{
-		int num_to_read =
-			yy_current_buffer->yy_buf_size - number_to_move - 1;
-
-		while ( num_to_read <= 0 )
-			{ /* Not enough room in the buffer - grow it. */
-#ifdef YY_USES_REJECT
-			YY_FATAL_ERROR(
-"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
-#else
-
-			/* just a shorter name for the current buffer */
-			YY_BUFFER_STATE b = yy_current_buffer;
-
-			int yy_c_buf_p_offset =
-				(int) (yy_c_buf_p - b->yy_ch_buf);
-
-			if ( b->yy_is_our_buffer )
-				{
-				int new_size = b->yy_buf_size * 2;
-
-				if ( new_size <= 0 )
-					b->yy_buf_size += b->yy_buf_size / 8;
-				else
-					b->yy_buf_size *= 2;
-
-				b->yy_ch_buf = (char *)
-					/* Include room in for 2 EOB chars. */
-					yy_flex_realloc( (void *) b->yy_ch_buf,
-							 b->yy_buf_size + 2 );
-				}
-			else
-				/* Can't grow it, we don't own it. */
-				b->yy_ch_buf = 0;
-
-			if ( ! b->yy_ch_buf )
-				YY_FATAL_ERROR(
-				"fatal error - scanner input buffer overflow" );
-
-			yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
-
-			num_to_read = yy_current_buffer->yy_buf_size -
-						number_to_move - 1;
-#endif
-			}
-
-		if ( num_to_read > YY_READ_BUF_SIZE )
-			num_to_read = YY_READ_BUF_SIZE;
-
-		/* Read in more data. */
-		YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
-			yy_n_chars, num_to_read );
-
-		yy_current_buffer->yy_n_chars = yy_n_chars;
-		}
-
-	if ( yy_n_chars == 0 )
-		{
-		if ( number_to_move == YY_MORE_ADJ )
-			{
-			ret_val = EOB_ACT_END_OF_FILE;
-			yyrestart( yyin );
-			}
-
-		else
-			{
-			ret_val = EOB_ACT_LAST_MATCH;
-			yy_current_buffer->yy_buffer_status =
-				YY_BUFFER_EOF_PENDING;
-			}
-		}
-
-	else
-		ret_val = EOB_ACT_CONTINUE_SCAN;
-
-	yy_n_chars += number_to_move;
-	yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
-	yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
-
-	yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
-
-	return ret_val;
-	}
-
-
-/* yy_get_previous_state - get the state just before the EOB char was reached */
-
-static yy_state_type yy_get_previous_state()
-	{
-	register yy_state_type yy_current_state;
-	register char *yy_cp;
-
-	yy_current_state = yy_start;
-
-	for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
-		{
-		if ( yy_accept[yy_current_state] )
-			{
-			yy_last_accepting_state = yy_current_state;
-			yy_last_accepting_cpos = yy_cp;
-			}
-		if ( *yy_cp )
-			{
-			register YY_CHAR yy_c = YY_SC_TO_UI(*yy_cp);
-			if ( yy_accept[yy_current_state] )
-				{
-				yy_last_accepting_state = yy_current_state;
-				yy_last_accepting_cpos = yy_cp;
-				}
-			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
-				{
-				yy_current_state = (int) yy_def[yy_current_state];
-				}
-			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-			}
-		else
-			yy_current_state = yy_NUL_trans[yy_current_state];
-		}
-
-	return yy_current_state;
-	}
-
-
-/* yy_try_NUL_trans - try to make a transition on the NUL character
- *
- * synopsis
- *	next_state = yy_try_NUL_trans( current_state );
- */
-
-#ifdef YY_USE_PROTOS
-static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
-#else
-static yy_state_type yy_try_NUL_trans( yy_current_state )
-yy_state_type yy_current_state;
-#endif
-	{
-	register int yy_is_jam;
-
-	yy_current_state = yy_NUL_trans[yy_current_state];
-	yy_is_jam = (yy_current_state == 0);
-
-	return yy_is_jam ? 0 : yy_current_state;
-	}
-
-
-#ifndef YY_NO_UNPUT
-#ifdef YY_USE_PROTOS
-static void yyunput( int c, register char *yy_bp )
-#else
-static void yyunput( c, yy_bp )
-int c;
-register char *yy_bp;
-#endif
-	{
-	register char *yy_cp = yy_c_buf_p;
-
-	/* undo effects of setting up yytext */
-	*yy_cp = yy_hold_char;
-
-	if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-		{ /* need to shift things up to make room */
-		/* +2 for EOB chars. */
-		register int number_to_move = yy_n_chars + 2;
-		register char *dest = &yy_current_buffer->yy_ch_buf[
-					yy_current_buffer->yy_buf_size + 2];
-		register char *source =
-				&yy_current_buffer->yy_ch_buf[number_to_move];
-
-		while ( source > yy_current_buffer->yy_ch_buf )
-			*--dest = *--source;
-
-		yy_cp += (int) (dest - source);
-		yy_bp += (int) (dest - source);
-		yy_current_buffer->yy_n_chars =
-			yy_n_chars = yy_current_buffer->yy_buf_size;
-
-		if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
-			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-		}
-
-	*--yy_cp = (char) c;
-
-
-	yytext_ptr = yy_bp;
-	yy_hold_char = *yy_cp;
-	yy_c_buf_p = yy_cp;
-	}
-#endif	/* ifndef YY_NO_UNPUT */
-
-
-#ifdef __cplusplus
-static int yyinput()
-#else
-static int input()
-#endif
-	{
-	int c;
-
-	*yy_c_buf_p = yy_hold_char;
-
-	if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
-		{
-		/* yy_c_buf_p now points to the character we want to return.
-		 * If this occurs *before* the EOB characters, then it's a
-		 * valid NUL; if not, then we've hit the end of the buffer.
-		 */
-		if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
-			/* This was really a NUL. */
-			*yy_c_buf_p = '\0';
-
-		else
-			{ /* need more input */
-			int offset = yy_c_buf_p - yytext_ptr;
-			++yy_c_buf_p;
-
-			switch ( yy_get_next_buffer() )
-				{
-				case EOB_ACT_LAST_MATCH:
-					/* This happens because yy_g_n_b()
-					 * sees that we've accumulated a
-					 * token and flags that we need to
-					 * try matching the token before
-					 * proceeding.  But for input(),
-					 * there's no matching to consider.
-					 * So convert the EOB_ACT_LAST_MATCH
-					 * to EOB_ACT_END_OF_FILE.
-					 */
-
-					/* Reset buffer status. */
-					yyrestart( yyin );
-
-					/* fall through */
-
-				case EOB_ACT_END_OF_FILE:
-					{
-					if ( yywrap() )
-						return EOF;
-
-					if ( ! yy_did_buffer_switch_on_eof )
-						YY_NEW_FILE;
-#ifdef __cplusplus
-					return yyinput();
-#else
-					return input();
-#endif
-					}
-
-				case EOB_ACT_CONTINUE_SCAN:
-					yy_c_buf_p = yytext_ptr + offset;
-					break;
-				}
-			}
-		}
-
-	c = *(unsigned char *) yy_c_buf_p;	/* cast for 8-bit char's */
-	*yy_c_buf_p = '\0';	/* preserve yytext */
-	yy_hold_char = *++yy_c_buf_p;
-
-
-	return c;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yyrestart( FILE *input_file )
-#else
-void yyrestart( input_file )
-FILE *input_file;
-#endif
-	{
-	if ( ! yy_current_buffer )
-		yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
-
-	yy_init_buffer( yy_current_buffer, input_file );
-	yy_load_buffer_state();
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
-#else
-void yy_switch_to_buffer( new_buffer )
-YY_BUFFER_STATE new_buffer;
-#endif
-	{
-	if ( yy_current_buffer == new_buffer )
-		return;
-
-	if ( yy_current_buffer )
-		{
-		/* Flush out information for old buffer. */
-		*yy_c_buf_p = yy_hold_char;
-		yy_current_buffer->yy_buf_pos = yy_c_buf_p;
-		yy_current_buffer->yy_n_chars = yy_n_chars;
-		}
-
-	yy_current_buffer = new_buffer;
-	yy_load_buffer_state();
-
-	/* We don't actually know whether we did this switch during
-	 * EOF (yywrap()) processing, but the only time this flag
-	 * is looked at is after yywrap() is called, so it's safe
-	 * to go ahead and always set it.
-	 */
-	yy_did_buffer_switch_on_eof = 1;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_load_buffer_state( void )
-#else
-void yy_load_buffer_state()
-#endif
-	{
-	yy_n_chars = yy_current_buffer->yy_n_chars;
-	yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
-	yyin = yy_current_buffer->yy_input_file;
-	yy_hold_char = *yy_c_buf_p;
-	}
-
-
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
-#else
-YY_BUFFER_STATE yy_create_buffer( file, size )
-FILE *file;
-int size;
-#endif
-	{
-	YY_BUFFER_STATE b;
-
-	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-	b->yy_buf_size = size;
-
-	/* yy_ch_buf has to be 2 characters longer than the size given because
-	 * we need to put in 2 end-of-buffer characters.
-	 */
-	b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
-	if ( ! b->yy_ch_buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
-
-	b->yy_is_our_buffer = 1;
-
-	yy_init_buffer( b, file );
-
-	return b;
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_delete_buffer( YY_BUFFER_STATE b )
-#else
-void yy_delete_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-	{
-	if ( ! b )
-		return;
-
-	if ( b == yy_current_buffer )
-		yy_current_buffer = (YY_BUFFER_STATE) 0;
-
-	if ( b->yy_is_our_buffer )
-		yy_flex_free( (void *) b->yy_ch_buf );
-
-	yy_flex_free( (void *) b );
-	}
-
-
-#ifndef YY_ALWAYS_INTERACTIVE
-#ifndef YY_NEVER_INTERACTIVE
-extern int isatty YY_PROTO(( int ));
-#endif
-#endif
-
-#ifdef YY_USE_PROTOS
-void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
-#else
-void yy_init_buffer( b, file )
-YY_BUFFER_STATE b;
-FILE *file;
-#endif
-
-
-	{
-	yy_flush_buffer( b );
-
-	b->yy_input_file = file;
-	b->yy_fill_buffer = 1;
-
-#if YY_ALWAYS_INTERACTIVE
-	b->yy_is_interactive = 1;
-#else
-#if YY_NEVER_INTERACTIVE
-	b->yy_is_interactive = 0;
-#else
-	b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
-#endif
-#endif
-	}
-
-
-#ifdef YY_USE_PROTOS
-void yy_flush_buffer( YY_BUFFER_STATE b )
-#else
-void yy_flush_buffer( b )
-YY_BUFFER_STATE b;
-#endif
-
-	{
-	if ( ! b )
-		return;
-
-	b->yy_n_chars = 0;
-
-	/* We always need two end-of-buffer characters.  The first causes
-	 * a transition to the end-of-buffer state.  The second causes
-	 * a jam in that state.
-	 */
-	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
-	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
-
-	b->yy_buf_pos = &b->yy_ch_buf[0];
-
-	b->yy_at_bol = 1;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	if ( b == yy_current_buffer )
-		yy_load_buffer_state();
-	}
-
-
-#ifndef YY_NO_SCAN_BUFFER
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
-#else
-YY_BUFFER_STATE yy_scan_buffer( base, size )
-char *base;
-yy_size_t size;
-#endif
-	{
-	YY_BUFFER_STATE b;
-
-	if ( size < 2 ||
-	     base[size-2] != YY_END_OF_BUFFER_CHAR ||
-	     base[size-1] != YY_END_OF_BUFFER_CHAR )
-		/* They forgot to leave room for the EOB's. */
-		return 0;
-
-	b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
-	if ( ! b )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
-
-	b->yy_buf_size = size - 2;	/* "- 2" to take care of EOB's */
-	b->yy_buf_pos = b->yy_ch_buf = base;
-	b->yy_is_our_buffer = 0;
-	b->yy_input_file = 0;
-	b->yy_n_chars = b->yy_buf_size;
-	b->yy_is_interactive = 0;
-	b->yy_at_bol = 1;
-	b->yy_fill_buffer = 0;
-	b->yy_buffer_status = YY_BUFFER_NEW;
-
-	yy_switch_to_buffer( b );
-
-	return b;
-	}
-#endif
-
-
-#ifndef YY_NO_SCAN_STRING
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
-#else
-YY_BUFFER_STATE yy_scan_string( yy_str )
-yyconst char *yy_str;
-#endif
-	{
-	int len;
-	for ( len = 0; yy_str[len]; ++len )
-		;
-
-	return yy_scan_bytes( yy_str, len );
-	}
-#endif
-
-
-#ifndef YY_NO_SCAN_BYTES
-#ifdef YY_USE_PROTOS
-YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
-#else
-YY_BUFFER_STATE yy_scan_bytes( bytes, len )
-yyconst char *bytes;
-int len;
-#endif
-	{
-	YY_BUFFER_STATE b;
-	char *buf;
-	yy_size_t n;
-	int i;
-
-	/* Get memory for full buffer, including space for trailing EOB's. */
-	n = len + 2;
-	buf = (char *) yy_flex_alloc( n );
-	if ( ! buf )
-		YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
-
-	for ( i = 0; i < len; ++i )
-		buf[i] = bytes[i];
-
-	buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
-
-	b = yy_scan_buffer( buf, n );
-	if ( ! b )
-		YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
-
-	/* It's okay to grow etc. this buffer, and we should throw it
-	 * away when we're done.
-	 */
-	b->yy_is_our_buffer = 1;
-
-	return b;
-	}
-#endif
-
-
-#ifndef YY_NO_PUSH_STATE
-#ifdef YY_USE_PROTOS
-static void yy_push_state( int new_state )
-#else
-static void yy_push_state( new_state )
-int new_state;
-#endif
-	{
-	if ( yy_start_stack_ptr >= yy_start_stack_depth )
-		{
-		yy_size_t new_size;
-
-		yy_start_stack_depth += YY_START_STACK_INCR;
-		new_size = yy_start_stack_depth * sizeof( int );
-
-		if ( ! yy_start_stack )
-			yy_start_stack = (int *) yy_flex_alloc( new_size );
-
-		else
-			yy_start_stack = (int *) yy_flex_realloc(
-					(void *) yy_start_stack, new_size );
-
-		if ( ! yy_start_stack )
-			YY_FATAL_ERROR(
-			"out of memory expanding start-condition stack" );
-		}
-
-	yy_start_stack[yy_start_stack_ptr++] = YY_START;
-
-	BEGIN(new_state);
-	}
-#endif
-
-
-#ifndef YY_NO_POP_STATE
-static void yy_pop_state()
-	{
-	if ( --yy_start_stack_ptr < 0 )
-		YY_FATAL_ERROR( "start-condition stack underflow" );
-
-	BEGIN(yy_start_stack[yy_start_stack_ptr]);
-	}
-#endif
-
-
-#ifndef YY_NO_TOP_STATE
-static int yy_top_state()
-	{
-	return yy_start_stack[yy_start_stack_ptr - 1];
-	}
-#endif
-
-#ifndef YY_EXIT_FAILURE
-#define YY_EXIT_FAILURE 2
-#endif
-
-#ifdef YY_USE_PROTOS
-static void yy_fatal_error( yyconst char msg[] )
-#else
-static void yy_fatal_error( msg )
-char msg[];
-#endif
-	{
-	(void) fprintf( stderr, "%s\n", msg );
-	exit( YY_EXIT_FAILURE );
-	}
-
-
-
-/* Redefine yyless() so it works in section 3 code. */
-
-#undef yyless
-#define yyless(n) \
-	do \
-		{ \
-		/* Undo effects of setting up yytext. */ \
-		yytext[yyleng] = yy_hold_char; \
-		yy_c_buf_p = yytext + n; \
-		yy_hold_char = *yy_c_buf_p; \
-		*yy_c_buf_p = '\0'; \
-		yyleng = n; \
-		} \
-	while ( 0 )
-
-
-/* Internal utility routines. */
-
-#ifndef yytext_ptr
-#ifdef YY_USE_PROTOS
-static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
-#else
-static void yy_flex_strncpy( s1, s2, n )
-char *s1;
-yyconst char *s2;
-int n;
-#endif
-	{
-	register int i;
-	for ( i = 0; i < n; ++i )
-		s1[i] = s2[i];
-	}
-#endif
-
-#ifdef YY_NEED_STRLEN
-#ifdef YY_USE_PROTOS
-static int yy_flex_strlen( yyconst char *s )
-#else
-static int yy_flex_strlen( s )
-yyconst char *s;
-#endif
-	{
-	register int n;
-	for ( n = 0; s[n]; ++n )
-		;
-
-	return n;
-	}
-#endif
-
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_alloc( yy_size_t size )
-#else
-static void *yy_flex_alloc( size )
-yy_size_t size;
-#endif
-	{
-	return (void *) malloc( size );
-	}
-
-#ifdef YY_USE_PROTOS
-static void *yy_flex_realloc( void *ptr, yy_size_t size )
-#else
-static void *yy_flex_realloc( ptr, size )
-void *ptr;
-yy_size_t size;
-#endif
-	{
-	/* The cast to (char *) in the following accommodates both
-	 * implementations that use char* generic pointers, and those
-	 * that use void* generic pointers.  It works with the latter
-	 * because both ANSI C and C++ allow castless assignment from
-	 * any pointer type to void*, and deal with argument conversions
-	 * as though doing an assignment.
-	 */
-	return (void *) realloc( (char *) ptr, size );
-	}
-
-#ifdef YY_USE_PROTOS
-static void yy_flex_free( void *ptr )
-#else
-static void yy_flex_free( ptr )
-void *ptr;
-#endif
-	{
-	free( ptr );
-	}
-
-#if YY_MAIN
-int main()
-	{
-	yylex();
-	return 0;
-	}
-#endif
-#line 353 "xxx.l"
-
-/******
-** main --
-**	Set sbProgName to the base of arg 0.
-**	Set the input paths.
-**	Check for options
-**		-c		echo LaTeX \cite, \ref, and \pageref values
-**		-e <env-list>	list of LaTeX environments to ignore
-**		-l		force latex mode
-**		-n		do not follow \input and \include
-**		-s		replace control sequences with space
-**		-t		force tex mode
-**		-w		word only output
-**	Set the list of LaTeX environments to ignore.
-**	Process each input file.
-**	If no input files are specified on the command line, process stdin.
-******/
-
-main(cArgs,rgsbArgs)
-int	cArgs;
-char	*rgsbArgs[];
-{
-	char	*pch, *sbEnvList = DEFAULTENV, sbBadOpt[2];
-	FILE	*TexOpen();
-	int	fSawFile = 0, iArgs = 1;
-	
-	/* get base name and decide what we are doing, detex or delatex */
-#ifdef OS2
-	char drive[_MAX_DRIVE], dir[_MAX_DIR];
-	char fname[_MAX_FNAME], ext[_MAX_EXT];
-#ifdef __EMX__
-	_wildcard(&cArgs, &rgsbArgs);
-	_response(&cArgs, &rgsbArgs);
-#endif
-	_splitpath (rgsbArgs[0], drive, dir, fname, ext);
-	sbProgName = strlwr(fname);
-#else
-	if ((sbProgName = rindex(rgsbArgs[0], '/')) != NULL)
-	    sbProgName++;
-	else
-	    sbProgName = rgsbArgs[0];
-#endif
-	if (strcmp("delatex",sbProgName) == 0)
-	    fLatex = 1;
-	
-	/* set rgsbInputPaths for use with TexOpen() */
-	SetInputPaths();
-
-	/* process command line options */
-	while (iArgs < cArgs && *(pch = rgsbArgs[iArgs]) == CHOPT) {
-		while (*++pch)
-		    switch (*pch) {
-		    case CHCITEOPT:
-			fCite = 1;
-			break;
-		    case CHENVOPT:
-			if (++iArgs >= cArgs) {
-				ErrorExit("-e option requires and argument");
-			}
-			sbEnvList = rgsbArgs[iArgs];
-			break;
-		    case CHLATEXOPT:
-			fLatex = 1;
-			break;
-		    case CHNOFOLLOWOPT:
-			fFollow = 0;
-			break;
-		    case CHSPACEOPT:
-			fSpace = 1;
-			break;
-		    case CHTEXOPT:
-			fForcetex = 1;
-			break;
-		    case CHWORDOPT:
-			fWord = 1;
-			break;
-		    default:
-#ifdef OS2
-			OS2UsageExit();
-#else
-			sbBadOpt[0] = *pch;
-			sbBadOpt[1] = '\0';
-			Warning("unknown option ignored -", sbBadOpt);
-#endif
-		    }
-		iArgs++;
-	}
-	SetEnvIgnore(sbEnvList);
-
-	/* process input files */
-	for (; iArgs < cArgs; iArgs++) {
-	    fSawFile++;
-	    if ((yyin = TexOpen(rgsbArgs[iArgs])) == NULL) {
-		Warning("can't open file", rgsbArgs[iArgs]);
-		continue;;
-	    }
-	    BEGIN SO;
-	    (void)yylex();
-	}
-
-	/* if there were no input files, assume stdin */
-	if (!fSawFile) {
-	    yyin = stdin;
-#ifdef OS2
-	    if (isatty(fileno(stdin)))
-		OS2UsageExit();
-#endif
-	    BEGIN SO;
-	    (void)yylex();
-	}
-#ifndef FLEX_SCANNER
-	if (YYSTATE != SO)
-	    ErrorExit("input contains an unterminated mode or environment");
-#endif
-	return(0);
-}
-
-#ifdef FLEX_SCANNER
-#undef yywrap
-#endif
-
-/******
-** yywrap -- handles EOF for lex.  Check to see if the stack of open files
-**	has anything on it.  If it does, set yyin to the to value.  If not
-**	return the termination signal for lex.
-******/
-
-yywrap()
-{
-	(void)fclose(yyin);
-#ifdef FLEX_SCANNER
-        /* Pop context state */
-	if (csb > 0) {
-		yy_delete_buffer( YY_CURRENT_BUFFER );
-		yy_switch_to_buffer( rgsb[--csb] );
-	}
-#endif /* FLEX_SCANNER */
-	if (cfp > 0) {
-	    yyin = rgfp[--cfp];
-	    return(0);
-	}
-	return(1);
-}
-
-#ifdef OS2
-
-/******
-** yyless -- return characters to the input stream.  Some systems don't have
-**	a yyless routine
-******/
-
-void yyless(n)
-int n;
-{
-	int 	i = strlen(yytext);
-
-	while (i > n) unput(yytext[--i]);
-	yytext[yyleng = n] = '\0';
-}
-#endif
-
-/******
-** SetEnvIgnore -- sets rgsbEnvIgnore to the values indicated by the
-**	sbEnvList.
-******/
-
-SetEnvIgnore(sbEnvList)
-char	*sbEnvList;
-{
-	char *sb;
-
-	sb = SafeMalloc(strlen(sbEnvList) + 1, "malloc for SetEnvIgnore failed");
-	(void) strcpy(sb, sbEnvList);
-	csbEnvIgnore = SeparateList(sb, rgsbEnvIgnore, CHENVSEP, MAXENVS);
-	if (csbEnvIgnore == ERROR)
-	    ErrorExit("The environtment list contains too many environments");
-}
-
-/******
-** BeginEnv -- checks to see if sbEnv is in the list rgsbEnvIgnore.  If it
-**	is, sbCurrentEnv is set to sbEnv.
-******/
-
-BeginEnv(sbEnv)
-char	*sbEnv;
-{
-	int	i;
-
-	if (!fLatex) return(0);
-	for (i = 0; i < csbEnvIgnore; i++)
-	    if (strcmp(sbEnv, rgsbEnvIgnore[i]) == 0) {
-		(void)strcpy(sbCurrentEnv, sbEnv);
-		return(1);
-	    }
-	return(0);
-}
-
-/******
-** EndEnv -- checks to see if sbEnv is the current environment being ignored.
-******/
-
-EndEnv(sbEnv)
-char	*sbEnv;
-{
-	if (!fLatex) return(0);
-	if (strcmp(sbEnv, sbCurrentEnv) == 0)
-	    return(1);
-	return(0);
-}
-
-/******
-** InputFile -- push the current yyin and open sbFile.  If the open fails,
-**	the sbFile is ignored.
-******/
-
-InputFile(sbFile)
-char	*sbFile;
-{
-	FILE	*TexOpen();
-
-	if (!fFollow)
-	    return;
-	rgfp[cfp++] = yyin;
-	if ((yyin = TexOpen(sbFile)) == NULL) {
-	    Warning("can't open \\input file", sbFile);
-	    yyin = rgfp[--cfp];
-            return;
-	} 
-#ifdef FLEX_SCANNER
-        rgsb[csb++] = YY_CURRENT_BUFFER;
-        yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
-#endif /* FLEX_SCANNER */
-}
-
-/******
-** IncludeFile -- if sbFile is not in the rgsbIncList, push current yyin
-**	and open sbFile.  If the open fails, the sbFile is ignored.
-******/
-
-IncludeFile(sbFile)
-char	*sbFile;
-{
-	FILE	*TexOpen();
-
-	if (!fFollow)
-	    return;
-	if (!InList(sbFile))
-	    return;
-	rgfp[cfp++] = yyin;
-	if ((yyin = TexOpen(sbFile)) == NULL) {
-	    Warning("can't open \\include file", sbFile);
-	    yyin = rgfp[--cfp];
-            return;
-	}
-#ifdef FLEX_SCANNER
-        rgsb[csb++] = YY_CURRENT_BUFFER;
-        yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
-#endif /* FLEX_SCANNER */
-}
-
-/******
-** AddInclude -- adds sbFile to the rgsbIncList and increments csbIncList.
-**	If the include list is too long, sbFile is ignored.
-******/
-
-AddInclude(sbFile)
-char	*sbFile;
-{
-	if (!fFollow)
-	    return;
-	if (csbIncList >= MAXINCLIST)
-	    Warning("\\includeonly list is too long, ignoring", sbFile);
-	rgsbIncList[csbIncList] = SafeMalloc(strlen(sbFile) + 1, "malloc for AddInclude failed");
-	(void)strcpy(rgsbIncList[csbIncList++], sbFile);
-}
-
-/******
-** InList -- checks to see if sbFile is in the rgsbIncList.  If there is
-**	no list, all files are assumed to be "in the list".
-******/
-
-InList(sbFile)
-char	*sbFile;
-{
-	char	*pch, sbBase[MAXPATHLEN];
-	int	i;
-
-	if (csbIncList == 0)	/* no list */
-	    return(1);
-	(void)strcpy(sbBase, sbFile);
-	if ((pch = rindex(sbBase, '.')) != NULL)
-	    *pch = '\0';
-	i = 0;
-	while ((i < csbIncList) && rgsbIncList[i])
-	    if (strcmp(rgsbIncList[i++], sbBase) == 0)
-	        return(1);
-	return(0);
-}
-
-/******
-** SetInputPaths -- sets rgsbInputPaths to the values indicated by the
-**	TEXINPUTS environment variable if set or else DEFAULTINPUTS.  If
-**	the user's TEXINPUTS has a leading ':' prepend the DEFAULTINPUTS
-**	to the path, if there is a trailing ':' append the DEFAULTINPUTS.
-**	This is consistent with the most recent TeX.  However, this
-**	routine does not honor the '//' construct (expand subdirs).
-******/
-
-SetInputPaths()
-{
-	char *sb, *sbPaths, *getenv();
-	int cchDefaults, cchPaths;
-
-	cchDefaults = strlen(DEFAULTINPUTS);
-#ifdef OS2
-	if ((sb = getenv("TEXINPUT")) == NULL)
-#endif
-	    if ((sb = getenv("TEXINPUTS")) == NULL)
-		sb = DEFAULTINPUTS;
-	cchPaths = strlen(sb);
-	if (sb[0] == CHPATHSEP)
-	    cchPaths += cchDefaults;
-	if (sb[strlen(sb) - 1] == CHPATHSEP)
-	    cchPaths += cchDefaults;
-	sbPaths = SafeMalloc(cchPaths + 1, "malloc for SetInputPaths failed");
-	sbPaths[0] = '\0';
-	if (sb[0] == CHPATHSEP)
-	    (void)strcat(sbPaths, DEFAULTINPUTS);
-	(void)strcat(sbPaths, sb);
-	if (sb[strlen(sb) - 1] == CHPATHSEP)
-	    (void)strcat(sbPaths, DEFAULTINPUTS);
-
-	csbInputPaths = SeparateList(sbPaths, rgsbInputPaths, CHPATHSEP, MAXINPUTPATHS);
-	if (csbInputPaths == ERROR)
-#ifdef OS2
-	    ErrorExit("TEXINPUT(S) environment variable has too many paths");
-#else
-	    ErrorExit("TEXINPUTS environment variable has too many paths");
-#endif
-}
-
-/******
-** SeparateList -- takes a chSep separated list sbList, replaces the
-**	chSep's with NULLs and sets rgsbList[i] to the beginning of
-**	the ith word in sbList.  The number of words is returned.  A
-**	ERROR is returned if there are more than csbMax words.
-******/
-
-SeparateList(sbList, rgsbList, chSep, csbMax)
-char	*sbList, *rgsbList[], chSep;
-int	csbMax;
-{
-	int	csbList = 0;
-
-	while (sbList && *sbList && csbList < csbMax) {
-	    rgsbList[csbList++] = sbList;
-	    if (sbList = index(sbList, chSep))
-		*sbList++ = '\0';
-	}
-	return(sbList && *sbList ? ERROR : csbList);
-}
-
-/******
-** TexOpen -- tries to open sbFile in each of the rgsbInputPaths in turn.
-**	For each input path the following order is used:
-**		file.tex - must be as named, if not there go to the next path
-**		file.ext - random extension, try it
-**		file     - base name, add .tex and try it
-**		file     - try it as is
-**	Notice that if file exists in the first path and file.tex exists in
-**	one of the other paths, file in the first path is what is opened.
-**	If the sbFile begins with a '/', no paths are searched.
-******/
-
-FILE *
-TexOpen(sbFile)
-char	*sbFile;
-{
-	char	*pch, *sbNew;
-	FILE	*fp;
-	int	iPath;
-	static char	sbFullPath[MAXPATHLEN];
-
-	for (iPath = 0; iPath < csbInputPaths; iPath++) {
-#ifdef OS2
-	    if (*sbFile == '/' || *sbFile == '\\' || strchr(sbFile, ':')) {	/* absolute path */
-#else
-	    if (*sbFile == '/') {	/* absolute path */
-#endif
-		(void)sprintf(sbFullPath, "%s", sbFile);
-		iPath = csbInputPaths;	/* only check once */
-	    } else
-		(void)sprintf(sbFullPath, "%s/%s", rgsbInputPaths[iPath], sbFile);
-#ifdef OS2
-	    pch = sbFullPath;
-	    while (pch = strchr(pch, '\\'))
-		*pch = '/';
-#endif
-
-	    /* If sbFile ends in .tex then it must be there */
-	    if ((pch = rindex(sbFullPath, '.')) != NULL
-			&& (strcmp(pch, ".tex") == 0))
-		if ((fp = fopen(sbFullPath, "r")) != NULL)
-		    return(fp);
-		else
-		    continue;
-
-	    /* if .<ext> then try to open it.  the '.' represents   */
-	    /* the beginning of an extension if it is not the first */
-	    /* character and it does not follow a '.' or a '/'      */
-	    if (pch != NULL && pch > &(sbFullPath[0])
-                    && *(pch - 1) != '.' && *(pch - 1) != '/'
-		    && (fp = fopen(sbFullPath, "r")) != NULL)
-		return(fp);
-
-	    /* just base name, add .tex to the name */
-	    sbNew = SafeMalloc(strlen(sbFullPath) + 5, "malloc for TexOpen failed");
-	    (void)strcpy(sbNew, sbFullPath);
-	    (void)strcat(sbNew, ".tex");
-	    if ((fp = fopen(sbNew, "r")) != NULL)
-		return(fp);
-
-	    /* try sbFile regardless */
-	    if ((fp = fopen(sbFullPath, "r")) != NULL)
-		return(fp);
-	}
-	return((FILE *)NULL);
-}
-
-/******
-** SafeMalloc -- wrapper around malloc() to check for failure.
-******/
-
-char *
-SafeMalloc(cch, sbMessage)
-int cch;
-char *sbMessage;
-{
-	char *sb;
-
-	if ((sb = (char *)malloc((unsigned)cch)) == NULL)
-	    ErrorExit(sbMessage);
-	return(sb);
-}
-
-/******
-** Warning -- print a warning message preceded by the program name.
-******/
-
-Warning(sb1, sb2)
-char	*sb1, *sb2;
-{
-	(void)fprintf(stderr, "%s: warning: %s %s\n", sbProgName, sb1, sb2);
-}
-
-/******
-** ErrorExit -- print an error message preceded by the program name.
-**	Stdout is flushed and detex exits.
-******/
-
-ErrorExit(sb1)
-char	*sb1;
-{
-	(void)fflush(stdout);
-	(void)fprintf(stderr, "%s: error: %s\n", sbProgName, sb1);
-	exit(1);
-}
-#ifdef OS2
-
-/******
-** OS2UsageExit -- print OS/2 usage message and exit.
-******/
-
-OS2UsageExit()
-{
-	(void)printf("\n%s [ -clnstw ] [ -e environment-list ] [ filename[.tex] ... ]\n",
-		sbProgName);
-	puts("  -c  echo LaTeX \\cite, \\ref, and \\pageref values\n  \
--e  <env-list> list of LaTeX environments to ignore\n  \
--l  force latex mode\n  \
--n  do not follow \\input and \\include\n  \
--s  replace control sequences with space\n  \
--t  force tex mode\n  \
--w  word only output");
-	exit(0);
-}
-#endif

Deleted: trunk/Build/source/texk/detex/detex-src/states.sed
===================================================================
--- trunk/Build/source/texk/detex/detex-src/states.sed	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/detex-src/states.sed	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,57 +0,0 @@
-# Copyright (c) 1986-2007 Purdue University
-# All rights reserved.
-# 
-# Developed by:  Daniel Trinkle
-#                Department of Computer Science, Purdue University
-#                http://www.cs.purdue.edu/
-# 
-# Permission is hereby granted, free of charge, to any person obtaining
-# a copy of this software and associated documentation files (the
-# "Software"), to deal with the Software without restriction, including
-# without limitation the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the Software, and to
-# permit persons to whom the Software is furnished to do so, subject to
-# the following conditions:
-# 
-# o Redistributions of source code must retain the above copyright
-#   notice, this list of conditions and the following disclaimers.
-# 
-# o Redistributions in binary form must reproduce the above copyright
-#   notice, this list of conditions and the following disclaimers in the
-#   documentation and/or other materials provided with the distribution.
-# 
-# o Neither the names of Daniel Trinkle, Purdue University, nor the
-#   names of its contributors may be used to endorse or promote products
-#   derived from this Software without specific prior written
-#   permission.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-# IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
-# ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
-# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
-#
-#
-# convert long labels to a shorter form so lex(1) won't overflow
-s/LaBegin/SA/g
-s/LaDisplay/SB/g
-s/LaEnd/SC/g
-s/LaEnv/SD/g
-s/LaFormula/SE/g
-s/LaInclude/SF/g
-s/LaMacro2/SG/g
-s/LaMacro/SH/g
-s/LaVerbatim/SI/g
-s/Define/SJ/g
-s/Display/SK/g
-s/IncludeOnly/SL/g
-s/\([ <]\)Input\([ >;]\)/\1SM\2/g
-s/Math/SN/g
-s/Normal/SO/g
-s/Control/SP/g
-s/LaPicture/SQ/g
-s/LaBreak/SR/g
-s/LaOptArg2/SS/g
-s/LaOptArg/ST/g

Modified: trunk/Build/source/texk/detex/test.lout
===================================================================
--- trunk/Build/source/texk/detex/test.lout	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/test.lout	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,22 +1,17 @@
-
-
-
 This is the first paragraph.
 
-First Section
+First Section 
 
 Preamble of Sect. 1.
 
-A Subsection
+A Subsection 
 
 Here some text, an inline formula , as well
 as a displayed equation
 
+ 
 
-
-
-
 and some more text.
 
-Now some verbatim text .  That's all, folks.
+Now some verbatim text a b c.  That's all, folks.
 

Modified: trunk/Build/source/texk/detex/test.tout
===================================================================
--- trunk/Build/source/texk/detex/test.tout	2018-06-26 00:23:30 UTC (rev 48091)
+++ trunk/Build/source/texk/detex/test.tout	2018-06-26 02:37:10 UTC (rev 48092)
@@ -1,23 +1,21 @@
-article
-
-
+article 
 This is the first paragraph.
 
-First Section
+First Section 
 
 Preamble of Sect. 1.
 
-A Subsection
+A Subsection 
 
 Here some text, an inline formula , as well
 as a displayed equation
 
-equation
-e^ix=x i x,
-equation
+equation 
+e^ix =x i x,
+equation 
 
 and some more text.
 
 Now some verbatim text a b c.  That's all, folks.
 
-document
\ No newline at end of file
+document 
\ No newline at end of file



More information about the tex-live-commits mailing list