# include "stdio.h"
# define U(x) x
# define NLSTATE yyprevious=YYNEWLINE
# define BEGIN yybgin = yysvec + 1 +
# define INITIAL 0
# define YYLERR yysvec
# define YYSTATE (yyestate-yysvec-1)
# define YYOPTIM 1
# define YYLMAX 200
# define output(c) putc(c,yyout)
# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
# define yymore() (yymorfg=1)
# define ECHO fprintf(yyout, "%s",yytext)
# define REJECT { nstr = yyreject(); goto yyfussy;}
int yyleng; extern char yytext[];
int yymorfg;
extern char *yysptr, yysbuf[];
int yytchar;
FILE *yyin ={stdin}, *yyout ={stdout};
extern int yylineno;
struct yysvf { 
	struct yywork *yystoff;
	struct yysvf *yyother;
	int *yystops;};
struct yysvf *yyestate;
extern struct yysvf yysvec[], *yybgin;
 /* l2a.l -*- C -*-
 +-----------------------------------------------------------------------------
 | Abstract:
 |    Lex filter to detexify texts (handles really LaTeX, and a bit of TeX).
 |
 | Authorship:
 |    Copyright (c) 1988, 1990 Gisle Hannemyr.
 |
 |    Permission is granted to hack, make and distribute copies of this program
 |    as long as this notice and the copyright notices are not removed.
 |    If you intend to distribute changed versions of this program, please make
 |    an entry in the "history" log (below) and mark the hacked lines with your
 |    initials. I maintain the program, and shall appreiciate copies of bug
 |    fixes and new versions.
 |    Flames, bug reports, comments and improvements to:
 |       snail: Gisle Hannemyr, Brageveien 3A, 0452 Oslo, Norway
 |       EAN:   C=no;PRMD=uninett;O=nr;S=Hannemyr;G=Gisle (X.400 SA format)
 |              gisle.hannemyr@nr.no                      (RFC-822  format)
 |       Inet: gisle@ifi.uio.no
 |       UUCP: ...!mcsun!ifi!gisle
 |
 | History:
 |    1.0  8 oct 90 [gh] Version 1 posted on comp.sources.misc.
 |    0.0 27 dec 88 [gh] Started it.
 |
 | Bugs:
 |    * Works for my style of Latex, but will proably barf on other peoples
 |      files.
 |    * I can't see how \kill can be handled by lex only.
 |    * \cite is hacked.  Should be fixed.
 |
 | Environment:
 |    None.
 |
 | Diagnostics:
 |    Prints plain error messages.  Does not return error codes.
 +---------------------------------------------------------------------------*/

 /*---( start of user written lex prologue )---------------------------------*/


#include <stdio.h>
#include <string.h>

#define VERSION "1.0"
#define MAXEROR  100
#define ENGLISH   0
#define NORWEGIAN 1

 void parseerror();
 void bibhead();
 void ptabular();
 void pfigure();
 void pcaption();
 void phorline();
 void pappendix();
 void verbatim();
 void pfotnote();
 void footnote();


 /*---( globals )------------------------------------------------------------*/

char About[] = "\
L2A is a filter to remove markup commands from LaTeX manuscripts.\n\n\
Flames, bug reports, comments and improvements to:\n\
   snail: Gisle Hannemyr, Brageveien 3A, 0452 Oslo, Norway\n\
   EAN:   C=no;PRMD=uninett;O=nr;S=Hannemyr;G=Gisle (X.400 SA format)\n\
          gisle.hannemyr@nr.no                      (RFC-822  format)\n\
   Inet:  gisle@ifi.uio.no\n\
   UUCP:  ...!mcsun!ifi!gisle\n";

char Usage[] = "   Usage: l2a (options)\n\
   Valid options:\n\
\t-a       -- about l2a\n\
\t-h       -- print this\n\
\t-n       -- norwegian text\n";

int    LineNo;                     /* Line number for debugging              */
int    Enumber;                    /* Number for enumerate                   */
int    Fnumber = 0;                /* Number for footnotes/endnotes          */
FILE   *BFile;                     /* Bibliography file.                     */
FILE   *FNote;                     /* Temp. file for footnotes.              */
int    Language = ENGLISH;         /* language for inserted text             */

 /*---( end of user written lex prologue )-----------------------------------*/

# define EN 2
# define FN 4
# define IT 6
# define QU 8
# define MM 10
# define YYNEWLINE 10
yylex(){
int nstr; extern int yyprevious;
while((nstr = yylook()) >= 0)
yyfussy: switch(nstr){
case 0:
if(yywrap()) return(0); break;
case 1:
{ bibhead(); }
break;
case 2:
   { ; }
break;
case 3:
{ fputs(yytext,stderr); }
break;
case 4:
  { yytext[0] = '('; yytext[strlen(yytext)] = ')'; printf("@CITE%s@ ",yytext); }
break;
case 5:
   { yytext[0] = '('; yytext[strlen(yytext)] = ')'; printf("@REF%s@ ", yytext); }
break;
case 6:
{ BEGIN EN; Enumber = 0; }
break;
case 7:
  { BEGIN 0;  }
break;
case 8:
  { BEGIN IT; }
break;
case 9:
    { BEGIN 0;  }
break;
case 10:
    { BEGIN QU; }
break;
case 11:
      { BEGIN 0;  }
break;
case 12:
{ BEGIN QU; }
break;
case 13:
  { BEGIN 0;  }
break;
case 14:
         { putchar('*'); }
break;
case 15:
         { Enumber++; printf("%d)",Enumber); }
break;
case 16:
             { putchar('+'); }
break;
case 17:
               { ECHO; LineNo++; fputs("   ",stdout); }
break;
case 18:
                { footnote();  BEGIN 0; }
break;
case 19:
                  { BEGIN MM; }
break;
case 20:
              { BEGIN 0;  }
break;
case 21:
       { putchar('<'); }
break;
case 22:
       { putchar('>'); }
break;
case 23:
    { putchar('\\'); }
break;
case 24:
 { ptabular();   }
break;
case 25:
    { phorline();   }
break;
case 26:
  { pfigure();    }
break;
case 27:
     { phorline();   }
break;
case 28:
        { pcaption();   }
break;
case 29:
         { Fnumber++; printf("<%d>",Fnumber); BEGIN FN; }
break;
case 30:
         { pappendix();  }
break;
case 31:
             { verbatim();   }
break;
case 32:
         { putchar('e'); }
break;
case 33:
             { putchar('{'); }
break;
case 34:
              { putchar('|'); }
break;
case 35:
             { putchar('}'); }
break;
case 36:
             { putchar('['); }
break;
case 37:
              { putchar('\\'); }
break;
case 38:
             { putchar(']'); }
break;
case 39:
                  { putchar('\t'); }
break;
case 40:
                { putchar('\t'); }
break;
case 41:
                  { putchar(' '); }
break;
case 42:
                { putchar(' '); }
break;
case 43:
                { putchar('$'); }
break;
case 44:
                { putchar('&'); }
break;
case 45:
                { putchar('%'); }
break;
case 46:
                { putchar('#'); }
break;
case 47:
                { putchar('_'); }
break;
case 48:
                { putchar('{'); }
break;
case 49:
                { putchar('{'); }
break;
case 50:
           { putchar('\n'); }
break;
case 51:
        { putchar('\n'); }
break;
case 52:
           { putchar('\n'); }
break;
case 53:
          { putchar('\n'); }
break;
case 54:
          { putchar('\n'); }
break;
case 55:
       { putchar('\n'); }
break;
case 56:
            { putchar('\n'); }
break;
case 57:
         { putchar('\n'); }
break;
case 58:
         {;}
break;
case 59:
      {;}
break;
case 60:
   {;}
break;
case 61:
       {;}
break;
case 62:
    {;}
break;
case 63:
   {;}
break;
case 64:
 {;}
break;
case 65:
 {;}
break;
case 66:
    {;}
break;
case 67:
    {;}
break;
case 68:
     {;}
break;
case 69:
   {;}
break;
case 70:
         {;}
break;
case 71:
      {;}
break;
case 72:
 {;}
break;
case 73:
   {;}
break;
case 74:
{;}
break;
case 75:
  {;}
break;
case 76:
  {;}
break;
case 77:
    {;}
break;
case 78:
              { fputs("TeX",   stdout); }
break;
case 79:
            { fputs("LaTeX", stdout); }
break;
case 80:
             { fputs("L2A",   stdout); }
break;
case 81:
            { fputs("...",   stdout); }
break;
case 82:
             {;}
break;
case 83:
       {;}
break;
case 84:
     {;}
break;
case 85:
            {;}
break;
case 86:
       {;}
break;
case 87:
            {;}
break;
case 88:
            {;}
break;
case 89:
            {;}
break;
case 90:
             {;}
break;
case 91:
             {;}
break;
case 92:
           {;}
break;
case 93:
           {;}
break;
case 94:
           {;}
break;
case 95:
           {;}
break;
case 96:
           {;}
break;
case 97:
           {;}
break;
case 98:
           {;}
break;
case 99:
           {;}
break;
case 100:
                  {;}
break;
case 101:
                  {;}
break;
case 102:
                {;}
break;
case 103:
                {;}
break;
case 104:
                   { ECHO; LineNo++; }
break;
case 105:
                    { ECHO; }
break;
case 106:
       { parseerror(12,yytext); yytext[0] = '('; printf("@%s)@ ",yytext); }
break;
case -1:
break;
default:
fprintf(yyout,"bad switch yylook %d",nstr);
} return(0); }
/* end of yylex */

 /*---( routines )-----------------------------------------------------------*/

 void parseerror(type,ss)
 int  type;
 char *ss;
 {
   static errcnt = 0;

   fprintf(stderr,"l2a: Error %d -- ",type);
   switch (type) {
      case  1: fputs("Instruction not recognized",stderr); break;
      case  2: fputs("Wrong number of parameters",stderr); break;
      case  3: fputs("Bad parameter received",stderr); break;
      case  5: fputs("Unknown character set",stderr); break;
      case  6: fputs("Position overflow",stderr); break;
      case 10: fputs("Bogus output request",stderr); break;
      case 11: fputs("Unimplemented command",stderr); break; /* No function */
      case 12: fputs("Unrecognized markup command",stderr); break;  /* No grammar  */
      case 13: fputs("Unhandled command",stderr); break;     /* No semantic */
      default: fputs("Unknown error (internal)",stderr); break;
   } /* switch */
   fprintf(stderr,"\n   @ line %3d: \"%s\"\n",LineNo,ss);
   errcnt++;
   if (errcnt > MAXEROR) {
      fputs("   Too many errors -- aborting\n",stderr);
      exit(-1);
   }
 } /* parseerror */


 void bibhead()
 {
    switch (Language) {
       case ENGLISH:   puts("\nReferences:"); break;
       case NORWEGIAN: puts("\nLitteratur:"); break;
    } /* switch */
 } /* bibhead */


 void ptabular()
 {
    switch (Language) {
       case ENGLISH:   puts("\t<<=============== NB! Typeset as table. NB! ================>>"); break;
       case NORWEGIAN: puts("\t<<============== NB! Settes som tabell. NB! ================>>"); break;
    } /* switch */
 }


 void pfigure()
 {
    switch (Language) {
       case ENGLISH:   puts("\t<<=========== NB! Please insert figure here. NB! ===========>>"); break;
       case NORWEGIAN: puts("\t<<=========== NB! Figur skal settes inn her. NB! ===========>>"); break;
    } /* switch */

 }


 void pcaption()
 {
    switch (Language) {
       case ENGLISH:   puts("\t  --------------- Caption for figure or table: -------------"); break;
       case NORWEGIAN: puts("\t  --------------- Undertekst for bilde/tabell: -------------"); break;
    } /* switch */
 }


 void phorline()
 {
    puts("<<==========================================================>>");
 }


 void pappendix()
 {
    switch (Language) {
       case ENGLISH:   puts("\n\nAPPENDIX\n========\n"); break;
       case NORWEGIAN: puts("\n\nAPPENDIX\n========\n"); break;
    } /* switch */
 }

 void verbatim()
 {
   int cc, ts;

   ts = input();
   for (;;) {
      cc = input();
      if (cc == ts) break;
      putchar(cc);
   } /* forever */
 } /* verbatim */


 void pfotnote()
 { 
    switch (Language) {
       case ENGLISH:   puts("\n\nENDNOTES\n========\n"); break;
       case NORWEGIAN: puts("\n\nNOTER\n=====\n"); break;
    } /* switch */
 }


 void footnote()
 {
   int cc, be = 1;

   fprintf(FNote,"<%d>: ", Fnumber);
   while (be) {
      cc = input();
      if      (cc == '{') be++;
      else if (cc == '}') be--;
      else putc(cc,FNote);
   }
   putc('\n',FNote);
   putc('\n',FNote);
 } /* footnote */


 void bibitem()
 {
   int cc, be = 1;

   fprintf(FNote,"<%d>: ", Fnumber);
   while (be) {
      cc = input();
      if      (cc == '{') be++;
      else if (cc == '}') be--;
      else putc(cc,FNote);
   }
   putc('\n',FNote);
   putc('\n',FNote);
 } /* footnote */

 /*---( main )---------------------------------------------------------------*/

 main (argc, argv)
 int argc;
 char **argv;
 {

   fprintf(stderr,"l2a, version %s -- Copyright (c) 1988, 1990 Gisle Hannemyr\n\n",VERSION);

   argc--; argv++;           /* skip program name  */
   while (argc && (**argv == '-')) {
      (*argv)++;             /* skip initial '-'   */
      switch (**argv) {
         case 'a': fputs(About,stderr);  exit(1);
         case 'n': Language = NORWEGIAN; break;
         default : fputs(Usage,stderr);  exit(1);
      } /* switch */
      argc--; argv++;
   } /* while options */
   if (argc) { fputs(Usage,stderr); exit(1); }

   BEGIN 0;
   LineNo = 0;
   FNote = fopen("FN.TMP","w");
   /* BFile = fopen("references.tex","r"); */
   yylex();

   fclose(FNote);
   if (Fnumber) {
      char buff[80];
      FNote = fopen("FN.TMP","r");
      pfotnote();
      while (fgets(buff,80,FNote)) fputs(buff,stdout);
   } /* if */
   unlink("FN.TMP");
   puts("..EOF");
 } /* main */

 /*---( EOF lex input file )-------------------------------------------------*/
int yyvstop[] ={
0,

105,
0,

104,
0,

19,
105,
0,

102,
105,
0,

39,
105,
0,

105,
0,

100,
105,
0,

101,
105,
0,

41,
105,
0,

105,
0,

105,
0,

105,
0,

18,
105,
0,

18,
19,
105,
0,

18,
102,
105,
0,

18,
39,
105,
0,

18,
105,
0,

18,
100,
105,
0,

18,
101,
105,
0,

18,
41,
105,
0,

18,
105,
0,

105,
0,

105,
0,

17,
104,
0,

19,
20,
105,
0,

105,
0,

105,
0,

102,
0,

42,
0,

46,
0,

43,
0,

45,
0,

44,
0,

103,
0,

40,
0,

106,
0,

106,
0,

106,
0,

106,
0,

37,
106,
0,

106,
0,

50,
0,

47,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

34,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

48,
0,

49,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

38,
106,
0,

36,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

37,
0,

106,
0,

35,
106,
0,

33,
106,
0,

106,
0,

94,
106,
0,

106,
0,

93,
106,
0,

106,
0,

106,
0,

95,
106,
0,

106,
0,

106,
0,

106,
0,

34,
0,

106,
0,

92,
106,
0,

98,
106,
0,

97,
106,
0,

96,
106,
0,

106,
0,

106,
0,

99,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

95,
106,
0,

95,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

38,
0,

36,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

78,
106,
0,

35,
0,

33,
0,

106,
0,

94,
0,

106,
0,

93,
0,

106,
0,

106,
0,

95,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

92,
0,

98,
0,

106,
0,

97,
0,

96,
0,

106,
0,

106,
0,

99,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

32,
0,

91,
106,
0,

106,
0,

106,
0,

106,
0,

80,
106,
0,

106,
0,

106,
0,

106,
0,

90,
106,
0,

16,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

82,
106,
0,

31,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

54,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

56,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

15,
16,
106,
0,

14,
16,
106,
0,

106,
0,

106,
0,

106,
0,

89,
106,
0,

79,
106,
0,

88,
106,
0,

106,
0,

106,
0,

87,
106,
0,

81,
106,
0,

106,
0,

5,
0,

106,
0,

85,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

54,
0,

106,
0,

106,
0,

106,
0,

106,
0,

70,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

52,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

4,
0,

106,
0,

106,
0,

106,
0,

53,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

70,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

51,
106,
0,

106,
0,

21,
106,
0,

22,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

57,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

58,
106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

51,
0,

106,
0,

30,
106,
0,

29,
106,
0,

106,
0,

106,
0,

28,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

106,
0,

55,
106,
0,

106,
0,

106,
0,

61,
106,
0,

106,
0,

68,
106,
0,

106,
0,

106,
0,

106,
0,

23,
106,
0,

106,
0,

86,
106,
0,

83,
106,
0,

106,
0,

71,
106,
0,

11,
0,

106,
0,

67,
106,
0,

106,
0,

66,
106,
0,

68,
0,

106,
0,

59,
106,
0,

106,
0,

106,
0,

106,
0,

27,
0,

69,
106,
0,

67,
0,

106,
0,

66,
0,

106,
0,

106,
0,

84,
106,
0,

26,
0,

10,
0,

106,
0,

9,
0,

77,
0,

25,
0,

69,
0,

106,
0,

62,
106,
0,

106,
0,

24,
0,

3,
0,

64,
106,
0,

73,
0,

63,
0,

65,
106,
0,

60,
106,
0,

8,
0,

76,
0,

64,
0,

7,
0,

13,
0,

75,
0,

65,
0,

72,
0,

6,
0,

12,
0,

74,
0,

2,
0,

1,
0,
0};
# define YYTYPE int
struct yywork { YYTYPE verify, advance; } yycrank[] ={
0,0,	0,0,	1,13,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	1,13,	1,14,	
0,0,	0,0,	0,0,	5,25,	
0,0,	27,0,	40,0,	0,0,	
6,25,	0,0,	0,0,	5,25,	
0,0,	0,0,	0,0,	0,0,	
6,25,	0,0,	0,0,	53,103,	
53,103,	0,0,	0,0,	0,0,	
0,0,	1,15,	1,16,	1,17,	
2,15,	2,16,	2,17,	3,15,	
3,16,	3,17,	4,15,	4,16,	
4,17,	1,13,	5,26,	5,27,	
5,28,	0,0,	53,103,	6,26,	
6,27,	6,28,	7,15,	7,16,	
7,17,	9,36,	5,25,	0,0,	
10,36,	1,13,	1,13,	6,25,	
0,0,	8,15,	8,16,	8,17,	
11,37,	11,16,	11,17,	12,37,	
12,16,	12,17,	5,25,	5,25,	
0,0,	50,97,	0,0,	6,25,	
6,25,	50,98,	0,0,	9,15,	
9,16,	9,17,	10,15,	10,16,	
10,17,	1,18,	0,0,	0,0,	
2,22,	55,55,	55,55,	3,23,	
0,0,	0,0,	4,24,	0,0,	
16,40,	0,0,	5,29,	38,91,	
0,0,	52,100,	0,0,	6,33,	
16,40,	16,0,	7,34,	23,87,	
34,89,	38,92,	0,0,	0,0,	
55,55,	0,0,	0,0,	38,93,	
1,19,	8,35,	1,20,	1,21,	
11,38,	2,20,	2,21,	12,39,	
3,20,	3,21,	46,96,	4,20,	
4,21,	5,30,	51,99,	5,31,	
5,32,	52,101,	6,30,	9,18,	
6,31,	6,32,	10,22,	7,20,	
7,21,	54,104,	58,108,	16,40,	
59,109,	60,110,	61,111,	62,112,	
63,113,	65,116,	8,20,	8,21,	
52,102,	11,20,	11,21,	67,118,	
12,20,	12,21,	57,105,	16,40,	
16,40,	64,114,	57,106,	67,119,	
64,115,	66,117,	66,117,	68,120,	
9,20,	9,21,	68,121,	10,20,	
10,21,	57,107,	69,124,	70,126,	
68,122,	68,123,	74,128,	74,108,	
77,110,	77,135,	74,129,	79,137,	
81,139,	69,125,	83,141,	18,41,	
66,117,	79,113,	18,42,	18,43,	
18,44,	18,45,	18,46,	22,73,	
22,74,	22,75,	22,76,	22,77,	
18,47,	78,112,	22,78,	22,79,	
75,130,	78,136,	22,80,	22,81,	
22,82,	87,146,	22,83,	75,131,	
75,109,	22,84,	22,85,	89,147,	
22,86,	18,48,	16,40,	18,49,	
18,50,	18,49,	18,49,	18,49,	
18,49,	18,49,	18,49,	18,51,	
18,49,	18,49,	18,49,	18,52,	
18,49,	18,49,	18,53,	18,49,	
18,49,	18,49,	18,49,	18,54,	
18,49,	18,49,	18,49,	18,49,	
18,49,	18,49,	80,138,	18,55,	
92,149,	80,115,	18,56,	92,115,	
18,57,	18,58,	18,59,	18,49,	
18,60,	18,61,	18,49,	18,62,	
18,63,	18,49,	18,49,	18,64,	
18,49,	18,65,	18,66,	18,49,	
18,49,	18,67,	18,68,	18,69,	
18,49,	18,70,	18,49,	18,49,	
18,49,	18,49,	18,71,	85,144,	
18,72,	24,73,	24,74,	24,75,	
24,76,	24,77,	91,148,	96,152,	
24,78,	24,88,	85,125,	91,108,	
24,80,	24,81,	24,82,	86,126,	
24,83,	73,105,	82,140,	24,84,	
24,85,	73,106,	24,86,	33,73,	
33,74,	33,75,	33,76,	33,77,	
82,116,	86,145,	33,78,	33,79,	
73,107,	88,137,	33,80,	33,81,	
33,82,	73,127,	33,83,	88,146,	
95,151,	33,84,	33,85,	95,115,	
33,86,	35,73,	35,74,	35,75,	
35,76,	35,77,	93,150,	99,155,	
35,78,	35,90,	93,118,	90,137,	
35,80,	35,81,	35,82,	76,132,	
35,83,	90,147,	93,119,	35,84,	
35,85,	100,156,	35,86,	39,73,	
39,94,	39,75,	39,76,	39,77,	
102,159,	76,133,	39,78,	39,79,	
76,134,	104,160,	39,95,	39,81,	
39,82,	107,163,	39,83,	109,165,	
39,93,	39,84,	39,85,	101,157,	
39,86,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
111,167,	101,158,	112,168,	114,171,	
115,172,	116,173,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
49,49,	49,49,	49,49,	49,49,	
84,120,	118,174,	84,142,	84,121,	
97,153,	97,153,	123,180,	94,148,	
124,181,	84,122,	84,123,	94,128,	
94,108,	98,154,	98,154,	94,129,	
103,103,	103,103,	84,143,	105,161,	
105,161,	106,162,	106,162,	108,164,	
108,164,	110,166,	110,166,	97,153,	
113,169,	113,169,	117,117,	117,117,	
119,175,	119,175,	120,176,	120,176,	
98,154,	121,178,	121,178,	103,103,	
122,179,	122,179,	105,161,	126,183,	
106,162,	127,184,	108,164,	128,185,	
110,166,	125,182,	125,182,	113,169,	
129,186,	117,117,	130,187,	119,175,	
131,188,	120,176,	132,189,	133,190,	
121,178,	134,191,	135,192,	122,179,	
136,193,	137,194,	138,195,	139,196,	
140,197,	141,198,	142,200,	143,202,	
125,182,	144,181,	145,204,	146,169,	
146,169,	147,169,	147,169,	144,203,	
141,199,	148,207,	138,171,	150,209,	
149,208,	151,195,	152,210,	142,201,	
149,171,	153,153,	153,153,	154,154,	
154,154,	155,211,	156,212,	157,213,	
158,214,	151,208,	146,169,	159,215,	
147,169,	151,171,	161,161,	161,161,	
162,162,	162,162,	163,216,	164,164,	
164,164,	165,217,	166,166,	166,166,	
153,153,	167,218,	154,154,	168,219,	
170,220,	169,169,	169,169,	171,221,	
113,170,	172,222,	173,223,	174,224,	
177,225,	161,161,	180,226,	162,162,	
175,175,	175,175,	164,164,	176,176,	
176,176,	166,166,	178,178,	178,178,	
179,179,	179,179,	181,227,	120,177,	
169,169,	182,182,	182,182,	183,228,	
184,229,	185,230,	186,231,	187,232,	
188,233,	189,234,	190,235,	175,175,	
191,236,	192,237,	176,176,	193,238,	
194,239,	178,178,	195,240,	179,179,	
196,241,	197,242,	198,243,	199,244,	
182,182,	200,246,	201,247,	146,205,	
202,249,	147,206,	203,251,	202,250,	
204,252,	205,253,	206,254,	201,248,	
207,255,	208,256,	209,257,	210,210,	
210,210,	212,258,	199,245,	213,259,	
214,260,	216,261,	217,262,	218,263,	
221,264,	222,265,	223,266,	224,224,	
225,268,	226,269,	229,270,	230,271,	
231,272,	232,273,	233,274,	224,224,	
224,0,	234,275,	210,210,	235,276,	
236,277,	238,285,	237,278,	237,279,	
237,280,	234,275,	234,0,	237,281,	
239,286,	240,287,	241,288,	242,289,	
243,290,	244,291,	246,292,	237,282,	
247,293,	237,283,	237,284,	248,294,	
249,295,	250,296,	251,298,	252,299,	
255,300,	256,301,	257,302,	261,303,	
263,305,	266,306,	262,262,	267,0,	
268,307,	270,308,	224,224,	271,309,	
272,310,	250,297,	262,262,	262,0,	
273,311,	274,312,	275,0,	276,313,	
234,275,	277,314,	278,315,	279,316,	
280,317,	281,318,	224,224,	224,224,	
282,319,	283,320,	285,323,	284,321,	
286,324,	287,325,	288,326,	289,327,	
234,234,	234,234,	284,322,	290,328,	
291,329,	287,325,	287,0,	292,330,	
293,331,	294,332,	295,333,	296,334,	
297,335,	299,336,	300,337,	301,338,	
302,339,	262,262,	303,340,	304,0,	
305,341,	306,342,	307,343,	310,351,	
311,352,	309,344,	309,345,	309,346,	
312,353,	313,354,	309,347,	314,355,	
315,356,	262,262,	262,262,	316,357,	
275,275,	275,275,	309,348,	317,358,	
309,349,	309,350,	318,359,	319,360,	
287,325,	320,361,	321,362,	322,363,	
323,364,	224,0,	324,365,	224,267,	
325,0,	326,366,	327,367,	328,368,	
329,369,	330,370,	331,371,	234,275,	
287,287,	287,287,	332,372,	333,373,	
334,374,	335,375,	336,376,	337,377,	
340,378,	341,379,	342,380,	343,381,	
344,382,	345,383,	336,376,	336,0,	
346,384,	347,385,	348,386,	349,387,	
350,388,	351,390,	352,391,	354,392,	
267,0,	355,393,	267,267,	350,389,	
356,394,	357,395,	358,396,	359,397,	
262,0,	360,398,	262,304,	361,399,	
362,400,	363,402,	364,403,	365,404,	
366,405,	367,406,	368,407,	369,408,	
371,409,	372,410,	325,325,	325,325,	
373,411,	374,412,	375,413,	376,0,	
377,414,	336,376,	379,415,	362,401,	
380,416,	381,417,	382,418,	287,325,	
383,419,	384,420,	385,421,	386,422,	
387,423,	388,424,	389,425,	392,427,	
393,428,	336,336,	336,336,	394,429,	
304,0,	395,430,	304,304,	396,431,	
397,432,	398,433,	399,435,	400,436,	
401,437,	398,434,	402,438,	403,439,	
404,440,	405,441,	406,442,	407,443,	
408,444,	409,445,	410,446,	411,447,	
412,448,	413,449,	414,450,	415,451,	
416,452,	417,453,	418,454,	419,455,	
420,456,	421,457,	422,458,	423,459,	
424,460,	376,376,	376,376,	425,462,	
426,463,	427,464,	428,465,	429,466,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	430,467,	424,461,	
431,468,	432,469,	433,470,	434,471,	
336,376,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	435,472,	
436,473,	437,474,	438,475,	439,476,	
440,477,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	390,426,	
390,426,	390,426,	390,426,	442,478,	
443,479,	445,480,	446,481,	447,482,	
448,483,	449,484,	451,485,	454,486,	
455,487,	456,488,	446,481,	446,0,	
457,489,	458,490,	459,492,	460,493,	
461,494,	458,491,	462,495,	463,496,	
464,497,	466,498,	467,499,	468,500,	
469,501,	470,502,	472,503,	473,504,	
474,505,	475,506,	476,507,	477,508,	
478,509,	479,510,	480,511,	481,0,	
482,512,	484,513,	485,514,	486,515,	
478,509,	478,0,	480,511,	480,0,	
487,516,	488,517,	489,518,	490,519,	
491,520,	446,481,	492,521,	493,522,	
494,523,	495,524,	497,526,	498,527,	
499,528,	501,529,	502,530,	503,531,	
504,532,	505,533,	506,534,	508,536,	
509,0,	446,446,	446,446,	510,537,	
511,0,	512,538,	513,539,	515,540,	
516,541,	518,542,	519,543,	521,544,	
522,545,	523,546,	524,547,	478,509,	
525,548,	480,511,	526,549,	527,550,	
528,551,	530,552,	531,553,	534,554,	
536,555,	481,481,	481,481,	537,556,	
539,557,	540,558,	541,559,	478,478,	
478,478,	480,480,	480,480,	542,560,	
543,561,	544,562,	545,563,	547,564,	
551,566,	552,567,	553,568,	554,569,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	509,509,	509,509,	
558,571,	559,572,	511,511,	511,511,	
446,481,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	535,0,	
561,573,	562,574,	478,509,	564,575,	
480,511,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	496,525,	
496,525,	496,525,	496,525,	507,535,	
565,0,	517,517,	569,576,	546,546,	
570,0,	549,565,	572,577,	507,535,	
507,0,	517,517,	517,0,	546,546,	
546,0,	549,565,	549,0,	573,578,	
574,579,	575,580,	576,581,	580,582,	
581,583,	535,535,	535,535,	556,570,	
582,584,	583,585,	584,586,	585,587,	
586,588,	587,589,	588,590,	556,570,	
556,0,	590,590,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	590,590,	590,0,	0,0,	
0,0,	0,0,	507,535,	0,0,	
517,517,	0,0,	546,546,	0,0,	
549,565,	0,0,	565,565,	565,565,	
0,0,	0,0,	570,570,	570,570,	
0,0,	0,0,	507,507,	507,507,	
517,517,	517,517,	546,546,	546,546,	
549,549,	549,549,	556,570,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
590,590,	0,0,	0,0,	0,0,	
0,0,	0,0,	556,556,	556,556,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
590,590,	590,590,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	507,535,	0,0,	517,517,	
0,0,	546,546,	0,0,	549,565,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	556,570,	0,0,	0,0,	
0,0,	0,0,	0,0,	0,0,	
0,0,	0,0,	0,0,	590,590,	
0,0};
struct yysvf yysvec[] ={
0,	0,	0,
yycrank+-1,	0,		0,	
yycrank+-4,	yysvec+1,	0,	
yycrank+-7,	yysvec+1,	0,	
yycrank+-10,	yysvec+1,	0,	
yycrank+-14,	yysvec+1,	0,	
yycrank+-19,	yysvec+1,	0,	
yycrank+-22,	yysvec+1,	0,	
yycrank+-33,	yysvec+1,	0,	
yycrank+-51,	yysvec+1,	0,	
yycrank+-54,	yysvec+1,	0,	
yycrank+-36,	yysvec+1,	0,	
yycrank+-39,	yysvec+1,	0,	
yycrank+0,	0,		yyvstop+1,
yycrank+0,	0,		yyvstop+3,
yycrank+0,	0,		yyvstop+5,
yycrank+-103,	0,		yyvstop+8,
yycrank+0,	0,		yyvstop+11,
yycrank+163,	0,		yyvstop+14,
yycrank+0,	0,		yyvstop+16,
yycrank+0,	0,		yyvstop+19,
yycrank+0,	0,		yyvstop+22,
yycrank+106,	yysvec+18,	yyvstop+25,
yycrank+10,	yysvec+18,	yyvstop+27,
yycrank+192,	yysvec+18,	yyvstop+29,
yycrank+0,	0,		yyvstop+31,
yycrank+0,	0,		yyvstop+34,
yycrank+-7,	yysvec+16,	yyvstop+38,
yycrank+0,	0,		yyvstop+42,
yycrank+0,	yysvec+18,	yyvstop+46,
yycrank+0,	0,		yyvstop+49,
yycrank+0,	0,		yyvstop+53,
yycrank+0,	0,		yyvstop+57,
yycrank+214,	yysvec+18,	yyvstop+61,
yycrank+11,	yysvec+18,	yyvstop+64,
yycrank+236,	yysvec+18,	yyvstop+66,
yycrank+0,	0,		yyvstop+68,
yycrank+0,	0,		yyvstop+71,
yycrank+9,	yysvec+18,	yyvstop+75,
yycrank+258,	yysvec+18,	yyvstop+77,
yycrank+-8,	yysvec+16,	yyvstop+79,
yycrank+0,	0,		yyvstop+81,
yycrank+0,	0,		yyvstop+83,
yycrank+0,	0,		yyvstop+85,
yycrank+0,	0,		yyvstop+87,
yycrank+0,	0,		yyvstop+89,
yycrank+11,	0,		0,	
yycrank+0,	0,		yyvstop+91,
yycrank+0,	0,		yyvstop+93,
yycrank+313,	0,		yyvstop+95,
yycrank+16,	yysvec+49,	yyvstop+97,
yycrank+21,	yysvec+49,	yyvstop+99,
yycrank+44,	yysvec+49,	yyvstop+101,
yycrank+22,	yysvec+49,	yyvstop+103,
yycrank+48,	yysvec+49,	yyvstop+106,
yycrank+88,	0,		yyvstop+108,
yycrank+0,	0,		yyvstop+110,
yycrank+69,	yysvec+49,	yyvstop+112,
yycrank+48,	yysvec+49,	yyvstop+114,
yycrank+47,	yysvec+49,	yyvstop+116,
yycrank+44,	yysvec+49,	yyvstop+118,
yycrank+43,	yysvec+49,	yyvstop+120,
yycrank+38,	yysvec+49,	yyvstop+122,
yycrank+40,	yysvec+49,	yyvstop+124,
yycrank+72,	yysvec+49,	yyvstop+126,
yycrank+46,	yysvec+49,	yyvstop+128,
yycrank+164,	yysvec+49,	yyvstop+130,
yycrank+62,	yysvec+49,	yyvstop+133,
yycrank+76,	yysvec+49,	yyvstop+135,
yycrank+77,	yysvec+49,	yyvstop+137,
yycrank+82,	yysvec+49,	yyvstop+139,
yycrank+0,	0,		yyvstop+141,
yycrank+0,	0,		yyvstop+143,
yycrank+208,	yysvec+49,	yyvstop+145,
yycrank+85,	yysvec+49,	yyvstop+147,
yycrank+115,	yysvec+49,	yyvstop+149,
yycrank+250,	yysvec+49,	yyvstop+151,
yycrank+79,	yysvec+49,	yyvstop+153,
yycrank+92,	yysvec+49,	yyvstop+155,
yycrank+81,	yysvec+49,	yyvstop+157,
yycrank+157,	yysvec+49,	yyvstop+159,
yycrank+95,	yysvec+49,	yyvstop+161,
yycrank+205,	yysvec+49,	yyvstop+163,
yycrank+97,	yysvec+49,	yyvstop+165,
yycrank+337,	yysvec+49,	yyvstop+167,
yycrank+182,	yysvec+49,	yyvstop+169,
yycrank+202,	yysvec+49,	yyvstop+171,
yycrank+101,	yysvec+49,	yyvstop+173,
yycrank+211,	yysvec+49,	yyvstop+175,
yycrank+107,	yysvec+49,	yyvstop+177,
yycrank+233,	yysvec+49,	yyvstop+179,
yycrank+197,	yysvec+49,	yyvstop+181,
yycrank+159,	yysvec+49,	yyvstop+183,
yycrank+241,	yysvec+49,	yyvstop+185,
yycrank+346,	yysvec+49,	yyvstop+187,
yycrank+231,	yysvec+49,	yyvstop+189,
yycrank+194,	0,		0,	
yycrank+431,	yysvec+49,	yyvstop+191,
yycrank+440,	yysvec+49,	yyvstop+194,
yycrank+236,	yysvec+49,	yyvstop+197,
yycrank+271,	yysvec+49,	yyvstop+199,
yycrank+291,	yysvec+49,	yyvstop+201,
yycrank+249,	yysvec+49,	yyvstop+203,
yycrank+443,	0,		yyvstop+205,
yycrank+277,	yysvec+49,	yyvstop+207,
yycrank+446,	yysvec+49,	yyvstop+209,
yycrank+448,	yysvec+49,	yyvstop+212,
yycrank+257,	yysvec+49,	yyvstop+215,
yycrank+450,	yysvec+49,	yyvstop+217,
yycrank+255,	yysvec+49,	yyvstop+220,
yycrank+452,	yysvec+49,	yyvstop+222,
yycrank+293,	yysvec+49,	yyvstop+225,
yycrank+303,	yysvec+49,	yyvstop+227,
yycrank+455,	yysvec+49,	yyvstop+229,
yycrank+293,	yysvec+49,	yyvstop+232,
yycrank+297,	yysvec+49,	yyvstop+234,
yycrank+295,	yysvec+49,	yyvstop+236,
yycrank+457,	0,		yyvstop+238,
yycrank+335,	yysvec+49,	yyvstop+240,
yycrank+459,	yysvec+49,	yyvstop+242,
yycrank+461,	yysvec+49,	yyvstop+245,
yycrank+464,	yysvec+49,	yyvstop+248,
yycrank+467,	yysvec+49,	yyvstop+251,
yycrank+345,	yysvec+49,	yyvstop+254,
yycrank+334,	yysvec+49,	yyvstop+256,
yycrank+476,	yysvec+49,	yyvstop+258,
yycrank+365,	yysvec+49,	yyvstop+261,
yycrank+365,	yysvec+49,	yyvstop+263,
yycrank+380,	yysvec+49,	yyvstop+265,
yycrank+390,	yysvec+49,	yyvstop+267,
yycrank+378,	yysvec+49,	yyvstop+269,
yycrank+395,	yysvec+49,	yyvstop+271,
yycrank+378,	yysvec+49,	yyvstop+273,
yycrank+396,	yysvec+49,	yyvstop+275,
yycrank+400,	yysvec+49,	yyvstop+277,
yycrank+398,	yysvec+49,	yyvstop+279,
yycrank+388,	yysvec+49,	yyvstop+281,
yycrank+389,	yysvec+49,	yyvstop+283,
yycrank+404,	yysvec+49,	yyvstop+285,
yycrank+396,	yysvec+49,	yyvstop+287,
yycrank+385,	yysvec+49,	yyvstop+289,
yycrank+402,	yysvec+49,	yyvstop+291,
yycrank+407,	yysvec+49,	yyvstop+293,
yycrank+409,	yysvec+49,	yyvstop+295,
yycrank+399,	yysvec+49,	yyvstop+297,
yycrank+398,	yysvec+49,	yyvstop+299,
yycrank+502,	yysvec+49,	yyvstop+301,
yycrank+504,	yysvec+49,	yyvstop+304,
yycrank+418,	yysvec+49,	yyvstop+307,
yycrank+410,	yysvec+49,	yyvstop+309,
yycrank+409,	yysvec+49,	yyvstop+311,
yycrank+423,	yysvec+49,	yyvstop+313,
yycrank+397,	0,		0,	
yycrank+516,	0,		yyvstop+315,
yycrank+518,	0,		yyvstop+317,
yycrank+428,	yysvec+49,	yyvstop+319,
yycrank+459,	yysvec+49,	yyvstop+321,
yycrank+430,	yysvec+49,	yyvstop+323,
yycrank+429,	yysvec+49,	yyvstop+325,
yycrank+470,	yysvec+49,	yyvstop+327,
yycrank+0,	yysvec+49,	yyvstop+329,
yycrank+529,	0,		yyvstop+332,
yycrank+531,	0,		yyvstop+334,
yycrank+441,	yysvec+49,	yyvstop+336,
yycrank+534,	0,		yyvstop+338,
yycrank+444,	yysvec+49,	yyvstop+340,
yycrank+537,	0,		yyvstop+342,
yycrank+433,	yysvec+49,	yyvstop+344,
yycrank+450,	yysvec+49,	yyvstop+346,
yycrank+544,	0,		yyvstop+348,
yycrank+443,	yysvec+49,	yyvstop+350,
yycrank+452,	yysvec+49,	yyvstop+352,
yycrank+441,	yysvec+49,	yyvstop+354,
yycrank+449,	yysvec+49,	yyvstop+356,
yycrank+436,	yysvec+49,	yyvstop+358,
yycrank+555,	0,		yyvstop+360,
yycrank+558,	0,		yyvstop+362,
yycrank+455,	yysvec+49,	yyvstop+364,
yycrank+561,	0,		yyvstop+366,
yycrank+563,	0,		yyvstop+368,
yycrank+454,	yysvec+49,	yyvstop+370,
yycrank+453,	yysvec+49,	yyvstop+372,
yycrank+568,	0,		yyvstop+374,
yycrank+481,	yysvec+49,	yyvstop+376,
yycrank+476,	yysvec+49,	yyvstop+378,
yycrank+476,	yysvec+49,	yyvstop+380,
yycrank+477,	yysvec+49,	yyvstop+382,
yycrank+467,	yysvec+49,	yyvstop+384,
yycrank+472,	yysvec+49,	yyvstop+386,
yycrank+484,	yysvec+49,	yyvstop+388,
yycrank+469,	yysvec+49,	yyvstop+390,
yycrank+486,	yysvec+49,	yyvstop+392,
yycrank+466,	yysvec+49,	yyvstop+394,
yycrank+487,	yysvec+49,	yyvstop+396,
yycrank+475,	yysvec+49,	yyvstop+398,
yycrank+493,	yysvec+49,	yyvstop+400,
yycrank+495,	yysvec+49,	yyvstop+402,
yycrank+498,	yysvec+49,	yyvstop+404,
yycrank+497,	yysvec+49,	yyvstop+406,
yycrank+502,	yysvec+49,	yyvstop+408,
yycrank+485,	yysvec+49,	yyvstop+410,
yycrank+503,	yysvec+49,	yyvstop+412,
yycrank+492,	yysvec+49,	yyvstop+414,
yycrank+498,	yysvec+49,	yyvstop+416,
yycrank+511,	yysvec+49,	yyvstop+418,
yycrank+500,	yysvec+49,	yyvstop+420,
yycrank+501,	yysvec+49,	yyvstop+422,
yycrank+505,	yysvec+49,	yyvstop+424,
yycrank+510,	yysvec+49,	yyvstop+426,
yycrank+511,	yysvec+49,	yyvstop+428,
yycrank+606,	0,		yyvstop+430,
yycrank+0,	yysvec+49,	yyvstop+432,
yycrank+548,	yysvec+49,	yyvstop+435,
yycrank+531,	yysvec+49,	yyvstop+437,
yycrank+519,	yysvec+49,	yyvstop+439,
yycrank+0,	yysvec+49,	yyvstop+441,
yycrank+511,	yysvec+49,	yyvstop+444,
yycrank+499,	yysvec+49,	yyvstop+446,
yycrank+513,	yysvec+49,	yyvstop+448,
yycrank+0,	yysvec+49,	yyvstop+450,
yycrank+0,	yysvec+49,	yyvstop+453,
yycrank+523,	yysvec+49,	yyvstop+456,
yycrank+510,	yysvec+49,	yyvstop+458,
yycrank+529,	yysvec+49,	yyvstop+460,
yycrank+-626,	0,		0,	
yycrank+516,	yysvec+49,	yyvstop+462,
yycrank+521,	yysvec+49,	yyvstop+464,
yycrank+0,	yysvec+49,	yyvstop+466,
yycrank+0,	yysvec+49,	yyvstop+469,
yycrank+519,	yysvec+49,	yyvstop+472,
yycrank+521,	yysvec+49,	yyvstop+474,
yycrank+516,	yysvec+49,	yyvstop+476,
yycrank+528,	yysvec+49,	yyvstop+478,
yycrank+518,	yysvec+49,	yyvstop+480,
yycrank+-636,	0,		yyvstop+482,
yycrank+530,	yysvec+49,	yyvstop+485,
yycrank+524,	yysvec+49,	yyvstop+487,
yycrank+542,	0,		0,	
yycrank+540,	yysvec+49,	yyvstop+489,
yycrank+532,	yysvec+49,	yyvstop+491,
yycrank+541,	yysvec+49,	yyvstop+493,
yycrank+534,	yysvec+49,	yyvstop+495,
yycrank+540,	yysvec+49,	yyvstop+497,
yycrank+542,	yysvec+49,	yyvstop+499,
yycrank+550,	yysvec+49,	yyvstop+501,
yycrank+0,	yysvec+49,	yyvstop+503,
yycrank+549,	yysvec+49,	yyvstop+506,
yycrank+545,	yysvec+49,	yyvstop+508,
yycrank+558,	yysvec+49,	yyvstop+510,
yycrank+563,	yysvec+49,	yyvstop+512,
yycrank+560,	yysvec+49,	yyvstop+514,
yycrank+561,	yysvec+49,	yyvstop+516,
yycrank+564,	yysvec+49,	yyvstop+518,
yycrank+0,	yysvec+49,	yyvstop+520,
yycrank+0,	yysvec+49,	yyvstop+524,
yycrank+549,	yysvec+49,	yyvstop+528,
yycrank+557,	yysvec+49,	yyvstop+530,
yycrank+558,	yysvec+49,	yyvstop+532,
yycrank+0,	yysvec+49,	yyvstop+534,
yycrank+0,	yysvec+49,	yyvstop+537,
yycrank+0,	yysvec+49,	yyvstop+540,
yycrank+567,	yysvec+49,	yyvstop+543,
yycrank+-669,	0,		0,	
yycrank+557,	yysvec+49,	yyvstop+545,
yycrank+0,	yysvec+49,	yyvstop+547,
yycrank+0,	yysvec+49,	yyvstop+550,
yycrank+561,	yysvec+49,	yyvstop+553,
yycrank+-661,	yysvec+224,	yyvstop+555,
yycrank+556,	yysvec+49,	yyvstop+557,
yycrank+0,	yysvec+49,	yyvstop+559,
yycrank+559,	yysvec+49,	yyvstop+562,
yycrank+552,	yysvec+49,	yyvstop+564,
yycrank+575,	yysvec+49,	yyvstop+566,
yycrank+569,	yysvec+49,	yyvstop+568,
yycrank+580,	yysvec+49,	yyvstop+570,
yycrank+-672,	yysvec+234,	yyvstop+572,
yycrank+582,	yysvec+49,	yyvstop+574,
yycrank+583,	yysvec+49,	yyvstop+576,
yycrank+575,	0,		0,	
yycrank+577,	0,		0,	
yycrank+583,	0,		0,	
yycrank+573,	0,		0,	
yycrank+575,	0,		0,	
yycrank+585,	0,		0,	
yycrank+598,	0,		0,	
yycrank+584,	yysvec+49,	yyvstop+578,
yycrank+664,	yysvec+49,	yyvstop+580,
yycrank+-696,	0,		yyvstop+582,
yycrank+593,	yysvec+49,	yyvstop+585,
yycrank+590,	yysvec+49,	yyvstop+587,
yycrank+586,	yysvec+49,	yyvstop+589,
yycrank+590,	yysvec+49,	yyvstop+591,
yycrank+596,	yysvec+49,	yyvstop+593,
yycrank+591,	yysvec+49,	yyvstop+595,
yycrank+599,	yysvec+49,	yyvstop+597,
yycrank+596,	yysvec+49,	yyvstop+599,
yycrank+612,	yysvec+49,	yyvstop+601,
yycrank+614,	yysvec+49,	yyvstop+603,
yycrank+0,	yysvec+49,	yyvstop+605,
yycrank+612,	yysvec+49,	yyvstop+608,
yycrank+606,	yysvec+49,	yyvstop+610,
yycrank+614,	yysvec+49,	yyvstop+612,
yycrank+615,	yysvec+49,	yyvstop+614,
yycrank+613,	yysvec+49,	yyvstop+616,
yycrank+-709,	yysvec+262,	yyvstop+618,
yycrank+604,	yysvec+49,	yyvstop+620,
yycrank+606,	yysvec+49,	yyvstop+622,
yycrank+607,	yysvec+49,	yyvstop+624,
yycrank+0,	yysvec+49,	yyvstop+626,
yycrank+625,	0,		0,	
yycrank+614,	yysvec+49,	yyvstop+629,
yycrank+614,	yysvec+49,	yyvstop+631,
yycrank+614,	yysvec+49,	yyvstop+633,
yycrank+619,	yysvec+49,	yyvstop+635,
yycrank+634,	yysvec+49,	yyvstop+637,
yycrank+633,	0,		0,	
yycrank+618,	0,		0,	
yycrank+636,	0,		0,	
yycrank+641,	0,		0,	
yycrank+632,	0,		0,	
yycrank+634,	0,		0,	
yycrank+648,	0,		0,	
yycrank+646,	0,		0,	
yycrank+651,	yysvec+49,	yyvstop+639,
yycrank+642,	0,		0,	
yycrank+-742,	yysvec+287,	yyvstop+641,
yycrank+637,	yysvec+49,	yyvstop+643,
yycrank+645,	yysvec+49,	yyvstop+645,
yycrank+646,	yysvec+49,	yyvstop+647,
yycrank+659,	yysvec+49,	yyvstop+649,
yycrank+647,	yysvec+49,	yyvstop+651,
yycrank+648,	yysvec+49,	yyvstop+653,
yycrank+659,	yysvec+49,	yyvstop+655,
yycrank+666,	yysvec+49,	yyvstop+657,
yycrank+648,	yysvec+49,	yyvstop+659,
yycrank+650,	yysvec+49,	yyvstop+661,
yycrank+-765,	0,		yyvstop+663,
yycrank+670,	yysvec+49,	yyvstop+666,
yycrank+0,	yysvec+49,	yyvstop+668,
yycrank+0,	yysvec+49,	yyvstop+671,
yycrank+648,	yysvec+49,	yyvstop+674,
yycrank+668,	yysvec+49,	yyvstop+676,
yycrank+665,	yysvec+49,	yyvstop+678,
yycrank+666,	yysvec+49,	yyvstop+680,
yycrank+661,	0,		0,	
yycrank+663,	0,		0,	
yycrank+671,	0,		0,	
yycrank+661,	0,		0,	
yycrank+661,	0,		0,	
yycrank+671,	0,		0,	
yycrank+683,	0,		0,	
yycrank+690,	yysvec+49,	yyvstop+682,
yycrank+659,	yysvec+49,	yyvstop+684,
yycrank+0,	yysvec+49,	yyvstop+686,
yycrank+667,	yysvec+49,	yyvstop+689,
yycrank+677,	yysvec+49,	yyvstop+691,
yycrank+671,	0,		0,	
yycrank+680,	0,		0,	
yycrank+673,	0,		0,	
yycrank+682,	0,		0,	
yycrank+677,	0,		0,	
yycrank+683,	0,		0,	
yycrank+698,	0,		0,	
yycrank+699,	0,		0,	
yycrank+682,	yysvec+49,	yyvstop+693,
yycrank+700,	0,		0,	
yycrank+692,	yysvec+49,	yyvstop+695,
yycrank+704,	yysvec+49,	yyvstop+697,
yycrank+704,	yysvec+49,	yyvstop+699,
yycrank+691,	yysvec+49,	yyvstop+701,
yycrank+0,	yysvec+49,	yyvstop+703,
yycrank+688,	yysvec+49,	yyvstop+706,
yycrank+689,	yysvec+49,	yyvstop+708,
yycrank+705,	yysvec+49,	yyvstop+710,
yycrank+704,	yysvec+49,	yyvstop+712,
yycrank+709,	yysvec+49,	yyvstop+714,
yycrank+-801,	yysvec+336,	yyvstop+716,
yycrank+697,	yysvec+49,	yyvstop+718,
yycrank+0,	yysvec+49,	yyvstop+720,
yycrank+699,	yysvec+49,	yyvstop+723,
yycrank+694,	yysvec+49,	yyvstop+726,
yycrank+695,	yysvec+49,	yyvstop+728,
yycrank+719,	0,		0,	
yycrank+703,	0,		0,	
yycrank+718,	0,		0,	
yycrank+721,	0,		0,	
yycrank+712,	0,		0,	
yycrank+713,	0,		0,	
yycrank+727,	0,		0,	
yycrank+725,	0,		0,	
yycrank+824,	0,		0,	
yycrank+0,	0,		yyvstop+730,
yycrank+712,	yysvec+49,	yyvstop+732,
yycrank+713,	yysvec+49,	yyvstop+734,
yycrank+722,	0,		0,	
yycrank+732,	0,		0,	
yycrank+721,	0,		0,	
yycrank+731,	0,		0,	
yycrank+740,	0,		0,	
yycrank+726,	0,		0,	
yycrank+734,	0,		0,	
yycrank+732,	0,		0,	
yycrank+737,	0,		0,	
yycrank+738,	yysvec+49,	yyvstop+736,
yycrank+727,	0,		0,	
yycrank+744,	yysvec+49,	yyvstop+738,
yycrank+736,	yysvec+49,	yyvstop+740,
yycrank+746,	yysvec+49,	yyvstop+742,
yycrank+744,	yysvec+49,	yyvstop+744,
yycrank+748,	yysvec+49,	yyvstop+746,
yycrank+746,	yysvec+49,	yyvstop+748,
yycrank+737,	yysvec+49,	yyvstop+750,
yycrank+741,	yysvec+49,	yyvstop+752,
yycrank+754,	yysvec+49,	yyvstop+754,
yycrank+750,	yysvec+49,	yyvstop+756,
yycrank+750,	yysvec+49,	yyvstop+758,
yycrank+755,	yysvec+49,	yyvstop+760,
yycrank+756,	yysvec+49,	yyvstop+762,
yycrank+741,	0,		0,	
yycrank+750,	0,		0,	
yycrank+743,	0,		0,	
yycrank+752,	0,		0,	
yycrank+746,	0,		0,	
yycrank+751,	0,		0,	
yycrank+766,	0,		0,	
yycrank+769,	0,		0,	
yycrank+775,	yysvec+390,	0,	
yycrank+753,	yysvec+49,	yyvstop+764,
yycrank+769,	yysvec+49,	yyvstop+766,
yycrank+770,	0,		0,	
yycrank+768,	0,		0,	
yycrank+783,	0,		0,	
yycrank+763,	0,		0,	
yycrank+770,	0,		0,	
yycrank+762,	0,		0,	
yycrank+794,	0,		0,	
yycrank+806,	0,		0,	
yycrank+820,	0,		0,	
yycrank+820,	0,		0,	
yycrank+808,	yysvec+49,	yyvstop+768,
yycrank+805,	0,		0,	
yycrank+0,	yysvec+49,	yyvstop+770,
yycrank+847,	yysvec+49,	yyvstop+773,
yycrank+834,	yysvec+49,	yyvstop+775,
yycrank+0,	yysvec+49,	yyvstop+777,
yycrank+835,	yysvec+49,	yyvstop+780,
yycrank+-949,	0,		yyvstop+782,
yycrank+854,	yysvec+49,	yyvstop+785,
yycrank+842,	yysvec+49,	yyvstop+787,
yycrank+837,	yysvec+49,	yyvstop+789,
yycrank+0,	yysvec+49,	yyvstop+791,
yycrank+832,	yysvec+49,	yyvstop+794,
yycrank+0,	yysvec+49,	yyvstop+796,
yycrank+0,	yysvec+49,	yyvstop+799,
yycrank+846,	0,		0,	
yycrank+855,	0,		0,	
yycrank+843,	0,		0,	
yycrank+855,	0,		0,	
yycrank+864,	0,		0,	
yycrank+850,	0,		0,	
yycrank+858,	0,		0,	
yycrank+856,	0,		0,	
yycrank+861,	0,		0,	
yycrank+844,	0,		0,	
yycrank+847,	yysvec+49,	yyvstop+802,
yycrank+0,	yysvec+49,	yyvstop+804,
yycrank+859,	0,		0,	
yycrank+873,	0,		0,	
yycrank+846,	0,		0,	
yycrank+871,	0,		0,	
yycrank+868,	0,		0,	
yycrank+0,	0,		yyvstop+807,
yycrank+862,	0,		0,	
yycrank+872,	0,		0,	
yycrank+862,	0,		0,	
yycrank+869,	0,		0,	
yycrank+868,	yysvec+49,	yyvstop+809,
yycrank+863,	0,		0,	
yycrank+-979,	0,		yyvstop+811,
yycrank+876,	yysvec+49,	yyvstop+814,
yycrank+-981,	0,		yyvstop+816,
yycrank+-973,	yysvec+446,	yyvstop+819,
yycrank+872,	yysvec+49,	yyvstop+821,
yycrank+0,	yysvec+49,	yyvstop+823,
yycrank+880,	yysvec+49,	yyvstop+826,
yycrank+885,	yysvec+49,	yyvstop+828,
yycrank+886,	0,		0,	
yycrank+878,	0,		0,	
yycrank+892,	0,		0,	
yycrank+872,	0,		0,	
yycrank+879,	0,		0,	
yycrank+871,	0,		0,	
yycrank+877,	0,		0,	
yycrank+889,	0,		0,	
yycrank+903,	0,		0,	
yycrank+903,	0,		0,	
yycrank+1008,	0,		0,	
yycrank+894,	yysvec+49,	yyvstop+830,
yycrank+887,	0,		0,	
yycrank+888,	0,		0,	
yycrank+0,	0,		yyvstop+832,
yycrank+880,	0,		0,	
yycrank+895,	0,		0,	
yycrank+910,	0,		0,	
yycrank+883,	0,		0,	
yycrank+884,	0,		0,	
yycrank+905,	0,		0,	
yycrank+-1130,	0,		yyvstop+834,
yycrank+900,	0,		0,	
yycrank+-1002,	yysvec+478,	yyvstop+837,
yycrank+905,	yysvec+49,	yyvstop+839,
yycrank+-1006,	yysvec+480,	yyvstop+841,
yycrank+913,	yysvec+49,	yyvstop+843,
yycrank+907,	yysvec+49,	yyvstop+845,
yycrank+0,	yysvec+49,	yyvstop+847,
yycrank+909,	0,		0,	
yycrank+923,	0,		0,	
yycrank+-1132,	0,		yyvstop+850,
yycrank+920,	0,		0,	
yycrank+917,	0,		0,	
yycrank+0,	0,		yyvstop+852,
yycrank+911,	0,		0,	
yycrank+921,	0,		0,	
yycrank+911,	0,		0,	
yycrank+918,	0,		0,	
yycrank+903,	yysvec+496,	0,	
yycrank+929,	yysvec+49,	yyvstop+854,
yycrank+906,	0,		0,	
yycrank+931,	0,		0,	
yycrank+0,	0,		yyvstop+856,
yycrank+923,	0,		0,	
yycrank+920,	0,		0,	
yycrank+0,	0,		yyvstop+858,
yycrank+0,	0,		yyvstop+860,
yycrank+924,	0,		0,	
yycrank+-1089,	yysvec+507,	yyvstop+862,
yycrank+927,	0,		0,	
yycrank+936,	yysvec+49,	yyvstop+864,
yycrank+0,	yysvec+49,	yyvstop+866,
yycrank+930,	yysvec+49,	yyvstop+869,
yycrank+925,	0,		0,	
yycrank+926,	0,		0,	
yycrank+922,	0,		0,	
yycrank+937,	0,		0,	
yycrank+952,	0,		0,	
yycrank+925,	0,		0,	
yycrank+-1134,	0,		yyvstop+871,
yycrank+946,	0,		0,	
yycrank+0,	0,		yyvstop+873,
yycrank+-1136,	0,		yyvstop+875,
yycrank+0,	0,		yyvstop+878,
yycrank+927,	0,		0,	
yycrank+928,	0,		0,	
yycrank+929,	0,		0,	
yycrank+952,	0,		0,	
yycrank+0,	0,		yyvstop+880,
yycrank+-1154,	0,		yyvstop+882,
yycrank+0,	yysvec+49,	yyvstop+885,
yycrank+943,	0,		0,	
yycrank+968,	0,		0,	
yycrank+0,	0,		yyvstop+888,
yycrank+990,	0,		0,	
yycrank+987,	0,		0,	
yycrank+0,	0,		yyvstop+890,
yycrank+992,	0,		0,	
yycrank+-1122,	yysvec+549,	yyvstop+892,
yycrank+0,	0,		yyvstop+894,
yycrank+0,	0,		yyvstop+896,
yycrank+0,	0,		yyvstop+898,
yycrank+1020,	0,		0,	
yycrank+-1126,	yysvec+556,	yyvstop+900,
yycrank+0,	0,		yyvstop+902,
yycrank+1013,	0,		0,	
yycrank+1022,	0,		0,	
yycrank+1023,	0,		0,	
yycrank+1046,	0,		0,	
yycrank+1053,	0,		0,	
yycrank+0,	0,		yyvstop+904,
yycrank+0,	0,		yyvstop+906,
yycrank+0,	0,		yyvstop+908,
yycrank+1037,	0,		0,	
yycrank+1040,	0,		0,	
yycrank+1059,	0,		0,	
yycrank+1053,	0,		0,	
yycrank+1046,	0,		0,	
yycrank+1038,	0,		0,	
yycrank+1056,	0,		0,	
yycrank+1036,	0,		0,	
yycrank+1041,	0,		0,	
yycrank+0,	0,		yyvstop+910,
yycrank+-1164,	0,		yyvstop+912,
0,	0,	0};
struct yywork *yytop = yycrank+1287;
struct yysvf *yybgin = yysvec+1;
char yymatch[] ={
00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
01  ,011 ,012 ,01  ,01  ,01  ,01  ,01  ,
01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,
'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
'0' ,'0' ,01  ,01  ,01  ,01  ,01  ,01  ,
'@' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,01  ,01  ,01  ,01  ,01  ,
01  ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,
'A' ,'A' ,'A' ,'{' ,01  ,01  ,01  ,01  ,
0};
char yyextra[] ={
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0};
/*	ncform	4.1	83/08/11	*/

int yylineno =1;
# define YYU(x) x
# define NLSTATE yyprevious=YYNEWLINE
char yytext[YYLMAX];
struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
char yysbuf[YYLMAX];
char *yysptr = yysbuf;
int *yyfnd;
extern struct yysvf *yyestate;
int yyprevious = YYNEWLINE;
yylook(){
	register struct yysvf *yystate, **lsp;
	register struct yywork *yyt;
	struct yysvf *yyz;
	int yych;
	struct yywork *yyr;
# ifdef LEXDEBUG
	int debug;
# endif
	char *yylastch;
	/* start off machines */
# ifdef LEXDEBUG
	debug = 0;
# endif
	if (!yymorfg)
		yylastch = yytext;
	else {
		yymorfg=0;
		yylastch = yytext+yyleng;
		}
	for(;;){
		lsp = yylstate;
		yyestate = yystate = yybgin;
		if (yyprevious==YYNEWLINE) yystate++;
		for (;;){
# ifdef LEXDEBUG
			if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
# endif
			yyt = yystate->yystoff;
			if(yyt == yycrank){		/* may not be any transitions */
				yyz = yystate->yyother;
				if(yyz == 0)break;
				if(yyz->yystoff == yycrank)break;
				}
			*yylastch++ = yych = input();
		tryagain:
# ifdef LEXDEBUG
			if(debug){
				fprintf(yyout,"char ");
				allprint(yych);
				putchar('\n');
				}
# endif
			yyr = yyt;
			if ( (int)yyt > (int)yycrank){
				yyt = yyr + yych;
				if (yyt <= yytop && yyt->verify+yysvec == yystate){
					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
						{unput(*--yylastch);break;}
					*lsp++ = yystate = yyt->advance+yysvec;
					goto contin;
					}
				}
# ifdef YYOPTIM
			else if((int)yyt < (int)yycrank) {		/* r < yycrank */
				yyt = yyr = yycrank+(yycrank-yyt);
# ifdef LEXDEBUG
				if(debug)fprintf(yyout,"compressed state\n");
# endif
				yyt = yyt + yych;
				if(yyt <= yytop && yyt->verify+yysvec == yystate){
					if(yyt->advance+yysvec == YYLERR)	/* error transitions */
						{unput(*--yylastch);break;}
					*lsp++ = yystate = yyt->advance+yysvec;
					goto contin;
					}
				yyt = yyr + YYU(yymatch[yych]);
# ifdef LEXDEBUG
				if(debug){
					fprintf(yyout,"try fall back character ");
					allprint(YYU(yymatch[yych]));
					putchar('\n');
					}
# endif
				if(yyt <= yytop && yyt->verify+yysvec == yystate){
					if(yyt->advance+yysvec == YYLERR)	/* error transition */
						{unput(*--yylastch);break;}
					*lsp++ = yystate = yyt->advance+yysvec;
					goto contin;
					}
				}
			if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
# ifdef LEXDEBUG
				if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
# endif
				goto tryagain;
				}
# endif
			else
				{unput(*--yylastch);break;}
		contin:
# ifdef LEXDEBUG
			if(debug){
				fprintf(yyout,"state %d char ",yystate-yysvec-1);
				allprint(yych);
				putchar('\n');
				}
# endif
			;
			}
# ifdef LEXDEBUG
		if(debug){
			fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
			allprint(yych);
			putchar('\n');
			}
# endif
		while (lsp-- > yylstate){
			*yylastch-- = 0;
			if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
				yyolsp = lsp;
				if(yyextra[*yyfnd]){		/* must backup */
					while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
						lsp--;
						unput(*yylastch--);
						}
					}
				yyprevious = YYU(*yylastch);
				yylsp = lsp;
				yyleng = yylastch-yytext+1;
				yytext[yyleng] = 0;
# ifdef LEXDEBUG
				if(debug){
					fprintf(yyout,"\nmatch ");
					sprint(yytext);
					fprintf(yyout," action %d\n",*yyfnd);
					}
# endif
				return(*yyfnd++);
				}
			unput(*yylastch);
			}
		if (yytext[0] == 0  /* && feof(yyin) */)
			{
			yysptr=yysbuf;
			return(0);
			}
		yyprevious = yytext[0] = input();
		if (yyprevious>0)
			output(yyprevious);
		yylastch=yytext;
# ifdef LEXDEBUG
		if(debug)putchar('\n');
# endif
		}
	}
yyback(p, m)
	int *p;
{
if (p==0) return(0);
while (*p)
	{
	if (*p++ == m)
		return(1);
	}
return(0);
}
	/* the following are only used in the lex library */
yyinput(){
	return(input());
	}
yyoutput(c)
  int c; {
	output(c);
	}
yyunput(c)
   int c; {
	unput(c);
	}
