diff tests/agcl/oldagsrc/good/dsl-2.cpp @ 0:13d2b8934445

Import AnaGram (near-)release tree into Mercurial.
author David A. Holland
date Sat, 22 Dec 2007 17:52:45 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/agcl/oldagsrc/good/dsl-2.cpp	Sat Dec 22 17:52:45 2007 -0500
@@ -0,0 +1,3749 @@
+                                           // C Prologue
+/*
+ AnaGram, a System for Syntax Directed Programming
+
+ A Dos Script Language
+
+ Copyright (c) 1993, 1996 Parsifal Software.
+ All Rights Reserved.
+
+*/
+
+
+#include "stack.h"
+#include "charsink.h"
+#include "strdict.h"
+#include "array.h"
+#include "symbol.h"
+#include "query.h"
+#include <conio.h>
+
+#ifdef __BCPLUSPLUS__
+  #define ARGS ((char **) args)
+
+  extern unsigned _stklen = 0x4000;              // set stack size
+
+#else
+  #define ARGS ((char const * const *) (char **) args)
+#endif
+
+
+// Define stacks for temporary storage
+
+stack <action_pointer>      as(25);              // Stack actions
+stack <int>                 is(100);             // Stack string indices
+stack <char *>              ps(1000,20);         // Stack parameter strings
+stack <query_item>          qs(23);              // Stack query items
+
+
+// Define data structures for symbol table
+
+#define N_STRINGS 2000
+
+string_accumulator          sa(64000U,500);
+string_dictionary           sd(N_STRINGS);
+array <symbol_table_entry>  st(N_STRINGS);
+
+
+/*
+ * AnaGram, A System for Syntax Directed Programming
+ * File generated by: ...
+ *
+ * AnaGram Parsing Engine
+ * Copyright 1993-2002 Parsifal Software. All Rights Reserved.
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ */
+
+#ifndef DSL-2_H
+#include "dsl-2.h"
+#endif
+
+#ifndef DSL-2_H
+#error Mismatched header file
+#endif
+
+#include <ctype.h>
+#include <stdio.h>
+
+#define RULE_CONTEXT (&((PCB).cs[(PCB).ssx]))
+#define ERROR_CONTEXT ((PCB).cs[(PCB).error_frame_ssx])
+#define CONTEXT ((PCB).cs[(PCB).ssx])
+
+
+
+dsl-2_pcb_type dsl-2_pcb;
+#define PCB dsl-2_pcb
+#define CHANGE_REDUCTION(x) dsl-2_change_reduction(dsl-2_##x##_token)
+int dsl-2_change_reduction(dsl-2_token_type);
+
+
+#line - "dsl-2.syn"
+#include <process.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <io.h>
+#include <conio.h>
+#include <dos.h>
+#include <time.h>
+#include <assert.h>
+#include <errno.h>
+
+#include "edit.h"
+
+
+#include "screen.h"
+#include "util.h"
+#include "redirect.h"
+
+#define GET_CONTEXT CONTEXT.pointer = PCB.pointer;\
+  CONTEXT.line=PCB.line;\
+  CONTEXT.column = PCB.column;
+
+
+int       debug_switch = 0;
+char     *error_msg = NULL;
+unsigned  errorlevel_index;
+int       errorlevel;
+int       exitcode = 0;
+int       exitflag = 0;
+int       first_line = 1;
+int       first_column = 1;
+unsigned  stderr_index;
+
+void      display_queries(screen_descriptor *);
+
+#define FIRST_LINE first_line
+#define FIRST_COLUMN first_column
+
+
+/*****
+
+ Internal Functions
+
+*****/
+
+long file_exists(void) {
+  FILE *f = fopen(sa--,"r");
+  if (f != NULL) fclose(f);
+  return f != NULL;
+}
+
+long directory_exists(void) {
+  struct find_t ff;
+  int result;
+
+  sa << "\\*.*";
+  result = _dos_findfirst(sa--,_A_SUBDIR,&ff);
+  return result == 0;
+}
+
+long string_length(void) {
+  return size(sa--);
+}
+
+long get_file_length(void) {
+  int handle = open(sa--, O_RDONLY);
+  long length;
+  if (handle < 0) return 0;
+  length = filelength(handle);
+  close(handle);
+  return length;
+}
+
+long disk_space(void) {
+  struct diskfree_t free;
+  int drive = toupper(*(char *)sa--) - 64;
+  long avail;
+
+  _dos_getdiskfree(drive, &free);
+  avail = (long) free.avail_clusters
+        * (long) free.bytes_per_sector
+        * (long) free.sectors_per_cluster;
+  return avail;
+}
+
+long file_time(void) {
+  int handle = open(sa--, O_RDONLY);
+#ifdef __BCPLUSPLUS__
+  unsigned date, time;
+#else
+  unsigned short date, time;
+#endif
+  struct tm t;
+
+  if (handle < 0) return 0;
+  _dos_getftime(handle, &date, &time);
+  close(handle);
+  t.tm_year = ((date & 0xfe00) >> 9) + 80;
+  t.tm_mon  = ((date & 0x1e00) >> 5) - 1;
+  t.tm_mday = date & 0x001f;
+  ;
+  t.tm_hour = (time & 0xf800) >> 11;
+  t.tm_min  = (time & 0x07e0) >> 5;
+  t.tm_sec  = (time & 0x001f) << 1;
+  return mktime(&t);
+}
+
+
+// Support for reduction procecures
+
+// Compare top strings on string accumulator
+
+/*
+  pops top two strings from string accumulator using strcmp
+  and returns
+    -1 if first string is less than top string
+     0 if strings match
+    +1 if top string is greater than first string
+*/
+
+int string_comp(void) {
+  int n = size(sa);
+  array<char> right_string(sa--, n+1);
+  return strcmp(sa--,right_string);
+}
+
+/*
+  replace the top string on the stack, with a substring where the index
+  of the first character in the substring is given by "first" and the index
+  of the last character is given by "last"
+*/
+
+void extract(unsigned first, unsigned last) {
+  int n = last - first + 1;
+  assert (last >= first);
+  array <char> x((char *) sa-- + first, n+1);
+  x[n] = 0;
+  ++sa << x;
+}
+
+/*
+ Look up the top string on the accumulator stack in the string dictionary.
+ If it has a value in the symbol table, replace it with the symbol table
+ value. If the value is numeric, convert it to integer. Otherwise, leave the
+ string untouched on the stack.
+*/
+
+void lookup(void) {
+  unsigned index = sd[sa];
+  if (index == 0) return;
+  switch (st[index].type) {
+    case string_type:
+    case value_type: {
+      --sa;                                       // discard name
+      ++sa << st[index].data.text;                // stack value
+      break;
+    }
+    case integer_type: {
+      --sa;                                       // discard name
+      (++sa).printf("%ld", st[index].data.integer); // convert to ascii
+      break;
+    }
+  }
+}
+
+/*
+ Find the data type of a symbol and change the reduction accordingly.
+ Return the dictionary index for strings, and the value itself for integers.
+*/
+
+long name_type(void) {
+  unsigned index = sd << sa--;
+  switch (st[index].type) {
+    case value_type:
+    case string_type: {
+      CHANGE_REDUCTION(string_name);
+      return index;
+    }
+    case built_in_function_type: {
+      CHANGE_REDUCTION(built_in_name);
+      return index;
+    }
+    case undefined_type: {
+      CHANGE_REDUCTION(undefined_name);
+      return index;
+    }
+    case integer_type: return st[index].data.integer;
+  }
+  return 0;
+}
+
+/*
+ Store a string formula. A string formula is a sequence of string identifiers
+ the values of which are to be concatenated. The parser has accumulated the
+ identifiers on the integer_stack, is. The formula is terminated by a zero
+ entry.
+*/
+
+int *formula(void) {
+  int n = size(is << 0);
+  int *f = new int[n];
+  while (n--) is >> f[n];
+  return f;
+}
+
+/*
+ Make a copy of an action that has been identified in the text stream.
+ An action pointer was stacked at the beginning of the action text on the
+ action stack, as.
+*/
+
+action_pointer copy_action(void) {
+  action_pointer ap;
+  as >> ap;                               // pop action descriptor
+  unsigned length = (unsigned) (PCB.pointer - ap.pointer);
+  unsigned char *action = memdup(ap.pointer,length + 1);
+  action[length] = 0;
+  ap.pointer = action;
+  return ap;
+}
+
+
+// Internal Commands
+
+int echo(int, char *args[]) {
+  int i;
+  char *cs = "";
+  for (i = 1; args[i]; i++) printf("%s%s", cs, args[i]), cs = " ";
+  printf("\n");
+  fflush(stdout);
+  return 0;
+}
+
+int pause(int, char *[]) {
+  int c;
+  while (kbhit()) getch();                  // Empty buffer
+  printf("Press any key to continue . . .\n");
+  c = getch();
+  if (c == 3) exit(1);
+  return c;
+}
+
+int exit_script(int n_args, char *args[]) {
+  if (n_args > 1) sscanf(args[1], "%ld", &exitcode);
+  exit(exitcode);
+  return exitcode;
+}
+
+/*
+int return_script(int n_args, char *args[]) {
+  if (n_args > 1) sscanf(args[1], "%ld", &exitcode);
+  PCB.exit_flag = AG_SUCCESS_CODE;
+  return exitcode;
+}
+*/
+
+int subdirs(int, char *args[]) {
+  struct find_t file_block;
+  int flag;
+  int length = strlen(args[1]);
+  array <char> name(args[1],length + 5);
+
+  strcat(name, "\\*.*");
+  for(flag = _dos_findfirst(name, _A_SUBDIR, &file_block);
+       flag == 0; flag = _dos_findnext(&file_block)) {
+    if ((file_block.attrib & _A_SUBDIR) == 0) continue;
+    if (strcmp(file_block.name, ".") == 0) continue;
+    if (strcmp(file_block.name, "..") == 0) continue;
+    puts(file_block.name);
+  }
+  return 0;
+}
+
+int files(int, char *args[]) {
+  struct find_t file_block;
+  int flag;
+  int length = strlen(args[1]);
+  array<char> name(args[1],length + 5);
+
+  strcat(name, "\\*.*");
+  for(flag = _dos_findfirst(name, 0, &file_block);
+       flag == 0; flag = _dos_findnext(&file_block)) {
+    puts(file_block.name);
+  }
+  return 0;
+}
+
+
+/*****
+
+ Execute Command Line
+
+*****/
+
+
+void perform_action(action_pointer ap) {
+  dsl_pcb_type save_pcb = PCB;
+
+  PCB.pointer = ap.pointer;
+  first_line = ap.line;
+  first_column = ap.column;
+  dsl();
+  exitflag = PCB.exit_flag != AG_SUCCESS_CODE;
+  PCB = save_pcb;
+  if (exitflag) PCB.exit_flag = AG_SEMANTIC_ERROR_CODE;
+}
+
+void exec(void) {
+  int n = size(ps << (char *) NULL);
+  int n_args = n - 1;
+  unsigned index;
+  unsigned uc_index;
+  int i;
+
+  array <char *> args(n);
+  while (n--) ps >> args[n];
+
+  index = sd[args[0]];
+  while (index && st[index].type == string_type) {
+     args[0] = st[index].data.text;                // stack value
+     index = sd[args[0]];
+  }
+  if (debug_switch) {
+    for (i = 0; args[i]; i++) fprintf(stderr, "%s ", args[i]);
+    fprintf(stderr,"\nPress any key to continue\n");
+    while (!kbhit());
+    getch();
+  }
+  strupr(args[0]);
+  uc_index = sd[args[0]];
+  if (n_args == 1 && strlen(args[0]) == 2 && args[0][1] == ':') {
+    errorlevel = system(args[0]);
+  }
+  else if ( *args[0] && uc_index) switch (st[uc_index].type) {
+    case internal_type: {
+      errorlevel = (*st[uc_index].data.proc)(n_args, args);
+      break;
+    }
+    case dos_type: {
+      int i;
+      for (i = 1; args[i]; i++) args[i][-1] = ' ';
+      errorlevel = system(args[0]);
+      if (errorlevel == -1) {
+        fprintf(stderr,"Error invoking %s: %s\n", args[0], sys_errlist[errno]);
+        exit(1);
+      }
+      break;
+    }
+  }
+  else if ( *args[0] && index) switch (st[index].type) {
+    case action_type: {
+      action_descriptor d = *st[index].data.action;
+      stack <symbol_table_entry> old_entries(d.n_args);
+			for (i = 0; i < d.n_args && args[i+1]; i++) {
+        old_entries << st[d.args[i]];
+        st[d.args[i]].type = value_type;
+        st[d.args[i]].data.text = memdup(args[i+1], 1 + strlen(args[i+1]));
+      }
+      perform_action(d.ap);
+      for (i = d.n_args; i--;) {
+        release(st[d.args[i]]);
+        old_entries >> st[d.args[i]];
+      }
+      break;
+    }
+    default: {
+      errorlevel = spawnvp(P_WAIT,args[0],ARGS);
+      if (errorlevel == -1) {
+        fprintf(stderr,"Error invoking %s: %s\n", args[0], sys_errlist[errno]);
+        exit(1);
+      }
+    }
+  }
+  else {
+  }
+  st[errorlevel_index].data.integer = errorlevel;
+  while (n_args--) --sa;
+  --ps;
+  if (kbhit()) {
+    int c = getch();
+    if (c == 3) exit(1);
+    ungetch(c);
+  }
+}
+
+void discard_temp_file(char *file_name) {
+  unlink(file_name);                        // Delete file
+  delete [] file_name;                      // Free storage for name
+}
+
+
+/*****
+
+ Execute Command with piped input
+
+*****/
+
+
+void exec_pipe_in(char *file_name) {
+  {
+    redirect sin(STDIN, file_name);
+    exec();
+  }
+  discard_temp_file(file_name);
+}
+
+
+/*****
+
+ Execute Command with redirected I/O
+
+*****/
+
+void exec_redirect_in(void) {
+  redirect sin(STDIN, sa--);
+  exec();
+}
+
+char *exec_pipe_out(void) {
+  fflush(stdout);
+  redirect sout(STDOUT);
+  exec();
+  fflush(stdout);
+  return save_file(sout);
+}
+
+char *exec_pipe_in_pipe_out(char *file_name) {
+  char *result;
+  {
+    redirect sin(STDIN, file_name);
+    fflush(stdout);
+    redirect sout(STDOUT);
+    exec();
+    fflush(stdout);
+    result = save_file(sout);
+  }
+  discard_temp_file(file_name);
+  return result;
+}
+
+char *exec_redirect_in_pipe_out(void) {
+  fflush(stdout);
+  redirect sout(STDOUT);
+  exec_redirect_in();
+  fflush(stdout);
+  return save_file(sout);
+}
+
+unsigned check_integer(void) {
+  unsigned index = sd << sa--;
+  if (st[index].type == integer_type) return index;
+  CHANGE_REDUCTION(undeclared_variable);
+  if (st[index].type == string_type) CHANGE_REDUCTION(string_variable);
+  return index;
+}
+
+void assign_value(unsigned index) {
+  char *text = copy(sa--);
+  release(st[index]);
+  st[index].type = value_type;
+  st[index].data.text = text;
+}
+
+void grab_output(char *temp_name) {
+  unlink(sa);                               // delete old file
+  rename(temp_name, sa--);                  // rename temp file
+  delete [] temp_name;                      // discard name string
+}
+
+void append_output(char *temp_name) {
+  fflush(stdout);
+  redirect sout(STDOUT, sa--, 1);           // append to file named on sa
+  redirect sin(STDIN, temp_name);
+  char buf[2000];
+  int n;
+  while (1) {
+    n = read(STDIN, buf, 2000);
+    if (n == 0) break;
+    write(STDOUT, buf, n);
+  }
+  fflush(stdout);
+  unlink(temp_name);
+  delete [] temp_name;
+}
+
+void action_string(void) {
+  action_pointer ap;
+  as >> ap;
+  unsigned length = (unsigned)(PCB.pointer - ap.pointer);
+  array <unsigned char> action(ap.pointer,length + 1);
+  action[length] = 0;
+  fflush(stdout);
+  redirect sout(STDOUT);
+  char *result;
+
+  ap.pointer = action;
+  perform_action(ap);
+  fflush(stdout);
+  result = content(sout);
+  ++sa << result;
+  delete [] result;
+}
+
+
+// Program Control functions
+
+// If/else statement
+
+int do_if(int pc, int cc) {
+  action_pointer ap;
+  as >> ap;
+  if (!pc && cc && exitflag == 0) {
+    unsigned length = (unsigned) (PCB.pointer - ap.pointer);
+    array<unsigned char> q(ap.pointer, length+1);
+    q[length] = 0;
+    ap.pointer = q;
+    perform_action(ap);
+  }
+  return pc || cc;
+}
+
+// While statement
+
+void do_while(int cc) {
+  unsigned length;
+  action_pointer ap;
+  as >> ap;
+  if (cc == 0) return;
+  length = (unsigned) (PCB.pointer - ap.pointer);
+  array<unsigned char> q(ap.pointer, length+1);
+  q[length] = 0;
+  ap.pointer = q;
+  perform_action(ap);
+  if (exitflag) return;
+  PCB.pointer = CONTEXT.pointer;
+  PCB.line = CONTEXT.line;
+  PCB.column = CONTEXT.column;
+}
+
+
+// For Statement
+// Note that this is the for statement in the DOS batch languange for, not C
+
+void do_for_loop(void) {
+  int n,k;
+  char *q;
+  char *seps = " \t\v\f\r\n";
+  action_pointer ap;
+  as >> ap;
+  unsigned length = (unsigned)(PCB.pointer - ap.pointer);
+  array <unsigned char> action(ap.pointer, length + 1);
+  action[length] = 0;
+
+  ap.pointer = action;
+  n = size(sa);
+  array<char> text(sa--, n + 1);
+
+
+  unsigned index = sd << sa--;
+
+  ++ps;
+  for (q = strtok(text, seps); q != NULL; q = strtok(NULL,seps)) {
+    if (*q == '(') {
+      int k = strlen(q) - 1;
+      assert(q[k] == ')');
+      q[k] = 0;
+      q++;
+    }
+    else if (*q == '"') {
+      int k = strlen(q) - 1;
+      assert(q[k] == '"');
+      q[k] = 0;
+      q++;
+    }
+    ps << q;
+  }
+  k = n = size(ps);
+  array<char *> args(n);
+  while (k--) ps >> args[k];
+  --ps;
+  symbol_table_entry save_table_entry = st[index];
+  st[index].type = value_type;
+
+  for (k = 0; k < n && exitflag == 0; k++) {
+    st[index].data.text = args[k];
+    perform_action(ap);
+  }
+  st[index] = save_table_entry;
+}
+
+void invoke_script(void) {
+  int handle = open(sa, O_TEXT | O_RDONLY);
+  long size;
+  unsigned n;
+  action_pointer ap;
+
+  if (handle < 0) {
+    fprintf(stderr,"Cannot open %s\n", (char *) sa--);
+    exit(1);
+  }
+  --sa;
+  size = filelength(handle);
+  assert(size < 65536L);
+  array <unsigned char> data((unsigned) size+1);
+  n = (unsigned) read(handle,data,(unsigned) size);
+  data[n] = 0;
+  close(handle);
+  exitflag = 0;
+  ap.pointer = data;
+  ap.line = ap.column = 1;
+  perform_action(ap);
+  st[errorlevel_index].data.integer = exitcode;
+  exitflag = exitcode = 0;
+  return;
+}
+
+internal_commands_descriptor internal_commands[] = {
+  {"ECHO", echo},
+  {"EXIT", exit_script},
+  {"FILES", files},
+  {"PAUSE", pause},
+//  {"RETURN", return_script},
+  {"SUBDIRS", subdirs},
+  {NULL, NULL}
+};
+
+struct built_ins_descriptor built_ins[] = {
+  {"file_exists", file_exists},
+  {"directory_exists", directory_exists},
+  {"string_length", string_length},
+  {"file_length", get_file_length},
+  {"disk_space", disk_space},
+  {"file_time", file_time},
+  {NULL, NULL}
+};
+
+void set_extension(char *path, char *e) {
+  char s[_MAX_PATH];
+  char drive[_MAX_DRIVE];
+  char dir[_MAX_DIR];
+  char file[_MAX_FNAME];
+  char ext[_MAX_EXT];
+
+  _splitpath(path,drive,dir,file,ext);
+  _makepath(s, drive, dir, file, e);
+  ++sa << s;
+}
+
+/*
+ Note that if this program is called without any arguments, it looks for a
+ script with the same name as the executable. Thus, to make an install
+ program that picks up the install script without any arguments, you simply
+ rename DSL.EXE to INSTALL.EXE. Then when you run it without any arguments
+ it will run the INSTALL.DSL script.
+*/
+
+void main(int argc, char *argv[]) {
+  int arg_number = 0;
+  int i = 1;
+  int j = 0;
+
+  init_dos_internals();
+  set_arg(j++, argv[0]);
+  if (argc > i && (argv[i][0] == '/' || argv[i][0] == '-')) {
+    if (toupper(argv[i][1]) != 'D') {
+      printf("Unrecognized switch -- /%s\n",argv[i][1]);
+      return;
+    }
+    debug_switch = 1;
+    i++;
+  }
+  if (argc > i) arg_number = i++;
+  set_extension(argv[arg_number], "DSL");
+  set_arg(j++,copy(sa));
+  while (i < argc) set_arg(j++, argv[i++]);
+  define_integer("argc", j);
+  invoke_script();                          // Takes file name from sa
+  exit(exitcode);
+}
+#line - "dsl-2.cpp"
+
+#ifndef CONVERT_CASE
+#define CONVERT_CASE(c) (c)
+#endif
+#ifndef TAB_SPACING
+#define TAB_SPACING 8
+#endif
+
+#define ag_rp_1(v) (++sa << sd[v], lookup())
+
+#define ag_rp_2(v) (++sa << sd[v], lookup())
+
+#define ag_rp_3(v) (++sa << sd[v], lookup())
+
+#define ag_rp_4() (sa << '[')
+
+#define ag_rp_5() (concat(sa) << ']', lookup())
+
+#define ag_rp_6() (concat(sa))
+
+#define ag_rp_7() (concat(sa))
+
+#define ag_rp_8(c) (++sa << c)
+
+#define ag_rp_9(c) (sa << c)
+
+#define ag_rp_10() (action_string())
+
+#define ag_rp_11() (as << CONTEXT)
+
+static void ag_rp_12(void) {
+#line - "dsl-2.syn"
+action_pointer a; as >> a;
+#line - "dsl-2.cpp"
+}
+
+#define ag_rp_13() (--sa)
+
+#define ag_rp_14() (--sa)
+
+#define ag_rp_15() (--sa)
+
+#define ag_rp_16() (++sa)
+
+#define ag_rp_17(c) (sa << c)
+
+#define ag_rp_18() (sa << '(')
+
+#define ag_rp_19() (concat(sa) << ')')
+
+#define ag_rp_20() (++sa)
+
+#define ag_rp_21(c) (sa << c)
+
+#define ag_rp_22(c) (sa << c)
+
+#define ag_rp_23() ('\a')
+
+#define ag_rp_24() ('\b')
+
+#define ag_rp_25() ('\f')
+
+#define ag_rp_26() ('\n')
+
+#define ag_rp_27() ('\r')
+
+#define ag_rp_28() ('\t')
+
+#define ag_rp_29() ('\v')
+
+#define ag_rp_30() ('\\')
+
+#define ag_rp_31() ('\?')
+
+#define ag_rp_32() ('\'')
+
+#define ag_rp_33() ('"')
+
+#define ag_rp_34(d) (d-'0')
+
+#define ag_rp_35(n, d) (8*n + d-'0')
+
+#define ag_rp_36(n, d) (8*n + d-'0')
+
+#define ag_rp_37(n) ((int) n)
+
+#define ag_rp_38(n, d) (16*n + d)
+
+#define ag_rp_39() (exec())
+
+#define ag_rp_40() (exec_redirect_in())
+
+#define ag_rp_41(file) (exec_pipe_in(file))
+
+#define ag_rp_42(file) (grab_output(file))
+
+#define ag_rp_43(file) (append_output(file))
+
+#define ag_rp_44() (exec_pipe_out())
+
+#define ag_rp_45() (exec_redirect_in_pipe_out())
+
+#define ag_rp_46(file) (exec_pipe_in_pipe_out(file))
+
+#define ag_rp_47() (sa << 0, ++ps << sa)
+
+#define ag_rp_48() (ps << sa, sa << 0)
+
+#define ag_rp_49() (ps << sa, sa << 0)
+
+#define ag_rp_50(pc) (do_if(pc,1))
+
+#define ag_rp_51(cc) (cc)
+
+#define ag_rp_52(cc) (cc)
+
+#define ag_rp_53(pc, cc) (do_if(pc,cc!=0))
+
+#define ag_rp_54(cc) ((int) cc)
+
+#define ag_rp_55(cc) (do_if(0,cc != 0))
+
+#define ag_rp_56(v) (assign_value(v))
+
+#define ag_rp_57(v, x) (st[v].data.integer = (int) x)
+
+#define ag_rp_58(v) (st[v].data.text = copy(sa--))
+
+#define ag_rp_59(v, n, x) (st[v].data.text[(unsigned)n] = (char) x)
+
+#define ag_rp_60() (check_integer())
+
+#define ag_rp_61(cc) (do_while(cc != 0))
+
+#define ag_rp_62() (do_for_loop())
+
+#define ag_rp_63(n) (define_action(n))
+
+#define ag_rp_64(x) (define_integer(sa--, x))
+
+#define ag_rp_65() (define_string())
+
+#define ag_rp_66() (0)
+
+#define ag_rp_67(n) (n+1)
+
+#define ag_rp_68(c) (++sa << c)
+
+#define ag_rp_69(c) (sa << c)
+
+#define ag_rp_70(c) (sa << c)
+
+#define ag_rp_71(c, x, y) (c != 0 ? x : y)
+
+#define ag_rp_72(x, y) (x != 0 || y!=0)
+
+#define ag_rp_73(x, y) (x != 0 && y !=0)
+
+#define ag_rp_74(x, y) (x | y)
+
+#define ag_rp_75(x, y) (x ^ y)
+
+#define ag_rp_76(x, y) (x & y)
+
+#define ag_rp_77(x, y) (x == y)
+
+#define ag_rp_78(x, y) (x != y)
+
+#define ag_rp_79() (string_comp() == 0)
+
+#define ag_rp_80() (string_comp() != 0)
+
+#define ag_rp_81(x, y) (x < y)
+
+#define ag_rp_82(x, y) (x > y)
+
+#define ag_rp_83(x, y) (x <= y)
+
+#define ag_rp_84(x, y) (x >= y)
+
+#define ag_rp_85() (string_comp() < 0)
+
+#define ag_rp_86() (string_comp() > 0)
+
+#define ag_rp_87() (string_comp() <= 0)
+
+#define ag_rp_88() (string_comp() >= 0)
+
+#define ag_rp_89(x, y) (x << (int) y)
+
+#define ag_rp_90(x, y) (x >> (int) y)
+
+#define ag_rp_91(x, y) (x + y)
+
+#define ag_rp_92(x, y) (x - y)
+
+#define ag_rp_93(x, y) (x * y)
+
+#define ag_rp_94(x, y) (x / y)
+
+#define ag_rp_95(x, y) (x % y)
+
+static long ag_rp_96(long x) {
+#line - "dsl-2.syn"
+      assert(x);
+      return x;
+    
+#line - "dsl-2.cpp"
+}
+
+#define ag_rp_97(x) (x)
+
+#define ag_rp_98(x) (-x)
+
+#define ag_rp_99(x) (~x)
+
+#define ag_rp_100(x) (!x)
+
+#define ag_rp_101(n) (((unsigned char *) sa--)[(unsigned) n])
+
+static long ag_rp_102(void) {
+#line - "dsl-2.syn"
+                              long temp;
+                              sscanf(sa--, "%ld", &temp);
+                              return temp;
+                            
+#line - "dsl-2.cpp"
+}
+
+#define ag_rp_103(x) (x)
+
+#define ag_rp_104(x) ((*st[(unsigned)x].data.func)())
+
+#define ag_rp_105() (name_type())
+
+#define ag_rp_106() (concat(sa))
+
+#define ag_rp_107(first, last) (extract((unsigned)first, (unsigned) last))
+
+#define ag_rp_108() (sa << '[')
+
+#define ag_rp_109() (concat(sa) << ']', lookup())
+
+#define ag_rp_110(x) (++sa << st[(unsigned)x].data.text)
+
+#define ag_rp_111(x) (++sa << sd[(unsigned)x])
+
+#define ag_rp_112() (action_string())
+
+#define ag_rp_113(x) (++sa,sa.printf("%ld",x))
+
+#define ag_rp_114() (0)
+
+#define ag_rp_115(x, d) (16*x + d-'0')
+
+#define ag_rp_116(d) ((d&7) + 9)
+
+#define ag_rp_117() (0)
+
+#define ag_rp_118(n, d) (8*n + d-'0')
+
+#define ag_rp_119(d) (d-'0')
+
+#define ag_rp_120(n, d) (10*n + d-'0')
+
+#define ag_rp_121(c) (c)
+
+#define ag_rp_122(scd) (display_queries(scd))
+
+#define ag_rp_123() (reset(qs), new screen_descriptor)
+
+#define ag_rp_124(scd) (scd->title = formula(), scd)
+
+#define ag_rp_125(scd, c) (scd->color = (char) c, scd)
+
+#define ag_rp_126(scd, c) (scd->entry_color = (char) c, scd)
+
+#define ag_rp_127(scd, c) (scd->highlight_color = (char) c, scd)
+
+#define ag_rp_128(scd, w, h) (scd->width = (unsigned)w, scd->height = (unsigned) h, scd)
+
+#define ag_rp_129(scd, px, py) (scd->pos.x = (unsigned) px,scd->pos.y = (unsigned) py, scd)
+
+#define ag_rp_130(scd, q) (qs << *q, delete q, scd)
+
+#define ag_rp_131(scd, q) (qs << *q, delete q, scd)
+
+#define ag_rp_132(fg, bg) (COLOR((unsigned)fg,(unsigned)bg))
+
+#define ag_rp_133() (clear(new query_item))
+
+#define ag_rp_134(q) (q->id = sd << sa--, q)
+
+#define ag_rp_135(q) (q->value = formula(), q)
+
+#define ag_rp_136(q) (q->prompt = formula(), q)
+
+#define ag_rp_137(q) (q->explanation = formula(),q)
+
+#define ag_rp_138() (clear(new query_item))
+
+#define ag_rp_139(q) (q->prompt = formula(), q)
+
+#define ag_rp_140(q) (q->explanation = formula(),q)
+
+#define ag_rp_141(q) (q->action = copy_action(), q)
+
+#define ag_rp_142() (reset(is) << (sd << sa--))
+
+#define ag_rp_143() (is << (sd << sa--))
+
+#define ag_rp_144() (sa << '[')
+
+#define ag_rp_145() (concat(sa) << ']')
+
+
+#define READ_COUNTS 
+#define WRITE_COUNTS 
+#undef V
+#define V(i,t) (*t (&(PCB).vs[(PCB).ssx + i]))
+#undef VS
+#define VS(i) (PCB).vs[(PCB).ssx + i]
+
+#ifndef GET_CONTEXT
+#define GET_CONTEXT CONTEXT = (PCB).input_context
+#endif
+
+typedef enum {
+  ag_action_1,
+  ag_action_2,
+  ag_action_3,
+  ag_action_4,
+  ag_action_5,
+  ag_action_6,
+  ag_action_7,
+  ag_action_8,
+  ag_action_9,
+  ag_action_10,
+  ag_action_11,
+  ag_action_12
+} ag_parser_action;
+
+
+#ifndef NULL_VALUE_INITIALIZER
+#define NULL_VALUE_INITIALIZER = { 0 }
+#endif
+
+static dsl-2_vs_type const ag_null_value NULL_VALUE_INITIALIZER;
+
+static const unsigned char ag_rpx[] = {
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  1,  2,  3,  4,  5,  0,  6,  0,  7,  8,  9,  0, 10,
+    0, 11,  0,  0, 12,  0, 13, 14, 15,  0,  0,  0,  0,  0,  0, 16,  0, 17,
+   18, 19,  0, 20,  0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+    0,  0,  0,  0,  0, 34, 35, 36, 37,  0, 38,  0,  0, 39, 40, 41, 42, 43,
+   44, 45, 46, 47, 48, 49,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 50,
+    0, 51, 52, 53, 54, 55,  0,  0,  0,  0,  0,  0,  0,  0, 56,  0,  0, 57,
+   58, 59, 60, 61,  0,  0, 62, 63, 64, 65, 66, 67, 68, 69, 70,  0, 71,  0,
+   72,  0, 73,  0, 74,  0, 75,  0, 76,  0, 77, 78, 79, 80,  0, 81, 82, 83,
+   84, 85, 86, 87, 88,  0, 89, 90,  0, 91, 92,  0, 93, 94, 95, 96,  0, 97,
+   98, 99,100,  0,  0,101,102,  0,103,104,  0,105,  0,106,  0,107,108,109,
+    0,110,111,112,113,  0,  0,  0,  0,  0,  0,114,115,  0,116,117,118,119,
+  120,121,  0,  0,122,123,  0,124,125,126,127,128,129,130,131,132,133,  0,
+  134,135,136,137,138,  0,139,140,141,142,143,  0,  0,  0,144,145
+};
+
+static const unsigned char ag_key_itt[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0
+};
+
+static const unsigned short ag_key_pt[] = {
+  0,213,  0,216,  0,220,  0,224,  0,222,  0,221,  0,225,  0,226,
+  0,227,  0,163,  0,164,  0,249,  0,250,  0,251,  0,252,  0,254,
+  0,255,  0,256,  0,257,  0,258,  0,259,  0,260,  0,261,  0,262,
+0
+};
+
+static const unsigned char ag_key_ch[] = {
+    0, 42, 47,255, 47, 97,105,115,255, 42, 47,255, 42, 47,255, 88,120,255,
+   60, 61,255, 61, 62,255,101,111,255,108,110,120,255,105,111,255,116,255,
+  102,110,255, 99,105,116,255, 33, 38, 46, 47, 48, 60, 61, 62, 97, 98, 99,
+  100,101,102,104,105,108,112,115,116,118,119,124,255, 47, 97,105,115,255,
+   47,255, 42, 47,255,110,120,255,105,111,255,102,110,255, 99,105,116,255,
+   47, 97, 98, 99,100,101,102,104,105,108,112,115,116,118,119,255, 42, 47,
+  255,108,110,120,255,105,111,255,102,110,255, 99,105,116,255, 47, 97, 98,
+   99,100,101,102,104,105,108,112,115,116,118,119,255,102,110,255, 99,116,
+  255, 47, 97,102,105,115,119,255, 42, 47,255, 60, 61,255, 61, 62,255, 33,
+   38, 46, 47, 60, 61, 62,124,255, 42, 47,255, 47, 62,255,102,110,255, 99,
+  116,255, 97,102,105,115,119,255, 42, 47,255, 88,120,255, 47, 48,255, 88,
+  120,255, 48,255, 47,255, 34, 39, 63, 92, 97, 98,102,110,114,116,118,120,
+  255, 92,255, 42, 47,255, 60, 61,255, 61, 62,255,105,116,255, 33, 38, 46,
+   47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,108,115,116,124,255, 42,
+   47,255, 47, 62,100,255, 47, 62,255, 47, 98, 99,101,102,104,108,115,116,
+  255, 62,255, 47,119,255, 47,101,255, 88,120,255, 47, 48,255,105,116,255,
+   33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,105,108,115,116,124,
+  255, 42, 47,255, 60, 61,255, 61, 62,255,105,116,255, 33, 38, 46, 47, 60,
+   61, 62, 97, 98, 99,101,102,104,105,108,115,116,124,255, 42, 47,255, 60,
+   61,255, 61, 62,255,105,116,255, 33, 38, 46, 47, 60, 61, 62,104,105,108,
+  115,116,124,255, 42, 47,255, 47,255, 60, 61,255, 61, 62,255,105,116,255,
+   33, 38, 46, 47, 60, 61, 62, 97, 98, 99,101,102,104,105,108,115,116,124,
+  255, 33, 60, 61, 62,255,105,116,255, 33, 38, 46, 47, 61, 97, 98, 99,101,
+  102,104,105,108,115,116,124,255,105,116,255, 38, 46, 47, 97, 98, 99,101,
+  102,104,105,108,115,116,124,255,105,116,255, 46, 47, 97, 98, 99,101,102,
+  104,105,108,115,116,124,255, 42, 47,255, 60, 61,255, 61, 62,255,108,110,
+  255,105,116,255, 33, 38, 46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104,
+  105,108,115,116,119,124,255, 47,101,112,255, 47,100,101,112,118,255, 47,
+   99,255, 99,255,105,255, 47, 62,100,255,102,110,255, 99,116,255, 47, 97,
+  101,102,105,115,119,255,101,255, 42, 47,255, 47,105,255, 47,105,255, 60,
+   62,255,100,255,105,255, 46,255, 42, 47,255, 61, 62,255,105,116,255, 33,
+   38, 46, 47, 60, 61, 62, 97, 98, 99,100,101,102,104,105,108,115,116,124,
+  255
+};
+
+static const unsigned char ag_key_act[] = {
+  0,0,0,4,2,7,7,7,4,3,3,4,0,0,4,5,5,4,0,0,4,0,0,4,7,5,4,7,7,7,4,7,7,4,5,
+  4,5,6,4,7,7,7,4,3,3,3,2,2,2,3,2,7,7,7,2,2,2,7,2,7,7,2,7,7,7,3,4,3,7,7,
+  7,4,3,4,0,0,4,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,
+  4,0,0,4,7,7,7,4,7,7,4,5,7,4,7,7,7,4,2,7,7,7,7,2,2,7,2,7,7,2,7,7,7,4,5,
+  7,4,7,7,4,3,7,7,2,2,7,4,0,0,4,0,0,4,0,0,4,3,3,3,2,2,3,2,3,4,0,0,4,2,3,
+  4,5,7,4,7,7,4,7,7,2,2,7,4,0,0,4,5,5,4,2,2,4,5,5,4,2,4,3,4,0,0,0,0,0,0,
+  0,0,0,0,0,0,4,2,4,0,0,4,0,0,4,0,0,4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,7,7,7,
+  7,7,2,7,3,4,0,0,4,2,3,7,4,3,3,4,3,7,7,7,7,7,7,7,7,4,3,4,3,7,4,3,7,4,5,
+  5,4,3,2,4,7,7,4,3,3,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,0,0,4,0,0,
+  4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,7,7,7,7,2,7,3,4,0,0,4,0,0,4,0,0,4,7,7,4,
+  3,3,3,2,2,3,2,7,7,7,2,7,3,4,0,0,4,2,4,0,0,4,0,0,4,7,7,4,3,3,3,3,2,3,2,
+  7,7,7,7,7,7,7,7,2,7,3,4,3,3,3,3,4,7,7,4,3,3,3,3,3,7,7,7,7,7,7,7,7,2,7,
+  3,4,7,7,4,3,3,3,7,7,7,7,7,7,7,7,2,7,3,4,7,7,4,3,3,7,7,7,7,7,7,7,7,2,7,
+  3,4,0,0,4,0,0,4,0,0,4,7,7,4,7,7,4,3,3,3,2,2,3,2,7,7,7,7,2,7,7,7,7,2,7,
+  7,3,4,3,7,7,4,3,7,7,7,7,4,3,7,4,7,4,7,4,3,3,7,4,5,7,4,7,7,4,3,7,7,7,2,
+  2,7,4,7,4,0,0,4,2,7,4,3,7,4,3,3,4,7,4,7,4,3,4,0,0,4,0,0,4,7,7,4,3,3,3,
+  2,3,3,2,7,7,7,7,7,7,7,7,7,2,7,3,4
+};
+
+static const unsigned short ag_key_parm[] = {
+    0, 13, 16,  0,  0, 12, 14, 16,  0, 12, 13,  0, 13, 16,  0, 20, 18,  0,
+  238,236,  0,237,212,  0, 40, 10,  0,  0, 26, 44,  0, 36,  6,  0, 14,  0,
+    2,  8,  0, 22, 30, 16,  0,235,231,248,  0,  0,  0,234,  0, 12, 46, 34,
+    0,  0,  0, 28,  0, 32, 42,  0, 24, 38,  4,230,  0, 16, 12, 14, 16,  0,
+   13,  0, 13, 16,  0, 26, 44,  0, 36,  6,  0,  2, 14,  0, 22, 30, 16,  0,
+    0, 12, 46, 34, 40,  0,  0, 28,  0, 32, 42,  0, 24, 38,  4,  0, 13, 16,
+    0,  0, 26, 44,  0, 36,  6,  0,  2, 14,  0, 22, 30, 16,  0,  0, 12, 46,
+   34, 40,  0,  0, 28,  0, 32, 42,  0, 24, 38,  4,  0,  2, 14,  0, 22, 16,
+    0, 16, 12,  6,  0,  0,  4,  0, 13, 16,  0,238,236,  0,237,212,  0,235,
+  231,248,  0,  0,234,  0,230,  0, 13, 16,  0,  0,212,  0,  2, 14,  0, 22,
+   16,  0, 12,  6,  0,  0,  4,  0, 13, 16,  0, 20, 18,  0,  0,  0,  0, 20,
+   18,  0,  0,  0, 16,  0, 68, 67, 66, 65, 58, 59, 60, 61, 62, 63, 64, 76,
+    0,  0,  0, 13, 16,  0,238,236,  0,237,212,  0, 30, 16,  0,235,231,248,
+    0,  0,234,  0, 12, 46, 34, 10, 26, 36, 28, 14, 32,  0, 24,230,  0, 13,
+   16,  0,  0,212, 10,  0, 16,212,  0, 16, 46, 34, 26, 36, 28, 32, 30, 24,
+    0,212,  0, 16,  4,  0, 16,  0,  0, 20, 18,  0, 13,  0,  0, 30, 16,  0,
+  235,231,248, 16,236,234,237, 12, 46, 34, 26, 36, 28, 14, 32,  0, 24,230,
+    0, 13, 16,  0,238,236,  0,237,212,  0, 30, 16,  0,235,231,248,  0,  0,
+  234,  0, 12, 46, 34, 26, 36, 28, 14, 32,  0, 24,230,  0, 13, 16,  0,238,
+  236,  0,237,212,  0, 30, 16,  0,235,231,248,  0,  0,234,  0, 28, 14, 32,
+    0, 24,230,  0, 13, 16,  0,  0,  0,238,236,  0,237,212,  0, 30, 16,  0,
+  235,231,248, 16,  0,234,  0, 12, 46, 34, 26, 36, 28, 14, 32,  0, 24,230,
+    0,235,236,234,237,  0, 30, 16,  0,235,231,248, 16,234, 12, 46, 34, 26,
+   36, 28, 14, 32,  0, 24,230,  0, 30, 16,  0,231,248, 16, 12, 46, 34, 26,
+   36, 28, 14, 32,  0, 24,230,  0, 30, 16,  0,248, 16, 12, 46, 34, 26, 36,
+   28, 14, 32,  0, 24,230,  0, 13, 16,  0,238,236,  0,237,212,  0,  0, 26,
+    0, 30, 16,  0,235,231,248,  0,  0,234,  0, 12, 46, 34, 10,  0, 36, 28,
+   14, 32,  0, 24,  4,230,  0, 16, 44, 42,  0, 16, 40, 44, 42, 38,  0, 13,
+   34,  0, 34,  0,  8,  0, 16,212, 10,  0,  2, 14,  0, 22, 16,  0, 16, 12,
+    0,  6,  0,  0,  4,  0,  0,  0, 13, 16,  0,  0,  2,  0, 16,  2,  0,236,
+  237,  0, 10,  0,  2,  0,248,  0, 13, 16,  0,237,212,  0, 30, 16,  0,235,
+  231,248,  0,236,234,  0, 12, 46, 34, 10, 26, 36, 28, 14, 32,  0, 24,230,
+    0
+};
+
+static const unsigned short ag_key_jmp[] = {
+    0,  0,  0,  0,  1,  0,  6,  9,  0, 15, 17,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,  0, 44,  0,  0, 50, 53, 57,  0, 67, 71,  0,  0,  0,
+    0, 34,  0, 96,101,104,  0, 19, 21, 23, 12, 15, 18, 25, 21, 27, 33, 39,
+   24, 27, 31, 73, 36, 82, 90, 39,109,114,122,127,  0,129,131,137,140,  0,
+  146,  0,  0,  0,  0,172,176,  0,186,190,  0,  0,201,  0,217,222,225,  0,
+   74,148,154,160,165, 77, 80,192, 83,203,211, 86,230,235,243,  0,  0,  0,
+    0,272,275,279,  0,289,293,  0,  0,304,  0,320,325,328,  0,106,248,254,
+  260,265,109,113,295,116,306,314,119,333,338,346,  0,  0,362,  0,364,369,
+    0,351,353,359,139,142,374,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,379,
+  381,383,152,155,385,158,387,  0,  0,  0,  0,170,389,  0,  0,400,  0,402,
+  407,  0,391,397,176,179,412,  0,  0,  0,  0,  0,  0,  0,188,191,  0,  0,
+    0,  0,197,  0,417,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,204,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,476,479,  0,419,421,423,
+  219,222,425,225,427,433,439,444,446,451,456,465,468,228,484,489,  0,  0,
+    0,  0,251,491,493,  0,495,497,  0,499,501,507,512,517,522,531,539,543,
+    0,548,  0,550,552,  0,557,559,  0,  0,  0,  0,563,279,  0,626,629,  0,
+  565,567,569,571,573,575,577,579,585,591,596,601,606,615,618,285,634,639,
+    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,696,699,  0,641,643,645,307,310,
+  647,313,649,655,661,666,671,676,685,688,316,704,709,  0,  0,  0,  0,  0,
+    0,  0,  0,  0,  0,739,742,  0,711,713,715,338,341,717,344,719,728,731,
+  347,747,752,  0,  0,  0,  0,364,  0,  0,  0,  0,  0,  0,  0,811,814,  0,
+  754,756,758,760,369,762,372,764,770,776,781,786,791,800,803,375,819,824,
+    0,826,828,830,832,  0,891,894,  0,834,836,838,840,842,844,850,856,861,
+  866,871,880,883,402,899,904,  0,959,962,  0,906,908,910,912,918,924,929,
+  934,939,948,951,422,967,972,  0,1025,1028,  0,974,976,978,984,990,995,
+  1000,1005,1014,1017,440,1033,1038,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,1067,1070,  0,1099,1102,  0,1040,1042,1044,457,460,1046,463,1048,1054,
+  1060,1065,466,1074,1079,1088,1091,469,1107,1112,1117,  0,1119,1121,1132,
+    0,1138,1140,1147,1158,1164,  0,1172,1174,  0,1179,  0,1184,  0,1186,
+  1188,1190,  0,  0,1207,  0,1209,1214,  0,1192,1194,1200,1204,514,517,1219,
+    0,1224,  0,  0,  0,  0,530,1228,  0,1230,1232,  0,1234,1236,  0,1238,
+    0,1240,  0,1242,  0,  0,  0,  0,  0,  0,  0,1303,1306,  0,1244,1246,
+  1248,548,1250,1252,551,1254,1260,1266,1271,1273,1278,1283,1292,1295,554,
+  1311,1316,  0
+};
+
+static const unsigned short ag_key_index[] = {
+    4,  9, 43, 67,  0, 72, 72, 72, 90,123,  0,  0,  0,145, 67,  0,  0,  0,
+  161,  0,  0,173,  0,145,182,194,  0,200,202,217,  0,231,254, 72, 72,258,
+   72,  0,  0, 72,258,  0,261,  0,258,258,258,271,258,  0,273,276,202,  0,
+  282,  0,200,288, 67,217,319,319,350,367,319,319,282,282,282,282,  0,  0,
+  200,200,200,200,200,378,378,397,378,397,288,405,425,425,425,425,443, 67,
+  194,194,194,194,202,472,  0,  0,217,217,  0, 72,  0,200,  0,200, 72,  0,
+  493, 72,  0,497, 72,  0, 72,  0,503,506,503,506, 72,  0,202, 72,  0,508,
+  200,  0,200,  0,282,  0,  0,  0,510,258,258,258,520,528,145,  0,  0,  0,
+    0,  0,  4,  0,  0,397,  0,282,200,282,200,282,200,200,200,200,200,282,
+  200,282,  0,282,  0,  0,  0,282,  0,282,  0,200,200,200,200,200,200,282,
+  200,282,200,200,282,200,282,200,282,200,  0,217,  0,  0,  0,258,  0,202,
+   72,  0, 72,  0,202,  0,  0, 72,  0, 72,  0,202,200,200,202,202,200,  0,
+   72,  0,  0,202,202,202,202,202,258,  0,258,  0,533,536,319,  0,200,288,
+    0,378,378,200,378,378,288,288,288,288,405,405,378,378,378,378,539,288,
+  288,405,425,425,425,425,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+    0,  0,202,202,542,200,258,258,544,  0,546,546,282,200,  0,557,202,202,
+  202,202,202,202,282,200,200,200,  0,  0, 72,  0,202,  0,282,200,  0,202,
+    0,  0
+};
+
+static const unsigned char ag_key_ends[] = {
+99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 47,0, 
+42,0, 61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 102,97,117,108,116,0, 
+115,101,0, 116,114,121,0, 112,108,97,110,97,116,105,111,110,0, 
+101,108,100,0, 114,0, 105,103,104,108,105,103,104,116,0, 
+111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0, 
+122,101,0, 114,105,110,103,0, 105,116,108,101,0, 
+97,114,105,97,98,108,101,0, 104,105,108,101,0, 124,0, 47,0, 
+99,116,105,111,110,0, 110,116,0, 116,114,105,110,103,0, 42,0, 
+99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+101,102,97,117,108,116,0, 116,114,121,0, 
+112,108,97,110,97,116,105,111,110,0, 101,108,100,0, 114,0, 
+105,103,104,108,105,103,104,116,0, 116,0, 111,99,97,116,105,111,110,0, 
+114,111,109,112,116,0, 114,101,101,110,0, 122,101,0, 
+114,105,110,103,0, 105,116,108,101,0, 97,114,105,97,98,108,101,0, 
+104,105,108,101,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 
+111,108,111,114,0, 101,102,97,117,108,116,0, 115,101,0, 
+116,114,121,0, 112,108,97,110,97,116,105,111,110,0, 101,108,100,0, 
+114,0, 105,103,104,108,105,103,104,116,0, 116,0, 
+111,99,97,116,105,111,110,0, 114,111,109,112,116,0, 114,101,101,110,0, 
+122,101,0, 114,105,110,103,0, 105,116,108,101,0, 
+97,114,105,97,98,108,101,0, 104,105,108,101,0, 47,0, 
+99,116,105,111,110,0, 111,114,0, 116,0, 114,101,101,110,0, 
+114,105,110,103,0, 104,105,108,101,0, 61,0, 38,0, 46,0, 61,0, 
+124,0, 62,0, 99,116,105,111,110,0, 111,114,0, 116,0, 
+114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0, 47,0, 
+61,0, 38,0, 46,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 
+111,108,111,114,0, 111,0, 110,116,114,121,0, 105,101,108,100,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 62,0, 111,0, 47,0, 62,0, 47,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 
+111,99,97,116,105,111,110,0, 105,122,101,0, 105,116,108,101,0, 
+62,0, 47,0, 104,105,108,101,0, 47,0, 108,115,101,0, 42,0, 61,0, 
+38,0, 46,0, 47,0, 61,0, 61,0, 61,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, 
+99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 
+110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 47,0, 61,0, 
+99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+110,116,114,121,0, 105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 
+110,116,0, 111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 61,0, 61,0, 61,0, 61,0, 38,0, 
+46,0, 47,0, 61,0, 99,116,105,111,110,0, 117,116,116,111,110,0, 
+111,108,111,114,0, 110,116,114,121,0, 105,101,108,100,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 38,0, 46,0, 47,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 46,0, 47,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 61,0, 38,0, 46,0, 61,0, 
+99,116,105,111,110,0, 117,116,116,111,110,0, 111,108,111,114,0, 
+111,0, 115,101,0, 116,114,121,0, 105,101,108,100,0, 
+105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 104,105,108,101,0, 124,0, 47,0, 
+120,112,108,97,110,97,116,105,111,110,0, 114,111,109,112,116,0, 
+47,0, 101,102,97,117,108,116,0, 120,112,108,97,110,97,116,105,111,110,0, 
+114,111,109,112,116,0, 97,114,105,97,98,108,101,0, 42,0, 
+111,108,111,114,0, 111,108,111,114,0, 110,0, 47,0, 62,0, 111,0, 
+47,0, 99,116,105,111,110,0, 108,115,101,0, 111,114,0, 116,0, 
+114,101,101,110,0, 114,105,110,103,0, 104,105,108,101,0, 
+108,115,101,0, 102,0, 47,0, 102,0, 61,0, 61,0, 111,0, 102,0, 
+46,0, 61,0, 38,0, 46,0, 61,0, 61,0, 99,116,105,111,110,0, 
+117,116,116,111,110,0, 111,108,111,114,0, 111,0, 110,116,114,121,0, 
+105,101,108,100,0, 105,103,104,108,105,103,104,116,0, 110,116,0, 
+111,99,97,116,105,111,110,0, 122,101,0, 114,105,110,103,0, 
+105,116,108,101,0, 124,0, 
+};
+
+#define AG_TCV(x) ag_tcv[(x)]
+
+static const unsigned short ag_tcv[] = {
+   26,194,194,194,194,194,194,194,194,  9, 15,  9,  9,  9,194,194,194,194,
+  194,194,194,194,194,194,194,194, 26,194,194,194,194,194,  9,245, 54,205,
+  194,243,233,170,215,214,241,239,253,240,194,242,168,195,195,195,195,195,
+  195,195,196,196,228,218,209,217,211,229,219,167,167,167,167,167,167,197,
+  197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,
+  197,204, 74,203,232,197,194,167,167,167,167,167,167,197,197,197,197,197,
+  197,197,197,197,197,197,197,197,197,197,197,197,197,197,197,207,210,206,
+  244,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,
+  194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,
+  194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,
+  194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,
+  194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,
+  194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,
+  194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,194,
+  194,194,194,194
+};
+
+#ifndef SYNTAX_ERROR
+#define SYNTAX_ERROR fprintf(stderr,"%s, line %d, column %d\n", \
+  (PCB).error_message, (PCB).line, (PCB).column)
+#endif
+
+#ifndef FIRST_LINE
+#define FIRST_LINE 1
+#endif
+
+#ifndef FIRST_COLUMN
+#define FIRST_COLUMN 1
+#endif
+
+#ifndef PARSER_STACK_OVERFLOW
+#define PARSER_STACK_OVERFLOW {fprintf(stderr, \
+   "\nParser stack overflow, line %d, column %d\n",\
+   (PCB).line, (PCB).column);}
+#endif
+
+#ifndef REDUCTION_TOKEN_ERROR
+#define REDUCTION_TOKEN_ERROR {fprintf(stderr, \
+    "\nReduction token error, line %d, column %d\n", \
+    (PCB).line, (PCB).column);}
+#endif
+
+
+#ifndef INPUT_CODE
+#define INPUT_CODE(T) (T)
+#endif
+
+typedef enum
+  {ag_accept_key, ag_set_key, ag_jmp_key, ag_end_key, ag_no_match_key,
+   ag_cf_accept_key, ag_cf_set_key, ag_cf_end_key} key_words;
+
+static void ag_get_key_word(int ag_k) {
+  int ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
+  const  unsigned char *ag_p;
+  int ag_ch;
+  while (1) {
+    switch (ag_key_act[ag_k]) {
+    case ag_cf_end_key: {
+      const  unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
+      do {
+        if ((ag_ch = *sp++) == 0) {
+          int ag_k1 = ag_key_parm[ag_k];
+          int ag_k2 = ag_key_pt[ag_k1];
+          if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) goto ag_fail;
+          (PCB).token_number = (dsl-2_token_type) ag_key_pt[ag_k1 + 1];
+          return;
+        }
+      } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
+      goto ag_fail;
+    }
+    case ag_end_key: {
+      const  unsigned char *sp = ag_key_ends + ag_key_jmp[ag_k];
+      do {
+        if ((ag_ch = *sp++) == 0) {
+          (PCB).token_number = (dsl-2_token_type) ag_key_parm[ag_k];
+          return;
+        }
+      } while (CONVERT_CASE(*(PCB).la_ptr++) == ag_ch);
+    }
+    case ag_no_match_key:
+ag_fail:
+      (PCB).la_ptr = (PCB).pointer + ag_save;
+      return;
+    case ag_cf_set_key: {
+      int ag_k1 = ag_key_parm[ag_k];
+      int ag_k2 = ag_key_pt[ag_k1];
+      ag_k = ag_key_jmp[ag_k];
+      if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)]) break;
+      ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
+      (PCB).token_number = (dsl-2_token_type) ag_key_pt[ag_k1+1];
+      break;
+    }
+    case ag_set_key:
+      ag_save = (int) ((PCB).la_ptr - (PCB).pointer);
+      (PCB).token_number = (dsl-2_token_type) ag_key_parm[ag_k];
+    case ag_jmp_key:
+      ag_k = ag_key_jmp[ag_k];
+      break;
+    case ag_accept_key:
+      (PCB).token_number = (dsl-2_token_type) ag_key_parm[ag_k];
+      return;
+    case ag_cf_accept_key: {
+      int ag_k1 = ag_key_parm[ag_k];
+      int ag_k2 = ag_key_pt[ag_k1];
+      if (ag_key_itt[ag_k2 + CONVERT_CASE(*(PCB).la_ptr)])
+        (PCB).la_ptr = (PCB).pointer + ag_save;
+      else (PCB).token_number = (dsl-2_token_type) ag_key_pt[ag_k1+1];
+      return;
+    }
+    }
+    ag_ch = CONVERT_CASE(*(PCB).la_ptr++);
+    ag_p = &ag_key_ch[ag_k];
+    if (ag_ch <= 255) while (*ag_p < ag_ch) ag_p++;
+    if (ag_ch > 255 || *ag_p != ag_ch) {
+      (PCB).la_ptr = (PCB).pointer + ag_save;
+      return;
+    }
+    ag_k = (int) (ag_p - ag_key_ch);
+  }
+}
+
+
+#ifndef AG_NEWLINE
+#define AG_NEWLINE 10
+#endif
+
+#ifndef AG_RETURN
+#define AG_RETURN 13
+#endif
+
+#ifndef AG_FORMFEED
+#define AG_FORMFEED 12
+#endif
+
+#ifndef AG_TABCHAR
+#define AG_TABCHAR 9
+#endif
+
+static void ag_track(void) {
+  int ag_k = (int) ((PCB).la_ptr - (PCB).pointer);
+  while (ag_k--) {
+    switch (*(PCB).pointer++) {
+    case AG_NEWLINE:
+      (PCB).column = 1, (PCB).line++;
+    case AG_RETURN:
+    case AG_FORMFEED:
+      break;
+    case AG_TABCHAR:
+      (PCB).column += (TAB_SPACING) - ((PCB).column - 1) % (TAB_SPACING);
+      break;
+    default:
+      (PCB).column++;
+    }
+  }
+}
+
+
+static void ag_prot(void) {
+  int ag_k;
+  ag_k = 128 - ++(PCB).btsx;
+  if (ag_k <= (PCB).ssx) {
+    (PCB).exit_flag = AG_STACK_ERROR_CODE;
+    PARSER_STACK_OVERFLOW;
+    return;
+  }
+  (PCB).bts[(PCB).btsx] = (PCB).sn;
+  (PCB).bts[ag_k] = (PCB).ssx;
+  (PCB).vs[ag_k] = (PCB).vs[(PCB).ssx];
+  (PCB).ss[ag_k] = (PCB).ss[(PCB).ssx];
+  (PCB).cs[ag_k] = (PCB).cs[(PCB).ssx];
+}
+
+static void ag_undo(void) {
+  if ((PCB).drt == -1) return;
+  while ((PCB).btsx) {
+    int ag_k = 128 - (PCB).btsx;
+    (PCB).sn = (PCB).bts[(PCB).btsx--];
+    (PCB).ssx = (PCB).bts[ag_k];
+    (PCB).vs[(PCB).ssx] = (PCB).vs[ag_k];
+    (PCB).ss[(PCB).ssx] = (PCB).ss[ag_k];
+    (PCB).cs[(PCB).ssx] = (PCB).cs[ag_k];
+  }
+  (PCB).token_number = (dsl-2_token_type) (PCB).drt;
+  (PCB).ssx = (PCB).dssx;
+  (PCB).sn = (PCB).dsn;
+  (PCB).drt = -1;
+}
+
+
+
+static const int ag_rtt[] = {
+   28, 29, 30,  0,153,156,154,157,  0
+};
+
+static const unsigned short ag_tstt[] = {
+227,226,225,207,26,16,15,13,9,0,1,10,11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210,
+  209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,15,13,12,9,0,
+  10,11,
+13,9,0,1,10,11,
+227,226,225,207,26,16,15,0,7,20,21,22,23,24,25,42,115,117,118,200,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210,
+  209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,15,9,0,18,19,
+197,167,13,9,0,1,10,11,198,199,
+197,167,13,9,0,1,10,11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,218,197,196,195,194,170,168,
+  167,74,13,9,0,1,10,11,198,199,
+262,261,260,259,258,257,256,255,254,253,252,251,250,249,245,244,243,242,241,
+  240,239,233,232,229,228,227,226,225,224,220,219,218,217,216,215,211,210,
+  209,207,206,205,197,196,195,194,170,168,167,74,54,16,15,13,9,0,1,10,11,
+  198,199,
+262,261,260,259,258,257,256,255,254,253,252,251,250,249,245,244,243,242,241,
+  240,239,233,232,229,228,227,226,225,224,220,219,218,217,216,215,213,211,
+  210,209,207,206,205,197,196,195,194,170,168,167,74,54,26,16,15,13,9,0,1,
+  10,11,198,199,
+197,167,0,8,223,
+197,167,0,8,223,
+253,245,244,243,242,241,240,239,233,232,229,228,218,197,196,195,194,170,168,
+  167,74,0,2,116,208,
+253,249,245,244,243,242,241,240,239,233,232,229,228,227,226,225,224,220,218,
+  216,215,206,197,196,195,194,170,168,167,74,54,16,15,0,7,88,89,200,
+227,226,225,207,16,15,0,7,21,22,23,42,115,117,118,200,
+26,0,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210,
+  209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,9,0,
+15,0,
+253,248,243,242,241,240,239,238,237,236,235,234,233,232,231,230,229,228,219,
+  218,217,215,214,212,211,210,209,207,206,205,204,197,196,195,168,167,26,
+  16,15,13,9,0,1,10,11,120,198,199,
+217,0,104,
+217,0,104,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,212,211,
+  210,209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,16,15,13,
+  9,0,1,10,11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,218,207,197,196,195,194,170,
+  168,167,74,0,2,39,40,42,208,
+16,15,0,7,200,
+253,249,245,244,243,242,241,240,239,233,232,229,228,227,226,225,224,220,218,
+  216,215,206,197,196,195,194,170,168,167,74,54,0,2,4,5,22,27,28,29,30,35,
+  47,53,79,80,84,90,91,92,93,95,96,97,99,100,101,102,103,110,111,115,117,
+  118,173,174,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209,
+  207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10,
+  11,198,199,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209,
+  207,206,205,197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,7,36,39,40,
+  41,42,43,47,53,83,85,86,104,108,200,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210,
+  209,207,206,205,204,203,197,196,195,194,170,168,167,76,74,68,67,66,65,
+  64,63,62,61,60,59,58,54,9,0,55,57,69,70,71,72,73,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210,
+  209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,15,9,0,50,52,
+262,257,256,255,254,253,252,251,250,248,245,244,243,242,241,240,239,238,237,
+  236,235,234,233,232,231,230,229,228,227,226,225,221,219,218,217,215,214,
+  212,211,210,209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,
+  26,16,15,13,9,0,1,10,11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,221,219,218,217,215,214,212,
+  211,210,209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,16,15,
+  13,9,0,1,10,11,198,199,
+215,13,9,0,1,10,11,198,199,
+207,13,9,0,1,10,11,198,199,
+204,0,31,
+215,13,9,0,1,10,11,198,199,
+215,0,49,
+207,0,42,
+197,167,13,9,0,1,10,11,198,199,
+205,0,36,
+215,0,49,
+262,257,256,255,254,252,251,250,206,16,15,0,7,41,175,177,178,179,180,182,
+  183,184,185,186,191,200,
+197,167,0,8,223,
+219,217,0,104,108,
+217,0,104,
+217,0,104,
+212,211,210,0,85,86,87,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,212,211,210,209,207,
+  206,197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,27,28,29,30,33,37,
+  39,40,42,47,53,81,82,201,202,208,
+207,0,39,40,42,
+220,0,102,110,
+213,206,16,15,0,7,88,89,200,
+206,16,15,0,7,88,89,200,
+206,0,41,
+253,245,244,243,242,241,240,239,233,232,229,228,218,217,215,207,205,197,196,
+  195,194,170,168,167,164,163,74,54,13,9,0,1,10,11,198,199,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,8,36,39,40,42,49,
+  53,104,109,151,152,153,154,156,157,160,161,162,165,202,223,246,247,
+219,204,0,31,108,
+227,226,225,218,207,206,205,26,16,15,0,36,105,106,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210,
+  209,207,206,205,204,203,197,196,195,194,168,167,76,74,68,67,66,65,64,63,
+  62,61,60,59,58,54,9,0,57,69,70,71,72,73,171,
+196,195,168,0,
+195,168,0,
+196,195,168,167,0,78,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209,
+  207,206,205,197,196,195,194,170,168,167,74,54,16,15,13,9,0,1,10,11,198,
+  199,
+262,257,256,255,254,253,252,251,250,248,243,242,241,240,239,238,237,236,235,
+  234,233,232,231,230,229,228,227,226,225,219,218,217,214,212,211,210,209,
+  207,206,205,204,26,16,15,13,9,0,1,10,11,198,199,
+262,257,256,255,254,253,252,251,250,248,243,242,241,240,239,238,237,236,235,
+  234,233,232,231,230,229,228,227,226,225,219,218,217,214,212,211,210,209,
+  207,206,205,204,26,16,15,13,9,0,1,10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+215,0,49,155,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,152,156,157,202,223,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157,
+  160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157,
+  160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157,
+  160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157,
+  160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+243,242,241,0,145,146,148,
+240,239,0,142,143,
+219,204,0,31,108,
+238,212,0,87,140,
+237,236,235,234,211,209,205,0,36,83,86,134,135,137,138,
+237,236,211,209,0,83,86,137,138,
+235,234,0,134,135,
+233,0,132,
+232,0,130,
+210,0,85,
+231,0,127,
+230,229,0,122,125,
+227,226,225,218,207,206,26,16,15,0,105,106,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209,
+  207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10,
+  11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209,
+  207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10,
+  11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209,
+  207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10,
+  11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,211,210,209,
+  207,206,205,197,196,195,194,170,168,167,164,163,74,54,16,15,13,9,0,1,10,
+  11,198,199,
+204,0,31,
+262,257,256,255,254,253,252,251,250,248,245,244,243,242,241,240,239,238,237,
+  236,235,234,233,232,231,230,229,228,227,226,225,221,220,219,218,217,215,
+  214,213,212,211,210,209,207,206,205,204,203,197,196,195,194,170,168,167,
+  74,54,26,16,15,13,9,0,1,10,11,198,199,
+195,168,0,
+196,195,168,167,0,77,78,
+195,168,0,
+195,168,0,
+215,0,47,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,13,9,0,1,10,11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,32,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,27,28,29,30,47,53,201,202,208,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+207,13,9,0,1,10,11,198,199,
+207,0,42,
+261,260,207,206,16,15,0,7,39,40,41,42,189,190,200,
+207,13,9,0,1,10,11,198,199,
+207,0,42,
+261,260,259,258,206,16,15,0,7,41,187,188,189,190,200,
+217,13,9,0,1,10,11,198,199,
+217,0,104,
+217,13,9,0,1,10,11,198,199,
+217,0,104,
+256,13,9,0,1,10,11,198,199,
+256,0,177,185,
+256,13,9,0,1,10,11,198,199,
+256,0,177,185,
+217,13,9,0,1,10,11,198,199,
+217,0,104,
+16,15,0,7,200,
+217,13,9,0,1,10,11,198,199,
+217,0,104,
+222,0,112,
+217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,8,36,39,40,42,49,
+  53,104,109,151,152,153,154,156,157,160,161,162,165,202,223,246,247,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,217,215,207,205,197,196,
+  195,194,170,168,167,164,163,74,54,13,9,0,1,10,11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,27,28,29,30,35,47,53,80,201,202,208,
+204,0,31,
+205,0,36,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+212,211,210,209,206,16,15,0,83,
+253,249,245,244,243,242,241,240,239,233,232,229,228,227,226,225,224,220,218,
+  216,215,197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,7,22,27,28,29,
+  30,35,47,53,79,80,84,93,95,96,97,99,100,101,102,103,110,111,115,117,118,
+  173,174,200,201,202,208,
+213,0,94,
+253,249,245,244,243,242,241,240,239,233,232,229,228,227,226,225,224,220,218,
+  216,215,197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,7,22,27,28,29,
+  30,35,47,53,79,80,84,93,95,96,97,99,100,101,102,103,110,111,115,117,118,
+  173,174,200,201,202,208,
+214,205,0,36,48,
+219,204,0,31,108,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,159,
+215,0,49,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,151,152,156,157,202,223,
+227,226,225,207,206,26,16,15,13,9,0,1,10,11,198,199,
+170,0,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+237,236,235,234,214,211,209,205,0,36,48,83,86,134,135,137,138,
+214,0,48,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,142,143,144,147,149,150,151,152,153,154,156,
+  157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,142,143,144,147,149,150,151,152,153,154,156,
+  157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,142,143,144,149,150,151,152,153,154,156,157,
+  160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,141,142,143,144,149,150,151,152,153,154,156,
+  157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,141,142,143,144,149,150,151,152,153,154,156,
+  157,160,161,162,165,202,223,246,247,
+217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,8,36,39,40,42,49,
+  53,104,109,151,152,153,154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,139,141,142,143,144,149,150,151,152,153,154,
+  156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,139,141,142,143,144,149,150,151,152,153,154,
+  156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+217,215,207,197,167,54,0,4,8,39,40,42,49,53,104,107,151,152,156,157,202,223,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,136,139,141,142,143,144,149,150,151,152,153,
+  154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,136,139,141,142,143,144,149,150,151,152,153,
+  154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,136,139,141,142,143,144,149,150,151,152,153,
+  154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,109,136,139,141,142,143,144,149,150,151,152,153,
+  154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,107,109,133,136,139,141,142,143,144,149,150,151,
+  152,153,154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,107,109,133,136,139,141,142,143,144,149,150,151,
+  152,153,154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,107,109,131,133,136,139,141,142,143,144,149,150,
+  151,152,153,154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,107,109,129,131,133,136,139,141,142,143,144,149,
+  150,151,152,153,154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,107,109,128,129,131,133,136,139,141,142,143,144,
+  149,150,151,152,153,154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,107,109,126,128,129,131,133,136,139,141,142,143,
+  144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,104,107,109,124,126,128,129,131,133,136,139,141,142,
+  143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,39,40,42,43,45,46,47,53,201,202,208,
+196,195,168,167,0,78,
+253,245,244,243,242,241,240,239,233,232,229,228,219,218,217,215,214,211,210,
+  209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,15,9,0,50,52,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+214,0,48,
+204,0,31,
+214,0,48,
+16,15,0,7,200,
+217,13,9,0,1,10,11,198,199,
+217,0,104,
+217,13,9,0,1,10,11,198,199,
+217,0,104,
+16,15,0,7,200,
+217,0,104,
+217,0,104,
+217,13,9,0,1,10,11,198,199,
+217,0,104,
+217,13,9,0,1,10,11,198,199,
+217,0,104,
+16,15,0,7,200,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+16,15,0,7,200,
+16,15,0,7,200,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,47,53,176,192,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,13,9,0,1,10,11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+217,0,104,
+218,206,205,16,15,0,36,105,106,
+218,206,16,15,0,105,106,
+205,0,36,
+205,0,36,
+205,0,36,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,212,211,210,207,206,
+  197,196,195,194,170,168,167,74,54,16,15,0,2,4,5,27,28,29,30,33,37,39,40,
+  42,47,53,81,82,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,37,39,40,42,47,53,201,202,208,
+205,0,36,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+216,207,16,15,13,9,0,1,10,11,198,199,
+216,207,16,15,0,7,39,40,42,88,89,200,
+262,257,256,255,254,253,252,251,250,248,243,242,241,240,239,238,237,236,235,
+  234,233,232,231,230,229,228,227,226,225,219,218,217,214,212,211,210,209,
+  207,206,205,204,26,16,15,13,9,0,1,10,11,198,199,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+219,204,0,31,108,
+214,205,0,36,48,
+243,242,241,0,145,146,148,
+243,242,241,0,145,146,148,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+240,239,0,142,143,
+240,239,0,142,143,
+205,0,36,
+205,0,36,
+205,0,36,
+205,0,36,
+205,0,36,
+205,0,36,
+238,212,0,87,140,
+238,212,0,87,140,
+238,212,0,87,140,
+238,212,0,87,140,
+237,236,211,209,205,0,36,83,86,137,138,
+237,236,211,209,0,83,86,137,138,
+237,236,211,209,0,83,86,137,138,
+235,234,0,134,135,
+233,0,132,
+232,0,130,
+210,0,85,
+231,0,127,
+228,0,123,
+204,0,31,
+205,203,0,34,36,
+205,203,0,34,36,
+207,0,39,40,42,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,47,53,176,192,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,47,53,176,192,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,47,53,176,192,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,47,53,176,192,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,47,53,176,192,201,202,208,
+253,245,244,243,242,241,240,239,233,232,229,228,218,197,196,195,194,170,168,
+  167,74,0,2,208,
+253,0,181,
+253,0,181,
+253,0,181,
+204,0,31,
+205,16,15,0,7,36,200,
+221,207,205,0,36,113,114,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+212,211,210,206,16,15,0,
+212,211,210,206,205,16,15,0,36,
+216,0,96,97,
+205,203,0,34,36,
+248,0,158,
+248,214,0,48,158,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,39,40,42,43,46,47,53,201,202,208,
+262,257,256,255,254,253,252,251,250,248,245,244,243,242,241,240,239,237,236,
+  235,234,233,232,231,230,229,228,227,226,225,221,219,218,217,215,214,212,
+  211,210,209,207,206,205,204,203,197,196,195,194,170,168,167,74,54,26,16,
+  15,13,9,0,1,10,11,198,199,
+205,16,15,0,7,36,200,
+205,16,15,0,7,36,200,
+205,16,15,0,7,36,200,
+205,16,15,0,7,36,200,
+205,16,15,0,7,36,200,
+16,15,0,7,200,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,193,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,197,196,195,194,170,
+  168,167,74,54,0,2,4,5,47,53,192,201,202,208,
+207,13,9,0,1,10,11,198,199,
+207,0,39,40,42,
+218,206,16,15,0,105,106,
+207,0,39,40,42,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,13,9,0,1,
+  10,11,198,199,
+245,244,240,239,217,215,207,205,197,196,195,170,168,167,164,163,54,0,3,4,6,
+  8,36,39,40,42,49,53,98,104,107,109,121,124,126,128,129,131,133,136,139,
+  141,142,143,144,149,150,151,152,153,154,156,157,160,161,162,165,202,223,
+  246,247,
+253,245,244,243,242,241,240,239,233,232,229,228,218,215,207,197,196,195,194,
+  170,168,167,74,54,0,2,4,5,27,28,29,30,33,37,39,40,42,47,53,201,202,208,
+204,0,31,
+214,0,48,
+205,203,0,34,36,
+
+};
+
+
+static unsigned const char ag_astt[6785] = {
+  8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,1,3,9,7,3,1,1,9,5,3,3,1,1,1,1,1,8,1,1,7,1,0,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,8,1,7,1,1,5,5,1,1,7,1,1,1,1,3,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,7,1,
+  1,2,2,7,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,1,1,8,8,8,8,8,8,
+  8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,5,8,8,8,8,8,8,8,8,8,1,1,7,1,1,1,1,1,1,1,1,1,
+  1,5,3,3,3,3,1,1,1,1,1,3,7,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,5,3,7,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,10,10,10,10,10,5,5,5,1,1,7,1,1,1,2,1,3,1,7,1,1,7,1,10,10,
+  10,10,10,10,10,10,10,10,10,10,5,10,5,5,5,5,5,5,5,5,5,5,5,5,10,10,10,10,10,
+  10,10,10,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,
+  7,2,2,1,2,1,1,1,5,3,1,2,1,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,2,1,2,8,2,2,2,2,
+  2,2,2,2,2,7,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,
+  1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,2,1,2,1,
+  1,1,1,1,1,2,2,2,2,2,2,2,2,2,1,1,7,2,2,2,3,3,2,1,3,2,1,1,1,3,3,3,3,3,1,1,1,
+  1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,2,2,
+  2,2,2,2,2,2,2,2,2,3,2,7,3,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,3,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,3,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,1,1,7,1,1,1,1,3,5,1,1,7,1,1,
+  1,1,3,1,5,1,5,1,1,7,1,1,1,1,3,1,7,1,1,7,2,5,5,1,1,7,1,1,1,1,3,1,4,1,1,7,1,
+  1,1,1,1,1,1,1,1,1,1,1,7,3,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,7,1,1,1,1,4,1,1,1,
+  4,1,1,4,1,1,1,1,7,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,5,5,8,1,5,2,2,2,2,2,
+  2,2,2,2,5,5,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,1,1,7,2,1,2,1,5,3,1,8,5,
+  1,1,7,1,1,1,1,5,1,1,7,1,1,3,1,1,7,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,
+  1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,2,2,1,1,1,
+  2,1,1,1,1,1,1,5,1,1,5,5,5,1,5,5,1,5,5,5,7,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,1,1,7,1,1,1,
+  1,1,1,1,10,10,10,5,10,10,5,10,10,10,2,5,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,
+  1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,
+  7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,
+  1,7,1,1,1,1,3,1,7,1,2,1,1,1,2,2,2,7,2,2,2,1,2,1,1,1,2,2,2,1,1,1,1,1,1,1,1,
+  1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,
+  1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,
+  1,2,1,1,1,1,2,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,
+  1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,1,1,1,2,1,2,2,1,1,1,
+  2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,5,1,1,1,1,
+  1,5,1,1,1,1,5,1,1,1,1,5,1,1,1,1,1,1,1,1,1,7,1,1,1,1,1,1,1,1,1,1,1,5,1,1,1,
+  1,1,1,5,1,1,1,5,1,1,5,1,1,5,1,1,5,1,1,1,5,1,1,5,5,5,1,5,5,5,5,5,7,2,2,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,
+  1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,5,1,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,7,1,1,1,2,7,1,1,2,2,5,2,2,5,2,7,
+  1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,
+  2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
+  2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,1,1,1,
+  2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,1,1,7,1,
+  1,1,1,3,1,7,2,1,1,1,1,1,1,7,3,1,1,1,2,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,1,1,
+  1,1,1,1,7,3,1,1,1,1,1,1,5,1,1,7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,5,
+  1,1,7,1,1,1,1,3,1,7,1,1,5,1,1,7,1,1,1,1,3,1,7,1,1,5,1,1,7,1,1,1,1,3,1,7,1,
+  1,1,7,2,1,5,1,1,7,1,1,1,1,3,1,7,1,1,7,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,
+  2,1,2,1,2,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,2,2,2,7,1,2,2,1,2,1,1,
+  1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,
+  1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,
+  1,2,1,2,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,2,1,1,1,
+  2,2,2,1,1,1,1,1,1,1,1,5,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,
+  2,2,2,5,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,4,4,4,1,4,4,4,7,1,2,1,2,2,2,2,2,
+  2,2,2,2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,1,1,5,2,1,1,3,3,1,1,1,1,1,1,
+  1,3,1,1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,5,1,2,1,2,2,2,2,2,2,2,2,
+  2,2,2,1,1,1,1,1,2,1,2,2,2,2,2,2,2,2,2,2,1,1,5,2,1,1,3,3,1,1,1,1,1,1,1,3,1,
+  1,3,2,1,1,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,7,1,3,1,1,7,1,1,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,1,7,1,1,1,1,2,2,2,7,1,2,2,1,2,1,1,
+  1,1,1,2,2,1,1,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,7,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,7,1,3,1,1,1,1,1,1,1,7,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,
+  3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,2,1,1,
+  1,1,2,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,
+  1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,2,1,
+  1,1,1,2,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,
+  1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,
+  1,1,1,2,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,
+  1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,
+  2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
+  1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,2,1,2,2,1,2,1,2,1,1,1,2,1,1,2,1,2,2,1,
+  1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,
+  1,1,2,2,1,1,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,1,1,1,2,2,2,7,1,2,
+  2,1,2,1,1,1,1,1,1,2,2,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,
+  3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,1,1,7,1,1,1,1,3,1,1,1,2,2,2,7,1,2,2,1,2,1,1,1,1,1,1,2,2,1,1,1,1,1,1,
+  1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,
+  1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
+  1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,
+  1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,
+  1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,
+  1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
+  2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,
+  1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,
+  1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,
+  1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,2,2,1,1,2,
+  1,1,1,1,1,1,1,1,10,10,10,2,4,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,3,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,
+  2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,7,1,1,4,1,1,7,2,1,1,7,2,1,5,
+  1,1,7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,7,1,1,7,1,5,1,1,
+  7,1,1,1,1,3,1,7,1,5,1,1,7,1,1,1,1,3,1,7,1,1,1,7,2,1,1,1,1,1,1,1,1,1,2,2,2,
+  1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,
+  1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,
+  1,1,7,2,1,1,1,7,2,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,7,1,1,5,1,
+  5,5,7,1,2,2,1,5,5,5,7,2,2,1,4,1,1,4,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,5,
+  5,5,1,5,2,2,2,2,2,2,2,2,2,5,5,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,1,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,2,2,1,2,1,1,1,
+  1,1,1,4,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,2,1,1,1,2,2,2,
+  1,1,2,1,2,1,1,1,1,1,5,5,5,5,1,1,7,1,1,1,1,3,8,1,1,1,7,1,2,1,2,1,1,1,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,1,1,7,1,1,1,1,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,
+  2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,
+  1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
+  1,1,1,1,1,1,4,1,1,1,1,7,1,3,1,1,1,4,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,2,
+  2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,4,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,
+  1,4,1,1,4,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,4,1,1,1,1,1,1,1,7,1,1,1,1,1,
+  1,1,1,1,4,1,1,1,1,1,1,1,1,4,1,1,1,1,1,1,4,1,1,1,4,1,1,4,1,1,4,1,1,4,1,1,7,
+  1,1,5,1,1,1,7,3,1,1,1,7,2,1,1,7,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,7,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,
+  1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,
+  1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,1,1,1,
+  1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,7,1,1,1,7,1,1,7,1,1,7,1,
+  1,4,1,1,1,1,7,2,1,1,1,8,1,7,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,
+  1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,
+  1,1,1,1,4,4,4,4,4,4,7,4,4,4,4,1,4,4,7,1,1,7,1,1,1,1,7,2,1,1,7,1,1,1,7,2,1,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,2,2,2,1,
+  2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,2,7,
+  2,2,2,3,1,2,1,3,1,1,1,1,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,
+  1,1,1,3,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,1,1,1,1,1,7,2,
+  1,1,1,1,7,2,1,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,
+  1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,
+  1,1,1,2,1,2,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,
+  1,2,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,2,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,4,4,4,4,4,4,4,
+  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,7,1,1,1,1,1,1,1,1,1,5,1,1,7,1,1,1,1,3,1,7,2,1,2,1,5,5,5,7,2,2,1,
+  7,2,1,2,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,1,7,1,1,1,1,3,1,1,1,1,1,1,1,1,
+  2,2,2,1,2,2,2,2,2,7,1,1,1,2,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,2,2,1,1,1,2,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,
+  2,2,2,7,2,1,1,1,2,2,2,1,1,2,1,2,1,1,1,1,1,1,4,1,1,7,2,1,1,7,2,1
+};
+
+
+static const unsigned short ag_pstt[] = {
+3,3,3,3,3,3,3,1,2,0,2,2,1,2,3,
+5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,1,3,5,
+  1,6,1,
+1,459,461,459,459,1,
+5,6,7,8,15,4,9,3,14,0,14,14,14,14,15,13,12,11,10,9,
+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,16,16,16,16,16,16,17,16,4,16,17,
+460,460,1,2,5,2,2,1,2,489,
+460,460,1,2,6,2,2,1,2,488,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,1,2,7,2,2,1,2,487,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,8,2,2,1,
+  2,469,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,
+  9,2,2,1,2,462,
+138,138,10,19,18,
+138,138,11,20,18,
+32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,12,136,22,21,
+24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,98,24,24,24,
+  24,24,24,24,24,24,4,9,13,23,23,24,9,
+5,6,7,8,4,9,19,17,17,17,17,13,12,11,10,9,
+20,15,
+9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,11,
+12,17,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,139,140,140,140,139,460,
+  460,460,1,2,18,2,2,1,140,2,485,
+25,19,26,
+25,20,27,
+33,33,33,33,33,33,33,33,33,33,33,33,460,33,460,460,460,460,460,460,460,460,
+  460,460,460,460,33,33,33,33,33,33,33,33,460,460,460,1,2,21,2,2,1,2,470,
+32,32,32,32,32,32,32,32,32,32,32,32,32,8,32,32,32,32,32,32,32,32,22,137,133,
+  28,37,21,
+4,9,99,97,9,
+32,34,32,32,32,32,32,32,32,32,32,32,32,5,6,7,39,33,32,36,51,53,32,32,32,32,
+  32,32,32,32,57,24,128,35,35,52,35,45,44,46,40,30,29,52,48,47,52,51,53,
+  52,51,49,41,52,52,52,50,50,37,43,12,11,10,42,38,32,31,21,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,25,
+  2,2,1,2,479,
+25,54,8,138,138,57,26,57,191,201,28,37,55,29,56,58,57,57,199,200,31,18,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,27,77,79,77,191,71,
+  201,28,37,76,29,89,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,73,
+  72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+32,32,32,32,32,32,32,32,32,32,32,32,91,32,25,51,92,90,93,8,95,63,32,32,32,
+  32,32,32,32,32,57,4,9,28,44,43,42,39,41,40,28,36,37,94,30,29,41,41,41,
+  41,41,9,32,31,21,
+59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,59,
+  59,59,59,59,59,59,59,97,96,71,70,69,68,67,66,65,64,63,62,61,56,59,29,58,
+  60,60,60,99,98,60,
+53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,50,53,53,53,53,53,53,53,53,
+  53,53,53,53,53,53,53,53,53,53,53,30,52,100,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,1,2,31,2,2,1,2,464,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,1,2,32,2,2,1,2,463,
+460,1,2,33,2,2,1,2,482,
+460,1,2,34,2,2,1,2,511,
+101,28,102,
+460,1,2,36,2,2,1,2,478,
+54,37,103,
+8,38,221,
+460,460,1,2,39,2,2,1,2,486,
+63,93,104,
+54,41,105,
+106,109,120,112,114,116,118,123,95,4,9,42,222,220,124,122,119,117,115,113,
+  111,108,121,110,107,9,
+138,138,43,125,18,
+91,25,24,127,126,
+25,23,128,
+25,25,129,
+130,92,90,47,133,132,131,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,83,83,83,137,8,83,32,32,32,32,32,
+  32,32,32,57,83,83,48,128,134,134,134,23,24,25,135,135,35,28,37,30,29,
+  136,137,32,31,21,
+8,49,113,28,37,
+33,121,120,37,
+139,98,4,9,51,138,138,139,9,
+98,4,9,52,140,140,101,9,
+95,53,103,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,1,2,54,2,2,1,2,477,
+25,54,8,138,138,57,55,57,191,201,28,37,55,29,56,141,57,57,199,200,31,18,
+25,54,8,63,138,215,215,59,213,138,209,209,57,56,202,142,202,191,71,201,28,
+  37,76,29,56,202,142,142,202,70,199,200,62,61,60,209,31,18,65,64,
+91,101,192,143,144,
+123,123,123,146,123,123,63,123,123,123,58,145,135,135,
+147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,147,
+  147,147,147,147,147,147,147,147,147,147,147,147,97,96,71,70,69,68,67,66,
+  65,64,63,62,61,147,147,59,147,147,147,99,98,147,147,
+216,216,216,206,
+214,214,205,
+210,210,210,212,204,210,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,63,2,2,1,2,
+  467,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,1,2,64,2,2,1,2,509,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,1,2,65,2,2,1,2,508,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,66,
+  2,2,1,2,507,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,67,
+  2,2,1,2,506,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,68,
+  2,2,1,2,502,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,69,
+  2,2,1,2,501,
+54,70,148,189,
+25,54,8,138,138,57,71,186,191,201,28,37,55,29,56,186,199,200,31,18,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,72,182,142,182,191,
+  71,201,28,37,76,29,56,182,75,74,182,73,72,142,142,182,70,199,200,62,61,
+  60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,73,181,142,181,191,
+  71,201,28,37,76,29,56,181,75,74,181,73,72,142,142,181,70,199,200,62,61,
+  60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,74,180,142,180,191,
+  71,201,28,37,76,29,56,180,75,74,180,73,72,142,142,180,70,199,200,62,61,
+  60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,75,179,142,179,191,
+  71,201,28,37,76,29,56,179,75,74,179,73,72,142,142,179,70,199,200,62,61,
+  60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,76,77,79,77,191,71,
+  201,28,37,76,29,150,56,149,77,88,87,86,85,84,83,82,80,78,77,75,74,77,73,
+  72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+151,153,155,170,156,154,152,
+68,69,167,158,157,
+91,101,192,143,159,
+161,130,158,160,162,
+163,165,169,171,92,93,63,81,145,168,167,172,170,166,164,
+163,165,92,93,153,176,175,174,173,
+169,171,151,178,177,
+179,149,180,
+181,147,182,
+90,145,183,
+184,143,185,
+186,188,141,189,187,
+123,123,123,146,123,123,123,123,123,89,134,134,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,90,
+  2,2,1,2,472,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,91,
+  2,2,1,2,481,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,92,
+  2,2,1,2,473,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,93,
+  2,2,1,2,471,
+101,38,190,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,1,2,95,2,2,1,2,468,
+77,77,96,
+191,191,191,212,97,191,191,
+79,79,75,
+78,78,74,
+51,100,192,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,1,2,101,2,2,1,2,466,
+26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,102,
+  193,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,103,77,79,77,191,
+  71,201,28,37,76,29,194,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,104,
+  128,195,195,195,23,24,25,30,29,32,31,21,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,105,77,79,77,191,
+  71,201,28,37,76,29,196,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+460,1,2,106,2,2,1,2,524,
+8,107,238,
+198,200,8,95,4,9,108,239,197,28,202,37,201,199,9,
+460,1,2,109,2,2,1,2,519,
+8,110,232,
+198,200,205,207,95,4,9,111,233,209,208,206,204,203,9,
+460,1,2,112,2,2,1,2,517,
+25,113,210,
+460,1,2,114,2,2,1,2,516,
+25,115,211,
+460,1,2,116,2,2,1,2,514,
+120,117,212,121,
+460,1,2,118,2,2,1,2,513,
+120,119,213,121,
+460,1,2,120,2,2,1,2,518,
+25,121,214,
+4,9,122,224,9,
+460,1,2,123,2,2,1,2,512,
+25,124,215,
+216,125,217,
+25,54,8,63,138,215,215,59,213,138,209,209,57,126,218,142,218,191,71,201,28,
+  37,76,29,56,218,142,142,218,70,199,200,62,61,60,209,31,18,65,64,
+25,54,8,138,138,57,127,57,191,201,28,37,55,29,56,219,57,57,199,200,31,18,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,128,77,79,77,191,
+  71,201,28,37,76,29,220,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,129,
+  128,134,134,134,23,24,25,221,221,35,28,37,30,29,32,31,21,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,1,2,130,2,2,1,2,474,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,131,
+  128,134,134,134,23,24,25,222,222,35,28,37,30,29,32,31,21,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,132,
+  128,134,134,134,23,24,25,223,223,35,28,37,30,29,32,31,21,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,133,
+  128,35,35,35,23,24,25,40,30,29,224,32,31,21,
+101,34,102,
+63,94,225,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,84,
+  128,134,134,134,23,24,25,226,226,35,28,37,30,29,32,31,21,
+90,90,90,93,85,85,85,137,227,
+32,34,32,32,32,32,32,32,32,32,32,32,32,5,6,7,39,33,32,36,51,32,32,32,32,32,
+  32,32,32,57,4,9,99,128,35,35,97,106,35,45,44,46,40,30,29,106,48,47,106,
+  109,49,41,106,106,106,50,50,37,43,12,11,10,42,38,9,32,31,21,
+228,102,229,
+32,34,32,32,32,32,32,32,32,32,32,32,32,5,6,7,39,33,32,36,51,32,32,32,32,32,
+  32,32,32,57,4,9,99,128,35,35,97,105,35,45,44,46,40,30,29,105,48,47,105,
+  110,49,41,105,105,105,50,50,37,43,12,11,10,42,38,9,32,31,21,
+230,63,141,145,203,
+91,101,142,143,159,
+196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,196,
+  196,196,196,196,196,143,231,
+54,144,232,
+25,54,8,138,138,57,145,233,191,201,28,37,55,29,56,233,233,199,200,31,18,
+460,460,460,460,460,460,460,460,1,2,146,2,2,1,2,480,
+217,147,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,148,
+  128,134,134,134,23,24,25,234,234,35,28,37,30,29,32,31,21,
+163,165,169,171,230,92,93,63,149,145,203,168,167,172,170,166,164,
+230,150,188,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,151,
+  2,2,1,2,505,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,152,177,142,177,
+  191,71,201,28,37,76,29,56,177,75,74,177,176,73,72,142,142,177,70,199,
+  200,62,61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,153,
+  2,2,1,2,504,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,154,177,142,177,
+  191,71,201,28,37,76,29,56,177,75,74,177,175,73,72,142,142,177,70,199,
+  200,62,61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,155,
+  2,2,1,2,503,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,156,174,142,174,
+  191,71,201,28,37,76,29,56,174,75,74,174,73,72,142,142,174,70,199,200,62,
+  61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,157,235,142,235,
+  191,71,201,28,37,76,29,56,235,235,75,74,235,73,72,142,142,235,70,199,
+  200,62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,158,236,142,236,
+  191,71,201,28,37,76,29,56,236,236,75,74,236,73,72,142,142,236,70,199,
+  200,62,61,60,209,31,18,65,64,
+25,54,8,63,138,215,215,59,213,138,209,209,57,159,185,142,185,191,71,201,28,
+  37,237,29,56,185,142,142,185,70,199,200,62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,160,77,142,77,191,
+  71,201,28,37,76,29,56,77,238,77,75,74,77,73,72,142,142,77,70,199,200,62,
+  61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,161,
+  2,2,1,2,500,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,162,77,142,77,191,
+  71,201,28,37,76,29,56,77,239,77,75,74,77,73,72,142,142,77,70,199,200,62,
+  61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,163,
+  2,2,1,2,499,
+25,54,8,138,138,57,164,57,191,201,28,37,55,29,56,240,57,57,199,200,31,18,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,165,
+  2,2,1,2,498,
+25,54,8,138,138,57,166,57,191,201,28,37,55,29,56,241,57,57,199,200,31,18,
+25,54,8,138,138,57,167,57,191,201,28,37,55,29,56,242,57,57,199,200,31,18,
+25,54,8,138,138,57,168,57,191,201,28,37,55,29,56,243,57,57,199,200,31,18,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,169,
+  2,2,1,2,497,
+25,54,8,138,138,57,170,57,191,201,28,37,55,29,56,244,57,57,199,200,31,18,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,171,
+  2,2,1,2,496,
+25,54,8,138,138,57,172,57,191,201,28,37,55,29,56,245,57,57,199,200,31,18,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,173,77,142,77,191,
+  71,201,28,37,76,29,56,77,246,78,77,75,74,77,73,72,142,142,77,70,199,200,
+  62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,174,77,142,77,191,
+  71,201,28,37,76,29,56,77,247,78,77,75,74,77,73,72,142,142,77,70,199,200,
+  62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,175,77,142,77,191,
+  71,201,28,37,76,29,56,77,248,78,77,75,74,77,73,72,142,142,77,70,199,200,
+  62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,176,77,142,77,191,
+  71,201,28,37,76,29,56,77,249,78,77,75,74,77,73,72,142,142,77,70,199,200,
+  62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,177,77,79,77,191,
+  71,201,28,37,76,29,56,250,77,251,80,78,77,75,74,77,73,72,79,79,77,70,
+  199,200,62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,178,77,79,77,191,
+  71,201,28,37,76,29,56,250,77,252,80,78,77,75,74,77,73,72,79,79,77,70,
+  199,200,62,61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,179,
+  2,2,1,2,495,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,180,77,79,77,191,
+  71,201,28,37,76,29,56,81,77,253,82,80,78,77,75,74,77,73,72,79,79,77,70,
+  199,200,62,61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,181,
+  2,2,1,2,494,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,182,77,79,77,191,
+  71,201,28,37,76,29,56,81,77,254,83,82,80,78,77,75,74,77,73,72,79,79,77,
+  70,199,200,62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,183,77,79,77,191,
+  71,201,28,37,76,29,56,81,77,255,84,83,82,80,78,77,75,74,77,73,72,79,79,
+  77,70,199,200,62,61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,184,
+  2,2,1,2,493,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,185,77,79,77,191,
+  71,201,28,37,76,29,56,81,77,256,85,84,83,82,80,78,77,75,74,77,73,72,79,
+  79,77,70,199,200,62,61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,186,
+  2,2,1,2,492,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,187,77,79,77,191,
+  71,201,28,37,76,29,56,81,77,257,86,85,84,83,82,80,78,77,75,74,77,73,72,
+  79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,188,
+  2,2,1,2,491,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,189,77,79,77,191,
+  71,201,28,37,76,29,258,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,190,
+  44,43,42,260,28,37,259,260,260,30,29,32,31,21,
+82,82,82,212,80,82,
+53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,54,55,53,53,53,53,53,53,53,53,
+  53,53,53,53,53,53,53,53,53,53,53,192,52,100,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,193,
+  128,134,134,134,23,24,25,261,261,35,28,37,30,29,32,31,21,
+230,194,262,
+101,29,102,
+230,196,112,
+4,9,197,242,9,
+460,1,2,198,2,2,1,2,523,
+25,199,263,
+460,1,2,200,2,2,1,2,522,
+25,201,264,
+4,9,202,230,9,
+25,203,265,
+25,204,266,
+460,1,2,205,2,2,1,2,521,
+25,206,267,
+460,1,2,207,2,2,1,2,520,
+25,208,268,
+4,9,209,229,9,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,210,77,79,77,191,
+  71,201,28,37,76,29,269,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,211,77,79,77,191,
+  71,201,28,37,76,29,270,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+4,9,212,226,9,
+4,9,213,225,9,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,214,77,79,77,191,
+  71,201,28,37,76,29,271,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,215,
+  272,272,272,30,29,273,272,32,31,21,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,1,2,216,2,2,1,2,484,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,217,
+  128,134,134,134,23,24,25,274,274,35,28,37,30,29,32,31,21,
+25,218,275,
+146,123,63,123,123,219,145,126,126,
+146,123,123,123,220,125,125,
+63,122,225,
+63,89,225,
+63,88,225,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,83,83,83,8,83,32,32,32,32,32,32,
+  32,32,57,83,83,224,128,134,134,134,23,24,25,135,135,35,28,37,30,29,136,
+  276,32,31,21,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,225,
+  128,134,134,134,23,24,25,31,35,28,37,30,29,32,31,21,
+63,95,225,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,227,
+  128,134,134,134,23,24,25,277,277,35,28,37,30,29,32,31,21,
+460,460,460,460,1,2,228,2,2,1,2,475,
+278,8,4,9,229,23,107,28,37,23,278,9,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,1,2,230,2,2,1,2,476,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,231,
+  128,134,134,134,23,24,25,279,279,35,28,37,30,29,32,31,21,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,232,77,79,77,191,
+  71,201,28,37,76,29,280,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+91,101,193,143,144,
+230,63,234,225,190,
+151,153,155,172,156,154,152,
+151,153,155,171,156,154,152,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,237,77,79,77,191,
+  71,201,28,37,76,29,281,56,149,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+68,69,169,158,157,
+68,69,168,158,157,
+63,166,145,
+63,165,145,
+63,164,145,
+63,163,145,
+63,157,145,
+63,156,145,
+161,130,162,160,162,
+161,130,161,160,162,
+161,130,160,160,162,
+161,130,159,160,162,
+163,165,92,93,63,250,145,168,167,166,164,
+163,165,92,93,155,176,175,174,173,
+163,165,92,93,154,176,175,174,173,
+169,171,152,178,177,
+179,150,180,
+181,148,182,
+90,146,183,
+184,144,185,
+282,258,283,
+101,48,190,
+63,285,260,45,284,
+63,285,261,27,225,
+8,262,129,28,37,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,263,
+  272,272,272,30,29,286,272,32,31,21,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,264,
+  272,272,272,30,29,287,272,32,31,21,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,265,
+  272,272,272,30,29,288,272,32,31,21,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,266,
+  272,272,272,30,29,289,272,32,31,21,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,267,
+  272,272,272,30,29,290,272,32,31,21,
+32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,268,291,21,
+292,269,293,
+292,270,294,
+292,271,295,
+101,243,296,
+63,4,9,273,223,297,9,
+298,299,63,274,225,299,299,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,275,77,79,77,191,
+  71,201,28,37,76,29,300,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+92,92,92,87,87,87,276,
+91,91,91,86,63,86,86,277,225,
+36,278,301,41,
+63,285,279,197,225,
+302,280,303,
+302,230,281,188,303,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,282,
+  2,2,1,2,490,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,283,77,79,77,191,
+  71,201,28,37,76,29,142,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,284,
+  44,43,42,47,28,37,259,47,30,29,32,31,21,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,
+  460,460,1,2,285,2,2,1,2,465,
+63,4,9,286,241,297,9,
+63,4,9,287,240,297,9,
+63,4,9,288,237,297,9,
+63,4,9,289,236,297,9,
+63,4,9,290,235,297,9,
+4,9,291,234,9,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,292,
+  2,2,1,2,515,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,293,77,79,77,191,
+  71,201,28,37,76,29,228,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,294,77,79,77,191,
+  71,201,28,37,76,29,227,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,295,77,79,77,191,
+  71,201,28,37,76,29,231,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,
+  248,248,248,248,248,296,304,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,32,32,32,32,32,32,32,32,57,297,
+  305,305,305,30,29,305,32,31,21,
+460,1,2,298,2,2,1,2,483,
+8,299,132,28,37,
+146,123,123,123,300,127,127,
+8,301,111,28,37,
+460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,460,1,2,302,
+  2,2,1,2,510,
+66,67,68,69,25,54,8,63,138,215,215,59,213,138,209,209,57,303,77,79,77,191,
+  71,201,28,37,76,29,306,56,81,77,88,87,86,85,84,83,82,80,78,77,75,74,77,
+  73,72,79,79,77,70,199,200,62,61,60,209,31,18,65,64,
+32,32,32,32,32,32,32,32,32,32,32,32,32,51,8,32,32,32,32,32,32,32,32,57,304,
+  128,134,134,134,23,24,25,307,307,35,28,37,30,29,32,31,21,
+101,244,296,
+230,306,195,
+63,285,307,249,225,
+
+};
+
+
+static const unsigned short ag_sbt[] = {
+     0,  15,  56,  62,  82, 121, 131, 141, 170, 230, 292, 297, 302, 327,
+   365, 381, 383, 419, 421, 469, 472, 475, 520, 548, 553, 621, 664, 686,
+   747, 802, 857, 896, 962,1008,1017,1026,1029,1038,1041,1044,1054,1057,
+  1060,1086,1091,1096,1099,1102,1109,1160,1165,1169,1178,1186,1189,1225,
+  1247,1287,1292,1306,1360,1364,1367,1373,1414,1466,1518,1543,1568,1593,
+  1618,1622,1642,1691,1740,1789,1838,1899,1906,1911,1916,1921,1936,1945,
+  1950,1953,1956,1959,1962,1967,1979,2022,2065,2108,2151,2154,2222,2225,
+  2232,2235,2238,2241,2273,2299,2360,2396,2457,2466,2469,2484,2493,2496,
+  2511,2520,2523,2532,2535,2544,2548,2557,2561,2570,2573,2578,2587,2590,
+  2593,2633,2655,2716,2758,2794,2836,2878,2916,2919,2922,2964,2973,3041,
+  3044,3112,3117,3122,3148,3151,3172,3188,3190,3232,3249,3252,3277,3327,
+  3352,3402,3427,3476,3526,3576,3616,3667,3692,3743,3768,3790,3815,3837,
+  3859,3881,3906,3928,3953,3975,4027,4079,4131,4183,4237,4291,4316,4371,
+  4396,4452,4509,4534,4592,4617,4676,4701,4762,4801,4807,4846,4888,4891,
+  4894,4897,4902,4911,4914,4923,4926,4931,4934,4937,4946,4949,4958,4961,
+  4966,5027,5088,5093,5098,5159,5193,5225,5267,5270,5279,5286,5289,5292,
+  5295,5345,5386,5389,5431,5443,5455,5507,5549,5610,5615,5620,5627,5634,
+  5695,5700,5705,5708,5711,5714,5717,5720,5723,5728,5733,5738,5743,5754,
+  5763,5772,5777,5780,5783,5786,5789,5792,5795,5800,5805,5810,5844,5878,
+  5912,5946,5980,6004,6007,6010,6013,6016,6023,6030,6091,6098,6107,6111,
+  6116,6119,6124,6149,6210,6248,6313,6320,6327,6334,6341,6348,6353,6378,
+  6439,6500,6561,6587,6620,6629,6634,6641,6646,6671,6732,6774,6777,6780,
+  6785
+};
+
+
+static const unsigned short ag_sbe[] = {
+     9,  53,  58,  69, 118, 125, 135, 164, 224, 286, 294, 299, 323, 360,
+   371, 382, 418, 420, 462, 470, 473, 514, 542, 550, 584, 658, 670, 703,
+   780, 849, 893, 956,1002,1011,1020,1027,1032,1039,1042,1048,1055,1058,
+  1071,1088,1093,1097,1100,1105,1140,1161,1166,1173,1181,1187,1219,1231,
+  1260,1289,1302,1352,1363,1366,1371,1408,1460,1512,1537,1562,1587,1612,
+  1619,1628,1659,1708,1757,1806,1855,1902,1908,1913,1918,1928,1940,1947,
+  1951,1954,1957,1960,1964,1976,2016,2059,2102,2145,2152,2216,2224,2229,
+  2234,2237,2239,2267,2297,2316,2383,2413,2460,2467,2475,2487,2494,2503,
+  2514,2521,2526,2533,2538,2545,2551,2558,2564,2571,2575,2581,2588,2591,
+  2606,2639,2672,2740,2788,2818,2860,2901,2917,2920,2946,2971,3005,3042,
+  3076,3114,3119,3146,3149,3157,3182,3189,3214,3240,3250,3271,3294,3346,
+  3369,3421,3444,3493,3543,3589,3633,3686,3709,3762,3774,3809,3821,3843,
+  3865,3900,3912,3947,3959,3992,4044,4096,4148,4200,4254,4310,4333,4390,
+  4413,4469,4528,4551,4611,4634,4695,4718,4786,4805,4843,4870,4889,4892,
+  4895,4899,4905,4912,4917,4924,4928,4932,4935,4940,4947,4952,4959,4963,
+  4983,5044,5090,5095,5115,5182,5219,5249,5268,5275,5283,5287,5290,5293,
+  5325,5369,5387,5413,5437,5447,5501,5531,5566,5612,5617,5623,5630,5651,
+  5697,5702,5706,5709,5712,5715,5718,5721,5725,5730,5735,5740,5748,5758,
+  5767,5774,5778,5781,5784,5787,5790,5793,5797,5802,5806,5833,5867,5901,
+  5935,5969,6001,6005,6008,6011,6014,6019,6026,6047,6097,6105,6108,6113,
+  6117,6121,6143,6166,6234,6307,6316,6323,6330,6337,6344,6350,6372,6395,
+  6456,6517,6585,6610,6623,6630,6638,6642,6665,6688,6756,6775,6778,6782,6785
+};
+
+
+static const unsigned char ag_fl[] = {
+  2,1,1,2,1,2,2,1,1,2,0,1,3,1,1,1,1,2,0,1,2,1,1,1,1,1,0,5,1,3,1,3,1,2,1,
+  1,2,1,2,2,2,2,1,1,1,4,1,3,1,1,2,1,2,1,0,3,2,1,2,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,2,2,2,2,1,2,0,1,2,4,4,3,3,2,4,4,1,1,2,1,2,0,1,0,2,2,4,1,
+  3,3,4,1,3,3,6,4,2,1,1,1,1,1,1,2,1,3,0,1,4,4,6,1,5,0,1,6,3,5,5,1,2,1,2,
+  2,1,5,1,3,1,3,1,3,1,3,1,3,1,3,3,3,3,1,3,3,3,3,3,3,3,3,1,3,3,1,3,3,1,3,
+  3,3,1,1,2,2,2,2,1,1,3,2,1,3,2,3,1,1,3,1,7,0,5,1,1,1,1,2,3,1,1,1,1,1,1,
+  2,1,1,1,2,1,2,3,1,1,2,2,2,5,3,4,4,6,6,4,4,5,2,2,5,5,5,5,2,2,5,5,3,1,3,
+  1,1,1,0,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
+  1,1,1,1,2,0,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
+};
+
+static const unsigned short ag_ptt[] = {
+    0,  1,  1, 10, 11, 11, 11,200, 18, 18, 19, 19,200, 23, 23, 23, 24, 24,
+   25, 25, 20, 27, 27, 27, 27, 27, 32, 27, 35, 35, 33, 33,208,208, 37, 37,
+   39, 40, 40, 40, 40, 40, 43, 43, 43, 43, 45, 45, 46, 46,201, 47, 47, 50,
+   52, 50,202, 53, 53, 55, 55, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57,
+   57, 57, 69, 69, 69, 71, 72, 73, 70, 77, 77, 82, 82, 79, 79, 79, 79, 79,
+   84, 84, 84, 80, 81, 81, 88, 88, 89, 89, 92, 92, 92, 21, 90, 90, 90, 90,
+   91, 91, 91, 91, 96, 95, 93, 93, 93, 93, 93,103,103, 93, 99,106,106, 99,
+   99, 99, 28,102,114,114,100, 22, 22, 22,116,116,223,223,223, 98, 98,121,
+  121,124,124,126,126,128,128,129,129,131,131,131,131,131,133,133,133,133,
+  133,133,133,133,133,136,136,136,139,139,139,141,141,141,141,147,144,144,
+  144,144,144,109,109,109,109,109,109,109,155,153,107,107,151,151,159,151,
+  152,152,152,152,152,152,246,246,246,165,165,160,160, 78, 78,161,161,162,
+  162,247,171,171,101,173,173,173,173,173,173,173,173,173,173,177,183,183,
+  183,183,183,183,184,184,184,184,184,176,176,192,192,192,193,192,120, 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, 14, 14, 14, 14, 14, 14, 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, 38, 38,
+   38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
+   38, 44, 44, 44, 44, 44, 44, 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, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+   56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
+   56, 56, 75, 75,119,119,166,166,166,169,169,172,172,172,172,172,172,172,
+  172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,172,
+  172,172,172,172,172,172,172,172,198,198,199,199,  7,  5,  4, 34, 31, 36,
+   41, 42,  2, 83, 85, 86, 87, 94, 48, 49, 97,104,105,108,110,113,112,  8,
+  111,115,117,118,123,122,125,127,130,132,134,135,137,138,140,142,143,145,
+  146,148,149,150,  3,  6,158,174,175,178,179,181,180,182,185,186,187,188,
+  189,190,191
+};
+
+static const unsigned short  *ag_valid(int ag_k) {
+  const unsigned short  *ag_tp = &ag_tstt[ag_sbt[(PCB).sn+1]];
+  while (*--ag_tp != (unsigned short) ag_k) if (*ag_tp == 0) return NULL;
+  return ag_tp;
+}
+
+int dsl-2_change_reduction(dsl-2_token_type ag_k) {
+  if (!ag_valid(ag_k)) return 0;
+  (PCB).reduction_token = ag_k;
+  return 1;
+}
+
+static void ag_default(const  int *ag_tp) {
+  (PCB).ag_dsn = (PCB).sn;
+  (PCB).ag_dtl = ag_tp;
+  while (!ag_valid((dsl-2_token_type) *ag_tp)) ag_tp++;
+  (PCB).reduction_token = (dsl-2_token_type) *ag_tp;
+}
+
+
+
+static void ag_ra(void)
+{
+  switch(ag_rpx[(PCB).ag_ap]) {
+    case 1: ag_rp_1(V(0,(unsigned *))); break;
+    case 2: ag_rp_2(V(0,(unsigned *))); break;
+    case 3: ag_rp_3(V(0,(unsigned *))); break;
+    case 4: ag_rp_4(); break;
+    case 5: ag_rp_5(); break;
+    case 6: ag_rp_6(); break;
+    case 7: ag_rp_7(); break;
+    case 8: ag_rp_8(V(0,(int *))); break;
+    case 9: ag_rp_9(V(1,(int *))); break;
+    case 10: ag_rp_10(); break;
+    case 11: ag_rp_11(); break;
+    case 12: ag_rp_12(); break;
+    case 13: ag_rp_13(); break;
+    case 14: ag_rp_14(); break;
+    case 15: ag_rp_15(); break;
+    case 16: ag_rp_16(); break;
+    case 17: ag_rp_17(V(0,(int *))); break;
+    case 18: ag_rp_18(); break;
+    case 19: ag_rp_19(); break;
+    case 20: ag_rp_20(); break;
+    case 21: ag_rp_21(V(0,(int *))); break;
+    case 22: ag_rp_22(V(0,(int *))); break;
+    case 23: V(0,(int *)) = ag_rp_23(); break;
+    case 24: V(0,(int *)) = ag_rp_24(); break;
+    case 25: V(0,(int *)) = ag_rp_25(); break;
+    case 26: V(0,(int *)) = ag_rp_26(); break;
+    case 27: V(0,(int *)) = ag_rp_27(); break;
+    case 28: V(0,(int *)) = ag_rp_28(); break;
+    case 29: V(0,(int *)) = ag_rp_29(); break;
+    case 30: V(0,(int *)) = ag_rp_30(); break;
+    case 31: V(0,(int *)) = ag_rp_31(); break;
+    case 32: V(0,(int *)) = ag_rp_32(); break;
+    case 33: V(0,(int *)) = ag_rp_33(); break;
+    case 34: V(0,(int *)) = ag_rp_34(V(1,(int *))); break;
+    case 35: V(0,(int *)) = ag_rp_35(V(0,(int *)), V(1,(int *))); break;
+    case 36: V(0,(int *)) = ag_rp_36(V(0,(int *)), V(1,(int *))); break;
+    case 37: V(0,(int *)) = ag_rp_37(V(1,(long *))); break;
+    case 38: V(0,(long *)) = ag_rp_38(V(0,(long *)), V(1,(long *))); break;
+    case 39: ag_rp_39(); break;
+    case 40: ag_rp_40(); break;
+    case 41: ag_rp_41(V(0,(char * *))); break;
+    case 42: ag_rp_42(V(0,(char * *))); break;
+    case 43: ag_rp_43(V(0,(char * *))); break;
+    case 44: V(0,(char * *)) = ag_rp_44(); break;
+    case 45: V(0,(char * *)) = ag_rp_45(); break;
+    case 46: V(0,(char * *)) = ag_rp_46(V(0,(char * *))); break;
+    case 47: ag_rp_47(); break;
+    case 48: ag_rp_48(); break;
+    case 49: ag_rp_49(); break;
+    case 50: ag_rp_50(V(0,(int *))); break;
+    case 51: V(0,(int *)) = ag_rp_51(V(2,(int *))); break;
+    case 52: V(0,(int *)) = ag_rp_52(V(2,(int *))); break;
+    case 53: V(0,(int *)) = ag_rp_53(V(0,(int *)), V(4,(int *))); break;
+    case 54: V(0,(int *)) = ag_rp_54(V(2,(long *))); break;
+    case 55: V(0,(int *)) = ag_rp_55(V(0,(int *))); break;
+    case 56: ag_rp_56(V(0,(unsigned *))); break;
+    case 57: ag_rp_57(V(0,(unsigned *)), V(2,(long *))); break;
+    case 58: ag_rp_58(V(0,(unsigned *))); break;
+    case 59: ag_rp_59(V(0,(unsigned *)), V(2,(long *)), V(4,(long *))); break;
+    case 60: ag_default(&ag_rtt[0]); V(0,(unsigned *)) = ag_rp_60(); break;
+    case 61: ag_rp_61(V(2,(long *))); break;
+    case 62: ag_rp_62(); break;
+    case 63: ag_rp_63(V(1,(int *))); break;
+    case 64: ag_rp_64(V(3,(long *))); break;
+    case 65: ag_rp_65(); break;
+    case 66: V(0,(int *)) = ag_rp_66(); break;
+    case 67: V(0,(int *)) = ag_rp_67(V(0,(int *))); break;
+    case 68: ag_rp_68(V(0,(int *))); break;
+    case 69: ag_rp_69(V(1,(int *))); break;
+    case 70: ag_rp_70(V(1,(int *))); break;
+    case 71: V(0,(long *)) = ag_rp_71(V(0,(long *)), V(2,(long *)), V(4,(long *))); break;
+    case 72: V(0,(long *)) = ag_rp_72(V(0,(long *)), V(2,(long *))); break;
+    case 73: V(0,(long *)) = ag_rp_73(V(0,(long *)), V(2,(long *))); break;
+    case 74: V(0,(long *)) = ag_rp_74(V(0,(long *)), V(2,(long *))); break;
+    case 75: V(0,(long *)) = ag_rp_75(V(0,(long *)), V(2,(long *))); break;
+    case 76: V(0,(long *)) = ag_rp_76(V(0,(long *)), V(2,(long *))); break;
+    case 77: V(0,(long *)) = ag_rp_77(V(0,(long *)), V(2,(long *))); break;
+    case 78: V(0,(long *)) = ag_rp_78(V(0,(long *)), V(2,(long *))); break;
+    case 79: V(0,(long *)) = ag_rp_79(); break;
+    case 80: V(0,(long *)) = ag_rp_80(); break;
+    case 81: V(0,(long *)) = ag_rp_81(V(0,(long *)), V(2,(long *))); break;
+    case 82: V(0,(long *)) = ag_rp_82(V(0,(long *)), V(2,(long *))); break;
+    case 83: V(0,(long *)) = ag_rp_83(V(0,(long *)), V(2,(long *))); break;
+    case 84: V(0,(long *)) = ag_rp_84(V(0,(long *)), V(2,(long *))); break;
+    case 85: V(0,(long *)) = ag_rp_85(); break;
+    case 86: V(0,(long *)) = ag_rp_86(); break;
+    case 87: V(0,(long *)) = ag_rp_87(); break;
+    case 88: V(0,(long *)) = ag_rp_88(); break;
+    case 89: V(0,(long *)) = ag_rp_89(V(0,(long *)), V(2,(long *))); break;
+    case 90: V(0,(long *)) = ag_rp_90(V(0,(long *)), V(2,(long *))); break;
+    case 91: V(0,(long *)) = ag_rp_91(V(0,(long *)), V(2,(long *))); break;
+    case 92: V(0,(long *)) = ag_rp_92(V(0,(long *)), V(2,(long *))); break;
+    case 93: V(0,(long *)) = ag_rp_93(V(0,(long *)), V(2,(long *))); break;
+    case 94: V(0,(long *)) = ag_rp_94(V(0,(long *)), V(2,(long *))); break;
+    case 95: V(0,(long *)) = ag_rp_95(V(0,(long *)), V(2,(long *))); break;
+    case 96: V(0,(long *)) = ag_rp_96(V(0,(long *))); break;
+    case 97: V(0,(long *)) = ag_rp_97(V(1,(long *))); break;
+    case 98: V(0,(long *)) = ag_rp_98(V(1,(long *))); break;
+    case 99: V(0,(long *)) = ag_rp_99(V(1,(long *))); break;
+    case 100: V(0,(long *)) = ag_rp_100(V(1,(long *))); break;
+    case 101: V(0,(long *)) = ag_rp_101(V(2,(long *))); break;
+    case 102: V(0,(long *)) = ag_rp_102(); break;
+    case 103: V(0,(long *)) = ag_rp_103(V(1,(long *))); break;
+    case 104: V(0,(long *)) = ag_rp_104(V(0,(long *))); break;
+    case 105: ag_default(&ag_rtt[4]); V(0,(long *)) = ag_rp_105(); break;
+    case 106: ag_rp_106(); break;
+    case 107: ag_rp_107(V(3,(long *)), V(5,(long *))); break;
+    case 108: ag_rp_108(); break;
+    case 109: ag_rp_109(); break;
+    case 110: ag_rp_110(V(0,(long *))); break;
+    case 111: ag_rp_111(V(0,(long *))); break;
+    case 112: ag_rp_112(); break;
+    case 113: ag_rp_113(V(1,(long *))); break;
+    case 114: V(0,(long *)) = ag_rp_114(); break;
+    case 115: V(0,(long *)) = ag_rp_115(V(0,(long *)), V(1,(long *))); break;
+    case 116: V(0,(long *)) = ag_rp_116(V(0,(int *))); break;
+    case 117: V(0,(long *)) = ag_rp_117(); break;
+    case 118: V(0,(long *)) = ag_rp_118(V(0,(long *)), V(1,(int *))); break;
+    case 119: V(0,(long *)) = ag_rp_119(V(0,(int *))); break;
+    case 120: V(0,(long *)) = ag_rp_120(V(0,(long *)), V(1,(int *))); break;
+    case 121: V(0,(int *)) = ag_rp_121(V(1,(int *))); break;
+    case 122: ag_rp_122(V(0,(screen_descriptor * *))); break;
+    case 123: V(0,(screen_descriptor * *)) = ag_rp_123(); break;
+    case 124: V(0,(screen_descriptor * *)) = ag_rp_124(V(0,(screen_descriptor * *))); break;
+    case 125: V(0,(screen_descriptor * *)) = ag_rp_125(V(0,(screen_descriptor * *)), V(1,(int *))); break;
+    case 126: V(0,(screen_descriptor * *)) = ag_rp_126(V(0,(screen_descriptor * *)), V(2,(int *))); break;
+    case 127: V(0,(screen_descriptor * *)) = ag_rp_127(V(0,(screen_descriptor * *)), V(2,(int *))); break;
+    case 128: V(0,(screen_descriptor * *)) = ag_rp_128(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break;
+    case 129: V(0,(screen_descriptor * *)) = ag_rp_129(V(0,(screen_descriptor * *)), V(3,(long *)), V(5,(long *))); break;
+    case 130: V(0,(screen_descriptor * *)) = ag_rp_130(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break;
+    case 131: V(0,(screen_descriptor * *)) = ag_rp_131(V(0,(screen_descriptor * *)), V(1,(query_item * *))); break;
+    case 132: V(0,(int *)) = ag_rp_132(V(2,(long *)), V(4,(long *))); break;
+    case 133: V(0,(query_item * *)) = ag_rp_133(); break;
+    case 134: V(0,(query_item * *)) = ag_rp_134(V(0,(query_item * *))); break;
+    case 135: V(0,(query_item * *)) = ag_rp_135(V(0,(query_item * *))); break;
+    case 136: V(0,(query_item * *)) = ag_rp_136(V(0,(query_item * *))); break;
+    case 137: V(0,(query_item * *)) = ag_rp_137(V(0,(query_item * *))); break;
+    case 138: V(0,(query_item * *)) = ag_rp_138(); break;
+    case 139: V(0,(query_item * *)) = ag_rp_139(V(0,(query_item * *))); break;
+    case 140: V(0,(query_item * *)) = ag_rp_140(V(0,(query_item * *))); break;
+    case 141: V(0,(query_item * *)) = ag_rp_141(V(0,(query_item * *))); break;
+    case 142: ag_rp_142(); break;
+    case 143: ag_rp_143(); break;
+    case 144: ag_rp_144(); break;
+    case 145: ag_rp_145(); break;
+  }
+  (PCB).la_ptr = (PCB).pointer;
+}
+
+#define TOKEN_NAMES dsl-2_token_names
+const char *const dsl-2_token_names[263] = {
+  "script file",
+  "ws",
+  "literal",
+  "integer constant",
+  "string literal",
+  "paren string",
+  "character constant",
+  "eol",
+  "name",
+  "white",
+  "comment",
+  "comment head",
+  "\"*/\"",
+  "\"/*\"",
+  "",
+  "'\\n'",
+  "\"//\"",
+  "not eol",
+  "",
+  "",
+  "script file",
+  "execution block",
+  "declaration",
+  "",
+  "",
+  "",
+  "eof",
+  "word",
+  "integer variable",
+  "string variable",
+  "undeclared variable",
+  "'['",
+  "",
+  "parameter string",
+  "']'",
+  "string",
+  "'#'",
+  "param word",
+  "text char",
+  "action text",
+  "action text head",
+  "'}'",
+  "'{'",
+  "action word",
+  "",
+  "action parameter string",
+  "action param word",
+  "paren string chars",
+  "')'",
+  "'('",
+  "paren string char",
+  "not paren",
+  "",
+  "string chars",
+  "'\\\"'",
+  "string char",
+  "not double quote",
+  "escape sequence",
+  "\"\\\\a\"",
+  "\"\\\\b\"",
+  "\"\\\\f\"",
+  "\"\\\\n\"",
+  "\"\\\\r\"",
+  "\"\\\\t\"",
+  "\"\\\\v\"",
+  "\"\\\\\\\\\"",
+  "\"\\\\?\"",
+  "\"\\\\\\'\"",
+  "\"\\\\\\\"\"",
+  "octal escape",
+  "hex escape",
+  "one octal",
+  "two octal",
+  "three octal",
+  "'\\\\'",
+  "",
+  "\"\\\\x\"",
+  "hex number",
+  "hex digit",
+  "command",
+  "identifier",
+  "parameters",
+  "",
+  "'<'",
+  "piped command",
+  "'|'",
+  "'>'",
+  "\">>\"",
+  "",
+  "",
+  "command sequence",
+  "if sequence",
+  "",
+  "statement",
+  "\"else\"",
+  "if statement",
+  "if condition",
+  "\"if\"",
+  "conditional exp",
+  "assignment",
+  "for statement",
+  "screen description",
+  "while statement",
+  "",
+  "'='",
+  "';'",
+  "",
+  "string exp",
+  "'@'",
+  "primary exp",
+  "\"while\"",
+  "\"for\"",
+  "\"in\"",
+  "\"do\"",
+  "",
+  "\"action\"",
+  "literals",
+  "\"int\"",
+  "\"string\"",
+  "letter",
+  "digit",
+  "logical or exp",
+  "'\\?'",
+  "':'",
+  "logical and exp",
+  "\"||\"",
+  "inclusive or exp",
+  "\"&&\"",
+  "exclusive or exp",
+  "and exp",
+  "'^'",
+  "equality exp",
+  "'&'",
+  "relational exp",
+  "\"==\"",
+  "\"!=\"",
+  "shift exp",
+  "\"<=\"",
+  "\">=\"",
+  "additive exp",
+  "\"<<\"",
+  "multiplicative exp",
+  "'+'",
+  "'-'",
+  "unary exp",
+  "'*'",
+  "'/'",
+  "nonzero",
+  "'%'",
+  "'~'",
+  "'!'",
+  "string term",
+  "string element",
+  "numeric name",
+  "built_in name",
+  "built_in argument",
+  "string name",
+  "undefined name",
+  "\"..\"",
+  "",
+  "hex constant",
+  "octal constant",
+  "decimal constant",
+  "\"0x\"",
+  "\"0X\"",
+  "",
+  "",
+  "",
+  "'0'",
+  "",
+  "'\\''",
+  "char constant element",
+  "not single quote",
+  "screen items",
+  "\"screen\"",
+  "\"title\"",
+  "formula",
+  "color spec",
+  "\"entry\"",
+  "\"highlight\"",
+  "\"size\"",
+  "','",
+  "\"location\"",
+  "query line",
+  "button line",
+  "\"color\"",
+  "\"field\"",
+  "\"variable\"",
+  "\"default\"",
+  "\"prompt\"",
+  "\"explanation\"",
+  "\"button\"",
+  "formula element",
+  "",
+  "",
+  "",
+  "",
+  "",
+  "",
+  "",
+  "eol",
+  "paren string",
+  "string literal",
+  "']'",
+  "'['",
+  "'#'",
+  "'}'",
+  "'{'",
+  "literal",
+  "'<'",
+  "'|'",
+  "'>'",
+  "\">>\"",
+  "\"else\"",
+  "')'",
+  "'('",
+  "\"if\"",
+  "'='",
+  "';'",
+  "'@'",
+  "\"while\"",
+  "\"do\"",
+  "\"in\"",
+  "name",
+  "\"for\"",
+  "\"action\"",
+  "\"int\"",
+  "\"string\"",
+  "':'",
+  "'\\?'",
+  "\"||\"",
+  "\"&&\"",
+  "'^'",
+  "'&'",
+  "\"==\"",
+  "\"!=\"",
+  "\"<=\"",
+  "\">=\"",
+  "\"<<\"",
+  "'+'",
+  "'-'",
+  "'*'",
+  "'/'",
+  "'%'",
+  "'~'",
+  "'!'",
+  "integer constant",
+  "character constant",
+  "\"..\"",
+  "\"screen\"",
+  "\"title\"",
+  "\"entry\"",
+  "\"highlight\"",
+  "','",
+  "\"size\"",
+  "\"location\"",
+  "\"color\"",
+  "\"field\"",
+  "\"variable\"",
+  "\"default\"",
+  "\"prompt\"",
+  "\"explanation\"",
+  "\"button\"",
+
+};
+
+#ifndef MISSING_FORMAT
+#define MISSING_FORMAT "Missing %s"
+#endif
+#ifndef UNEXPECTED_FORMAT
+#define UNEXPECTED_FORMAT "Unexpected %s"
+#endif
+#ifndef UNNAMED_TOKEN
+#define UNNAMED_TOKEN "input"
+#endif
+
+
+static void ag_diagnose(void) {
+  int ag_snd = (PCB).sn;
+  int ag_k = ag_sbt[ag_snd];
+
+  if (*TOKEN_NAMES[ag_tstt[ag_k]] && ag_astt[ag_k + 1] == ag_action_8) {
+    sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
+  }
+  else if (ag_astt[ag_sbe[(PCB).sn]] == ag_action_8
+          && (ag_k = (int) ag_sbe[(PCB).sn] + 1) == (int) ag_sbt[(PCB).sn+1] - 1
+          && *TOKEN_NAMES[ag_tstt[ag_k]]) {
+    sprintf((PCB).ag_msg, MISSING_FORMAT, TOKEN_NAMES[ag_tstt[ag_k]]);
+  }
+  else if ((PCB).token_number && *TOKEN_NAMES[(PCB).token_number]) {
+    sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, TOKEN_NAMES[(PCB).token_number]);
+  }
+  else if (isprint(INPUT_CODE((*(PCB).pointer))) && INPUT_CODE((*(PCB).pointer)) != '\\') {
+    char buf[20];
+    sprintf(buf, "\'%c\'", (char) INPUT_CODE((*(PCB).pointer)));
+    sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, buf);
+  }
+  else sprintf((PCB).ag_msg, UNEXPECTED_FORMAT, UNNAMED_TOKEN);
+  (PCB).error_message = (PCB).ag_msg;
+
+
+}
+static int ag_action_1_r_proc(void);
+static int ag_action_2_r_proc(void);
+static int ag_action_3_r_proc(void);
+static int ag_action_4_r_proc(void);
+static int ag_action_1_s_proc(void);
+static int ag_action_3_s_proc(void);
+static int ag_action_1_proc(void);
+static int ag_action_2_proc(void);
+static int ag_action_3_proc(void);
+static int ag_action_4_proc(void);
+static int ag_action_5_proc(void);
+static int ag_action_6_proc(void);
+static int ag_action_7_proc(void);
+static int ag_action_8_proc(void);
+static int ag_action_9_proc(void);
+static int ag_action_10_proc(void);
+static int ag_action_11_proc(void);
+static int ag_action_8_proc(void);
+
+
+static int (*const  ag_r_procs_scan[])(void) = {
+  ag_action_1_r_proc,
+  ag_action_2_r_proc,
+  ag_action_3_r_proc,
+  ag_action_4_r_proc
+};
+
+static int (*const  ag_s_procs_scan[])(void) = {
+  ag_action_1_s_proc,
+  ag_action_2_r_proc,
+  ag_action_3_s_proc,
+  ag_action_4_r_proc
+};
+
+static int (*const  ag_gt_procs_scan[])(void) = {
+  ag_action_1_proc,
+  ag_action_2_proc,
+  ag_action_3_proc,
+  ag_action_4_proc,
+  ag_action_5_proc,
+  ag_action_6_proc,
+  ag_action_7_proc,
+  ag_action_8_proc,
+  ag_action_9_proc,
+  ag_action_10_proc,
+  ag_action_11_proc,
+  ag_action_8_proc
+};
+
+
+static int ag_action_10_proc(void) {
+  int ag_t = (PCB).token_number;
+  (PCB).btsx = 0, (PCB).drt = -1;
+  do {
+    ag_track();
+    (PCB).token_number = (dsl-2_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
+    (PCB).la_ptr++;
+    if (ag_key_index[(PCB).sn]) {
+      unsigned ag_k = ag_key_index[(PCB).sn];
+      int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
+      if (ag_ch <= 255) {
+        while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+        if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+      }
+    }
+  } while ((PCB).token_number == (dsl-2_token_type) ag_t);
+  (PCB).la_ptr =  (PCB).pointer;
+  return 1;
+}
+
+static int ag_action_11_proc(void) {
+  int ag_t = (PCB).token_number;
+
+  (PCB).btsx = 0, (PCB).drt = -1;
+  do {
+    (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
+    (PCB).ssx--;
+    ag_track();
+    ag_ra();
+    if ((PCB).exit_flag != AG_RUNNING_CODE) return 0;
+    (PCB).ssx++;
+    (PCB).token_number = (dsl-2_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
+    (PCB).la_ptr++;
+    if (ag_key_index[(PCB).sn]) {
+      unsigned ag_k = ag_key_index[(PCB).sn];
+      int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
+      if (ag_ch <= 255) {
+        while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+        if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+      }
+    }
+  }
+  while ((PCB).token_number == (dsl-2_token_type) ag_t);
+  (PCB).la_ptr =  (PCB).pointer;
+  return 1;
+}
+
+static int ag_action_3_r_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_3_s_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_4_r_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap];
+  return 1;
+}
+
+static int ag_action_2_proc(void) {
+  (PCB).btsx = 0, (PCB).drt = -1;
+  if ((PCB).ssx >= 128) {
+    (PCB).exit_flag = AG_STACK_ERROR_CODE;
+    PARSER_STACK_OVERFLOW;
+  }
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
+  GET_CONTEXT;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  ag_track();
+  return 0;
+}
+
+static int ag_action_9_proc(void) {
+  if ((PCB).drt == -1) {
+    (PCB).drt=(PCB).token_number;
+    (PCB).dssx=(PCB).ssx;
+    (PCB).dsn=(PCB).sn;
+  }
+  ag_prot();
+  (PCB).vs[(PCB).ssx] = ag_null_value;
+  GET_CONTEXT;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  (PCB).la_ptr =  (PCB).pointer;
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_2_r_proc(void) {
+  (PCB).ssx++;
+  (PCB).sn = (PCB).ag_ap;
+  return 0;
+}
+
+static int ag_action_7_proc(void) {
+  --(PCB).ssx;
+  (PCB).la_ptr =  (PCB).pointer;
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_proc(void) {
+  ag_track();
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_r_proc(void) {
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_1_s_proc(void) {
+  (PCB).exit_flag = AG_SUCCESS_CODE;
+  return 0;
+}
+
+static int ag_action_4_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else GET_CONTEXT;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  ag_track();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
+      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
+      REDUCTION_TOKEN_ERROR; break;}
+      (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return 0;
+}
+
+static int ag_action_3_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap] - 1;
+  (PCB).btsx = 0, (PCB).drt = -1;
+  (*(int *) &(PCB).vs[(PCB).ssx]) = *(PCB).pointer;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else GET_CONTEXT;
+  (PCB).ss[(PCB).ssx] = (PCB).sn;
+  ag_track();
+  (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
+      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
+      REDUCTION_TOKEN_ERROR; break;}
+      (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_s_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return 0;
+}
+
+static int ag_action_8_proc(void) {
+  ag_undo();
+  (PCB).la_ptr =  (PCB).pointer;
+  (PCB).exit_flag = AG_SYNTAX_ERROR_CODE;
+  ag_diagnose();
+  SYNTAX_ERROR;
+  {(PCB).la_ptr = (PCB).pointer + 1; ag_track();}
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_5_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap];
+  (PCB).btsx = 0, (PCB).drt = -1;
+  if (ag_sd) (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  else {
+    GET_CONTEXT;
+    (PCB).ss[(PCB).ssx] = (PCB).sn;
+  }
+  (PCB).la_ptr =  (PCB).pointer;
+  (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap];
+  ag_ra();
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
+      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
+      REDUCTION_TOKEN_ERROR; break;}
+      (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+static int ag_action_6_proc(void) {
+  int ag_sd = ag_fl[(PCB).ag_ap];
+  (PCB).reduction_token = (dsl-2_token_type) ag_ptt[(PCB).ag_ap];
+  if ((PCB).drt == -1) {
+    (PCB).drt=(PCB).token_number;
+    (PCB).dssx=(PCB).ssx;
+    (PCB).dsn=(PCB).sn;
+  }
+  if (ag_sd) {
+    (PCB).sn = (PCB).ss[(PCB).ssx -= ag_sd];
+  }
+  else {
+    ag_prot();
+    (PCB).vs[(PCB).ssx] = ag_null_value;
+    GET_CONTEXT;
+    (PCB).ss[(PCB).ssx] = (PCB).sn;
+  }
+  (PCB).la_ptr =  (PCB).pointer;
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbe[(PCB).sn] + 1;
+    unsigned ag_t2 = ag_sbt[(PCB).sn+1] - 1;
+    do {
+      unsigned ag_tx = (ag_t1 + ag_t2)/2;
+      if (ag_tstt[ag_tx] < (unsigned short)(PCB).reduction_token) ag_t1 = ag_tx + 1;
+      else ag_t2 = ag_tx;
+    } while (ag_t1 < ag_t2);
+    if (ag_tstt[ag_t1] != (PCB).reduction_token) {
+      (PCB).exit_flag = AG_REDUCTION_ERROR_CODE; 
+      REDUCTION_TOKEN_ERROR; break;}
+      (PCB).ag_ap = ag_pstt[ag_t1];
+    if ((ag_r_procs_scan[ag_astt[ag_t1]])() == 0) break;
+  }
+  return (PCB).exit_flag == AG_RUNNING_CODE;
+}
+
+
+void init_dsl-2(void) {
+  (PCB).la_ptr = (PCB).pointer;
+  (PCB).ss[0] = (PCB).sn = (PCB).ssx = 0;
+  (PCB).exit_flag = AG_RUNNING_CODE;
+  (PCB).line = FIRST_LINE;
+  (PCB).column = FIRST_COLUMN;
+  (PCB).btsx = 0, (PCB).drt = -1;
+}
+
+void dsl-2(void) {
+  init_dsl-2();
+  (PCB).exit_flag = AG_RUNNING_CODE;
+  while ((PCB).exit_flag == AG_RUNNING_CODE) {
+    unsigned ag_t1 = ag_sbt[(PCB).sn];
+    if (ag_tstt[ag_t1]) {
+      unsigned ag_t2 = ag_sbe[(PCB).sn] - 1;
+      (PCB).token_number = (dsl-2_token_type) AG_TCV(INPUT_CODE(*(PCB).la_ptr));
+      (PCB).la_ptr++;
+      if (ag_key_index[(PCB).sn]) {
+        unsigned ag_k = ag_key_index[(PCB).sn];
+        int ag_ch = CONVERT_CASE(INPUT_CODE(*(PCB).pointer));
+        if (ag_ch <= 255) {
+          while (ag_key_ch[ag_k] < ag_ch) ag_k++;
+          if (ag_key_ch[ag_k] == ag_ch) ag_get_key_word(ag_k);
+        }
+      }
+      do {
+        unsigned ag_tx = (ag_t1 + ag_t2)/2;
+        if (ag_tstt[ag_tx] > (unsigned short)(PCB).token_number)
+          ag_t1 = ag_tx + 1;
+        else ag_t2 = ag_tx;
+      } while (ag_t1 < ag_t2);
+      if (ag_tstt[ag_t1] != (unsigned short)(PCB).token_number)
+        ag_t1 = ag_sbe[(PCB).sn];
+    }
+    (PCB).ag_ap = ag_pstt[ag_t1];
+    (ag_gt_procs_scan[ag_astt[ag_t1]])();
+  }
+}
+
+